Merge branch 'refactor/remove-nft-avatar' into development

This commit is contained in:
plebeius
2026-02-19 17:53:05 +08:00
47 changed files with 17 additions and 688 deletions
-6
View File
@@ -78,7 +78,6 @@
"show": "اظهر",
"saved": "تم الحفظ",
"paste_signature": "لصق التوقيع",
"chain_ticker": "تذييل سلسلة",
"wallet_address": "عنوان المحفظة",
"copy": "نسخ",
"copied": "تم النسخ",
@@ -173,10 +172,7 @@
"user_banned": "تم حظر المستخدم لهذا المنشور",
"replies": "الردود",
"links": "الروابط",
"avatar": "الصورة الرمزية",
"token_address_whitelist": "عنوان الرمز (فقط على الـ <1>قائمة البيضاء</1>)",
"animated_gif": "GIF متحرك",
"hide_avatars": "إخفاء الصور الرمزية",
"pending": "قيد الانتظار",
"failed": "فشل",
"add": "أضف",
@@ -198,7 +194,6 @@
"last_bumped": "آخر رفع",
"fit_expanded_images_to_screen": "تغيير حجم الصور الموسعة لتناسب الشاشة",
"fit_expanded_images_to_screen_tip": "حدد الصور الموسعة لكل من عرض وارتفاع المتصفح",
"hide_avatars_tip": "لا تعرض الصور الرمزية بجانب أسماء المستخدمين",
"choose_file": "اختر ملف",
"uploading": "جاري التحميل...",
"no_file_chosen": "لم يتم اختيار أي ملف",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "هذا المستخدم هو مشرف على هذا المنتدى",
"administrator_of_this_board": "هذا المستخدم هو مسؤول عن هذا المنتدى",
"copy_content_id": "نسخ معرف المحتوى",
"delete_avatar": "حذف الصورة الرمزية",
"updates": "التحديثات",
"downloading_board": "جارٍ تنزيل المنتدى",
"subscriptions_subtitle": "أنت مشترك في {{count}} لوحة",
-6
View File
@@ -78,7 +78,6 @@
"show": "দেখান",
"saved": "সংরক্ষিত",
"paste_signature": "স্বাক্ষর পেস্ট করুন",
"chain_ticker": "শৃঙ্খলা টিকার",
"wallet_address": "ওয়ালেট ঠিকানা",
"copy": "কপি",
"copied": "নকল হয়েছে",
@@ -173,10 +172,7 @@
"user_banned": "এই পোস্টের জন্য ব্যবহারকারী নিষিদ্ধ হয়েছে",
"replies": "উত্তর",
"links": "লিঙ্কগুলি",
"avatar": "অবতার",
"token_address_whitelist": "টোকেন ঠিকানা (<1>সাফল্যবান</1> কেবল)",
"animated_gif": "অ্যানিমেটেড GIF",
"hide_avatars": "অ্যাভাটার লুকান",
"pending": "অপেক্ষমাণ",
"failed": "ব্যর্থ",
"add": "যোগ করুন",
@@ -198,7 +194,6 @@
"last_bumped": "শেষ.bump",
"fit_expanded_images_to_screen": "প্রসারিত ছবিগুলি স্ক্রীনে ফিট করুন",
"fit_expanded_images_to_screen_tip": "প্রসারিত ছবিগুলি ব্রাউজারের প্রস্থ এবং উচ্চতায় সীমাবদ্ধ করুন",
"hide_avatars_tip": "ব্যবহারকারীর প্রদর্শন নামের পাশে অ্যাভাটারগুলি দেখান না",
"choose_file": "ফাইল নির্বাচন করুন",
"uploading": "আপলোড হচ্ছে...",
"no_file_chosen": "কোন ফাইল নির্বাচিত নয়",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন মডারেটর",
"administrator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন প্রশাসক",
"copy_content_id": "কনটেন্ট আইডি কপি করুন",
"delete_avatar": "অবতার মুছুন",
"updates": "আপডেট",
"downloading_board": "বোর্ড ডাউনলোড করা হচ্ছে",
"subscriptions_subtitle": "আপনি {{count}}টি board-এ সাবস্ক্রাইব করছেন",
-6
View File
@@ -78,7 +78,6 @@
"show": "ukázat",
"saved": "uloženo",
"paste_signature": "Vložit podpis",
"chain_ticker": "Řetězový ticker",
"wallet_address": "Adresa peněženky",
"copy": "kopírovat",
"copied": "zkopírováno",
@@ -173,10 +172,7 @@
"user_banned": "Uživatel byl zablokován za tento příspěvek",
"replies": "Odpovědi",
"links": "Odkazy",
"avatar": "avatar",
"token_address_whitelist": "Tokenová adresa (<1>jen bílý seznam</1>)",
"animated_gif": "Animovaný GIF",
"hide_avatars": "Skrýt avatary",
"pending": "Čeká na schválení",
"failed": "Nepodařilo se",
"add": "Přidat",
@@ -198,7 +194,6 @@
"last_bumped": "Poslední bump",
"fit_expanded_images_to_screen": "Přizpůsobit rozšířené obrázky obrazovce",
"fit_expanded_images_to_screen_tip": "Omezení rozšířených obrázků na šířku a výšku prohlížeče",
"hide_avatars_tip": "Nezobrazovat avatary vedle jmen uživatelů",
"choose_file": "Vyberte soubor",
"uploading": "nahrávání...",
"no_file_chosen": "Žádný soubor není vybrán",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Tento uživatel je moderátorem tohoto fóra",
"administrator_of_this_board": "Tento uživatel je administrátorem tohoto fóra",
"copy_content_id": "kopírovat ID obsahu",
"delete_avatar": "Smazat avatar",
"updates": "Aktualizace",
"downloading_board": "stahování fóra",
"subscriptions_subtitle": "Jste přihlášeni k {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "vise",
"saved": "gemt",
"paste_signature": "Indsæt underskrift",
"chain_ticker": "Kæde ticker",
"wallet_address": "Walletadresse",
"copy": "kopier",
"copied": "kopieret",
@@ -173,10 +172,7 @@
"user_banned": "Brugeren blev blokeret for dette indlæg",
"replies": "Svar",
"links": "Links",
"avatar": "avatar",
"token_address_whitelist": "Tokenadresse (<1>kun hvidliste</1>)",
"animated_gif": "Animeret GIF",
"hide_avatars": "Skjul avatarer",
"pending": "Afventer",
"failed": "Mislykkedes",
"add": "Tilføj",
@@ -198,7 +194,6 @@
"last_bumped": "Sidste bumpet",
"fit_expanded_images_to_screen": "Tilpas udvidede billeder til skærmen",
"fit_expanded_images_to_screen_tip": "Begræns udvidede billeder til både browserens bredde og højde",
"hide_avatars_tip": "Vis ikke avatarer ved siden af brugernes visningsnavne",
"choose_file": "Vælg fil",
"uploading": "uploading...",
"no_file_chosen": "Ingen fil valgt",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Denne bruger er moderator for dette board",
"administrator_of_this_board": "Denne bruger er administrator for dette board",
"copy_content_id": "kopier indhold-ID",
"delete_avatar": "Slet avatar",
"updates": "Opdateringer",
"downloading_board": "downloader forum",
"subscriptions_subtitle": "Du er abonneret på {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "zeigen",
"saved": "gespeichert",
"paste_signature": "Unterschrift einfügen",
"chain_ticker": "Blockchain-Ticker",
"wallet_address": "Wallet-Adresse",
"copy": "kopieren",
"copied": "kopiert",
@@ -173,10 +172,7 @@
"user_banned": "Benutzer wurde für diesen Beitrag gesperrt",
"replies": "Antworten",
"links": "Links",
"avatar": "Avatar",
"token_address_whitelist": "Tokenadresse (<1>nur Weiße Liste</1>)",
"animated_gif": "Animiertes GIF",
"hide_avatars": "Avatare ausblenden",
"pending": "Ausstehend",
"failed": "Fehlgeschlagen",
"add": "Hinzufügen",
@@ -198,7 +194,6 @@
"last_bumped": "Zuletzt hochgeladen",
"fit_expanded_images_to_screen": "Erweiterte Bilder an den Bildschirm anpassen",
"fit_expanded_images_to_screen_tip": "Erweiterte Bilder auf die Breite und Höhe des Browsers beschränken",
"hide_avatars_tip": "Keine Avatare neben den Benutzernamen anzeigen",
"choose_file": "Datei auswählen",
"uploading": "Hochladen...",
"no_file_chosen": "Keine Datei ausgewählt",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Dieser Benutzer ist Moderator dieses Boards",
"administrator_of_this_board": "Dieser Benutzer ist Administrator dieses Boards",
"copy_content_id": "Inhalts-ID kopieren",
"delete_avatar": "Avatar löschen",
"updates": "Aktualisierungen",
"downloading_board": "Forum wird heruntergeladen",
"subscriptions_subtitle": "Sie sind {{count}} Board abonniert",
-6
View File
@@ -78,7 +78,6 @@
"show": "εμφάνιση",
"saved": "αποθηκευμένο",
"paste_signature": "Επικόλληση υπογραφής",
"chain_ticker": "Αλυσιδωτό ticker",
"wallet_address": "Διεύθυνση πορτοφολιού",
"copy": "αντιγραφή",
"copied": "αντιγράφηκε",
@@ -173,10 +172,7 @@
"user_banned": "Ο χρήστης αποκλείστηκε για αυτή τη δημοσίευση",
"replies": "Απαντήσεις",
"links": "Σύνδεσμοι",
"avatar": "εικόνα προφίλ",
"token_address_whitelist": "Διεύθυνση του token (<1>μόνο λευκή λίστα</1>)",
"animated_gif": "Κινούμενο GIF",
"hide_avatars": "Απόκρυψη avatars",
"pending": "Σε εκκρεμότητα",
"failed": "Απέτυχε",
"add": "Προσθήκη",
@@ -198,7 +194,6 @@
"last_bumped": "Τελευταία ανύψωση",
"fit_expanded_images_to_screen": "Προσαρμόστε τις επεκταμένες εικόνες στην οθόνη",
"fit_expanded_images_to_screen_tip": "Περιορίστε τις επεκταμένες εικόνες τόσο στο πλάτος όσο και στο ύψος του προγράμματος περιήγησης",
"hide_avatars_tip": "Μην εμφανίζετε τα avatar δίπλα στα ονόματα εμφάνισης χρηστών",
"choose_file": "Επιλέξτε αρχείο",
"uploading": "ανέβασμα...",
"no_file_chosen": "Δεν έχει επιλεγεί αρχείο",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Αυτός ο χρήστης είναι συντονιστής αυτού του πίνακα",
"administrator_of_this_board": "Αυτός ο χρήστης είναι διαχειριστής αυτού του πίνακα",
"copy_content_id": "αντιγραφή ID περιεχομένου",
"delete_avatar": "Διαγραφή avatar",
"updates": "Ενημερώσεις",
"downloading_board": "λήψη φόρουμ",
"subscriptions_subtitle": "Είστε εγγεγραμμένοι σε {{count}} boards",
-6
View File
@@ -80,7 +80,6 @@
"show": "show",
"saved": "saved",
"paste_signature": "paste signature",
"chain_ticker": "Chain ticker",
"wallet_address": "Wallet address",
"copy": "copy",
"copied": "copied",
@@ -179,10 +178,7 @@
"user_banned": "User was banned for this post",
"replies": "replies",
"links": "links",
"avatar": "avatar",
"token_address_whitelist": "Token address (<1>whitelist</1> only)",
"animated_gif": "Animated GIF",
"hide_avatars": "Hide avatars",
"pending": "Pending",
"failed": "Failed",
"add": "Add",
@@ -201,11 +197,9 @@
"reset_changes": "Reset Changes",
"crypto_address_yours": "Crypto address belongs to this account.",
"delete_wallet": "Delete Wallet",
"delete_avatar": "Delete Avatar",
"last_bumped": "Last Bumped",
"fit_expanded_images_to_screen": "Fit expanded images to screen",
"fit_expanded_images_to_screen_tip": "Limit expanded images to both browser width and height",
"hide_avatars_tip": "Don't display avatars next to user display names",
"choose_file": "Choose File",
"uploading": "uploading...",
"no_file_chosen": "No file chosen",
-6
View File
@@ -78,7 +78,6 @@
"show": "mostrar",
"saved": "guardado",
"paste_signature": "pegar firma",
"chain_ticker": "Ticker de blockchain",
"wallet_address": "Dirección de la billetera",
"copy": "copiar",
"copied": "copiado",
@@ -173,10 +172,7 @@
"user_banned": "El usuario fue baneado por esta publicación",
"replies": "respuestas",
"links": "enlaces",
"avatar": "avatar",
"token_address_whitelist": "Dirección del token (<1>solo lista blanca</1>)",
"animated_gif": "GIF Animado",
"hide_avatars": "Ocultar avatares",
"pending": "Pendiente",
"failed": "Fallido",
"add": "Añadir",
@@ -198,7 +194,6 @@
"last_bumped": "Último bump",
"fit_expanded_images_to_screen": "Ajustar imágenes ampliadas a la pantalla",
"fit_expanded_images_to_screen_tip": "Limitar imágenes ampliadas tanto al ancho como a la altura del navegador",
"hide_avatars_tip": "No mostrar avatares junto a los nombres de usuario",
"choose_file": "Elige archivo",
"uploading": "subiendo...",
"no_file_chosen": "Ningún archivo elegido",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Este usuario es moderador de este tablero",
"administrator_of_this_board": "Este usuario es administrador de este tablero",
"copy_content_id": "Copiar ID de contenido",
"delete_avatar": "Eliminar avatar",
"updates": "Actualizaciones",
"downloading_board": "descargando foro",
"subscriptions_subtitle": "Estás suscrito a {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "نمایش",
"saved": "ذخیره شده",
"paste_signature": "چسباندن امضا",
"chain_ticker": "نماد زنجیره",
"wallet_address": "آدرس کیف پول",
"copy": "کپی",
"copied": "کپی شد",
@@ -173,10 +172,7 @@
"user_banned": "این کاربر برای این پست مسدود شد",
"replies": "پاسخ‌ها",
"links": "لینک‌ها",
"avatar": "آواتار",
"token_address_whitelist": "آدرس توکن (<1>فقط سفیدپوشان</1>)",
"animated_gif": "GIF متحرک",
"hide_avatars": "پنهان کردن آواتارها",
"pending": "در انتظار",
"failed": "ناموفق",
"add": "اضافه کردن",
@@ -198,7 +194,6 @@
"last_bumped": "آخرین افزایش",
"fit_expanded_images_to_screen": "اندازه تصاویر بزرگ شده را به صفحه نمایش بکنید",
"fit_expanded_images_to_screen_tip": "اندازه تصاویر بزرگ شده را به عرض و ارتفاع مرورگر محدود کنید",
"hide_avatars_tip": "تصاویر پروفایل را در کنار نام‌های نمایش کاربر نمایش ندهید",
"choose_file": "فایل را انتخاب کنید",
"uploading": "در حال بارگذاری...",
"no_file_chosen": "فایلی انتخاب نشده است",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "این کاربر مدیر این انجمن است",
"administrator_of_this_board": "این کاربر مدیرکل این انجمن است",
"copy_content_id": "کپی شناسه محتوا",
"delete_avatar": "حذف آواتار",
"updates": "به‌روزرسانی‌ها",
"downloading_board": "در حال دانلود تالار",
"subscriptions_subtitle": "شما به {{count}} board مشترک هستید",
-6
View File
@@ -78,7 +78,6 @@
"show": "näyttää",
"saved": "tallennettu",
"paste_signature": "Liitä allekirjoitus",
"chain_ticker": "Ketjuticker",
"wallet_address": "Lompakon osoite",
"copy": "kopioi",
"copied": "kopioitu",
@@ -173,10 +172,7 @@
"user_banned": "Käyttäjä on estetty tästä viestistä",
"replies": "vastaukset",
"links": "linkit",
"avatar": "avatar",
"token_address_whitelist": "Token-osoite (<1>vain valkoinen lista</1>)",
"animated_gif": "Animoitu GIF",
"hide_avatars": "Piilota avatarit",
"pending": "Odottaa",
"failed": "Epäonnistui",
"add": "Lisää",
@@ -198,7 +194,6 @@
"last_bumped": "Viimeisin bump",
"fit_expanded_images_to_screen": "Sovita laajennettuja kuvia näyttöön",
"fit_expanded_images_to_screen_tip": "Rajoita laajennettuja kuvia sekä selaimen leveyteen että korkeuteen",
"hide_avatars_tip": "Älä näytä avatareita käyttäjänäyttönimien vieressä",
"choose_file": "Valitse tiedosto",
"uploading": "lataaminen...",
"no_file_chosen": "Ei tiedostoa valittu",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Tämä käyttäjä on tämän taulun moderaattori",
"administrator_of_this_board": "Tämä käyttäjä on tämän taulun järjestelmänvalvoja",
"copy_content_id": "kopioi sisältö-ID",
"delete_avatar": "Poista avatar",
"updates": "Päivitykset",
"downloading_board": "ladataan foorumia",
"subscriptions_subtitle": "Olet tilannut {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "ipakita",
"saved": "itinago",
"paste_signature": "I-paste ang lagda",
"chain_ticker": "Ticker ng chain",
"wallet_address": "Address ng wallet",
"copy": "kopya",
"copied": "nakopya",
@@ -173,10 +172,7 @@
"user_banned": "Banal ang user para sa post na ito",
"replies": "mga tugon",
"links": "mga link",
"avatar": "avatar",
"token_address_whitelist": "Address ng token (<1>whitelist</1> lang)",
"animated_gif": "Animated GIF",
"hide_avatars": "Itago ang mga avatar",
"pending": "Naghihintay",
"failed": "Nabigo",
"add": "Idagdag",
@@ -198,7 +194,6 @@
"last_bumped": "Huling bump",
"fit_expanded_images_to_screen": "I-adjust ang mga pinalawak na larawan sa screen",
"fit_expanded_images_to_screen_tip": "Limitahan ang mga pinalawak na larawan sa parehong lapad at taas ng browser",
"hide_avatars_tip": "Huwag ipakita ang mga avatar sa tabi ng mga display name ng gumagamit",
"choose_file": "Pumili ng File",
"uploading": "ina-upload...",
"no_file_chosen": "Walang napiling file",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Ang user na ito ay moderator ng board na ito",
"administrator_of_this_board": "Ang user na ito ay administrator ng board na ito",
"copy_content_id": "kopyahin ang content ID",
"delete_avatar": "Tanggalin ang avatar",
"updates": "Mga Update",
"downloading_board": "nagda-download ng board",
"subscriptions_subtitle": "Naka-subscribe ka sa {{count}} na boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "montrer",
"saved": "enregistré",
"paste_signature": "Coller la signature",
"chain_ticker": "Ticker de blockchain",
"wallet_address": "Adresse de portefeuille",
"copy": "copier",
"copied": "copié",
@@ -173,10 +172,7 @@
"user_banned": "L'utilisateur a été banni pour ce post",
"replies": "réponses",
"links": "liens",
"avatar": "avatar",
"token_address_whitelist": "Adresse du token (<1>liste blanche</1> seulement)",
"animated_gif": "GIF Animé",
"hide_avatars": "Masquer les avatars",
"pending": "En attente",
"failed": "Échoué",
"add": "Ajouter",
@@ -198,7 +194,6 @@
"last_bumped": "Dernière élévation",
"fit_expanded_images_to_screen": "Ajuster les images agrandies à l'écran",
"fit_expanded_images_to_screen_tip": "Limiter les images agrandies à la fois à la largeur et à la hauteur du navigateur",
"hide_avatars_tip": "Ne pas afficher les avatars à côté des noms d'affichage des utilisateurs",
"choose_file": "Choisissez un fichier",
"uploading": "téléchargement...",
"no_file_chosen": "Aucun fichier choisi",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Cet utilisateur est modérateur de ce tableau",
"administrator_of_this_board": "Cet utilisateur est administrateur de ce tableau",
"copy_content_id": "Copier l'ID du contenu",
"delete_avatar": "Supprimer l'avatar",
"updates": "Mises à jour",
"downloading_board": "téléchargement du forum",
"subscriptions_subtitle": "Vous êtes abonné à {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "תצוגה",
"saved": "נשמר",
"paste_signature": "הדבק חתימה",
"chain_ticker": "ציון בלוקצ'יין",
"wallet_address": "כתובת הארנק",
"copy": "העתק",
"copied": "הועתק",
@@ -173,10 +172,7 @@
"user_banned": "המשתמש נחסם עבור הפוסט הזה",
"replies": "תגובות",
"links": "קישורים",
"avatar": "אוואטר",
"token_address_whitelist": "כתובת הטוקן (<1>רק רשימה לבנה</1>)",
"animated_gif": "GIF מונפש",
"hide_avatars": "הסתר את התמונות האישיות",
"pending": "ממתין",
"failed": "נכשל",
"add": "הוסף",
@@ -198,7 +194,6 @@
"last_bumped": "הבום האחרון",
"fit_expanded_images_to_screen": "התאם את התמונות המורחבות למסך",
"fit_expanded_images_to_screen_tip": "מגביל את התמונות המורחבות גם לרוחב וגם לגובה של הדפדפן",
"hide_avatars_tip": "אל תציג תמונות פרופיל לצד שמות המשתמשים",
"choose_file": "בחר קובץ",
"uploading": "מעלה...",
"no_file_chosen": "לא נבחר קובץ",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "משתמש זה הוא מנהל של הלוח הזה",
"administrator_of_this_board": "משתמש זה הוא מנהל מערכת של הלוח הזה",
"copy_content_id": "העתק מזהה תוכן",
"delete_avatar": "מחק אווטר",
"updates": "עדכונים",
"downloading_board": "מוריד פורום",
"subscriptions_subtitle": "נרשמת ל-{{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "दिखाएँ",
"saved": "सहेजा गया",
"paste_signature": "हस्ताक्षर पेस्ट करें",
"chain_ticker": "श्रृंखला टिकर",
"wallet_address": "वॉलेट पता",
"copy": "कॉपी",
"copied": "कॉपी किया गया",
@@ -173,10 +172,7 @@
"user_banned": "इस पोस्ट के लिए उपयोगकर्ता पर प्रतिबंध लगा दिया गया था",
"replies": "जवाब",
"links": "लिंक",
"avatar": "अवतार",
"token_address_whitelist": "टोकन पता (<1>केवल सफेद सूची</1>)",
"animated_gif": "एनिमेटेड GIF",
"hide_avatars": "अवतार छिपाएँ",
"pending": "लंबित",
"failed": "असफल",
"add": "जोड़ें",
@@ -198,7 +194,6 @@
"last_bumped": "अंतिम बंप",
"fit_expanded_images_to_screen": "विस्तृत चित्रों को स्क्रीन के अनुसार ढालें",
"fit_expanded_images_to_screen_tip": "विस्तृत चित्रों को ब्राउज़र की चौड़ाई और ऊंचाई दोनों तक सीमित करें",
"hide_avatars_tip": "उपयोगकर्ता प्रदर्शित नामों के बगल में अवतार न दिखाएं",
"choose_file": "फाइल चुनें",
"uploading": "अपलोड हो रहा है...",
"no_file_chosen": "कोई फ़ाइल नहीं चुनी गई",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का मॉडरेटर है",
"administrator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का प्रशासक है",
"copy_content_id": "कंटेंट ID कॉपी करें",
"delete_avatar": "अवतार हटाएं",
"updates": "अपडेट",
"downloading_board": "फोरम डाउनलोड हो रहा है",
"subscriptions_subtitle": "आप {{count}} boards की सदस्यता ले रहे हैं",
-6
View File
@@ -78,7 +78,6 @@
"show": "mutat",
"saved": "elmentve",
"paste_signature": "Aláírás beillesztése",
"chain_ticker": "Lánc ticker",
"wallet_address": "Pénztárca címe",
"copy": "másolás",
"copied": "másolva",
@@ -173,10 +172,7 @@
"user_banned": "A felhasználót letiltották ennek a posztnak a kapcsán",
"replies": "válaszok",
"links": "linkek",
"avatar": "avatár",
"token_address_whitelist": "Token cím (<1>csak fehérlista</1>)",
"animated_gif": "Animált GIF",
"hide_avatars": "Avatarok elrejtése",
"pending": "Függőben",
"failed": "Sikertelen",
"add": "Hozzáad",
@@ -198,7 +194,6 @@
"last_bumped": "Utolsó bump",
"fit_expanded_images_to_screen": "Illeszkedjen a kibővített képekhez a képernyőhöz",
"fit_expanded_images_to_screen_tip": "A kibővített képeket korlátozza a böngésző szélességére és magasságára",
"hide_avatars_tip": "Ne jelenjen meg az avatárok a felhasználói megjelenítési nevek mellett",
"choose_file": "Válassza ki a fájlt",
"uploading": "feltöltés...",
"no_file_chosen": "Nincs fájl kiválasztva",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Ez a felhasználó ennek a táblának a moderátora",
"administrator_of_this_board": "Ez a felhasználó ennek a táblának a rendszergazdája",
"copy_content_id": "tartalom ID másolása",
"delete_avatar": "Avatar törlése",
"updates": "Frissítések",
"downloading_board": "fórum letöltése",
"subscriptions_subtitle": "Fel vagy iratkozva {{count}} boardra",
-6
View File
@@ -78,7 +78,6 @@
"show": "menunjukkan",
"saved": "tersimpan",
"paste_signature": "Tempelkan tanda tangan",
"chain_ticker": "Ticker blockchain",
"wallet_address": "Alamat dompet",
"copy": "salin",
"copied": "disalin",
@@ -173,10 +172,7 @@
"user_banned": "Pengguna diblokir untuk pos ini",
"replies": "balasan",
"links": "tautan",
"avatar": "avatar",
"token_address_whitelist": "Alamat token (<1>hanya daftar putih</1>)",
"animated_gif": "GIF Animasi",
"hide_avatars": "Sembunyikan avatar",
"pending": "Tertunda",
"failed": "Gagal",
"add": "Tambahkan",
@@ -198,7 +194,6 @@
"last_bumped": "Terakhir bump",
"fit_expanded_images_to_screen": "Sesuaikan gambar yang diperluas ke layar",
"fit_expanded_images_to_screen_tip": "Batasi gambar yang diperluas baik pada lebar maupun tinggi browser",
"hide_avatars_tip": "Jangan tampilkan avatar di sebelah nama pengguna",
"choose_file": "Pilih Berkas",
"uploading": "mengupload...",
"no_file_chosen": "Tidak ada file yang dipilih",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Pengguna ini adalah moderator papan ini",
"administrator_of_this_board": "Pengguna ini adalah administrator papan ini",
"copy_content_id": "salin ID konten",
"delete_avatar": "Hapus avatar",
"updates": "Pembaruan",
"downloading_board": "mengunduh forum",
"subscriptions_subtitle": "Anda berlangganan {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "mostra",
"saved": "salvato",
"paste_signature": "incolla firma",
"chain_ticker": "Ticker blockchain",
"wallet_address": "Indirizzo wallet",
"copy": "copia",
"copied": "copiato",
@@ -173,10 +172,7 @@
"user_banned": "L'utente è stato bannato per questo post",
"replies": "commenti",
"links": "link",
"avatar": "avatar",
"token_address_whitelist": "Indirizzo del token (solo se sulla <1>whitelist</1>)",
"animated_gif": "GIF Animata",
"hide_avatars": "Nascondi avatar",
"pending": "In attesa",
"failed": "Fallito",
"add": "Aggiungi",
@@ -198,7 +194,6 @@
"last_bumped": "Ultimo Bump",
"fit_expanded_images_to_screen": "Adatta le immagini espanse allo schermo",
"fit_expanded_images_to_screen_tip": "Limita le immagini espanse sia alla larghezza che all'altezza del browser",
"hide_avatars_tip": "Non mostrare gli avatar accanto ai nomi visualizzati degli utenti",
"choose_file": "Scegli File",
"uploading": "caricamento...",
"no_file_chosen": "Nessun file scelto",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Questo utente è moderatore di questa bacheca",
"administrator_of_this_board": "Questo utente è amministratore di questa bacheca",
"copy_content_id": "Copia ID contenuto",
"delete_avatar": "Elimina avatar",
"updates": "Aggiornamenti",
"downloading_board": "scaricando board",
"subscriptions_subtitle": "Sei iscritto a {{count}} board",
-6
View File
@@ -78,7 +78,6 @@
"show": "表示",
"saved": "保存済み",
"paste_signature": "署名を貼り付ける",
"chain_ticker": "チェーンティッカー",
"wallet_address": "ウォレットアドレス",
"copy": "コピー",
"copied": "コピー済み",
@@ -173,10 +172,7 @@
"user_banned": "この投稿のためにユーザーが禁止されました",
"replies": "返信",
"links": "リンク",
"avatar": "アバター",
"token_address_whitelist": "トークンアドレス(<1>ホワイトリスト</1>のみ)",
"animated_gif": "アニメーションGIF",
"hide_avatars": "アバターを隠す",
"pending": "保留中",
"failed": "失敗",
"add": "追加",
@@ -198,7 +194,6 @@
"last_bumped": "最後のバンプ",
"fit_expanded_images_to_screen": "拡張された画像を画面に合わせる",
"fit_expanded_images_to_screen_tip": "拡張された画像をブラウザの幅と高さの両方に制限します",
"hide_avatars_tip": "ユーザーの表示名の横にアバターを表示しない",
"choose_file": "ファイルを選択",
"uploading": "アップロード中...",
"no_file_chosen": "ファイルが選択されていません",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "このユーザーはこのボードのモデレーターです",
"administrator_of_this_board": "このユーザーはこのボードの管理者です",
"copy_content_id": "コンテンツIDをコピー",
"delete_avatar": "アバターを削除",
"updates": "更新",
"downloading_board": "掲示板をダウンロード中",
"subscriptions_subtitle": "{{count}}個のboardを購読しています",
-6
View File
@@ -78,7 +78,6 @@
"show": "보여주다",
"saved": "저장됨",
"paste_signature": "서명 붙여넣기",
"chain_ticker": "블록체인 티커",
"wallet_address": "지갑 주소",
"copy": "복사",
"copied": "복사됨",
@@ -173,10 +172,7 @@
"user_banned": "이 게시물로 인해 사용자가 차단되었습니다",
"replies": "답글",
"links": "링크",
"avatar": "아바타",
"token_address_whitelist": "토큰 주소 (<1>화이트리스트</1>만)",
"animated_gif": "애니메이션 GIF",
"hide_avatars": "아바타 숨기기",
"pending": "대기 중",
"failed": "실패",
"add": "추가",
@@ -198,7 +194,6 @@
"last_bumped": "마지막 bump",
"fit_expanded_images_to_screen": "확장된 이미지를 화면에 맞추기",
"fit_expanded_images_to_screen_tip": "확장된 이미지를 브라우저의 너비와 높이로 제한합니다",
"hide_avatars_tip": "사용자 표시 이름 옆에 아바타를 표시하지 않음",
"choose_file": "파일 선택",
"uploading": "업로드 중...",
"no_file_chosen": "선택된 파일이 없습니다",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "이 사용자는 이 게시판의 관리자입니다",
"administrator_of_this_board": "이 사용자는 이 게시판의 관리자입니다",
"copy_content_id": "콘텐츠 ID 복사",
"delete_avatar": "아바타 삭제",
"updates": "업데이트",
"downloading_board": "게시판 다운로드 중",
"subscriptions_subtitle": "{{count}}개의 board를 구독 중입니다",
-6
View File
@@ -78,7 +78,6 @@
"show": "दाखवा",
"saved": "साचला",
"paste_signature": "हस्ताक्षर पेस्ट करा",
"chain_ticker": "श्रृंखला टिकर",
"wallet_address": "बटव्या पत्ता",
"copy": "कॉपी",
"copied": "कॉपी केली",
@@ -173,10 +172,7 @@
"user_banned": "या पोस्टसाठी वापरकर्ता ब्लॉक केला गेला होता",
"replies": "उत्तर",
"links": "लिंक",
"avatar": "अवतार",
"token_address_whitelist": "टोकन पत्ता (<1>केवळ सफेद सूची</1>)",
"animated_gif": "एनिमेटेड GIF",
"hide_avatars": "अवतार लपवा",
"pending": "प्रलंबित",
"failed": "असफल",
"add": "अॅड करा",
@@ -198,7 +194,6 @@
"last_bumped": "अंतिम बंप",
"fit_expanded_images_to_screen": "विस्तृत प्रतिमा स्क्रीनवर फिट करा",
"fit_expanded_images_to_screen_tip": "विस्तृत प्रतिमांना ब्राउझरच्या रुंदी आणि उंचीवर मर्यादित करा",
"hide_avatars_tip": "युजर डिस्प्ले नावेच्या बरोबर अवतार दर्शवू नका",
"choose_file": "फाइल निवडा",
"uploading": "अपलोड करत आहे...",
"no_file_chosen": "कोणताही फाइल निवडलेली नाही",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "हा वापरकर्ता या बोर्डचा मॉडरेटर आहे",
"administrator_of_this_board": "हा वापरकर्ता या बोर्डचा प्रशासक आहे",
"copy_content_id": "कंटेंट ID कॉपी करा",
"delete_avatar": "अवतार हटवा",
"updates": "अपडेट्स",
"downloading_board": "फोरम डाउनलोड करत आहे",
"subscriptions_subtitle": "तुम्ही {{count}} boards ला सदस्यता घेतली आहे",
-6
View File
@@ -78,7 +78,6 @@
"show": "tonen",
"saved": "opgeslagen",
"paste_signature": "Plak handtekening",
"chain_ticker": "Blockchain ticker",
"wallet_address": "Wallet adres",
"copy": "kopiëren",
"copied": "gekopieerd",
@@ -173,10 +172,7 @@
"user_banned": "Gebruiker is verbannen voor deze post",
"replies": "reacties",
"links": "links",
"avatar": "avatar",
"token_address_whitelist": "Tokenadres (<1>alleen whitelist</1>)",
"animated_gif": "Geanimeerde GIF",
"hide_avatars": "Avatars verbergen",
"pending": "In afwachting",
"failed": "Mislukt",
"add": "Toevoegen",
@@ -198,7 +194,6 @@
"last_bumped": "Laatste bump",
"fit_expanded_images_to_screen": "Pas uitgebreide afbeeldingen aan het scherm aan",
"fit_expanded_images_to_screen_tip": "Beperk uitgebreide afbeeldingen tot zowel de breedte als de hoogte van de browser",
"hide_avatars_tip": "Toon geen avatar naast de weergavenamen van gebruikers",
"choose_file": "Kies een bestand",
"uploading": "uploaden...",
"no_file_chosen": "Geen bestand gekozen",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Deze gebruiker is moderator van dit bord",
"administrator_of_this_board": "Deze gebruiker is beheerder van dit bord",
"copy_content_id": "kopieer inhoud-ID",
"delete_avatar": "Avatar verwijderen",
"updates": "Updates",
"downloading_board": "board downloaden",
"subscriptions_subtitle": "Je bent geabonneerd op {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "vise",
"saved": "lagret",
"paste_signature": "Lim signatur",
"chain_ticker": "Blockchain-ticker",
"wallet_address": "Lommebokadresse",
"copy": "kopier",
"copied": "kopiert",
@@ -173,10 +172,7 @@
"user_banned": "Brukeren ble utestengt for dette innlegget",
"replies": "svar",
"links": "lenker",
"avatar": "avatar",
"token_address_whitelist": "Tokenadresse (<1>kun hvitelisten</1>)",
"animated_gif": "Animasjons GIF",
"hide_avatars": "Skjul avatarer",
"pending": "Venter",
"failed": "Feilet",
"add": "Legg til",
@@ -198,7 +194,6 @@
"last_bumped": "Siste bumpet",
"fit_expanded_images_to_screen": "Tilpass utvidede bilder til skjermen",
"fit_expanded_images_to_screen_tip": "Begrens utvidede bilder til både nettleserens bredde og høyde",
"hide_avatars_tip": "Vis ikke avatarer ved siden av brukernes visningsnavn",
"choose_file": "Velg fil",
"uploading": "laster opp...",
"no_file_chosen": "Ingen fil valgt",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Denne brukeren er moderator for dette tavlet",
"administrator_of_this_board": "Denne brukeren er administrator for dette tavlet",
"copy_content_id": "kopier innhold-ID",
"delete_avatar": "Slett avatar",
"updates": "Oppdateringer",
"downloading_board": "laster ned forum",
"subscriptions_subtitle": "Du er abonnent på {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "pokazać",
"saved": "zapisane",
"paste_signature": "Wklej podpis",
"chain_ticker": "Ticker blockchain",
"wallet_address": "Adres portfela",
"copy": "kopiuj",
"copied": "skopiowano",
@@ -173,10 +172,7 @@
"user_banned": "Użytkownik został zablokowany za ten post",
"replies": "odpowiedzi",
"links": "linki",
"avatar": "avatar",
"token_address_whitelist": "Adres tokenu (<1>tylko biała lista</1>)",
"animated_gif": "Animowany GIF",
"hide_avatars": "Ukryj awatary",
"pending": "Oczekujące",
"failed": "Nieudane",
"add": "Dodaj",
@@ -198,7 +194,6 @@
"last_bumped": "Ostatni bump",
"fit_expanded_images_to_screen": "Dopasuj rozszerzone obrazy do ekranu",
"fit_expanded_images_to_screen_tip": "Ogranicz rozszerzone obrazy do szerokości i wysokości przeglądarki",
"hide_avatars_tip": "Nie wyświetlaj avatarów obok nazw wyświetlających użytkowników",
"choose_file": "Wybierz plik",
"uploading": "ładowanie...",
"no_file_chosen": "Nie wybrano żadnego pliku",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Ten użytkownik jest moderatorem tego forum",
"administrator_of_this_board": "Ten użytkownik jest administratorem tego forum",
"copy_content_id": "skopiuj ID treści",
"delete_avatar": "Usuń avatar",
"updates": "Aktualizacje",
"downloading_board": "pobieranie forum",
"subscriptions_subtitle": "Subskrybujesz {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "mostrar",
"saved": "salvo",
"paste_signature": "Colar assinatura",
"chain_ticker": "Ticker de blockchain",
"wallet_address": "Endereço da carteira",
"copy": "copiar",
"copied": "copiado",
@@ -173,10 +172,7 @@
"user_banned": "O usuário foi banido por este post",
"replies": "respostas",
"links": "links",
"avatar": "avatar",
"token_address_whitelist": "Endereço do token (<1>apenas lista branca</1>)",
"animated_gif": "GIF Animado",
"hide_avatars": "Ocultar avatares",
"pending": "Pendente",
"failed": "Falhou",
"add": "Adicionar",
@@ -198,7 +194,6 @@
"last_bumped": "Último bump",
"fit_expanded_images_to_screen": "Ajustar imagens expandidas à tela",
"fit_expanded_images_to_screen_tip": "Limite imagens expandidas tanto à largura quanto à altura do navegador",
"hide_avatars_tip": "Não exiba avatares ao lado dos nomes de exibição dos usuários",
"choose_file": "Escolher arquivo",
"uploading": "carregando...",
"no_file_chosen": "Nenhum arquivo escolhido",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Este usuário é moderador deste quadro",
"administrator_of_this_board": "Este usuário é administrador deste quadro",
"copy_content_id": "Copiar ID do conteúdo",
"delete_avatar": "Excluir avatar",
"updates": "Atualizações",
"downloading_board": "baixando fórum",
"subscriptions_subtitle": "Você está inscrito em {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "arată",
"saved": "salvat",
"paste_signature": "Lipește semnătura",
"chain_ticker": "Ticker blockchain",
"wallet_address": "Adresa portofelului",
"copy": "copiere",
"copied": "copiat",
@@ -173,10 +172,7 @@
"user_banned": "Utilizatorul a fost interzis pentru acest mesaj",
"replies": "răspunsuri",
"links": "linkuri",
"avatar": "avatar",
"token_address_whitelist": "Adresa tokenului (<1>doar lista albă</1>)",
"animated_gif": "GIF Animat",
"hide_avatars": "Ascunde avatarele",
"pending": "În așteptare",
"failed": "Eșuat",
"add": "Adaugă",
@@ -198,7 +194,6 @@
"last_bumped": "Ultima creștere",
"fit_expanded_images_to_screen": "Se potrivesc imaginile extinse pe ecran",
"fit_expanded_images_to_screen_tip": "Limitați imaginile extinse atât la lățimea cât și la înălțimea browserului",
"hide_avatars_tip": "Nu afișa avatare lângă numele de afișare ale utilizatorilor",
"choose_file": "Alegeți fișierul",
"uploading": "încărcare...",
"no_file_chosen": "Niciun fișier ales",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Acest utilizator este moderator al acestui forum",
"administrator_of_this_board": "Acest utilizator este administrator al acestui forum",
"copy_content_id": "copiați ID-ul conținutului",
"delete_avatar": "Șterge avatar",
"updates": "Actualizări",
"downloading_board": "se descarcă forumul",
"subscriptions_subtitle": "Ești abonat la {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "показать",
"saved": "сохранено",
"paste_signature": "Вставить подпись",
"chain_ticker": "Блокчейн тикер",
"wallet_address": "Адрес кошелька",
"copy": "копировать",
"copied": "скопировано",
@@ -173,10 +172,7 @@
"user_banned": "Пользователь был заблокирован за этот пост",
"replies": "ответы",
"links": "ссылки",
"avatar": "аватар",
"token_address_whitelist": "Адрес токена (<1>только белый список</1>)",
"animated_gif": "Анимированный GIF",
"hide_avatars": "Скрыть аватары",
"pending": "В ожидании",
"failed": "Не удалось",
"add": "Добавить",
@@ -198,7 +194,6 @@
"last_bumped": "Последний бамп",
"fit_expanded_images_to_screen": "Подогнать расширенные изображения под экран",
"fit_expanded_images_to_screen_tip": "Ограничить расширенные изображения как по ширине, так и по высоте браузера",
"hide_avatars_tip": "Не показывать аватары рядом с именами пользователей",
"choose_file": "Выбрать файл",
"uploading": "загрузка...",
"no_file_chosen": "Файл не выбран",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Этот пользователь является модератором этого форума",
"administrator_of_this_board": "Этот пользователь является администратором этого форума",
"copy_content_id": "копировать ID контента",
"delete_avatar": "Удалить аватар",
"updates": "Обновления",
"downloading_board": "загрузка форума",
"subscriptions_subtitle": "Вы подписаны на {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "shfaq",
"saved": "i ruajtur",
"paste_signature": "Ngjit nënshkrimin",
"chain_ticker": "Ticker blockchain",
"wallet_address": "Adresa e wallet",
"copy": "kopjo",
"copied": "kopjuar",
@@ -173,10 +172,7 @@
"user_banned": "Përdoruesi u ndalua për këtë postim",
"replies": "përgjigje",
"links": "lidhje",
"avatar": "avatar",
"token_address_whitelist": "Adresa e tokenit (<1>vetëm lista e bardhë</1>)",
"animated_gif": "GIF i Animuar",
"hide_avatars": "Fsheh avatarët",
"pending": "Në pritje",
"failed": "Dështuar",
"add": "Shto",
@@ -198,7 +194,6 @@
"last_bumped": "Bumping i fundit",
"fit_expanded_images_to_screen": "Përshtatni imazhet e zgjeruara në ekran",
"fit_expanded_images_to_screen_tip": "Kufizoni imazhet e zgjeruara si në gjerësi ashtu edhe në lartësi të shfletuesit",
"hide_avatars_tip": "Mos e tregoni avatarët pranë emrave të shfaqjes së përdoruesve",
"choose_file": "Zgjidhni skedarin",
"uploading": "duke ngarkuar...",
"no_file_chosen": "Nuk është zgjedhur asnjë skedar",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Ky përdorues është moderator i këtij bordi",
"administrator_of_this_board": "Ky përdorues është administrator i këtij bordi",
"copy_content_id": "kopjo ID e përmbajtjes",
"delete_avatar": "Fshi avatarin",
"updates": "Përditësime",
"downloading_board": "duke shkarkuar forum",
"subscriptions_subtitle": "Jeni abonuar në {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "visa",
"saved": "sparad",
"paste_signature": "Klistra in signatur",
"chain_ticker": "Blockchain ticker",
"wallet_address": "Plånboksadress",
"copy": "kopiera",
"copied": "kopierad",
@@ -173,10 +172,7 @@
"user_banned": "Användaren blev blockerad för detta inlägg",
"replies": "svar",
"links": "länkar",
"avatar": "avatar",
"token_address_whitelist": "Tokenadress (<1>endast vitlista</1>)",
"animated_gif": "Animerad GIF",
"hide_avatars": "Dölj avatarer",
"pending": "Väntande",
"failed": "Misslyckades",
"add": "Lägg till",
@@ -198,7 +194,6 @@
"last_bumped": "Senaste bump",
"fit_expanded_images_to_screen": "Anpassa utvidgade bilder till skärmen",
"fit_expanded_images_to_screen_tip": "Begränsa utvidgade bilder till både webbläsarens bredd och höjd",
"hide_avatars_tip": "Visa inte avatarer bredvid användarnas visningsnamn",
"choose_file": "Välj fil",
"uploading": "laddar upp...",
"no_file_chosen": "Ingen fil vald",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Denna användare är moderator för detta forum",
"administrator_of_this_board": "Denna användare är administratör för detta forum",
"copy_content_id": "kopiera innehålls-ID",
"delete_avatar": "Ta bort avatar",
"updates": "Uppdateringar",
"downloading_board": "laddar ner forum",
"subscriptions_subtitle": "Du är prenumerant på {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "చూపించు",
"saved": "భద్రపరచబడినది",
"paste_signature": "సహిమస్తు పేస్ట్ చేయండి",
"chain_ticker": "బ్లాక్ చేన్ టిక్కర్",
"wallet_address": "వాలెట్ చిరునామా",
"copy": "నకలు",
"copied": "నకలు చేయబడింది",
@@ -173,10 +172,7 @@
"user_banned": "ఈ పోస్టు కోసం వాడు బ్యాన్ చేయబడింది",
"replies": "సమాధానాలు",
"links": "లింక్లు",
"avatar": "అవతార్",
"token_address_whitelist": "టోకెన్ చిరునామా (<1>కేవలం వెలుపల్లి</1>)",
"animated_gif": "అనిమేటెడ్ GIF",
"hide_avatars": "అవతార్లను దాచు",
"pending": "అనుమతించబడాలి",
"failed": "విజయవంతం కాలేదు",
"add": "చేర్చండి",
@@ -198,7 +194,6 @@
"last_bumped": "చివరి బంప్",
"fit_expanded_images_to_screen": "విస్తృత చిత్రాలను స్క్రీన్‌కు సరిపోల్చండి",
"fit_expanded_images_to_screen_tip": "విస్తృత చిత్రాలను బ్రౌజర్ వెడల్పు మరియు ఎత్తు రెండింటికీ పరిమితం చేయండి",
"hide_avatars_tip": "వాడుకరి ప్రదర్శన పేర్ల పక్కన అవతార్లు ప్రదర్శించవద్దు",
"choose_file": "ఫైల్ ఎంపిక చేసుకోండి",
"uploading": "అప్‌లోడ్ అవుతోంది...",
"no_file_chosen": "ఎటువంటి ఫైల్ ఎంపిక చేయబడలేదు",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క మోడరేటర్",
"administrator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క నిర్వాహకుడు",
"copy_content_id": "కంటెంట్ ID కాపీ చేయండి",
"delete_avatar": "అవతార్ను తొలగించు",
"updates": "నవీకరణలు",
"downloading_board": "ఫోరం డౌన్‌లోడ్ చేయడం",
"subscriptions_subtitle": "మీరు {{count}} boardsకు సభ్యత్వం పొందారు",
-6
View File
@@ -78,7 +78,6 @@
"show": "แสดง",
"saved": "บันทึกแล้ว",
"paste_signature": "วางลายเซ็น",
"chain_ticker": "เครือข่ายตัวชี้วัด",
"wallet_address": "ที่อยู่กระเป๋าเงิน",
"copy": "คัดลอก",
"copied": "คัดลอกแล้ว",
@@ -173,10 +172,7 @@
"user_banned": "ผู้ใช้ถูกห้ามใช้งานสำหรับโพสต์นี้",
"replies": "คำตอบ",
"links": "ลิงก์",
"avatar": "อวตาร์",
"token_address_whitelist": "ที่อยู่โทเค็น (<1>รายชื่อที่ได้รับอนุญาตเท่านั้น</1>)",
"animated_gif": "GIF ที่เคลื่อนไหว",
"hide_avatars": "ซ่อนอวาตาร์",
"pending": "รอดำเนินการ",
"failed": "ล้มเหลว",
"add": "เพิ่ม",
@@ -198,7 +194,6 @@
"last_bumped": "เพิ่มล่าสุด",
"fit_expanded_images_to_screen": "ปรับขนาดภาพที่ขยายให้พอดีกับหน้าจอ",
"fit_expanded_images_to_screen_tip": "จำกัดภาพที่ขยายให้พอดีกับทั้งความกว้างและความสูงของเบราว์เซอร์",
"hide_avatars_tip": "ไม่แสดงอวาตาร์ข้างชื่อผู้ใช้",
"choose_file": "เลือกไฟล์",
"uploading": "กำลังอัปโหลด...",
"no_file_chosen": "ไม่มีไฟล์ที่เลือก",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลของบอร์ดนี้",
"administrator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลระบบของบอร์ดนี้",
"copy_content_id": "คัดลอก ID เนื้อหา",
"delete_avatar": "ลบอวตาร",
"updates": "อัปเดต",
"downloading_board": "กำลังดาวน์โหลดกระดาน",
"subscriptions_subtitle": "คุณกำลังสมัครสมาชิก {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "göstermek",
"saved": "kaydedildi",
"paste_signature": "İmza yapıştır",
"chain_ticker": "Blockchain ticker",
"wallet_address": "Cüzdan adresi",
"copy": "kopyala",
"copied": "kopyalandı",
@@ -173,10 +172,7 @@
"user_banned": "Kullanıcı bu gönderi için yasaklandı",
"replies": "cevaplar",
"links": "bağlantılar",
"avatar": "avatar",
"token_address_whitelist": "Token adresi (<1>yalnızca beyaz liste</1>)",
"animated_gif": "Animasyonlu GIF",
"hide_avatars": "Avatarları gizle",
"pending": "Beklemede",
"failed": "Başarısız",
"add": "Ekle",
@@ -198,7 +194,6 @@
"last_bumped": "Son bump",
"fit_expanded_images_to_screen": "Genişletilmiş resimleri ekrana sığdır",
"fit_expanded_images_to_screen_tip": "Genişletilmiş resimleri hem tarayıcı genişliğine hem de yüksekliğine sınırlayın",
"hide_avatars_tip": "Kullanıcı görünüm adlarının yanında avatarları gösterme",
"choose_file": "Dosya Seç",
"uploading": "yükleniyor...",
"no_file_chosen": "Hiçbir dosya seçilmedi",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Bu kullanıcı bu panonun moderatörüdür",
"administrator_of_this_board": "Bu kullanıcı bu panonun yöneticisidir",
"copy_content_id": "içerik ID'sini kopyala",
"delete_avatar": "Avatarı sil",
"updates": "Güncellemeler",
"downloading_board": "forum indiriliyor",
"subscriptions_subtitle": "{{count}} board'a abonesiniz",
-6
View File
@@ -78,7 +78,6 @@
"show": "показати",
"saved": "збережено",
"paste_signature": "Вставте підпис",
"chain_ticker": "Блокчейн тікер",
"wallet_address": "Адреса гаманця",
"copy": "копіювати",
"copied": "скопійовано",
@@ -173,10 +172,7 @@
"user_banned": "Користувач був заблокований за цей пост",
"replies": "відповіді",
"links": "посилання",
"avatar": "аватар",
"token_address_whitelist": "Адреса токена (<1>тільки білий список</1>)",
"animated_gif": "Анімований GIF",
"hide_avatars": "Сховати аватари",
"pending": "Очікує",
"failed": "Не вдалося",
"add": "Додати",
@@ -198,7 +194,6 @@
"last_bumped": "Останній бамп",
"fit_expanded_images_to_screen": "Підлаштувати розширені зображення під екран",
"fit_expanded_images_to_screen_tip": "Обмежити розширені зображення як за шириною, так і за висотою браузера",
"hide_avatars_tip": "Не показувати аватари поряд із іменами користувачів",
"choose_file": "Виберіть файл",
"uploading": "завантаження...",
"no_file_chosen": "Не вибрано жодного файлу",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Цей користувач є модератором цього форуму",
"administrator_of_this_board": "Цей користувач є адміністратором цього форуму",
"copy_content_id": "копіювати ID контенту",
"delete_avatar": "Видалити аватар",
"updates": "Оновлення",
"downloading_board": "завантаження форуму",
"subscriptions_subtitle": "Ви підписані на {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "دکھائیں",
"saved": "محفوظ",
"paste_signature": "سرنی چسپاں کریں",
"chain_ticker": "بلاک چین ٹکر",
"wallet_address": "والیٹ کا پتہ",
"copy": "کاپی",
"copied": "کاپی کی گئی",
@@ -173,10 +172,7 @@
"user_banned": "اس پوسٹ کے لئے صارف کو پابندی عائد کردی گئی تھی",
"replies": "جوابات",
"links": "لنکس",
"avatar": "اوتار",
"token_address_whitelist": "ٹوکن کا پتا (<1>صرف سفید فہرست</1>)",
"animated_gif": "اینیمیٹڈ GIF",
"hide_avatars": "اوٹار چھپائیں",
"pending": "منتظر",
"failed": "ناکام",
"add": "شامل کریں",
@@ -198,7 +194,6 @@
"last_bumped": "آخری بمپر",
"fit_expanded_images_to_screen": "پھیلائی ہوئی تصاویر کو اسکرین پر فٹ کریں",
"fit_expanded_images_to_screen_tip": "پھیلائی ہوئی تصاویر کو براؤزر کی چوڑائی اور اونچائی دونوں تک محدود کریں",
"hide_avatars_tip": "صارف کے ڈسپلے ناموں کے ساتھ اوتار نہ دکھائیں",
"choose_file": "فائل منتخب کریں",
"uploading": "اپ لوڈ ہو رہا ہے...",
"no_file_chosen": "کوئی فائل منتخب نہیں کی گئی",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "یہ صارف اس بورڈ کا ماڈریٹر ہے",
"administrator_of_this_board": "یہ صارف اس بورڈ کا منتظم ہے",
"copy_content_id": "مواد کی شناخت کاپی کریں",
"delete_avatar": "اوتار حذف کریں",
"updates": "اپڈیٹس",
"downloading_board": "فورم ڈاؤن لوڈ ہو رہا ہے",
"subscriptions_subtitle": "آپ {{count}} boards کی سبسکرپشن لے رہے ہیں",
-6
View File
@@ -78,7 +78,6 @@
"show": "hiển thị",
"saved": "đã lưu",
"paste_signature": "Dán chữ ký",
"chain_ticker": "Ticker chuỗi khối",
"wallet_address": "Địa chỉ ví",
"copy": "sao chép",
"copied": "đã sao chép",
@@ -173,10 +172,7 @@
"user_banned": "Người dùng đã bị cấm vì bài đăng này",
"replies": "trả lời",
"links": "liên kết",
"avatar": "avatar",
"token_address_whitelist": "Địa chỉ token (<1>chỉ danh sách trắng</1>)",
"animated_gif": "GIF Hoạt Hình",
"hide_avatars": "Ẩn avatar",
"pending": "Đang chờ",
"failed": "Thất bại",
"add": "Thêm",
@@ -198,7 +194,6 @@
"last_bumped": "Bump gần đây nhất",
"fit_expanded_images_to_screen": "Phù hợp hình ảnh mở rộng với màn hình",
"fit_expanded_images_to_screen_tip": "Hạn chế hình ảnh mở rộng cả chiều rộng và chiều cao của trình duyệt",
"hide_avatars_tip": "Không hiển thị hình đại diện bên cạnh tên hiển thị của người dùng",
"choose_file": "Chọn tệp",
"uploading": "đang tải lên...",
"no_file_chosen": "Không có tệp nào được chọn",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "Người dùng này là người điều hành của bảng này",
"administrator_of_this_board": "Người dùng này là quản trị viên của bảng này",
"copy_content_id": "sao chép ID nội dung",
"delete_avatar": "Xóa avatar",
"updates": "Cập nhật",
"downloading_board": "đang tải diễn đàn",
"subscriptions_subtitle": "Bạn đang đăng ký {{count}} boards",
-6
View File
@@ -78,7 +78,6 @@
"show": "显示",
"saved": "已保存",
"paste_signature": "粘贴签名",
"chain_ticker": "区块链标记",
"wallet_address": "钱包地址",
"copy": "复制",
"copied": "已复制",
@@ -173,10 +172,7 @@
"user_banned": "用户因此帖子被禁止",
"replies": "回复",
"links": "链接",
"avatar": "头像",
"token_address_whitelist": "代币地址(<1>仅限白名单</1>",
"animated_gif": "动画GIF",
"hide_avatars": "隐藏头像",
"pending": "待处理",
"failed": "失败",
"add": "添加",
@@ -198,7 +194,6 @@
"last_bumped": "最后提升",
"fit_expanded_images_to_screen": "适应扩展图像到屏幕",
"fit_expanded_images_to_screen_tip": "将扩展图像限制为浏览器的宽度和高度",
"hide_avatars_tip": "不显示用户显示名称旁边的头像",
"choose_file": "选择文件",
"uploading": "正在上传...",
"no_file_chosen": "未选择任何文件",
@@ -231,7 +226,6 @@
"moderator_of_this_board": "此用户是此版块的版主",
"administrator_of_this_board": "此用户是此版块的管理员",
"copy_content_id": "复制内容ID",
"delete_avatar": "删除头像",
"updates": "更新",
"downloading_board": "正在下载论坛",
"subscriptions_subtitle": "您已订阅 {{count}} 个 boards",
+1 -9
View File
@@ -2,7 +2,7 @@ import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
import { Trans, useTranslation } from 'react-i18next';
import { Link, useLocation, useNavigationType, useParams } from 'react-router-dom';
import { Virtuoso, VirtuosoHandle, StateSnapshot } from 'react-virtuoso';
import { Comment, useAuthorAvatar, useEditedComment, useReplies, useAccount, useAccountComment } from '@plebbit/plebbit-react-hooks';
import { Comment, useEditedComment, useReplies, useAccount, useAccountComment } from '@plebbit/plebbit-react-hooks';
import Plebbit from '@plebbit/plebbit-js';
import styles from '../../views/post/post.module.css';
import { CommentMediaInfo, getDisplayMediaInfoType, getHasThumbnail, getMediaDimensions } from '../../lib/utils/media-utils';
@@ -14,7 +14,6 @@ import { formatUserIDForDisplay } from '../../lib/utils/string-utils';
import useModQueueStore from '../../stores/use-mod-queue-store';
import { useDirectories } from '../../hooks/use-directories';
import { getBoardPath } from '../../lib/utils/route-utils';
import useAvatarVisibilityStore from '../../stores/use-avatar-visibility-store';
import useAuthorAddressClick from '../../hooks/use-author-address-click';
import { useCommentMediaInfo } from '../../hooks/use-comment-media-info';
import useCountLinksInReplies from '../../hooks/use-count-links-in-replies';
@@ -100,8 +99,6 @@ const PostInfo = ({
const hasFailedState = state === 'failed';
const isReply = parentCid;
const { showOmittedReplies } = useShowOmittedReplies();
const { imageUrl: avatarImageUrl } = useAuthorAvatar({ author });
const { hideAvatars } = useAvatarVisibilityStore();
const directories = useDirectories();
const boardPath = subplebbitAddress ? getBoardPath(subplebbitAddress, directories) : undefined;
const postMenuProps = useMemo(() => selectPostMenuProps(post), [post]);
@@ -287,11 +284,6 @@ const PostInfo = ({
</span>
)}{' '}
</span>
{author?.avatar && !(deleted || removed) && !hideAvatars && avatarImageUrl ? (
<span className={styles.authorAvatar}>
<img src={avatarImageUrl} alt='' />
</span>
) : null}
{showUserID && (
<>
(ID:{' '}
+1 -9
View File
@@ -2,7 +2,7 @@ import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import { Link, useLocation, useNavigationType, useParams } from 'react-router-dom';
import { Virtuoso, VirtuosoHandle, StateSnapshot } from 'react-virtuoso';
import { Comment, useAuthorAvatar, useEditedComment, useReplies, useAccount, usePublishCommentModeration, useAccountComment } from '@plebbit/plebbit-react-hooks';
import { Comment, useEditedComment, useReplies, useAccount, usePublishCommentModeration, useAccountComment } from '@plebbit/plebbit-react-hooks';
import Plebbit from '@plebbit/plebbit-js';
import styles from '../../views/post/post.module.css';
import { shouldShowSnow } from '../../lib/snow';
@@ -14,7 +14,6 @@ import { formatUserIDForDisplay } from '../../lib/utils/string-utils';
import useModQueueStore from '../../stores/use-mod-queue-store';
import { useDirectories } from '../../hooks/use-directories';
import { getBoardPath } from '../../lib/utils/route-utils';
import useAvatarVisibilityStore from '../../stores/use-avatar-visibility-store';
import useAuthorAddressClick from '../../hooks/use-author-address-click';
import { useCommentMediaInfo } from '../../hooks/use-comment-media-info';
import useCountLinksInReplies from '../../hooks/use-count-links-in-replies';
@@ -65,8 +64,6 @@ const PostInfoAndMedia = ({ post, postReplyCount = 0, roles, threadNumber }: Pos
const { address, shortAddress } = author || {};
const displayName = author?.displayName?.trim();
const authorRole = roles?.[address]?.role?.replace('moderator', 'mod');
const { imageUrl: avatarImageUrl } = useAuthorAvatar({ author });
const { hideAvatars } = useAvatarVisibilityStore();
const params = useParams();
const location = useLocation();
@@ -252,11 +249,6 @@ const PostInfoAndMedia = ({ post, postReplyCount = 0, roles, threadNumber }: Pos
</span>
)}
</span>
{author?.avatar && !(deleted || removed) && !hideAvatars && avatarImageUrl ? (
<span className={styles.authorAvatar}>
<img src={avatarImageUrl} alt='' />
</span>
) : null}
{showUserID && (
<>
(ID: {''}
@@ -18,7 +18,17 @@ const AccountSettingsEditor = ({
const location = useLocation();
const accountJson = useMemo(
() => stringify({ account: { ...account, plebbit: undefined, karma: undefined, plebbitReactOptions: undefined, unreadNotificationCount: undefined } }),
() =>
stringify({
account: {
...account,
author: { ...account?.author, avatar: undefined },
plebbit: undefined,
karma: undefined,
plebbitReactOptions: undefined,
unreadNotificationCount: undefined,
},
}),
[account],
);
@@ -10,7 +10,6 @@ interface SettingsProps {
httpRoutersRef?: RefObject<HTMLTextAreaElement>;
ethRpcRef?: RefObject<HTMLTextAreaElement>;
solRpcRef?: RefObject<HTMLTextAreaElement>;
maticRpcRef?: RefObject<HTMLTextAreaElement>;
p2pRpcRef?: RefObject<HTMLInputElement>;
p2pDataPathRef?: RefObject<HTMLInputElement>;
}
@@ -36,7 +35,7 @@ const IPFSGatewaysSettings = ({ ipfsGatewayUrlsRef, mediaIpfsGatewayUrlRef }: Se
rows={ipfsGatewayUrls?.length || 1}
/>
</div>
<span className={styles.settingTip}>NFT profile pics gateway</span>
<span className={styles.settingTip}>media IPFS gateway</span>
<div>
<input
type='text'
@@ -100,13 +99,12 @@ const HttpRoutersSettings = ({ httpRoutersRef }: SettingsProps) => {
);
};
const BlockchainProvidersSettings = ({ ethRpcRef, solRpcRef, maticRpcRef }: SettingsProps) => {
const BlockchainProvidersSettings = ({ ethRpcRef, solRpcRef }: SettingsProps) => {
const account = useAccount();
const { plebbitOptions } = account || {};
const { chainProviders } = plebbitOptions || {};
const ethRpcDefaultValue = chainProviders?.['eth']?.urls.join('\n');
const solRpcDefaultValue = chainProviders?.['sol']?.urls.join('\n');
const maticRpcDefaultValue = chainProviders?.['matic']?.urls.join('\n');
return (
<div className={styles.blockchainProvidersSettings}>
@@ -132,17 +130,6 @@ const BlockchainProvidersSettings = ({ ethRpcRef, solRpcRef, maticRpcRef }: Sett
rows={chainProviders?.['sol']?.urls?.length || 1}
/>
</div>
<span className={styles.settingTip}>Polygon RPC, for avatar NFTs</span>
<div>
<textarea
defaultValue={maticRpcDefaultValue}
ref={maticRpcRef}
autoCorrect='off'
autoComplete='off'
spellCheck='false'
rows={chainProviders?.['matic']?.urls?.length || 1}
/>
</div>
</div>
);
};
@@ -204,7 +191,6 @@ const AdvancedSettings = () => {
const pubsubProvidersRef = useRef<HTMLTextAreaElement>(null);
const ethRpcRef = useRef<HTMLTextAreaElement>(null);
const solRpcRef = useRef<HTMLTextAreaElement>(null);
const maticRpcRef = useRef<HTMLTextAreaElement>(null);
const httpRoutersRef = useRef<HTMLTextAreaElement>(null);
const p2pRpcRef = useRef<HTMLInputElement>(null);
const p2pDataPathRef = useRef<HTMLInputElement>(null);
@@ -232,11 +218,6 @@ const AdvancedSettings = () => {
.map((url) => url.trim())
.filter((url) => url !== '');
const maticRpcUrls = maticRpcRef.current?.value
.split('\n')
.map((url) => url.trim())
.filter((url) => url !== '');
const httpRoutersOptions = httpRoutersRef.current?.value
.split('\n')
.map((url) => url.trim())
@@ -254,10 +235,6 @@ const AdvancedSettings = () => {
urls: solRpcUrls,
chainId: 101,
},
matic: {
urls: maticRpcUrls,
chainId: 137,
},
};
try {
@@ -314,7 +291,7 @@ const AdvancedSettings = () => {
blockchain providers:
</span>
<span className={styles.categorySettings}>
<BlockchainProvidersSettings ethRpcRef={ethRpcRef} solRpcRef={solRpcRef} maticRpcRef={maticRpcRef} />
<BlockchainProvidersSettings ethRpcRef={ethRpcRef} solRpcRef={solRpcRef} />
</span>
</div>
<div className={styles.category}>
@@ -1,123 +0,0 @@
.avatar {
width: 64px;
height: 64px;
border: 1px solid #aaa;
background-color: var(--avatar-background-color, white);
margin-left: 10px;
overflow: hidden;
}
.avatarPreview {
display: inline-block;
}
.avatar img {
width: 64px;
height: 64px;
}
.emptyAvatar {
display: flex;
justify-content: center;
align-items: center;
text-align: center;
height: 100%;
color: var(--avatar-text-color);
}
.avatarSettingsForm {
padding: 5px 0 15px 10px;
}
.settingField {
margin-top: 5px;
margin-left: 5px;
position: relative;
display: flex;
align-items: center;
flex-wrap: nowrap;
}
.settingField input {
flex: 0 1 200px;
min-width: 0;
max-width: 200px;
padding: 2px;
margin-left: 5px;
box-shadow: var(--box-shadow-input);
}
.settingField[class*='step']::before {
margin-left: -5px;
}
.settingField.step1::before {
content: '1.\00a0';
}
.settingField.step2::before {
content: '2.\00a0';
}
.settingField.step3::before {
content: '3.\00a0';
}
.settingField.step4::before {
content: '4.\00a0';
}
.settingField.step5::before {
content: '5.\00a0';
}
.settingField a {
color: var(--post-link-text-color);
text-decoration: var(--post-content-link-text-decoration);
}
.settingField a:hover {
color: var(--post-link-text-color-hover);
text-decoration: var(--post-content-link-text-decoration-hover);
}
.settingTitle {
font-style: inherit;
text-transform: none;
white-space: nowrap;
flex-shrink: 0;
}
.timestampfield {
margin-left: 10px;
}
.buttons {
margin-top: 10px;
margin-left: 5px;
}
.save {
margin-right: 5px;
}
.state {
text-transform: lowercase;
padding-top: 10px;
padding-left: 10px;
max-width: 300px;
color: var(--post-mobile-abbr-text-color);
}
.error {
color: red;
}
.deleteAvatarContainer {
margin-top: 20px;
margin-left: 5px;
}
.removeAvatar {
color: red;
}
@@ -1,238 +0,0 @@
import { useMemo, useState } from 'react';
import { Link } from 'react-router-dom';
import { setAccount, useAccount, useAuthorAvatar } from '@plebbit/plebbit-react-hooks';
import styles from './avatar-settings.module.css';
import { Trans, useTranslation } from 'react-i18next';
import LoadingEllipsis from '../../loading-ellipsis';
import ErrorDisplay from '../../error-display/error-display';
import capitalize from 'lodash/capitalize';
const AvatarPreview = ({ avatar }: any) => {
const { t } = useTranslation();
const account = useAccount();
let author = useMemo(() => ({ ...account?.author, avatar }), [account, avatar]);
const { imageUrl, state, error } = useAuthorAvatar({ author });
// if avatar already set, and user hasn't typed anything yet, preview already set author
if (account?.author?.avatar && !avatar?.chainTicker && !avatar?.address && !avatar?.id && !avatar?.signature) {
author = account.author;
}
// not enough data to preview yet
if (!author?.avatar?.address && !author?.avatar?.signature) {
return;
}
const stateText = state !== 'succeeded' ? <LoadingEllipsis string={state} /> : undefined;
return (
<>
<div className={styles.avatar}>
{imageUrl && state !== 'initializing' ? <img src={imageUrl} alt='' /> : <span className={styles.emptyAvatar}>{t('none')}</span>}
</div>
{state !== 'succeeded' && account?.author?.avatar && (
<div className={styles.state}>
{!error && stateText} {error && <ErrorDisplay error={error} />}
</div>
)}
</>
);
};
const AvatarSettings = () => {
const { t } = useTranslation();
const account = useAccount();
const authorAddress = account?.author?.address;
const [chainTicker, setChainTicker] = useState(account?.author?.avatar?.chainTicker);
const [tokenAddress, setTokenAddress] = useState(account?.author?.avatar?.address);
const [tokenId, setTokenId] = useState(account?.author?.avatar?.id);
const [timestamp, setTimestamp] = useState(account?.author?.avatar?.timestamp);
const [signature, setSignature] = useState(account?.author?.avatar?.signature?.signature);
const getNftMessageToSign = (authorAddress: string, timestamp: number, tokenAddress: string, tokenId: string) => {
let messageToSign: any = {};
// the property names must be in this order for the signature to match
// insert props one at a time otherwise babel/webpack will reorder
messageToSign.domainSeparator = 'plebbit-author-avatar';
messageToSign.authorAddress = authorAddress;
messageToSign.timestamp = timestamp;
messageToSign.tokenAddress = tokenAddress;
messageToSign.tokenId = String(tokenId); // must be a type string, not number
// use plain JSON so the user can read what he's signing
messageToSign = JSON.stringify(messageToSign);
return messageToSign;
};
const [hasCopied, setHasCopied] = useState(false);
const copyMessageToSign = () => {
if (!chainTicker) {
return alert(t('missing_chain_ticker'));
}
if (!tokenAddress) {
return alert(t('missing_token_address'));
}
if (!tokenId) {
return alert(t('missing_token_id'));
}
const newTimestamp = Math.floor(Date.now() / 1000);
const messageToSign = getNftMessageToSign(authorAddress, newTimestamp, tokenAddress, tokenId);
// update timestamp every time the user gets a new message to sign
setTimestamp(newTimestamp);
navigator.clipboard.writeText(messageToSign);
setHasCopied(true);
setTimeout(() => {
setHasCopied(false);
}, 2000);
};
// how to resolve and verify NFT signatures https://github.com/plebbit/plebbit-js/blob/master/docs/nft.md
const avatar = {
chainTicker: chainTicker?.toLowerCase() || account?.author?.avatar?.chainTicker,
timestamp,
address: tokenAddress || account?.author?.avatar?.address,
id: tokenId || account?.author?.avatar?.id,
signature: {
signature: signature || account?.author?.avatar?.signature?.signature,
type: 'eip191',
},
};
const save = () => {
if (!chainTicker) {
return alert(t('missing_chain_ticker'));
}
if (!tokenAddress) {
return alert(t('missing_token_address'));
}
if (!tokenId) {
return alert(t('missing_token_id'));
}
if (!signature) {
return alert(t('missing_signature'));
}
setAccount({ ...account, author: { ...account?.author, avatar } });
alert(t('saved'));
};
const _removeAvatar = () => {
if (window.confirm(t('delete_confirm', { value: 'avatar', interpolation: { escapeValue: false } }))) {
setAccount({ ...account, author: { ...account?.author, avatar: undefined } });
setChainTicker(undefined);
setTokenAddress(undefined);
setTokenId(undefined);
setTimestamp(undefined);
setSignature(undefined);
}
};
return (
<div className={styles.avatarSettings}>
<AvatarPreview avatar={avatar} />
<div className={styles.avatarSettingsForm}>
<div className={`${styles.settingField} ${styles.step1}`}>
<span className={styles.settingTitle}>{capitalize(t('chain_ticker'))}: </span>
<input
type='text'
placeholder='eth/sol/matic'
autoCorrect='off'
autoComplete='off'
spellCheck='false'
defaultValue={account?.author?.avatar?.chainTicker}
onChange={(e) => setChainTicker(e.target.value)}
/>
</div>
<div className={`${styles.settingField} ${styles.step2}`}>
<span className={styles.settingTitle}>
<Trans
i18nKey='token_address_whitelist'
shouldUnescape={true}
components={{
1: (
<Link
key='token-address-link'
to='https://github.com/plebbit/plebbit-react-hooks/blob/557cc3f40b5933a00553ed9c0bc310d2cd7a3b52/src/hooks/authors/author-avatars.ts#L133'
target='_blank'
rel='noopener noreferrer'
/>
),
}}
/>
:{' '}
</span>
<input
type='text'
placeholder='0x...'
autoCorrect='off'
autoComplete='off'
spellCheck='false'
defaultValue={account?.author?.avatar?.address}
onChange={(e) => setTokenAddress(e.target.value)}
/>
</div>
<div className={`${styles.settingField} ${styles.step3}`}>
<span className={styles.settingTitle}>Token ID: </span>
<input
type='text'
placeholder='123'
autoCorrect='off'
autoComplete='off'
spellCheck='false'
defaultValue={account?.author?.avatar?.id}
onChange={(e) => setTokenId(e.target.value)}
/>
</div>
<div className={`${styles.settingField} ${styles.step4}`}>
<span className={styles.settingTitle}>
<Trans
i18nKey='copy_message_etherscan'
values={{ copy: hasCopied ? t('copied') : t('copy') }}
components={{
1: <button key='copy-message-button' onClick={copyMessageToSign} />,
// eslint-disable-next-line
2: <a key='etherscan-link' href='https://etherscan.io/verifiedSignatures' target='_blank' rel='noopener noreferrer' />,
}}
/>
</span>
</div>
<div className={styles.settingField}>
<span className={`${styles.settingTitle} ${styles.timestampfield}`}>{capitalize(t('timestamp'))}: </span>
<input
type='text'
placeholder='1234567890'
autoCorrect='off'
autoComplete='off'
spellCheck='false'
value={timestamp || ''}
onChange={(e) => setTimestamp(Number(e.target.value))}
/>
</div>
<div className={`${styles.settingField} ${styles.step5}`}>
<span className={styles.settingTitle}>{capitalize(t('paste_signature'))}: </span>
<input
type='text'
placeholder='0x...'
autoCorrect='off'
autoComplete='off'
spellCheck='false'
defaultValue={account?.author?.avatar?.signature?.signature}
onChange={(e) => setSignature(e.target.value)}
/>
</div>
<div className={styles.buttons}>
<button className={styles.save} onClick={save}>
{t('save_changes')}
</button>
</div>
<div className={styles.deleteAvatarContainer}>
<button className={styles.removeAvatar} onClick={_removeAvatar}>
{t('delete_avatar')}
</button>
</div>
</div>
</div>
);
};
export default AvatarSettings;
@@ -1 +0,0 @@
export { default } from './avatar-settings';
@@ -102,7 +102,7 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => {
walletsArray.length > 0 ? (
<div key={selectedWallet} className={styles.walletBox}>
<div className={`${styles.walletField} ${styles.step1}`}>
<span className={styles.walletFieldTitle}>{capitalize(t('chain_ticker'))}: </span>
<span className={styles.walletFieldTitle}>Chain ticker: </span>
<input
type='text'
onChange={(e) => setWalletsArrayProperty(selectedWallet, 'chainTicker', e.target.value)}
@@ -1,6 +1,5 @@
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import useAvatarVisibilityStore from '../../../stores/use-avatar-visibility-store';
import useTheme from '../../../hooks/use-theme';
import packageJson from '../../../../package.json';
import styles from './interface-settings.module.css';
@@ -124,13 +123,8 @@ const InterfaceLanguage = () => {
const InterfaceSettings = () => {
const { t } = useTranslation();
const { hideAvatars, setHideAvatars } = useAvatarVisibilityStore();
const { fitExpandedImagesToScreen, setFitExpandedImagesToScreen } = useExpandedMediaStore();
const handleHideAvatarsChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setHideAvatars(e.target.checked);
};
return (
<div className={styles.interfaceSettings}>
<div className={styles.version}>
@@ -152,12 +146,6 @@ const InterfaceSettings = () => {
</label>
<div className={styles.settingTip}>{capitalize(t('fit_expanded_images_to_screen_tip'))}</div>
</div>
<div className={styles.setting}>
<label>
<input type='checkbox' checked={hideAvatars} onChange={handleHideAvatarsChange} /> {capitalize(t('hide_avatars'))}
</label>
<div className={styles.settingTip}>{capitalize(t('hide_avatars_tip'))}</div>
</div>
</div>
);
};
@@ -3,7 +3,6 @@ import { useLocation, useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import styles from './settings-modal.module.css';
import AccountSettings from './account-settings';
import AvatarSettings from './avatar-settings';
import CryptoAddressSetting from './crypto-address-setting';
import CryptoWalletsSetting from './crypto-wallets-setting';
import InterfaceSettings from './interface-settings';
@@ -38,7 +37,6 @@ const SettingsModal = () => {
const [showInterfaceSettings, setShowInterfaceSettings] = useState(false);
const [showMediaHostingSettings, setShowMediaHostingSettings] = useState(false);
const [showAccountSettings, setShowAccountSettings] = useState(false);
const [showAvatarSettings, setShowAvatarSettings] = useState(false);
const [showCryptoAddressSetting, setShowCryptoAddressSetting] = useState(false);
const [showCryptoWalletSettings, setShowCryptoWalletSettings] = useState(false);
const [showSubscriptionsSettings, setShowSubscriptionsSettings] = useState(false);
@@ -50,7 +48,6 @@ const SettingsModal = () => {
Number(showInterfaceSettings) +
Number(showMediaHostingSettings) +
Number(showAccountSettings) +
Number(showAvatarSettings) +
Number(showCryptoAddressSetting) +
Number(showCryptoWalletSettings) +
Number(showSubscriptionsSettings) +
@@ -62,7 +59,6 @@ const SettingsModal = () => {
if (showInterfaceSettings && 'interface-settings' !== excludeCategoryId) return 'interface-settings';
if (showMediaHostingSettings && 'media-hosting-settings' !== excludeCategoryId) return 'media-hosting-settings';
if (showAccountSettings && 'account-settings' !== excludeCategoryId) return 'account-settings';
if (showAvatarSettings && 'avatar-settings' !== excludeCategoryId) return 'avatar-settings';
if (showCryptoAddressSetting && 'crypto-address-settings' !== excludeCategoryId) return 'crypto-address-settings';
if (showCryptoWalletSettings && 'crypto-wallet-settings' !== excludeCategoryId) return 'crypto-wallet-settings';
if (showSubscriptionsSettings && 'subscriptions-settings' !== excludeCategoryId) return 'subscriptions-settings';
@@ -102,7 +98,6 @@ const SettingsModal = () => {
setShowInterfaceSettings(hash === 'interface-settings');
setShowMediaHostingSettings(hash === 'media-hosting-settings');
setShowAccountSettings(hash === 'account-settings');
setShowAvatarSettings(hash === 'avatar-settings');
setShowCryptoAddressSetting(hash === 'crypto-address-settings');
setShowCryptoWalletSettings(hash === 'crypto-wallet-settings');
setShowSubscriptionsSettings(hash === 'subscriptions-settings');
@@ -116,7 +111,6 @@ const SettingsModal = () => {
setShowInterfaceSettings(newExpandState);
setShowMediaHostingSettings(newExpandState);
setShowAccountSettings(newExpandState);
setShowAvatarSettings(newExpandState);
setShowCryptoAddressSetting(newExpandState);
setShowCryptoWalletSettings(newExpandState);
setShowSubscriptionsSettings(newExpandState);
@@ -158,13 +152,6 @@ const SettingsModal = () => {
</label>
</div>
{showAccountSettings && <AccountSettings />}
<div id='avatar-settings' className={`${styles.setting} ${styles.category}`}>
<label onClick={() => handleCategoryClick('avatar-settings', showAvatarSettings, setShowAvatarSettings)}>
<span className={showAvatarSettings ? styles.hideButton : styles.showButton} />
{t('avatar')}
</label>
</div>
{showAvatarSettings && <AvatarSettings />}
<div id='crypto-address-settings' className={`${styles.setting} ${styles.category}`}>
<label onClick={() => handleCategoryClick('crypto-address-settings', showCryptoAddressSetting, setShowCryptoAddressSetting)}>
<span className={showCryptoAddressSetting ? styles.hideButton : styles.showButton} />
-21
View File
@@ -1,21 +0,0 @@
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
interface AvatarVisibilityState {
hideAvatars: boolean;
setHideAvatars: (hide: boolean) => void;
}
const useAvatarVisibilityStore = create<AvatarVisibilityState>()(
persist(
(set) => ({
hideAvatars: false,
setHideAvatars: (hide) => set({ hideAvatars: hide }),
}),
{
name: 'avatar-visibility-storage',
},
),
);
export default useAvatarVisibilityStore;
-24
View File
@@ -648,20 +648,6 @@
text-decoration: var(--post-content-link-text-decoration-hover);
}
.authorAvatar {
width: 24px;
display: inline-block;
position: relative;
padding-right: 2px;
}
.authorAvatar img {
width: 24px;
max-height: 24px;
position: absolute;
bottom: -7px;
}
@media (max-width: 640px) {
.replyQuotePreview {
margin-right: 10px;
@@ -679,16 +665,6 @@
margin-top: 10px;
margin-left: 5px;
}
.authorAvatar {
width: 20px;
}
.authorAvatar img {
width: 20px;
max-height: 20px;
bottom: -3px;
}
}
@media (min-width: 640px) {