refactor(account-settings): simplify UI layout, rename backup buttons, remove u/ prefix

This commit is contained in:
plebeius
2026-02-25 14:51:10 +08:00
parent 15d8103391
commit 37d40626e7
38 changed files with 155 additions and 86 deletions
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "متابعة", "continue": "متابعة",
"loading_editor": "جاري تحميل المحرر...", "loading_editor": "جاري تحميل المحرر...",
"editor_fallback_warning": "فشل تحميل محرر الأكواد. يتم استخدام حقل نص عادي بدلاً منه.", "editor_fallback_warning": "فشل تحميل محرر الأكواد. يتم استخدام حقل نص عادي بدلاً منه.",
"return_to_settings": "العودة إلى الإعدادات" "return_to_settings": "العودة إلى الإعدادات",
"import_account_backup": "استيراد نسخة احتياطية للحساب",
"account_auto_generated": "تم إنشاء هذا الحساب تلقائياً بواسطة 5chan، دون الحاجة للتسجيل.",
"download_backup": "تحميل النسخة الاحتياطية"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "চালিয়ে যান", "continue": "চালিয়ে যান",
"loading_editor": "এডিটর লোড হচ্ছে...", "loading_editor": "এডিটর লোড হচ্ছে...",
"editor_fallback_warning": "কোড এডিটর লোড করতে ব্যর্থ হয়েছে। পরিবর্তে একটি সাধারণ টেক্সট এরিয়া ব্যবহার করা হচ্ছে।", "editor_fallback_warning": "কোড এডিটর লোড করতে ব্যর্থ হয়েছে। পরিবর্তে একটি সাধারণ টেক্সট এরিয়া ব্যবহার করা হচ্ছে।",
"return_to_settings": "সেটিংসে ফিরে যান" "return_to_settings": "সেটিংসে ফিরে যান",
"import_account_backup": "অ্যাকাউন্ট ব্যাকআপ আমদানি করুন",
"account_auto_generated": "এই অ্যাকাউন্টটি 5chan দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হয়েছে, সাইনআপের প্রয়োজন নেই।",
"download_backup": "ব্যাকআপ ডাউনলোড করুন"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Pokračovat", "continue": "Pokračovat",
"loading_editor": "Načítání editoru...", "loading_editor": "Načítání editoru...",
"editor_fallback_warning": "Načtení editoru kódu selhalo. Místo toho se používá jednoduché textové pole.", "editor_fallback_warning": "Načtení editoru kódu selhalo. Místo toho se používá jednoduché textové pole.",
"return_to_settings": "Zpět na nastavení" "return_to_settings": "Zpět na nastavení",
"import_account_backup": "Importovat zálohu účtu",
"account_auto_generated": "Tento účet byl automaticky vygenerován 5chanem, registrace není nutná.",
"download_backup": "Stáhnout zálohu"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Fortsæt", "continue": "Fortsæt",
"loading_editor": "Indlæser editor...", "loading_editor": "Indlæser editor...",
"editor_fallback_warning": "Kodeeditoren kunne ikke indlæses. Bruger et simpelt tekstfelt i stedet.", "editor_fallback_warning": "Kodeeditoren kunne ikke indlæses. Bruger et simpelt tekstfelt i stedet.",
"return_to_settings": "Tilbage til indstillinger" "return_to_settings": "Tilbage til indstillinger",
"import_account_backup": "Importer kontobackup",
"account_auto_generated": "Denne konto blev automatisk oprettet af 5chan, ingen tilmelding påkrævet.",
"download_backup": "Download sikkerhedskopi"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Weiter", "continue": "Weiter",
"loading_editor": "Editor wird geladen...", "loading_editor": "Editor wird geladen...",
"editor_fallback_warning": "Der Code-Editor konnte nicht geladen werden. Es wird stattdessen ein einfaches Textfeld verwendet.", "editor_fallback_warning": "Der Code-Editor konnte nicht geladen werden. Es wird stattdessen ein einfaches Textfeld verwendet.",
"return_to_settings": "Zurück zu den Einstellungen" "return_to_settings": "Zurück zu den Einstellungen",
"import_account_backup": "Kontosicherung importieren",
"account_auto_generated": "Dieses Konto wurde automatisch von 5chan erstellt, keine Anmeldung erforderlich.",
"download_backup": "Sicherung herunterladen"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Συνέχεια", "continue": "Συνέχεια",
"loading_editor": "Φόρτωση του επεξεργαστή...", "loading_editor": "Φόρτωση του επεξεργαστή...",
"editor_fallback_warning": "Αποτυχία φόρτωσης του επεξεργαστή κώδικα. Χρησιμοποιείται απλό πεδίο κειμένου αντί για αυτό.", "editor_fallback_warning": "Αποτυχία φόρτωσης του επεξεργαστή κώδικα. Χρησιμοποιείται απλό πεδίο κειμένου αντί για αυτό.",
"return_to_settings": "Επιστροφή στις Ρυθμίσεις" "return_to_settings": "Επιστροφή στις Ρυθμίσεις",
"import_account_backup": "Εισαγωγή αντιγράφου ασφαλείας λογαριασμού",
"account_auto_generated": "Αυτός ο λογαριασμός δημιουργήθηκε αυτόματα από το 5chan, χωρίς απαιτούμενη εγγραφή.",
"download_backup": "Λήψη αντιγράφου ασφαλείας"
} }
+4 -1
View File
@@ -290,5 +290,8 @@
"continue": "Continue", "continue": "Continue",
"loading_editor": "Loading editor...", "loading_editor": "Loading editor...",
"editor_fallback_warning": "The code editor failed to load. Using a plain textarea instead.", "editor_fallback_warning": "The code editor failed to load. Using a plain textarea instead.",
"return_to_settings": "Return to Settings" "return_to_settings": "Return to Settings",
"account_auto_generated": "This account was automatically generated by 5chan, no signup required.",
"download_backup": "Download Backup",
"import_account_backup": "Import Account Backup"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Continuar", "continue": "Continuar",
"loading_editor": "Cargando editor...", "loading_editor": "Cargando editor...",
"editor_fallback_warning": "No se pudo cargar el editor de código. Se usa un campo de texto simple en su lugar.", "editor_fallback_warning": "No se pudo cargar el editor de código. Se usa un campo de texto simple en su lugar.",
"return_to_settings": "Volver a Configuración" "return_to_settings": "Volver a Configuración",
"import_account_backup": "Importar copia de seguridad de la cuenta",
"account_auto_generated": "Esta cuenta fue generada automáticamente por 5chan, no se requiere registro.",
"download_backup": "Descargar copia de seguridad"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "ادامه", "continue": "ادامه",
"loading_editor": "در حال بارگذاری ویرایشگر...", "loading_editor": "در حال بارگذاری ویرایشگر...",
"editor_fallback_warning": "بارگذاری ویرایشگر کد ناموفق بود. در عوض از یک فیلد متنی ساده استفاده می‌شود.", "editor_fallback_warning": "بارگذاری ویرایشگر کد ناموفق بود. در عوض از یک فیلد متنی ساده استفاده می‌شود.",
"return_to_settings": "بازگشت به تنظیمات" "return_to_settings": "بازگشت به تنظیمات",
"import_account_backup": "وارد کردن پشتیبان حساب",
"account_auto_generated": "این حساب به‌طور خودکار توسط 5chan ایجاد شده، نیازی به ثبت‌نام نیست.",
"download_backup": "دانلود پشتیبان"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Jatka", "continue": "Jatka",
"loading_editor": "Ladataan editoria...", "loading_editor": "Ladataan editoria...",
"editor_fallback_warning": "Koodieditorin lataus epäonnistui. Käytetään sen sijaan yksinkertaista tekstikenttää.", "editor_fallback_warning": "Koodieditorin lataus epäonnistui. Käytetään sen sijaan yksinkertaista tekstikenttää.",
"return_to_settings": "Palaa asetuksiin" "return_to_settings": "Palaa asetuksiin",
"import_account_backup": "Tuo tilin varmuuskopio",
"account_auto_generated": "Tämä tili luotiin automaattisesti 5chanissa, rekisteröitymistä ei tarvita.",
"download_backup": "Lataa varmuuskopio"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Magpatuloy", "continue": "Magpatuloy",
"loading_editor": "Nilo-load ang editor...", "loading_editor": "Nilo-load ang editor...",
"editor_fallback_warning": "Nabigo ang pag-load ng code editor. Gumagamit ng plain textarea sa halip.", "editor_fallback_warning": "Nabigo ang pag-load ng code editor. Gumagamit ng plain textarea sa halip.",
"return_to_settings": "Bumalik sa Mga Setting" "return_to_settings": "Bumalik sa Mga Setting",
"import_account_backup": "I-import ang Backup ng Account",
"account_auto_generated": "Ang account na ito ay awtomatikong nilikha ng 5chan, walang kailangang signup.",
"download_backup": "I-download ang Backup"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Continuer", "continue": "Continuer",
"loading_editor": "Chargement de l'éditeur...", "loading_editor": "Chargement de l'éditeur...",
"editor_fallback_warning": "Le chargement de l'éditeur de code a échoué. Utilisation d'un champ de texte simple à la place.", "editor_fallback_warning": "Le chargement de l'éditeur de code a échoué. Utilisation d'un champ de texte simple à la place.",
"return_to_settings": "Retour aux paramètres" "return_to_settings": "Retour aux paramètres",
"import_account_backup": "Importer la sauvegarde du compte",
"account_auto_generated": "Ce compte a été généré automatiquement par 5chan, aucune inscription requise.",
"download_backup": "Télécharger la sauvegarde"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "המשך", "continue": "המשך",
"loading_editor": "טוען עורך...", "loading_editor": "טוען עורך...",
"editor_fallback_warning": "טעינת עורך הקוד נכשלה. משתמשים בשדה טקסט פשוט במקום.", "editor_fallback_warning": "טעינת עורך הקוד נכשלה. משתמשים בשדה טקסט פשוט במקום.",
"return_to_settings": "חזרה להגדרות" "return_to_settings": "חזרה להגדרות",
"import_account_backup": "ייבוא גיבוי חשבון",
"account_auto_generated": "חשבון זה נוצר אוטומטית על ידי 5chan, אין צורך בהרשמה.",
"download_backup": "הורד גיבוי"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "जारी रखें", "continue": "जारी रखें",
"loading_editor": "संपादक लोड हो रहा है...", "loading_editor": "संपादक लोड हो रहा है...",
"editor_fallback_warning": "कोड एडिटर लोड नहीं हो सका। इसके बजाय एक सामान्य टेक्स्ट एरिया का उपयोग किया जा रहा है।", "editor_fallback_warning": "कोड एडिटर लोड नहीं हो सका। इसके बजाय एक सामान्य टेक्स्ट एरिया का उपयोग किया जा रहा है।",
"return_to_settings": "सेटिंग्स पर वापस जाएं" "return_to_settings": "सेटिंग्स पर वापस जाएं",
"import_account_backup": "खाता बैकअप आयात करें",
"account_auto_generated": "यह खाता 5chan द्वारा स्वचालित रूप से बनाया गया था, साइनअप की आवश्यकता नहीं है।",
"download_backup": "बैकअप डाउनलोड करें"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Folytatás", "continue": "Folytatás",
"loading_editor": "Szerkesztő betöltése...", "loading_editor": "Szerkesztő betöltése...",
"editor_fallback_warning": "A kódszerkesztő betöltése sikertelen. Egyszerű szövegmező használata helyette.", "editor_fallback_warning": "A kódszerkesztő betöltése sikertelen. Egyszerű szövegmező használata helyette.",
"return_to_settings": "Vissza a beállításokhoz" "return_to_settings": "Vissza a beállításokhoz",
"import_account_backup": "Fiók biztonsági mentés importálása",
"account_auto_generated": "Ezt a fiókot a 5chan automatikusan hozta létre, regisztráció nem szükséges.",
"download_backup": "Biztonsági mentés letöltése"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Lanjutkan", "continue": "Lanjutkan",
"loading_editor": "Memuat editor...", "loading_editor": "Memuat editor...",
"editor_fallback_warning": "Editor kode gagal dimuat. Menggunakan textarea biasa sebagai gantinya.", "editor_fallback_warning": "Editor kode gagal dimuat. Menggunakan textarea biasa sebagai gantinya.",
"return_to_settings": "Kembali ke Pengaturan" "return_to_settings": "Kembali ke Pengaturan",
"import_account_backup": "Impor Cadangan Akun",
"account_auto_generated": "Akun ini dibuat secara otomatis oleh 5chan, tidak perlu mendaftar.",
"download_backup": "Unduh cadangan"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Continua", "continue": "Continua",
"loading_editor": "Caricamento editor...", "loading_editor": "Caricamento editor...",
"editor_fallback_warning": "Il caricamento dell'editor di codice non è riuscito. Si usa un campo di testo semplice al suo posto.", "editor_fallback_warning": "Il caricamento dell'editor di codice non è riuscito. Si usa un campo di testo semplice al suo posto.",
"return_to_settings": "Torna alle impostazioni" "return_to_settings": "Torna alle impostazioni",
"import_account_backup": "Importa backup account",
"account_auto_generated": "Questo account è stato generato automaticamente da 5chan, nessuna registrazione richiesta.",
"download_backup": "Scarica backup"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "続ける", "continue": "続ける",
"loading_editor": "エディターを読み込み中...", "loading_editor": "エディターを読み込み中...",
"editor_fallback_warning": "コードエディターの読み込みに失敗しました。代わりにプレーンテキストエリアを使用します。", "editor_fallback_warning": "コードエディターの読み込みに失敗しました。代わりにプレーンテキストエリアを使用します。",
"return_to_settings": "設定に戻る" "return_to_settings": "設定に戻る",
"import_account_backup": "アカウントバックアップをインポート",
"account_auto_generated": "このアカウントは5chanによって自動生成されました。サインアップは不要です。",
"download_backup": "バックアップをダウンロード"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "계속", "continue": "계속",
"loading_editor": "편집기 로딩 중...", "loading_editor": "편집기 로딩 중...",
"editor_fallback_warning": "코드 편집기 로드에 실패했습니다. 대신 일반 텍스트 영역을 사용합니다.", "editor_fallback_warning": "코드 편집기 로드에 실패했습니다. 대신 일반 텍스트 영역을 사용합니다.",
"return_to_settings": "설정으로 돌아가기" "return_to_settings": "설정으로 돌아가기",
"import_account_backup": "계정 백업 가져오기",
"account_auto_generated": "이 계정은 5chan에서 자동으로 생성되었으며, 가입이 필요하지 않습니다.",
"download_backup": "백업 다운로드"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "सुरू ठेवा", "continue": "सुरू ठेवा",
"loading_editor": "संपादक लोड होत आहे...", "loading_editor": "संपादक लोड होत आहे...",
"editor_fallback_warning": "कोड एडिटर लोड नाही झाला. त्याऐवजी साध्या टेक्स्ट एरियाचा वापर केला जात आहे.", "editor_fallback_warning": "कोड एडिटर लोड नाही झाला. त्याऐवजी साध्या टेक्स्ट एरियाचा वापर केला जात आहे.",
"return_to_settings": "सेटिंग्जवर परत जा" "return_to_settings": "सेटिंग्जवर परत जा",
"import_account_backup": "खाते बॅकअप आयात करा",
"account_auto_generated": "हा खाता 5chan द्वारा स्वयंचलितपणे तयार केला गेला, साइनअप आवश्यक नाही.",
"download_backup": "बॅकअप डाउनलोड करा"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Doorgaan", "continue": "Doorgaan",
"loading_editor": "Editor laden...", "loading_editor": "Editor laden...",
"editor_fallback_warning": "De code-editor kon niet worden geladen. Er wordt een eenvoudig tekstveld gebruikt.", "editor_fallback_warning": "De code-editor kon niet worden geladen. Er wordt een eenvoudig tekstveld gebruikt.",
"return_to_settings": "Terug naar Instellingen" "return_to_settings": "Terug naar Instellingen",
"import_account_backup": "Accountback-up importeren",
"account_auto_generated": "Dit account is automatisch gegenereerd door 5chan, geen aanmelding vereist.",
"download_backup": "Back-up downloaden"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Fortsett", "continue": "Fortsett",
"loading_editor": "Laster editor...", "loading_editor": "Laster editor...",
"editor_fallback_warning": "Kodeeditoren kunne ikke lastes. Bruker et enkelt tekstfelt i stedet.", "editor_fallback_warning": "Kodeeditoren kunne ikke lastes. Bruker et enkelt tekstfelt i stedet.",
"return_to_settings": "Tilbake til Innstillinger" "return_to_settings": "Tilbake til Innstillinger",
"import_account_backup": "Importer kontobackup",
"account_auto_generated": "Denne kontoen ble automatisk opprettet av 5chan, ingen registrering nødvendig.",
"download_backup": "Last ned sikkerhetskopi"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Kontynuuj", "continue": "Kontynuuj",
"loading_editor": "Ładowanie edytora...", "loading_editor": "Ładowanie edytora...",
"editor_fallback_warning": "Nie udało się załadować edytora kodu. Używane jest zamiast tego prostego pola tekstowego.", "editor_fallback_warning": "Nie udało się załadować edytora kodu. Używane jest zamiast tego prostego pola tekstowego.",
"return_to_settings": "Powrót do ustawień" "return_to_settings": "Powrót do ustawień",
"import_account_backup": "Importuj kopię zapasową konta",
"account_auto_generated": "To konto zostało automatycznie wygenerowane przez 5chan, rejestracja nie jest wymagana.",
"download_backup": "Pobierz kopię zapasową"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Continuar", "continue": "Continuar",
"loading_editor": "Carregando editor...", "loading_editor": "Carregando editor...",
"editor_fallback_warning": "O editor de código falhou ao carregar. Usando um campo de texto simples em vez disso.", "editor_fallback_warning": "O editor de código falhou ao carregar. Usando um campo de texto simples em vez disso.",
"return_to_settings": "Voltar às Configurações" "return_to_settings": "Voltar às Configurações",
"import_account_backup": "Importar backup da conta",
"account_auto_generated": "Esta conta foi gerada automaticamente pelo 5chan, sem necessidade de cadastro.",
"download_backup": "Baixar backup"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Continuă", "continue": "Continuă",
"loading_editor": "Se încarcă editorul...", "loading_editor": "Se încarcă editorul...",
"editor_fallback_warning": "Editorul de cod nu s-a putut încărca. Se folosește un câmp de text simplu în loc.", "editor_fallback_warning": "Editorul de cod nu s-a putut încărca. Se folosește un câmp de text simplu în loc.",
"return_to_settings": "Înapoi la Setări" "return_to_settings": "Înapoi la Setări",
"import_account_backup": "Importă backup cont",
"account_auto_generated": "Acest cont a fost generat automat de 5chan, nu este nevoie de înregistrare.",
"download_backup": "Descarcă backup"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Продолжить", "continue": "Продолжить",
"loading_editor": "Загрузка редактора...", "loading_editor": "Загрузка редактора...",
"editor_fallback_warning": "Не удалось загрузить редактор кода. Используется вместо него обычное текстовое поле.", "editor_fallback_warning": "Не удалось загрузить редактор кода. Используется вместо него обычное текстовое поле.",
"return_to_settings": "Вернуться к настройкам" "return_to_settings": "Вернуться к настройкам",
"import_account_backup": "Импорт резервной копии аккаунта",
"account_auto_generated": "Этот аккаунт был автоматически создан 5chan, регистрация не требуется.",
"download_backup": "Скачать резервную копию"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Vazhdo", "continue": "Vazhdo",
"loading_editor": "Duke ngarkuar redaktuesin...", "loading_editor": "Duke ngarkuar redaktuesin...",
"editor_fallback_warning": "Redaktori i kodit dështoi të ngarkohet. Duke përdorur një fushë teksti të thjeshtë në vend.", "editor_fallback_warning": "Redaktori i kodit dështoi të ngarkohet. Duke përdorur një fushë teksti të thjeshtë në vend.",
"return_to_settings": "Kthehu te Cilësimet" "return_to_settings": "Kthehu te Cilësimet",
"import_account_backup": "Importo backup të llogarisë",
"account_auto_generated": "Ky llogari u krijua automatikisht nga 5chan, nuk kërkohet regjistrim.",
"download_backup": "Shkarko kopjen e rezervë"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Fortsätt", "continue": "Fortsätt",
"loading_editor": "Laddar editor...", "loading_editor": "Laddar editor...",
"editor_fallback_warning": "Kodredigeraren kunde inte laddas. Använder ett enkelt textfält istället.", "editor_fallback_warning": "Kodredigeraren kunde inte laddas. Använder ett enkelt textfält istället.",
"return_to_settings": "Tillbaka till inställningar" "return_to_settings": "Tillbaka till inställningar",
"import_account_backup": "Importera kontobackup",
"account_auto_generated": "Detta konto skapades automatiskt av 5chan, ingen registrering krävs.",
"download_backup": "Ladda ner säkerhetskopia"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "కొనసాగించు", "continue": "కొనసాగించు",
"loading_editor": "సంపాదకాన్ని లోడ్ చేస్తోంది...", "loading_editor": "సంపాదకాన్ని లోడ్ చేస్తోంది...",
"editor_fallback_warning": "కోడ్ ఎడిటర్ లోడ్ చేయడం విఫలమైంది. బదులుగా సాధారణ టెక్స్ట్ ఏరియా ఉపయోగిస్తున్నారు.", "editor_fallback_warning": "కోడ్ ఎడిటర్ లోడ్ చేయడం విఫలమైంది. బదులుగా సాధారణ టెక్స్ట్ ఏరియా ఉపయోగిస్తున్నారు.",
"return_to_settings": "సెట్టింగ్‌లకు తిరిగి వెళ్ళండి" "return_to_settings": "సెట్టింగ్‌లకు తిరిగి వెళ్ళండి",
"import_account_backup": "ఖాతా బ్యాకప్ దిగుమతి చేయండి",
"account_auto_generated": "ఈ ఖాతా 5chan చేత స్వయంచాలకంగా సృష్టించబడింది, సైన్ అప్ అవసరం లేదు.",
"download_backup": "బ్యాకప్ డౌన్‌లోడ్ చేయండి"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "ดำเนินการต่อ", "continue": "ดำเนินการต่อ",
"loading_editor": "กำลังโหลดตัวแก้ไข...", "loading_editor": "กำลังโหลดตัวแก้ไข...",
"editor_fallback_warning": "โหลดตัวแก้ไขโค้ดไม่สำเร็จ กำลังใช้ช่องข้อความธรรมดาแทน", "editor_fallback_warning": "โหลดตัวแก้ไขโค้ดไม่สำเร็จ กำลังใช้ช่องข้อความธรรมดาแทน",
"return_to_settings": "กลับไปที่การตั้งค่า" "return_to_settings": "กลับไปที่การตั้งค่า",
"import_account_backup": "นำเข้ารายการสำรองของบัญชี",
"account_auto_generated": "บัญชีนี้ถูกสร้างโดยอัตโนมัติโดย 5chan ไม่ต้องสมัครสมาชิก",
"download_backup": "ดาวน์โหลดสำรอง"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Devam", "continue": "Devam",
"loading_editor": "Düzenleyici yükleniyor...", "loading_editor": "Düzenleyici yükleniyor...",
"editor_fallback_warning": "Kod düzenleyici yüklenemedi. Bunun yerine düz bir metin alanı kullanılıyor.", "editor_fallback_warning": "Kod düzenleyici yüklenemedi. Bunun yerine düz bir metin alanı kullanılıyor.",
"return_to_settings": "Ayarlara Dön" "return_to_settings": "Ayarlara Dön",
"import_account_backup": "Hesap yedeğini içe aktar",
"account_auto_generated": "Bu hesap 5chan tarafından otomatik olarak oluşturuldu, kayıt gerekmez.",
"download_backup": "Yedek indir"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Продовжити", "continue": "Продовжити",
"loading_editor": "Завантаження редактора...", "loading_editor": "Завантаження редактора...",
"editor_fallback_warning": "Не вдалося завантажити редактор коду. Використовується прості текстове поле замість нього.", "editor_fallback_warning": "Не вдалося завантажити редактор коду. Використовується прості текстове поле замість нього.",
"return_to_settings": "Повернутися до налаштувань" "return_to_settings": "Повернутися до налаштувань",
"import_account_backup": "Імпорт резервної копії облікового запису",
"account_auto_generated": "Цей обліковий запис було автоматично створено 5chan, реєстрація не потрібна.",
"download_backup": "Завантажити резервну копію"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "جاری رکھیں", "continue": "جاری رکھیں",
"loading_editor": "ایڈیٹر لوڈ ہو رہا ہے...", "loading_editor": "ایڈیٹر لوڈ ہو رہا ہے...",
"editor_fallback_warning": "کوڈ ایڈیٹر لوڈ نہیں ہو سکا۔ اس کے بجائے ایک سادہ ٹیکسٹ ایریا استعمال کیا جا رہا ہے۔", "editor_fallback_warning": "کوڈ ایڈیٹر لوڈ نہیں ہو سکا۔ اس کے بجائے ایک سادہ ٹیکسٹ ایریا استعمال کیا جا رہا ہے۔",
"return_to_settings": "ترتیبات میں واپس جائیں" "return_to_settings": "ترتیبات میں واپس جائیں",
"import_account_backup": "اکاؤنٹ بیک اپ درآمد کریں",
"account_auto_generated": "یہ اکاؤنٹ 5chan نے خودکار طور پر بنایا ہے، سائن اپ کی ضرورت نہیں۔",
"download_backup": "بیک اپ ڈاؤن لوڈ کریں"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "Tiếp tục", "continue": "Tiếp tục",
"loading_editor": "Đang tải trình soạn thảo...", "loading_editor": "Đang tải trình soạn thảo...",
"editor_fallback_warning": "Không thể tải trình soạn thảo mã. Đang sử dụng ô văn bản thuần thay thế.", "editor_fallback_warning": "Không thể tải trình soạn thảo mã. Đang sử dụng ô văn bản thuần thay thế.",
"return_to_settings": "Quay lại Cài đặt" "return_to_settings": "Quay lại Cài đặt",
"import_account_backup": "Nhập bản sao lưu tài khoản",
"account_auto_generated": "Tài khoản này được tạo tự động bởi 5chan, không cần đăng ký.",
"download_backup": "Tải xuống bản sao lưu"
} }
+4 -1
View File
@@ -291,5 +291,8 @@
"continue": "继续", "continue": "继续",
"loading_editor": "正在加载编辑器...", "loading_editor": "正在加载编辑器...",
"editor_fallback_warning": "代码编辑器加载失败。改用纯文本输入框。", "editor_fallback_warning": "代码编辑器加载失败。改用纯文本输入框。",
"return_to_settings": "返回设置" "return_to_settings": "返回设置",
"import_account_backup": "导入账户备份",
"account_auto_generated": "此账户由 5chan 自动生成,无需注册。",
"download_backup": "下载备份"
} }
@@ -18,7 +18,6 @@ vi.mock('react-i18next', () => ({
vi.mock('@plebbit/plebbit-react-hooks', () => ({ vi.mock('@plebbit/plebbit-react-hooks', () => ({
useAccount: () => ({ id: 'test-id', name: 'Account 1', author: { address: '0x123', shortAddress: '0x1...3' } }), useAccount: () => ({ id: 'test-id', name: 'Account 1', author: { address: '0x123', shortAddress: '0x1...3' } }),
useAccounts: () => ({ accounts: [{ id: 'test-id', name: 'Account 1', author: { shortAddress: '0x1...3' } }] }), useAccounts: () => ({ accounts: [{ id: 'test-id', name: 'Account 1', author: { shortAddress: '0x1...3' } }] }),
createAccount: vi.fn(),
deleteAccount: vi.fn(), deleteAccount: vi.fn(),
exportAccount: vi.fn(), exportAccount: vi.fn(),
importAccount: vi.fn(), importAccount: vi.fn(),
@@ -70,13 +69,13 @@ describe('AccountSettings', () => {
expect(buttons.some((b) => (b.textContent ?? '').includes('edit'))).toBe(true); expect(buttons.some((b) => (b.textContent ?? '').includes('edit'))).toBe(true);
}); });
it('renders create, import, export buttons', () => { it('renders download_backup and import_account_backup buttons', () => {
render(createElement(AccountSettings)); render(createElement(AccountSettings));
const buttons = Array.from(container.querySelectorAll('button')); const buttons = Array.from(container.querySelectorAll('button'));
const texts = buttons.map((b) => b.textContent ?? ''); const texts = buttons.map((b) => b.textContent ?? '');
expect(texts.some((t) => t.includes('create'))).toBe(true); expect(texts.some((t) => t.includes('download_backup'))).toBe(true);
expect(texts.some((t) => t.includes('import'))).toBe(true); expect(texts.some((t) => t.includes('import_account_backup'))).toBe(true);
expect(texts.some((t) => t.includes('export'))).toBe(true); expect(texts.some((t) => t.includes('create'))).toBe(false);
}); });
it('renders delete_account button', () => { it('renders delete_account button', () => {
@@ -17,11 +17,7 @@
color: red; color: red;
} }
.setting .createAccount { .info {
margin-left: 5px;
}
.warning {
font-size: 0.8em; font-size: 0.8em;
padding: 5px 0; padding: 5px 0;
} }
@@ -1,6 +1,5 @@
import { useEffect, useRef } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { createAccount, deleteAccount, exportAccount, importAccount, setActiveAccount, useAccount, useAccounts } from '@plebbit/plebbit-react-hooks'; import { deleteAccount, exportAccount, importAccount, setActiveAccount, useAccount, useAccounts } from '@plebbit/plebbit-react-hooks';
import styles from './account-settings.module.css'; import styles from './account-settings.module.css';
import { Capacitor } from '@capacitor/core'; import { Capacitor } from '@capacitor/core';
import { useLocation, useNavigate } from 'react-router-dom'; import { useLocation, useNavigate } from 'react-router-dom';
@@ -33,35 +32,8 @@ const AccountSettingsEditor = ({
const { t } = useTranslation(); const { t } = useTranslation();
const location = useLocation(); const location = useLocation();
const { accounts } = useAccounts(); const { accounts } = useAccounts();
const switchToNewAccountRef = useRef(false);
const navigate = useNavigate(); const navigate = useNavigate();
useEffect(() => {
if (switchToNewAccountRef.current && accounts.length > 0) {
const lastAccount = accounts[accounts.length - 1];
setActiveAccount(lastAccount.name);
switchToNewAccountRef.current = false;
}
}, [accounts]);
const handleCreateAccount = async () => {
const result = await withErrorHandling(
async () => {
switchToNewAccountRef.current = true;
await createAccount();
},
(error) => {
if (error instanceof Error) {
alert(error.message);
console.log(error);
} else {
console.error('An unknown error occurred:', error);
}
},
);
void result;
};
const _deleteAccount = (accountName: string) => { const _deleteAccount = (accountName: string) => {
if (!accountName) { if (!accountName) {
return; return;
@@ -184,29 +156,26 @@ const AccountSettingsEditor = ({
const accountsOptions = accounts.map((account) => ( const accountsOptions = accounts.map((account) => (
<option key={account?.id} value={account?.name}> <option key={account?.id} value={account?.name}>
u/{account?.author?.shortAddress} {account?.author?.shortAddress}
</option> </option>
)); ));
const host = window.electronApi?.isElectron ? 'this desktop app' : isAndroid ? 'this mobile app' : window.location.hostname;
return ( return (
<div className={styles.setting}> <div className={styles.setting}>
<div> <div>
<select value={account?.name} onChange={(e) => setActiveAccount(e.target.value)}> <select value={account?.name} onChange={(e) => setActiveAccount(e.target.value)}>
{accountsOptions} {accountsOptions}
</select> </select>{' '}
<button className={styles.createAccount} onClick={handleCreateAccount}> <button onClick={() => navigate('/settings/account-data', { state: { returnTo: location.pathname + location.hash } })}>{t('edit')}</button>{' '}
{t('create')} <button onClick={handleExportAccount}>{t('download_backup')}</button>
</button>{' '} <div className={styles.info}>
<button onClick={handleImportAccount}>{t('import')}</button> <button onClick={handleExportAccount}>{t('export')}</button> {t('account_auto_generated')} {t('stored_locally', { location: host, interpolation: { escapeValue: false } })}
<div className={styles.warning}>
{t('stored_locally', {
location: window.electronApi?.isElectron ? 'this desktop app' : isAndroid ? 'this mobile app' : window.location.hostname,
interpolation: { escapeValue: false },
})}
</div> </div>
</div> </div>
<div> <div>
<button onClick={() => navigate('/settings/account-data', { state: { returnTo: location.pathname + location.hash } })}>{t('edit')}</button> <button onClick={handleImportAccount}>{t('import_account_backup')}</button>
<button className={styles.deleteAccount} onClick={() => _deleteAccount(account?.name ?? '')}> <button className={styles.deleteAccount} onClick={() => _deleteAccount(account?.name ?? '')}>
{t('delete_account')} {t('delete_account')}
</button> </button>