From 57ac6be7454b848dd5af5f90c41cbf88206eb2b9 Mon Sep 17 00:00:00 2001 From: "David J. kordsmeier" Date: Sat, 21 Jun 2025 11:10:38 +0900 Subject: [PATCH 01/35] Add initial Japanese localization file --- Localizable.xcstrings | 6 ++++++ Meshtastic.xcodeproj/project.pbxproj | 1 + 2 files changed, 7 insertions(+) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 28dd7f9c..ea67b2a9 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -312,6 +312,12 @@ "value" : "%@ - Nessuna risposta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ - 応答なし" + } + }, "sr" : { "stringUnit" : { "state" : "translated", diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 956f7e9f..df097b06 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -1296,6 +1296,7 @@ se, sr, it, + ja, ); mainGroup = DDC2E14B26CE248E0042C5E4; packageReferences = ( From 95e08e5a480be63ce82e5910d3f76cc1ea1f5b60 Mon Sep 17 00:00:00 2001 From: kanakonagiri Date: Mon, 23 Jun 2025 12:39:05 +0900 Subject: [PATCH 02/35] add: ja translation --- Localizable.xcstrings | 5946 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 5906 insertions(+), 40 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index ea67b2a9..124ce540 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -12,6 +12,12 @@ "value" : "%@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "\t%@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -41,6 +47,12 @@ "value" : "%@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : " %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -70,6 +82,12 @@ "value" : "%@%%" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : " %@%%" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -87,6 +105,12 @@ "value" : ": %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : ": %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -116,6 +140,12 @@ "value" : ": %d" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : ": %d" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -145,6 +175,12 @@ "value" : "(Ri)definire il PIN_GPS_EN per la propria scheda." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ボード用のPIN_GPS_ENを(再)定義してください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -173,6 +209,12 @@ "value" : "%@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -208,6 +250,12 @@ "value" : "%1$@ - %2$@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ - %2$@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -243,6 +291,12 @@ "value" : "%1$@ - %2$@ - %3$@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ - %2$@ - %3$@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -278,6 +332,12 @@ "value" : "%1$@ - %2$@ Verso %3$@ Indietro" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ - %2$@ 送信 %3$@ 受信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -352,6 +412,12 @@ "value" : "%@ - Non inviato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ - 送信されませんでした" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -386,6 +452,12 @@ "value" : "%1$@ (%2$@)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ (%2$@)" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -421,6 +493,12 @@ "value" : "%1$@ %2$@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ %2$@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -456,6 +534,12 @@ "value" : "%1$@ %2$lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ %2$lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -491,6 +575,12 @@ "value" : "%@ via" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 離れた場所" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -519,6 +609,12 @@ "value" : "%@ può essere lungo fino a %@ byte." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ は最大 %2$@ バイトまで設定できます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -547,6 +643,12 @@ "value" : "%@ Canali?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ チャンネル?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -575,6 +677,12 @@ "value" : "i dati di configurazione %@ sono stati richiesti attraverso il canale di amministrazione, ma non è stata fornita alcuna risposta dal nodo remoto." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 設定データが管理チャンネル経由で要求されましたが、リモートノードからの応答がありません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -603,6 +711,12 @@ "value" : "%@ dB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ dB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -649,6 +763,12 @@ "value" : "%@ Si prega di provare a connettersi nuovamente e di controllare attentamente il PIN." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 再度接続を試行し、PINを慎重に確認してください。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -707,6 +827,12 @@ "value" : "%@ L'applicazione si riconnette automaticamente alla radio preferita se torna nel raggio d'azione." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 優先無線機が範囲内に戻った場合、アプリは自動的に再接続します。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -765,6 +891,12 @@ "value" : "%@ Questo errore di solito non può essere risolto senza dimenticare il dispositivo sotto Impostazioni > Bluetooth e riconnettersi alla radio." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ このエラーは通常、設定 > Bluetooth でデバイスの登録を解除し、無線機に再接続しない限り修正できません。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -811,6 +943,12 @@ "value" : "%1$@, %2$@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@, %2$@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -846,6 +984,12 @@ "value" : "%1$@: %2$lld / %3$lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@: %2$lld / %3$lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -875,6 +1019,12 @@ "value" : "%@%%" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@%%" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -903,6 +1053,12 @@ "value" : "%@°F" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@°F" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -931,6 +1087,12 @@ "value" : "%@mA" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@mA" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -953,6 +1115,12 @@ "value" : "%@V" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@V" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -975,6 +1143,12 @@ "value" : "%d" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1039,6 +1213,12 @@ } } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%dホップ" + } + }, "sr" : { "variations" : { "plural" : { @@ -1097,6 +1277,12 @@ "value" : "%d%%" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d%%" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1125,6 +1311,12 @@ "value" : "%lf" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lf" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1153,6 +1345,12 @@ "value" : "%lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1187,6 +1385,12 @@ "value" : "%lld o meno hops di distanza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lldホップ以下" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1209,6 +1413,12 @@ "value" : "%lld Letture Totale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "計 %lld 件の読み取り値" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1231,6 +1441,12 @@ "value" : "%lld Totale eventi di rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "計 %lld 件の検出イベント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1253,6 +1469,12 @@ "value" : "%lld%%" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld%%" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1287,6 +1509,12 @@ "value" : "%llddb Potenza di trasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%llddb送信電力" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1321,6 +1549,12 @@ "value" : "%llddBm Potenza di trasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%llddBm送信電力" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1343,6 +1577,12 @@ "value" : "< 1%" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "< 1%" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1371,6 +1611,12 @@ "value" : "🦕 Versione a fine vita 🦖 ☄️" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "🦕 サポート終了バージョン 🦖 ☄️" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1386,10 +1632,24 @@ } }, "0" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "0" + } + } + } }, "1" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1" + } + } + } }, "1 byte" : { "localizations" : { @@ -1399,6 +1659,12 @@ "value" : "1 byte" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1バイト" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1427,6 +1693,12 @@ "value" : "a 1 salto di distanza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1ホップ先" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1455,6 +1727,12 @@ "value" : "2.4 Ghz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2.4GHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1477,6 +1755,12 @@ "value" : "7" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "7" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1505,6 +1789,12 @@ "value" : "8" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "8" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1526,7 +1816,14 @@ } }, "12 Hour Clock" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "12時間表示" + } + } + } }, "25" : { "localizations" : { @@ -1536,6 +1833,12 @@ "value" : "25" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "25" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1564,6 +1867,12 @@ "value" : "50" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "50" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1592,6 +1901,12 @@ "value" : "75" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "75" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1620,6 +1935,12 @@ "value" : "100" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "100" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1648,6 +1969,12 @@ "value" : "128 bit" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "128 bit" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1669,7 +1996,14 @@ } }, "180" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "180" + } + } + } }, "256 bit" : { "localizations" : { @@ -1679,6 +2013,12 @@ "value" : "256 bit" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "256 bit" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1700,10 +2040,24 @@ } }, "A channel index of 0 indicates the primary channel where all broadcast packets are sent from." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネルインデックス0は、すべてのブロードキャストパケットが送信されるプライマリチャンネルを示します。" + } + } + } }, "A green lock means the channel is securely encrypted with either a 128 or 256 bit AES key." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "緑色の鍵は、チャンネルが128ビットまたは256ビットのAESキーで安全に暗号化されていることを意味します。" + } + } + } }, "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" : { @@ -1731,6 +2085,12 @@ "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." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MeshtasticのQRコードには、無線機が通信するために必要なLoRa設定とチャンネル値が含まれています。「チャンネルを置換」オプションを使用して完全なチャンネル設定を共有できます。「チャンネルを追加」を選択した場合、共有チャンネルは受信側無線機のチャンネルに追加されます。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -1764,7 +2124,14 @@ } }, "A red lock with a slash means the channel is not securely encrypted, it uses either no key at all or a 1 byte known key. Traffic on this channel is easily intercepted." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "斜線付きの赤い鍵は、チャンネルが安全に暗号化されていないことを意味し、キーが全くないか1バイトの既知キーを使用しています。このチャンネルのトラフィックは簡単に傍受されます。" + } + } + } }, "A Trace Route was sent, no response has been received." : { "localizations" : { @@ -1774,6 +2141,12 @@ "value" : "È stata inviata una rotta di tracciamento, ma non è stata ricevuta alcuna risposta." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trace Route が送信されましたが、応答が受信されませんでした。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1796,6 +2169,12 @@ "value" : "Informazioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "概要" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1818,6 +2197,12 @@ "value" : "Informazioni su Meshtastic" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtasticについて" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1846,6 +2231,12 @@ "value" : "Precisione %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "精度 %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1868,6 +2259,12 @@ "value" : "SNR Ack: %@ dB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "応答SNR: %@ dB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1890,6 +2287,12 @@ "value" : "Tempo di risposta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "応答時間: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1930,6 +2333,12 @@ "value" : "Confermato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "確認済み" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -1970,6 +2379,12 @@ "value" : "Confermato da un altro nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "他のノードで確認済み" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -1998,6 +2413,12 @@ "value" : "Azioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アクション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2026,6 +2447,12 @@ "value" : "Attivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アクティブ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2054,6 +2481,12 @@ "value" : "Attività" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アクティビティ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2094,6 +2527,12 @@ "value" : "Override ADC" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ADC上書き" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -2128,6 +2567,12 @@ "value" : "Aggiungi canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネルを追加" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2150,6 +2595,12 @@ "value" : "Aggiungi canali" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネルを追加" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2166,6 +2617,12 @@ }, "Add Contact" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "連絡先を追加" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -2204,6 +2661,12 @@ "value" : "Aggiungi ai preferiti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入りに追加" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2226,6 +2689,12 @@ "value" : "Aiuto supplementare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "追加のヘルプ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2254,6 +2723,12 @@ "value" : "Indirizzo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "住所" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2275,7 +2750,14 @@ } }, "Admin Keys" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理者キー" + } + } + } }, "Administration" : { "localizations" : { @@ -2285,6 +2767,12 @@ "value" : "Amministrazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2307,6 +2795,12 @@ }, "Administration Enabled" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理機能が有効" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -2323,6 +2817,12 @@ "value" : "Avanzato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "上級" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2351,6 +2851,12 @@ "value" : "Dispositivo avanzato GPS" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度なデバイスGPS" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2379,6 +2885,12 @@ "value" : "Opzioni GPIO avanzate" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度なGPIOオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2407,6 +2919,12 @@ "value" : "Flags di posizione avanzati" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度な位置フラグ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2441,6 +2959,12 @@ "value" : "Dopo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "後" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -2480,6 +3004,18 @@ } } } + }, + "ja" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "あと %lld 日" + } + } + } + } } } }, @@ -2509,6 +3045,12 @@ "value" : "Dopo il salvataggio dei valori di configurazione, il nodo si riavvia." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定値の保存後、ノードは再起動します。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -2555,6 +3097,12 @@ "value" : "Pomeriggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "午後" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2595,6 +3143,12 @@ "value" : "Tempo di trasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "エアタイム" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -2635,6 +3189,12 @@ "value" : "Avviso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2657,6 +3217,12 @@ "value" : "Attiva il cicalino GPIO alla ricezione di una campana" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ベル受信時にGPIOブザーでアラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2685,6 +3251,12 @@ "value" : "Attiva il cicalino GPIO alla ricezione di un messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ受信時にGPIOブザーでアラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2707,6 +3279,12 @@ "value" : "Attiva la vibrazione GPIO alla ricezione di una campana" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ベル受信時にGPIO振動モーターでアラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2735,6 +3313,12 @@ "value" : "Attiva la vibrazione GPIO alla ricezione di un messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ受信時にGPIO振動モーターでアラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2757,6 +3341,12 @@ "value" : "Avvisa alla ricezione di una campana" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ベル受信時にアラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2785,6 +3375,12 @@ "value" : "Avvisa alla ricezione di un messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ受信時にアラート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2813,6 +3409,12 @@ "value" : "Tutti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全て" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2841,6 +3443,12 @@ "value" : "Consenti le richieste di posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置要求を許可" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2863,6 +3471,12 @@ "value" : "Alt" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2891,6 +3505,12 @@ "value" : "Altitudine" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2941,6 +3561,12 @@ "value" : "Altitudine Separazione geoidale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度ジオイド分離" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -2963,6 +3589,12 @@ "value" : "L'altitudine è il livello medio del mare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度は平均海面レベル" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3003,6 +3635,12 @@ "value" : "Sempre acceso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "常にオン" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3049,6 +3687,12 @@ "value" : "Punta sempre verso nord" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "常に北を指す" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3089,6 +3733,12 @@ "value" : "Illuminazione ambientale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境照明" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -3141,6 +3791,12 @@ "value" : "Configurazione dell'illuminazione ambientale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境照明設定" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -3187,6 +3843,12 @@ "value" : "Configurazione del modulo di illuminazione ambientale ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アンビエントライトモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3233,6 +3895,12 @@ "value" : "Una rete mesh open source, off-grid, decentralizzata, che funziona con radio a basso costo e a bassa potenza." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "手頃な価格の低電力無線機で動作する、オープンソース、オフグリッド、分散型メッシュネットワーク。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3261,6 +3929,12 @@ "value" : "I messaggi persi saranno consegnati nuovamente." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "見逃したメッセージは再配信されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3307,6 +3981,12 @@ "value" : "Dispositivo di messaggistica collegato all'app o indipendente." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリ接続または独立型メッセージングデバイス。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3347,6 +4027,12 @@ "value" : "Dati dell'applicazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "App データ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3375,6 +4061,12 @@ "value" : "File dell'applicazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリファイル" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3403,6 +4095,12 @@ "value" : "Impostazioni dell'app" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリ設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3431,6 +4129,12 @@ "value" : "Applicazioni Apple" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appleアプリ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3465,6 +4169,12 @@ "value" : "Posizione approssimativa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "正確な位置" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3487,6 +4197,12 @@ "value" : "Sei sicuro di voler cancellare questo messaggio?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このメッセージを削除してもよろしいですか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3521,6 +4237,12 @@ "value" : "Siete sicuri di voler resettare il nodo?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを工場出荷時設定にリセットしてもよろしいですか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3567,6 +4289,12 @@ "value" : "Sei sicuro?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "本当によろしいですか?" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3607,6 +4335,12 @@ "value" : "Australia / Nuova Zelanda" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オーストラリア / ニュージーランド" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3629,6 +4363,12 @@ "value" : "Passa automaticamente alla pagina successiva sullo schermo come un carosello, in base all'intervallo specificato." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "指定した間隔に基づいて、カルーセルのように画面の次のページに自動的に切り替わります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3703,6 +4443,12 @@ "value" : "Radio disponibili" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "利用可能な無線機" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3761,6 +4507,12 @@ "value" : "Indietro" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "戻る" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3794,10 +4546,24 @@ } }, "Backup" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バックアップ" + } + } + } }, "Backup your private key to your iCloud keychain." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プライベートキーをiCloudキーチェーンにバックアップします。" + } + } + } }, "Bad" : { "localizations" : { @@ -3807,6 +4573,12 @@ "value" : "Pessimo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "悪い" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3841,6 +4613,12 @@ "value" : "Richiesta non valida" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不正なリクエスト" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -3887,6 +4665,12 @@ "value" : "Larghezza di banda" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "帯域幅" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3915,6 +4699,12 @@ "value" : "Bar" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3943,6 +4733,12 @@ "value" : "Serie Bar" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バー系列" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -3971,6 +4767,12 @@ "value" : "Pressione barometrica" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "気圧" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4011,6 +4813,12 @@ "value" : "Batteria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バッテリー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4070,6 +4878,12 @@ "value" : "Livello della batteria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バッテリーレベル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4111,6 +4925,12 @@ "value" : "Livello della batteria %" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バッテリーレベル %" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4139,6 +4959,12 @@ "value" : "Baud" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ボーレート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4173,6 +4999,12 @@ "value" : "In bicicletta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サイクリング" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4201,6 +5033,12 @@ "value" : "BLE" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "BLE" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -4247,6 +5085,12 @@ "value" : "Nome BLE" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "BLE 名前" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4338,7 +5182,14 @@ } }, "BLE RSSI %lld" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "BLE RSSI %lld" + } + } + } }, "BLE: %@" : { "localizations" : { @@ -4348,6 +5199,12 @@ "value" : "BLE: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "BLE: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4394,6 +5251,12 @@ "value" : "Bluetooth" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bluetooth" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4452,6 +5315,12 @@ "value" : "Configurazione Bluetooth" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bluetooth設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4510,6 +5379,12 @@ "value" : "Configurazione Bluetooth ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bluetooth設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4568,6 +5443,12 @@ "value" : "Il Bluetooth è spento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bluetoothがオフです" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4608,6 +5489,12 @@ "value" : "Intervallo di trasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ブロードキャスト間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4654,6 +5541,12 @@ "value" : "Dà priorità alla trasmissione di pacchetti di posizione GPS." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPS位置パケットを優先的にブロードキャストします。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4712,6 +5605,12 @@ "value" : "Trasmette regolarmente la posizione come messaggio al canale predefinito per aiutare il recupero del dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスの回復を支援するため、定期的に位置情報をデフォルトチャンネルにメッセージとしてブロードキャストします。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4770,6 +5669,12 @@ "value" : "Trasmette i pacchetti di telemetria come priorità." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テレメトリパケットを優先的にブロードキャストします。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4810,6 +5715,12 @@ "value" : "Pulsante GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ボタンGPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4838,6 +5749,12 @@ "value" : "Acquista dispositivi completi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "完成品無線機を購入" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4866,6 +5783,12 @@ "value" : "Cicalino GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ブザーGPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4922,6 +5845,12 @@ "value" : "Byte" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バイト" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -4965,6 +5894,12 @@ "value" : "Segnale di chiamata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "コールサイン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4993,6 +5928,12 @@ "value" : "Il nominativo non deve essere vuoto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "コールサインは空にできません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5039,6 +5980,12 @@ "value" : "Annullamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キャンセル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5091,6 +6038,12 @@ "value" : "Configurazione del modulo Canned Message ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "定型メッセージモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5149,6 +6102,12 @@ "value" : "Messaggi in scatola" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "定型メッセージ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5207,6 +6166,12 @@ "value" : "Configurazione dei messaggi in scatola" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "定型メッセージ設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5259,6 +6224,12 @@ "value" : "Messaggi in scatola Messaggi ricevuti per: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "定型メッセージ受信対象: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5299,6 +6270,12 @@ "value" : "Intervallo del carosello" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カルーセル間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5327,6 +6304,12 @@ "value" : "Categorie" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5361,6 +6344,12 @@ "value" : "Categoria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5383,6 +6372,12 @@ "value" : "Corrente Ch1" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ch1 現在" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5405,6 +6400,12 @@ "value" : "Tensione Ch1" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ch1 電圧" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5427,6 +6428,12 @@ "value" : "Corrente Ch2" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ch2 現在" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5449,6 +6456,12 @@ "value" : "Tensione Ch2" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ch2 電圧" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5471,6 +6484,12 @@ "value" : "Corrente Ch3" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ch3 現在" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5493,6 +6512,12 @@ "value" : "Tensione Ch3" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ch3 電圧" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5533,6 +6558,12 @@ "value" : "Canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5573,6 +6604,12 @@ "value" : "Canale 0 Incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル0を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5601,6 +6638,12 @@ "value" : "Canale 1" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル1" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5623,6 +6666,12 @@ "value" : "Canale 1 Incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル1を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5651,6 +6700,12 @@ "value" : "Canale 2" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル2" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5673,6 +6728,12 @@ "value" : "Canale 2 incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル2を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5701,6 +6762,12 @@ "value" : "Canale 3" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル 3" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5723,6 +6790,12 @@ "value" : "Canale 3 incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル 3を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5751,6 +6824,12 @@ "value" : "Canale 4 Incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル 4を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5779,6 +6858,12 @@ "value" : "Canale 5 Incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル 5を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5807,6 +6892,12 @@ "value" : "Canale 6 Incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル 6を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5835,6 +6926,12 @@ "value" : "Canale 7 Incluso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル 7を含む" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5863,6 +6960,12 @@ "value" : "dettagli del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル詳細" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5891,6 +6994,12 @@ "value" : "Nome del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル名" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5919,6 +7028,12 @@ "value" : "Il numero del canale deve essere compreso tra 0 e 7." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル番号は0から7の間である必要があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5947,6 +7062,12 @@ "value" : "Ruolo del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル役割" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5975,6 +7096,12 @@ "value" : "URL del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル URL" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6089,6 +7216,12 @@ "value" : "Canali" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -6150,7 +7283,14 @@ } }, "Channels Help" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネルヘルプ" + } + } + } }, "Chart" : { "localizations" : { @@ -6160,6 +7300,12 @@ "value" : "Grafico" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6188,6 +7334,12 @@ "value" : "CHG" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "充電中" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6210,6 +7362,12 @@ "value" : "Cina" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "中国" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6232,6 +7390,12 @@ "value" : "Svuota" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クリア" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6278,6 +7442,12 @@ "value" : "Cancella i dati dell'app" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クリア App Data" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -6318,6 +7488,12 @@ "value" : "Cancella registro" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログクリア" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6333,7 +7509,14 @@ } }, "Clear Stale Nodes" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "古いノードをクリア" + } + } + } }, "Client" : { "localizations" : { @@ -6343,6 +7526,12 @@ "value" : "Cliente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クライアント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6377,6 +7566,12 @@ "value" : "Cliente Nascosto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クライアント Hidden" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6405,6 +7600,12 @@ "value" : "Storia del cliente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クライアント履歴" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6433,6 +7634,12 @@ "value" : "Richiesta di cronologia clienti inviata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クライアント履歴リクエストを送信しました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6461,6 +7668,12 @@ "value" : "Cliente Muto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クライアント無音" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6489,6 +7702,12 @@ "value" : "Opzioni del cliente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クライアントオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6517,6 +7736,12 @@ "value" : "Evento rotariano in senso orario" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "時計回りロータリーイベント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6563,6 +7788,12 @@ "value" : "Chiudere" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "閉じる" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -6603,6 +7834,12 @@ "value" : "Tasso di codifica" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "符号化率" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6637,6 +7874,12 @@ "value" : "Colore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "色" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6665,6 +7908,12 @@ "value" : "Comunicare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "通信中" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6687,6 +7936,12 @@ "value" : "Supporto alla community" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "コミュニティサポート" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -6703,6 +7958,12 @@ "value" : "Configurazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6737,6 +7998,12 @@ "value" : "Configurazione per: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ の設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6759,6 +8026,12 @@ "value" : "Preset di configurazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定プリセット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6793,6 +8066,12 @@ "value" : "Configurare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定する" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6815,6 +8094,12 @@ "value" : "Conferma" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "確認" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -6837,6 +8122,12 @@ "value" : "Collegarsi a un nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードに接続" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6853,6 +8144,12 @@ }, "Connect to MQTT via Proxy" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プロキシ経由でMQTTに接続" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -6869,6 +8166,12 @@ "value" : "Collegare alla nuova radio?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しい無線機に接続しますか?" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -6903,6 +8206,12 @@ "value" : "Bluetooth collegato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続済み" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -6949,6 +8258,12 @@ "value" : "Nodo collegato %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続済みノード %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -6971,6 +8286,12 @@ "value" : "Dispositivo connesso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続済み無線機" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -7005,6 +8326,12 @@ "value" : "Collegamento. ." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続中..." + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -7045,6 +8372,12 @@ "value" : "La connessione a un nuovo dispositivo cancellerà tutti i dati dell'applicazione sul telefono." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しい無線機に接続すると、電話上の全てのアプリデータがクリアされます。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -7067,6 +8400,12 @@ "value" : "Tentativo di connessione %lld di 10" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続試行 %lld / 10" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7147,6 +8486,12 @@ }, "Consent to Share Unencrypted Node Data via MQTT" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTT経由での暗号化されていないノードデータの共有に同意" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -7157,6 +8502,12 @@ }, "Contact URL" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "連絡先URL" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "needs_review", @@ -7191,6 +8542,12 @@ "value" : "Contatti (%@)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "連絡先s (%@)" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -7231,6 +8588,12 @@ "value" : "Tipo di controllo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Control タイプ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7259,6 +8622,12 @@ "value" : "Controlla il LED lampeggiante del dispositivo. Per la maggior parte dei dispositivi controlla uno dei 4 LED, mentre quelli di alimentazione e del GPS non sono controllabili." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス上の点滅LEDを制御します。ほとんどのデバイスでは最大4つのLEDのうち1つを制御し、充電器とGPS LEDは制御できません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7293,6 +8662,12 @@ "value" : "Inviluppo convesso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "凸包" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7321,6 +8696,12 @@ "value" : "Coordinate" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "座標" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7349,6 +8730,12 @@ "value" : "Coordinate %@, %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "座標 %@, %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7383,6 +8770,12 @@ "value" : "Coordinate:" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "座標:" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7423,6 +8816,12 @@ "value" : "Copia" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "コピー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -7469,6 +8868,12 @@ "value" : "Impossibile trovare il nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードが見つかりません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7497,6 +8902,12 @@ "value" : "Evento rotativo antiorario" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "反時計回りの回転イベント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7525,6 +8936,12 @@ "value" : "Creare un waypoint" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェイポイントを作成" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7553,6 +8970,12 @@ "value" : "Creato: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "作成日時: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7575,6 +8998,12 @@ "value" : "Attuale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7603,6 +9032,12 @@ "value" : "Versione attuale del firmware: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在のファームウェアバージョン: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7637,6 +9072,12 @@ "value" : "Versione attuale del firmware: %@, Ultima versione del firmware: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在のファームウェアバージョン: %@、最新のファームウェアバージョン: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7671,6 +9112,12 @@ "value" : "Attuale: %lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在: %lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7743,6 +9190,12 @@ "value" : "Data" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7765,6 +9218,12 @@ "value" : "Debug" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバッグ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7799,6 +9258,12 @@ "value" : "Registri di debug" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバッグログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7821,6 +9286,12 @@ "value" : "Registri di debug%@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバッグログ%@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -7861,6 +9332,12 @@ "value" : "Formato dei gradi decimali" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "十進度形式" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -7919,6 +9396,12 @@ "value" : "Predefinito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルト" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8005,6 +9488,12 @@ "value" : "Gradi Minuti Secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "度分秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8063,6 +9552,12 @@ "value" : "Cancellare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "削除" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8102,6 +9597,12 @@ "state" : "translated", "value" : "Cancellare tutte le configurazioni, le chiavi e le associazioni bluetooth?" } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全ての設定、キー、BLEボンドを削除しますか?" + } } } }, @@ -8112,6 +9613,12 @@ "state" : "translated", "value" : "Cancellare tutte le configurazioni?" } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全ての設定を削除しますか?" + } } } }, @@ -8175,6 +9682,12 @@ "value" : "Cancellare tutte le metriche dell'ambiente?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全ての環境メトリクスを削除しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8203,6 +9716,12 @@ "value" : "Cancellare tutti i dati dei passeggeri?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全てのPAXデータを削除しますか?" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -8231,6 +9750,12 @@ "value" : "Cancellare tutte le posizioni?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全ての位置データを削除しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8253,6 +9778,12 @@ "value" : "Cancellare il messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージを削除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8275,6 +9806,12 @@ "value" : "Cancellare i messaggi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージを削除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8303,6 +9840,12 @@ "value" : "Cancellare il nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを削除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8331,6 +9874,12 @@ "value" : "Cancellare il nodo?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを削除しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8353,6 +9902,12 @@ "value" : "Cancellare le metriche di potenza?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電力メトリクスを削除しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8375,6 +9930,12 @@ "value" : "Descrizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "説明" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8397,6 +9958,12 @@ "value" : "La descrizione deve essere inferiore a 100 byte" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "説明は100バイト未満である必要があります" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8425,6 +9992,12 @@ "value" : "Rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8447,6 +10020,12 @@ "value" : "Evento di rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出イベント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8488,6 +10067,12 @@ "value" : "Sensore di rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出センサー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8540,6 +10125,12 @@ "value" : "Configurazione del sensore di rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出センサー設定" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -8574,6 +10165,12 @@ "value" : "Registro del sensore di rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出センサーログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8596,6 +10193,12 @@ "value" : "I messaggi del sensore di rilevamento vengono ricevuti come messaggi di testo. Se si attivano le notifiche, si riceverà una notifica per ogni messaggio di rilevamento ricevuto e un badge per il messaggio non letto corrispondente." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出センサーメッセージはテキストメッセージとして受信されます。通知を有効にすると、受信した各検出メッセージの通知と対応する未読メッセージバッジが表示されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8636,6 +10239,12 @@ "value" : "Configurazione del modulo sensore di rilevamento ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出センサーモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8676,6 +10285,12 @@ "value" : "Sviluppatori" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開発者" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8722,6 +10337,12 @@ "value" : "Dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8780,6 +10401,12 @@ "value" : "Configurazione del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -8884,6 +10511,12 @@ "value" : "Configurazione del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス設定" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -8924,6 +10557,12 @@ "value" : "Dispositivo GPS" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス GPS" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8998,6 +10637,12 @@ "value" : "Metadati del dispositivo ricevuti da: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスメタデータを受信: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9038,6 +10683,12 @@ "value" : "Metriche del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスメトリクス" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9066,6 +10717,12 @@ "value" : "Registro delle metriche del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスメトリクスログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9100,6 +10757,12 @@ "value" : "Modello dispositivo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスモデル: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9128,6 +10791,12 @@ "value" : "Ruolo del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス役割" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9156,6 +10825,12 @@ "value" : "Schermata del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス画面" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9202,6 +10877,12 @@ "value" : "Dispositivo che non inoltra pacchetti da altri dispositivi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "他のデバイスからのパケットを転送しないデバイス。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9260,6 +10941,12 @@ "value" : "Dispositivo che trasmette solo quando è necessario, per non dare nell'occhio o per risparmiare energia." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ステルス性や省電力のために必要な時にのみブロードキャストするデバイス。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9300,6 +10987,12 @@ "value" : "Diluizione della precisione (DOP) PDOP utilizzato per impostazione predefinita" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "精度希釈(DOP)、デフォルトでPDOPを使用" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9328,6 +11021,12 @@ "value" : "Diretto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクト" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9356,6 +11055,12 @@ "value" : "Aiuto per i messaggi diretti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクトメッセージヘルプ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9377,7 +11082,14 @@ } }, "Direct Message Key" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクトメッセージキー" + } + } + } }, "Direct Messages" : { "localizations" : { @@ -9405,6 +11117,12 @@ "value" : "Messaggi diretti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクトメッセージ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9445,6 +11163,12 @@ "value" : "I messaggi diretti utilizzano la nuova infrastruttura a chiave pubblica per la crittografia. Richiede la versione firmware 2.5 o superiore." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクトメッセージは暗号化のために新しい公開鍵インフラストラクチャを使用しています。ファームウェアバージョン2.5以上が必要です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9473,6 +11197,12 @@ "value" : "I messaggi diretti utilizzano la chiave condivisa del canale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクトメッセージはチャンネルの共有キーを使用しています。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9519,6 +11249,12 @@ "value" : "Disattivato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無効" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9577,6 +11313,12 @@ "value" : "Disconnessione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "切断" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9610,10 +11352,24 @@ } }, "Disconnect Node" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを切断" + } + } + } }, "Disconnect the currently connected node" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在接続中のノードを切断します" + } + } + } }, "Dismiss" : { "localizations" : { @@ -9641,6 +11397,12 @@ "value" : "Sospendere" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "閉じる" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9699,6 +11461,12 @@ "value" : "Display" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ディスプレイ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9751,6 +11519,12 @@ "value" : "Configurazione del display" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ディスプレイ設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9939,6 +11713,12 @@ "value" : "Distanza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "距離" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9967,6 +11747,12 @@ "value" : "Documentazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ドキュメント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9989,6 +11775,12 @@ }, "Done" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "完了" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -10005,6 +11797,12 @@ "value" : "Doppio tocco come pulsante" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダブルタップをボタンとして使用" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10051,6 +11849,12 @@ "value" : "In basso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "下" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10091,6 +11895,12 @@ "value" : "Downlink abilitato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダウンリンク有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10119,6 +11929,12 @@ "value" : "Aggiornamento del firmware con il drag & drop" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ドラッグ&ドロップファームウェア更新" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10147,6 +11963,12 @@ "value" : "Documentazione sull'aggiornamento del firmware con il drag & drop" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ドラッグ&ドロップファームウェア更新ドキュメント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10209,6 +12031,12 @@ "value" : "Guida" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "運転" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10237,6 +12065,12 @@ "value" : "Spillo in Mappe" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マップにピンを配置" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10271,6 +12105,12 @@ "value" : "Eco" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "エコー" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -10305,6 +12145,12 @@ "value" : "Modifica di Waypoint" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェイポイント編集" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10345,6 +12191,12 @@ "value" : "Diciotto ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "18時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10385,6 +12237,12 @@ "value" : "Elev. Guadagno" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "標高ゲイン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10407,6 +12265,12 @@ "value" : "Emoji" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "絵文字" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10435,6 +12299,12 @@ "value" : "Vuoto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "空" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10463,6 +12333,12 @@ "value" : "Abilita la trasmissione di pacchetti via UDP sulla rete locale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ローカルネットワーク上でUDP経由のパケットブロードキャストを有効にします。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -10479,6 +12355,12 @@ "value" : "Abilita le notifiche" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "通知を有効にする" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10507,6 +12389,12 @@ "value" : "Abilita questo dispositivo come server Store and Forward. Richiede un dispositivo ESP32 con PSRAM." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このデバイスをStore and Forwardサーバーとして有効にします。PSRAMを搭載したESP32デバイスが必要です。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -10541,6 +12429,12 @@ "value" : "Abilitato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10599,6 +12493,12 @@ "value" : "Abilita le trasmissioni automatiche di TAK PLI e riduce le trasmissioni di routine." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "自動TAK PLIブロードキャストを有効にし、定期ブロードキャストを削減します。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10639,6 +12539,12 @@ "value" : "Consente ai dispositivi con uscita audio I2S nativa di utilizzare l'RTTTL tramite altoparlante come un cicalino. T-Watch S3 e T-Deck, ad esempio, dispongono di questa funzionalità." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ネイティブI2Sオーディオ出力を持つデバイスで、ブザーのようにスピーカー経由でRTTTLを使用できるようにします。例えば、T-Watch S3やT-Deckにはこの機能があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10667,6 +12573,12 @@ "value" : "Abilita il modulo del sensore di rilevamento; deve essere abilitato sia sul nodo con il sensore, sia su tutti i nodi che si desidera ricevere messaggi di testo del sensore di rilevamento o visualizzare il registro e il grafico del sensore di rilevamento." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出センサーモジュールを有効にします。センサーを持つノードと、検出センサーテキストメッセージを受信したり、検出センサーログやチャートを表示したいノードの両方で有効にする必要があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10695,6 +12607,12 @@ "value" : "Abilita il modulo Salva & Inoltra." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Store and Forwardモジュールを有効にします。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -10710,6 +12628,12 @@ "state" : "translated", "value" : "Abilitando l'Ethernet verrà disabilita la connessione bluetooth all'applicazione. La connessione a nodi TCP non è disponibile su dispositivi Apple." } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ethernetを有効にすると、アプリへのBluetooth接続が無効になります。AppleデバイスではTCPノード接続は利用できません。" + } } } }, @@ -10720,6 +12644,12 @@ "state" : "translated", "value" : "L'attivazione del WiFi disabilita la connessione bluetooth all'applicazione. La connessione a nodi TCP non è disponibile su dispositivi Apple." } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "WiFiを有効にすると、アプリへのBluetooth接続が無効になります。AppleデバイスではTCPノード接続は利用できません。" + } } } }, @@ -10731,6 +12661,12 @@ "value" : "Evento di pressione dell'encoder" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "エンコーダープレスイベント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10771,6 +12707,12 @@ "value" : "Crittografato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "暗号化済み" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10817,6 +12759,12 @@ "value" : "Invio crittografato fallito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "暗号化送信失敗" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10839,6 +12787,12 @@ "value" : "Crittografia abilitata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "暗号化有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10873,6 +12827,12 @@ "value" : "Entrare in modalità DFU" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "DFUモードに入る" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10901,6 +12861,12 @@ "value" : "ambiente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10935,6 +12901,12 @@ "value" : "Ambiente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10963,6 +12935,12 @@ "value" : "Metriche dei sensori" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境メトリクス" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -10991,6 +12969,12 @@ "value" : "Registro delle metriche ambientali" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境メトリクスログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11025,6 +13009,12 @@ "value" : "Cancellare tutti i dati delle app?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全てのアプリデータを消去しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11059,6 +13049,12 @@ "value" : "Cancellare tutti i dati del dispositivo e delle app?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "全てのデバイスおよびアプリデータを消去しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11087,6 +13083,12 @@ "value" : "Errore: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "エラー: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11115,6 +13117,12 @@ "value" : "L'aggiornamento OTA di ESP 32 è in corso, fare clic sul pulsante qui sotto per inviare al dispositivo un messaggio di riavvio in amministrazione ota." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ESP32 OTAアップデートは開発中です。下のボタンをクリックして、デバイスにOTA管理モードへの再起動メッセージを送信してください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11130,7 +13138,7 @@ "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", - "value" : "ESP32 的 OTA 更新功能尚在開發中,請點擊下方按鈕以傳送重新啟動至 OTA 管理模式的訊息至您的裝置。" + "value" : "ESP32 の OTA 更新功能尚在開發中,請點擊下方按鈕以傳送重新啟動至 OTA 管理模式的訊息至您的裝置。" } } } @@ -11143,6 +13151,12 @@ "value" : "Aggiornamento del firmware del dispositivo ESP32" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ESP32デバイスファームウェア更新" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11171,6 +13185,12 @@ "value" : "Opzioni Ethernet" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "イーサネットオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11193,6 +13213,12 @@ "value" : "Unione Europea 433MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "欧州連合 433MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11215,6 +13241,12 @@ "value" : "Unione Europea 868MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "欧州連合 868MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11243,6 +13275,12 @@ "value" : "Sera" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "夕方" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11265,6 +13303,12 @@ "value" : "Scambio di posizioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置交換" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11305,6 +13349,12 @@ "value" : "Esclamativo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "感嘆符" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -11338,7 +13388,14 @@ } }, "Expiration" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効期限" + } + } + } }, "Expire" : { "localizations" : { @@ -11348,6 +13405,12 @@ "value" : "Scadenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "期限切れ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11370,6 +13433,12 @@ "value" : "Scadenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効期限" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11392,6 +13461,12 @@ "value" : "Scadenza: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効期限: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11414,6 +13489,12 @@ "value" : "Esportazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "エクスポート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11454,6 +13535,12 @@ "value" : "Notifica esterna" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "外部通知" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -11512,6 +13599,12 @@ "value" : "Configurazione della notifica esterna" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "外部通知設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -11610,6 +13703,12 @@ "value" : "Reset di fabbrica" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Factory リセット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11631,6 +13730,12 @@ "state" : "translated", "value" : "Il ripristino alle impostazioni di fabbrica eliminerà i dati del dispositivo e della app." } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "工場出荷時リセットによりデバイスとアプリのデータが削除されます。" + } } } }, @@ -11642,6 +13747,12 @@ "value" : "Impossibile codificare il contenuto del messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ内容のエンコードに失敗しました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11664,6 +13775,12 @@ "value" : "Impossibile ottenere una posizione valida per lo scambio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "交換用の有効な位置の取得に失敗しました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11686,6 +13803,12 @@ "value" : "Impossibile ottenere una posizione valida per lo scambio." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "交換用の有効な位置の取得に失敗しました。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11714,6 +13837,12 @@ "value" : "Discreto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "普通" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11742,6 +13871,12 @@ "value" : "Preferito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入り" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11757,7 +13892,14 @@ } }, "Favorited and ignored nodes are always retained. Nodes without PKC keys are cleared from the app database on the schedule set by the user, nodes with PKC keys are cleared only if the interval is set to 7 days or longer. This feature only purges nodes from the app that are not stored in the device node database." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入りと無視されたノードは常に保持されます。PKCキーを持たないノードは、ユーザーが設定したスケジュールでアプリデータベースからクリアされ、PKCキーを持つノードは間隔が7日以上に設定されている場合のみクリアされます。この機能は、デバイスノードデータベースに保存されていないノードのみをアプリから削除します。" + } + } + } }, "Favorites" : { "localizations" : { @@ -11773,6 +13915,12 @@ "value" : "Preferiti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入り" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11795,6 +13943,12 @@ "value" : "I preferiti e i nodi con messaggi recenti appaiono in cima all'elenco dei contatti." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入りと最近のメッセージがあるノードは、連絡先リストの上部に表示されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11829,6 +13983,12 @@ "value" : "Recuperare l'ultima posizione di un nodo cetaneo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "特定のノードの最新位置を取得" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11851,6 +14011,12 @@ "value" : "Quindici minuti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "15分" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11891,6 +14057,12 @@ "value" : "Quindici secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "15秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -11931,6 +14103,12 @@ "value" : "Archiviazione dei file" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイルストレージ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11959,6 +14137,12 @@ "value" : "Trova un contatto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "連絡先を検索" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11987,6 +14171,12 @@ "value" : "Trovare un nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを検索" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12027,6 +14217,12 @@ "value" : "Fine" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "完了" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12073,6 +14269,12 @@ "value" : "Firmware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェア" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12101,6 +14303,12 @@ "value" : "Documentazione sull'aggiornamento del firmware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェア更新ドキュメント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12135,6 +14343,12 @@ "value" : "Aggiornamenti del firmware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェア更新" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12181,6 +14395,12 @@ "value" : "Versione del firmware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェアバージョン" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12221,6 +14441,12 @@ "value" : "Sentito per la prima volta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "初回受信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12261,6 +14487,12 @@ "value" : "Cinque ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "5時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12307,6 +14539,12 @@ "value" : "Cinque minuti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "5分" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12347,6 +14585,12 @@ "value" : "Cinque secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "5秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12405,6 +14649,12 @@ "value" : "PIN fisso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "固定ピン" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12445,6 +14695,12 @@ "value" : "Posizione fissa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "固定位置" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12467,6 +14723,12 @@ "value" : "Schermo ribaltabile" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "画面反転" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12489,6 +14751,12 @@ "value" : "Capovolgere lo schermo in verticale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "画面を垂直に反転" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12529,6 +14797,12 @@ "value" : "Segui" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "追従" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12587,6 +14861,12 @@ "value" : "Seguire la direzione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "方位で追従" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12627,6 +14907,12 @@ "value" : "Per tutte le funzionalità Mqtt diverse dal rapporto sulle mappe, è necessario impostare anche l'uplink e il downlink per ogni canale che si desidera collegare tramite Mqtt." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マップレポート以外のすべてのMqtt機能については、Mqtt経由でブリッジしたい各チャンネルのアップリンクとダウンリンクも設定する必要があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12661,6 +14947,12 @@ "value" : "Per tutti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべての人に" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12689,6 +14981,12 @@ "value" : "Per me" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "自分に" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12729,6 +15027,12 @@ "value" : "Quarantotto ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "48時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12787,6 +15091,12 @@ "value" : "Quarantacinque secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "45秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12845,6 +15155,12 @@ "value" : "Quattro ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "4時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12903,6 +15219,12 @@ "value" : "Quattro secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "4秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -12949,6 +15271,12 @@ "value" : "Frequenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "周波数" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12971,6 +15299,12 @@ "value" : "Override di frequenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "周波数オーバーライド" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -12993,6 +15327,12 @@ "value" : "Slot di frequenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "周波数スロット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13015,6 +15355,12 @@ "value" : "Nome semplificato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フレンドリー名" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13043,6 +15389,12 @@ "value" : "Nome amichevole usato per formattare il messaggio inviato alla rete. Esempio: Il nome \"Movimento\" si tradurrebbe nel messaggio \"Movimento rilevato\"" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッシュに送信されるメッセージのフォーマットに使用されるフレンドリ名。例:「Motion」という名前は「Motion detected」というメッセージになります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13071,6 +15423,12 @@ "value" : "Supporto completo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "完全サポート" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -13080,7 +15438,14 @@ } }, "Generate a new private key to replace the one currently in use. The public key will automatically be regenerated from your private key." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在使用中のプライベートキーを置き換える新しいプライベートキーを生成します。パブリックキーはプライベートキーから自動的に再生成されます。" + } + } + } }, "Generate QR Code" : { "localizations" : { @@ -13108,6 +15473,12 @@ "value" : "Generare un codice QR" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QRコード生成" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -13141,7 +15512,14 @@ } }, "Generated from your public key and sent out to other nodes on the mesh to allow them to compute a shared secret key." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "パブリックキーから生成され、メッシュ上の他のノードに送信されて、共有秘密キーの計算を可能にします。" + } + } + } }, "Get custom waterproof solar and detection sensor router nodes, aluminium desktop nodes and rugged handsets." : { "localizations" : { @@ -13151,6 +15529,12 @@ "value" : "Nodi router con sensori solari e di rilevamento personalizzati e impermeabili, nodi da tavolo in alluminio e portatili robusti." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カスタム防水ソーラー・検出センサールーターノード、アルミニウムデスクトップノード、頑丈なハンドセットを入手できます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13179,6 +15563,12 @@ "value" : "Ottenere la posizione del nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード位置取得" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13207,6 +15597,12 @@ "value" : "Scarica NRF DFU dall'App Store" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "App StoreからNRF DFUを取得" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13235,6 +15631,12 @@ "value" : "Ottenere l'ultimo firmware alfa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最新のアルファ版ファームウェアを取得" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13263,6 +15665,12 @@ "value" : "Ottenere l'ultimo firmware stabile" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最新の安定版ファームウェアを取得" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13284,7 +15692,14 @@ } }, "GitHub Repository" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GitHubリポジトリ" + } + } + } }, "Good" : { "localizations" : { @@ -13294,6 +15709,12 @@ "value" : "Buono" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "良好" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13316,6 +15737,12 @@ "value" : "GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13344,6 +15771,12 @@ "value" : "Durata dell'uscita GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPIO出力時間" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13366,6 +15799,12 @@ "value" : "Pin GPIO per la porta A dell'encoder rotativo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロータリーエンコーダーAポート用GPIOピン。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13388,6 +15827,12 @@ "value" : "Pin GPIO per la porta B dell'encoder rotativo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロータリーエンコーダーBポート用GPIOピン。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13410,6 +15855,12 @@ "value" : "Pin GPIO per encoder rotativo Porta di stampa." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロータリーエンコーダープレスポート用GPIOピン。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13432,6 +15883,12 @@ "value" : "Pin GPIO da monitorare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPIO ピン to monitor" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13454,6 +15911,12 @@ "value" : "GPS IT GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPS有効化GPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13482,6 +15945,12 @@ "value" : "Formato GPS" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPS形式" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13510,6 +15979,12 @@ "value" : "Ricezione GPS GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPS受信GPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13538,6 +16013,12 @@ "value" : "Trasmissione GPS GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPS送信GPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13572,6 +16053,12 @@ "value" : "Messaggio di gruppo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "グループメッセージ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13600,6 +16087,12 @@ "value" : "Raffiche %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "突風 %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13622,6 +16115,12 @@ "value" : "חחח" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハハ" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -13656,6 +16155,12 @@ "value" : "Hardware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハードウェア" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13684,6 +16189,12 @@ "value" : "Pericoloso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "危険" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13706,6 +16217,12 @@ "value" : "Direzione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "方位" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13728,6 +16245,12 @@ "value" : "Direzione: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "方位: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13768,6 +16291,12 @@ "value" : "Ascoltato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "受信済み" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -13826,6 +16355,12 @@ "value" : "Cuore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハート" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -13866,6 +16401,12 @@ "value" : "Nascondere gli avvisi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アラートを非表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13888,6 +16429,12 @@ "value" : "Nascondi avvisi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アラートを非表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13903,7 +16450,14 @@ } }, "Hide sidebar" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サイドバーを隠す" + } + } + } }, "HIGH" : { "localizations" : { @@ -13919,6 +16473,12 @@ "value" : "ALTO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13953,6 +16513,12 @@ "value" : "Escursioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハイキング" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13981,6 +16547,12 @@ "value" : "Storia Rendimento Max" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "履歴返信最大数" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14003,6 +16575,12 @@ "value" : "Finestra di restituzione della cronologia" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "履歴返信時間枠" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14031,6 +16609,12 @@ "value" : "Distanza in Hop" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホップ距離" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14059,6 +16643,12 @@ "value" : "Luppolo lontano %d" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホップ距離 %d" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14087,6 +16677,12 @@ "value" : "Via il luppolo:" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホップ距離:" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14115,6 +16711,12 @@ "value" : "Luppolo in partenza: %d" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホップ距離: %d" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14143,6 +16745,12 @@ "value" : "Ora" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "時間" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14171,6 +16779,12 @@ "value" : "Ciclo di lavoro orario" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "時間あたりデューティサイクル" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14193,6 +16807,12 @@ "value" : "Per quanto tempo lo schermo rimane acceso dopo la pressione del tasto utente o la ricezione di messaggi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザーボタンが押されたり、メッセージが受信された後、画面が点灯し続ける時間。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14221,6 +16841,12 @@ "value" : "Con quale frequenza vengono inviate le metriche del dispositivo attraverso la rete. L'impostazione predefinita è 30 minuti." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスメトリクスがメッシュ経由で送信される頻度。デフォルトは30分です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14305,6 +16931,12 @@ "value" : "Con quale frequenza dobbiamo cercare di ottenere una posizione GPS." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPS位置を取得する頻度。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14373,6 +17005,12 @@ "value" : "Quanto spesso possiamo inviare un messaggio alla rete quando le persone vengono rilevate." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "人が検出された時にメッシュにメッセージを送信する頻度。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -14419,6 +17057,12 @@ "value" : "Come aggiornare il firmware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェアの更新方法" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14447,6 +17091,12 @@ "value" : "Um" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "湿度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14475,6 +17125,12 @@ "value" : "Umidità" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "湿度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14509,6 +17165,12 @@ "value" : "Ibrido" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハイブリッド" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -14561,6 +17223,12 @@ "value" : "Flyover ibrido" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハイブリッド・フライオーバー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -14595,6 +17263,12 @@ }, "I have read and understand the above. I voluntarily consent to the unencrypted transmission of my node data via MQTT." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "上記を読み理解しました。MQTT経由でのノードデータの暗号化されない送信に自発的に同意します。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -14611,6 +17285,12 @@ "value" : "IAQ" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "IAQ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14639,6 +17319,12 @@ "value" : "IAQ " } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "IAQ " + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14667,6 +17353,12 @@ "value" : "IAQ %lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "IAQ %lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14695,6 +17387,12 @@ "value" : "Icona" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アイコン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14723,6 +17421,12 @@ "value" : "Se è impostato DOP, utilizzare i valori HDOP / VDOP invece di PDOP" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "DOPが設定されている場合、PDOPの代わりにHDOP / VDOP値を使用します" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14779,6 +17483,12 @@ "value" : "Se è difficile accedere al pulsante di ripristino del dispositivo, accedere alla modalità DFU." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスのリセットボタンにアクセスが困難な場合は、ここでDFUモードに入ってください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14807,6 +17517,12 @@ "value" : "Se è impostata, i pacchetti inviati saranno ritrasmessi al dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定すると、送信したパケットがデバイスにエコーバックされます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14835,6 +17551,12 @@ "value" : "Se l'argomento predefinito della regione è troppo frequentato, è possibile scegliere un argomento più locale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトの地域トピックが混雑している場合は、よりローカルなトピックを選択できます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14863,6 +17585,12 @@ "value" : "Ignorare MQTT" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTTを無視" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14919,6 +17647,12 @@ "value" : "Ignorato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無視" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -14967,6 +17701,12 @@ "value" : "Percorso di importazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルートインポート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15013,6 +17753,12 @@ "value" : "Includere" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "含める" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -15065,6 +17811,12 @@ "value" : "Incompleto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未完了" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15081,6 +17833,12 @@ }, "India" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "インド" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15103,6 +17861,12 @@ "value" : "Qualità dell'aria interna" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "室内空気品質" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15131,6 +17895,12 @@ "value" : "Qualità dell'aria interna (IAQ)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "室内空気質(IAQ)" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15303,6 +18073,12 @@ "value" : "Ingressi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "入力" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15331,6 +18107,12 @@ "value" : "Barra superiore invertita per la visualizzazione a 2 colori" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2色ディスプレイ用反転トップバー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15371,6 +18153,12 @@ "value" : "Emissione di Want Config a %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ に設定要求を送信中" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -15411,6 +18199,12 @@ "value" : "Giappone" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日本" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15433,6 +18227,12 @@ "value" : "JSON abilitato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15461,6 +18261,12 @@ "value" : "La modalità JSON è un output MQTT limitato e non criptato per l'integrazione locale con l'assistente domestico" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSONモードは、Home Assistantとのローカル統合のための限定的で暗号化されていないMQTT出力です" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15483,6 +18289,12 @@ }, "Jump to present" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最新に移動" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -15505,6 +18317,12 @@ "value" : "Chiave" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15526,7 +18344,14 @@ } }, "Key Backup" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キーバックアップ" + } + } + } }, "Key Mapping" : { "localizations" : { @@ -15536,6 +18361,12 @@ "value" : "Mappatura delle chiavi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キーマッピング" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15564,6 +18395,12 @@ "value" : "Dimensione della chiave" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キーサイズ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15586,6 +18423,12 @@ "value" : "Corea" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "韓国" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15614,6 +18457,12 @@ "value" : "L'ultima volta che si è sentito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最終受信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15648,6 +18497,12 @@ "value" : "Latitudine" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "緯度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15669,10 +18524,24 @@ } }, "Latitude in degrees (e.g., 37.7749)" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "緯度(度単位、例: 37.7749)" + } + } + } }, "Latitude must be between -90 and 90 degrees" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "緯度は-90度から90度の間である必要があります" + } + } + } }, "LED Heartbeat" : { "localizations" : { @@ -15682,6 +18551,12 @@ "value" : "Battito cardiaco a LED" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LEDハートビート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15710,6 +18585,12 @@ "value" : "Stato del LED" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LED状態" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15756,6 +18637,12 @@ "value" : "A sinistra" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "左" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -15814,6 +18701,12 @@ "value" : "Livello" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "レベル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -15854,6 +18747,12 @@ "value" : "Operatore con licenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ライセンスオペレーター" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15882,6 +18781,12 @@ "value" : "Limitare tutti gli intervalli di trasmissione periodica, in particolare la telemetria e la posizione. Se è necessario aumentare gli hop, farlo sui nodi ai margini, non su quelli al centro. MQTT è sconsigliato quando il ciclo di lavoro è limitato, perché è il nodo gateway a svolgere tutto il lavoro." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "特にテレメトリと位置情報のすべての定期ブロードキャスト間隔を制限します。ホップを増やす必要がある場合は、中央のノードではなく端のノードで行ってください。デューティサイクルが制限されている場合、ゲートウェイノードがすべての作業を行うため、MQTTは推奨されません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15910,6 +18815,12 @@ "value" : "Serie di linee" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "線系列" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15932,6 +18843,12 @@ "value" : "Caricamento dei log. . ." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Loading ログs. . ." + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -15966,6 +18883,12 @@ "value" : "Posizione:" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "場所:" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16000,6 +18923,12 @@ "value" : "Bloccato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロック済み" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16028,6 +18957,12 @@ "value" : "Livelli del registro" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログレベル" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16074,6 +19009,12 @@ "value" : "Registrazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログ記録" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16114,6 +19055,12 @@ "value" : "Registri" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16142,6 +19089,12 @@ "value" : "Registri:" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログ:" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16176,6 +19129,12 @@ "value" : "Nome lungo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "長い名前" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16232,6 +19191,12 @@ "value" : "A lungo raggio - Veloce" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "長距離 - 高速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16254,6 +19219,12 @@ "value" : "Lungo raggio - Moderato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "長距離 - 中程度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16276,6 +19247,12 @@ "value" : "Lungo raggio - Lento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "長距離 - 低速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16304,6 +19281,12 @@ "value" : "Longitudine" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "経度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16325,10 +19308,24 @@ } }, "Longitude in degrees (e.g., -122.4194)" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "経度(度単位、例: -122.4194)" + } + } + } }, "Longitude must be between -180 and 180 degrees" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "経度は-180度から180度の間である必要があります" + } + } + } }, "LoRa" : { "localizations" : { @@ -16356,6 +19353,12 @@ "value" : "LoRa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LoRa" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16414,6 +19417,12 @@ "value" : "Configurazione LoRa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LoRa設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16518,6 +19527,12 @@ "value" : "Oggetti smarriti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "落とし物" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16546,6 +19561,12 @@ "value" : "BASSO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "低" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16608,6 +19629,12 @@ "value" : "Malesia 433MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マレーシア 433MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16630,6 +19657,12 @@ "value" : "Malesia 919MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マレーシア 919MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16670,6 +19703,12 @@ "value" : "Gestire i canali" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル管理" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16710,6 +19749,12 @@ "value" : "Dispositivo gestito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理されたデバイス" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16756,6 +19801,12 @@ "value" : "Configurazione manuale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "手動設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16802,6 +19853,12 @@ "value" : "Opzioni mappa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マップオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16830,6 +19887,12 @@ "value" : "Intervallo di pubblicazione della mappa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マップ公開間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16858,6 +19921,12 @@ "value" : "Rapporto sulla mappa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マップレポート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16904,6 +19973,12 @@ "value" : "Raggiunta la massima ritrasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最大再送信回数に到達" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16944,6 +20019,12 @@ "value" : "Medio raggio - Veloce" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "中距離 - 高速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16966,6 +20047,12 @@ "value" : "Medio raggio - Lento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "中距離 - 低速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16988,6 +20075,12 @@ "value" : "Aggiornamento dell'attività di rete" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッシュアクティビティ更新" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17028,6 +20121,12 @@ "value" : "Rete Attività live" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッシュライブアクティビティ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17086,6 +20185,12 @@ "value" : "Mappa della mesh" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッシュマップ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17132,6 +20237,12 @@ "value" : "Il Nodo Meshtastic %@ ha condiviso i canali con voi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtasticノード %@ があなたとチャンネルを共有しました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17154,6 +20265,12 @@ "value" : "Meshtastic® Copyright Meshtastic LLC" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtastic® Copyright Meshtastic LLC" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17182,6 +20299,12 @@ "value" : "Messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17210,6 +20333,12 @@ "value" : "Il contenuto del messaggio supera i 200 byte." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ内容が200バイトを超えています。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17250,6 +20379,12 @@ "value" : "Dettagli del messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ詳細" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17366,6 +20501,12 @@ "value" : "Invio messaggio fallito, connessione non corretta a %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ送信に失敗しました。%@ に適切に接続されていません" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17399,7 +20540,15 @@ } }, "Message Size" : { - "comment" : "VoiceOver label for message size" + "comment" : "VoiceOver label for message size", + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージサイズ" + } + } + } }, "Message Status Options" : { "localizations" : { @@ -17409,6 +20558,12 @@ "value" : "Opzioni di stato del messaggio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ Status Options" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17443,6 +20598,12 @@ "value" : "Messaggi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17489,6 +20650,12 @@ "value" : "I messaggi sono separati da |" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージs separate with |" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17504,7 +20671,14 @@ } }, "Messaging" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージング" + } + } + } }, "Metric" : { "localizations" : { @@ -17514,6 +20688,12 @@ "value" : "Metrico" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メトリック" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17542,6 +20722,12 @@ "value" : "Mezzogiorno" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "正午" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17582,6 +20768,12 @@ "value" : "Sistema di riferimento della griglia militare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "軍用格子座標系" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17628,6 +20820,12 @@ "value" : "Distanza minima" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最小距離" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17656,6 +20854,12 @@ "value" : "Intervallo minimo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最小間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17740,6 +20944,12 @@ "value" : "Modalità" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "モード" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17780,6 +20990,12 @@ "value" : "Modello" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "モデル" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17808,6 +21024,12 @@ "value" : "Moderato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "中程度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17854,6 +21076,12 @@ "value" : "Configurazione del modulo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "モジュール設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -17900,6 +21128,12 @@ "value" : "Mattina" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "朝" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17980,6 +21214,12 @@ "value" : "MQTT" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTT" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18026,6 +21266,12 @@ "value" : "Proxy client MQTT" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTTクライアントプロキシ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18084,6 +21330,12 @@ "value" : "Configurazione MQTT" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTT設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18142,6 +21394,12 @@ "value" : "Configurazione del modulo MQTT ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTTモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18194,6 +21452,12 @@ "value" : "Moltiplicatore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "乗数" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18228,6 +21492,12 @@ "value" : "Deve essere una singola emoji" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "単一の絵文字である必要があります" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18268,6 +21538,12 @@ "value" : "MyInfo ricevuto: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マイ情報受信: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18308,6 +21584,12 @@ "value" : "Timeout di Nag" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "通知タイムアウト" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18336,6 +21618,12 @@ "value" : "Nome" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "名前" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18370,6 +21658,12 @@ "value" : "Il nome deve essere inferiore a 30 byte" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "名前は30バイト未満である必要があります" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18398,6 +21692,12 @@ "value" : "Spostarsi sul nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードに移動" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18420,6 +21720,12 @@ "value" : "Argomenti vicini" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "近くのトピック" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18460,6 +21766,12 @@ "value" : "Rete" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ネットワーク" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18518,6 +21830,12 @@ "value" : "Configurazione della rete" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ネットワーク設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18576,6 +21894,12 @@ "value" : "Configurazione di rete ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ネットワーク設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18616,6 +21940,12 @@ "value" : "Stato della rete Arancione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ネットワーク状態 オレンジ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18644,6 +21974,12 @@ "value" : "Stato della rete Rosso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ネットワーク状態 レッド" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18678,6 +22014,12 @@ "value" : "Mai" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "なし" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18700,6 +22042,12 @@ "value" : "Nuovo nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しいノード" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18722,6 +22070,12 @@ "value" : "È stato scoperto un nuovo nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しいノードが発見されました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18744,6 +22098,12 @@ "value" : "Nuova Zelanda 865MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ニュージーランド 865MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18772,6 +22132,12 @@ "value" : "È disponibile un firmware più recente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しいファームウェアが利用可能です" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18806,6 +22172,12 @@ "value" : "Notte" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "夜間" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18846,6 +22218,12 @@ "value" : "Posizioni NMEA" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "NMEA位置情報" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18904,6 +22282,12 @@ "value" : "Nessun canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネルなし" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18950,6 +22334,12 @@ "value" : "Nessun nodo collegato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続されたノードがありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -18990,6 +22380,12 @@ "value" : "Nessun dispositivo collegato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスが接続されていません" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19030,6 +22426,12 @@ "value" : "Nessuna metrica del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスメトリクスがありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19052,6 +22454,12 @@ "value" : "Nessuna metrica ambientale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境メトリクスがありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19098,6 +22506,12 @@ "value" : "Nessuna interfaccia" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "インターフェースがありません" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19138,6 +22552,12 @@ "value" : "Nessun registro del contatore PAX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンターログがありません" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -19184,6 +22604,12 @@ "value" : "Nessun PIN (funziona e basta)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PIN不要(自動接続)" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19230,6 +22656,12 @@ "value" : "Nessuna posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置情報がありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19252,6 +22684,12 @@ "value" : "Nessuna metrica di potenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電力メトリクスがありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19292,6 +22730,12 @@ "value" : "Nessuna risposta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "応答なし" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19350,6 +22794,12 @@ "value" : "Nessun percorso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルートなし" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19396,6 +22846,12 @@ "value" : "Nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19458,6 +22914,12 @@ "value" : "Il nodo non ha posizioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードに位置情報がありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19486,6 +22948,12 @@ "value" : "Storia del nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Node 履歴" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19508,6 +22976,12 @@ "value" : "Intervallo di trasmissione delle informazioni sul nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード情報ブロードキャスト間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19594,6 +23068,12 @@ "value" : "Mappa dei nodi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Node マップ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19662,6 +23142,12 @@ "value" : "Nodi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -19772,6 +23258,12 @@ "value" : "Nessuno" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "なし" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19812,6 +23304,12 @@ "value" : "Non è un file di percorso valido" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効なルートファイルではありません" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19852,6 +23350,12 @@ "value" : "Non autorizzato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未認証" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19904,6 +23408,12 @@ "value" : "Non presente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "存在しません" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -19944,6 +23454,12 @@ "value" : "Note" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メモ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19972,6 +23488,12 @@ "value" : "Numero di hop" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホップ数" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20000,6 +23522,12 @@ "value" : "Numero di record" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "レコード数" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20028,6 +23556,12 @@ "value" : "Numero di satelliti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "衛星数" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20068,6 +23602,12 @@ "value" : "Spento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オフ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20114,6 +23654,12 @@ "value" : "OK" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20136,6 +23682,12 @@ "value" : "Ok a MQTT" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTT OK" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20170,6 +23722,12 @@ "value" : "Tipo OLED" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OLEDタイプ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20216,6 +23774,12 @@ "value" : "Solo all'avvio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "起動時のみ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20302,6 +23866,12 @@ "value" : "Un'ora" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20360,6 +23930,12 @@ "value" : "Un minuto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1分" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20418,6 +23994,12 @@ "value" : "Un secondo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20464,6 +24046,12 @@ "value" : "In linea" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オンライン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20490,6 +24078,12 @@ }, "Only rebroadcasts packets from the core portnums: NodeInfo, Text, Position, Telemetry, and Routing." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "コアポート番号からのパケットのみ再ブロードキャスト: ノード情報、テキスト、位置、テレメトリ、ルーティング。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -20598,6 +24192,12 @@ "value" : "Ottimizzato per i display a 2 colori" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2色ディスプレイ用に最適化" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20638,6 +24238,12 @@ "value" : "Ottimizzato per la comunicazione del sistema ATAK, riduce le trasmissioni di routine." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ATAKシステム通信用に最適化、定期ブロードキャストを削減。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20706,6 +24312,12 @@ "value" : "GPIO opzionale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オプション GPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20746,6 +24358,12 @@ "value" : "Opzioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オプション" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20804,6 +24422,12 @@ "value" : "Riferimento di griglia Ordnance Survey" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "英国陸地測量部格子座標" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20844,6 +24468,12 @@ "value" : "Dettagli della voce del registro OS" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OSログエントリ詳細" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20866,6 +24496,12 @@ "value" : "Gli aggiornamenti OTA non sono supportati da questo dispositivo NRF." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このNRFデバイスではOTA更新はサポートされていません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20894,6 +24530,12 @@ "value" : "Gli aggiornamenti OTA non sono supportati dalla vostra piattaforma." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お使いのプラットフォームではOTA更新はサポートされていません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20922,6 +24564,12 @@ "value" : "Altre fonti di dati" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "その他のデータソース" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20950,6 +24598,12 @@ "value" : "Emissione di registrazioni di debug in tempo reale via seriale, visualizzazione ed esportazione di registri del dispositivo con correzione della posizione via Bluetooth." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シリアル経由でライブデバッグログを出力し、Bluetooth経由で位置情報を削除したデバイスログを表示・エクスポート。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20972,6 +24626,12 @@ "value" : "Pin di uscita cicalino GPIO " } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "出力ピンブザーGPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20994,6 +24654,12 @@ "value" : "Pin di uscita GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "出力ピンGPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21016,6 +24682,12 @@ "value" : "Pin di uscita vibra GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "出力ピン振動GPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21038,6 +24710,12 @@ "value" : "Overlanding" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オーバーランド" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21066,6 +24744,12 @@ "value" : "Annulla il rilevamento automatico dello schermo OLED." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "自動OLEDスクリーン検出をオーバーライド。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21106,6 +24790,12 @@ "value" : "Modalità di associazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ペアリングモード" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21164,6 +24854,12 @@ "value" : "Password" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "パスワード" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21222,6 +24918,12 @@ "value" : "Pausa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "一時停止" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21268,6 +24970,12 @@ "value" : "Contatore PAX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンター" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21314,6 +25022,12 @@ "value" : "Configurazione del contatore PAX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンター設定" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -21348,6 +25062,12 @@ "value" : "Configurazione del contatore PAX ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンター設定を受信しました: %@" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -21376,6 +25096,12 @@ "value" : "Registro del contatore PAX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンターログ" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -21416,6 +25142,12 @@ "value" : "Messaggio del contatore PAX ricevuto da: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンターメッセージを受信: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21450,6 +25182,12 @@ }, "paxcounter.log" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンターログ" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -21472,6 +25210,12 @@ "value" : "Eseguire un reset di fabbrica sul nodo a cui si è connessi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続しているノードの工場出荷時リセットを実行" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21494,6 +25238,12 @@ "value" : "Filippine 433MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フィリピン 433MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21516,6 +25266,12 @@ "value" : "Filippine 868MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フィリピン 868MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21538,6 +25294,12 @@ "value" : "Filippine 915MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フィリピン 915MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21578,6 +25340,12 @@ "value" : "Telefono GPS" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スマートフォンGPS" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21618,6 +25386,12 @@ "value" : "Pin %lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ピン %lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21640,6 +25414,12 @@ "value" : "Pin A" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ピンA" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21662,6 +25442,12 @@ "value" : "Pin B" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ピンB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21690,6 +25476,12 @@ "value" : "Amministrazione dei nodi basata su PKI, richiede la versione firmware 2.5+" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PKIベースのノード管理、ファームウェアバージョン2.5+が必要" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21712,6 +25504,12 @@ }, "Please be advised that because the map report is not encrypted, your data may be stored and displayed permanently by third parties. Meshtastic does not assume responsibility for any such storage, display or disclosure of this data." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "マップレポートは暗号化されていないため、あなたのデータが第三者によって永続的に保存・表示される可能性があることをご承知ください。Meshtasticは、このようなデータの保存、表示、開示について一切の責任を負いません。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -21728,6 +25526,12 @@ "value" : "Collegarsi a una radio per configurare le impostazioni." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定を構成するには無線機に接続してください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21756,6 +25560,12 @@ "value" : "Impostare una regione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "地域を設定してください" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21778,6 +25588,12 @@ "value" : "Punti di interesse" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "興味地点" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21864,6 +25680,12 @@ "value" : "Posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21916,6 +25738,12 @@ "value" : "Configurazione della posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -21974,6 +25802,12 @@ "value" : "Configurazione della posizione ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22008,6 +25842,12 @@ "value" : "Scambio di posizioni non riuscito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置交換に失敗しました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22030,6 +25870,12 @@ "value" : "Scambio di posizioni richiesto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置交換要求" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22052,6 +25898,12 @@ "value" : "Bandiere di posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置フラグ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22074,6 +25926,12 @@ "value" : "Registro di posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置ログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22118,6 +25976,12 @@ "value" : "Pacchetto posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置パケット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22204,6 +26068,12 @@ "value" : "Posizione inviata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置送信済み" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22226,6 +26096,12 @@ "value" : "Posizioni abilitate" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置情報有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22254,6 +26130,12 @@ "value" : "Le posizioni saranno fornite dal GPS del dispositivo; se si seleziona disabilitato o non presente, è possibile impostare una posizione fissa." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置情報はデバイスのGPSによって提供されます。無効または存在しないを選択した場合は、固定位置を設定できます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22294,6 +26176,12 @@ "value" : "Potenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22346,6 +26234,12 @@ "value" : "Configurazione dell'alimentazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22386,6 +26280,12 @@ "value" : "Configurazione dell'alimentazione ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源設定を受信しました: %@" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -22414,6 +26314,12 @@ "value" : "Metriche di potenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源メトリクス" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22436,6 +26342,12 @@ "value" : "Registro delle metriche di potenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電力メトリクスログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22458,6 +26370,12 @@ "value" : "Spegnimento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源オフ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22480,6 +26398,12 @@ "value" : "Opzioni di alimentazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源オプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22514,6 +26438,12 @@ "value" : "Risparmio energetico" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "省電力" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22554,6 +26484,12 @@ "value" : "Schermo di alimentazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源画面" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22582,6 +26518,12 @@ "value" : "Potenziato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源供給中" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22610,6 +26552,12 @@ "value" : "Posizione precisa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "精密位置" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22632,6 +26580,12 @@ "value" : "Preimpostazioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プリセット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22660,6 +26614,12 @@ "value" : "Pin a pressione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プレスピン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22682,6 +26642,12 @@ "value" : "Pressione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "気圧" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -22716,6 +26682,12 @@ "value" : "Principale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プライマリ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22762,6 +26734,12 @@ "value" : "Chiave amministrativa primaria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プライマリ管理キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22790,6 +26768,12 @@ "value" : "GPIO principale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プライマリGPIO" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22818,6 +26802,12 @@ "value" : "Chiave privata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "秘密キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22864,6 +26854,12 @@ "value" : "Processo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プロセス" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22904,6 +26900,12 @@ "value" : "Informazioni sul progetto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プロジェクト情報" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -22950,6 +26952,12 @@ "value" : "Protobufs" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プロトコルバッファ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22996,6 +27004,12 @@ "value" : "Chiave pubblica" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "公開キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23024,6 +27038,12 @@ "value" : "Crittografia a chiave pubblica" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "公開鍵暗号化" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23052,6 +27072,12 @@ "value" : "Mancata corrispondenza della chiave pubblica" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "公開キー不一致" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23080,6 +27106,12 @@ "value" : "Alimentato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "パスワード" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23120,6 +27152,12 @@ "value" : "Interrogativo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "質問" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23160,6 +27198,12 @@ "value" : "Radiazioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "放射線" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -23194,6 +27238,12 @@ "value" : "Configurazione radio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無線設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23234,6 +27284,12 @@ "value" : "Radio scollegata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無線切断" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23274,6 +27330,12 @@ "value" : "Modulo encoder rotativo RAK" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RAKロータリーエンコーダー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23332,6 +27394,12 @@ "value" : "Test di portata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "レンジテスト" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23390,6 +27458,12 @@ "value" : "Configurazione del test di portata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "レンジテスト設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23448,6 +27522,12 @@ "value" : "Configurazione del modulo Range Test ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "範囲テストモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23506,6 +27586,12 @@ "value" : "Riavvio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "再起動" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23564,6 +27650,12 @@ "value" : "Riavviare il nodo?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを再起動しますか?" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23598,6 +27690,12 @@ }, "Rebroadcast any observed message, if it was on our private channel or from another mesh with the same lora params." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プライベートチャンネル上、または同じLoRaパラメータを持つ他のメッシュからの観測されたメッセージを再ブロードキャストします。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -23614,6 +27712,12 @@ "value" : "Modalità di ritrasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "再ブロードキャストモード" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23642,6 +27746,12 @@ "value" : "Dati di ricezione (rxd) Pin GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "受信データ(RXD)GPIOピン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23682,6 +27792,12 @@ "value" : "Ricevuto un riscontro negativo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "否定応答を受信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23740,6 +27856,12 @@ "value" : "Ricevuto Ack" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "受信確認" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23798,6 +27920,12 @@ "value" : "Destinatario Ack" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "受信者確認" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23844,6 +27972,12 @@ "value" : "Percorso di registrazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルート記録中" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23866,6 +28000,12 @@ "value" : "Aggiornare i metadati del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスメタデータを更新" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23881,7 +28021,14 @@ } }, "Regenerate Private Key" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プライベートキーを再生成" + } + } + } }, "Region" : { "localizations" : { @@ -23897,6 +28044,12 @@ "value" : "Regione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "地域" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23943,6 +28096,12 @@ "value" : "Raggiunto il limite del ciclo di lavoro regionale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "地域デューティサイクル制限に到達" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23983,6 +28142,12 @@ "value" : "Note di rilascio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リリースノート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24005,6 +28170,12 @@ "value" : "Amministrazione remota per: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ のリモート管理" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24027,6 +28198,12 @@ "value" : "Amministratore legacy remoto: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リモートレガシー管理: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24049,6 +28226,12 @@ "value" : "Amministratore PKI remoto: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リモートPKI管理: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24077,6 +28260,12 @@ "value" : "Elimina" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "削除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24105,6 +28294,12 @@ "value" : "Rimuovi dai preferiti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入りから削除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24127,6 +28322,12 @@ "value" : "Elimina da ignorati" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無視リストから削除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24161,6 +28362,12 @@ "value" : "Ripetitore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リピーター" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24189,6 +28396,12 @@ "value" : "Sostituisci canali" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル置換" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24229,6 +28442,12 @@ "value" : "Risposta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "返信" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -24365,6 +28584,12 @@ "value" : "Richiede la presenza di un accelerometro sul dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスに加速度計が必要です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24455,6 +28680,12 @@ "value" : "Riavvio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "再起動" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24483,6 +28714,12 @@ "value" : "Riavviare al nodo a cui si è collegati" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続しているノードを再起動" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24498,7 +28735,14 @@ } }, "Restore" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "復元" + } + } + } }, "Resume" : { "localizations" : { @@ -24526,6 +28770,12 @@ "value" : "Il curriculum" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "再開" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -24572,6 +28822,12 @@ "value" : "Esaminare l'applicazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリをレビュー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24618,6 +28874,12 @@ "value" : "Diritto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "右" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -24676,6 +28938,12 @@ "value" : "Suoneria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "着信音" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -24728,6 +28996,12 @@ "value" : "Configurazione della suoneria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "着信音設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -24768,6 +29042,12 @@ "value" : "Lingua di trasferimento della suoneria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "着信音転送言語" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -24854,6 +29134,12 @@ "value" : "Ruolo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "役割" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24910,6 +29196,12 @@ "value" : "Ruoli" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "役割" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24932,6 +29224,12 @@ "value" : "Argomento radice" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルートトピック" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24954,6 +29252,12 @@ "value" : "Rotary 1" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロータリー1" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25076,6 +29380,12 @@ "value" : "Percorso: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルート: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25104,6 +29414,12 @@ "value" : "Router" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルーター" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25138,6 +29454,12 @@ "value" : "Router tardivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルーター遅延" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25160,6 +29482,12 @@ "value" : "Percorsi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25240,6 +29568,12 @@ "value" : "RSSI %@ dBm" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RSSI %@ dBm" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25262,6 +29596,12 @@ "value" : "RSSI %ddB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RSSI %ddB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25284,6 +29624,12 @@ "value" : "RSSI %llddB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RSSI %llddB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25358,6 +29704,12 @@ }, "Russia" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロシア" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25380,6 +29732,12 @@ "value" : "Guadagno potenziato RX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RX ブーストゲイン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25418,6 +29776,12 @@ "value" : "לווין" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "衛星" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -25470,6 +29834,12 @@ "value" : "Sorvolo satellitare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "衛星フライオーバー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -25516,6 +29886,12 @@ "value" : "Sat" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "衛星" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25544,6 +29920,12 @@ "value" : "Stima satelliti %lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "衛星推定数 %lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25572,6 +29954,12 @@ "value" : "Satelliti in vista: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "視野内衛星数: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25612,6 +30000,12 @@ "value" : "Salva" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -25652,6 +30046,12 @@ "value" : "Salvare le impostazioni del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル設定を保存" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25692,6 +30092,12 @@ "value" : "Salva la configurazione per %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ の設定を保存" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -25738,6 +30144,12 @@ "value" : "Salvare la configurazione utente in %@?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザー設定を %@ に保存しますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25766,6 +30178,12 @@ "value" : "Salva un CSV con i dettagli del messaggio di test di portata, attualmente disponibile solo sui dispositivi ESP32 con un server web." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "レンジテストメッセージの詳細をCSVで保存します。現在、Webサーバーを持つESP32デバイスでのみ利用可能です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25788,6 +30206,12 @@ }, "Scan this QR code to add %@ to another device." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このQRコードをスキャンして、%@ を別のデバイスに追加してください。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -25804,6 +30228,12 @@ "value" : "Schermo acceso per" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "画面オン時間" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25832,6 +30262,12 @@ "value" : "Ricerca" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検索" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25854,6 +30290,12 @@ "value" : "Secondo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "秒" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25894,6 +30336,12 @@ "value" : "Secondario" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "副" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -25940,6 +30388,12 @@ "value" : "Chiave amministrativa secondaria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "副管理者キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25974,6 +30428,12 @@ "value" : "Sicurezza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "セキュリティ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26008,6 +30468,12 @@ "value" : "Configurazione della sicurezza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "セキュリティ設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26042,6 +30508,12 @@ "value" : "Le impostazioni di configurazione della sicurezza richiedono una versione del firmware 2.5+" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "セキュリティ設定にはファームウェアバージョン2.5以上が必要です" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26088,6 +30560,12 @@ "value" : "Selezionare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "選択" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -26134,6 +30612,12 @@ "value" : "Selezionare un canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネルを選択" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26156,6 +30640,12 @@ "value" : "Selezionare una conversazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "会話を選択" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26178,6 +30668,12 @@ "value" : "Selezionare un tipo di conversazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "会話タイプを選択" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26194,6 +30690,12 @@ }, "Select a node from the drop down to manage connected or remote devices." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ドロップダウンからノードを選択して、接続済みまたはリモートデバイスを管理してください。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -26210,6 +30712,12 @@ "value" : "Selezionare un percorso di tracciamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルートを選択" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26232,6 +30740,12 @@ "value" : "Selezionare il canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル選択" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26272,6 +30786,12 @@ "value" : "Selezionare un nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード選択" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -26318,6 +30838,12 @@ "value" : "Inviare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26390,6 +30916,12 @@ "value" : "Inviare un messaggio diretto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダイレクトメッセージを送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26418,6 +30950,12 @@ "value" : "Inviare un messaggio di gruppo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "グループメッセージを送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26534,6 +31072,12 @@ "value" : "Inviare uno spegnimento al nodo a cui si è connessi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "接続しているノードにシャットダウン信号を送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26618,6 +31162,12 @@ "value" : "Invia la campana" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ベル送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26664,6 +31214,12 @@ "value" : "Inviare il battito cardiaco" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハートビート送信" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -26704,6 +31260,12 @@ "value" : "Inviare il riavvio OTA" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OTA再起動送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26732,6 +31294,12 @@ "value" : "Intervallo del mittente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "送信者間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26766,6 +31334,12 @@ "value" : "Sensore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "センサー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26794,6 +31368,12 @@ "value" : "Opzioni del sensore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "センサーオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26816,6 +31396,12 @@ "value" : "Opzioni del sensore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "センサーオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26850,6 +31436,12 @@ "value" : "Inviato un canale per: %@ Canale Indice %d" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ のチャンネルを送信しました(チャンネルインデックス %d)" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27187,6 +31779,12 @@ "value" : "Numero di sequenza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シーケンス番号" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27249,6 +31847,12 @@ "value" : "Seriale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シリアル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27307,6 +31911,12 @@ "value" : "Configurazione seriale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シリアル設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27353,6 +31963,12 @@ "value" : "Console seriale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シリアルコンソール" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27421,6 +32037,12 @@ "value" : "Configurazione modulo seriale ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シリアルモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27461,6 +32083,12 @@ "value" : "Serie" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "系列" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27489,6 +32117,12 @@ "value" : "Server" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サーバー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27517,6 +32151,12 @@ "value" : "Indirizzo del server" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サーバーアドレス" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27539,6 +32179,12 @@ "value" : "Opzione server" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サーバーオプション" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -27555,6 +32201,12 @@ "value" : "Set" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27595,6 +32247,12 @@ "value" : "Impostare la regione LoRa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LoRa地域を設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27635,6 +32293,12 @@ "value" : "Impostare i pin GPIO per RXD e TXD." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RXDとTXDのGPIOピンを設定します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27650,7 +32314,14 @@ } }, "Set to current location" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在の位置に設定" + } + } + } }, "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" : { @@ -27675,7 +32346,14 @@ } }, "Sets the screen clock format to 12-hour." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "画面の時計表示を12時間形式に設定します。" + } + } + } }, "Settings" : { "localizations" : { @@ -27703,6 +32381,12 @@ "value" : "Impostazioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27761,6 +32445,12 @@ "value" : "Settantadue ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "72時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27795,6 +32485,12 @@ }, "Share Contact QR" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "連絡先QRを共有" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -27829,6 +32525,12 @@ "value" : "Condividi il codice QR" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QRコードを共有" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27875,6 +32577,12 @@ "value" : "Condividi il codice QR e il link" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QRコードとリンクを共有" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27903,6 +32611,12 @@ "value" : "Chiave condivisa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "共有キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -27943,6 +32657,12 @@ "value" : "Condividere i canali Meshtastic" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtasticチャンネル共有" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -27989,6 +32709,12 @@ "value" : "Nome breve" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "短い名前" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28017,6 +32743,12 @@ "value" : "Corto raggio - Veloce" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "短距離 - 高速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28039,6 +32771,12 @@ "value" : "Corto raggio - Lento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "短距離 - 低速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28061,6 +32799,12 @@ "value" : "Corto raggio - Turbo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "短距離 - ターボ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28089,6 +32833,12 @@ "value" : "Mostra avvisi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アラート表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28117,6 +32867,12 @@ "value" : "Mostra avvisi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アラート表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28145,6 +32901,12 @@ "value" : "Mostra i nodi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28173,6 +32935,12 @@ "value" : "Mostra sullo schermo del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス画面に表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28229,6 +32997,12 @@ "value" : "Mostra waypoint " } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェイポイントを表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28251,6 +33025,12 @@ "value" : "Mostra le informazioni relative alla radio Lora collegata via bluetooth. È possibile scorrere il dito verso sinistra per scollegare la radio e premere a lungo per avviare l'attività live." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bluetoothで接続されたLoRaラジオの情報を表示します。左にスワイプしてラジオを切断し、長押しでライブアクティビティを開始できます。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -28273,6 +33053,12 @@ "value" : "Spegnimento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シャットダウン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28301,6 +33087,12 @@ "value" : "Spegnere il nodo?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードをシャットダウンしますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28329,6 +33121,12 @@ "value" : "Arresto del nodo?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードをシャットダウンしますか?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28363,6 +33161,12 @@ "value" : "Spegnimento in caso di perdita di alimentazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電源喪失時にシャットダウン" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28403,6 +33207,12 @@ "value" : "Segnale %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "信号 %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28443,6 +33253,12 @@ "value" : "Semplice" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シンプル" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28483,6 +33299,12 @@ "value" : "Singapore 923MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シンガポール 923MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28523,6 +33345,12 @@ "value" : "Sei ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "6時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28569,6 +33397,12 @@ "value" : "Sci" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スキー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28597,6 +33431,12 @@ "value" : "Posizione intelligente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スマート位置" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28619,6 +33459,12 @@ "value" : "SNR" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SNR" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28641,6 +33487,12 @@ "value" : "SNR %@ dB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SNR %@ dB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28663,6 +33515,12 @@ "value" : "SNR %@dB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SNR %@dB" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28685,6 +33543,12 @@ "value" : "Umidità del suolo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "土壌水分" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -28701,6 +33565,12 @@ "value" : "Temperatura del suolo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "土壌温度" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -28717,6 +33587,12 @@ "value" : "Specifica la durata dell'uscita del GPIO monitorato." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "監視対象GPIOの出力時間を指定。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28745,6 +33621,12 @@ "value" : "Velocità" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "速度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28773,6 +33655,12 @@ "value" : "Velocità %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "速度 %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28801,6 +33689,12 @@ "value" : "Velocità: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "速度: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28816,7 +33710,14 @@ } }, "Sponsor App Development" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリ開発をスポンサー" + } + } + } }, "Spread Factor" : { "localizations" : { @@ -28826,6 +33727,12 @@ "value" : "Fattore di diffusione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "拡散係数" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28866,6 +33773,12 @@ "value" : "SSID" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSID" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28912,6 +33825,12 @@ "value" : "Predefinito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "標準" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28958,6 +33877,12 @@ "value" : "Predefinito Silenzioso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "標準ミュート" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29016,6 +33941,12 @@ "value" : "Inizio" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開始" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29056,6 +33987,12 @@ "value" : "Stato Intervallo di trasmissione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "状態ブロードキャスト間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29208,6 +34145,12 @@ "value" : "Abbonati" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "購読済み" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29230,6 +34173,12 @@ "value" : "Sottosistema" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サブシステム" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29258,6 +34207,12 @@ "value" : "Supportato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サポート済み" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29308,6 +34263,12 @@ "value" : "Tabella" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テーブル" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29324,6 +34285,12 @@ }, "Taiwan" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "台湾" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29352,6 +34319,12 @@ "value" : "TAK" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "TAK" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29386,6 +34359,12 @@ "value" : "Tracker TAK" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "TAKトラッカー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29414,6 +34393,12 @@ "value" : "Prende l'URL di un canale Meshtastic e salva le impostazioni del canale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MeshtasticチャンネルURLを取得し、チャンネル設定を保存します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29430,6 +34415,12 @@ }, "Takes a Meshtastic contact URL and saves it to the nodes database" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtastic連絡先URLを取得し、ノードデータベースに保存します" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -29464,6 +34455,12 @@ "value" : "Risposta di Tapback" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タップバック" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29522,6 +34519,12 @@ "value" : "Telemetria (sensori)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テレメトリ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29580,6 +34583,12 @@ "value" : "Configurazione della telemetria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テレメトリ設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29742,6 +34751,12 @@ "value" : "Temp" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "温度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29770,6 +34785,12 @@ "value" : "Temperatura" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "温度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29810,6 +34831,12 @@ "value" : "Dieci minuti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "10分" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29868,6 +34895,12 @@ "value" : "Dieci secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "10秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29914,6 +34947,12 @@ "value" : "Chiave amministrativa terziaria" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "第三管理者キー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29960,6 +34999,12 @@ "value" : "Messaggio di testo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テキストメッセージ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -30000,6 +35045,12 @@ "value" : "Display TFT a colori" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "TFTフルカラーディスプレイ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30022,6 +35073,12 @@ "value" : "Thailandia" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30044,6 +35101,12 @@ "value" : "Il tempo di attesa prima che il pacchetto venga considerato completato." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "パケットが完了したと見なすまでの待機時間。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30066,6 +35129,12 @@ "value" : "La direzione della bussola sullo schermo all'esterno del cerchio punterà sempre verso nord." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "画面上の円の外側にあるコンパスの方位は常に北を指します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30094,6 +35163,12 @@ "value" : "Il punto di rugiada è %@ in questo momento." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在の露点は %@ です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30116,6 +35191,12 @@ "value" : "La velocità con cui verranno inviati gli aggiornamenti della posizione se la distanza minima è stata soddisfatta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最小距離条件が満たされた場合の位置更新送信の最短間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30138,6 +35219,12 @@ "value" : "Il formato utilizzato per visualizzare le coordinate GPS sullo schermo del dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス画面でGPS座標を表示する形式。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30166,6 +35253,12 @@ "value" : "Gli ultimi 4 dell'indirizzo MAC del dispositivo vengono aggiunti al nome breve per impostare il nome BLE del dispositivo. Il nome breve può avere una lunghezza massima di 4 byte." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスのBLE名を設定するため、MACアドレスの末尾4桁が短縮名に追加されます。短縮名は最大4バイトまでです。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30194,6 +35287,12 @@ "value" : "L'intervallo massimo che può trascorrere senza che un nodo trasmetta una posizione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードが位置をブロードキャストしない最大間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30216,6 +35315,12 @@ "value" : "Le applicazioni Meshtastic Apple supportano la versione firmware %@ e successive." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtastic Appleアプリはファームウェアバージョン %@ 以上をサポートしています。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30244,6 +35349,12 @@ "value" : "La variazione di distanza minima in metri da considerare per la trasmissione di una posizione intelligente." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スマート位置ブロードキャストで考慮される最小距離変化(メートル)。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30318,6 +35429,12 @@ "value" : "Il pacchetto è troppo grande" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "パケットが大きすぎます" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -30364,6 +35481,12 @@ "value" : "La chiave pubblica primaria autorizzata a inviare messaggi di amministrazione a questo nodo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このノードに管理メッセージを送信する権限を持つプライマリ公開キー。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30420,6 +35543,12 @@ "value" : "La regione in cui si utilizzeranno le radio." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無線機を使用する地域。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30448,6 +35577,12 @@ "value" : "L'argomento principale da usare per MQTT." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTTに使用するルートトピック。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30498,6 +35633,12 @@ "value" : "La chiave pubblica secondaria autorizzata a inviare messaggi di amministrazione a questo nodo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このノードに管理メッセージを送信する権限を持つセカンダリ公開キー。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30526,6 +35667,12 @@ "value" : "Il dispositivo specificato si è disconnesso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "指定されたデバイスが切断されました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30548,6 +35695,12 @@ "value" : "Lo stato del LED (acceso/spento)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LEDの状態(オン/オフ)" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30698,6 +35851,12 @@ "value" : "Trenta minuti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "30分" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -30756,6 +35915,12 @@ "value" : "Trenta secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "30秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -30814,6 +35979,12 @@ "value" : "Trentasei ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "36時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -30854,6 +36025,12 @@ "value" : "Questa conversazione sarà cancellata." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この会話は削除されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30932,6 +36109,12 @@ "value" : "È probabile che questo messaggio non sia stato consegnato." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このメッセージは配信されなかった可能性があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -30954,6 +36137,12 @@ "value" : "Questo nodo non supporta alcun modulo configurabile." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このノードは設定可能なモジュールをサポートしていません。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -31038,6 +36227,12 @@ "value" : "Tre ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "3時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31096,6 +36291,12 @@ "value" : "Tre secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "3秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31258,6 +36459,12 @@ "value" : "Tempo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "時刻" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31286,6 +36493,12 @@ "value" : "Timbro del tempo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイムスタンプ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31314,6 +36527,12 @@ "value" : "Fuso orario" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイムゾーン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31382,6 +36601,12 @@ "value" : "Timeout" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイムアウト" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31440,6 +36665,12 @@ "value" : "Timestamp" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイムスタンプ" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31480,6 +36711,12 @@ "value" : "Tempi e formati" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイミング・フォーマット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31502,6 +36739,12 @@ "value" : "TLS abilitato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "TLS有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31568,6 +36811,12 @@ "value" : "Totale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "合計" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31590,6 +36839,12 @@ "value" : "Totale PAX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "総PAX" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -31618,6 +36873,12 @@ "value" : "Percorso di tracciamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルート" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31650,6 +36911,12 @@ "value" : "Registro del percorso di tracciamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルートログ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31730,6 +36997,12 @@ "value" : "Traccia del percorso inviato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルート送信済み" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31812,6 +37085,12 @@ }, "Tracker" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トラッカー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31846,6 +37125,12 @@ "value" : "Traffico" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トラフィック" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31868,6 +37153,12 @@ "value" : "Dati di trasmissione (txd) Pin GPIO" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "送信データ(TXD)GPIOピン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31890,6 +37181,12 @@ "value" : "Trasmissione abilitata" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "送信有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31918,6 +37215,12 @@ "value" : "Tratta il doppio tocco sugli accelerometri supportati come una pressione di un tasto utente." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サポートされている加速度計でのダブルタップをユーザーボタン押下として扱います。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31946,6 +37249,12 @@ "value" : "Tipo di innesco" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トリガータイプ" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31968,6 +37277,12 @@ "value" : "Ping ad hoc a triplo clic" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トリプルクリック アドホックPing" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31996,6 +37311,12 @@ "value" : "Riprova" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "再試行" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32036,6 +37357,12 @@ "value" : "Dodici ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "12時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32094,6 +37421,12 @@ "value" : "Ventiquattro ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "24時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32152,6 +37485,12 @@ "value" : "Due ore" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32210,6 +37549,12 @@ "value" : "Due minuti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2分" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32268,6 +37613,12 @@ "value" : "Due secondi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2秒" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32308,6 +37659,12 @@ "value" : "Trasmissione UDP" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "UDPブロードキャスト" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -32324,6 +37681,12 @@ "value" : "Ucraina 433MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウクライナ 433MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32346,6 +37709,12 @@ "value" : "Ucraina 868MHz" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウクライナ 868MHz" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32368,6 +37737,12 @@ "value" : "Non preferito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お気に入りを解除" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32390,6 +37765,12 @@ "value" : "Non sano" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不健康" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32412,6 +37793,12 @@ "value" : "Insalubre per i gruppi sensibili" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "敏感なグループには不健康" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32434,6 +37821,12 @@ "value" : "Stati Uniti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アメリカ合衆国" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32456,6 +37849,12 @@ "value" : "Unità visualizzate sullo schermo del dispositivo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス画面に表示される単位" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32496,6 +37895,12 @@ "value" : "Mercatore Universale Trasverso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユニバーサル横メルカトル図法" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32536,6 +37941,12 @@ "value" : "sconosciuto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不明" + } + }, "sr" : { "stringUnit" : { "state" : "needs_review", @@ -32570,6 +37981,12 @@ "value" : "Sconosciuto" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不明" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32628,6 +38045,12 @@ "value" : "Età sconosciuta" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不明な経過時間" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32661,10 +38084,24 @@ } }, "Unmessagable" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ不可" + } + } + } }, "Unmonitored" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "監視なし" + } + } + } }, "Unset" : { "localizations" : { @@ -32692,6 +38129,12 @@ "value" : "Non impostato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未設定" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32732,6 +38175,12 @@ "value" : "Non supportato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サポート対象外" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32772,6 +38221,12 @@ "value" : "Rilevata versione firmware non supportata, impossibile connettersi al dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サポートされていないファームウェアバージョンが検出されました。デバイスに接続できません。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32830,6 +38285,12 @@ "value" : "Su" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "上" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32870,6 +38331,12 @@ "value" : "Su Giù 1" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "上下 1" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32916,6 +38383,12 @@ "value" : "fino a %@ di distanza" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最大 %@ 離れています" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32956,6 +38429,12 @@ "value" : "Intervallo di aggiornamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "更新間隔" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32996,6 +38475,12 @@ "value" : "Aggiornare il firmware" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェアを更新" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -33036,6 +38521,12 @@ "value" : "Dati aggiornati sulle statistiche dei nodi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード統計データを更新しました。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33064,6 +38555,12 @@ "value" : "Aggiornato: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "更新日時: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33086,6 +38583,12 @@ "value" : "Uplink abilitato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アップリンク有効" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33114,6 +38617,12 @@ "value" : "Tempo di attività" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "稼働時間" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -33170,6 +38679,12 @@ "value" : "Utilizzare I2S come cicalino" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "I2Sをブザーとして使用" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33185,7 +38700,14 @@ } }, "Use my Location" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "自分の位置を使用" + } + } + } }, "Use Preset" : { "localizations" : { @@ -33195,6 +38717,12 @@ "value" : "Utilizzare la preimpostazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プリセットを使用" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33223,6 +38751,12 @@ "value" : "Utilizzare il cicalino PWM" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PWMブザーを使用" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33266,7 +38800,14 @@ } }, "Used to identify unmonitored or infrastructure nodes so that messaging is not avaliable to nodes that will never respond." : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "監視されていないまたはインフラストラクチャノードを識別するために使用され、応答しないノードにはメッセージング機能が利用できないようにします。" + } + } + } }, "User" : { "localizations" : { @@ -33294,6 +38835,12 @@ "value" : "Utente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザー" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -33334,6 +38881,12 @@ "value" : "Configurazione utente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザー設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33362,6 +38915,12 @@ "value" : "Dettagli utente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザー詳細" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33390,6 +38949,12 @@ "value" : "Id utente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザーID" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33418,6 +38983,12 @@ "value" : "Disconnessione avviata dall'utente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザーによる切断" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33464,6 +39035,12 @@ "value" : "Nome utente" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザー名" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -33504,6 +39081,12 @@ "value" : "Utilizza una resistenza di pullup" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プルアップ抵抗を使用" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33526,6 +39109,12 @@ "value" : "Utilizza la connessione di rete del telefono per connettersi a MQTT." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スマートフォンのネットワーク接続を利用してMQTTに接続します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33560,6 +39149,12 @@ "value" : "Direzione del veicolo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "車両方位" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33588,6 +39183,12 @@ "value" : "Velocità del veicolo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "車両速度" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33644,6 +39245,12 @@ "value" : "Version: %1$@ (%2$@)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バージョン: %@ (%@)" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -33666,6 +39273,12 @@ "value" : "Versione: %1$@ (%2$@) " } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バージョン: %1$@ (%2$@)" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33694,6 +39307,12 @@ "value" : "Molto malsano" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "非常に不健康" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33722,6 +39341,12 @@ "value" : "Via Lora" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LoRa経由" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33750,6 +39375,12 @@ "value" : "Via Mqtt" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTT経由" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33796,6 +39427,12 @@ "value" : "Tensione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電圧" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -33836,6 +39473,12 @@ "value" : "Volt %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volts %@" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -33870,6 +39513,12 @@ "value" : "In attesa. . ." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "待機中" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -33960,6 +39609,12 @@ "value" : "Camminare" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "歩行" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33994,6 +39649,12 @@ "value" : "Onda" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "波" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -34015,7 +39676,14 @@ } }, "Waypoint Failed to Send" : { - + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェイポイントの送信に失敗" + } + } + } }, "Waypoint Options" : { "localizations" : { @@ -34031,6 +39699,12 @@ "value" : "Opzioni Waypoint" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェイポイントオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34117,6 +39791,12 @@ "value" : "Condizioni meteo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "気象条件" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34145,6 +39825,12 @@ "value" : "Lampeggiatore web" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェブフラッシャー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34167,6 +39853,12 @@ "value" : "Sito web" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェブサイト" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34195,6 +39887,12 @@ "value" : "Peso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "重量" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -34217,6 +39915,12 @@ "value" : "Che cosa significa il lucchetto?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "鍵マークの意味は?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34251,6 +39955,12 @@ "value" : "Che cos'è Meshtastic?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtasticとは?" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34279,6 +39989,12 @@ "value" : "Cosa fa la modalità operatore con licenza:\n* Imposta il nome del nodo con il proprio nominativo\n* Trasmette informazioni sul nodo ogni 10 minuti\n* Sovrascrive la frequenza, il dutycycle e la potenza di trasmissione\n* Disabilita la crittografia" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ライセンス操作者モードの機能:\n* ノード名をコールサインに設定\n* 10分ごとにノード情報をブロードキャスト\n* 周波数、デューティサイクル、送信電力をオーバーライド\n* 暗号化を無効化" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34347,6 +40063,12 @@ "value" : "Quando si utilizza la modalità GPIO, mantenere l'uscita attiva per questo tempo. " } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPIOモードで使用する際、この期間出力をオンに保ちます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34375,6 +40097,12 @@ "value" : "Utilizza o meno la modalità INPUT_PULLUP per il pin GPIO. Si applica solo se la scheda utilizza resistenze di pull-up sul pin" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPIOピンでINPUT_PULLUPモードを使用するかどうか。ボードがピンでプルアップ抵抗を使用している場合のみ適用されます" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34397,6 +40125,12 @@ "value" : "WiFi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "WiFi" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -34431,6 +40165,12 @@ "value" : "Opzioni WiFi" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "WiFiオプション" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34499,6 +40239,12 @@ "value" : "Vento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "風" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -34521,6 +40267,12 @@ "value" : "Direzione del vento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "風向" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34549,6 +40301,12 @@ "value" : "Velocità del vento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "風速" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34577,6 +40335,12 @@ "value" : "Entro il %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 以内" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -34605,6 +40369,12 @@ "value" : "x" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "x" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34633,6 +40403,12 @@ "value" : "X: %1$@, Y: %2$d" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "X: %1$@, Y: %2$d" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34668,6 +40444,12 @@ "value" : "X: %1$@, Y: %2$f" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "X: %1$@, Y: %2$f" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34703,6 +40485,12 @@ "value" : "X: %1$@, Y: %2$lld" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "X: %1$@, Y: %2$lld" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34732,6 +40520,12 @@ "value" : "y" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "y" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34766,6 +40560,12 @@ "value" : "Ieri" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "昨日" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34788,6 +40588,12 @@ "value" : "È anche possibile aggiornare il dispositivo Meshtastic tramite bluetooth utilizzando l'applicazione Nordic DFU." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nordic DFUアプリを使用してBluetoothでMeshtasticデバイスを更新することもできます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34834,6 +40640,12 @@ "value" : "È possibile inviare e ricevere messaggi di canale (chat di gruppo) e messaggi diretti. Da qualsiasi messaggio è possibile premere a lungo per visualizzare le azioni disponibili, come copia, risposta, tapback e cancellazione, nonché i dettagli di consegna." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル(グループチャット)とダイレクトメッセージの送受信ができます。任意のメッセージを長押しすると、コピー、返信、タップバック、削除などの利用可能なアクションと配信詳細を表示できます。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -34874,6 +40686,12 @@ "value" : "La posizione attuale viene impostata come posizione fissa e trasmessa sulla mesh nell'intervallo di posizione." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在の位置が固定位置として設定され、位置間隔でメッシュネットワーク上にブロードキャストされます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34908,6 +40726,12 @@ "value" : "Il firmware è aggiornato" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファームウェアは最新です" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34936,6 +40760,12 @@ "value" : "Il server MQTT deve supportare TLS." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "MQTTサーバーはTLSをサポートする必要があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34952,6 +40782,12 @@ }, "Your node will periodically send an unencrypted map report packet to the configured MQTT server, this includes id, short and long name, approximate location, hardware model, role, firmware version, LoRa region, modem preset and primary channel name." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードは設定されたMQTTサーバーに定期的に暗号化されていないマップレポートパケットを送信します。これにはID、短縮名と長い名前、おおよその位置、ハードウェアモデル、役割、ファームウェアバージョン、LoRa地域、モデムプリセット、プライマリチャンネル名が含まれます。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -34968,6 +40804,12 @@ "value" : "La frequenza operativa del nodo viene calcolata in base alla regione, alla preimpostazione del modem e a questo campo. Se il campo è 0, lo slot viene calcolato automaticamente in base al nome del canale principale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードの動作周波数は、地域、モデムプリセット、およびこのフィールドに基づいて計算されます。0の場合、スロットはプライマリチャンネル名に基づいて自動的に計算されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34990,6 +40832,12 @@ "value" : "La vostra posizione è stata inviata con una richiesta di risposta con la loro posizione. Riceverete una notifica quando la posizione verrà restituita." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置情報が位置の返信要求と共に送信されました。位置が返信されると通知を受け取ります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -35018,6 +40866,12 @@ "value" : "La vostra regione ha un ciclo di lavoro di %lld%%. MQTT è sconsigliato quando il ciclo di lavoro è limitato, perché il traffico extra sovraccaricherà rapidamente la rete LoRa." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お住まいの地域はデューティサイクルが%lld%%です。デューティサイクル制限がある場合、MQTTの使用は推奨されません。追加のトラフィックによってLoRaメッシュがすぐに圧迫されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -35046,6 +40900,12 @@ "value" : "La regione ha un ciclo di funzionamento orario del %lld%%; la radio smette di inviare pacchetti quando raggiunge il limite orario." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お住まいの地域は時間あたり%lld%%のデューティサイクル制限があります。無線機が時間制限に達すると、パケットの送信を停止します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -35068,6 +40928,12 @@ "value" : "Il file di percorso deve avere entrambe le colonne Latitudine e Longitudine e le intestazioni." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルートファイルには緯度と経度の列とヘッダーの両方が必要です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", From 90a8a4efa83fb5a83f81fd9463046f8f45de99f9 Mon Sep 17 00:00:00 2001 From: kanakonagiri Date: Tue, 24 Jun 2025 15:00:26 +0900 Subject: [PATCH 03/35] =?UTF-8?q?add:=20=E6=97=A5=E6=9C=AC=E8=AA=9E?= =?UTF-8?q?=E8=A8=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Localizable.xcstrings | 252 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 124ce540..f8d14a08 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -2639,6 +2639,12 @@ "value" : "Aggiungi nodo Meshtastic %@ ai contatti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtasticノード%@を連絡先に追加" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -3539,6 +3545,12 @@ "value" : "Altitudine %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "高度 %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -4397,6 +4409,12 @@ "value" : "Preimpostazioni modem disponibili, l'impostazione predefinita è Lungo veloce." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "利用可能なモデムプリセット、デフォルトは Long Fast です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -5149,6 +5167,12 @@ "value" : "Il pin BLE deve essere composto da 6 cifre." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "BLE PINは6桁である必要があります。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -5811,6 +5835,12 @@ }, "By enabling this feature, you acknowledge and expressly consent to the transmission of your device’s real-time geographic location over the MQTT protocol without encryption. This location data may be used for purposes such as live map reporting, device tracking, and related telemetry functions." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この機能を有効にすることで、お客様のデバイスのリアルタイム地理位置が暗号化されずにMQTTプロトコル経由で送信されることを承知し、明示的に同意することを認めます。この位置データは、ライブマップ報告、デバイス追跡、関連テレメトリー機能などの目的で使用される場合があります。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -7142,6 +7172,12 @@ "value" : "Utilizzo del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル使用率" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -7182,6 +7218,12 @@ "value" : "Utilizzo del canale %@%%" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル使用率 %@%%" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -7262,6 +7304,12 @@ "value" : "I canali aggiunti dal codice QR non venivano salvati. Quando si aggiungono canali, i nomi devono essere unici." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QRコードから追加されたチャンネルが保存されませんでした。チャンネルを追加する際は、名前が一意である必要があります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -8452,6 +8500,12 @@ "value" : "Connessione fallita dopo %d tentativi di connessione a %@. Potrebbe essere necessario disaccoppiare il tuo dispositivo in Impostazioni > Bluetooth." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ への接続が%d回の試行後に失敗しました。設定 > Bluetooth でデバイスを削除する必要があるかもしれません。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -9140,6 +9194,12 @@ "value" : "Mostra i moduli che potrebbero non essere supportati al momento da questo nodo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在、このノードでサポートされていない可能性のあるモジュールを表示しています。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -9156,6 +9216,12 @@ "value" : "Attualmente il modo consigliato per aggiornare i dispositivi ESP32 è quello di utilizzare il flasher web su un computer desktop da un browser basato su chrome. Non funziona su dispositivi mobili o tramite BLE." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在、ESP32デバイスの更新の推奨方法は、デスクトップコンピューターのChromeベースのブラウザーでWebフラッシャーを使用することです。モバイルデバイスやBLE経由では動作しません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9442,6 +9508,12 @@ "value" : "Layout dello schermo 128x64 predefinito" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルト128x64スクリーンレイアウト" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -9642,6 +9714,12 @@ "value" : "Cancellare tutte le metriche del dispositivo?" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべてのデバイスメトリクスを削除しますか?" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10465,6 +10543,12 @@ "value" : "Configurazione dispositivo ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -10591,6 +10675,12 @@ "value" : "Il dispositivo è gestito da un amministratore di rete, ma l'utente non può accedere alle impostazioni del dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイスはメッシュ管理者によって管理されており、ユーザーはデバイス設定にアクセスできません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11583,6 +11673,12 @@ "value" : "Visualizzazione della configurazione ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ディスプレイ設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -11623,6 +11719,12 @@ "value" : "Display Fahrenheit" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "華氏表示" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11651,6 +11753,12 @@ "value" : "Modalità di visualizzazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "表示モード" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11679,6 +11787,12 @@ "value" : "Unità di visualizzazione" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "表示単位" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -11997,6 +12111,12 @@ "value" : "Il Drag & Drop è il metodo consigliato per aggiornare il firmware dei dispositivi NRF. Se l'iPhone o l'iPad è USB-C funzionerà con il normale cavo di ricarica USB-C, mentre per i dispositivi lightning è necessario l'adattatore Apple Lightning to USB camera." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ドラッグ&ドロップはNRFデバイスのファームウェア更新に推奨される方法です。お使いのiPhoneまたはiPadがUSB-Cの場合、通常のUSB-C充電ケーブルで動作します。Lightningデバイスの場合は、Apple Lightning to USBカメラアダプターが必要です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -13657,6 +13777,12 @@ "value" : "Configurazione del modulo di notifica esterno ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "外部通知モジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -16875,6 +17001,12 @@ "value" : "Con quale frequenza vengono inviate le metriche dei sensori sulla rete. L'impostazione predefinita è 30 minuti." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境メトリクスがメッシュ経由で送信される頻度。デフォルトは30分です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16903,6 +17035,12 @@ "value" : "Con quale frequenza vengono inviate le metriche di potenza attraverso la rete. L'impostazione predefinita è 30 minuti." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "電力メトリクスがメッシュ経由で送信される頻度。デフォルトは30分です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -16965,6 +17103,12 @@ "value" : "Con quale frequenza inviare lo stato del sensore di rilevamento alla rete, indipendentemente dal rilevamento. L'impostazione predefinita è Mai." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出の有無に関係なく、検出センサーの状態をメッシュに送信する頻度。デフォルトは「なし」です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17455,6 +17599,12 @@ "value" : "Se abilitato, il pin di 'uscita' sarà tirato attivo alto, mentre se disabilitato significa attivo basso." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効にすると、「出力」ピンがアクティブハイになり、無効にするとアクティブローになります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17619,6 +17769,12 @@ "value" : "Ignorare il nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードを無視" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -17675,6 +17831,12 @@ }, "Ignores observed messages from foreign meshes like Local Only, but takes it step further by also ignoring messages from nodes not already in the node's known list." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Local Onlyのように外部メッシュからの観測メッセージを無視しますが、さらに進んで、ノードの既知リストにないノードからのメッセージも無視します。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -17685,6 +17847,12 @@ }, "Ignores observed messages from foreign meshes that are open or those which it cannot decrypt. Only rebroadcasts message on the nodes local primary / secondary channels." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オープンまたは復号化できない外部メッシュからの観測メッセージを無視します。ノードのローカル主要/副次チャンネルでのみメッセージを再ブロードキャストします。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -17947,6 +18115,12 @@ "value" : "Nodo infrastrutturale solo su una torre o sulla cima di una montagna. Non deve essere utilizzato per tetti o nodi mobili. Necessita di una copertura eccezionale. Visibile nell'elenco dei nodi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タワーまたは山頂のみのインフラストラクチャーノード。屋根や移動ノードには使用しないでください。優れたカバレッジが必要です。ノードリストに表示されます。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18005,6 +18179,12 @@ "value" : "Nodo infrastrutturale solo su una torre o sulla cima di una montagna. Non deve essere utilizzato per tetti o nodi mobili. Trasmette i messaggi con un overhead minimo. Non visibile nell'elenco dei nodi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タワーまたは山頂のみのインフラストラクチャーノード。屋根や移動ノードには使用しないでください。最小限のオーバーヘッドでメッセージを中継します。ノードリストには表示されません。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -18051,6 +18231,12 @@ "value" : "Nodo infrastruttura che ritrasmette sempre i pacchetti una volta, ma solo dopo tutte le altre modalità, garantendo una copertura aggiuntiva per i cluster locali. Visibile nell'elenco dei nodi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "常にパケットを一度だけ再ブロードキャストするインフラストラクチャーノードですが、他のすべてのモードの後にのみ実行し、ローカルクラスターの追加カバレッジを確保します。ノードリストに表示されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19163,6 +19349,12 @@ "value" : "Premere a lungo per privilegiare o silenziare il contatto o eliminare una conversazione." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "長押しで連絡先をお気に入りに追加、ミュート、または会話を削除できます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -19481,6 +19673,12 @@ "value" : "Configurazione LoRa ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "LoRa設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -19601,6 +19799,12 @@ "value" : "M5 Stack Card KB / Tastiera RAK" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "M5 Stack Card KB / RAK キーパッド" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20443,6 +20647,12 @@ "value" : "Messaggio ricevuto dall'app messaggi di testo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テキストメッセージアプリからメッセージを受信しました。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -20882,6 +21092,12 @@ "value" : "Tempo minimo tra le trasmissioni di rilevamento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出ブロードキャスト間の最小時間" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -20904,6 +21120,12 @@ "value" : "Tempo minimo tra le trasmissioni di rilevamento. L'impostazione predefinita è 45 secondi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検出ブロードキャスト間の最小時間。デフォルトは45秒です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -21174,6 +21396,12 @@ "value" : "La maggior parte dei dati sulla rete viene inviata attraverso il canale principale. È 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/)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッシュ上のほとんどのデータはプライマリチャンネル経由で送信されます。セカンダリチャンネルを設定して、独自のキーで保護された追加のメッセージグループを作成できます。[チャンネル設定のヒント](https://meshtastic.org/docs/configuration/tips/)" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -22880,6 +23108,12 @@ "value" : "Backup dei dati del nucleo del nodo %1$@/%2$@ - %3$@ - %4$@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードコアデータバックアップ %1$@/%2$@ - %3$@ - %4$@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23022,6 +23256,12 @@ "value" : "Ricevute informazioni sul nodo per: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード情報を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -23102,6 +23342,12 @@ "value" : "Numero di nodo" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード番号" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -23200,6 +23446,12 @@ "value" : "Nodi (%@)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード (%@)" + } + }, "pl" : { "stringUnit" : { "state" : "translated", From 8acbeb9fc3ff7e103559405c706699cd815cf4fe Mon Sep 17 00:00:00 2001 From: kanakonagiri Date: Tue, 24 Jun 2025 16:49:24 +0900 Subject: [PATCH 04/35] =?UTF-8?q?add:=20=E6=97=A5=E6=9C=AC=E8=AA=9E?= =?UTF-8?q?=E8=A8=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Localizable.xcstrings | 444 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 442 insertions(+), 2 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index f8d14a08..88ce2249 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -5914,7 +5914,15 @@ } }, "Bytes Used" : { - "comment" : "VoiceOver value for bytes used" + "comment" : "VoiceOver value for bytes used", + "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "使用バイト" + } + } + } }, "Call Sign" : { "localizations" : { @@ -8503,7 +8511,7 @@ "ja" : { "stringUnit" : { "state" : "translated", - "value" : "%@ への接続が%d回の試行後に失敗しました。設定 > Bluetooth でデバイスを削除する必要があるかもしれません。" + "value" : "%d への接続が %@ 回の試行後に失敗しました。設定 > Bluetooth でデバイスを削除する必要があるかもしれません。" } }, "pl" : { @@ -24072,6 +24080,12 @@ "value" : "Per l'attivazione degli operatori con licenza è necessario il firmware 2.0.20 o superiore. Assicuratevi di consultare le normative locali e di contattare i coordinatori delle frequenze amatoriali locali per eventuali domande." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ライセンス取得者のオンボーディングにはファームウェア2.0.20以上が必要です。必ずお住まいの地域の規制を参照し、疑問がある場合は地域のアマチュア周波数コーディネーターにお問い合わせください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24320,6 +24334,12 @@ }, "Only permitted for SENSOR, TRACKER and TAK_TRACKER roles, this will inhibit all rebroadcasts, not unlike CLIENT_MUTE role." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SENSOR、TRACKER、TAK_TRACKERロールでのみ許可されており、CLIENT_MUTEロールと同様にすべての再ブロードキャストを抑制します。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -24370,6 +24390,12 @@ "value" : "Codice di localizzazione aperto (alias Codice Plus)" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オープンロケーションコード(プラスコード)" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -24416,6 +24442,12 @@ "value" : "Aprire le impostazioni" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定を開く" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -24536,6 +24568,12 @@ "value" : "Campi opzionali da includere quando si assemblano i messaggi di posizione. Più campi sono inclusi, più grande sarà il messaggio, con conseguente allungamento dei tempi di trasmissione e un maggiore rischio di perdita di pacchetti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置メッセージを組み立てる際に含めるオプションフィールド。含めるフィールドが多いほどメッセージが大きくなり、通信時間が長くなってパケット損失のリスクが高くなります。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -25886,6 +25924,12 @@ "value" : "Cacca" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "うんち" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -26206,6 +26250,12 @@ "value" : "Posizione Log %lld Punti" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置ログ %lld ポイント" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -26274,6 +26324,12 @@ "value" : "Posizione Pacchetto ricevuto dal nodo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード %@ から位置パケットを受信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28740,6 +28796,12 @@ "value" : "Richiesta amministratore legacy: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "レガシー管理者要求: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28762,6 +28824,12 @@ "value" : "Richiesta PKI Admin: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PKI管理者要求: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28796,6 +28864,12 @@ "value" : "Messaggi in scatola richiesti Messaggi del modulo per il nodo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード %@ の定型メッセージモジュールメッセージを要求しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -28870,6 +28944,12 @@ "value" : "Ripristino delle impostazioni dell'app" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリ設定をリセット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -28904,6 +28984,12 @@ "value" : "Azzeramento di NodeDB" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "NodeDBをリセット" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29340,6 +29426,12 @@ "value" : "Ringtone Transfer Language(RTTTL) Stringa di suoneria utilizzata dai cicalini supportati nelle notifiche esterne." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "外部通知でサポートされているブザーで使用されるRingtone Transfer Language(RTTTL)着信音文字列。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29420,6 +29512,12 @@ "value" : "Ruolo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "役割: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29538,6 +29636,12 @@ "value" : "Percorso di ritorno: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルート(復路): %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29560,6 +29664,12 @@ "value" : "Linee di percorso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルートライン" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29582,6 +29692,12 @@ "value" : "Registratore di percorso" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルートレコーダー" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29604,6 +29720,12 @@ "value" : "Registrazione del percorso in pausa" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルート記録を一時停止" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -29780,6 +29902,12 @@ "value" : "Routing ricevuto per RequestID: %@ Ack Status: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リクエストID %@ のルーティングを受信、応答ステータス: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -29922,6 +30050,12 @@ "value" : "RTTTL Configurazione suoneria ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RTTTL着信音設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -30006,6 +30140,12 @@ }, "Same as behavior as ALL but skips packet decoding and simply rebroadcasts them. Only available in Repeater role. Setting this on any other roles will result in ALL behavior." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ALLと同じ動作ですが、パケットのデコードをスキップして単純に再ブロードキャストします。リピーター役割でのみ利用可能です。他の役割で設定するとALLの動作になります。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -31124,6 +31264,12 @@ "value" : "Invia ${messaggioContenuto} a ${canaleNumero}" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "${messageContent} をチャンネル ${channelNumber} に送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31146,6 +31292,12 @@ "value" : "Invia ${messaggioContenuto} a ${nodoNumero}" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "${messageContent} をノード ${nodeNumber} に送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31230,6 +31382,12 @@ "value" : "Invia un heartbeat per pubblicizzare la presenza del server." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サーバーの存在を通知するためのハートビートを送信します。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -31246,6 +31404,12 @@ "value" : "Inviare un messaggio a un certo canale meshtastic" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "特定のMeshtasticチャンネルにメッセージを送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31268,6 +31432,12 @@ "value" : "Inviare un messaggio a un certo nodo meshtastico" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "特定のMeshtasticノードにメッセージを送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31290,6 +31460,12 @@ "value" : "Invia una posizione sul canale principale quando si fa triplo clic sul pulsante utente." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザーボタンが3回クリックされたときにプライマリチャンネルで位置を送信します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31358,6 +31534,12 @@ "value" : "Inviare un waypoint" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウェイポイントを送信" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31380,6 +31562,12 @@ "value" : "Invia una campana ASCII con un messaggio di avviso. Utile per attivare notifiche esterne alla ricezione della campana." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アラートメッセージ付きASCIIベルを送信。ベルでの外部通知のトリガーに便利です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -31752,6 +31940,12 @@ "value" : "Inviato un LoRa.Config per: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ にLoRa設定を送信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31811,6 +32005,12 @@ "value" : "Inviato un pacchetto di posizione dal GPS del dispositivo Apple al nodo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "AppleデバイスのGPSからノード %@ に位置パケットを送信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31869,6 +32069,12 @@ "value" : "Ha inviato una richiesta di tracciamento della rotta al nodo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノード %@ にトレースルート要求を送信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31927,6 +32133,12 @@ "value" : "Inviato un pacchetto Waypoint da: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ からウェイポイントパケットを送信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -31985,6 +32197,12 @@ "value" : "Inviato messaggio %@ da %@ a %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッセージ %@ を %@ から %@ に送信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -32065,6 +32283,12 @@ "value" : "Sequenza: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "シーケンス: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32249,6 +32473,12 @@ "value" : "Console seriale tramite l'API Stream." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stream API経由のシリアルコンソール。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -32583,6 +32813,12 @@ "value" : "Imposta il numero massimo di hop, l'impostazione predefinita è 3. L'aumento degli hop aumenta anche la congestione e deve essere usato con attenzione. I messaggi di broadcasting a un hop non riceveranno ACK." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最大ホップ数を設定します。デフォルトは3です。ホップ数を増やすと輻輳も増加するため、慎重に使用してください。0ホップのブロードキャストメッセージはACKを受信しません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -33221,6 +33457,12 @@ "value" : "Mostra sulla mappa della mesh." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メッシュマップに表示。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34267,6 +34509,12 @@ "value" : "Salva & Inoltra" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "蓄積転送" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34295,6 +34543,12 @@ "value" : "Configurazione Salva & Inoltra" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "蓄積転送設定" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34335,6 +34589,12 @@ "value" : "Configurazione del modulo Store & Forward ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "蓄積転送モジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -34375,6 +34635,12 @@ "value" : "I server Store and Forward richiedono un dispositivo ESP32 con PSRAM o Linux Native." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "蓄積転送サーバーには、PSRAM搭載のESP32デバイスまたはLinux Nativeが必要です。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -34487,6 +34753,12 @@ "value" : "I sensori I2C supportati vengono rilevati automaticamente: BMP280, BME280, BME680, MCP9808, INA219, INA260, LPS22 e SHTC3." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "サポートされているI2C接続センサーは自動的に検出されます。センサーはBMP280、BME280、BME680、MCP9808、INA219、INA260、LPS22、およびSHTC3です。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -34899,6 +35171,12 @@ "value" : "Configurazione del modulo di telemetria ricevuta: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テレメトリーモジュール設定を受信しました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -34957,6 +35235,12 @@ "value" : "Telemetria ricevuta per: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ のテレメトリーを受信しました" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -35635,6 +35919,12 @@ "value" : "La chiave pubblica più recente di questo nodo non corrisponde alla chiave registrata in precedenza. È possibile eliminare il nodo e fargli scambiare nuovamente le chiavi, ma questo potrebbe indicare un problema di sicurezza più serio. Contattare l'utente attraverso un altro canale fidato per determinare se la modifica della chiave è dovuta a un reset di fabbrica o a un'altra azione intenzionale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このノードの最新の公開キーが以前記録されたキーと一致しません。ノードを削除して再度キー交換を行うことができますが、これはより深刻なセキュリティ問題を示している可能性もあります。信頼できる別のチャンネルを通じてユーザーに連絡し、キーの変更が工場リセットやその他の intentional action によるものかどうかを確認してください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -35767,6 +36057,12 @@ "value" : "La chiave pubblica non corrisponde alla chiave registrata. È possibile eliminare il nodo e fargli scambiare nuovamente le chiavi, ma questo potrebbe indicare un problema di sicurezza più serio. Contattare l'utente attraverso un altro canale fidato, per determinare se la modifica della chiave è dovuta a un reset di fabbrica o a un'altra azione intenzionale." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "公開キーが記録されたキーと一致しません。ノードを削除して再度キー交換を行うことができますが、これはより深刻なセキュリティ問題を示している可能性があります。信頼できる別のチャンネルを通じてユーザーに連絡し、キーの変更が工場リセットやその他の意図的な操作によるものかどうか確認してください。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -35863,6 +36159,12 @@ "value" : "I ruoli di router sono progettati per posizioni elevate, come le cime delle montagne e le torri. Questo nodo deve essere in grado di avere una buona connessione diretta con la maggior parte dei nodi della rete, altrimenti danneggia significativamente la rete." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルーター役割は山頂や塔のような見晴らしの良い高所での使用を想定して設計されています。このノードは、ネットワーク内の大部分のノードと良好な直接接続を保持できる必要があります。そうでなければ、ネットワークに深刻な影響を与えることになります。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -35981,6 +36283,12 @@ "value" : "La chiave pubblica terziaria autorizzata a inviare messaggi di amministrazione a questo nodo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このノードに管理メッセージを送信する権限を持つ三次公開キー。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36009,6 +36317,12 @@ "value" : "L'URL per le impostazioni del canale" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チャンネル設定のURL" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36025,6 +36339,12 @@ }, "The URL for the node to add" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "追加するノードのURL" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -36041,6 +36361,12 @@ "value" : "Non è stata data risposta a una richiesta di metadati del dispositivo sul canale di amministrazione per questo nodo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このノードの管理チャンネル経由でのデバイスメタデータ要求に対する応答がありません。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36063,6 +36389,12 @@ "value" : "Queste impostazioni saranno %@ canali. La configurazione LoRa corrente verrà sostituita; se vengono apportate modifiche sostanziali alla configurazione LoRa, il dispositivo si riavvierà" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "これらの設定はチャンネルを%@します。現在のLoRa設定は置き換えられ、LoRa設定に大幅な変更があった場合、デバイスは再起動します" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36305,6 +36637,12 @@ "value" : "La risposta potrebbe richiedere un po' di tempo e verrà visualizzata nel registro delle rotte di tracciamento per il nodo a cui è stata inviata." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "これには時間がかかる場合があります。応答は送信先ノードのトレースルートログに表示されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36327,6 +36665,12 @@ "value" : "Il dispositivo invia messaggi di test di portata all'intervallo selezionato." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このデバイスは選択した間隔でレンジテストメッセージを送信します。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36411,6 +36755,12 @@ "value" : "In questo modo si disattiva la posizione fissa e si rimuove la posizione attualmente impostata." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "これにより固定位置が無効になり、現在設定されている位置が削除されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36433,6 +36783,12 @@ "value" : "In questo modo si invia la posizione corrente dal telefono e si abilita la posizione fissa." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "これにより、お使いの携帯電話から現在位置を送信し、固定位置を有効にします。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -36607,6 +36963,12 @@ "value" : "Pollici in giù" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "👎" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -36665,6 +37027,12 @@ "value" : "Pollici in su" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "👍" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -36813,6 +37181,12 @@ "value" : "Fuso orario per le date sullo schermo del dispositivo e sul registro." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デバイス画面とログの日付用タイムゾーン。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -37019,6 +37393,12 @@ }, "To comply with privacy laws like CCPA and GDPR, we avoid sharing exact location data. Instead, we use anonymized or approximate (imprecise) location information to protect your privacy." : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "CCPAやGDPRなどのプライバシー法に準拠するため、正確な位置データの共有は避けています。代わりに、あなたのプライバシーを保護するために匿名化または近似(不正確)の位置情報を使用します。" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -37035,6 +37415,12 @@ "value" : "Argomento: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トピック: %@" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -37147,6 +37533,12 @@ }, "Trace Route (in %@s)" : { "localizations" : { + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルート(%@秒)" + } + }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", @@ -37209,6 +37601,12 @@ "value" : "Traccia Richiesta di rotta restituita: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルート要求が返されました: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -37277,6 +37675,12 @@ "value" : "Traccia del percorso inviato a %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ にトレースルートを送信しました" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -37299,6 +37703,12 @@ "value" : "La rotta di tracciamento verso %@ non è stata inviata." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ へのトレースルートは送信されませんでした。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -39811,6 +40221,12 @@ "value" : "In attesa di essere riconosciuti. . ." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "承認待ち. . ." + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -39833,6 +40249,12 @@ "value" : "Svegliare lo schermo al tocco o al movimento" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タップまたはモーションで画面を起動" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -39997,6 +40419,12 @@ "value" : "Pacchetto Waypoint ricevuto dal nodo: %@" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ノードから受信したウェイポイント パケット: %@" + } + }, "pl" : { "stringUnit" : { "state" : "translated", @@ -40281,6 +40709,12 @@ "value" : "Quando è abilitato, il modulo PAX Counter conta il numero di persone che passano utilizzando il WiFi e il Bluetooth. Per il funzionamento del contatore PAX, sia il WiFI che il Bluetooth devono essere disattivati." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAXカウンターモジュールを有効にすると、WiFiとBluetoothを使用して通過する人数をカウントします。PAXカウンターを動作させるには、WiFiとBluetoothの両方を無効にする必要があります。" + } + }, "se" : { "stringUnit" : { "state" : "translated", @@ -40451,6 +40885,12 @@ "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." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トラッカーとセンサーの役割では、lora無線も含め、すべてのデバイスを可能な限りスリープ状態にします。デバイスをスマートフォンアプリと連携させたい場合、またはユーザーボタンのないデバイスを使用している場合は、この設定を使用しないでください。" + } + }, "pl" : { "stringUnit" : { "state" : "translated", From 344b7780e00a5f7d59b3f901388b3127f524e698 Mon Sep 17 00:00:00 2001 From: kanakonagiri Date: Tue, 24 Jun 2025 16:53:59 +0900 Subject: [PATCH 05/35] =?UTF-8?q?add:=20=E6=97=A5=E6=9C=AC=E8=AA=9E?= =?UTF-8?q?=E8=A8=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Localizable.xcstrings | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 88ce2249..f1044d13 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -37731,6 +37731,12 @@ "value" : "La rotta di traccia era limitata dalla velocità. È possibile inviare una rotta di tracciamento al massimo una volta ogni trenta secondi." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "トレースルートの送信レートが制限されました。トレースルートは30秒ごとに最大1回送信できます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -39313,6 +39319,12 @@ "value" : "Utilizzare un'uscita PWM (come il cicalino RAK) per le sintonie invece di un'uscita on/off. In questo modo si ignorano le impostazioni di uscita, durata e attivazione e si utilizza invece l'opzione GPIO del cicalino configurata dal dispositivo." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オン/オフ出力ではなく、PWM出力(RAKブザーなど)をチューンに使用してください。これにより、出力、出力時間、アクティブ設定は無視され、代わりにデバイス設定のブザーGPIOオプションが使用されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -39447,6 +39459,12 @@ "value" : "Si usa per creare una chiave condivisa con un dispositivo remoto." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リモート デバイスとの共有キーを作成するために使用されます。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", @@ -39879,6 +39897,12 @@ "value" : "La versione %1$@ include sostanziali ottimizzazioni di rete e modifiche estese ai dispositivi e alle applicazioni client. Sono supportati solo i nodi versione %2$@ e superiori." } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バージョン%1$@には、ネットワークの大幅な最適化と、デバイスおよびクライアントアプリへの広範な変更が含まれています。サポートされるノードはバージョン%2$@以降のみです。" + } + }, "sr" : { "stringUnit" : { "state" : "translated", From 5c08f815506b876076ac103dcfc389acc8033320 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 27 Jun 2025 15:56:03 -0700 Subject: [PATCH 06/35] Check if a user has moved 9 meters for the position log instead of 15 in case they have set the value to 10 meters --- Meshtastic/Persistence/UpdateCoreData.swift | 2 +- protobufs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Persistence/UpdateCoreData.swift b/Meshtastic/Persistence/UpdateCoreData.swift index 6d085b21..63629137 100644 --- a/Meshtastic/Persistence/UpdateCoreData.swift +++ b/Meshtastic/Persistence/UpdateCoreData.swift @@ -454,7 +454,7 @@ func upsertPositionPacket (packet: MeshPacket, context: NSManagedObjectContext) } /// Don't save nearly the same position over and over. If the next position is less than 10 meters from the new position, delete the previous position and save the new one. if mutablePositions.count > 0 && (position.precisionBits == 32 || position.precisionBits == 0) { - if let mostRecent = mutablePositions.lastObject as? PositionEntity, mostRecent.coordinate.distance(from: position.coordinate) < 15.0 { + if let mostRecent = mutablePositions.lastObject as? PositionEntity, mostRecent.coordinate.distance(from: position.coordinate) < 9.0 { mutablePositions.remove(mostRecent) } } else if mutablePositions.count > 0 { diff --git a/protobufs b/protobufs index 816595c8..27fac391 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 816595c8bbdfc3b4388e11348ccd043294d58705 +Subproject commit 27fac39141d99fe727a0a1824c5397409b1aea75 From 1778edbad1f676993cd2e903c8a6639fcbdfca54 Mon Sep 17 00:00:00 2001 From: whywilson Date: Mon, 30 Jun 2025 14:20:06 +0800 Subject: [PATCH 07/35] Fix showing canned messages --- Meshtastic/Helpers/MeshPackets.swift | 5 +---- .../Views/Settings/Config/Module/CannedMessagesConfig.swift | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 89d79f60..304865dc 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -504,9 +504,6 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { if adminMessage.payloadVariant == AdminMessage.OneOf_PayloadVariant.getCannedMessageModuleMessagesResponse(adminMessage.getCannedMessageModuleMessagesResponse) { if let cmmc = try? CannedMessageModuleConfig(serializedBytes: packet.decoded.payload) { - - if !cmmc.messages.isEmpty { - let logString = String.localizedStringWithFormat("Canned Messages Messages Received For: %@".localized, packet.from.toHex()) Logger.mesh.info("🥫 \(logString, privacy: .public)") @@ -520,6 +517,7 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { .replacingOccurrences(of: "11: ", with: "") .replacingOccurrences(of: "\"", with: "") .trimmingCharacters(in: .whitespacesAndNewlines) + .components(separatedBy: "\n")[0] fetchedNode[0].cannedMessageConfig?.messages = messages do { try context.save() @@ -533,7 +531,6 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { } catch { Logger.data.error("💥 Error Deserializing ADMIN_APP packet.") } - } } } else if adminMessage.payloadVariant == AdminMessage.OneOf_PayloadVariant.getChannelResponse(adminMessage.getChannelResponse) { channelPacket(channel: adminMessage.getChannelResponse, fromNum: Int64(packet.from), context: context) diff --git a/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift b/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift index 941ed3fd..28ec19ad 100644 --- a/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift @@ -79,6 +79,7 @@ struct CannedMessagesConfig: View { totalBytes = messages.utf8.count } hasMessagesChanges = true + hasChanges = true } .foregroundColor(.gray) } From 43dd906f86b011778876001808d670a2959ca6f6 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 30 Jun 2025 08:58:38 -0700 Subject: [PATCH 08/35] Bump version --- Meshtastic.xcodeproj/project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 84c37c28..d11194bd 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -1823,12 +1823,12 @@ INFOPLIST_FILE = Meshtastic/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Meshtastic; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; - IPHONEOS_DEPLOYMENT_TARGET = 17.3; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.6.10; + MARKETING_VERSION = 2.6.11; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -1856,12 +1856,12 @@ INFOPLIST_FILE = Meshtastic/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Meshtastic; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; - IPHONEOS_DEPLOYMENT_TARGET = 17.3; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.6.10; + MARKETING_VERSION = 2.6.11; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -1886,13 +1886,13 @@ INFOPLIST_FILE = Widgets/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Widgets; INFOPLIST_KEY_NSHumanReadableCopyright = ""; - IPHONEOS_DEPLOYMENT_TARGET = 17.3; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.6.10; + MARKETING_VERSION = 2.6.11; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1918,13 +1918,13 @@ INFOPLIST_FILE = Widgets/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Widgets; INFOPLIST_KEY_NSHumanReadableCopyright = ""; - IPHONEOS_DEPLOYMENT_TARGET = 17.3; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.6.10; + MARKETING_VERSION = 2.6.11; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; From 648a82ff6a1f2e850c06d501028c1a2627e67c30 Mon Sep 17 00:00:00 2001 From: Jake-B Date: Wed, 2 Jul 2025 09:20:35 -0400 Subject: [PATCH 09/35] fixed a typo in a comment --- Meshtastic/Helpers/MeshPackets.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 89d79f60..a6220792 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -15,7 +15,7 @@ import OSLog import ActivityKit #endif -// Simple extension to consicely pass values through a has_XXX boolean check +// Simple extension to concisely pass values through a has_XXX boolean check fileprivate extension Bool { func then(_ value: T) -> T? { self ? value : nil From 8af69fe57b76ab50a6439315b311f8faa0d41e89 Mon Sep 17 00:00:00 2001 From: Jake-B Date: Wed, 2 Jul 2025 09:31:56 -0400 Subject: [PATCH 10/35] Moved context access to @Environment --- .../Nodes/Helpers/Map/WaypointForm.swift | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Meshtastic/Views/Nodes/Helpers/Map/WaypointForm.swift b/Meshtastic/Views/Nodes/Helpers/Map/WaypointForm.swift index 5866e8ed..2f74d51f 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/WaypointForm.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/WaypointForm.swift @@ -14,6 +14,7 @@ import SwiftUI struct WaypointForm: View { @EnvironmentObject var bleManager: BLEManager + @Environment(\.managedObjectContext) var context @Environment(\.dismiss) private var dismiss @State var waypoint: WaypointEntity let distanceFormatter = MKDistanceFormatter() @@ -210,11 +211,11 @@ struct WaypointForm: View { Menu { Button("For me", action: { - bleManager.context.delete(waypoint) + context.delete(waypoint) do { - try bleManager.context.save() + try context.save() } catch { - bleManager.context.rollback() + context.rollback() } dismiss() }) Button("For everyone", action: { @@ -239,11 +240,11 @@ struct WaypointForm: View { newWaypoint.expire = UInt32(1) if bleManager.sendWaypoint(waypoint: newWaypoint) { - bleManager.context.delete(waypoint) + context.delete(waypoint) do { - try bleManager.context.save() + try context.save() } catch { - bleManager.context.rollback() + context.rollback() } dismiss() } else { @@ -384,11 +385,11 @@ struct WaypointForm: View { } .alert("Waypoint Failed to Send", isPresented: $waypointFailedAlert) { Button("OK", role: .cancel) { - bleManager.context.delete(waypoint) + context.delete(waypoint) do { - try bleManager.context.save() + try context.save() } catch { - bleManager.context.rollback() + context.rollback() } dismiss() } @@ -396,18 +397,18 @@ struct WaypointForm: View { .onDisappear { if waypoint.id == 0 { // New, unsent waypoint created by the user: delete it - bleManager.context.delete(waypoint) + context.delete(waypoint) do { - try bleManager.context.save() + try context.save() } catch { - bleManager.context.rollback() + context.rollback() Logger.mesh.error("Failed to save context on waypoint deletion: \(error)") } } } .onAppear { if waypoint.id > 0 { - let waypoint = getWaypoint(id: Int64(waypoint.id), context: bleManager.context) + let waypoint = getWaypoint(id: Int64(waypoint.id), context: context) name = waypoint.name ?? "Dropped Pin" description = waypoint.longDescription ?? "" icon = String(UnicodeScalar(Int(waypoint.icon)) ?? "📍") From 12c8cd95663c9d8926721063f7f00569c2badabc Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 3 Jul 2025 19:32:56 -0500 Subject: [PATCH 11/35] Datadog monitoring --- Meshtastic.xcodeproj/project.pbxproj | 41 +++++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 29 ++++++++++++- Meshtastic/MeshtasticApp.swift | 25 +++++++++++ MeshtasticProtobufs/Package.resolved | 15 +++++++ 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 MeshtasticProtobufs/Package.resolved diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index d11194bd..4b50b09f 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 102B5EAB2E172F41003D191E /* DatadogCore in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EAA2E172F41003D191E /* DatadogCore */; }; + 102B5EAD2E172F41003D191E /* DatadogCrashReporting in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EAC2E172F41003D191E /* DatadogCrashReporting */; }; + 102B5EAF2E172F41003D191E /* DatadogLogs in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EAE2E172F41003D191E /* DatadogLogs */; }; + 102B5EB12E172F41003D191E /* DatadogRUM in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EB02E172F41003D191E /* DatadogRUM */; }; 108FFECB2DD3F43C00BFAA81 /* ShareContactQRDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 108FFECA2DD3F43C00BFAA81 /* ShareContactQRDialog.swift */; }; 108FFECD2DD4005600BFAA81 /* NodeInfoEntityToNodeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 108FFECC2DD4005600BFAA81 /* NodeInfoEntityToNodeInfo.swift */; }; 231B3F212D087A4C0069A07D /* MetricTableColumn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231B3F202D087A4C0069A07D /* MetricTableColumn.swift */; }; @@ -592,7 +596,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 102B5EAD2E172F41003D191E /* DatadogCrashReporting in Frameworks */, 25A978BA2C13F8ED0003AAE7 /* MeshtasticProtobufs in Frameworks */, + 102B5EAB2E172F41003D191E /* DatadogCore in Frameworks */, + 102B5EAF2E172F41003D191E /* DatadogLogs in Frameworks */, + 102B5EB12E172F41003D191E /* DatadogRUM in Frameworks */, DD0D3D222A55CEB10066DB71 /* CocoaMQTT in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1236,6 +1244,10 @@ packageProductDependencies = ( DD0D3D212A55CEB10066DB71 /* CocoaMQTT */, 25A978B92C13F8ED0003AAE7 /* MeshtasticProtobufs */, + 102B5EAA2E172F41003D191E /* DatadogCore */, + 102B5EAC2E172F41003D191E /* DatadogCrashReporting */, + 102B5EAE2E172F41003D191E /* DatadogLogs */, + 102B5EB02E172F41003D191E /* DatadogRUM */, ); productName = MeshtasticClient; productReference = DDC2E15426CE248E0042C5E4 /* Meshtastic.app */; @@ -1305,6 +1317,7 @@ DD0D3D202A55CEB10066DB71 /* XCRemoteSwiftPackageReference "CocoaMQTT" */, 25A978B82C13F8ED0003AAE7 /* XCLocalSwiftPackageReference "MeshtasticProtobufs" */, 259792242C2F10B600AD1659 /* XCRemoteSwiftPackageReference "swift-protobuf" */, + 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */, ); productRefGroup = DDC2E15526CE248E0042C5E4 /* Products */; projectDirPath = ""; @@ -1985,6 +1998,14 @@ /* End XCLocalSwiftPackageReference section */ /* Begin XCRemoteSwiftPackageReference section */ + 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/DataDog/dd-sdk-ios.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.29.0; + }; + }; 259792242C2F10B600AD1659 /* XCRemoteSwiftPackageReference "swift-protobuf" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-protobuf.git"; @@ -2004,6 +2025,26 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 102B5EAA2E172F41003D191E /* DatadogCore */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogCore; + }; + 102B5EAC2E172F41003D191E /* DatadogCrashReporting */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogCrashReporting; + }; + 102B5EAE2E172F41003D191E /* DatadogLogs */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogLogs; + }; + 102B5EB02E172F41003D191E /* DatadogRUM */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogRUM; + }; 25A978B92C13F8ED0003AAE7 /* MeshtasticProtobufs */ = { isa = XCSwiftPackageProductDependency; productName = MeshtasticProtobufs; diff --git a/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8cb1b6ba..68276229 100644 --- a/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "a3033aea781828906c453276e3723177901ce64df5757de7ada28c854c9662eb", + "originHash" : "0dabe052e9e56f8514254d01df9aa7245e16b28a649d59bac6781d4ac9a79efa", "pins" : [ { "identity" : "cocoamqtt", @@ -10,6 +10,15 @@ "version" : "2.1.8" } }, + { + "identity" : "dd-sdk-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/DataDog/dd-sdk-ios.git", + "state" : { + "revision" : "d0a42d8067665cb6ee86af51251ccc071f62bd54", + "version" : "2.29.0" + } + }, { "identity" : "mqttcocoaasyncsocket", "kind" : "remoteSourceControl", @@ -19,6 +28,24 @@ "version" : "1.0.8" } }, + { + "identity" : "opentelemetry-swift-packages", + "kind" : "remoteSourceControl", + "location" : "https://github.com/DataDog/opentelemetry-swift-packages.git", + "state" : { + "revision" : "4a7295600d4ebb9525a23c11586c5fdb74ae8b7e", + "version" : "1.13.1" + } + }, + { + "identity" : "plcrashreporter", + "kind" : "remoteSourceControl", + "location" : "https://github.com/microsoft/plcrashreporter.git", + "state" : { + "revision" : "8c61e5e38e9f737dd68512ed1ea5ab081244ad65", + "version" : "1.12.0" + } + }, { "identity" : "starscream", "kind" : "remoteSourceControl", diff --git a/Meshtastic/MeshtasticApp.swift b/Meshtastic/MeshtasticApp.swift index b87aeee3..22ea61f3 100644 --- a/Meshtastic/MeshtasticApp.swift +++ b/Meshtastic/MeshtasticApp.swift @@ -5,6 +5,9 @@ import CoreData import OSLog import TipKit import MeshtasticProtobufs +import DatadogCore +import DatadogCrashReporting +import DatadogRUM @main struct MeshtasticAppleApp: App { @@ -26,6 +29,28 @@ struct MeshtasticAppleApp: App { let appState = AppState( router: Router() ) + // Initialize Datadog + // RUM Client Tokens are NOT secret + let appID = "79fe92a9-74c9-4c8f-ba63-6308384ecfa9" + let clientToken = "pub4427bea20dbdb08a6af68034de22cd3b" + let environment = "testflight" + + Datadog.initialize( + with: Datadog.Configuration( + clientToken: clientToken, + env: environment, + site: .us5 + ), + trackingConsent: .granted + ) + + RUM.enable( + with: RUM.Configuration( + applicationID: appID, + uiKitViewsPredicate: DefaultUIKitRUMViewsPredicate(), + uiKitActionsPredicate: DefaultUIKitRUMActionsPredicate() + ) + ) self._appState = ObservedObject(wrappedValue: appState) // Initialize the BLEManager singleton with the necessary dependencies BLEManager.setup(appState: appState, context: persistenceController.container.viewContext) diff --git a/MeshtasticProtobufs/Package.resolved b/MeshtasticProtobufs/Package.resolved new file mode 100644 index 00000000..a679a95e --- /dev/null +++ b/MeshtasticProtobufs/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "a2385deee281bd55bce80722a1f2b020f7b745c02005befa8ccbf58a39ef4002", + "pins" : [ + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "d72aed98f8253ec1aa9ea1141e28150f408cf17f", + "version" : "1.29.0" + } + } + ], + "version" : 3 +} From b877aafc3f5fe8df7cd84a6421da16b9e6b475dd Mon Sep 17 00:00:00 2001 From: Mathew Kamkar <578302+matkam@users.noreply.github.com> Date: Sat, 5 Jul 2025 08:22:24 -0700 Subject: [PATCH 12/35] only hide unmonitored nodes when no messages --- Meshtastic/Views/Messages/UserList.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Views/Messages/UserList.swift b/Meshtastic/Views/Messages/UserList.swift index 41642582..bd93b495 100644 --- a/Meshtastic/Views/Messages/UserList.swift +++ b/Meshtastic/Views/Messages/UserList.swift @@ -337,7 +337,8 @@ struct FilteredUserList: View { } } // Always apply unmessagable and connected node filters - let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO") + // Only hide unmessagable nodes if they have 0 messages + let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO AND (SUBQUERY(messageList, $msg, $msg.messageId != nil).@count == 0)") predicates.append(isUnmessagablePredicate) let isIgnoredPredicate = NSPredicate(format: "userNode.ignored == NO") predicates.append(isIgnoredPredicate) From 1e6cbcf06f2c19c7fa8a23f13b7329ecc500b3b2 Mon Sep 17 00:00:00 2001 From: Mathew Kamkar <578302+matkam@users.noreply.github.com> Date: Sat, 5 Jul 2025 10:49:10 -0700 Subject: [PATCH 13/35] fix crash --- Meshtastic/Views/Messages/UserList.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Views/Messages/UserList.swift b/Meshtastic/Views/Messages/UserList.swift index bd93b495..0798ffbf 100644 --- a/Meshtastic/Views/Messages/UserList.swift +++ b/Meshtastic/Views/Messages/UserList.swift @@ -337,8 +337,8 @@ struct FilteredUserList: View { } } // Always apply unmessagable and connected node filters - // Only hide unmessagable nodes if they have 0 messages - let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO AND (SUBQUERY(messageList, $msg, $msg.messageId != nil).@count == 0)") + // Show unmessagable nodes only if they have messages, otherwise hide them + let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO OR ((SUBQUERY(receivedMessages, $msg, $msg.messageId != nil).@count > 0) OR (SUBQUERY(sentMessages, $msg, $msg.messageId != nil).@count > 0))") predicates.append(isUnmessagablePredicate) let isIgnoredPredicate = NSPredicate(format: "userNode.ignored == NO") predicates.append(isIgnoredPredicate) From b85a0336edc4ffa658eb596bd388e1ce182e93f5 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 09:57:27 -0500 Subject: [PATCH 14/35] Less forced unwrapping of connectedPeripherals to resolve crashes --- Meshtastic/Helpers/BLEManager.swift | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 42561a4d..78a58ce9 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -499,7 +499,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate let traceRoute = TraceRouteEntity(context: context) let nodes = NodeInfoEntity.fetchRequest() - nodes.predicate = NSPredicate(format: "num IN %@", [destNum, self.connectedPeripheral.num]) + nodes.predicate = NSPredicate(format: "num IN %@", [destNum, self.connectedPeripheral?.num ?? 0]) do { let fetchedNodes = try context.fetch(nodes) let receivingNode = fetchedNodes.first(where: { $0.num == destNum }) @@ -803,16 +803,16 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate // Config if decodedInfo.config.isInitialized && !invalidVersion && connectedPeripheral != nil { nowKnown = true - localConfig(config: decodedInfo.config, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral.longName) + localConfig(config: decodedInfo.config, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") } // Module Config if decodedInfo.moduleConfig.isInitialized && !invalidVersion && self.connectedPeripheral?.num != 0 { onWantConfigResponseReceived() nowKnown = true - moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral.longName) + moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { - _ = self.getCannedMessageModuleMessages(destNum: self.connectedPeripheral.num, wantResponse: true) + _ = self.getCannedMessageModuleMessages(destNum: self.connectedPeripheral?.num ?? 0, wantResponse: true) } } } @@ -866,7 +866,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate case .nodeinfoApp: if !invalidVersion { upsertNodeInfoPacket(packet: decodedInfo.packet, context: context) } case .routingApp: - if !invalidVersion { routingPacket(packet: decodedInfo.packet, connectedNodeNum: self.connectedPeripheral.num, context: context) } + if !invalidVersion { routingPacket(packet: decodedInfo.packet, connectedNodeNum: self.connectedPeripheral?.num ?? 0, context: context) } case .adminApp: adminAppPacket(packet: decodedInfo.packet, context: context) case .replyApp: @@ -1174,7 +1174,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate success = false } else { - let fromUserNum: Int64 = self.connectedPeripheral.num + let fromUserNum: Int64 = self.connectedPeripheral?.num ?? 0 let messageUsers = UserEntity.fetchRequest() messageUsers.predicate = NSPredicate(format: "num IN %@", [fromUserNum, Int64(toUserNum)]) @@ -1230,7 +1230,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate newMessage.toUser?.userNode?.favorite = true do { try context.save() - Logger.data.info("💾 Auto favorited node bases on sending a message \(self.connectedPeripheral.num.toHex(), privacy: .public) to \(toUserNum.toHex(), privacy: .public)") + Logger.data.info("💾 Auto favorited node bases on sending a message \(self.connectedPeripheral?.num.toHex() ?? "0", privacy: .public) to \(toUserNum.toHex(), privacy: .public)") _ = self.setFavoriteNode(node: (newMessage.toUser?.userNode)!, connectedNodeNum: fromUserNum) } catch { context.rollback() @@ -1267,7 +1267,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate Logger.mesh.info("💬 \(logString, privacy: .public)") do { try context.save() - Logger.data.info("💾 Saved a new sent message from \(self.connectedPeripheral.num.toHex(), privacy: .public) to \(toUserNum.toHex(), privacy: .public)") + Logger.data.info("💾 Saved a new sent message from \(self.connectedPeripheral?.num.toHex() ?? "0", privacy: .public) to \(toUserNum.toHex(), privacy: .public)") success = true } catch { @@ -1278,7 +1278,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate } } } catch { - Logger.data.error("💥 Send message failure \(self.connectedPeripheral.num.toHex(), privacy: .public) to \(toUserNum.toHex(), privacy: .public)") + Logger.data.error("💥 Send message failure \(self.connectedPeripheral?.num.toHex() ?? "0", privacy: .public) to \(toUserNum.toHex(), privacy: .public)") } } return success @@ -1495,11 +1495,15 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate } public func sendTime() -> Bool { + if self.connectedPeripheral?.num ?? 0 <= 0 { + Logger.mesh.error("🚫 Unable to send time, connected node is disconnected or invalid") + return false + } var adminPacket = AdminMessage() adminPacket.setTimeOnly = UInt32(Date().timeIntervalSince1970) var meshPacket: MeshPacket = MeshPacket() - meshPacket.to = UInt32(self.connectedPeripheral.num) - meshPacket.from = UInt32(self.connectedPeripheral.num) + meshPacket.to = UInt32(self.connectedPeripheral?.num ?? 0) + meshPacket.from = UInt32(self.connectedPeripheral?.num ?? 0) meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. Date: Mon, 7 Jul 2025 10:46:57 -0500 Subject: [PATCH 15/35] Update Meshtastic/Helpers/BLEManager.swift Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 78a58ce9..2cfc90dd 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -812,7 +812,9 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { - _ = self.getCannedMessageModuleMessages(destNum: self.connectedPeripheral?.num ?? 0, wantResponse: true) + if let validNum = self.connectedPeripheral?.num, validNum > 0 { + _ = self.getCannedMessageModuleMessages(destNum: validNum, wantResponse: true) + } } } } From 30d150e3aa14765f623abb3fa269119e53c3224f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 10:49:52 -0500 Subject: [PATCH 16/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 2cfc90dd..e7cc671a 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -499,7 +499,11 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate let traceRoute = TraceRouteEntity(context: context) let nodes = NodeInfoEntity.fetchRequest() - nodes.predicate = NSPredicate(format: "num IN %@", [destNum, self.connectedPeripheral?.num ?? 0]) + if let connectedNum = self.connectedPeripheral?.num { + nodes.predicate = NSPredicate(format: "num IN %@", [destNum, connectedNum]) + } else { + nodes.predicate = NSPredicate(format: "num == %@", destNum) + } do { let fetchedNodes = try context.fetch(nodes) let receivingNode = fetchedNodes.first(where: { $0.num == destNum }) From 6b262aa44837766c4bed2799ea1e01095e42635d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 10:50:18 -0500 Subject: [PATCH 17/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index e7cc671a..96268569 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -872,7 +872,13 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate case .nodeinfoApp: if !invalidVersion { upsertNodeInfoPacket(packet: decodedInfo.packet, context: context) } case .routingApp: - if !invalidVersion { routingPacket(packet: decodedInfo.packet, connectedNodeNum: self.connectedPeripheral?.num ?? 0, context: context) } + if !invalidVersion { + guard let connectedPeripheral = self.connectedPeripheral else { + Logger.mesh.error("🕸️ connectedPeripheral is nil. Unable to determine connectedNodeNum for routingPacket.") + return + } + routingPacket(packet: decodedInfo.packet, connectedNodeNum: connectedPeripheral.num, context: context) + } case .adminApp: adminAppPacket(packet: decodedInfo.packet, context: context) case .replyApp: From c8c79abb9e3d678a6f6d1744ac3ea0f60785f83c Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 10:50:30 -0500 Subject: [PATCH 18/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 96268569..b5d12ae9 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1186,7 +1186,10 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate success = false } else { - let fromUserNum: Int64 = self.connectedPeripheral?.num ?? 0 + guard let fromUserNum = self.connectedPeripheral?.num else { + Logger.mesh.error("🚫 Connected peripheral user number is nil, cannot send message.") + return false + } let messageUsers = UserEntity.fetchRequest() messageUsers.predicate = NSPredicate(format: "num IN %@", [fromUserNum, Int64(toUserNum)]) From 9f4653ab53245a58f53fe888afe5efd5934d4778 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 10:50:45 -0500 Subject: [PATCH 19/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index b5d12ae9..ab1c8cf9 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1245,7 +1245,11 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate newMessage.toUser?.userNode?.favorite = true do { try context.save() - Logger.data.info("💾 Auto favorited node bases on sending a message \(self.connectedPeripheral?.num.toHex() ?? "0", privacy: .public) to \(toUserNum.toHex(), privacy: .public)") + if let connectedPeripheral = self.connectedPeripheral { + Logger.data.info("💾 Auto favorited node based on sending a message \(connectedPeripheral.num.toHex(), privacy: .public) to \(toUserNum.toHex(), privacy: .public)") + } else { + Logger.data.warning("⚠️ connectedPeripheral is nil while attempting to log auto-favoriting a node.") + } _ = self.setFavoriteNode(node: (newMessage.toUser?.userNode)!, connectedNodeNum: fromUserNum) } catch { context.rollback() From ac61ce4b60eaf7db8825ee2b1236b7fff257f90e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 11:55:43 -0500 Subject: [PATCH 20/35] Prefer guards --- Meshtastic/Helpers/BLEManager.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index ab1c8cf9..eded69b0 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -805,15 +805,15 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate channelPacket(channel: decodedInfo.channel, fromNum: Int64(truncatingIfNeeded: connectedPeripheral.num), context: context) } // Config - if decodedInfo.config.isInitialized && !invalidVersion && connectedPeripheral != nil { + if decodedInfo.config.isInitialized && !invalidVersion && connectedPeripheral != nil && self.connectedPeripheral?.num > 0 { nowKnown = true - localConfig(config: decodedInfo.config, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") + localConfig(config: decodedInfo.config, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") } // Module Config if decodedInfo.moduleConfig.isInitialized && !invalidVersion && self.connectedPeripheral?.num != 0 { onWantConfigResponseReceived() nowKnown = true - moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") + moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { if let validNum = self.connectedPeripheral?.num, validNum > 0 { From b03ef7fa17b2d50572c95a64a8c9e008705c7a79 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 11:59:21 -0500 Subject: [PATCH 21/35] Comparison --- Meshtastic/Helpers/BLEManager.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index eded69b0..806084bb 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -805,7 +805,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate channelPacket(channel: decodedInfo.channel, fromNum: Int64(truncatingIfNeeded: connectedPeripheral.num), context: context) } // Config - if decodedInfo.config.isInitialized && !invalidVersion && connectedPeripheral != nil && self.connectedPeripheral?.num > 0 { + if decodedInfo.config.isInitialized && !invalidVersion && connectedPeripheral != nil && self.connectedPeripheral?.num != 0 { nowKnown = true localConfig(config: decodedInfo.config, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") } @@ -813,7 +813,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate if decodedInfo.moduleConfig.isInitialized && !invalidVersion && self.connectedPeripheral?.num != 0 { onWantConfigResponseReceived() nowKnown = true - moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") + moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { if let validNum = self.connectedPeripheral?.num, validNum > 0 { From 5168e7f1bfe161b582651a1ba8a6ce39e76d212f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 12:09:41 -0500 Subject: [PATCH 22/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 806084bb..4fe30485 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1250,7 +1250,11 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate } else { Logger.data.warning("⚠️ connectedPeripheral is nil while attempting to log auto-favoriting a node.") } - _ = self.setFavoriteNode(node: (newMessage.toUser?.userNode)!, connectedNodeNum: fromUserNum) + guard let userNode = newMessage.toUser?.userNode else { + Logger.data.warning("⚠️ Unable to set favorite node: userNode is nil.") + return + } + _ = self.setFavoriteNode(node: userNode, connectedNodeNum: fromUserNum) } catch { context.rollback() let nsError = error as NSError From ecf54a517717baa98bf74ed5bd0e2c97cf2e348a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 12:10:04 -0500 Subject: [PATCH 23/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 4fe30485..9fa19aab 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -873,11 +873,11 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate if !invalidVersion { upsertNodeInfoPacket(packet: decodedInfo.packet, context: context) } case .routingApp: if !invalidVersion { - guard let connectedPeripheral = self.connectedPeripheral else { + guard let peripheral = self.connectedPeripheral else { Logger.mesh.error("🕸️ connectedPeripheral is nil. Unable to determine connectedNodeNum for routingPacket.") return } - routingPacket(packet: decodedInfo.packet, connectedNodeNum: connectedPeripheral.num, context: context) + routingPacket(packet: decodedInfo.packet, connectedNodeNum: peripheral.num, context: context) } case .adminApp: adminAppPacket(packet: decodedInfo.packet, context: context) From c790836bba5c7a3378b027d7a3d61d71a38047ba Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 12:14:18 -0500 Subject: [PATCH 24/35] Fix --- Meshtastic/Helpers/BLEManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 9fa19aab..c1c26880 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1252,7 +1252,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate } guard let userNode = newMessage.toUser?.userNode else { Logger.data.warning("⚠️ Unable to set favorite node: userNode is nil.") - return + return false } _ = self.setFavoriteNode(node: userNode, connectedNodeNum: fromUserNum) } catch { From 8fea13edf1f939c6e6583d4d4d0a3a080b54f2fb Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 12:30:09 -0500 Subject: [PATCH 25/35] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/BLEManager.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index c1c26880..7b4c4237 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -816,8 +816,8 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate moduleConfig(config: decodedInfo.moduleConfig, context: context, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral?.longName ?? "Unknown") if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { - if let validNum = self.connectedPeripheral?.num, validNum > 0 { - _ = self.getCannedMessageModuleMessages(destNum: validNum, wantResponse: true) + if let connectedNum = self.connectedPeripheral?.num, connectedNum > 0 { + _ = self.getCannedMessageModuleMessages(destNum: connectedNum, wantResponse: true) } } } From e87348cc1936a74b2dc0c520e925195131d0b233 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 12:32:11 -0500 Subject: [PATCH 26/35] Unnecessary --- Meshtastic/Helpers/BLEManager.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 7b4c4237..720ff558 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1525,8 +1525,8 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate var adminPacket = AdminMessage() adminPacket.setTimeOnly = UInt32(Date().timeIntervalSince1970) var meshPacket: MeshPacket = MeshPacket() - meshPacket.to = UInt32(self.connectedPeripheral?.num ?? 0) - meshPacket.from = UInt32(self.connectedPeripheral?.num ?? 0) + meshPacket.to = UInt32(self.connectedPeripheral.num) + meshPacket.from = UInt32(self.connectedPeripheral.num) meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. Date: Mon, 7 Jul 2025 14:02:19 -0700 Subject: [PATCH 27/35] Unwrap first canned messages element --- Meshtastic/Helpers/MeshPackets.swift | 4 ++-- protobufs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index ee329f8c..58d58e14 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -517,11 +517,11 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { .replacingOccurrences(of: "11: ", with: "") .replacingOccurrences(of: "\"", with: "") .trimmingCharacters(in: .whitespacesAndNewlines) - .components(separatedBy: "\n")[0] + .components(separatedBy: "\n").first ?? "" fetchedNode[0].cannedMessageConfig?.messages = messages do { try context.save() - Logger.data.info("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num.toHex(), privacy: .public)") + Logger.data.info("💾 Updated Canned Messages Messages For: \(fetchedNode.first?.num.toHex() ?? "Unknown".localized), privacy: .public)") } catch { context.rollback() let nsError = error as NSError diff --git a/protobufs b/protobufs index 27fac391..816595c8 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 27fac39141d99fe727a0a1824c5397409b1aea75 +Subproject commit 816595c8bbdfc3b4388e11348ccd043294d58705 From 1d34f3293adad8ce294735d37fc5b76561256153 Mon Sep 17 00:00:00 2001 From: Mathew Kamkar <578302+matkam@users.noreply.github.com> Date: Mon, 7 Jul 2025 21:52:45 -0700 Subject: [PATCH 28/35] simplify Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Views/Messages/UserList.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic/Views/Messages/UserList.swift b/Meshtastic/Views/Messages/UserList.swift index 0798ffbf..4fd30445 100644 --- a/Meshtastic/Views/Messages/UserList.swift +++ b/Meshtastic/Views/Messages/UserList.swift @@ -338,7 +338,7 @@ struct FilteredUserList: View { } // Always apply unmessagable and connected node filters // Show unmessagable nodes only if they have messages, otherwise hide them - let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO OR ((SUBQUERY(receivedMessages, $msg, $msg.messageId != nil).@count > 0) OR (SUBQUERY(sentMessages, $msg, $msg.messageId != nil).@count > 0))") + let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO OR (receivedMessages.@count > 0 OR sentMessages.@count > 0)") predicates.append(isUnmessagablePredicate) let isIgnoredPredicate = NSPredicate(format: "userNode.ignored == NO") predicates.append(isIgnoredPredicate) From b2961edc533a301d1eb8f0046f883fc6ec65ed93 Mon Sep 17 00:00:00 2001 From: Mathew Kamkar <578302+matkam@users.noreply.github.com> Date: Mon, 7 Jul 2025 21:57:04 -0700 Subject: [PATCH 29/35] improved readability Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Views/Messages/UserList.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Views/Messages/UserList.swift b/Meshtastic/Views/Messages/UserList.swift index 4fd30445..6d20ec23 100644 --- a/Meshtastic/Views/Messages/UserList.swift +++ b/Meshtastic/Views/Messages/UserList.swift @@ -338,7 +338,9 @@ struct FilteredUserList: View { } // Always apply unmessagable and connected node filters // Show unmessagable nodes only if they have messages, otherwise hide them - let isUnmessagablePredicate = NSPredicate(format: "unmessagable == NO OR (receivedMessages.@count > 0 OR sentMessages.@count > 0)") + let unmessagablePredicate = NSPredicate(format: "unmessagable == NO") + let hasMessagesPredicate = NSPredicate(format: "receivedMessages.@count > 0 OR sentMessages.@count > 0") + let isUnmessagablePredicate = NSCompoundPredicate(type: .or, subpredicates: [unmessagablePredicate, hasMessagesPredicate]) predicates.append(isUnmessagablePredicate) let isIgnoredPredicate = NSPredicate(format: "userNode.ignored == NO") predicates.append(isIgnoredPredicate) From fc958d6b7d4fcc1a5ea08d4526e3ebf8ef6fd135 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 9 Jul 2025 10:08:25 -0700 Subject: [PATCH 30/35] Add a crash reporting opt out --- Localizable.xcstrings | 6 ++++++ Meshtastic/Extensions/UserDefaults.swift | 4 ++++ Meshtastic/MeshtasticApp.swift | 2 +- Meshtastic/Views/Settings/AppSettings.swift | 8 ++++++++ protobufs | 2 +- 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 219f123e..05e01396 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -22993,6 +22993,9 @@ } } } + }, + "Provide anonymous usage statistics and crash reports." : { + }, "Provide Confirmation" : { @@ -33157,6 +33160,9 @@ } } } + }, + "Usage and Crash Data" : { + }, "Use a PWM output (like the RAK Buzzer) for tunes instead of an on/off output. This will ignore the output, output duration and active settings and use the device config buzzer GPIO option instead." : { "localizations" : { diff --git a/Meshtastic/Extensions/UserDefaults.swift b/Meshtastic/Extensions/UserDefaults.swift index 11539ab2..0ca337e9 100644 --- a/Meshtastic/Extensions/UserDefaults.swift +++ b/Meshtastic/Extensions/UserDefaults.swift @@ -74,6 +74,7 @@ extension UserDefaults { case environmentEnableWeatherKit case enableAdministration case mapReportingOptIn + case usageDataAndCrashReporting case testIntEnum } @@ -155,6 +156,9 @@ extension UserDefaults { @UserDefault(.mapReportingOptIn, defaultValue: false) static var mapReportingOptIn: Bool + + @UserDefault(.usageDataAndCrashReporting, defaultValue: true) + static var usageDataAndCrashReporting: Bool @UserDefault(.testIntEnum, defaultValue: .one) static var testIntEnum: TestIntEnum diff --git a/Meshtastic/MeshtasticApp.swift b/Meshtastic/MeshtasticApp.swift index 22ea61f3..9ce07142 100644 --- a/Meshtastic/MeshtasticApp.swift +++ b/Meshtastic/MeshtasticApp.swift @@ -41,7 +41,7 @@ struct MeshtasticAppleApp: App { env: environment, site: .us5 ), - trackingConsent: .granted + trackingConsent: UserDefaults.usageDataAndCrashReporting ? .granted : .notGranted ) RUM.enable( diff --git a/Meshtastic/Views/Settings/AppSettings.swift b/Meshtastic/Views/Settings/AppSettings.swift index 93d1e8da..eeddf8d0 100644 --- a/Meshtastic/Views/Settings/AppSettings.swift +++ b/Meshtastic/Views/Settings/AppSettings.swift @@ -16,6 +16,7 @@ struct AppSettings: View { @AppStorage("purgeStaleNodeDays") private var purgeStaleNodeDays: Double = 0 @AppStorage("environmentEnableWeatherKit") private var environmentEnableWeatherKit: Bool = true @AppStorage("enableAdministration") private var enableAdministration: Bool = false + @AppStorage("usageDataAndCrashReporting") private var usageDataAndCrashReporting: Bool = true var body: some View { VStack { Form { @@ -33,6 +34,13 @@ struct AppSettings: View { Text("PKI based node administration, requires firmware version 2.5+") .foregroundStyle(.secondary) .font(.caption) + Toggle(isOn: $usageDataAndCrashReporting) { + Label("Usage and Crash Data", systemImage: "pencil.and.list.clipboard") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) + Text("Provide anonymous usage statistics and crash reports.") + .foregroundStyle(.secondary) + .font(.caption) } Section(header: Text("environment")) { VStack(alignment: .leading) { diff --git a/protobufs b/protobufs index 27fac391..816595c8 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 27fac39141d99fe727a0a1824c5397409b1aea75 +Subproject commit 816595c8bbdfc3b4388e11348ccd043294d58705 From dd707e070eb48c07d604ecd72970489d6a9a8a43 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 9 Jul 2025 12:08:44 -0700 Subject: [PATCH 31/35] Update device metadata messaging --- Meshtastic/Views/Settings/Config/ConfigHeader.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Views/Settings/Config/ConfigHeader.swift b/Meshtastic/Views/Settings/Config/ConfigHeader.swift index d1af3a6a..cb4f7aee 100644 --- a/Meshtastic/Views/Settings/Config/ConfigHeader.swift +++ b/Meshtastic/Views/Settings/Config/ConfigHeader.swift @@ -11,7 +11,7 @@ struct ConfigHeader: View { var body: some View { if node != nil && node?.metadata == nil && node?.num ?? 0 != bleManager.connectedPeripheral?.num ?? 0 { - Text("There has been no response to a request for device metadata over the admin channel for this node.") + Text("There has been no response to a request for device metadata via PKC admin for this node.") .font(.callout) .foregroundColor(.orange) @@ -19,7 +19,7 @@ struct ConfigHeader: View { // Let users know what is going on if they are using remote admin and don't have the config yet let expiration = node?.sessionExpiration ?? Date() if node?[keyPath: config] == nil || expiration < node?.sessionExpiration ?? Date() { - Text("\(title) config data was requested over the admin channel but no response has been returned from the remote node.") + Text("\(title) config data was requested via PKC admin but no response has been returned from the remote node.") .font(.callout) .foregroundColor(.orange) } else { From 9aa41b7c7330c5f62111221a2454cd282aaed549 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 9 Jul 2025 14:58:00 -0700 Subject: [PATCH 32/35] Update Meshtastic/Helpers/MeshPackets.swift Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Meshtastic/Helpers/MeshPackets.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 58d58e14..49eb61ee 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -521,7 +521,7 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { fetchedNode[0].cannedMessageConfig?.messages = messages do { try context.save() - Logger.data.info("💾 Updated Canned Messages Messages For: \(fetchedNode.first?.num.toHex() ?? "Unknown".localized), privacy: .public)") + Logger.data.info("💾 Updated Canned Messages Messages For: \(fetchedNode.first?.num.toHex(privacy: .public) ?? "Unknown".localized)") } catch { context.rollback() let nsError = error as NSError From 25256a27d8850f7849f4664a88edac060e8649e6 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 9 Jul 2025 15:03:51 -0700 Subject: [PATCH 33/35] Fix copilot screwup --- Meshtastic/Helpers/MeshPackets.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 49eb61ee..10a3d69b 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -521,7 +521,7 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { fetchedNode[0].cannedMessageConfig?.messages = messages do { try context.save() - Logger.data.info("💾 Updated Canned Messages Messages For: \(fetchedNode.first?.num.toHex(privacy: .public) ?? "Unknown".localized)") + Logger.data.info("💾 Updated Canned Messages Messages For: \(fetchedNode.first?.num.toHex() ?? "Unknown".localized, privacy: .public)") } catch { context.rollback() let nsError = error as NSError From 4bf5cd67f0d0ab3f2f41af032602a616b2466149 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 9 Jul 2025 15:04:52 -0700 Subject: [PATCH 34/35] localizable file updates --- Localizable.xcstrings | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 936806ab..1bd2d536 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -670,6 +670,7 @@ } }, "%@ config data was requested over the admin channel but no response has been returned from the remote node." : { + "extractionState" : "stale", "localizations" : { "it" : { "stringUnit" : { @@ -702,6 +703,9 @@ } } } + }, + "%@ config data was requested via PKC admin but no response has been returned from the remote node." : { + }, "%@ dB" : { "localizations" : { @@ -2043,6 +2047,7 @@ } }, "A channel index of 0 indicates the primary channel where all broadcast packets are sent from." : { + "extractionState" : "stale", "localizations" : { "ja" : { "stringUnit" : { @@ -2051,6 +2056,9 @@ } } } + }, + "A channel index of 0 indicates the primary channel where broadcast packets are sent from. Location data is broadcast from the first channel where it is enabled with firmware 2.7 forward." : { + }, "A green lock means the channel is securely encrypted with either a 128 or 256 bit AES key." : { "localizations" : { @@ -2127,6 +2135,7 @@ } }, "A red lock with a slash means the channel is not securely encrypted, it uses either no key at all or a 1 byte known key. Traffic on this channel is easily intercepted." : { + "extractionState" : "stale", "localizations" : { "ja" : { "stringUnit" : { @@ -2135,6 +2144,12 @@ } } } + }, + "A red open lock means the channel is not securely encrypted and is used for precise location data, it uses either no key at all or a 1 byte known key." : { + + }, + "A red open lock with a warning means the channel is not securely encrypted and is used for precise location data which is being uplinked to the internet via MQTT, it uses either no key at all or a 1 byte known key." : { + }, "A Trace Route was sent, no response has been received." : { "localizations" : { @@ -36384,6 +36399,7 @@ } }, "There has been no response to a request for device metadata over the admin channel for this node." : { + "extractionState" : "stale", "localizations" : { "it" : { "stringUnit" : { @@ -36410,6 +36426,9 @@ } } } + }, + "There has been no response to a request for device metadata via PKC admin for this node." : { + }, "These settings will %@ channels. The current LoRa Config will be replaced, if there are substantial changes to the LoRa config the device will reboot" : { "localizations" : { From 70ef1108cc44be559cd0864ccf905e8256ea79bb Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 9 Jul 2025 15:07:23 -0700 Subject: [PATCH 35/35] Delete stale keys --- Localizable.xcstrings | 167 ------------------------------------------ 1 file changed, 167 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 1bd2d536..c04d1475 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -669,41 +669,6 @@ } } }, - "%@ config data was requested over the admin channel but no response has been returned from the remote node." : { - "extractionState" : "stale", - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "i dati di configurazione %@ sono stati richiesti attraverso il canale di amministrazione, ma non è stata fornita alcuna risposta dal nodo remoto." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ 設定データが管理チャンネル経由で要求されましたが、リモートノードからの応答がありません。" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ конфигурациони подаци су затражени преко административног канала, али никакав одговор није враћен са удаљеног чвора." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "已通过管理频道请求 %@ 配置数据,但远程节点未返回任何响应。" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "透過管理通道請求 %@ 組態資料,但遠端節點未回應。" - } - } - } - }, "%@ config data was requested via PKC admin but no response has been returned from the remote node." : { }, @@ -2046,17 +2011,6 @@ } } }, - "A channel index of 0 indicates the primary channel where all broadcast packets are sent from." : { - "extractionState" : "stale", - "localizations" : { - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "チャンネルインデックス0は、すべてのブロードキャストパケットが送信されるプライマリチャンネルを示します。" - } - } - } - }, "A channel index of 0 indicates the primary channel where broadcast packets are sent from. Location data is broadcast from the first channel where it is enabled with firmware 2.7 forward." : { }, @@ -2134,17 +2088,6 @@ } } }, - "A red lock with a slash means the channel is not securely encrypted, it uses either no key at all or a 1 byte known key. Traffic on this channel is easily intercepted." : { - "extractionState" : "stale", - "localizations" : { - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "斜線付きの赤い鍵は、チャンネルが安全に暗号化されていないことを意味し、キーが全くないか1バイトの既知キーを使用しています。このチャンネルのトラフィックは簡単に傍受されます。" - } - } - } - }, "A red open lock means the channel is not securely encrypted and is used for precise location data, it uses either no key at all or a 1 byte known key." : { }, @@ -31348,35 +31291,6 @@ } } }, - "Send a Direct Message" : { - "extractionState" : "stale", - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inviare un messaggio diretto" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "ダイレクトメッセージを送信" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Пошаљи директну поруку" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "發送私訊" - } - } - } - }, "Send a Group Message" : { "localizations" : { "de" : { @@ -31461,35 +31375,6 @@ } } }, - "Send a message to a certain meshtastic node" : { - "extractionState" : "stale", - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inviare un messaggio a un certo nodo meshtastico" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "特定のMeshtasticノードにメッセージを送信" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Пошаљи поруку одређеном мештастик чвору" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "向特定 Meshtastic 節點發送訊息" - } - } - } - }, "Send a position on the primary channel when the user button is triple clicked." : { "localizations" : { "it" : { @@ -33552,29 +33437,6 @@ } } }, - "Shows information for the Lora radio connected via bluetooth. You can swipe left to disconnect the radio and long press start the live activity." : { - "extractionState" : "stale", - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mostra le informazioni relative alla radio Lora collegata via bluetooth. È possibile scorrere il dito verso sinistra per scollegare la radio e premere a lungo per avviare l'attività live." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bluetoothで接続されたLoRaラジオの情報を表示します。左にスワイプしてラジオを切断し、長押しでライブアクティビティを開始できます。" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "顯示透過藍牙連接的 LoRa 裝置資訊。您可以向左滑動來斷開裝置,長按則可啟動即時活動。" - } - } - } - }, "Shows information for the Lora radio connected via bluetooth. You can swipe left to disconnect the radio and long press to start the live activity." : { }, @@ -36398,35 +36260,6 @@ } } }, - "There has been no response to a request for device metadata over the admin channel for this node." : { - "extractionState" : "stale", - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Non è stata data risposta a una richiesta di metadati del dispositivo sul canale di amministrazione per questo nodo." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "このノードの管理チャンネル経由でのデバイスメタデータ要求に対する応答がありません。" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Није било одговора на захтев за метаподатке уређаја преко административног канала за овај чвор." - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "此節點的管理頻道未回應設備中繼資料的請求。" - } - } - } - }, "There has been no response to a request for device metadata via PKC admin for this node." : { },