diff --git a/client/VENDORING.md b/client/VENDORING.md index 4a4862b..f186f0b 100644 --- a/client/VENDORING.md +++ b/client/VENDORING.md @@ -40,7 +40,7 @@ source is the pair a bisect wants: The tree's current recorded state — sha256-of-sha256s over every git-tracked file under `client/` except this one: -**state digest:** `be1f4ba8990a3b289cc30f414e91ea7524fd1444160340308ffb8dc5a25dba68` +**state digest:** `0ff13365d8b1b367cd9bc382f0b89e2bc51200dc0629ed93523b049020e147a8` `packaging/check_vendoring.py` asserts it on every push, and refuses any tracked file matching a §2 never-vendor class. **Any commit that touches diff --git a/client/androidApp/src/main/assets/localization/am.json b/client/androidApp/src/main/assets/localization/am.json index b478e20..6fc10f6 100644 --- a/client/androidApp/src/main/assets/localization/am.json +++ b/client/androidApp/src/main/assets/localization/am.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "መጨረሻ የገባው: {owner}", "login_password_label": "የይለፍ ቃል", "login_privacy": "የግላዊነት መመሪያን ይመልከቱ", - "login_reset_device": "መሣሪያ ዳግም አስጀምር", + "login_reset_device": "ይህን መሣሪያ ዳግም አስጀምር", "login_reset_device_cancel": "ሰርዝ", - "login_reset_device_confirm_body": "ይህ ሁሉንም አካባቢያዊ ውሂብ ያጠፋና ወደ ማዋቀሪያ አዋቂ ይመልሳል። ይህ ድርጊት ሊቀለበስ አይችልም።", - "login_reset_device_confirm_title": "መሣሪያ ዳግም ይጀምር?", + "login_reset_device_confirm_body": "ይህ በዚህ መሣሪያ ላይ የተቀመጠውን የኖድ ውሂብ ያጠፋል እና ወደ የማዋቀሪያ አዋቂው ይመለሳል። በሌላ መሣሪያ ላይ የተገናኙበት ኖድ ግን ተጽዕኖ አይደርስበትም። ይህ ድርጊት መልሰው የማይቀር ነው።", + "login_reset_device_confirm_title": "ይህን መሣሪያ ዳግም ማስጀመር?", "login_setup_complete_relogin": "ማዋቀሩ ተጠናቅቋል። መስቀለኛዎ እንደገና ስለተጀመረ፣ እባክዎ ማዋቀሩን ለማጠናቀቅ በተጠቀሙባቸው ተመሳሳይ የመግቢያ መረጃዎች እንደገና ይግቡ።", "login_signin_apple": "በApple ይግቡ", "login_signin_google": "በGoogle ይግቡ", diff --git a/client/androidApp/src/main/assets/localization/ar.json b/client/androidApp/src/main/assets/localization/ar.json index 3b025d4..52541c6 100644 --- a/client/androidApp/src/main/assets/localization/ar.json +++ b/client/androidApp/src/main/assets/localization/ar.json @@ -1860,7 +1860,7 @@ "login_privacy": "عرض سياسة الخصوصية", "login_reset_device": "إعادة ضبط الجهاز", "login_reset_device_cancel": "إلغاء", - "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح جميع البيانات المحلية والعودة إلى معالج الإعداد. لا يمكن التراجع عن هذا الإجراء.", + "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح بيانات العقدة المخزّنة على هذا الجهاز والعودة إلى معالج الإعداد. أما أي عقدة تتصل بها على جهاز آخر فلن تتأثر. لا يمكن التراجع عن هذا الإجراء.", "login_reset_device_confirm_title": "إعادة ضبط الجهاز؟", "login_setup_complete_relogin": "اكتمل الإعداد. أُعيد تشغيل العقدة، لذا يُرجى تسجيل الدخول مجددًا باستخدام بيانات الاعتماد نفسها التي استخدمتها لإكمال الإعداد.", "login_signin_apple": "تسجيل الدخول باستخدام Apple", diff --git a/client/androidApp/src/main/assets/localization/bn.json b/client/androidApp/src/main/assets/localization/bn.json index 30f1052..cbb52b3 100644 --- a/client/androidApp/src/main/assets/localization/bn.json +++ b/client/androidApp/src/main/assets/localization/bn.json @@ -1861,7 +1861,7 @@ "login_privacy": "গোপনীয়তা নীতি দেখুন", "login_reset_device": "ডিভাইস রিসেট করুন", "login_reset_device_cancel": "বাতিল", - "login_reset_device_confirm_body": "এটি সমস্ত স্থানীয় ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "login_reset_device_confirm_body": "এটি এই ডিভাইসে সংরক্ষিত নোডের ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। অন্য কোনো মেশিনে আপনি যে নোডের সাথে সংযুক্ত আছেন, সেটি প্রভাবিত হবে না। এটি পূর্বাবস্থায় ফেরানো যাবে না।", "login_reset_device_confirm_title": "ডিভাইস রিসেট করবেন?", "login_setup_complete_relogin": "সেটআপ সম্পূর্ণ হয়েছে। আপনার নোড পুনরায় চালু হয়েছে, তাই সেটআপ সম্পূর্ণ করতে আপনি যে শংসাপত্রগুলি ব্যবহার করেছিলেন সেগুলি দিয়েই আবার লগ ইন করুন।", "login_signin_apple": "Apple দিয়ে সাইন ইন করুন", diff --git a/client/androidApp/src/main/assets/localization/de.json b/client/androidApp/src/main/assets/localization/de.json index 74e684c..da1e0ac 100644 --- a/client/androidApp/src/main/assets/localization/de.json +++ b/client/androidApp/src/main/assets/localization/de.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Zuletzt angemeldet: {owner}", "login_password_label": "Passwort", "login_privacy": "Datenschutzerklärung anzeigen", - "login_reset_device": "Gerät zurücksetzen", + "login_reset_device": "Dieses Gerät zurücksetzen", "login_reset_device_cancel": "Abbrechen", - "login_reset_device_confirm_body": "Dadurch werden alle lokalen Daten gelöscht und Sie werden zum Einrichtungsassistenten zurückgeleitet. Diese Aktion kann nicht rückgängig gemacht werden.", - "login_reset_device_confirm_title": "Gerät zurücksetzen?", + "login_reset_device_confirm_body": "Dies löscht die Knotendaten, die auf DIESEM Gerät gespeichert sind, und kehrt zum Einrichtungsassistenten zurück. Ein Knoten, mit dem Sie auf einem anderen Rechner verbunden sind, ist davon nicht betroffen. Dies kann nicht rückgängig gemacht werden.", + "login_reset_device_confirm_title": "Dieses Gerät zurücksetzen?", "login_setup_complete_relogin": "Die Einrichtung ist abgeschlossen. Ihr Knoten wurde neu gestartet – bitte melden Sie sich erneut mit denselben Zugangsdaten an, die Sie für die Einrichtung verwendet haben.", "login_signin_apple": "Mit Apple anmelden", "login_signin_google": "Mit Google anmelden", diff --git a/client/androidApp/src/main/assets/localization/en.json b/client/androidApp/src/main/assets/localization/en.json index 8561878..17f1f9c 100644 --- a/client/androidApp/src/main/assets/localization/en.json +++ b/client/androidApp/src/main/assets/localization/en.json @@ -1928,10 +1928,10 @@ "login_owner_hint": "Last signed in: {owner}", "login_password_label": "Password", "login_privacy": "View Privacy Policy", - "login_reset_device": "Reset device", + "login_reset_device": "Reset this device", "login_reset_device_cancel": "Cancel", - "login_reset_device_confirm_body": "This will erase all local data and return to the setup wizard. This cannot be undone.", - "login_reset_device_confirm_title": "Reset device?", + "login_reset_device_confirm_body": "This erases the node data stored on THIS device and returns to the setup wizard. A node you are connected to on another machine is not affected. This cannot be undone.", + "login_reset_device_confirm_title": "Reset this device?", "login_setup_complete_relogin": "Setup is complete. Your node restarted, so please log back in with the same credentials you used to complete setup.", "login_signin_apple": "Sign in with Apple", "login_signin_google": "Sign in with Google", diff --git a/client/androidApp/src/main/assets/localization/es.json b/client/androidApp/src/main/assets/localization/es.json index 66a6762..fe02dbf 100644 --- a/client/androidApp/src/main/assets/localization/es.json +++ b/client/androidApp/src/main/assets/localization/es.json @@ -1860,7 +1860,7 @@ "login_privacy": "Ver Política de Privacidad", "login_reset_device": "Restablecer dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Esto borrará todos los datos locales y volverás al asistente de configuración. Esta acción no se puede deshacer.", + "login_reset_device_confirm_body": "Esto borrará los datos del nodo almacenados en ESTE dispositivo y volverá al asistente de configuración. Un nodo al que estés conectado en otra máquina no se verá afectado. Esta acción no se puede deshacer.", "login_reset_device_confirm_title": "¿Restablecer dispositivo?", "login_setup_complete_relogin": "La configuración ha finalizado. Tu nodo se reinició, así que vuelve a iniciar sesión con las mismas credenciales que usaste para completar la configuración.", "login_signin_apple": "Iniciar sesión con Apple", diff --git a/client/androidApp/src/main/assets/localization/fa.json b/client/androidApp/src/main/assets/localization/fa.json index d9caea0..38b931c 100644 --- a/client/androidApp/src/main/assets/localization/fa.json +++ b/client/androidApp/src/main/assets/localization/fa.json @@ -1866,7 +1866,7 @@ "login_privacy": "مشاهده سیاست حریم خصوصی", "login_reset_device": "بازنشانی دستگاه", "login_reset_device_cancel": "لغو", - "login_reset_device_confirm_body": "این عمل تمام داده‌های محلی را پاک می‌کند و به راه‌اندازی اولیه بازمی‌گردد. این کار قابل بازگشت نیست.", + "login_reset_device_confirm_body": "این کار داده‌های گره ذخیره‌شده روی همین دستگاه را پاک می‌کند و به دستیار راه‌اندازی بازمی‌گردد. گرهی که روی دستگاهی دیگر به آن متصل هستید تحت تأثیر قرار نمی‌گیرد. این کار قابل بازگشت نیست.", "login_reset_device_confirm_title": "بازنشانی دستگاه؟", "login_setup_complete_relogin": "راه‌اندازی کامل شد. نود شما دوباره راه‌اندازی شد؛ لطفاً با همان اطلاعات ورودی که برای تکمیل راه‌اندازی استفاده کردید، دوباره وارد شوید.", "login_signin_apple": "ورود باستخدام Apple", diff --git a/client/androidApp/src/main/assets/localization/fr.json b/client/androidApp/src/main/assets/localization/fr.json index 10abf12..fe1f844 100644 --- a/client/androidApp/src/main/assets/localization/fr.json +++ b/client/androidApp/src/main/assets/localization/fr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Voir la Politique de Confidentialité", "login_reset_device": "Réinitialiser l'appareil", "login_reset_device_cancel": "Annuler", - "login_reset_device_confirm_body": "Cela effacera toutes les données locales et vous ramènera à l'assistant de configuration. Cette action est irréversible.", + "login_reset_device_confirm_body": "Cela efface les données du nœud stockées sur CET appareil et revient à l'assistant de configuration. Un nœud auquel vous êtes connecté sur une autre machine n'est pas affecté. Cela ne peut pas être annulé.", "login_reset_device_confirm_title": "Réinitialiser l'appareil ?", "login_setup_complete_relogin": "La configuration est terminée. Votre nœud a redémarré : veuillez vous reconnecter avec les mêmes identifiants que ceux utilisés pour terminer la configuration.", "login_signin_apple": "Se connecter avec Apple", diff --git a/client/androidApp/src/main/assets/localization/ha.json b/client/androidApp/src/main/assets/localization/ha.json index 7ac4491..f5f91af 100644 --- a/client/androidApp/src/main/assets/localization/ha.json +++ b/client/androidApp/src/main/assets/localization/ha.json @@ -1860,7 +1860,7 @@ "login_privacy": "Duba Sera na Asirta", "login_reset_device": "Sake saita na'ura", "login_reset_device_cancel": "Soke", - "login_reset_device_confirm_body": "Wannan zai share duk bayanan gida kuma ya koma zuwa jagorar saiti. Ba za a iya maido da wannan ba.", + "login_reset_device_confirm_body": "Wannan zai share bayanan kumburin da aka ajiye a WANNAN na'urar kuma ya koma zuwa jagorar saiti. Kumburin da kuke haɗe da shi a wata na'ura ba zai sami tasiri ba. Ba za a iya mayar da wannan aiki ba.", "login_reset_device_confirm_title": "Sake saita na'ura?", "login_setup_complete_relogin": "An kammala saitin. Node ɗinka ya sake farawa, don haka ka sake shiga da bayanan shiga guda ɗaya da ka yi amfani da su wajen kammala saitin.", "login_signin_apple": "Shiga tare da Apple", diff --git a/client/androidApp/src/main/assets/localization/hi.json b/client/androidApp/src/main/assets/localization/hi.json index 7654f45..504fa17 100644 --- a/client/androidApp/src/main/assets/localization/hi.json +++ b/client/androidApp/src/main/assets/localization/hi.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "पिछली बार साइन इन किया: {owner}", "login_password_label": "पासवर्ड", "login_privacy": "गोपनीयता नीति देखें", - "login_reset_device": "डिवाइस रीसेट करें", + "login_reset_device": "इस डिवाइस को रीसेट करें", "login_reset_device_cancel": "रद्द करें", - "login_reset_device_confirm_body": "यह सभी स्थानीय डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। इसे पूर्ववत नहीं किया जा सकता।", - "login_reset_device_confirm_title": "डिवाइस रीसेट करें?", + "login_reset_device_confirm_body": "यह इस डिवाइस पर संग्रहीत नोड डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। किसी अन्य मशीन पर जिस नोड से आप जुड़े हैं, वह प्रभावित नहीं होगा। इसे पूर्ववत नहीं किया जा सकता।", + "login_reset_device_confirm_title": "इस डिवाइस को रीसेट करें?", "login_setup_complete_relogin": "सेटअप पूरा हो गया है। आपका नोड फिर से चालू हुआ है, इसलिए कृपया उन्हीं क्रेडेंशियल से दोबारा लॉग इन करें जिनका उपयोग आपने सेटअप पूरा करने के लिए किया था।", "login_signin_apple": "Apple से साइन इन करें", "login_signin_google": "Google से साइन इन करें", diff --git a/client/androidApp/src/main/assets/localization/id.json b/client/androidApp/src/main/assets/localization/id.json index 809bf6a..d51d506 100644 --- a/client/androidApp/src/main/assets/localization/id.json +++ b/client/androidApp/src/main/assets/localization/id.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Terakhir masuk: {owner}", "login_password_label": "Kata Sandi", "login_privacy": "Lihat Kebijakan Privasi", - "login_reset_device": "Atur ulang perangkat", + "login_reset_device": "Atur ulang perangkat ini", "login_reset_device_cancel": "Batal", - "login_reset_device_confirm_body": "Ini akan menghapus semua data lokal dan kembali ke wizard penyiapan. Tindakan ini tidak dapat dibatalkan.", - "login_reset_device_confirm_title": "Atur ulang perangkat?", + "login_reset_device_confirm_body": "Ini akan menghapus data node yang tersimpan di perangkat INI dan kembali ke wizard penyiapan. Node tempat Anda terhubung di mesin lain tidak terpengaruh. Tindakan ini tidak dapat dibatalkan.", + "login_reset_device_confirm_title": "Atur ulang perangkat ini?", "login_setup_complete_relogin": "Penyiapan selesai. Node Anda telah dimulai ulang, jadi silakan masuk kembali dengan kredensial yang sama seperti yang Anda gunakan saat menyelesaikan penyiapan.", "login_signin_apple": "Masuk dengan Apple", "login_signin_google": "Masuk dengan Google", diff --git a/client/androidApp/src/main/assets/localization/it.json b/client/androidApp/src/main/assets/localization/it.json index 1748af9..525dd69 100644 --- a/client/androidApp/src/main/assets/localization/it.json +++ b/client/androidApp/src/main/assets/localization/it.json @@ -1860,7 +1860,7 @@ "login_privacy": "Visualizza Informativa sulla Privacy", "login_reset_device": "Ripristina dispositivo", "login_reset_device_cancel": "Annulla", - "login_reset_device_confirm_body": "Verranno cancellati tutti i dati locali e si tornerà alla procedura guidata di configurazione. Questa azione non può essere annullata.", + "login_reset_device_confirm_body": "Verranno cancellati i dati del nodo memorizzati su QUESTO dispositivo e si tornerà alla procedura guidata di configurazione. Un nodo a cui sei connesso su un'altra macchina non subisce modifiche. Questa azione non può essere annullata.", "login_reset_device_confirm_title": "Ripristinare il dispositivo?", "login_setup_complete_relogin": "La configurazione è completata. Il tuo nodo è stato riavviato: accedi di nuovo con le stesse credenziali che hai usato per completare la configurazione.", "login_signin_apple": "Accedi con Apple", diff --git a/client/androidApp/src/main/assets/localization/ja.json b/client/androidApp/src/main/assets/localization/ja.json index 07f3851..371b63a 100644 --- a/client/androidApp/src/main/assets/localization/ja.json +++ b/client/androidApp/src/main/assets/localization/ja.json @@ -1860,7 +1860,7 @@ "login_privacy": "プライバシーポリシーを表示", "login_reset_device": "デバイスをリセット", "login_reset_device_cancel": "キャンセル", - "login_reset_device_confirm_body": "すべてのローカルデータが消去され、セットアップウィザードに戻ります。この操作は元に戻せません。", + "login_reset_device_confirm_body": "このデバイスに保存されているノードデータが消去され、セットアップウィザードに戻ります。別のマシン上で接続しているノードには影響しません。この操作は元に戻せません。", "login_reset_device_confirm_title": "デバイスをリセットしますか?", "login_setup_complete_relogin": "セットアップが完了しました。ノードが再起動したため、セットアップで使用したものと同じ認証情報で再度ログインしてください。", "login_signin_apple": "Appleでサインイン", diff --git a/client/androidApp/src/main/assets/localization/ko.json b/client/androidApp/src/main/assets/localization/ko.json index a766a42..e46b77f 100644 --- a/client/androidApp/src/main/assets/localization/ko.json +++ b/client/androidApp/src/main/assets/localization/ko.json @@ -1860,7 +1860,7 @@ "login_privacy": "개인정보 보호정책 보기", "login_reset_device": "기기 재설정", "login_reset_device_cancel": "취소", - "login_reset_device_confirm_body": "모든 로컬 데이터가 삭제되고 설정 마법사로 돌아갑니다. 이 작업은 취소할 수 없습니다.", + "login_reset_device_confirm_body": "이 작업은 이 기기에 저장된 노드 데이터를 삭제하고 설정 마법사로 돌아갑니다. 다른 기기에서 연결해 사용 중인 노드는 영향을 받지 않습니다. 이 작업은 취소할 수 없습니다.", "login_reset_device_confirm_title": "기기를 재설정하시겠습니까?", "login_setup_complete_relogin": "설정이 완료되었습니다. 노드가 재시작되었으므로 설정에 사용한 것과 동일한 자격 증명으로 다시 로그인해 주세요.", "login_signin_apple": "Apple로 로그인", diff --git a/client/androidApp/src/main/assets/localization/mr.json b/client/androidApp/src/main/assets/localization/mr.json index 0c7cf1f..35d3208 100644 --- a/client/androidApp/src/main/assets/localization/mr.json +++ b/client/androidApp/src/main/assets/localization/mr.json @@ -1860,7 +1860,7 @@ "login_privacy": "गोपनीयता धोरण पाहा", "login_reset_device": "डिव्हाइस रीसेट करा", "login_reset_device_cancel": "रद्द करा", - "login_reset_device_confirm_body": "हे सर्व स्थानिक डेटा मिटवेल आणि सेटअप विझार्डवर परत जाईल. हे पूर्ववत केले जाऊ शकत नाही.", + "login_reset_device_confirm_body": "यामुळे याच डिव्हाइसवर साठवलेला नोड डेटा पुसला जाईल आणि सेटअप विझार्डवर परत जाईल. तुम्ही दुसऱ्या मशीनवरील ज्या नोडशी जोडलेले आहात, त्यावर याचा परिणाम होत नाही. हे पूर्ववत केले जाऊ शकत नाही.", "login_reset_device_confirm_title": "डिव्हाइस रीसेट करायचे?", "login_setup_complete_relogin": "सेटअप पूर्ण झाला आहे. तुमचा नोड पुन्हा सुरू झाला आहे, त्यामुळे सेटअप पूर्ण करण्यासाठी वापरलेल्या त्याच क्रेडेन्शियल्सने कृपया पुन्हा लॉग इन करा.", "login_signin_apple": "Apple सह साइन इन करा", diff --git a/client/androidApp/src/main/assets/localization/my.json b/client/androidApp/src/main/assets/localization/my.json index aa01418..37d756b 100644 --- a/client/androidApp/src/main/assets/localization/my.json +++ b/client/androidApp/src/main/assets/localization/my.json @@ -1860,7 +1860,7 @@ "login_privacy": "ကိုယ်ရေးကာကွယ်မှု မူဝါဒ ကြည့်ရှုပါ", "login_reset_device": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်ပါ", "login_reset_device_cancel": "ပယ်ဖျက်", - "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဒေသတွင်းဒေတာအားလုံးကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ကို ပြန်ဖြည့်၍မရပါ။", + "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဤစက်ပေါ်တွင် သိမ်းဆည်းထားသော node ဒေတာကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ သင် အခြားစက်တွင် ချိတ်ဆက်ထားသည့် node သည် ထိခိုက်မည် မဟုတ်ပါ။ ဤလုပ်ဆောင်ချက်ကို ပြန်မလုပ်နိုင်ပါ။", "login_reset_device_confirm_title": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်မည်လား?", "login_setup_complete_relogin": "စနစ်ထည့်သွင်းမှု ပြီးဆုံးပါပြီ။ သင့် node ပြန်လည်စတင်ခဲ့သဖြင့် စနစ်ထည့်သွင်းရာတွင် အသုံးပြုခဲ့သည့် အထောက်အထားများဖြင့်ပင် ပြန်လည်ဝင်ရောက်ပါ။", "login_signin_apple": "Apple ဖြင့် ဝင်ရောက်", diff --git a/client/androidApp/src/main/assets/localization/pa.json b/client/androidApp/src/main/assets/localization/pa.json index ebf8145..b5d51c5 100644 --- a/client/androidApp/src/main/assets/localization/pa.json +++ b/client/androidApp/src/main/assets/localization/pa.json @@ -1860,7 +1860,7 @@ "login_privacy": "ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਦੇਖੋ", "login_reset_device": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰੋ", "login_reset_device_cancel": "ਰੱਦ ਕਰੋ", - "login_reset_device_confirm_body": "ਇਹ ਸਾਰਾ ਸਥਾਨਕ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਇਸ ਨੂੰ ਪਹਿਲਾਂ ਵਾਲੀ ਸਥਿਤੀ ਵਿੱਚ ਨਹੀਂ ਲਿਆਂਦਾ ਜਾ ਸਕਦਾ।", + "login_reset_device_confirm_body": "ਇਹ ਇਸ ਡਿਵਾਈਸ 'ਤੇ ਸਟੋਰ ਕੀਤਾ ਨੋਡ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਕਿਸੇ ਹੋਰ ਮਸ਼ੀਨ ਉੱਤੇ ਜਿਸ ਨੋਡ ਨਾਲ ਤੁਸੀਂ ਜੁੜੇ ਹੋ, ਉਹ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦਾ। ਇਹ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।", "login_reset_device_confirm_title": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?", "login_setup_complete_relogin": "ਸੈੱਟਅੱਪ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਤੁਹਾਡਾ ਨੋਡ ਮੁੜ ਚਾਲੂ ਹੋਇਆ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਉਹੀ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਵਰਤ ਕੇ ਮੁੜ ਲਾਗਇਨ ਕਰੋ ਜੋ ਤੁਸੀਂ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਵਰਤੇ ਸਨ।", "login_signin_apple": "Apple ਨਾਲ ਸਾਈਨ ਇਨ ਕਰੋ", diff --git a/client/androidApp/src/main/assets/localization/pt.json b/client/androidApp/src/main/assets/localization/pt.json index fa5fa8c..d4d550e 100644 --- a/client/androidApp/src/main/assets/localization/pt.json +++ b/client/androidApp/src/main/assets/localization/pt.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Último acesso: {owner}", "login_password_label": "Senha", "login_privacy": "Ver Política de Privacidade", - "login_reset_device": "Redefinir dispositivo", + "login_reset_device": "Redefinir este dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Isso apagará todos os dados locais e retornará ao assistente de configuração. Esta ação não pode ser desfeita.", - "login_reset_device_confirm_title": "Redefinir dispositivo?", + "login_reset_device_confirm_body": "Isso excluirá os dados do nó armazenados NESTE dispositivo e retornará ao assistente de configuração. Um nó ao qual você esteja conectado em outra máquina não é afetado. Isso não pode ser desfeito.", + "login_reset_device_confirm_title": "Redefinir este dispositivo?", "login_setup_complete_relogin": "A configuração foi concluída. O seu nó foi reiniciado, por isso inicie sessão novamente com as mesmas credenciais que utilizou para concluir a configuração.", "login_signin_apple": "Entrar com Apple", "login_signin_google": "Entrar com Google", diff --git a/client/androidApp/src/main/assets/localization/ru.json b/client/androidApp/src/main/assets/localization/ru.json index 484e28e..db4bf61 100644 --- a/client/androidApp/src/main/assets/localization/ru.json +++ b/client/androidApp/src/main/assets/localization/ru.json @@ -1860,7 +1860,7 @@ "login_privacy": "Посмотреть Политику конфиденциальности", "login_reset_device": "Сбросить устройство", "login_reset_device_cancel": "Отмена", - "login_reset_device_confirm_body": "Это удалит все локальные данные и вернёт мастер настройки. Отменить это действие невозможно.", + "login_reset_device_confirm_body": "Это удалит данные узла, хранящиеся на ЭТОМ устройстве, и вернёт вас к мастеру настройки. Узел, к которому вы подключены на другой машине, затронут не будет. Это действие нельзя отменить.", "login_reset_device_confirm_title": "Сбросить устройство?", "login_setup_complete_relogin": "Настройка завершена. Ваш узел перезапущен, поэтому войдите снова, используя те же учётные данные, что и при настройке.", "login_signin_apple": "Войти через Apple", diff --git a/client/androidApp/src/main/assets/localization/sw.json b/client/androidApp/src/main/assets/localization/sw.json index 522bfde..17baf50 100644 --- a/client/androidApp/src/main/assets/localization/sw.json +++ b/client/androidApp/src/main/assets/localization/sw.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Mwisho aliyeingia: {owner}", "login_password_label": "Nenosiri", "login_privacy": "Tazama Sera ya Faragha", - "login_reset_device": "Weka upya kifaa", + "login_reset_device": "Weka upya kifaa hiki", "login_reset_device_cancel": "Ghairi", - "login_reset_device_confirm_body": "Hii itafuta data yote ya ndani na kurudi kwa mwongozo wa usanidi. Hatua hii haiwezi kutenduliwa.", - "login_reset_device_confirm_title": "Weka upya kifaa?", + "login_reset_device_confirm_body": "Hii itafuta data ya nodi iliyohifadhiwa kwenye kifaa HIKI na kurudi kwa mchawi wa usanidi. Nodi ambayo umeunganishwa nayo kwenye mashine nyingine haitaathiriwa. Hatua hii haiwezi kutenduliwa.", + "login_reset_device_confirm_title": "Weka upya kifaa hiki?", "login_setup_complete_relogin": "Usanidi umekamilika. Nodi yako imeanzishwa upya, kwa hivyo tafadhali ingia tena ukitumia stakabadhi zilezile ulizotumia kukamilisha usanidi.", "login_signin_apple": "Ingia kwa kutumia Apple", "login_signin_google": "Ingia kwa kutumia Google", diff --git a/client/androidApp/src/main/assets/localization/ta.json b/client/androidApp/src/main/assets/localization/ta.json index 34f5c0e..f3a999a 100644 --- a/client/androidApp/src/main/assets/localization/ta.json +++ b/client/androidApp/src/main/assets/localization/ta.json @@ -1860,7 +1860,7 @@ "login_privacy": "காண் Privacy Policy", "login_reset_device": "சாதனத்தை மீட்டமை", "login_reset_device_cancel": "ரத்து", - "login_reset_device_confirm_body": "இது அனைத்து உள்ளூர் தரவையும் அழித்து, அமைவு வழிகாட்டிக்கு திரும்பும். இதை மீண்டும் செயல்தவிர்க்க இயலாது.", + "login_reset_device_confirm_body": "இது இந்த சாதனத்தில் சேமிக்கப்பட்டுள்ள நோடு தரவை அழித்து, அமைவு வழிகாட்டிக்குத் திரும்பும். மற்றொரு கணினியில் நீங்கள் இணைந்திருக்கும் நோடு பாதிக்கப்படாது. இந்த செயலை மீள மாற்ற முடியாது.", "login_reset_device_confirm_title": "சாதனத்தை மீட்டமைக்கவா?", "login_setup_complete_relogin": "அமைவு நிறைவடைந்தது. உங்கள் நோடு மறுதொடக்கம் செய்யப்பட்டது, எனவே அமைவை நிறைவு செய்யப் பயன்படுத்திய அதே சான்றுகளுடன் மீண்டும் உள்நுழையவும்.", "login_signin_apple": "Sign in உடன் Apple", diff --git a/client/androidApp/src/main/assets/localization/te.json b/client/androidApp/src/main/assets/localization/te.json index 78b6759..57f56c3 100644 --- a/client/androidApp/src/main/assets/localization/te.json +++ b/client/androidApp/src/main/assets/localization/te.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "చివరిగా సైన్ ఇన్ చేసినది: {owner}", "login_password_label": "పాస్‌వర్డ్", "login_privacy": "చూడు Privacy Policy", - "login_reset_device": "పరికరాన్ని రీసెట్ చేయండి", + "login_reset_device": "ఈ పరికరాన్ని రీసెట్ చేయండి", "login_reset_device_cancel": "రద్దు చేయి", - "login_reset_device_confirm_body": "ఇది అన్ని స్థానిక డేటాను తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. దీన్ని రద్దు చేయడం సాధ్యం కాదు.", - "login_reset_device_confirm_title": "పరికరాన్ని రీసెట్ చేయాలా?", + "login_reset_device_confirm_body": "ఇది ఈ పరికరంలో నిల్వ చేసిన నోడ్ డేటాను మొత్తం తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. మీరు మరొక యంత్రంలో కనెక్ట్ అయి ఉన్న నోడ్ ప్రభావితం కాదు. ఈ చర్యను రద్దు చేయలేరు.", + "login_reset_device_confirm_title": "ఈ పరికరాన్ని రీసెట్ చేయాలా?", "login_setup_complete_relogin": "సెటప్ పూర్తయింది. మీ నోడ్ పునఃప్రారంభమైంది, కాబట్టి సెటప్ పూర్తి చేయడానికి మీరు ఉపయోగించిన అదే ఆధారాలతో దయచేసి మళ్లీ లాగిన్ అవ్వండి.", "login_signin_apple": "Apple తో సైన్ ఇన్ చేయండి", "login_signin_google": "Google తో సైన్ ఇన్ చేయండి", diff --git a/client/androidApp/src/main/assets/localization/th.json b/client/androidApp/src/main/assets/localization/th.json index 78de09e..079e23f 100644 --- a/client/androidApp/src/main/assets/localization/th.json +++ b/client/androidApp/src/main/assets/localization/th.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "เข้าสู่ระบบล่าสุด: {owner}", "login_password_label": "รหัสผ่าน", "login_privacy": "ดูนโยบายความเป็นส่วนตัว", - "login_reset_device": "รีเซ็ตอุปกรณ์", + "login_reset_device": "รีเซ็ตอุปกรณ์นี้", "login_reset_device_cancel": "ยกเลิก", - "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลในเครื่องทั้งหมดและกลับสู่วิซาร์ดการตั้งค่า ไม่สามารถย้อนกลับได้", - "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์?", + "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลโหนดที่เก็บอยู่บนอุปกรณ์นี้และกลับไปยังตัวช่วยการตั้งค่า โหนดที่คุณเชื่อมต่ออยู่บนเครื่องอื่นจะไม่ได้รับผลกระทบ การดำเนินการนี้ไม่สามารถยกเลิกได้", + "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์นี้?", "login_setup_complete_relogin": "การตั้งค่าเสร็จสมบูรณ์แล้ว โหนดของคุณได้รีสตาร์ท กรุณาเข้าสู่ระบบอีกครั้งด้วยข้อมูลรับรองเดียวกับที่คุณใช้ในการตั้งค่า", "login_signin_apple": "เข้าสู่ระบบด้วย Apple", "login_signin_google": "เข้าสู่ระบบด้วย Google", diff --git a/client/androidApp/src/main/assets/localization/tr.json b/client/androidApp/src/main/assets/localization/tr.json index 9708b87..2bc1988 100644 --- a/client/androidApp/src/main/assets/localization/tr.json +++ b/client/androidApp/src/main/assets/localization/tr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Gizlilik Politikasını Görüntüle", "login_reset_device": "Cihazı Sıfırla", "login_reset_device_cancel": "İptal", - "login_reset_device_confirm_body": "Bu işlem tüm yerel verileri silecek ve kurulum sihirbazına geri dönecektir. Bu işlem geri alınamaz.", + "login_reset_device_confirm_body": "Bu işlem, BU cihazda depolanan düğüm verilerini siler ve kurulum sihirbazına döner. Başka bir makinede bağlı olduğunuz bir düğüm etkilenmez. Bu geri alınamaz.", "login_reset_device_confirm_title": "Cihaz sıfırlansın mı?", "login_setup_complete_relogin": "Kurulum tamamlandı. Düğümünüz yeniden başlatıldı; lütfen kurulumu tamamlarken kullandığınız kimlik bilgileriyle yeniden oturum açın.", "login_signin_apple": "Apple ile giriş yap", diff --git a/client/androidApp/src/main/assets/localization/uk.json b/client/androidApp/src/main/assets/localization/uk.json index fafcb63..9de68ee 100644 --- a/client/androidApp/src/main/assets/localization/uk.json +++ b/client/androidApp/src/main/assets/localization/uk.json @@ -1860,7 +1860,7 @@ "login_privacy": "Переглянути Політику конфіденційності", "login_reset_device": "Скинути пристрій", "login_reset_device_cancel": "Скасувати", - "login_reset_device_confirm_body": "Це видалить усі локальні дані та повернеться до майстра налаштування. Цю дію неможливо скасувати.", + "login_reset_device_confirm_body": "Це видалить дані вузла, збережені НА ЦЬОМУ пристрої, та поверне вас до майстра налаштування. Це не впливає на вузол, до якого ви підключені на іншому комп'ютері. Цю дію неможливо скасувати.", "login_reset_device_confirm_title": "Скинути пристрій?", "login_setup_complete_relogin": "Налаштування завершено. Ваш вузол перезапустився, тому увійдіть знову, використовуючи ті самі облікові дані, з якими ви завершили налаштування.", "login_signin_apple": "Увійти через Apple", diff --git a/client/androidApp/src/main/assets/localization/ur.json b/client/androidApp/src/main/assets/localization/ur.json index 7c17d31..cecd77f 100644 --- a/client/androidApp/src/main/assets/localization/ur.json +++ b/client/androidApp/src/main/assets/localization/ur.json @@ -1860,7 +1860,7 @@ "login_privacy": "رازداری کی پالیسی دیکھیں", "login_reset_device": "ڈیوائس ری سیٹ کریں", "login_reset_device_cancel": "منسوخ کریں", - "login_reset_device_confirm_body": "یہ تمام مقامی ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس لے جائے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", + "login_reset_device_confirm_body": "یہ اِسی ڈیوائس پر محفوظ نوڈ کا ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس آ جائے گا۔ کسی دوسری مشین پر جس نوڈ سے آپ جڑے ہیں، اُس پر کوئی اثر نہیں پڑے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", "login_reset_device_confirm_title": "ڈیوائس ری سیٹ کریں؟", "login_setup_complete_relogin": "سیٹ اپ مکمل ہو گیا ہے۔ آپ کا نوڈ دوبارہ شروع ہوا ہے، اس لیے براہِ کرم انہی اسناد کے ساتھ دوبارہ لاگ اِن کریں جو آپ نے سیٹ اپ مکمل کرنے کے لیے استعمال کی تھیں۔", "login_signin_apple": "Apple کے ساتھ سائن ان کریں", diff --git a/client/androidApp/src/main/assets/localization/vi.json b/client/androidApp/src/main/assets/localization/vi.json index 245869a..24135ce 100644 --- a/client/androidApp/src/main/assets/localization/vi.json +++ b/client/androidApp/src/main/assets/localization/vi.json @@ -1860,7 +1860,7 @@ "login_privacy": "Xem chính sách bảo mật", "login_reset_device": "Đặt lại thiết bị", "login_reset_device_cancel": "Hủy", - "login_reset_device_confirm_body": "Thao tác này sẽ xóa tất cả dữ liệu cục bộ và quay lại trình hướng dẫn cài đặt. Hành động này không thể hoàn tác.", + "login_reset_device_confirm_body": "Thao tác này sẽ xóa dữ liệu nút được lưu trữ trên CHÍNH thiết bị này và quay lại trình hướng dẫn cài đặt. Nút mà bạn đang kết nối trên một máy khác sẽ không bị ảnh hưởng. Không thể hoàn tác.", "login_reset_device_confirm_title": "Đặt lại thiết bị?", "login_setup_complete_relogin": "Thiết lập đã hoàn tất. Nút của bạn đã khởi động lại, vui lòng đăng nhập lại bằng đúng thông tin đăng nhập mà bạn đã dùng để hoàn tất thiết lập.", "login_signin_apple": "Đăng nhập bằng Apple", diff --git a/client/androidApp/src/main/assets/localization/yo.json b/client/androidApp/src/main/assets/localization/yo.json index d7f8400..c7c0a0f 100644 --- a/client/androidApp/src/main/assets/localization/yo.json +++ b/client/androidApp/src/main/assets/localization/yo.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Ìwọlé ìkẹ̀yìn: {owner}", "login_password_label": "Ọ̀rọ̀ Àṣírí", "login_privacy": "Wo Ìlànà Àṣírí", - "login_reset_device": "Tún ẹ̀rọ ṣe", + "login_reset_device": "Tún ẹ̀rọ yìí ṣe", "login_reset_device_cancel": "Fagilé", - "login_reset_device_confirm_body": "Èyí yóò pa gbogbo dátà àdúgbò run kí ó sì padà sí olùṣèlú ìṣètò. Èyí kò lè yípadà.", - "login_reset_device_confirm_title": "Tún ẹ̀rọ ṣe?", + "login_reset_device_confirm_body": "Èyí yóò pa dátà nódù tí a fipamọ́ sórí Ẹ̀RỌ YÌÍ run kí ó sì padà sí olùtọ́nisọ́nà ìṣètò. Èyí kò ní kan nódù tí ẹ ti so pọ̀ mọ́ ẹ̀rọ mìíràn. Èyí kò ṣeépadà.", + "login_reset_device_confirm_title": "Tún ẹ̀rọ yìí ṣe?", "login_setup_complete_relogin": "Ìṣètò ti parí. Node rẹ tún bẹ̀rẹ̀, nítorí náà jọ̀wọ́ wọlé padà pẹ̀lú àwọn ẹ̀rí ìdánimọ̀ kan náà tí o lò láti parí ìṣètò.", "login_signin_apple": "Wọlé pẹ̀lú Apple", "login_signin_google": "Wọlé pẹ̀lú Google", diff --git a/client/androidApp/src/main/assets/localization/zh.json b/client/androidApp/src/main/assets/localization/zh.json index 2bcede3..570ceda 100644 --- a/client/androidApp/src/main/assets/localization/zh.json +++ b/client/androidApp/src/main/assets/localization/zh.json @@ -1860,7 +1860,7 @@ "login_privacy": "查看隐私政策", "login_reset_device": "重置设备", "login_reset_device_cancel": "取消", - "login_reset_device_confirm_body": "此操作将清除所有本地数据并返回设置向导。此操作无法撤销。", + "login_reset_device_confirm_body": "此操作将清除存储在本设备上的节点数据并返回设置向导。您在其他设备上已连接的节点不会受到影响。此操作无法撤销。", "login_reset_device_confirm_title": "重置设备?", "login_setup_complete_relogin": "设置已完成。您的节点已重新启动,请使用完成设置时使用的相同凭据重新登录。", "login_signin_apple": "使用 Apple 登录", diff --git a/client/desktopApp/src/main/resources/localization/am.json b/client/desktopApp/src/main/resources/localization/am.json index b478e20..6fc10f6 100644 --- a/client/desktopApp/src/main/resources/localization/am.json +++ b/client/desktopApp/src/main/resources/localization/am.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "መጨረሻ የገባው: {owner}", "login_password_label": "የይለፍ ቃል", "login_privacy": "የግላዊነት መመሪያን ይመልከቱ", - "login_reset_device": "መሣሪያ ዳግም አስጀምር", + "login_reset_device": "ይህን መሣሪያ ዳግም አስጀምር", "login_reset_device_cancel": "ሰርዝ", - "login_reset_device_confirm_body": "ይህ ሁሉንም አካባቢያዊ ውሂብ ያጠፋና ወደ ማዋቀሪያ አዋቂ ይመልሳል። ይህ ድርጊት ሊቀለበስ አይችልም።", - "login_reset_device_confirm_title": "መሣሪያ ዳግም ይጀምር?", + "login_reset_device_confirm_body": "ይህ በዚህ መሣሪያ ላይ የተቀመጠውን የኖድ ውሂብ ያጠፋል እና ወደ የማዋቀሪያ አዋቂው ይመለሳል። በሌላ መሣሪያ ላይ የተገናኙበት ኖድ ግን ተጽዕኖ አይደርስበትም። ይህ ድርጊት መልሰው የማይቀር ነው።", + "login_reset_device_confirm_title": "ይህን መሣሪያ ዳግም ማስጀመር?", "login_setup_complete_relogin": "ማዋቀሩ ተጠናቅቋል። መስቀለኛዎ እንደገና ስለተጀመረ፣ እባክዎ ማዋቀሩን ለማጠናቀቅ በተጠቀሙባቸው ተመሳሳይ የመግቢያ መረጃዎች እንደገና ይግቡ።", "login_signin_apple": "በApple ይግቡ", "login_signin_google": "በGoogle ይግቡ", diff --git a/client/desktopApp/src/main/resources/localization/ar.json b/client/desktopApp/src/main/resources/localization/ar.json index 3b025d4..52541c6 100644 --- a/client/desktopApp/src/main/resources/localization/ar.json +++ b/client/desktopApp/src/main/resources/localization/ar.json @@ -1860,7 +1860,7 @@ "login_privacy": "عرض سياسة الخصوصية", "login_reset_device": "إعادة ضبط الجهاز", "login_reset_device_cancel": "إلغاء", - "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح جميع البيانات المحلية والعودة إلى معالج الإعداد. لا يمكن التراجع عن هذا الإجراء.", + "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح بيانات العقدة المخزّنة على هذا الجهاز والعودة إلى معالج الإعداد. أما أي عقدة تتصل بها على جهاز آخر فلن تتأثر. لا يمكن التراجع عن هذا الإجراء.", "login_reset_device_confirm_title": "إعادة ضبط الجهاز؟", "login_setup_complete_relogin": "اكتمل الإعداد. أُعيد تشغيل العقدة، لذا يُرجى تسجيل الدخول مجددًا باستخدام بيانات الاعتماد نفسها التي استخدمتها لإكمال الإعداد.", "login_signin_apple": "تسجيل الدخول باستخدام Apple", diff --git a/client/desktopApp/src/main/resources/localization/bn.json b/client/desktopApp/src/main/resources/localization/bn.json index 30f1052..cbb52b3 100644 --- a/client/desktopApp/src/main/resources/localization/bn.json +++ b/client/desktopApp/src/main/resources/localization/bn.json @@ -1861,7 +1861,7 @@ "login_privacy": "গোপনীয়তা নীতি দেখুন", "login_reset_device": "ডিভাইস রিসেট করুন", "login_reset_device_cancel": "বাতিল", - "login_reset_device_confirm_body": "এটি সমস্ত স্থানীয় ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "login_reset_device_confirm_body": "এটি এই ডিভাইসে সংরক্ষিত নোডের ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। অন্য কোনো মেশিনে আপনি যে নোডের সাথে সংযুক্ত আছেন, সেটি প্রভাবিত হবে না। এটি পূর্বাবস্থায় ফেরানো যাবে না।", "login_reset_device_confirm_title": "ডিভাইস রিসেট করবেন?", "login_setup_complete_relogin": "সেটআপ সম্পূর্ণ হয়েছে। আপনার নোড পুনরায় চালু হয়েছে, তাই সেটআপ সম্পূর্ণ করতে আপনি যে শংসাপত্রগুলি ব্যবহার করেছিলেন সেগুলি দিয়েই আবার লগ ইন করুন।", "login_signin_apple": "Apple দিয়ে সাইন ইন করুন", diff --git a/client/desktopApp/src/main/resources/localization/de.json b/client/desktopApp/src/main/resources/localization/de.json index 74e684c..da1e0ac 100644 --- a/client/desktopApp/src/main/resources/localization/de.json +++ b/client/desktopApp/src/main/resources/localization/de.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Zuletzt angemeldet: {owner}", "login_password_label": "Passwort", "login_privacy": "Datenschutzerklärung anzeigen", - "login_reset_device": "Gerät zurücksetzen", + "login_reset_device": "Dieses Gerät zurücksetzen", "login_reset_device_cancel": "Abbrechen", - "login_reset_device_confirm_body": "Dadurch werden alle lokalen Daten gelöscht und Sie werden zum Einrichtungsassistenten zurückgeleitet. Diese Aktion kann nicht rückgängig gemacht werden.", - "login_reset_device_confirm_title": "Gerät zurücksetzen?", + "login_reset_device_confirm_body": "Dies löscht die Knotendaten, die auf DIESEM Gerät gespeichert sind, und kehrt zum Einrichtungsassistenten zurück. Ein Knoten, mit dem Sie auf einem anderen Rechner verbunden sind, ist davon nicht betroffen. Dies kann nicht rückgängig gemacht werden.", + "login_reset_device_confirm_title": "Dieses Gerät zurücksetzen?", "login_setup_complete_relogin": "Die Einrichtung ist abgeschlossen. Ihr Knoten wurde neu gestartet – bitte melden Sie sich erneut mit denselben Zugangsdaten an, die Sie für die Einrichtung verwendet haben.", "login_signin_apple": "Mit Apple anmelden", "login_signin_google": "Mit Google anmelden", diff --git a/client/desktopApp/src/main/resources/localization/en.json b/client/desktopApp/src/main/resources/localization/en.json index 8561878..17f1f9c 100644 --- a/client/desktopApp/src/main/resources/localization/en.json +++ b/client/desktopApp/src/main/resources/localization/en.json @@ -1928,10 +1928,10 @@ "login_owner_hint": "Last signed in: {owner}", "login_password_label": "Password", "login_privacy": "View Privacy Policy", - "login_reset_device": "Reset device", + "login_reset_device": "Reset this device", "login_reset_device_cancel": "Cancel", - "login_reset_device_confirm_body": "This will erase all local data and return to the setup wizard. This cannot be undone.", - "login_reset_device_confirm_title": "Reset device?", + "login_reset_device_confirm_body": "This erases the node data stored on THIS device and returns to the setup wizard. A node you are connected to on another machine is not affected. This cannot be undone.", + "login_reset_device_confirm_title": "Reset this device?", "login_setup_complete_relogin": "Setup is complete. Your node restarted, so please log back in with the same credentials you used to complete setup.", "login_signin_apple": "Sign in with Apple", "login_signin_google": "Sign in with Google", diff --git a/client/desktopApp/src/main/resources/localization/es.json b/client/desktopApp/src/main/resources/localization/es.json index 66a6762..fe02dbf 100644 --- a/client/desktopApp/src/main/resources/localization/es.json +++ b/client/desktopApp/src/main/resources/localization/es.json @@ -1860,7 +1860,7 @@ "login_privacy": "Ver Política de Privacidad", "login_reset_device": "Restablecer dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Esto borrará todos los datos locales y volverás al asistente de configuración. Esta acción no se puede deshacer.", + "login_reset_device_confirm_body": "Esto borrará los datos del nodo almacenados en ESTE dispositivo y volverá al asistente de configuración. Un nodo al que estés conectado en otra máquina no se verá afectado. Esta acción no se puede deshacer.", "login_reset_device_confirm_title": "¿Restablecer dispositivo?", "login_setup_complete_relogin": "La configuración ha finalizado. Tu nodo se reinició, así que vuelve a iniciar sesión con las mismas credenciales que usaste para completar la configuración.", "login_signin_apple": "Iniciar sesión con Apple", diff --git a/client/desktopApp/src/main/resources/localization/fa.json b/client/desktopApp/src/main/resources/localization/fa.json index d9caea0..38b931c 100644 --- a/client/desktopApp/src/main/resources/localization/fa.json +++ b/client/desktopApp/src/main/resources/localization/fa.json @@ -1866,7 +1866,7 @@ "login_privacy": "مشاهده سیاست حریم خصوصی", "login_reset_device": "بازنشانی دستگاه", "login_reset_device_cancel": "لغو", - "login_reset_device_confirm_body": "این عمل تمام داده‌های محلی را پاک می‌کند و به راه‌اندازی اولیه بازمی‌گردد. این کار قابل بازگشت نیست.", + "login_reset_device_confirm_body": "این کار داده‌های گره ذخیره‌شده روی همین دستگاه را پاک می‌کند و به دستیار راه‌اندازی بازمی‌گردد. گرهی که روی دستگاهی دیگر به آن متصل هستید تحت تأثیر قرار نمی‌گیرد. این کار قابل بازگشت نیست.", "login_reset_device_confirm_title": "بازنشانی دستگاه؟", "login_setup_complete_relogin": "راه‌اندازی کامل شد. نود شما دوباره راه‌اندازی شد؛ لطفاً با همان اطلاعات ورودی که برای تکمیل راه‌اندازی استفاده کردید، دوباره وارد شوید.", "login_signin_apple": "ورود باستخدام Apple", diff --git a/client/desktopApp/src/main/resources/localization/fr.json b/client/desktopApp/src/main/resources/localization/fr.json index 10abf12..fe1f844 100644 --- a/client/desktopApp/src/main/resources/localization/fr.json +++ b/client/desktopApp/src/main/resources/localization/fr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Voir la Politique de Confidentialité", "login_reset_device": "Réinitialiser l'appareil", "login_reset_device_cancel": "Annuler", - "login_reset_device_confirm_body": "Cela effacera toutes les données locales et vous ramènera à l'assistant de configuration. Cette action est irréversible.", + "login_reset_device_confirm_body": "Cela efface les données du nœud stockées sur CET appareil et revient à l'assistant de configuration. Un nœud auquel vous êtes connecté sur une autre machine n'est pas affecté. Cela ne peut pas être annulé.", "login_reset_device_confirm_title": "Réinitialiser l'appareil ?", "login_setup_complete_relogin": "La configuration est terminée. Votre nœud a redémarré : veuillez vous reconnecter avec les mêmes identifiants que ceux utilisés pour terminer la configuration.", "login_signin_apple": "Se connecter avec Apple", diff --git a/client/desktopApp/src/main/resources/localization/ha.json b/client/desktopApp/src/main/resources/localization/ha.json index 7ac4491..f5f91af 100644 --- a/client/desktopApp/src/main/resources/localization/ha.json +++ b/client/desktopApp/src/main/resources/localization/ha.json @@ -1860,7 +1860,7 @@ "login_privacy": "Duba Sera na Asirta", "login_reset_device": "Sake saita na'ura", "login_reset_device_cancel": "Soke", - "login_reset_device_confirm_body": "Wannan zai share duk bayanan gida kuma ya koma zuwa jagorar saiti. Ba za a iya maido da wannan ba.", + "login_reset_device_confirm_body": "Wannan zai share bayanan kumburin da aka ajiye a WANNAN na'urar kuma ya koma zuwa jagorar saiti. Kumburin da kuke haɗe da shi a wata na'ura ba zai sami tasiri ba. Ba za a iya mayar da wannan aiki ba.", "login_reset_device_confirm_title": "Sake saita na'ura?", "login_setup_complete_relogin": "An kammala saitin. Node ɗinka ya sake farawa, don haka ka sake shiga da bayanan shiga guda ɗaya da ka yi amfani da su wajen kammala saitin.", "login_signin_apple": "Shiga tare da Apple", diff --git a/client/desktopApp/src/main/resources/localization/hi.json b/client/desktopApp/src/main/resources/localization/hi.json index 7654f45..504fa17 100644 --- a/client/desktopApp/src/main/resources/localization/hi.json +++ b/client/desktopApp/src/main/resources/localization/hi.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "पिछली बार साइन इन किया: {owner}", "login_password_label": "पासवर्ड", "login_privacy": "गोपनीयता नीति देखें", - "login_reset_device": "डिवाइस रीसेट करें", + "login_reset_device": "इस डिवाइस को रीसेट करें", "login_reset_device_cancel": "रद्द करें", - "login_reset_device_confirm_body": "यह सभी स्थानीय डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। इसे पूर्ववत नहीं किया जा सकता।", - "login_reset_device_confirm_title": "डिवाइस रीसेट करें?", + "login_reset_device_confirm_body": "यह इस डिवाइस पर संग्रहीत नोड डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। किसी अन्य मशीन पर जिस नोड से आप जुड़े हैं, वह प्रभावित नहीं होगा। इसे पूर्ववत नहीं किया जा सकता।", + "login_reset_device_confirm_title": "इस डिवाइस को रीसेट करें?", "login_setup_complete_relogin": "सेटअप पूरा हो गया है। आपका नोड फिर से चालू हुआ है, इसलिए कृपया उन्हीं क्रेडेंशियल से दोबारा लॉग इन करें जिनका उपयोग आपने सेटअप पूरा करने के लिए किया था।", "login_signin_apple": "Apple से साइन इन करें", "login_signin_google": "Google से साइन इन करें", diff --git a/client/desktopApp/src/main/resources/localization/id.json b/client/desktopApp/src/main/resources/localization/id.json index 809bf6a..d51d506 100644 --- a/client/desktopApp/src/main/resources/localization/id.json +++ b/client/desktopApp/src/main/resources/localization/id.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Terakhir masuk: {owner}", "login_password_label": "Kata Sandi", "login_privacy": "Lihat Kebijakan Privasi", - "login_reset_device": "Atur ulang perangkat", + "login_reset_device": "Atur ulang perangkat ini", "login_reset_device_cancel": "Batal", - "login_reset_device_confirm_body": "Ini akan menghapus semua data lokal dan kembali ke wizard penyiapan. Tindakan ini tidak dapat dibatalkan.", - "login_reset_device_confirm_title": "Atur ulang perangkat?", + "login_reset_device_confirm_body": "Ini akan menghapus data node yang tersimpan di perangkat INI dan kembali ke wizard penyiapan. Node tempat Anda terhubung di mesin lain tidak terpengaruh. Tindakan ini tidak dapat dibatalkan.", + "login_reset_device_confirm_title": "Atur ulang perangkat ini?", "login_setup_complete_relogin": "Penyiapan selesai. Node Anda telah dimulai ulang, jadi silakan masuk kembali dengan kredensial yang sama seperti yang Anda gunakan saat menyelesaikan penyiapan.", "login_signin_apple": "Masuk dengan Apple", "login_signin_google": "Masuk dengan Google", diff --git a/client/desktopApp/src/main/resources/localization/it.json b/client/desktopApp/src/main/resources/localization/it.json index 1748af9..525dd69 100644 --- a/client/desktopApp/src/main/resources/localization/it.json +++ b/client/desktopApp/src/main/resources/localization/it.json @@ -1860,7 +1860,7 @@ "login_privacy": "Visualizza Informativa sulla Privacy", "login_reset_device": "Ripristina dispositivo", "login_reset_device_cancel": "Annulla", - "login_reset_device_confirm_body": "Verranno cancellati tutti i dati locali e si tornerà alla procedura guidata di configurazione. Questa azione non può essere annullata.", + "login_reset_device_confirm_body": "Verranno cancellati i dati del nodo memorizzati su QUESTO dispositivo e si tornerà alla procedura guidata di configurazione. Un nodo a cui sei connesso su un'altra macchina non subisce modifiche. Questa azione non può essere annullata.", "login_reset_device_confirm_title": "Ripristinare il dispositivo?", "login_setup_complete_relogin": "La configurazione è completata. Il tuo nodo è stato riavviato: accedi di nuovo con le stesse credenziali che hai usato per completare la configurazione.", "login_signin_apple": "Accedi con Apple", diff --git a/client/desktopApp/src/main/resources/localization/ja.json b/client/desktopApp/src/main/resources/localization/ja.json index 07f3851..371b63a 100644 --- a/client/desktopApp/src/main/resources/localization/ja.json +++ b/client/desktopApp/src/main/resources/localization/ja.json @@ -1860,7 +1860,7 @@ "login_privacy": "プライバシーポリシーを表示", "login_reset_device": "デバイスをリセット", "login_reset_device_cancel": "キャンセル", - "login_reset_device_confirm_body": "すべてのローカルデータが消去され、セットアップウィザードに戻ります。この操作は元に戻せません。", + "login_reset_device_confirm_body": "このデバイスに保存されているノードデータが消去され、セットアップウィザードに戻ります。別のマシン上で接続しているノードには影響しません。この操作は元に戻せません。", "login_reset_device_confirm_title": "デバイスをリセットしますか?", "login_setup_complete_relogin": "セットアップが完了しました。ノードが再起動したため、セットアップで使用したものと同じ認証情報で再度ログインしてください。", "login_signin_apple": "Appleでサインイン", diff --git a/client/desktopApp/src/main/resources/localization/ko.json b/client/desktopApp/src/main/resources/localization/ko.json index a766a42..e46b77f 100644 --- a/client/desktopApp/src/main/resources/localization/ko.json +++ b/client/desktopApp/src/main/resources/localization/ko.json @@ -1860,7 +1860,7 @@ "login_privacy": "개인정보 보호정책 보기", "login_reset_device": "기기 재설정", "login_reset_device_cancel": "취소", - "login_reset_device_confirm_body": "모든 로컬 데이터가 삭제되고 설정 마법사로 돌아갑니다. 이 작업은 취소할 수 없습니다.", + "login_reset_device_confirm_body": "이 작업은 이 기기에 저장된 노드 데이터를 삭제하고 설정 마법사로 돌아갑니다. 다른 기기에서 연결해 사용 중인 노드는 영향을 받지 않습니다. 이 작업은 취소할 수 없습니다.", "login_reset_device_confirm_title": "기기를 재설정하시겠습니까?", "login_setup_complete_relogin": "설정이 완료되었습니다. 노드가 재시작되었으므로 설정에 사용한 것과 동일한 자격 증명으로 다시 로그인해 주세요.", "login_signin_apple": "Apple로 로그인", diff --git a/client/desktopApp/src/main/resources/localization/mr.json b/client/desktopApp/src/main/resources/localization/mr.json index 0c7cf1f..35d3208 100644 --- a/client/desktopApp/src/main/resources/localization/mr.json +++ b/client/desktopApp/src/main/resources/localization/mr.json @@ -1860,7 +1860,7 @@ "login_privacy": "गोपनीयता धोरण पाहा", "login_reset_device": "डिव्हाइस रीसेट करा", "login_reset_device_cancel": "रद्द करा", - "login_reset_device_confirm_body": "हे सर्व स्थानिक डेटा मिटवेल आणि सेटअप विझार्डवर परत जाईल. हे पूर्ववत केले जाऊ शकत नाही.", + "login_reset_device_confirm_body": "यामुळे याच डिव्हाइसवर साठवलेला नोड डेटा पुसला जाईल आणि सेटअप विझार्डवर परत जाईल. तुम्ही दुसऱ्या मशीनवरील ज्या नोडशी जोडलेले आहात, त्यावर याचा परिणाम होत नाही. हे पूर्ववत केले जाऊ शकत नाही.", "login_reset_device_confirm_title": "डिव्हाइस रीसेट करायचे?", "login_setup_complete_relogin": "सेटअप पूर्ण झाला आहे. तुमचा नोड पुन्हा सुरू झाला आहे, त्यामुळे सेटअप पूर्ण करण्यासाठी वापरलेल्या त्याच क्रेडेन्शियल्सने कृपया पुन्हा लॉग इन करा.", "login_signin_apple": "Apple सह साइन इन करा", diff --git a/client/desktopApp/src/main/resources/localization/my.json b/client/desktopApp/src/main/resources/localization/my.json index aa01418..37d756b 100644 --- a/client/desktopApp/src/main/resources/localization/my.json +++ b/client/desktopApp/src/main/resources/localization/my.json @@ -1860,7 +1860,7 @@ "login_privacy": "ကိုယ်ရေးကာကွယ်မှု မူဝါဒ ကြည့်ရှုပါ", "login_reset_device": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်ပါ", "login_reset_device_cancel": "ပယ်ဖျက်", - "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဒေသတွင်းဒေတာအားလုံးကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ကို ပြန်ဖြည့်၍မရပါ။", + "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဤစက်ပေါ်တွင် သိမ်းဆည်းထားသော node ဒေတာကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ သင် အခြားစက်တွင် ချိတ်ဆက်ထားသည့် node သည် ထိခိုက်မည် မဟုတ်ပါ။ ဤလုပ်ဆောင်ချက်ကို ပြန်မလုပ်နိုင်ပါ။", "login_reset_device_confirm_title": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်မည်လား?", "login_setup_complete_relogin": "စနစ်ထည့်သွင်းမှု ပြီးဆုံးပါပြီ။ သင့် node ပြန်လည်စတင်ခဲ့သဖြင့် စနစ်ထည့်သွင်းရာတွင် အသုံးပြုခဲ့သည့် အထောက်အထားများဖြင့်ပင် ပြန်လည်ဝင်ရောက်ပါ။", "login_signin_apple": "Apple ဖြင့် ဝင်ရောက်", diff --git a/client/desktopApp/src/main/resources/localization/pa.json b/client/desktopApp/src/main/resources/localization/pa.json index ebf8145..b5d51c5 100644 --- a/client/desktopApp/src/main/resources/localization/pa.json +++ b/client/desktopApp/src/main/resources/localization/pa.json @@ -1860,7 +1860,7 @@ "login_privacy": "ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਦੇਖੋ", "login_reset_device": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰੋ", "login_reset_device_cancel": "ਰੱਦ ਕਰੋ", - "login_reset_device_confirm_body": "ਇਹ ਸਾਰਾ ਸਥਾਨਕ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਇਸ ਨੂੰ ਪਹਿਲਾਂ ਵਾਲੀ ਸਥਿਤੀ ਵਿੱਚ ਨਹੀਂ ਲਿਆਂਦਾ ਜਾ ਸਕਦਾ।", + "login_reset_device_confirm_body": "ਇਹ ਇਸ ਡਿਵਾਈਸ 'ਤੇ ਸਟੋਰ ਕੀਤਾ ਨੋਡ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਕਿਸੇ ਹੋਰ ਮਸ਼ੀਨ ਉੱਤੇ ਜਿਸ ਨੋਡ ਨਾਲ ਤੁਸੀਂ ਜੁੜੇ ਹੋ, ਉਹ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦਾ। ਇਹ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।", "login_reset_device_confirm_title": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?", "login_setup_complete_relogin": "ਸੈੱਟਅੱਪ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਤੁਹਾਡਾ ਨੋਡ ਮੁੜ ਚਾਲੂ ਹੋਇਆ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਉਹੀ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਵਰਤ ਕੇ ਮੁੜ ਲਾਗਇਨ ਕਰੋ ਜੋ ਤੁਸੀਂ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਵਰਤੇ ਸਨ।", "login_signin_apple": "Apple ਨਾਲ ਸਾਈਨ ਇਨ ਕਰੋ", diff --git a/client/desktopApp/src/main/resources/localization/pt.json b/client/desktopApp/src/main/resources/localization/pt.json index fa5fa8c..d4d550e 100644 --- a/client/desktopApp/src/main/resources/localization/pt.json +++ b/client/desktopApp/src/main/resources/localization/pt.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Último acesso: {owner}", "login_password_label": "Senha", "login_privacy": "Ver Política de Privacidade", - "login_reset_device": "Redefinir dispositivo", + "login_reset_device": "Redefinir este dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Isso apagará todos os dados locais e retornará ao assistente de configuração. Esta ação não pode ser desfeita.", - "login_reset_device_confirm_title": "Redefinir dispositivo?", + "login_reset_device_confirm_body": "Isso excluirá os dados do nó armazenados NESTE dispositivo e retornará ao assistente de configuração. Um nó ao qual você esteja conectado em outra máquina não é afetado. Isso não pode ser desfeito.", + "login_reset_device_confirm_title": "Redefinir este dispositivo?", "login_setup_complete_relogin": "A configuração foi concluída. O seu nó foi reiniciado, por isso inicie sessão novamente com as mesmas credenciais que utilizou para concluir a configuração.", "login_signin_apple": "Entrar com Apple", "login_signin_google": "Entrar com Google", diff --git a/client/desktopApp/src/main/resources/localization/ru.json b/client/desktopApp/src/main/resources/localization/ru.json index 484e28e..db4bf61 100644 --- a/client/desktopApp/src/main/resources/localization/ru.json +++ b/client/desktopApp/src/main/resources/localization/ru.json @@ -1860,7 +1860,7 @@ "login_privacy": "Посмотреть Политику конфиденциальности", "login_reset_device": "Сбросить устройство", "login_reset_device_cancel": "Отмена", - "login_reset_device_confirm_body": "Это удалит все локальные данные и вернёт мастер настройки. Отменить это действие невозможно.", + "login_reset_device_confirm_body": "Это удалит данные узла, хранящиеся на ЭТОМ устройстве, и вернёт вас к мастеру настройки. Узел, к которому вы подключены на другой машине, затронут не будет. Это действие нельзя отменить.", "login_reset_device_confirm_title": "Сбросить устройство?", "login_setup_complete_relogin": "Настройка завершена. Ваш узел перезапущен, поэтому войдите снова, используя те же учётные данные, что и при настройке.", "login_signin_apple": "Войти через Apple", diff --git a/client/desktopApp/src/main/resources/localization/sw.json b/client/desktopApp/src/main/resources/localization/sw.json index 522bfde..17baf50 100644 --- a/client/desktopApp/src/main/resources/localization/sw.json +++ b/client/desktopApp/src/main/resources/localization/sw.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Mwisho aliyeingia: {owner}", "login_password_label": "Nenosiri", "login_privacy": "Tazama Sera ya Faragha", - "login_reset_device": "Weka upya kifaa", + "login_reset_device": "Weka upya kifaa hiki", "login_reset_device_cancel": "Ghairi", - "login_reset_device_confirm_body": "Hii itafuta data yote ya ndani na kurudi kwa mwongozo wa usanidi. Hatua hii haiwezi kutenduliwa.", - "login_reset_device_confirm_title": "Weka upya kifaa?", + "login_reset_device_confirm_body": "Hii itafuta data ya nodi iliyohifadhiwa kwenye kifaa HIKI na kurudi kwa mchawi wa usanidi. Nodi ambayo umeunganishwa nayo kwenye mashine nyingine haitaathiriwa. Hatua hii haiwezi kutenduliwa.", + "login_reset_device_confirm_title": "Weka upya kifaa hiki?", "login_setup_complete_relogin": "Usanidi umekamilika. Nodi yako imeanzishwa upya, kwa hivyo tafadhali ingia tena ukitumia stakabadhi zilezile ulizotumia kukamilisha usanidi.", "login_signin_apple": "Ingia kwa kutumia Apple", "login_signin_google": "Ingia kwa kutumia Google", diff --git a/client/desktopApp/src/main/resources/localization/ta.json b/client/desktopApp/src/main/resources/localization/ta.json index 34f5c0e..f3a999a 100644 --- a/client/desktopApp/src/main/resources/localization/ta.json +++ b/client/desktopApp/src/main/resources/localization/ta.json @@ -1860,7 +1860,7 @@ "login_privacy": "காண் Privacy Policy", "login_reset_device": "சாதனத்தை மீட்டமை", "login_reset_device_cancel": "ரத்து", - "login_reset_device_confirm_body": "இது அனைத்து உள்ளூர் தரவையும் அழித்து, அமைவு வழிகாட்டிக்கு திரும்பும். இதை மீண்டும் செயல்தவிர்க்க இயலாது.", + "login_reset_device_confirm_body": "இது இந்த சாதனத்தில் சேமிக்கப்பட்டுள்ள நோடு தரவை அழித்து, அமைவு வழிகாட்டிக்குத் திரும்பும். மற்றொரு கணினியில் நீங்கள் இணைந்திருக்கும் நோடு பாதிக்கப்படாது. இந்த செயலை மீள மாற்ற முடியாது.", "login_reset_device_confirm_title": "சாதனத்தை மீட்டமைக்கவா?", "login_setup_complete_relogin": "அமைவு நிறைவடைந்தது. உங்கள் நோடு மறுதொடக்கம் செய்யப்பட்டது, எனவே அமைவை நிறைவு செய்யப் பயன்படுத்திய அதே சான்றுகளுடன் மீண்டும் உள்நுழையவும்.", "login_signin_apple": "Sign in உடன் Apple", diff --git a/client/desktopApp/src/main/resources/localization/te.json b/client/desktopApp/src/main/resources/localization/te.json index 78b6759..57f56c3 100644 --- a/client/desktopApp/src/main/resources/localization/te.json +++ b/client/desktopApp/src/main/resources/localization/te.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "చివరిగా సైన్ ఇన్ చేసినది: {owner}", "login_password_label": "పాస్‌వర్డ్", "login_privacy": "చూడు Privacy Policy", - "login_reset_device": "పరికరాన్ని రీసెట్ చేయండి", + "login_reset_device": "ఈ పరికరాన్ని రీసెట్ చేయండి", "login_reset_device_cancel": "రద్దు చేయి", - "login_reset_device_confirm_body": "ఇది అన్ని స్థానిక డేటాను తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. దీన్ని రద్దు చేయడం సాధ్యం కాదు.", - "login_reset_device_confirm_title": "పరికరాన్ని రీసెట్ చేయాలా?", + "login_reset_device_confirm_body": "ఇది ఈ పరికరంలో నిల్వ చేసిన నోడ్ డేటాను మొత్తం తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. మీరు మరొక యంత్రంలో కనెక్ట్ అయి ఉన్న నోడ్ ప్రభావితం కాదు. ఈ చర్యను రద్దు చేయలేరు.", + "login_reset_device_confirm_title": "ఈ పరికరాన్ని రీసెట్ చేయాలా?", "login_setup_complete_relogin": "సెటప్ పూర్తయింది. మీ నోడ్ పునఃప్రారంభమైంది, కాబట్టి సెటప్ పూర్తి చేయడానికి మీరు ఉపయోగించిన అదే ఆధారాలతో దయచేసి మళ్లీ లాగిన్ అవ్వండి.", "login_signin_apple": "Apple తో సైన్ ఇన్ చేయండి", "login_signin_google": "Google తో సైన్ ఇన్ చేయండి", diff --git a/client/desktopApp/src/main/resources/localization/th.json b/client/desktopApp/src/main/resources/localization/th.json index 78de09e..079e23f 100644 --- a/client/desktopApp/src/main/resources/localization/th.json +++ b/client/desktopApp/src/main/resources/localization/th.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "เข้าสู่ระบบล่าสุด: {owner}", "login_password_label": "รหัสผ่าน", "login_privacy": "ดูนโยบายความเป็นส่วนตัว", - "login_reset_device": "รีเซ็ตอุปกรณ์", + "login_reset_device": "รีเซ็ตอุปกรณ์นี้", "login_reset_device_cancel": "ยกเลิก", - "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลในเครื่องทั้งหมดและกลับสู่วิซาร์ดการตั้งค่า ไม่สามารถย้อนกลับได้", - "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์?", + "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลโหนดที่เก็บอยู่บนอุปกรณ์นี้และกลับไปยังตัวช่วยการตั้งค่า โหนดที่คุณเชื่อมต่ออยู่บนเครื่องอื่นจะไม่ได้รับผลกระทบ การดำเนินการนี้ไม่สามารถยกเลิกได้", + "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์นี้?", "login_setup_complete_relogin": "การตั้งค่าเสร็จสมบูรณ์แล้ว โหนดของคุณได้รีสตาร์ท กรุณาเข้าสู่ระบบอีกครั้งด้วยข้อมูลรับรองเดียวกับที่คุณใช้ในการตั้งค่า", "login_signin_apple": "เข้าสู่ระบบด้วย Apple", "login_signin_google": "เข้าสู่ระบบด้วย Google", diff --git a/client/desktopApp/src/main/resources/localization/tr.json b/client/desktopApp/src/main/resources/localization/tr.json index 9708b87..2bc1988 100644 --- a/client/desktopApp/src/main/resources/localization/tr.json +++ b/client/desktopApp/src/main/resources/localization/tr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Gizlilik Politikasını Görüntüle", "login_reset_device": "Cihazı Sıfırla", "login_reset_device_cancel": "İptal", - "login_reset_device_confirm_body": "Bu işlem tüm yerel verileri silecek ve kurulum sihirbazına geri dönecektir. Bu işlem geri alınamaz.", + "login_reset_device_confirm_body": "Bu işlem, BU cihazda depolanan düğüm verilerini siler ve kurulum sihirbazına döner. Başka bir makinede bağlı olduğunuz bir düğüm etkilenmez. Bu geri alınamaz.", "login_reset_device_confirm_title": "Cihaz sıfırlansın mı?", "login_setup_complete_relogin": "Kurulum tamamlandı. Düğümünüz yeniden başlatıldı; lütfen kurulumu tamamlarken kullandığınız kimlik bilgileriyle yeniden oturum açın.", "login_signin_apple": "Apple ile giriş yap", diff --git a/client/desktopApp/src/main/resources/localization/uk.json b/client/desktopApp/src/main/resources/localization/uk.json index fafcb63..9de68ee 100644 --- a/client/desktopApp/src/main/resources/localization/uk.json +++ b/client/desktopApp/src/main/resources/localization/uk.json @@ -1860,7 +1860,7 @@ "login_privacy": "Переглянути Політику конфіденційності", "login_reset_device": "Скинути пристрій", "login_reset_device_cancel": "Скасувати", - "login_reset_device_confirm_body": "Це видалить усі локальні дані та повернеться до майстра налаштування. Цю дію неможливо скасувати.", + "login_reset_device_confirm_body": "Це видалить дані вузла, збережені НА ЦЬОМУ пристрої, та поверне вас до майстра налаштування. Це не впливає на вузол, до якого ви підключені на іншому комп'ютері. Цю дію неможливо скасувати.", "login_reset_device_confirm_title": "Скинути пристрій?", "login_setup_complete_relogin": "Налаштування завершено. Ваш вузол перезапустився, тому увійдіть знову, використовуючи ті самі облікові дані, з якими ви завершили налаштування.", "login_signin_apple": "Увійти через Apple", diff --git a/client/desktopApp/src/main/resources/localization/ur.json b/client/desktopApp/src/main/resources/localization/ur.json index 7c17d31..cecd77f 100644 --- a/client/desktopApp/src/main/resources/localization/ur.json +++ b/client/desktopApp/src/main/resources/localization/ur.json @@ -1860,7 +1860,7 @@ "login_privacy": "رازداری کی پالیسی دیکھیں", "login_reset_device": "ڈیوائس ری سیٹ کریں", "login_reset_device_cancel": "منسوخ کریں", - "login_reset_device_confirm_body": "یہ تمام مقامی ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس لے جائے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", + "login_reset_device_confirm_body": "یہ اِسی ڈیوائس پر محفوظ نوڈ کا ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس آ جائے گا۔ کسی دوسری مشین پر جس نوڈ سے آپ جڑے ہیں، اُس پر کوئی اثر نہیں پڑے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", "login_reset_device_confirm_title": "ڈیوائس ری سیٹ کریں؟", "login_setup_complete_relogin": "سیٹ اپ مکمل ہو گیا ہے۔ آپ کا نوڈ دوبارہ شروع ہوا ہے، اس لیے براہِ کرم انہی اسناد کے ساتھ دوبارہ لاگ اِن کریں جو آپ نے سیٹ اپ مکمل کرنے کے لیے استعمال کی تھیں۔", "login_signin_apple": "Apple کے ساتھ سائن ان کریں", diff --git a/client/desktopApp/src/main/resources/localization/vi.json b/client/desktopApp/src/main/resources/localization/vi.json index 245869a..24135ce 100644 --- a/client/desktopApp/src/main/resources/localization/vi.json +++ b/client/desktopApp/src/main/resources/localization/vi.json @@ -1860,7 +1860,7 @@ "login_privacy": "Xem chính sách bảo mật", "login_reset_device": "Đặt lại thiết bị", "login_reset_device_cancel": "Hủy", - "login_reset_device_confirm_body": "Thao tác này sẽ xóa tất cả dữ liệu cục bộ và quay lại trình hướng dẫn cài đặt. Hành động này không thể hoàn tác.", + "login_reset_device_confirm_body": "Thao tác này sẽ xóa dữ liệu nút được lưu trữ trên CHÍNH thiết bị này và quay lại trình hướng dẫn cài đặt. Nút mà bạn đang kết nối trên một máy khác sẽ không bị ảnh hưởng. Không thể hoàn tác.", "login_reset_device_confirm_title": "Đặt lại thiết bị?", "login_setup_complete_relogin": "Thiết lập đã hoàn tất. Nút của bạn đã khởi động lại, vui lòng đăng nhập lại bằng đúng thông tin đăng nhập mà bạn đã dùng để hoàn tất thiết lập.", "login_signin_apple": "Đăng nhập bằng Apple", diff --git a/client/desktopApp/src/main/resources/localization/yo.json b/client/desktopApp/src/main/resources/localization/yo.json index d7f8400..c7c0a0f 100644 --- a/client/desktopApp/src/main/resources/localization/yo.json +++ b/client/desktopApp/src/main/resources/localization/yo.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Ìwọlé ìkẹ̀yìn: {owner}", "login_password_label": "Ọ̀rọ̀ Àṣírí", "login_privacy": "Wo Ìlànà Àṣírí", - "login_reset_device": "Tún ẹ̀rọ ṣe", + "login_reset_device": "Tún ẹ̀rọ yìí ṣe", "login_reset_device_cancel": "Fagilé", - "login_reset_device_confirm_body": "Èyí yóò pa gbogbo dátà àdúgbò run kí ó sì padà sí olùṣèlú ìṣètò. Èyí kò lè yípadà.", - "login_reset_device_confirm_title": "Tún ẹ̀rọ ṣe?", + "login_reset_device_confirm_body": "Èyí yóò pa dátà nódù tí a fipamọ́ sórí Ẹ̀RỌ YÌÍ run kí ó sì padà sí olùtọ́nisọ́nà ìṣètò. Èyí kò ní kan nódù tí ẹ ti so pọ̀ mọ́ ẹ̀rọ mìíràn. Èyí kò ṣeépadà.", + "login_reset_device_confirm_title": "Tún ẹ̀rọ yìí ṣe?", "login_setup_complete_relogin": "Ìṣètò ti parí. Node rẹ tún bẹ̀rẹ̀, nítorí náà jọ̀wọ́ wọlé padà pẹ̀lú àwọn ẹ̀rí ìdánimọ̀ kan náà tí o lò láti parí ìṣètò.", "login_signin_apple": "Wọlé pẹ̀lú Apple", "login_signin_google": "Wọlé pẹ̀lú Google", diff --git a/client/desktopApp/src/main/resources/localization/zh.json b/client/desktopApp/src/main/resources/localization/zh.json index 2bcede3..570ceda 100644 --- a/client/desktopApp/src/main/resources/localization/zh.json +++ b/client/desktopApp/src/main/resources/localization/zh.json @@ -1860,7 +1860,7 @@ "login_privacy": "查看隐私政策", "login_reset_device": "重置设备", "login_reset_device_cancel": "取消", - "login_reset_device_confirm_body": "此操作将清除所有本地数据并返回设置向导。此操作无法撤销。", + "login_reset_device_confirm_body": "此操作将清除存储在本设备上的节点数据并返回设置向导。您在其他设备上已连接的节点不会受到影响。此操作无法撤销。", "login_reset_device_confirm_title": "重置设备?", "login_setup_complete_relogin": "设置已完成。您的节点已重新启动,请使用完成设置时使用的相同凭据重新登录。", "login_signin_apple": "使用 Apple 登录", diff --git a/client/iosApp/iosApp/localization/am.json b/client/iosApp/iosApp/localization/am.json index b478e20..6fc10f6 100644 --- a/client/iosApp/iosApp/localization/am.json +++ b/client/iosApp/iosApp/localization/am.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "መጨረሻ የገባው: {owner}", "login_password_label": "የይለፍ ቃል", "login_privacy": "የግላዊነት መመሪያን ይመልከቱ", - "login_reset_device": "መሣሪያ ዳግም አስጀምር", + "login_reset_device": "ይህን መሣሪያ ዳግም አስጀምር", "login_reset_device_cancel": "ሰርዝ", - "login_reset_device_confirm_body": "ይህ ሁሉንም አካባቢያዊ ውሂብ ያጠፋና ወደ ማዋቀሪያ አዋቂ ይመልሳል። ይህ ድርጊት ሊቀለበስ አይችልም።", - "login_reset_device_confirm_title": "መሣሪያ ዳግም ይጀምር?", + "login_reset_device_confirm_body": "ይህ በዚህ መሣሪያ ላይ የተቀመጠውን የኖድ ውሂብ ያጠፋል እና ወደ የማዋቀሪያ አዋቂው ይመለሳል። በሌላ መሣሪያ ላይ የተገናኙበት ኖድ ግን ተጽዕኖ አይደርስበትም። ይህ ድርጊት መልሰው የማይቀር ነው።", + "login_reset_device_confirm_title": "ይህን መሣሪያ ዳግም ማስጀመር?", "login_setup_complete_relogin": "ማዋቀሩ ተጠናቅቋል። መስቀለኛዎ እንደገና ስለተጀመረ፣ እባክዎ ማዋቀሩን ለማጠናቀቅ በተጠቀሙባቸው ተመሳሳይ የመግቢያ መረጃዎች እንደገና ይግቡ።", "login_signin_apple": "በApple ይግቡ", "login_signin_google": "በGoogle ይግቡ", diff --git a/client/iosApp/iosApp/localization/ar.json b/client/iosApp/iosApp/localization/ar.json index 3b025d4..52541c6 100644 --- a/client/iosApp/iosApp/localization/ar.json +++ b/client/iosApp/iosApp/localization/ar.json @@ -1860,7 +1860,7 @@ "login_privacy": "عرض سياسة الخصوصية", "login_reset_device": "إعادة ضبط الجهاز", "login_reset_device_cancel": "إلغاء", - "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح جميع البيانات المحلية والعودة إلى معالج الإعداد. لا يمكن التراجع عن هذا الإجراء.", + "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح بيانات العقدة المخزّنة على هذا الجهاز والعودة إلى معالج الإعداد. أما أي عقدة تتصل بها على جهاز آخر فلن تتأثر. لا يمكن التراجع عن هذا الإجراء.", "login_reset_device_confirm_title": "إعادة ضبط الجهاز؟", "login_setup_complete_relogin": "اكتمل الإعداد. أُعيد تشغيل العقدة، لذا يُرجى تسجيل الدخول مجددًا باستخدام بيانات الاعتماد نفسها التي استخدمتها لإكمال الإعداد.", "login_signin_apple": "تسجيل الدخول باستخدام Apple", diff --git a/client/iosApp/iosApp/localization/bn.json b/client/iosApp/iosApp/localization/bn.json index 30f1052..cbb52b3 100644 --- a/client/iosApp/iosApp/localization/bn.json +++ b/client/iosApp/iosApp/localization/bn.json @@ -1861,7 +1861,7 @@ "login_privacy": "গোপনীয়তা নীতি দেখুন", "login_reset_device": "ডিভাইস রিসেট করুন", "login_reset_device_cancel": "বাতিল", - "login_reset_device_confirm_body": "এটি সমস্ত স্থানীয় ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "login_reset_device_confirm_body": "এটি এই ডিভাইসে সংরক্ষিত নোডের ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। অন্য কোনো মেশিনে আপনি যে নোডের সাথে সংযুক্ত আছেন, সেটি প্রভাবিত হবে না। এটি পূর্বাবস্থায় ফেরানো যাবে না।", "login_reset_device_confirm_title": "ডিভাইস রিসেট করবেন?", "login_setup_complete_relogin": "সেটআপ সম্পূর্ণ হয়েছে। আপনার নোড পুনরায় চালু হয়েছে, তাই সেটআপ সম্পূর্ণ করতে আপনি যে শংসাপত্রগুলি ব্যবহার করেছিলেন সেগুলি দিয়েই আবার লগ ইন করুন।", "login_signin_apple": "Apple দিয়ে সাইন ইন করুন", diff --git a/client/iosApp/iosApp/localization/de.json b/client/iosApp/iosApp/localization/de.json index 74e684c..da1e0ac 100644 --- a/client/iosApp/iosApp/localization/de.json +++ b/client/iosApp/iosApp/localization/de.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Zuletzt angemeldet: {owner}", "login_password_label": "Passwort", "login_privacy": "Datenschutzerklärung anzeigen", - "login_reset_device": "Gerät zurücksetzen", + "login_reset_device": "Dieses Gerät zurücksetzen", "login_reset_device_cancel": "Abbrechen", - "login_reset_device_confirm_body": "Dadurch werden alle lokalen Daten gelöscht und Sie werden zum Einrichtungsassistenten zurückgeleitet. Diese Aktion kann nicht rückgängig gemacht werden.", - "login_reset_device_confirm_title": "Gerät zurücksetzen?", + "login_reset_device_confirm_body": "Dies löscht die Knotendaten, die auf DIESEM Gerät gespeichert sind, und kehrt zum Einrichtungsassistenten zurück. Ein Knoten, mit dem Sie auf einem anderen Rechner verbunden sind, ist davon nicht betroffen. Dies kann nicht rückgängig gemacht werden.", + "login_reset_device_confirm_title": "Dieses Gerät zurücksetzen?", "login_setup_complete_relogin": "Die Einrichtung ist abgeschlossen. Ihr Knoten wurde neu gestartet – bitte melden Sie sich erneut mit denselben Zugangsdaten an, die Sie für die Einrichtung verwendet haben.", "login_signin_apple": "Mit Apple anmelden", "login_signin_google": "Mit Google anmelden", diff --git a/client/iosApp/iosApp/localization/en.json b/client/iosApp/iosApp/localization/en.json index 8561878..17f1f9c 100644 --- a/client/iosApp/iosApp/localization/en.json +++ b/client/iosApp/iosApp/localization/en.json @@ -1928,10 +1928,10 @@ "login_owner_hint": "Last signed in: {owner}", "login_password_label": "Password", "login_privacy": "View Privacy Policy", - "login_reset_device": "Reset device", + "login_reset_device": "Reset this device", "login_reset_device_cancel": "Cancel", - "login_reset_device_confirm_body": "This will erase all local data and return to the setup wizard. This cannot be undone.", - "login_reset_device_confirm_title": "Reset device?", + "login_reset_device_confirm_body": "This erases the node data stored on THIS device and returns to the setup wizard. A node you are connected to on another machine is not affected. This cannot be undone.", + "login_reset_device_confirm_title": "Reset this device?", "login_setup_complete_relogin": "Setup is complete. Your node restarted, so please log back in with the same credentials you used to complete setup.", "login_signin_apple": "Sign in with Apple", "login_signin_google": "Sign in with Google", diff --git a/client/iosApp/iosApp/localization/es.json b/client/iosApp/iosApp/localization/es.json index 66a6762..fe02dbf 100644 --- a/client/iosApp/iosApp/localization/es.json +++ b/client/iosApp/iosApp/localization/es.json @@ -1860,7 +1860,7 @@ "login_privacy": "Ver Política de Privacidad", "login_reset_device": "Restablecer dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Esto borrará todos los datos locales y volverás al asistente de configuración. Esta acción no se puede deshacer.", + "login_reset_device_confirm_body": "Esto borrará los datos del nodo almacenados en ESTE dispositivo y volverá al asistente de configuración. Un nodo al que estés conectado en otra máquina no se verá afectado. Esta acción no se puede deshacer.", "login_reset_device_confirm_title": "¿Restablecer dispositivo?", "login_setup_complete_relogin": "La configuración ha finalizado. Tu nodo se reinició, así que vuelve a iniciar sesión con las mismas credenciales que usaste para completar la configuración.", "login_signin_apple": "Iniciar sesión con Apple", diff --git a/client/iosApp/iosApp/localization/fa.json b/client/iosApp/iosApp/localization/fa.json index d9caea0..38b931c 100644 --- a/client/iosApp/iosApp/localization/fa.json +++ b/client/iosApp/iosApp/localization/fa.json @@ -1866,7 +1866,7 @@ "login_privacy": "مشاهده سیاست حریم خصوصی", "login_reset_device": "بازنشانی دستگاه", "login_reset_device_cancel": "لغو", - "login_reset_device_confirm_body": "این عمل تمام داده‌های محلی را پاک می‌کند و به راه‌اندازی اولیه بازمی‌گردد. این کار قابل بازگشت نیست.", + "login_reset_device_confirm_body": "این کار داده‌های گره ذخیره‌شده روی همین دستگاه را پاک می‌کند و به دستیار راه‌اندازی بازمی‌گردد. گرهی که روی دستگاهی دیگر به آن متصل هستید تحت تأثیر قرار نمی‌گیرد. این کار قابل بازگشت نیست.", "login_reset_device_confirm_title": "بازنشانی دستگاه؟", "login_setup_complete_relogin": "راه‌اندازی کامل شد. نود شما دوباره راه‌اندازی شد؛ لطفاً با همان اطلاعات ورودی که برای تکمیل راه‌اندازی استفاده کردید، دوباره وارد شوید.", "login_signin_apple": "ورود باستخدام Apple", diff --git a/client/iosApp/iosApp/localization/fr.json b/client/iosApp/iosApp/localization/fr.json index 10abf12..fe1f844 100644 --- a/client/iosApp/iosApp/localization/fr.json +++ b/client/iosApp/iosApp/localization/fr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Voir la Politique de Confidentialité", "login_reset_device": "Réinitialiser l'appareil", "login_reset_device_cancel": "Annuler", - "login_reset_device_confirm_body": "Cela effacera toutes les données locales et vous ramènera à l'assistant de configuration. Cette action est irréversible.", + "login_reset_device_confirm_body": "Cela efface les données du nœud stockées sur CET appareil et revient à l'assistant de configuration. Un nœud auquel vous êtes connecté sur une autre machine n'est pas affecté. Cela ne peut pas être annulé.", "login_reset_device_confirm_title": "Réinitialiser l'appareil ?", "login_setup_complete_relogin": "La configuration est terminée. Votre nœud a redémarré : veuillez vous reconnecter avec les mêmes identifiants que ceux utilisés pour terminer la configuration.", "login_signin_apple": "Se connecter avec Apple", diff --git a/client/iosApp/iosApp/localization/ha.json b/client/iosApp/iosApp/localization/ha.json index 7ac4491..f5f91af 100644 --- a/client/iosApp/iosApp/localization/ha.json +++ b/client/iosApp/iosApp/localization/ha.json @@ -1860,7 +1860,7 @@ "login_privacy": "Duba Sera na Asirta", "login_reset_device": "Sake saita na'ura", "login_reset_device_cancel": "Soke", - "login_reset_device_confirm_body": "Wannan zai share duk bayanan gida kuma ya koma zuwa jagorar saiti. Ba za a iya maido da wannan ba.", + "login_reset_device_confirm_body": "Wannan zai share bayanan kumburin da aka ajiye a WANNAN na'urar kuma ya koma zuwa jagorar saiti. Kumburin da kuke haɗe da shi a wata na'ura ba zai sami tasiri ba. Ba za a iya mayar da wannan aiki ba.", "login_reset_device_confirm_title": "Sake saita na'ura?", "login_setup_complete_relogin": "An kammala saitin. Node ɗinka ya sake farawa, don haka ka sake shiga da bayanan shiga guda ɗaya da ka yi amfani da su wajen kammala saitin.", "login_signin_apple": "Shiga tare da Apple", diff --git a/client/iosApp/iosApp/localization/hi.json b/client/iosApp/iosApp/localization/hi.json index 7654f45..504fa17 100644 --- a/client/iosApp/iosApp/localization/hi.json +++ b/client/iosApp/iosApp/localization/hi.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "पिछली बार साइन इन किया: {owner}", "login_password_label": "पासवर्ड", "login_privacy": "गोपनीयता नीति देखें", - "login_reset_device": "डिवाइस रीसेट करें", + "login_reset_device": "इस डिवाइस को रीसेट करें", "login_reset_device_cancel": "रद्द करें", - "login_reset_device_confirm_body": "यह सभी स्थानीय डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। इसे पूर्ववत नहीं किया जा सकता।", - "login_reset_device_confirm_title": "डिवाइस रीसेट करें?", + "login_reset_device_confirm_body": "यह इस डिवाइस पर संग्रहीत नोड डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। किसी अन्य मशीन पर जिस नोड से आप जुड़े हैं, वह प्रभावित नहीं होगा। इसे पूर्ववत नहीं किया जा सकता।", + "login_reset_device_confirm_title": "इस डिवाइस को रीसेट करें?", "login_setup_complete_relogin": "सेटअप पूरा हो गया है। आपका नोड फिर से चालू हुआ है, इसलिए कृपया उन्हीं क्रेडेंशियल से दोबारा लॉग इन करें जिनका उपयोग आपने सेटअप पूरा करने के लिए किया था।", "login_signin_apple": "Apple से साइन इन करें", "login_signin_google": "Google से साइन इन करें", diff --git a/client/iosApp/iosApp/localization/id.json b/client/iosApp/iosApp/localization/id.json index 809bf6a..d51d506 100644 --- a/client/iosApp/iosApp/localization/id.json +++ b/client/iosApp/iosApp/localization/id.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Terakhir masuk: {owner}", "login_password_label": "Kata Sandi", "login_privacy": "Lihat Kebijakan Privasi", - "login_reset_device": "Atur ulang perangkat", + "login_reset_device": "Atur ulang perangkat ini", "login_reset_device_cancel": "Batal", - "login_reset_device_confirm_body": "Ini akan menghapus semua data lokal dan kembali ke wizard penyiapan. Tindakan ini tidak dapat dibatalkan.", - "login_reset_device_confirm_title": "Atur ulang perangkat?", + "login_reset_device_confirm_body": "Ini akan menghapus data node yang tersimpan di perangkat INI dan kembali ke wizard penyiapan. Node tempat Anda terhubung di mesin lain tidak terpengaruh. Tindakan ini tidak dapat dibatalkan.", + "login_reset_device_confirm_title": "Atur ulang perangkat ini?", "login_setup_complete_relogin": "Penyiapan selesai. Node Anda telah dimulai ulang, jadi silakan masuk kembali dengan kredensial yang sama seperti yang Anda gunakan saat menyelesaikan penyiapan.", "login_signin_apple": "Masuk dengan Apple", "login_signin_google": "Masuk dengan Google", diff --git a/client/iosApp/iosApp/localization/it.json b/client/iosApp/iosApp/localization/it.json index 1748af9..525dd69 100644 --- a/client/iosApp/iosApp/localization/it.json +++ b/client/iosApp/iosApp/localization/it.json @@ -1860,7 +1860,7 @@ "login_privacy": "Visualizza Informativa sulla Privacy", "login_reset_device": "Ripristina dispositivo", "login_reset_device_cancel": "Annulla", - "login_reset_device_confirm_body": "Verranno cancellati tutti i dati locali e si tornerà alla procedura guidata di configurazione. Questa azione non può essere annullata.", + "login_reset_device_confirm_body": "Verranno cancellati i dati del nodo memorizzati su QUESTO dispositivo e si tornerà alla procedura guidata di configurazione. Un nodo a cui sei connesso su un'altra macchina non subisce modifiche. Questa azione non può essere annullata.", "login_reset_device_confirm_title": "Ripristinare il dispositivo?", "login_setup_complete_relogin": "La configurazione è completata. Il tuo nodo è stato riavviato: accedi di nuovo con le stesse credenziali che hai usato per completare la configurazione.", "login_signin_apple": "Accedi con Apple", diff --git a/client/iosApp/iosApp/localization/ja.json b/client/iosApp/iosApp/localization/ja.json index 07f3851..371b63a 100644 --- a/client/iosApp/iosApp/localization/ja.json +++ b/client/iosApp/iosApp/localization/ja.json @@ -1860,7 +1860,7 @@ "login_privacy": "プライバシーポリシーを表示", "login_reset_device": "デバイスをリセット", "login_reset_device_cancel": "キャンセル", - "login_reset_device_confirm_body": "すべてのローカルデータが消去され、セットアップウィザードに戻ります。この操作は元に戻せません。", + "login_reset_device_confirm_body": "このデバイスに保存されているノードデータが消去され、セットアップウィザードに戻ります。別のマシン上で接続しているノードには影響しません。この操作は元に戻せません。", "login_reset_device_confirm_title": "デバイスをリセットしますか?", "login_setup_complete_relogin": "セットアップが完了しました。ノードが再起動したため、セットアップで使用したものと同じ認証情報で再度ログインしてください。", "login_signin_apple": "Appleでサインイン", diff --git a/client/iosApp/iosApp/localization/ko.json b/client/iosApp/iosApp/localization/ko.json index a766a42..e46b77f 100644 --- a/client/iosApp/iosApp/localization/ko.json +++ b/client/iosApp/iosApp/localization/ko.json @@ -1860,7 +1860,7 @@ "login_privacy": "개인정보 보호정책 보기", "login_reset_device": "기기 재설정", "login_reset_device_cancel": "취소", - "login_reset_device_confirm_body": "모든 로컬 데이터가 삭제되고 설정 마법사로 돌아갑니다. 이 작업은 취소할 수 없습니다.", + "login_reset_device_confirm_body": "이 작업은 이 기기에 저장된 노드 데이터를 삭제하고 설정 마법사로 돌아갑니다. 다른 기기에서 연결해 사용 중인 노드는 영향을 받지 않습니다. 이 작업은 취소할 수 없습니다.", "login_reset_device_confirm_title": "기기를 재설정하시겠습니까?", "login_setup_complete_relogin": "설정이 완료되었습니다. 노드가 재시작되었으므로 설정에 사용한 것과 동일한 자격 증명으로 다시 로그인해 주세요.", "login_signin_apple": "Apple로 로그인", diff --git a/client/iosApp/iosApp/localization/mr.json b/client/iosApp/iosApp/localization/mr.json index 0c7cf1f..35d3208 100644 --- a/client/iosApp/iosApp/localization/mr.json +++ b/client/iosApp/iosApp/localization/mr.json @@ -1860,7 +1860,7 @@ "login_privacy": "गोपनीयता धोरण पाहा", "login_reset_device": "डिव्हाइस रीसेट करा", "login_reset_device_cancel": "रद्द करा", - "login_reset_device_confirm_body": "हे सर्व स्थानिक डेटा मिटवेल आणि सेटअप विझार्डवर परत जाईल. हे पूर्ववत केले जाऊ शकत नाही.", + "login_reset_device_confirm_body": "यामुळे याच डिव्हाइसवर साठवलेला नोड डेटा पुसला जाईल आणि सेटअप विझार्डवर परत जाईल. तुम्ही दुसऱ्या मशीनवरील ज्या नोडशी जोडलेले आहात, त्यावर याचा परिणाम होत नाही. हे पूर्ववत केले जाऊ शकत नाही.", "login_reset_device_confirm_title": "डिव्हाइस रीसेट करायचे?", "login_setup_complete_relogin": "सेटअप पूर्ण झाला आहे. तुमचा नोड पुन्हा सुरू झाला आहे, त्यामुळे सेटअप पूर्ण करण्यासाठी वापरलेल्या त्याच क्रेडेन्शियल्सने कृपया पुन्हा लॉग इन करा.", "login_signin_apple": "Apple सह साइन इन करा", diff --git a/client/iosApp/iosApp/localization/my.json b/client/iosApp/iosApp/localization/my.json index aa01418..37d756b 100644 --- a/client/iosApp/iosApp/localization/my.json +++ b/client/iosApp/iosApp/localization/my.json @@ -1860,7 +1860,7 @@ "login_privacy": "ကိုယ်ရေးကာကွယ်မှု မူဝါဒ ကြည့်ရှုပါ", "login_reset_device": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်ပါ", "login_reset_device_cancel": "ပယ်ဖျက်", - "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဒေသတွင်းဒေတာအားလုံးကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ကို ပြန်ဖြည့်၍မရပါ။", + "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဤစက်ပေါ်တွင် သိမ်းဆည်းထားသော node ဒေတာကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ သင် အခြားစက်တွင် ချိတ်ဆက်ထားသည့် node သည် ထိခိုက်မည် မဟုတ်ပါ။ ဤလုပ်ဆောင်ချက်ကို ပြန်မလုပ်နိုင်ပါ။", "login_reset_device_confirm_title": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်မည်လား?", "login_setup_complete_relogin": "စနစ်ထည့်သွင်းမှု ပြီးဆုံးပါပြီ။ သင့် node ပြန်လည်စတင်ခဲ့သဖြင့် စနစ်ထည့်သွင်းရာတွင် အသုံးပြုခဲ့သည့် အထောက်အထားများဖြင့်ပင် ပြန်လည်ဝင်ရောက်ပါ။", "login_signin_apple": "Apple ဖြင့် ဝင်ရောက်", diff --git a/client/iosApp/iosApp/localization/pa.json b/client/iosApp/iosApp/localization/pa.json index ebf8145..b5d51c5 100644 --- a/client/iosApp/iosApp/localization/pa.json +++ b/client/iosApp/iosApp/localization/pa.json @@ -1860,7 +1860,7 @@ "login_privacy": "ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਦੇਖੋ", "login_reset_device": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰੋ", "login_reset_device_cancel": "ਰੱਦ ਕਰੋ", - "login_reset_device_confirm_body": "ਇਹ ਸਾਰਾ ਸਥਾਨਕ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਇਸ ਨੂੰ ਪਹਿਲਾਂ ਵਾਲੀ ਸਥਿਤੀ ਵਿੱਚ ਨਹੀਂ ਲਿਆਂਦਾ ਜਾ ਸਕਦਾ।", + "login_reset_device_confirm_body": "ਇਹ ਇਸ ਡਿਵਾਈਸ 'ਤੇ ਸਟੋਰ ਕੀਤਾ ਨੋਡ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਕਿਸੇ ਹੋਰ ਮਸ਼ੀਨ ਉੱਤੇ ਜਿਸ ਨੋਡ ਨਾਲ ਤੁਸੀਂ ਜੁੜੇ ਹੋ, ਉਹ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦਾ। ਇਹ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।", "login_reset_device_confirm_title": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?", "login_setup_complete_relogin": "ਸੈੱਟਅੱਪ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਤੁਹਾਡਾ ਨੋਡ ਮੁੜ ਚਾਲੂ ਹੋਇਆ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਉਹੀ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਵਰਤ ਕੇ ਮੁੜ ਲਾਗਇਨ ਕਰੋ ਜੋ ਤੁਸੀਂ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਵਰਤੇ ਸਨ।", "login_signin_apple": "Apple ਨਾਲ ਸਾਈਨ ਇਨ ਕਰੋ", diff --git a/client/iosApp/iosApp/localization/pt.json b/client/iosApp/iosApp/localization/pt.json index fa5fa8c..d4d550e 100644 --- a/client/iosApp/iosApp/localization/pt.json +++ b/client/iosApp/iosApp/localization/pt.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Último acesso: {owner}", "login_password_label": "Senha", "login_privacy": "Ver Política de Privacidade", - "login_reset_device": "Redefinir dispositivo", + "login_reset_device": "Redefinir este dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Isso apagará todos os dados locais e retornará ao assistente de configuração. Esta ação não pode ser desfeita.", - "login_reset_device_confirm_title": "Redefinir dispositivo?", + "login_reset_device_confirm_body": "Isso excluirá os dados do nó armazenados NESTE dispositivo e retornará ao assistente de configuração. Um nó ao qual você esteja conectado em outra máquina não é afetado. Isso não pode ser desfeito.", + "login_reset_device_confirm_title": "Redefinir este dispositivo?", "login_setup_complete_relogin": "A configuração foi concluída. O seu nó foi reiniciado, por isso inicie sessão novamente com as mesmas credenciais que utilizou para concluir a configuração.", "login_signin_apple": "Entrar com Apple", "login_signin_google": "Entrar com Google", diff --git a/client/iosApp/iosApp/localization/ru.json b/client/iosApp/iosApp/localization/ru.json index 484e28e..db4bf61 100644 --- a/client/iosApp/iosApp/localization/ru.json +++ b/client/iosApp/iosApp/localization/ru.json @@ -1860,7 +1860,7 @@ "login_privacy": "Посмотреть Политику конфиденциальности", "login_reset_device": "Сбросить устройство", "login_reset_device_cancel": "Отмена", - "login_reset_device_confirm_body": "Это удалит все локальные данные и вернёт мастер настройки. Отменить это действие невозможно.", + "login_reset_device_confirm_body": "Это удалит данные узла, хранящиеся на ЭТОМ устройстве, и вернёт вас к мастеру настройки. Узел, к которому вы подключены на другой машине, затронут не будет. Это действие нельзя отменить.", "login_reset_device_confirm_title": "Сбросить устройство?", "login_setup_complete_relogin": "Настройка завершена. Ваш узел перезапущен, поэтому войдите снова, используя те же учётные данные, что и при настройке.", "login_signin_apple": "Войти через Apple", diff --git a/client/iosApp/iosApp/localization/sw.json b/client/iosApp/iosApp/localization/sw.json index 522bfde..17baf50 100644 --- a/client/iosApp/iosApp/localization/sw.json +++ b/client/iosApp/iosApp/localization/sw.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Mwisho aliyeingia: {owner}", "login_password_label": "Nenosiri", "login_privacy": "Tazama Sera ya Faragha", - "login_reset_device": "Weka upya kifaa", + "login_reset_device": "Weka upya kifaa hiki", "login_reset_device_cancel": "Ghairi", - "login_reset_device_confirm_body": "Hii itafuta data yote ya ndani na kurudi kwa mwongozo wa usanidi. Hatua hii haiwezi kutenduliwa.", - "login_reset_device_confirm_title": "Weka upya kifaa?", + "login_reset_device_confirm_body": "Hii itafuta data ya nodi iliyohifadhiwa kwenye kifaa HIKI na kurudi kwa mchawi wa usanidi. Nodi ambayo umeunganishwa nayo kwenye mashine nyingine haitaathiriwa. Hatua hii haiwezi kutenduliwa.", + "login_reset_device_confirm_title": "Weka upya kifaa hiki?", "login_setup_complete_relogin": "Usanidi umekamilika. Nodi yako imeanzishwa upya, kwa hivyo tafadhali ingia tena ukitumia stakabadhi zilezile ulizotumia kukamilisha usanidi.", "login_signin_apple": "Ingia kwa kutumia Apple", "login_signin_google": "Ingia kwa kutumia Google", diff --git a/client/iosApp/iosApp/localization/ta.json b/client/iosApp/iosApp/localization/ta.json index 34f5c0e..f3a999a 100644 --- a/client/iosApp/iosApp/localization/ta.json +++ b/client/iosApp/iosApp/localization/ta.json @@ -1860,7 +1860,7 @@ "login_privacy": "காண் Privacy Policy", "login_reset_device": "சாதனத்தை மீட்டமை", "login_reset_device_cancel": "ரத்து", - "login_reset_device_confirm_body": "இது அனைத்து உள்ளூர் தரவையும் அழித்து, அமைவு வழிகாட்டிக்கு திரும்பும். இதை மீண்டும் செயல்தவிர்க்க இயலாது.", + "login_reset_device_confirm_body": "இது இந்த சாதனத்தில் சேமிக்கப்பட்டுள்ள நோடு தரவை அழித்து, அமைவு வழிகாட்டிக்குத் திரும்பும். மற்றொரு கணினியில் நீங்கள் இணைந்திருக்கும் நோடு பாதிக்கப்படாது. இந்த செயலை மீள மாற்ற முடியாது.", "login_reset_device_confirm_title": "சாதனத்தை மீட்டமைக்கவா?", "login_setup_complete_relogin": "அமைவு நிறைவடைந்தது. உங்கள் நோடு மறுதொடக்கம் செய்யப்பட்டது, எனவே அமைவை நிறைவு செய்யப் பயன்படுத்திய அதே சான்றுகளுடன் மீண்டும் உள்நுழையவும்.", "login_signin_apple": "Sign in உடன் Apple", diff --git a/client/iosApp/iosApp/localization/te.json b/client/iosApp/iosApp/localization/te.json index 78b6759..57f56c3 100644 --- a/client/iosApp/iosApp/localization/te.json +++ b/client/iosApp/iosApp/localization/te.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "చివరిగా సైన్ ఇన్ చేసినది: {owner}", "login_password_label": "పాస్‌వర్డ్", "login_privacy": "చూడు Privacy Policy", - "login_reset_device": "పరికరాన్ని రీసెట్ చేయండి", + "login_reset_device": "ఈ పరికరాన్ని రీసెట్ చేయండి", "login_reset_device_cancel": "రద్దు చేయి", - "login_reset_device_confirm_body": "ఇది అన్ని స్థానిక డేటాను తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. దీన్ని రద్దు చేయడం సాధ్యం కాదు.", - "login_reset_device_confirm_title": "పరికరాన్ని రీసెట్ చేయాలా?", + "login_reset_device_confirm_body": "ఇది ఈ పరికరంలో నిల్వ చేసిన నోడ్ డేటాను మొత్తం తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. మీరు మరొక యంత్రంలో కనెక్ట్ అయి ఉన్న నోడ్ ప్రభావితం కాదు. ఈ చర్యను రద్దు చేయలేరు.", + "login_reset_device_confirm_title": "ఈ పరికరాన్ని రీసెట్ చేయాలా?", "login_setup_complete_relogin": "సెటప్ పూర్తయింది. మీ నోడ్ పునఃప్రారంభమైంది, కాబట్టి సెటప్ పూర్తి చేయడానికి మీరు ఉపయోగించిన అదే ఆధారాలతో దయచేసి మళ్లీ లాగిన్ అవ్వండి.", "login_signin_apple": "Apple తో సైన్ ఇన్ చేయండి", "login_signin_google": "Google తో సైన్ ఇన్ చేయండి", diff --git a/client/iosApp/iosApp/localization/th.json b/client/iosApp/iosApp/localization/th.json index 78de09e..079e23f 100644 --- a/client/iosApp/iosApp/localization/th.json +++ b/client/iosApp/iosApp/localization/th.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "เข้าสู่ระบบล่าสุด: {owner}", "login_password_label": "รหัสผ่าน", "login_privacy": "ดูนโยบายความเป็นส่วนตัว", - "login_reset_device": "รีเซ็ตอุปกรณ์", + "login_reset_device": "รีเซ็ตอุปกรณ์นี้", "login_reset_device_cancel": "ยกเลิก", - "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลในเครื่องทั้งหมดและกลับสู่วิซาร์ดการตั้งค่า ไม่สามารถย้อนกลับได้", - "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์?", + "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลโหนดที่เก็บอยู่บนอุปกรณ์นี้และกลับไปยังตัวช่วยการตั้งค่า โหนดที่คุณเชื่อมต่ออยู่บนเครื่องอื่นจะไม่ได้รับผลกระทบ การดำเนินการนี้ไม่สามารถยกเลิกได้", + "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์นี้?", "login_setup_complete_relogin": "การตั้งค่าเสร็จสมบูรณ์แล้ว โหนดของคุณได้รีสตาร์ท กรุณาเข้าสู่ระบบอีกครั้งด้วยข้อมูลรับรองเดียวกับที่คุณใช้ในการตั้งค่า", "login_signin_apple": "เข้าสู่ระบบด้วย Apple", "login_signin_google": "เข้าสู่ระบบด้วย Google", diff --git a/client/iosApp/iosApp/localization/tr.json b/client/iosApp/iosApp/localization/tr.json index 9708b87..2bc1988 100644 --- a/client/iosApp/iosApp/localization/tr.json +++ b/client/iosApp/iosApp/localization/tr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Gizlilik Politikasını Görüntüle", "login_reset_device": "Cihazı Sıfırla", "login_reset_device_cancel": "İptal", - "login_reset_device_confirm_body": "Bu işlem tüm yerel verileri silecek ve kurulum sihirbazına geri dönecektir. Bu işlem geri alınamaz.", + "login_reset_device_confirm_body": "Bu işlem, BU cihazda depolanan düğüm verilerini siler ve kurulum sihirbazına döner. Başka bir makinede bağlı olduğunuz bir düğüm etkilenmez. Bu geri alınamaz.", "login_reset_device_confirm_title": "Cihaz sıfırlansın mı?", "login_setup_complete_relogin": "Kurulum tamamlandı. Düğümünüz yeniden başlatıldı; lütfen kurulumu tamamlarken kullandığınız kimlik bilgileriyle yeniden oturum açın.", "login_signin_apple": "Apple ile giriş yap", diff --git a/client/iosApp/iosApp/localization/uk.json b/client/iosApp/iosApp/localization/uk.json index fafcb63..9de68ee 100644 --- a/client/iosApp/iosApp/localization/uk.json +++ b/client/iosApp/iosApp/localization/uk.json @@ -1860,7 +1860,7 @@ "login_privacy": "Переглянути Політику конфіденційності", "login_reset_device": "Скинути пристрій", "login_reset_device_cancel": "Скасувати", - "login_reset_device_confirm_body": "Це видалить усі локальні дані та повернеться до майстра налаштування. Цю дію неможливо скасувати.", + "login_reset_device_confirm_body": "Це видалить дані вузла, збережені НА ЦЬОМУ пристрої, та поверне вас до майстра налаштування. Це не впливає на вузол, до якого ви підключені на іншому комп'ютері. Цю дію неможливо скасувати.", "login_reset_device_confirm_title": "Скинути пристрій?", "login_setup_complete_relogin": "Налаштування завершено. Ваш вузол перезапустився, тому увійдіть знову, використовуючи ті самі облікові дані, з якими ви завершили налаштування.", "login_signin_apple": "Увійти через Apple", diff --git a/client/iosApp/iosApp/localization/ur.json b/client/iosApp/iosApp/localization/ur.json index 7c17d31..cecd77f 100644 --- a/client/iosApp/iosApp/localization/ur.json +++ b/client/iosApp/iosApp/localization/ur.json @@ -1860,7 +1860,7 @@ "login_privacy": "رازداری کی پالیسی دیکھیں", "login_reset_device": "ڈیوائس ری سیٹ کریں", "login_reset_device_cancel": "منسوخ کریں", - "login_reset_device_confirm_body": "یہ تمام مقامی ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس لے جائے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", + "login_reset_device_confirm_body": "یہ اِسی ڈیوائس پر محفوظ نوڈ کا ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس آ جائے گا۔ کسی دوسری مشین پر جس نوڈ سے آپ جڑے ہیں، اُس پر کوئی اثر نہیں پڑے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", "login_reset_device_confirm_title": "ڈیوائس ری سیٹ کریں؟", "login_setup_complete_relogin": "سیٹ اپ مکمل ہو گیا ہے۔ آپ کا نوڈ دوبارہ شروع ہوا ہے، اس لیے براہِ کرم انہی اسناد کے ساتھ دوبارہ لاگ اِن کریں جو آپ نے سیٹ اپ مکمل کرنے کے لیے استعمال کی تھیں۔", "login_signin_apple": "Apple کے ساتھ سائن ان کریں", diff --git a/client/iosApp/iosApp/localization/vi.json b/client/iosApp/iosApp/localization/vi.json index 245869a..24135ce 100644 --- a/client/iosApp/iosApp/localization/vi.json +++ b/client/iosApp/iosApp/localization/vi.json @@ -1860,7 +1860,7 @@ "login_privacy": "Xem chính sách bảo mật", "login_reset_device": "Đặt lại thiết bị", "login_reset_device_cancel": "Hủy", - "login_reset_device_confirm_body": "Thao tác này sẽ xóa tất cả dữ liệu cục bộ và quay lại trình hướng dẫn cài đặt. Hành động này không thể hoàn tác.", + "login_reset_device_confirm_body": "Thao tác này sẽ xóa dữ liệu nút được lưu trữ trên CHÍNH thiết bị này và quay lại trình hướng dẫn cài đặt. Nút mà bạn đang kết nối trên một máy khác sẽ không bị ảnh hưởng. Không thể hoàn tác.", "login_reset_device_confirm_title": "Đặt lại thiết bị?", "login_setup_complete_relogin": "Thiết lập đã hoàn tất. Nút của bạn đã khởi động lại, vui lòng đăng nhập lại bằng đúng thông tin đăng nhập mà bạn đã dùng để hoàn tất thiết lập.", "login_signin_apple": "Đăng nhập bằng Apple", diff --git a/client/iosApp/iosApp/localization/yo.json b/client/iosApp/iosApp/localization/yo.json index d7f8400..c7c0a0f 100644 --- a/client/iosApp/iosApp/localization/yo.json +++ b/client/iosApp/iosApp/localization/yo.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Ìwọlé ìkẹ̀yìn: {owner}", "login_password_label": "Ọ̀rọ̀ Àṣírí", "login_privacy": "Wo Ìlànà Àṣírí", - "login_reset_device": "Tún ẹ̀rọ ṣe", + "login_reset_device": "Tún ẹ̀rọ yìí ṣe", "login_reset_device_cancel": "Fagilé", - "login_reset_device_confirm_body": "Èyí yóò pa gbogbo dátà àdúgbò run kí ó sì padà sí olùṣèlú ìṣètò. Èyí kò lè yípadà.", - "login_reset_device_confirm_title": "Tún ẹ̀rọ ṣe?", + "login_reset_device_confirm_body": "Èyí yóò pa dátà nódù tí a fipamọ́ sórí Ẹ̀RỌ YÌÍ run kí ó sì padà sí olùtọ́nisọ́nà ìṣètò. Èyí kò ní kan nódù tí ẹ ti so pọ̀ mọ́ ẹ̀rọ mìíràn. Èyí kò ṣeépadà.", + "login_reset_device_confirm_title": "Tún ẹ̀rọ yìí ṣe?", "login_setup_complete_relogin": "Ìṣètò ti parí. Node rẹ tún bẹ̀rẹ̀, nítorí náà jọ̀wọ́ wọlé padà pẹ̀lú àwọn ẹ̀rí ìdánimọ̀ kan náà tí o lò láti parí ìṣètò.", "login_signin_apple": "Wọlé pẹ̀lú Apple", "login_signin_google": "Wọlé pẹ̀lú Google", diff --git a/client/iosApp/iosApp/localization/zh.json b/client/iosApp/iosApp/localization/zh.json index 2bcede3..570ceda 100644 --- a/client/iosApp/iosApp/localization/zh.json +++ b/client/iosApp/iosApp/localization/zh.json @@ -1860,7 +1860,7 @@ "login_privacy": "查看隐私政策", "login_reset_device": "重置设备", "login_reset_device_cancel": "取消", - "login_reset_device_confirm_body": "此操作将清除所有本地数据并返回设置向导。此操作无法撤销。", + "login_reset_device_confirm_body": "此操作将清除存储在本设备上的节点数据并返回设置向导。您在其他设备上已连接的节点不会受到影响。此操作无法撤销。", "login_reset_device_confirm_title": "重置设备?", "login_setup_complete_relogin": "设置已完成。您的节点已重新启动,请使用完成设置时使用的相同凭据重新登录。", "login_signin_apple": "使用 Apple 登录", diff --git a/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/DebugBundleExport.android.kt b/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/DebugBundleExport.android.kt index 58017d7..1c7e52c 100644 --- a/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/DebugBundleExport.android.kt +++ b/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/DebugBundleExport.android.kt @@ -35,17 +35,58 @@ actual fun saveDebugBundle(fileName: String, content: String): String? { val ctx = appContext ?: return null return runCatching { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // IS_PENDING keeps the row invisible to other apps until the bytes + // are actually there. The row has to be inserted before the stream + // can be opened, so between those two calls a failure -- a full + // disk, a revoked provider -- would otherwise publish an empty file + // into Downloads. An empty debug bundle is worse than none: someone + // sends it believing they sent their logs. val values = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, fileName) put(MediaStore.MediaColumns.MIME_TYPE, "text/plain") put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS) + put(MediaStore.MediaColumns.IS_PENDING, 1) } val uri = ctx.contentResolver.insert( MediaStore.Downloads.EXTERNAL_CONTENT_URI, values, ) ?: return@runCatching null - ctx.contentResolver.openOutputStream(uri)?.use { it.write(content.toByteArray()) } - ?: return@runCatching null + + val wrote = runCatching { + ctx.contentResolver.openOutputStream(uri)?.use { it.write(content.toByteArray()) } + ?: throw java.io.IOException("openOutputStream returned null for $uri") + } + if (wrote.isFailure) { + runCatching { ctx.contentResolver.delete(uri, null, null) } + return@runCatching null + } + + // Publish only now that the file is complete. + // + // AND TREAT A FAILED PUBLISH LIKE A FAILED WRITE (Codex, PR #18). + // The bytes landing is not the same event as the row becoming + // visible. If this update throws, the outer runCatching returns + // null WITHOUT reaching the delete above, leaving the complete + // bundle stored as an orphaned pending item — invisible to every + // file manager, and never cleaned up. If it returns zero rows it + // did not throw and did not publish, and the old code reported + // "Downloads/$fileName" for a file the user cannot find. + // + // Both are the same failure as an empty row, which this function + // already knew to clean up: something is in MediaStore that the + // user cannot reach and did not ask to keep. + val published = runCatching { + ctx.contentResolver.update( + uri, + ContentValues().apply { put(MediaStore.MediaColumns.IS_PENDING, 0) }, + null, + null, + ) + }.getOrDefault(0) + if (published <= 0) { + runCatching { ctx.contentResolver.delete(uri, null, null) } + return@runCatching null + } // A name the user can search for, not a URI they cannot act on. "Downloads/$fileName" } else { diff --git a/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.android.kt b/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.android.kt index 202d929..e427eb5 100644 --- a/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.android.kt +++ b/client/shared/src/androidMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.android.kt @@ -81,3 +81,5 @@ private var wipeContext: Context? = null fun initLocalDataWipe(context: Context) { wipeContext = context.applicationContext } + + diff --git a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/CIRISApp.kt b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/CIRISApp.kt index 532ff5c..84db773 100644 --- a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/CIRISApp.kt +++ b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/CIRISApp.kt @@ -2091,7 +2091,24 @@ fun CIRISApp( // Ask it where it lives while it is still up, too: the answer is // authoritative and it is about to stop being available. val declaredHome = if (ai.ciris.mobile.shared.platform.isDesktop()) { - val h = runCatching { apiClient.getNodeHomePath() }.getOrNull() + // THE LOCAL NODE'S HOME, EXPLICITLY. The button + // says "Reset this device"; asking the ACTIVE + // node where it lives asks a remote machine when + // the client is pointed at one, and hands that + // path to a LOCAL filesystem wipe — deleting from + // an unrelated local directory if it happens to + // exist here, and otherwise reporting success + // having cleared nothing (Codex, PR #18). + // + // A device-local operation asks the device-local + // node. That is also why no ownership guard is + // needed: the scope is fixed by what we query, + // not policed after the fact. + val h = runCatching { + apiClient.getNodeHomePath( + ai.ciris.mobile.shared.api.CIRISApiClient.LOCAL_NODE_URL + ) + }.getOrNull() platformLog(TAG, "[INFO][onResetSetup] node declared home: ${h ?: ""}") runCatching { pythonRuntime.shutdown() } .onFailure { platformLog(TAG, "[WARN][onResetSetup] backend shutdown: ${it.message}") } @@ -2101,7 +2118,9 @@ fun CIRISApp( } val wiped = withContext(Dispatchers.Default) { - ai.ciris.mobile.shared.platform.wipeLocalData(declaredHome) + ai.ciris.mobile.shared.platform.wipeLocalData( + declaredHome, + ) } platformLog(TAG, "[INFO][onResetSetup] wipeLocalData -> $wiped") diff --git a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/api/CIRISApiClient.kt b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/api/CIRISApiClient.kt index bc65469..a5cdd55 100644 --- a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/api/CIRISApiClient.kt +++ b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/api/CIRISApiClient.kt @@ -9148,7 +9148,7 @@ class CIRISApiClient( * not cost the answer. Null when the node does not declare one — the caller * then falls back to the guess, which is where it was before. */ - suspend fun getNodeHomePath(): String? = runCatching { + suspend fun getNodeHomePath(nodeUrl: String = LOCAL_NODE_URL): String? = runCatching { // A short-lived client, as the other raw scrapes in this file do: the // generated setup API binds a model that does not carry claim_pin_file. val client = io.ktor.client.HttpClient { @@ -9163,7 +9163,7 @@ class CIRISApiClient( // to compile for that target -- while desktop compiled clean. Every other // raw scrape in this file closes its client this way. val body = try { - client.get("$baseUrl/v1/setup/status").bodyAsText() + client.get("$nodeUrl/v1/setup/status").bodyAsText() } finally { client.close() } diff --git a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundle.kt b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundle.kt index 362986f..44ac908 100644 --- a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundle.kt +++ b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundle.kt @@ -40,7 +40,10 @@ object DebugBundle { * token-exchange error, the interact screen's connection state. They ride * ABOVE the logs because they are usually the answer. */ - fun render(extra: Map = emptyMap()): String = buildString { + fun render(extra: Map = emptyMap()): String = + redactSecrets(renderRaw(extra)) + + private fun renderRaw(extra: Map): String = buildString { appendLine("CIRIS debug bundle") appendLine("==================") appendLine() @@ -70,6 +73,155 @@ object DebugBundle { return "ciris-debug-$stamp.txt" } + /** + * Patterns that must never leave the device inside a bundle. + * + * Nothing logs a credential today — this was checked, not assumed. But the + * bundle exists to be SENT to us: a user pastes it into an issue or mails + * it to support, and at that moment whatever the log buffer happened to + * hold becomes public. The gap between "nothing logs a secret" and "a + * secret cannot escape" is one future `platformLog("token=$t")` written by + * someone debugging at 2am, and nothing in review would flag that line as + * dangerous, because on its own it isn't. + * + * Narrow on purpose. A redactor that eats ordinary log text destroys the + * artifact's whole reason for existing, so these match credential SHAPES + * (a JWT, a bearer header, an explicit assignment to a secret-ish name) + * rather than anything that merely looks high-entropy. + */ + /** + * A credential name, optionally CARRYING A PREFIX. + * + * `\b(api[_-]?key)` cannot fire inside `llm_api_key`: `_` is a word + * character, so there is no boundary before `api`. The names this codebase + * actually uses are the compound ones — `llm_api_key` (7 sites), + * `system_admin_password`, `backup_llm_api_key`, `owner_password` — so the + * pattern was blind to exactly the spellings a leak here would wear + * (Codex, PR #18). + * + * `[a-z0-9_]*` before the name, and the delimiter still required + * IMMEDIATELY after it — which is what keeps `llm_api_key_set=true` out: + * no split of that string ends in a credential name followed by `=`. + */ + private const val NAME_PREFIX = """[a-z0-9_]*""" + + /** Names people give to secrets. One definition, so the arms cannot drift. */ + private const val SECRET_NAMES = + """api[_-]?key|access[_-]?token|refresh[_-]?token|id[_-]?token|""" + + """auth[_-]?token|token|secret|password|passwd|client[_-]?secret""" + + /** + * `token: expired` is a STATE, not a credential. Redacting it costs the + * reader the one fact the line carried. + */ + private const val NOT_A_STATE = + """expired|missing|present|invalid|unknown|revoked|pending|""" + + """refreshed|required|rejected|absent|ok|set|unset|none|null|""" + + """true|false|yes|no|enabled|disabled|empty|blank|valid""" + + private val SECRET_PATTERNS: List> = listOf( + // THE CLAIM PIN. The one credential this client demonstrably handles. + // + // `StartupViewModel` logs the node's stdout lines through PlatformLogger + // (first 50, then every tenth), PlatformLogger feeds DebugLogBuffer, and + // the node's ownership banner — `CLAIM PIN: 7F3K-Q9MZ` — is emitted in + // its first few lines on a fresh unclaimed node. So the live one-time + // secret that grants ownership of the node sits in a bundle built to be + // mailed to strangers, and no assignment pattern matches it because it + // is a LABELLED BANNER, not a `name=value` (Codex, PR #18). + // + // Label AND shape, so an ordinary `XXXX-XXXX` in prose is untouched. + // The token is 8 Crockford base32 characters (no I/L/O/U) as XXXX-XXXX, + // the same alphabet `PythonRuntime.desktop.CLAIM_PIN_REGEX` parses. The + // NodeCode on the neighbouring line is deliberately NOT redacted: it is + // a public bootstrap handle and the reader needs it. + Regex( + """(claim\s*pin\s*[:=]\s*)[0-9A-HJKMNP-TV-Z]{4}-[0-9A-HJKMNP-TV-Z]{4}""", + RegexOption.IGNORE_CASE, + ) to "$1", + // JWTs — the shape is unmistakable and never appears in prose. + // `eyJ` is the shape check — that is a base64url `{"` and nothing else + // starts that way by accident. Segment LENGTH is not: a JWT with a small + // claims set has a short middle segment and was exported whole + // (Codex, PR #18). Same mistake as the `{6,}` and `{12,}` floors, in the + // one arm I had not yet reached. + Regex("""eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)?""") to "", + // Authorization headers, including the `service:TOKEN` form. + // + // No length floor. `Bearer abc123` is a credential exactly as much as a + // 40-character one, and the explicit marker is the whole shape check — + // I removed the analogous minimum from the assignment arms last round + // and left this one behind (Codex, PR #18). + Regex( + """\b(bearer\s+)(service:)?[A-Za-z0-9._~+/=-]+""", + RegexOption.IGNORE_CASE, + ) to "$1", + // DOUBLE-quoted value. The value class excludes ONLY this delimiter. + // + // A single quoted arm written as `[^"']` fails the moment a + // double-quoted secret contains an apostrophe — `password="correct + // horse's battery staple"` did not match at all, and fell through to + // the unquoted arm, which redacted the prefix and left the rest in the + // bundle (Codex, PR #18). One delimiter per arm is the only way the + // opposite quote can appear inside the value, which it may. + // + // `["]` rather than a bare quote: a raw string cannot end with one. + // + // The value consumes ESCAPED characters as part of itself. `[^"]` reads + // the `\"` in `{"password":"correct \"horse\" battery staple"}` as the + // closing delimiter and stops there, leaving the rest of the passphrase + // in the bundle — the same leak again, through the escape this time. + Regex( + """\b($NAME_PREFIX(?:$SECRET_NAMES))(["']?\s*[:=]\s*)["](?!(?:$NOT_A_STATE)["])((?:[^"\\]|\\.)+)["]""", + RegexOption.IGNORE_CASE, + ) to "\$1\$2\"\"", + // SINGLE-quoted value, same rule, mirrored. + Regex( + """\b($NAME_PREFIX(?:$SECRET_NAMES))(["']?\s*[:=]\s*)['](?!(?:$NOT_A_STATE)['])((?:[^'\\]|\\.)+)[']""", + RegexOption.IGNORE_CASE, + ) to "\$1\$2''", + // An OPENING quote with no closing one — a truncated or line-clipped + // log entry. Both terminated arms fail, and the unquoted arm below + // consumes the quote and stops at the first space, leaving most of the + // credential in the bundle (Codex, PR #18). + // + // ONE ARM PER DELIMITER, CONSUMING ESCAPES, exactly like the terminated + // pair — I wrote the first version of this with the `[^"']` value class + // the terminated arms had already been fixed away from, so a truncated + // secret containing an apostrophe or an escaped quote fell through to + // the same first-space truncation. Same bug, one arm later. + Regex( + """\b($NAME_PREFIX(?:$SECRET_NAMES))(\s*[:=]\s*)["](?!(?:$NOT_A_STATE)["]?${'$'})((?:[^"\\\n]|\\.)+)${'$'}""", + setOf(RegexOption.IGNORE_CASE, RegexOption.MULTILINE), + ) to "\$1\$2\"", + Regex( + """\b($NAME_PREFIX(?:$SECRET_NAMES))(\s*[:=]\s*)['](?!(?:$NOT_A_STATE)[']?${'$'})((?:[^'\\\n]|\\.)+)${'$'}""", + setOf(RegexOption.IGNORE_CASE, RegexOption.MULTILINE), + ) to "\$1\$2'", + // UNQUOTED name = value. Whitespace really is the delimiter here. + Regex( + """\b($NAME_PREFIX(?:$SECRET_NAMES))(\s*["']?\s*[:=]\s*["']?)""" + + // THE STATE MUST BE THE ENTIRE VALUE. `\b` alone matches the + // boundary INSIDE `valid-secret-123`, `no-way-this-leaks` and + // `expired-value`, so the lookahead suppressed the match and + // exported the credential whole — a leak my own relaxed + // quantifier created, since these values were previously too + // short-circuited to reach it (Codex, PR #18). The quoted arms + // already required the closing delimiter; this one must too. + """(?!(?:$NOT_A_STATE)(?:["'\s,;)}\]]|${'$'}))([^\s"',;)}\]]+)""", + RegexOption.IGNORE_CASE, + ) to "$1$2", + ) + + /** + * Strip credential-shaped substrings. Internal so it can be tested directly + * — a redactor nobody has watched fail is not a redactor. + */ + internal fun redactSecrets(text: String): String = + SECRET_PATTERNS.fold(text) { acc, (pattern, replacement) -> + pattern.replace(acc, replacement) + } + private inline fun safely(block: () -> String): String = runCatching(block).getOrElse { "unknown" } diff --git a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugLogsBlock.kt b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugLogsBlock.kt index 041d452..eff34e1 100644 --- a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugLogsBlock.kt +++ b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/DebugLogsBlock.kt @@ -185,11 +185,17 @@ fun DebugLogsBlock( fontSize = 9.sp, fontFamily = FontFamily.Monospace, color = MaterialTheme.colorScheme.onSurface, + // testable() BEFORE verticalScroll: onGloballyPositioned + // reports the node's size at its own point in the chain, + // so registering inside the scroll captured the CONTENT + // height -- 17952px for a full bundle. /tree then showed + // an element taller than any screen, and automation + // aiming at its centre would target y~10000. modifier = Modifier .heightIn(max = 220.dp) + .testable("txt_debug_bundle") .verticalScroll(rememberScrollState()) - .padding(8.dp) - .testable("txt_debug_bundle"), + .padding(8.dp), ) } } diff --git a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/FailurePanel.kt b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/FailurePanel.kt index 3b17808..7927d93 100644 --- a/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/FailurePanel.kt +++ b/client/shared/src/commonMain/kotlin/ai/ciris/mobile/shared/ui/components/FailurePanel.kt @@ -327,7 +327,15 @@ private fun reportUrl( appendLine("
Error detail") appendLine() appendLine("```") - appendLine(detail.take(4000)) + // REDACTED, like the bundle. This body goes to a PUBLIC GitHub issue, + // which is a worse destination than the bundle the redactor was written + // for — that one is a file the user chooses to send, this one is a URL + // that opens a form to the world. `DebugBundle.render()` scrubbed its + // own output while this path passed the raw server detail straight + // through (Codex, PR #18): the same text, the same risk, one export + // scrubbed and one not, because the scrubbing was attached to a + // FUNCTION rather than to leaving the device. + appendLine(DebugBundle.redactSecrets(detail).take(4000)) appendLine("```") appendLine() appendLine("
") diff --git a/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.desktop.kt b/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.desktop.kt index b7fde18..6f2ce24 100644 --- a/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.desktop.kt +++ b/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.desktop.kt @@ -100,11 +100,35 @@ actual fun wipeLocalData(declaredNodeHome: String?): Boolean { println("[LocalDataWipe] refusing: CIRIS-Manager-managed deployment (/app)") return false } - val home = resolveNodeHome(declaredNodeHome) ?: return false if (!home.exists()) return true - val checkout = isSourceCheckout(home) + var ok = wipeGeneratedState(home, isSourceCheckout(home)) + + // THE FILESYSTEM IS NOT ALL THE LOCAL DATA (Codex, PR #9). + // + // SecureStorage.desktop keeps provider API keys in java.util.prefs under + // `apikey_*`, and `getApiKey()` falls back to them once .env is gone. + // logout() clears tokens and user fields and leaves those, so a wipe that + // stopped at the filesystem handed the next owner of the machine the + // previous owner's provider key — under a dialog that says "erase all local + // data". Removing files is the visible half of the promise; this is the half + // that decides whether the promise was true. + if (!clearSecurePreferences()) ok = false + return ok +} + +/** + * Remove the generated entries from [home]. Never removes [home] itself. + * + * SEPARATED FROM RESOLUTION so it can be tested against a real directory + * (inherited from CIRISAgent 2.9.41, CIRISClient#11). Every shipped bug in this + * file was "deleted more than it should have", and that is only observable by + * pointing it at a populated tree and asserting what SURVIVES — a thesis file, + * a `src/`, a `.git`. Asserting the intended targets are gone would have passed + * for all four of them. + */ +internal fun wipeGeneratedState(home: File, checkout: Boolean): Boolean { var ok = true var removed = 0 @@ -147,17 +171,6 @@ actual fun wipeLocalData(declaredNodeHome: String?): Boolean { } } - // THE FILESYSTEM IS NOT ALL THE LOCAL DATA (Codex, PR #9). - // - // SecureStorage.desktop keeps provider API keys in java.util.prefs under - // `apikey_*`, and `getApiKey()` falls back to them once .env is gone. - // logout() clears tokens and user fields and leaves those, so a wipe that - // stopped at the filesystem handed the next owner of the machine the - // previous owner's provider key — under a dialog that says "erase all local - // data". Removing files is the visible half of the promise; this is the half - // that decides whether the promise was true. - if (!clearSecurePreferences()) ok = false - println("[LocalDataWipe] ${home.absolutePath}: removed $removed generated entries, ok=$ok") return ok } @@ -186,3 +199,5 @@ private fun clearSecurePreferences(): Boolean = runCatching { println("[LocalDataWipe] could not clear secure preferences: ${e.message}") false } + + diff --git a/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/Platform.desktop.kt b/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/Platform.desktop.kt index e01db22..cd4f07e 100644 --- a/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/Platform.desktop.kt +++ b/client/shared/src/desktopMain/kotlin/ai/ciris/mobile/shared/platform/Platform.desktop.kt @@ -54,7 +54,20 @@ actual fun startTestAutomationServer() { } /** - * Fallback version if JAR manifest is unavailable. - * Keep in sync with mobile/androidApp/build.gradle versionName. + * Fallback version if the JAR manifest is unavailable. + * + * THE FALLBACK IS THE ONLY VALUE DESKTOP EVER REPORTS, which is why the old + * hand-maintained constant drifted to `2.3.2` while builds shipped 2.9.x and + * then 0.5.x. The Compose uber-jar writes only `Main-Class` into its manifest, + * so `implementationVersion` is always null and the "fallback" above is the + * whole answer. A diagnostics bundle from a 0.5.191 build named 2.3.2 as its + * version — in the one artifact whose entire job is to say what was running. + * + * "Keep in sync with androidApp/build.gradle versionName" was the instruction, + * and nothing enforced it in either repo (CIRISClient#11 asked us to put a + * check on it if we kept the constant). We do not keep it: CLIENT_VERSION is + * GENERATED from the repo-root VERSION file by :shared:generateBuildFlavor — + * the same value the wheel publishes — so there is no second number that can + * drift, and no check needed for one that cannot exist. */ -private const val DESKTOP_VERSION_FALLBACK = "2.3.2" +private val DESKTOP_VERSION_FALLBACK: String = ai.ciris.mobile.shared.models.CLIENT_VERSION diff --git a/client/shared/src/desktopMain/resources/localization/am.json b/client/shared/src/desktopMain/resources/localization/am.json index b478e20..6fc10f6 100644 --- a/client/shared/src/desktopMain/resources/localization/am.json +++ b/client/shared/src/desktopMain/resources/localization/am.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "መጨረሻ የገባው: {owner}", "login_password_label": "የይለፍ ቃል", "login_privacy": "የግላዊነት መመሪያን ይመልከቱ", - "login_reset_device": "መሣሪያ ዳግም አስጀምር", + "login_reset_device": "ይህን መሣሪያ ዳግም አስጀምር", "login_reset_device_cancel": "ሰርዝ", - "login_reset_device_confirm_body": "ይህ ሁሉንም አካባቢያዊ ውሂብ ያጠፋና ወደ ማዋቀሪያ አዋቂ ይመልሳል። ይህ ድርጊት ሊቀለበስ አይችልም።", - "login_reset_device_confirm_title": "መሣሪያ ዳግም ይጀምር?", + "login_reset_device_confirm_body": "ይህ በዚህ መሣሪያ ላይ የተቀመጠውን የኖድ ውሂብ ያጠፋል እና ወደ የማዋቀሪያ አዋቂው ይመለሳል። በሌላ መሣሪያ ላይ የተገናኙበት ኖድ ግን ተጽዕኖ አይደርስበትም። ይህ ድርጊት መልሰው የማይቀር ነው።", + "login_reset_device_confirm_title": "ይህን መሣሪያ ዳግም ማስጀመር?", "login_setup_complete_relogin": "ማዋቀሩ ተጠናቅቋል። መስቀለኛዎ እንደገና ስለተጀመረ፣ እባክዎ ማዋቀሩን ለማጠናቀቅ በተጠቀሙባቸው ተመሳሳይ የመግቢያ መረጃዎች እንደገና ይግቡ።", "login_signin_apple": "በApple ይግቡ", "login_signin_google": "በGoogle ይግቡ", diff --git a/client/shared/src/desktopMain/resources/localization/ar.json b/client/shared/src/desktopMain/resources/localization/ar.json index 3b025d4..52541c6 100644 --- a/client/shared/src/desktopMain/resources/localization/ar.json +++ b/client/shared/src/desktopMain/resources/localization/ar.json @@ -1860,7 +1860,7 @@ "login_privacy": "عرض سياسة الخصوصية", "login_reset_device": "إعادة ضبط الجهاز", "login_reset_device_cancel": "إلغاء", - "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح جميع البيانات المحلية والعودة إلى معالج الإعداد. لا يمكن التراجع عن هذا الإجراء.", + "login_reset_device_confirm_body": "سيؤدي ذلك إلى مسح بيانات العقدة المخزّنة على هذا الجهاز والعودة إلى معالج الإعداد. أما أي عقدة تتصل بها على جهاز آخر فلن تتأثر. لا يمكن التراجع عن هذا الإجراء.", "login_reset_device_confirm_title": "إعادة ضبط الجهاز؟", "login_setup_complete_relogin": "اكتمل الإعداد. أُعيد تشغيل العقدة، لذا يُرجى تسجيل الدخول مجددًا باستخدام بيانات الاعتماد نفسها التي استخدمتها لإكمال الإعداد.", "login_signin_apple": "تسجيل الدخول باستخدام Apple", diff --git a/client/shared/src/desktopMain/resources/localization/bn.json b/client/shared/src/desktopMain/resources/localization/bn.json index 30f1052..cbb52b3 100644 --- a/client/shared/src/desktopMain/resources/localization/bn.json +++ b/client/shared/src/desktopMain/resources/localization/bn.json @@ -1861,7 +1861,7 @@ "login_privacy": "গোপনীয়তা নীতি দেখুন", "login_reset_device": "ডিভাইস রিসেট করুন", "login_reset_device_cancel": "বাতিল", - "login_reset_device_confirm_body": "এটি সমস্ত স্থানীয় ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "login_reset_device_confirm_body": "এটি এই ডিভাইসে সংরক্ষিত নোডের ডেটা মুছে দেবে এবং সেটআপ উইজার্ডে ফিরে যাবে। অন্য কোনো মেশিনে আপনি যে নোডের সাথে সংযুক্ত আছেন, সেটি প্রভাবিত হবে না। এটি পূর্বাবস্থায় ফেরানো যাবে না।", "login_reset_device_confirm_title": "ডিভাইস রিসেট করবেন?", "login_setup_complete_relogin": "সেটআপ সম্পূর্ণ হয়েছে। আপনার নোড পুনরায় চালু হয়েছে, তাই সেটআপ সম্পূর্ণ করতে আপনি যে শংসাপত্রগুলি ব্যবহার করেছিলেন সেগুলি দিয়েই আবার লগ ইন করুন।", "login_signin_apple": "Apple দিয়ে সাইন ইন করুন", diff --git a/client/shared/src/desktopMain/resources/localization/de.json b/client/shared/src/desktopMain/resources/localization/de.json index 74e684c..da1e0ac 100644 --- a/client/shared/src/desktopMain/resources/localization/de.json +++ b/client/shared/src/desktopMain/resources/localization/de.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Zuletzt angemeldet: {owner}", "login_password_label": "Passwort", "login_privacy": "Datenschutzerklärung anzeigen", - "login_reset_device": "Gerät zurücksetzen", + "login_reset_device": "Dieses Gerät zurücksetzen", "login_reset_device_cancel": "Abbrechen", - "login_reset_device_confirm_body": "Dadurch werden alle lokalen Daten gelöscht und Sie werden zum Einrichtungsassistenten zurückgeleitet. Diese Aktion kann nicht rückgängig gemacht werden.", - "login_reset_device_confirm_title": "Gerät zurücksetzen?", + "login_reset_device_confirm_body": "Dies löscht die Knotendaten, die auf DIESEM Gerät gespeichert sind, und kehrt zum Einrichtungsassistenten zurück. Ein Knoten, mit dem Sie auf einem anderen Rechner verbunden sind, ist davon nicht betroffen. Dies kann nicht rückgängig gemacht werden.", + "login_reset_device_confirm_title": "Dieses Gerät zurücksetzen?", "login_setup_complete_relogin": "Die Einrichtung ist abgeschlossen. Ihr Knoten wurde neu gestartet – bitte melden Sie sich erneut mit denselben Zugangsdaten an, die Sie für die Einrichtung verwendet haben.", "login_signin_apple": "Mit Apple anmelden", "login_signin_google": "Mit Google anmelden", diff --git a/client/shared/src/desktopMain/resources/localization/en.json b/client/shared/src/desktopMain/resources/localization/en.json index 8561878..17f1f9c 100644 --- a/client/shared/src/desktopMain/resources/localization/en.json +++ b/client/shared/src/desktopMain/resources/localization/en.json @@ -1928,10 +1928,10 @@ "login_owner_hint": "Last signed in: {owner}", "login_password_label": "Password", "login_privacy": "View Privacy Policy", - "login_reset_device": "Reset device", + "login_reset_device": "Reset this device", "login_reset_device_cancel": "Cancel", - "login_reset_device_confirm_body": "This will erase all local data and return to the setup wizard. This cannot be undone.", - "login_reset_device_confirm_title": "Reset device?", + "login_reset_device_confirm_body": "This erases the node data stored on THIS device and returns to the setup wizard. A node you are connected to on another machine is not affected. This cannot be undone.", + "login_reset_device_confirm_title": "Reset this device?", "login_setup_complete_relogin": "Setup is complete. Your node restarted, so please log back in with the same credentials you used to complete setup.", "login_signin_apple": "Sign in with Apple", "login_signin_google": "Sign in with Google", diff --git a/client/shared/src/desktopMain/resources/localization/es.json b/client/shared/src/desktopMain/resources/localization/es.json index 66a6762..fe02dbf 100644 --- a/client/shared/src/desktopMain/resources/localization/es.json +++ b/client/shared/src/desktopMain/resources/localization/es.json @@ -1860,7 +1860,7 @@ "login_privacy": "Ver Política de Privacidad", "login_reset_device": "Restablecer dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Esto borrará todos los datos locales y volverás al asistente de configuración. Esta acción no se puede deshacer.", + "login_reset_device_confirm_body": "Esto borrará los datos del nodo almacenados en ESTE dispositivo y volverá al asistente de configuración. Un nodo al que estés conectado en otra máquina no se verá afectado. Esta acción no se puede deshacer.", "login_reset_device_confirm_title": "¿Restablecer dispositivo?", "login_setup_complete_relogin": "La configuración ha finalizado. Tu nodo se reinició, así que vuelve a iniciar sesión con las mismas credenciales que usaste para completar la configuración.", "login_signin_apple": "Iniciar sesión con Apple", diff --git a/client/shared/src/desktopMain/resources/localization/fa.json b/client/shared/src/desktopMain/resources/localization/fa.json index d9caea0..38b931c 100644 --- a/client/shared/src/desktopMain/resources/localization/fa.json +++ b/client/shared/src/desktopMain/resources/localization/fa.json @@ -1866,7 +1866,7 @@ "login_privacy": "مشاهده سیاست حریم خصوصی", "login_reset_device": "بازنشانی دستگاه", "login_reset_device_cancel": "لغو", - "login_reset_device_confirm_body": "این عمل تمام داده‌های محلی را پاک می‌کند و به راه‌اندازی اولیه بازمی‌گردد. این کار قابل بازگشت نیست.", + "login_reset_device_confirm_body": "این کار داده‌های گره ذخیره‌شده روی همین دستگاه را پاک می‌کند و به دستیار راه‌اندازی بازمی‌گردد. گرهی که روی دستگاهی دیگر به آن متصل هستید تحت تأثیر قرار نمی‌گیرد. این کار قابل بازگشت نیست.", "login_reset_device_confirm_title": "بازنشانی دستگاه؟", "login_setup_complete_relogin": "راه‌اندازی کامل شد. نود شما دوباره راه‌اندازی شد؛ لطفاً با همان اطلاعات ورودی که برای تکمیل راه‌اندازی استفاده کردید، دوباره وارد شوید.", "login_signin_apple": "ورود باستخدام Apple", diff --git a/client/shared/src/desktopMain/resources/localization/fr.json b/client/shared/src/desktopMain/resources/localization/fr.json index 10abf12..fe1f844 100644 --- a/client/shared/src/desktopMain/resources/localization/fr.json +++ b/client/shared/src/desktopMain/resources/localization/fr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Voir la Politique de Confidentialité", "login_reset_device": "Réinitialiser l'appareil", "login_reset_device_cancel": "Annuler", - "login_reset_device_confirm_body": "Cela effacera toutes les données locales et vous ramènera à l'assistant de configuration. Cette action est irréversible.", + "login_reset_device_confirm_body": "Cela efface les données du nœud stockées sur CET appareil et revient à l'assistant de configuration. Un nœud auquel vous êtes connecté sur une autre machine n'est pas affecté. Cela ne peut pas être annulé.", "login_reset_device_confirm_title": "Réinitialiser l'appareil ?", "login_setup_complete_relogin": "La configuration est terminée. Votre nœud a redémarré : veuillez vous reconnecter avec les mêmes identifiants que ceux utilisés pour terminer la configuration.", "login_signin_apple": "Se connecter avec Apple", diff --git a/client/shared/src/desktopMain/resources/localization/ha.json b/client/shared/src/desktopMain/resources/localization/ha.json index 7ac4491..f5f91af 100644 --- a/client/shared/src/desktopMain/resources/localization/ha.json +++ b/client/shared/src/desktopMain/resources/localization/ha.json @@ -1860,7 +1860,7 @@ "login_privacy": "Duba Sera na Asirta", "login_reset_device": "Sake saita na'ura", "login_reset_device_cancel": "Soke", - "login_reset_device_confirm_body": "Wannan zai share duk bayanan gida kuma ya koma zuwa jagorar saiti. Ba za a iya maido da wannan ba.", + "login_reset_device_confirm_body": "Wannan zai share bayanan kumburin da aka ajiye a WANNAN na'urar kuma ya koma zuwa jagorar saiti. Kumburin da kuke haɗe da shi a wata na'ura ba zai sami tasiri ba. Ba za a iya mayar da wannan aiki ba.", "login_reset_device_confirm_title": "Sake saita na'ura?", "login_setup_complete_relogin": "An kammala saitin. Node ɗinka ya sake farawa, don haka ka sake shiga da bayanan shiga guda ɗaya da ka yi amfani da su wajen kammala saitin.", "login_signin_apple": "Shiga tare da Apple", diff --git a/client/shared/src/desktopMain/resources/localization/hi.json b/client/shared/src/desktopMain/resources/localization/hi.json index 7654f45..504fa17 100644 --- a/client/shared/src/desktopMain/resources/localization/hi.json +++ b/client/shared/src/desktopMain/resources/localization/hi.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "पिछली बार साइन इन किया: {owner}", "login_password_label": "पासवर्ड", "login_privacy": "गोपनीयता नीति देखें", - "login_reset_device": "डिवाइस रीसेट करें", + "login_reset_device": "इस डिवाइस को रीसेट करें", "login_reset_device_cancel": "रद्द करें", - "login_reset_device_confirm_body": "यह सभी स्थानीय डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। इसे पूर्ववत नहीं किया जा सकता।", - "login_reset_device_confirm_title": "डिवाइस रीसेट करें?", + "login_reset_device_confirm_body": "यह इस डिवाइस पर संग्रहीत नोड डेटा मिटा देगा और सेटअप विज़ार्ड पर वापस ले जाएगा। किसी अन्य मशीन पर जिस नोड से आप जुड़े हैं, वह प्रभावित नहीं होगा। इसे पूर्ववत नहीं किया जा सकता।", + "login_reset_device_confirm_title": "इस डिवाइस को रीसेट करें?", "login_setup_complete_relogin": "सेटअप पूरा हो गया है। आपका नोड फिर से चालू हुआ है, इसलिए कृपया उन्हीं क्रेडेंशियल से दोबारा लॉग इन करें जिनका उपयोग आपने सेटअप पूरा करने के लिए किया था।", "login_signin_apple": "Apple से साइन इन करें", "login_signin_google": "Google से साइन इन करें", diff --git a/client/shared/src/desktopMain/resources/localization/id.json b/client/shared/src/desktopMain/resources/localization/id.json index 809bf6a..d51d506 100644 --- a/client/shared/src/desktopMain/resources/localization/id.json +++ b/client/shared/src/desktopMain/resources/localization/id.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Terakhir masuk: {owner}", "login_password_label": "Kata Sandi", "login_privacy": "Lihat Kebijakan Privasi", - "login_reset_device": "Atur ulang perangkat", + "login_reset_device": "Atur ulang perangkat ini", "login_reset_device_cancel": "Batal", - "login_reset_device_confirm_body": "Ini akan menghapus semua data lokal dan kembali ke wizard penyiapan. Tindakan ini tidak dapat dibatalkan.", - "login_reset_device_confirm_title": "Atur ulang perangkat?", + "login_reset_device_confirm_body": "Ini akan menghapus data node yang tersimpan di perangkat INI dan kembali ke wizard penyiapan. Node tempat Anda terhubung di mesin lain tidak terpengaruh. Tindakan ini tidak dapat dibatalkan.", + "login_reset_device_confirm_title": "Atur ulang perangkat ini?", "login_setup_complete_relogin": "Penyiapan selesai. Node Anda telah dimulai ulang, jadi silakan masuk kembali dengan kredensial yang sama seperti yang Anda gunakan saat menyelesaikan penyiapan.", "login_signin_apple": "Masuk dengan Apple", "login_signin_google": "Masuk dengan Google", diff --git a/client/shared/src/desktopMain/resources/localization/it.json b/client/shared/src/desktopMain/resources/localization/it.json index 1748af9..525dd69 100644 --- a/client/shared/src/desktopMain/resources/localization/it.json +++ b/client/shared/src/desktopMain/resources/localization/it.json @@ -1860,7 +1860,7 @@ "login_privacy": "Visualizza Informativa sulla Privacy", "login_reset_device": "Ripristina dispositivo", "login_reset_device_cancel": "Annulla", - "login_reset_device_confirm_body": "Verranno cancellati tutti i dati locali e si tornerà alla procedura guidata di configurazione. Questa azione non può essere annullata.", + "login_reset_device_confirm_body": "Verranno cancellati i dati del nodo memorizzati su QUESTO dispositivo e si tornerà alla procedura guidata di configurazione. Un nodo a cui sei connesso su un'altra macchina non subisce modifiche. Questa azione non può essere annullata.", "login_reset_device_confirm_title": "Ripristinare il dispositivo?", "login_setup_complete_relogin": "La configurazione è completata. Il tuo nodo è stato riavviato: accedi di nuovo con le stesse credenziali che hai usato per completare la configurazione.", "login_signin_apple": "Accedi con Apple", diff --git a/client/shared/src/desktopMain/resources/localization/ja.json b/client/shared/src/desktopMain/resources/localization/ja.json index 07f3851..371b63a 100644 --- a/client/shared/src/desktopMain/resources/localization/ja.json +++ b/client/shared/src/desktopMain/resources/localization/ja.json @@ -1860,7 +1860,7 @@ "login_privacy": "プライバシーポリシーを表示", "login_reset_device": "デバイスをリセット", "login_reset_device_cancel": "キャンセル", - "login_reset_device_confirm_body": "すべてのローカルデータが消去され、セットアップウィザードに戻ります。この操作は元に戻せません。", + "login_reset_device_confirm_body": "このデバイスに保存されているノードデータが消去され、セットアップウィザードに戻ります。別のマシン上で接続しているノードには影響しません。この操作は元に戻せません。", "login_reset_device_confirm_title": "デバイスをリセットしますか?", "login_setup_complete_relogin": "セットアップが完了しました。ノードが再起動したため、セットアップで使用したものと同じ認証情報で再度ログインしてください。", "login_signin_apple": "Appleでサインイン", diff --git a/client/shared/src/desktopMain/resources/localization/ko.json b/client/shared/src/desktopMain/resources/localization/ko.json index a766a42..e46b77f 100644 --- a/client/shared/src/desktopMain/resources/localization/ko.json +++ b/client/shared/src/desktopMain/resources/localization/ko.json @@ -1860,7 +1860,7 @@ "login_privacy": "개인정보 보호정책 보기", "login_reset_device": "기기 재설정", "login_reset_device_cancel": "취소", - "login_reset_device_confirm_body": "모든 로컬 데이터가 삭제되고 설정 마법사로 돌아갑니다. 이 작업은 취소할 수 없습니다.", + "login_reset_device_confirm_body": "이 작업은 이 기기에 저장된 노드 데이터를 삭제하고 설정 마법사로 돌아갑니다. 다른 기기에서 연결해 사용 중인 노드는 영향을 받지 않습니다. 이 작업은 취소할 수 없습니다.", "login_reset_device_confirm_title": "기기를 재설정하시겠습니까?", "login_setup_complete_relogin": "설정이 완료되었습니다. 노드가 재시작되었으므로 설정에 사용한 것과 동일한 자격 증명으로 다시 로그인해 주세요.", "login_signin_apple": "Apple로 로그인", diff --git a/client/shared/src/desktopMain/resources/localization/mr.json b/client/shared/src/desktopMain/resources/localization/mr.json index 0c7cf1f..35d3208 100644 --- a/client/shared/src/desktopMain/resources/localization/mr.json +++ b/client/shared/src/desktopMain/resources/localization/mr.json @@ -1860,7 +1860,7 @@ "login_privacy": "गोपनीयता धोरण पाहा", "login_reset_device": "डिव्हाइस रीसेट करा", "login_reset_device_cancel": "रद्द करा", - "login_reset_device_confirm_body": "हे सर्व स्थानिक डेटा मिटवेल आणि सेटअप विझार्डवर परत जाईल. हे पूर्ववत केले जाऊ शकत नाही.", + "login_reset_device_confirm_body": "यामुळे याच डिव्हाइसवर साठवलेला नोड डेटा पुसला जाईल आणि सेटअप विझार्डवर परत जाईल. तुम्ही दुसऱ्या मशीनवरील ज्या नोडशी जोडलेले आहात, त्यावर याचा परिणाम होत नाही. हे पूर्ववत केले जाऊ शकत नाही.", "login_reset_device_confirm_title": "डिव्हाइस रीसेट करायचे?", "login_setup_complete_relogin": "सेटअप पूर्ण झाला आहे. तुमचा नोड पुन्हा सुरू झाला आहे, त्यामुळे सेटअप पूर्ण करण्यासाठी वापरलेल्या त्याच क्रेडेन्शियल्सने कृपया पुन्हा लॉग इन करा.", "login_signin_apple": "Apple सह साइन इन करा", diff --git a/client/shared/src/desktopMain/resources/localization/my.json b/client/shared/src/desktopMain/resources/localization/my.json index aa01418..37d756b 100644 --- a/client/shared/src/desktopMain/resources/localization/my.json +++ b/client/shared/src/desktopMain/resources/localization/my.json @@ -1860,7 +1860,7 @@ "login_privacy": "ကိုယ်ရေးကာကွယ်မှု မူဝါဒ ကြည့်ရှုပါ", "login_reset_device": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်ပါ", "login_reset_device_cancel": "ပယ်ဖျက်", - "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဒေသတွင်းဒေတာအားလုံးကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ကို ပြန်ဖြည့်၍မရပါ။", + "login_reset_device_confirm_body": "ဤလုပ်ဆောင်ချက်သည် ဤစက်ပေါ်တွင် သိမ်းဆည်းထားသော node ဒေတာကို ဖျက်ပြီး ဆက်တင် wizard သို့ ပြန်သွားမည်ဖြစ်သည်။ သင် အခြားစက်တွင် ချိတ်ဆက်ထားသည့် node သည် ထိခိုက်မည် မဟုတ်ပါ။ ဤလုပ်ဆောင်ချက်ကို ပြန်မလုပ်နိုင်ပါ။", "login_reset_device_confirm_title": "စက်ပစ္စည်း ပြန်လည်သတ်မှတ်မည်လား?", "login_setup_complete_relogin": "စနစ်ထည့်သွင်းမှု ပြီးဆုံးပါပြီ။ သင့် node ပြန်လည်စတင်ခဲ့သဖြင့် စနစ်ထည့်သွင်းရာတွင် အသုံးပြုခဲ့သည့် အထောက်အထားများဖြင့်ပင် ပြန်လည်ဝင်ရောက်ပါ။", "login_signin_apple": "Apple ဖြင့် ဝင်ရောက်", diff --git a/client/shared/src/desktopMain/resources/localization/pa.json b/client/shared/src/desktopMain/resources/localization/pa.json index ebf8145..b5d51c5 100644 --- a/client/shared/src/desktopMain/resources/localization/pa.json +++ b/client/shared/src/desktopMain/resources/localization/pa.json @@ -1860,7 +1860,7 @@ "login_privacy": "ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਦੇਖੋ", "login_reset_device": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰੋ", "login_reset_device_cancel": "ਰੱਦ ਕਰੋ", - "login_reset_device_confirm_body": "ਇਹ ਸਾਰਾ ਸਥਾਨਕ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਇਸ ਨੂੰ ਪਹਿਲਾਂ ਵਾਲੀ ਸਥਿਤੀ ਵਿੱਚ ਨਹੀਂ ਲਿਆਂਦਾ ਜਾ ਸਕਦਾ।", + "login_reset_device_confirm_body": "ਇਹ ਇਸ ਡਿਵਾਈਸ 'ਤੇ ਸਟੋਰ ਕੀਤਾ ਨੋਡ ਡੇਟਾ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸੈੱਟਅੱਪ ਵਿਜ਼ਾਰਡ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾ। ਕਿਸੇ ਹੋਰ ਮਸ਼ੀਨ ਉੱਤੇ ਜਿਸ ਨੋਡ ਨਾਲ ਤੁਸੀਂ ਜੁੜੇ ਹੋ, ਉਹ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦਾ। ਇਹ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।", "login_reset_device_confirm_title": "ਡਿਵਾਈਸ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?", "login_setup_complete_relogin": "ਸੈੱਟਅੱਪ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਤੁਹਾਡਾ ਨੋਡ ਮੁੜ ਚਾਲੂ ਹੋਇਆ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਉਹੀ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਵਰਤ ਕੇ ਮੁੜ ਲਾਗਇਨ ਕਰੋ ਜੋ ਤੁਸੀਂ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਵਰਤੇ ਸਨ।", "login_signin_apple": "Apple ਨਾਲ ਸਾਈਨ ਇਨ ਕਰੋ", diff --git a/client/shared/src/desktopMain/resources/localization/pt.json b/client/shared/src/desktopMain/resources/localization/pt.json index fa5fa8c..d4d550e 100644 --- a/client/shared/src/desktopMain/resources/localization/pt.json +++ b/client/shared/src/desktopMain/resources/localization/pt.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Último acesso: {owner}", "login_password_label": "Senha", "login_privacy": "Ver Política de Privacidade", - "login_reset_device": "Redefinir dispositivo", + "login_reset_device": "Redefinir este dispositivo", "login_reset_device_cancel": "Cancelar", - "login_reset_device_confirm_body": "Isso apagará todos os dados locais e retornará ao assistente de configuração. Esta ação não pode ser desfeita.", - "login_reset_device_confirm_title": "Redefinir dispositivo?", + "login_reset_device_confirm_body": "Isso excluirá os dados do nó armazenados NESTE dispositivo e retornará ao assistente de configuração. Um nó ao qual você esteja conectado em outra máquina não é afetado. Isso não pode ser desfeito.", + "login_reset_device_confirm_title": "Redefinir este dispositivo?", "login_setup_complete_relogin": "A configuração foi concluída. O seu nó foi reiniciado, por isso inicie sessão novamente com as mesmas credenciais que utilizou para concluir a configuração.", "login_signin_apple": "Entrar com Apple", "login_signin_google": "Entrar com Google", diff --git a/client/shared/src/desktopMain/resources/localization/ru.json b/client/shared/src/desktopMain/resources/localization/ru.json index 484e28e..db4bf61 100644 --- a/client/shared/src/desktopMain/resources/localization/ru.json +++ b/client/shared/src/desktopMain/resources/localization/ru.json @@ -1860,7 +1860,7 @@ "login_privacy": "Посмотреть Политику конфиденциальности", "login_reset_device": "Сбросить устройство", "login_reset_device_cancel": "Отмена", - "login_reset_device_confirm_body": "Это удалит все локальные данные и вернёт мастер настройки. Отменить это действие невозможно.", + "login_reset_device_confirm_body": "Это удалит данные узла, хранящиеся на ЭТОМ устройстве, и вернёт вас к мастеру настройки. Узел, к которому вы подключены на другой машине, затронут не будет. Это действие нельзя отменить.", "login_reset_device_confirm_title": "Сбросить устройство?", "login_setup_complete_relogin": "Настройка завершена. Ваш узел перезапущен, поэтому войдите снова, используя те же учётные данные, что и при настройке.", "login_signin_apple": "Войти через Apple", diff --git a/client/shared/src/desktopMain/resources/localization/sw.json b/client/shared/src/desktopMain/resources/localization/sw.json index 522bfde..17baf50 100644 --- a/client/shared/src/desktopMain/resources/localization/sw.json +++ b/client/shared/src/desktopMain/resources/localization/sw.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Mwisho aliyeingia: {owner}", "login_password_label": "Nenosiri", "login_privacy": "Tazama Sera ya Faragha", - "login_reset_device": "Weka upya kifaa", + "login_reset_device": "Weka upya kifaa hiki", "login_reset_device_cancel": "Ghairi", - "login_reset_device_confirm_body": "Hii itafuta data yote ya ndani na kurudi kwa mwongozo wa usanidi. Hatua hii haiwezi kutenduliwa.", - "login_reset_device_confirm_title": "Weka upya kifaa?", + "login_reset_device_confirm_body": "Hii itafuta data ya nodi iliyohifadhiwa kwenye kifaa HIKI na kurudi kwa mchawi wa usanidi. Nodi ambayo umeunganishwa nayo kwenye mashine nyingine haitaathiriwa. Hatua hii haiwezi kutenduliwa.", + "login_reset_device_confirm_title": "Weka upya kifaa hiki?", "login_setup_complete_relogin": "Usanidi umekamilika. Nodi yako imeanzishwa upya, kwa hivyo tafadhali ingia tena ukitumia stakabadhi zilezile ulizotumia kukamilisha usanidi.", "login_signin_apple": "Ingia kwa kutumia Apple", "login_signin_google": "Ingia kwa kutumia Google", diff --git a/client/shared/src/desktopMain/resources/localization/ta.json b/client/shared/src/desktopMain/resources/localization/ta.json index 34f5c0e..f3a999a 100644 --- a/client/shared/src/desktopMain/resources/localization/ta.json +++ b/client/shared/src/desktopMain/resources/localization/ta.json @@ -1860,7 +1860,7 @@ "login_privacy": "காண் Privacy Policy", "login_reset_device": "சாதனத்தை மீட்டமை", "login_reset_device_cancel": "ரத்து", - "login_reset_device_confirm_body": "இது அனைத்து உள்ளூர் தரவையும் அழித்து, அமைவு வழிகாட்டிக்கு திரும்பும். இதை மீண்டும் செயல்தவிர்க்க இயலாது.", + "login_reset_device_confirm_body": "இது இந்த சாதனத்தில் சேமிக்கப்பட்டுள்ள நோடு தரவை அழித்து, அமைவு வழிகாட்டிக்குத் திரும்பும். மற்றொரு கணினியில் நீங்கள் இணைந்திருக்கும் நோடு பாதிக்கப்படாது. இந்த செயலை மீள மாற்ற முடியாது.", "login_reset_device_confirm_title": "சாதனத்தை மீட்டமைக்கவா?", "login_setup_complete_relogin": "அமைவு நிறைவடைந்தது. உங்கள் நோடு மறுதொடக்கம் செய்யப்பட்டது, எனவே அமைவை நிறைவு செய்யப் பயன்படுத்திய அதே சான்றுகளுடன் மீண்டும் உள்நுழையவும்.", "login_signin_apple": "Sign in உடன் Apple", diff --git a/client/shared/src/desktopMain/resources/localization/te.json b/client/shared/src/desktopMain/resources/localization/te.json index 78b6759..57f56c3 100644 --- a/client/shared/src/desktopMain/resources/localization/te.json +++ b/client/shared/src/desktopMain/resources/localization/te.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "చివరిగా సైన్ ఇన్ చేసినది: {owner}", "login_password_label": "పాస్‌వర్డ్", "login_privacy": "చూడు Privacy Policy", - "login_reset_device": "పరికరాన్ని రీసెట్ చేయండి", + "login_reset_device": "ఈ పరికరాన్ని రీసెట్ చేయండి", "login_reset_device_cancel": "రద్దు చేయి", - "login_reset_device_confirm_body": "ఇది అన్ని స్థానిక డేటాను తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. దీన్ని రద్దు చేయడం సాధ్యం కాదు.", - "login_reset_device_confirm_title": "పరికరాన్ని రీసెట్ చేయాలా?", + "login_reset_device_confirm_body": "ఇది ఈ పరికరంలో నిల్వ చేసిన నోడ్ డేటాను మొత్తం తొలగించి, సెటప్ విజార్డ్‌కు తిరిగి వెళ్తుంది. మీరు మరొక యంత్రంలో కనెక్ట్ అయి ఉన్న నోడ్ ప్రభావితం కాదు. ఈ చర్యను రద్దు చేయలేరు.", + "login_reset_device_confirm_title": "ఈ పరికరాన్ని రీసెట్ చేయాలా?", "login_setup_complete_relogin": "సెటప్ పూర్తయింది. మీ నోడ్ పునఃప్రారంభమైంది, కాబట్టి సెటప్ పూర్తి చేయడానికి మీరు ఉపయోగించిన అదే ఆధారాలతో దయచేసి మళ్లీ లాగిన్ అవ్వండి.", "login_signin_apple": "Apple తో సైన్ ఇన్ చేయండి", "login_signin_google": "Google తో సైన్ ఇన్ చేయండి", diff --git a/client/shared/src/desktopMain/resources/localization/th.json b/client/shared/src/desktopMain/resources/localization/th.json index 78de09e..079e23f 100644 --- a/client/shared/src/desktopMain/resources/localization/th.json +++ b/client/shared/src/desktopMain/resources/localization/th.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "เข้าสู่ระบบล่าสุด: {owner}", "login_password_label": "รหัสผ่าน", "login_privacy": "ดูนโยบายความเป็นส่วนตัว", - "login_reset_device": "รีเซ็ตอุปกรณ์", + "login_reset_device": "รีเซ็ตอุปกรณ์นี้", "login_reset_device_cancel": "ยกเลิก", - "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลในเครื่องทั้งหมดและกลับสู่วิซาร์ดการตั้งค่า ไม่สามารถย้อนกลับได้", - "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์?", + "login_reset_device_confirm_body": "การดำเนินการนี้จะลบข้อมูลโหนดที่เก็บอยู่บนอุปกรณ์นี้และกลับไปยังตัวช่วยการตั้งค่า โหนดที่คุณเชื่อมต่ออยู่บนเครื่องอื่นจะไม่ได้รับผลกระทบ การดำเนินการนี้ไม่สามารถยกเลิกได้", + "login_reset_device_confirm_title": "รีเซ็ตอุปกรณ์นี้?", "login_setup_complete_relogin": "การตั้งค่าเสร็จสมบูรณ์แล้ว โหนดของคุณได้รีสตาร์ท กรุณาเข้าสู่ระบบอีกครั้งด้วยข้อมูลรับรองเดียวกับที่คุณใช้ในการตั้งค่า", "login_signin_apple": "เข้าสู่ระบบด้วย Apple", "login_signin_google": "เข้าสู่ระบบด้วย Google", diff --git a/client/shared/src/desktopMain/resources/localization/tr.json b/client/shared/src/desktopMain/resources/localization/tr.json index 9708b87..2bc1988 100644 --- a/client/shared/src/desktopMain/resources/localization/tr.json +++ b/client/shared/src/desktopMain/resources/localization/tr.json @@ -1860,7 +1860,7 @@ "login_privacy": "Gizlilik Politikasını Görüntüle", "login_reset_device": "Cihazı Sıfırla", "login_reset_device_cancel": "İptal", - "login_reset_device_confirm_body": "Bu işlem tüm yerel verileri silecek ve kurulum sihirbazına geri dönecektir. Bu işlem geri alınamaz.", + "login_reset_device_confirm_body": "Bu işlem, BU cihazda depolanan düğüm verilerini siler ve kurulum sihirbazına döner. Başka bir makinede bağlı olduğunuz bir düğüm etkilenmez. Bu geri alınamaz.", "login_reset_device_confirm_title": "Cihaz sıfırlansın mı?", "login_setup_complete_relogin": "Kurulum tamamlandı. Düğümünüz yeniden başlatıldı; lütfen kurulumu tamamlarken kullandığınız kimlik bilgileriyle yeniden oturum açın.", "login_signin_apple": "Apple ile giriş yap", diff --git a/client/shared/src/desktopMain/resources/localization/uk.json b/client/shared/src/desktopMain/resources/localization/uk.json index fafcb63..9de68ee 100644 --- a/client/shared/src/desktopMain/resources/localization/uk.json +++ b/client/shared/src/desktopMain/resources/localization/uk.json @@ -1860,7 +1860,7 @@ "login_privacy": "Переглянути Політику конфіденційності", "login_reset_device": "Скинути пристрій", "login_reset_device_cancel": "Скасувати", - "login_reset_device_confirm_body": "Це видалить усі локальні дані та повернеться до майстра налаштування. Цю дію неможливо скасувати.", + "login_reset_device_confirm_body": "Це видалить дані вузла, збережені НА ЦЬОМУ пристрої, та поверне вас до майстра налаштування. Це не впливає на вузол, до якого ви підключені на іншому комп'ютері. Цю дію неможливо скасувати.", "login_reset_device_confirm_title": "Скинути пристрій?", "login_setup_complete_relogin": "Налаштування завершено. Ваш вузол перезапустився, тому увійдіть знову, використовуючи ті самі облікові дані, з якими ви завершили налаштування.", "login_signin_apple": "Увійти через Apple", diff --git a/client/shared/src/desktopMain/resources/localization/ur.json b/client/shared/src/desktopMain/resources/localization/ur.json index 7c17d31..cecd77f 100644 --- a/client/shared/src/desktopMain/resources/localization/ur.json +++ b/client/shared/src/desktopMain/resources/localization/ur.json @@ -1860,7 +1860,7 @@ "login_privacy": "رازداری کی پالیسی دیکھیں", "login_reset_device": "ڈیوائس ری سیٹ کریں", "login_reset_device_cancel": "منسوخ کریں", - "login_reset_device_confirm_body": "یہ تمام مقامی ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس لے جائے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", + "login_reset_device_confirm_body": "یہ اِسی ڈیوائس پر محفوظ نوڈ کا ڈیٹا مٹا دے گا اور سیٹ اپ وزرڈ پر واپس آ جائے گا۔ کسی دوسری مشین پر جس نوڈ سے آپ جڑے ہیں، اُس پر کوئی اثر نہیں پڑے گا۔ یہ عمل واپس نہیں کیا جا سکتا۔", "login_reset_device_confirm_title": "ڈیوائس ری سیٹ کریں؟", "login_setup_complete_relogin": "سیٹ اپ مکمل ہو گیا ہے۔ آپ کا نوڈ دوبارہ شروع ہوا ہے، اس لیے براہِ کرم انہی اسناد کے ساتھ دوبارہ لاگ اِن کریں جو آپ نے سیٹ اپ مکمل کرنے کے لیے استعمال کی تھیں۔", "login_signin_apple": "Apple کے ساتھ سائن ان کریں", diff --git a/client/shared/src/desktopMain/resources/localization/vi.json b/client/shared/src/desktopMain/resources/localization/vi.json index 245869a..24135ce 100644 --- a/client/shared/src/desktopMain/resources/localization/vi.json +++ b/client/shared/src/desktopMain/resources/localization/vi.json @@ -1860,7 +1860,7 @@ "login_privacy": "Xem chính sách bảo mật", "login_reset_device": "Đặt lại thiết bị", "login_reset_device_cancel": "Hủy", - "login_reset_device_confirm_body": "Thao tác này sẽ xóa tất cả dữ liệu cục bộ và quay lại trình hướng dẫn cài đặt. Hành động này không thể hoàn tác.", + "login_reset_device_confirm_body": "Thao tác này sẽ xóa dữ liệu nút được lưu trữ trên CHÍNH thiết bị này và quay lại trình hướng dẫn cài đặt. Nút mà bạn đang kết nối trên một máy khác sẽ không bị ảnh hưởng. Không thể hoàn tác.", "login_reset_device_confirm_title": "Đặt lại thiết bị?", "login_setup_complete_relogin": "Thiết lập đã hoàn tất. Nút của bạn đã khởi động lại, vui lòng đăng nhập lại bằng đúng thông tin đăng nhập mà bạn đã dùng để hoàn tất thiết lập.", "login_signin_apple": "Đăng nhập bằng Apple", diff --git a/client/shared/src/desktopMain/resources/localization/yo.json b/client/shared/src/desktopMain/resources/localization/yo.json index d7f8400..c7c0a0f 100644 --- a/client/shared/src/desktopMain/resources/localization/yo.json +++ b/client/shared/src/desktopMain/resources/localization/yo.json @@ -1858,10 +1858,10 @@ "login_owner_hint": "Ìwọlé ìkẹ̀yìn: {owner}", "login_password_label": "Ọ̀rọ̀ Àṣírí", "login_privacy": "Wo Ìlànà Àṣírí", - "login_reset_device": "Tún ẹ̀rọ ṣe", + "login_reset_device": "Tún ẹ̀rọ yìí ṣe", "login_reset_device_cancel": "Fagilé", - "login_reset_device_confirm_body": "Èyí yóò pa gbogbo dátà àdúgbò run kí ó sì padà sí olùṣèlú ìṣètò. Èyí kò lè yípadà.", - "login_reset_device_confirm_title": "Tún ẹ̀rọ ṣe?", + "login_reset_device_confirm_body": "Èyí yóò pa dátà nódù tí a fipamọ́ sórí Ẹ̀RỌ YÌÍ run kí ó sì padà sí olùtọ́nisọ́nà ìṣètò. Èyí kò ní kan nódù tí ẹ ti so pọ̀ mọ́ ẹ̀rọ mìíràn. Èyí kò ṣeépadà.", + "login_reset_device_confirm_title": "Tún ẹ̀rọ yìí ṣe?", "login_setup_complete_relogin": "Ìṣètò ti parí. Node rẹ tún bẹ̀rẹ̀, nítorí náà jọ̀wọ́ wọlé padà pẹ̀lú àwọn ẹ̀rí ìdánimọ̀ kan náà tí o lò láti parí ìṣètò.", "login_signin_apple": "Wọlé pẹ̀lú Apple", "login_signin_google": "Wọlé pẹ̀lú Google", diff --git a/client/shared/src/desktopMain/resources/localization/zh.json b/client/shared/src/desktopMain/resources/localization/zh.json index 2bcede3..570ceda 100644 --- a/client/shared/src/desktopMain/resources/localization/zh.json +++ b/client/shared/src/desktopMain/resources/localization/zh.json @@ -1860,7 +1860,7 @@ "login_privacy": "查看隐私政策", "login_reset_device": "重置设备", "login_reset_device_cancel": "取消", - "login_reset_device_confirm_body": "此操作将清除所有本地数据并返回设置向导。此操作无法撤销。", + "login_reset_device_confirm_body": "此操作将清除存储在本设备上的节点数据并返回设置向导。您在其他设备上已连接的节点不会受到影响。此操作无法撤销。", "login_reset_device_confirm_title": "重置设备?", "login_setup_complete_relogin": "设置已完成。您的节点已重新启动,请使用完成设置时使用的相同凭据重新登录。", "login_signin_apple": "使用 Apple 登录", diff --git a/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/DebugLogBufferConcurrencyTest.kt b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/DebugLogBufferConcurrencyTest.kt new file mode 100644 index 0000000..0fdb4fd --- /dev/null +++ b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/DebugLogBufferConcurrencyTest.kt @@ -0,0 +1,83 @@ +package ai.ciris.mobile.shared.platform + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.runBlocking +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +/** + * The buffer is written from several threads at once and read when things have + * already gone wrong. + * + * On desktop the node's stdout reader logs from `Dispatchers.IO` while view + * models log from their own scopes. That is not an exotic case: it is what a + * failing startup looks like, which is the only time anyone downloads a debug + * bundle. A buffer that silently drops entries under concurrency would omit + * exactly the errors it exists to capture, and the loss would be invisible — + * the bundle still arrives, just missing the line that explains the failure. + * + * These live in `desktopTest`, not `commonTest`, deliberately: they need real + * parallelism. On a single-threaded target `Dispatchers.Default` interleaves + * without ever overlapping, so a read-modify-write bug passes. + */ +class DebugLogBufferConcurrencyTest { + + @BeforeTest + fun reset() = DebugLogBuffer.clear() + + @Test + fun `concurrent adds lose no entries and never repeat an id`() = runBlocking { + // Under the buffer cap, so every add must survive: any shortfall is a + // lost update rather than intended trimming. + val writers = 16 + val perWriter = 10 + val total = writers * perWriter + + (0 until writers).map { w -> + async(Dispatchers.Default) { + repeat(perWriter) { i -> DebugLogBuffer.add("INFO", "w$w", "msg-$i") } + } + }.awaitAll() + + val entries = DebugLogBuffer.entries.value + assertEquals(total, entries.size, "lost entries under concurrent add") + + val ids = entries.map { it.id } + assertEquals(ids.size, ids.toSet().size, "duplicate ids under concurrent add") + assertEquals(ids.sorted(), ids, "ids not monotonic in list order") + } + + @Test + fun `concurrent error adds count every error`() = runBlocking { + val writers = 16 + val perWriter = 8 + + (0 until writers).map { w -> + async(Dispatchers.Default) { + repeat(perWriter) { i -> DebugLogBuffer.add("ERROR", "w$w", "boom-$i") } + } + }.awaitAll() + + assertEquals( + writers * perWriter, + DebugLogBuffer.errorCount.value, + "lost increments: errorCount read-modify-write is not atomic", + ) + assertTrue(DebugLogBuffer.latestError.value?.startsWith("[w") == true) + } + + @Test + fun `buffer trims to the cap and keeps the newest`() = runBlocking { + // Single-threaded: this asserts the trim policy, not the race. + repeat(250) { i -> DebugLogBuffer.add("INFO", "t", "m$i") } + + val entries = DebugLogBuffer.entries.value + assertEquals(200, entries.size, "buffer did not trim to MAX_ENTRIES") + assertEquals("m249", entries.last().message, "trim dropped the newest, not the oldest") + assertEquals("m50", entries.first().message) + } +} diff --git a/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/DesktopVersionTest.kt b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/DesktopVersionTest.kt new file mode 100644 index 0000000..91297a4 --- /dev/null +++ b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/DesktopVersionTest.kt @@ -0,0 +1,30 @@ +package ai.ciris.mobile.shared.platform + +import ai.ciris.mobile.shared.models.CLIENT_VERSION +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +/** + * The desktop version is the version, not a constant someone remembers to bump. + * + * `getAppVersion()` prefers the JAR manifest, and the Compose uber-jar writes + * only `Main-Class` — so the fallback is the ONLY value desktop ever reports. + * As a hand-maintained literal it drifted to "2.3.2" while builds shipped + * 2.9.x, and a diagnostics bundle from a 0.5.191 build named 2.3.2 as its + * version (CIRISClient#11). + */ +class DesktopVersionTest { + + @Test + fun desktop_reports_the_version_this_build_actually_is() { + assertEquals(CLIENT_VERSION, getAppVersion()) + } + + @Test + fun and_it_is_not_the_literal_that_drifted() { + // Named explicitly so a future re-vendor that reintroduces the constant + // fails here rather than shipping a bundle that misreports its build. + assertTrue(getAppVersion() != "2.3.2", "desktop is reporting the stale hand-maintained version") + } +} diff --git a/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipeTest.kt b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipeTest.kt new file mode 100644 index 0000000..f358758 --- /dev/null +++ b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipeTest.kt @@ -0,0 +1,99 @@ +package ai.ciris.mobile.shared.platform + +import java.io.File +import java.nio.file.Files +import kotlin.test.AfterTest +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertFalse +import kotlin.test.assertTrue + +/** + * Reset Device is the most destructive thing this app can do, and it shipped + * four wrong answers: it deleted an unrelated installed agent, then a whole git + * checkout including uncommitted work, then anything sharing a directory with a + * bare `data/`, then the state of a node the client was not even talking to. + * + * Every one of those is a statement about what SURVIVES a wipe, which is why + * these tests assert survival against a populated tree rather than checking + * that the intended targets are gone. + */ +class LocalDataWipeTest { + + private lateinit var home: File + + @BeforeTest + fun setUp() { + home = Files.createTempDirectory("ciris-wipe-test").toFile() + } + + @AfterTest + fun tearDown() { + home.deleteRecursively() + } + + private fun populate() { + File(home, ".env").writeText("CIRIS_CONFIGURED=true") + File(home, "data").mkdirs() + File(home, "data/ciris_engine.db").writeText("db") + File(home, "identity").mkdirs() + File(home, "identity/node.key").writeText("secret") + File(home, "logs").mkdirs() + File(home, "config").mkdirs() + File(home, "config/essential.yaml").writeText("tracked source") + + // Never ours: a wipe that takes these is the bug, not the feature. + File(home, "my_thesis.txt").writeText("years of work") + File(home, "src").mkdirs() + File(home, "src/main.py").writeText("code") + File(home, ".git").mkdirs() + File(home, ".git/HEAD").writeText("ref: refs/heads/main") + } + + @Test + fun `removes generated state and nothing else`() { + populate() + assertTrue(wipeGeneratedState(home, checkout = false)) + + assertFalse(File(home, ".env").exists()) + assertFalse(File(home, "data").exists()) + assertFalse(File(home, "identity").exists()) + assertFalse(File(home, "logs").exists()) + + assertTrue(File(home, "my_thesis.txt").exists(), "deleted a file it did not write") + assertTrue(File(home, "src/main.py").exists(), "deleted source that is not node state") + assertTrue(File(home, ".git/HEAD").exists(), "deleted the repository") + } + + @Test + fun `never removes the home directory itself`() { + populate() + wipeGeneratedState(home, checkout = false) + assertTrue(home.exists(), "home directory was removed — bug #2 and #3") + assertTrue(home.isDirectory) + } + + @Test + fun `keeps tracked config in a checkout and removes it otherwise`() { + populate() + wipeGeneratedState(home, checkout = true) + assertTrue( + File(home, "config/essential.yaml").exists(), + "deleted tracked source: config/ is node state only outside a checkout", + ) + + tearDown(); setUp(); populate() + wipeGeneratedState(home, checkout = false) + assertFalse(File(home, "config").exists(), "kept generated config in a dedicated home") + } + + @Test + fun `an empty home succeeds without creating anything`() { + assertTrue(wipeGeneratedState(home, checkout = false)) + assertTrue(home.listFiles()?.isEmpty() == true) + } + + + + +} \ No newline at end of file diff --git a/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundleRedactionTest.kt b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundleRedactionTest.kt new file mode 100644 index 0000000..5baed20 --- /dev/null +++ b/client/shared/src/desktopTest/kotlin/ai/ciris/mobile/shared/ui/components/DebugBundleRedactionTest.kt @@ -0,0 +1,263 @@ +package ai.ciris.mobile.shared.ui.components + +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertTrue + +/** + * The bundle is built to be handed to someone else. Redaction is therefore not + * about what we log today — nothing logs a credential today — but about what + * escapes when somebody later logs one while chasing a bug. + * + * Both directions matter equally. A redactor that misses a JWT leaks; a + * redactor that eats ordinary log lines destroys the only artifact a stranded + * user can send us. The second half of these tests is the half that keeps the + * patterns honest. + */ +class DebugBundleRedactionTest { + + private fun redact(s: String) = DebugBundle.redactSecrets(s) + + @Test + fun `removes jwts`() { + val jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dBjftJeZ4CVP" + val out = redact("[INFO] auth: exchanged $jwt ok") + assertFalse(out.contains("eyJhbGciOi"), "JWT survived redaction") + assertTrue(out.contains("[INFO] auth:"), "redaction ate the surrounding line") + } + + @Test + fun `removes bearer headers including service tokens`() { + assertFalse( + redact("Authorization: Bearer abcdef0123456789abcdef").contains("abcdef0123456789"), + ) + assertFalse( + redact("header Bearer service:9f8e7d6c5b4a39281706").contains("9f8e7d6c5b4a"), + ) + } + + @Test + fun `removes secret-shaped assignments`() { + for (line in listOf( + "api_key=sk-live-abcdef123456", + "access_token: ghp_AAAABBBBCCCCDDDDEEEE", + "password = hunter2hunter2", + """{"client_secret":"s3cr3t-value-here"}""", + )) { + val out = redact(line) + assertTrue(out.contains(""), "not redacted: $line -> $out") + } + assertFalse(redact("password = hunter2hunter2").contains("hunter2hunter2")) + } + + @Test + fun `leaves ordinary diagnostics untouched`() { + // Every one of these is a line we NEED in a bug report. + for (line in listOf( + // The exact lines the Esu report turned on: an auth failure must + // survive intact, or the bundle loses the one fact worth sending. + "[ERROR] CIRISApp: token exchange failed: HTTP 401", + "[ERROR] auth: token exchange failed, no refresh token present", + "token: expired", + "[INFO] startup: 22/22 services healthy in 4.2s", + "client version: 0.5.190", + "app version: 2.9.41", + "device: Linux 7.0.0-30-generic amd64", + "screen: login", + "[WARN] node: attestation deadline exceeded (20s budget)", + "GET /v1/system/health -> 200 in 34ms", + )) { + assertEquals(line, redact(line), "redactor damaged an ordinary log line") + } + } + + @Test + fun `render passes its whole output through redaction`() { + val out = DebugBundle.render( + mapOf("error (full)" to "refresh_token=rt_abcdef0123456789 rejected"), + ) + assertFalse(out.contains("rt_abcdef0123456789"), "extra map bypassed redaction") + assertTrue(out.contains("CIRIS debug bundle")) + } + + @Test + fun a_quoted_secret_containing_spaces_is_removed_whole() { + // The value group used to stop at the first space, so a four-word + // passphrase lost one word and kept three (Codex, PR #18). + val out = DebugBundle.redactSecrets("password=\"correct horse battery staple\"") + assertFalse(out.contains("horse"), "the rest of the passphrase survived: $out") + assertFalse(out.contains("staple"), "the rest of the passphrase survived: $out") + assertTrue(out.contains(""), out) + } + + @Test + fun a_quoted_state_is_still_not_a_credential() { + val out = DebugBundle.redactSecrets("token=\"expired\"") + assertTrue(out.contains("expired"), "a state was redacted to nothing: $out") + } + + @Test + fun a_double_quoted_secret_may_contain_an_apostrophe() { + // A single arm excluding BOTH quote types never matched this, so it + // fell through to the unquoted arm and leaked the rest (Codex, PR #18). + val out = DebugBundle.redactSecrets("password=\"correct horse's battery staple\"") + assertFalse(out.contains("battery"), "the credential survived: $out") + assertFalse(out.contains("staple"), "the credential survived: $out") + assertTrue(out.contains(""), out) + } + + @Test + fun a_single_quoted_secret_may_contain_a_double_quote() { + val out = DebugBundle.redactSecrets("password='he said \"open sesame\" twice'") + assertFalse(out.contains("sesame"), "the credential survived: $out") + assertTrue(out.contains(""), out) + } + + @Test + fun compound_credential_names_are_the_ones_this_codebase_uses() { + // llm_api_key appears 7 times in the models; \b cannot fire after an + // underscore, so the pattern was blind to exactly these spellings + // (Codex, PR #18). + for (line in listOf( + "llm_api_key=sk-abcdef123456", + "owner_password=hunter2hunter2", + "system_admin_password=hunter2hunter2", + "backup_llm_api_key=sk-abcdef123456", + )) { + val out = DebugBundle.redactSecrets(line) + assertTrue(out.contains(""), "not redacted: $out") + assertFalse(out.contains("sk-abcdef123456"), "credential survived: $out") + assertFalse(out.contains("hunter2hunter2"), "credential survived: $out") + } + } + + @Test + fun a_status_flag_is_not_a_credential() { + // `llm_api_key_set=true` is a boolean about configuration. Redacting it + // costs the reader the fact the line carried. + val out = DebugBundle.redactSecrets("llm_api_key_set=true") + assertTrue(out.contains("true"), "a status flag was redacted: $out") + } + + @Test + fun an_escaped_delimiter_does_not_end_the_value() { + val out = DebugBundle.redactSecrets( + "{\"password\":\"correct \\\"horse\\\" battery staple\"}" + ) + assertFalse(out.contains("battery"), "the credential survived: $out") + assertFalse(out.contains("staple"), "the credential survived: $out") + } + + @Test + fun a_short_credential_is_still_a_credential() { + // The value quantifier was {6,}, so anything shorter was exported whole + // (Codex, PR #18). The NAME is the shape check; length was never it. + for (line in listOf("client_secret=\"abc\"", "password=12345", "token=x1")) { + val out = DebugBundle.redactSecrets(line) + assertTrue(out.contains(""), "not redacted: $out") + } + } + + @Test + fun a_short_status_is_still_a_status() { + // Relaxing the quantifier made the state list load-bearing for words + // that are now long enough to match. + for (line in listOf("token: ok", "llm_api_key=unset", "password: none", "secret=null")) { + val out = DebugBundle.redactSecrets(line) + assertFalse(out.contains(""), "a status was redacted: $out") + } + } + + @Test + fun the_patterns_construct_without_inline_flags() { + // `(?i)` is invalid in ECMAScript, so on wasmJs building these threw at + // object init — and `environment()` touches the object, so "Open a + // GitHub issue" on a failure panel crashed before it could open + // (Codex, PR #18). Constructing and using them is the assertion. + assertTrue(DebugBundle.redactSecrets("API_KEY=sk-abcdef").contains("")) + assertTrue(DebugBundle.redactSecrets("Bearer AbCdEf0123456789").contains("")) + } + + @Test + fun a_state_word_is_only_a_state_when_it_is_the_whole_value() { + // `\b` matched INSIDE these, so the lookahead suppressed the match and + // exported the credential whole — a leak the relaxed quantifier created + // (Codex, PR #18). + for (line in listOf( + "password=valid-secret-123", + "password=no-way-this-leaks", + "token=expired-value", + "llm_api_key=set-me-to-something", + )) { + val out = DebugBundle.redactSecrets(line) + assertTrue(out.contains(""), "not redacted: $out") + } + // and the genuine states still survive + for (line in listOf("password=valid", "token=expired", "llm_api_key=set")) { + assertFalse(DebugBundle.redactSecrets(line).contains(""), line) + } + } + + @Test + fun a_short_bearer_token_is_still_a_bearer_token() { + for (line in listOf("Authorization: Bearer abc123", "Bearer service:abc123")) { + val out = DebugBundle.redactSecrets(line) + assertTrue(out.contains(""), "not redacted: $out") + assertFalse(out.contains("abc123"), "token survived: $out") + } + } + + @Test + fun a_jwt_with_a_small_claims_set_is_still_a_jwt() { + // Segment length was never the shape check; `eyJ` is (Codex, PR #18). + val out = DebugBundle.redactSecrets("auth=eyJhbGc.eyJhIjoxfQ.sig") + assertTrue(out.contains(""), out) + } + + @Test + fun the_public_nodecode_is_left_alone() { + // It sits on the neighbouring banner line and is a PUBLIC bootstrap + // handle. Redacting it costs the reader the thing they need. + val line = "\u2551 NodeCode : CIRIS-V1-AAAA-BBBB-CCCC" + assertTrue(DebugBundle.redactSecrets(line).contains("CIRIS-V1-AAAA-BBBB-CCCC")) + } + + @Test + fun an_ordinary_dashed_token_is_not_mistaken_for_a_pin() { + // Label AND shape: without the label this would eat arbitrary text. + val line = "order ABCD-1234 shipped" + assertTrue(DebugBundle.redactSecrets(line).contains("ABCD-1234")) + } + + @Test + fun an_unterminated_quoted_credential_is_redacted_to_end_of_line() { + val out = DebugBundle.redactSecrets("password=\"correct horse battery staple") + assertFalse(out.contains("battery"), "the credential survived: $out") + assertFalse(out.contains("staple"), "the credential survived: $out") + } + + @Test + fun an_unterminated_secret_may_contain_the_other_quote_or_an_escape() { + for (line in listOf( + "password=\"correct horse's battery staple", + "password=\"correct \\\"horse\\\" battery staple", + )) { + val out = DebugBundle.redactSecrets(line) + assertFalse(out.contains("battery"), "the credential survived: $out") + assertFalse(out.contains("staple"), "the credential survived: $out") + } + } +} \ No newline at end of file diff --git a/client/shared/src/iosMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.ios.kt b/client/shared/src/iosMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.ios.kt index c302faa..b6131bd 100644 --- a/client/shared/src/iosMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.ios.kt +++ b/client/shared/src/iosMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.ios.kt @@ -67,3 +67,5 @@ actual fun wipeLocalData(declaredNodeHome: String?): Boolean { return ok } + + diff --git a/client/shared/src/wasmJsMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.wasmJs.kt b/client/shared/src/wasmJsMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.wasmJs.kt index 446d352..0dd1f9e 100644 --- a/client/shared/src/wasmJsMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.wasmJs.kt +++ b/client/shared/src/wasmJsMain/kotlin/ai/ciris/mobile/shared/platform/LocalDataWipe.wasmJs.kt @@ -6,3 +6,5 @@ package ai.ciris.mobile.shared.platform * the UI can say so instead of claiming a wipe that did not happen. */ actual fun wipeLocalData(declaredNodeHome: String?): Boolean = false + +