mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
@@ -177,5 +177,21 @@
|
||||
"block_board": "حظر المجلس",
|
||||
"unblock_board": "إلغاء حظر المجلس",
|
||||
"unblock_all_confirm": "هل أنت متأكد أنك تريد إلغاء حظر جميع عناوين المجالس وعناوين المستخدمين؟",
|
||||
"hidden": "مخفي"
|
||||
"hidden": "مخفي",
|
||||
"save_options": "حفظ الخيارات",
|
||||
"filters": "مرشحات",
|
||||
"image_size": "حجم الصورة",
|
||||
"show_op_comment": "عرض تعليق الموضوع الأصلي",
|
||||
"hide_threads_without_images": "إخفاء المواضيع بدون صور",
|
||||
"on": "تشغيل",
|
||||
"off": "إيقاف",
|
||||
"small": "صغير",
|
||||
"large": "كبير",
|
||||
"show_worksafe_content_only": "عرض المحتوى الآمن فقط",
|
||||
"show_all_boards": "عرض جميع اللوحات",
|
||||
"show_nsfw_content_only": "عرض المحتوى غير الآمن فقط",
|
||||
"show_nsfw_boards_only": "عرض لوحات NSFW فقط",
|
||||
"use_catalog": "استخدام الكتالوج",
|
||||
"show_worksafe_boards_only": "عرض لوحات آمنة للعمل فقط",
|
||||
"show_all_content": "عرض جميع المحتويات"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "ফোরাম ব্লক",
|
||||
"unblock_board": "ফোরাম অনবন্ধ করুন",
|
||||
"unblock_all_confirm": "আপনি কি নিশ্চিত যে আপনি সমস্ত বোর্ড ঠিকানা এবং ব্যবহারকারী ঠিকানা অনবন্ধ করতে চান?",
|
||||
"hidden": "লুকানো"
|
||||
"hidden": "লুকানো",
|
||||
"save_options": "অপশন সংরক্ষণ করুন",
|
||||
"filters": "ফিল্টার",
|
||||
"image_size": "চিত্রের আকার",
|
||||
"show_op_comment": "মূল মন্তব্য দেখান",
|
||||
"hide_threads_without_images": "চিত্র ছাড়াই থ্রেড লুকাও",
|
||||
"on": "চালু",
|
||||
"off": "বন্ধ",
|
||||
"small": "ছোট",
|
||||
"large": "বড়",
|
||||
"show_worksafe_content_only": "শুধুমাত্র কাজের বোর্ড দেখান",
|
||||
"show_all_boards": "সমস্ত বোর্ড দেখান",
|
||||
"show_nsfw_content_only": "শুধুমাত্র NSFW বিষয়বস্তু দেখান",
|
||||
"show_nsfw_boards_only": "শুধুমাত্র NSFW বোর্ড দেখান",
|
||||
"use_catalog": "ক্যাটালগ ব্যবহার",
|
||||
"show_worksafe_boards_only": "শুধুমাত্র কাজ-সম্পূর্ণ বোর্ড দেখান",
|
||||
"show_all_content": "সমস্ত কন্টেন্ট দেখান"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Blokovat diskuzní fórum",
|
||||
"unblock_board": "Odblokovat diskuzní fórum",
|
||||
"unblock_all_confirm": "Jste si jisti, že chcete odblokovat všechny adresy diskuzních fór a adresy uživatelů?",
|
||||
"hidden": "skrytý"
|
||||
"hidden": "skrytý",
|
||||
"save_options": "Uložit možnosti",
|
||||
"filters": "filtry",
|
||||
"image_size": "velikost obrázku",
|
||||
"show_op_comment": "Zobrazit komentář autora vlákna",
|
||||
"hide_threads_without_images": "Skrýt vlákna bez obrázků",
|
||||
"on": "zapnuto",
|
||||
"off": "vypnuto",
|
||||
"small": "malé",
|
||||
"large": "velký",
|
||||
"show_worksafe_content_only": "Zobrazit pouze bezpečné nástěnky",
|
||||
"show_all_boards": "Zobrazit všechny desky",
|
||||
"show_nsfw_content_only": "Zobrazit pouze NSFW obsah",
|
||||
"show_nsfw_boards_only": "Zobrazit pouze NSFW desky",
|
||||
"use_catalog": "použít katalog",
|
||||
"show_worksafe_boards_only": "Zobrazit pouze bezpečné pracovní desky",
|
||||
"show_all_content": "Zobrazit veškerý obsah"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Bloker forum",
|
||||
"unblock_board": "Fjern blokering af forum",
|
||||
"unblock_all_confirm": "Er du sikker på, at du vil ophæve blokeringen af alle boardadresser og brugeradresser?",
|
||||
"hidden": "skjult"
|
||||
"hidden": "skjult",
|
||||
"save_options": "Gem indstillinger",
|
||||
"filters": "filtre",
|
||||
"image_size": "billedstørrelse",
|
||||
"show_op_comment": "Vis OP kommentar",
|
||||
"hide_threads_without_images": "Skjul tråde uden billeder",
|
||||
"on": "på",
|
||||
"off": "fra",
|
||||
"small": "lille",
|
||||
"large": "stor",
|
||||
"show_worksafe_content_only": "Vis kun sikre tavler",
|
||||
"show_all_boards": "Vis alle boards",
|
||||
"show_nsfw_content_only": "Vis kun NSFW indhold",
|
||||
"show_nsfw_boards_only": "Vis kun NSFW boards",
|
||||
"use_catalog": "brug katalog",
|
||||
"show_worksafe_boards_only": "Vis kun Worksafe boards",
|
||||
"show_all_content": "Vis alt indhold"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Forum blockieren",
|
||||
"unblock_board": "Forum entsperren",
|
||||
"unblock_all_confirm": "Möchten Sie wirklich alle Boardadressen und Benutzeradressen entsperren?",
|
||||
"hidden": "versteckt"
|
||||
"hidden": "versteckt",
|
||||
"save_options": "Optionen speichern",
|
||||
"filters": "Filter",
|
||||
"image_size": "Bildgröße",
|
||||
"show_op_comment": "OP-Kommentar anzeigen",
|
||||
"hide_threads_without_images": "Threads ohne Bilder ausblenden",
|
||||
"on": "an",
|
||||
"off": "aus",
|
||||
"small": "klein",
|
||||
"large": "groß",
|
||||
"show_worksafe_content_only": "Nur sichere Boards anzeigen",
|
||||
"show_all_boards": "Alle Boards anzeigen",
|
||||
"show_nsfw_content_only": "Nur NSFW-Inhalte anzeigen",
|
||||
"show_nsfw_boards_only": "Nur NSFW-Boards anzeigen",
|
||||
"use_catalog": "Benutze Katalog",
|
||||
"show_worksafe_boards_only": "Nur sichere Boards anzeigen",
|
||||
"show_all_content": "Alle Inhalte anzeigen"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Αποκλεισμός συμβουλίου",
|
||||
"unblock_board": "Αναίρεση αποκλεισμού συμβουλίου",
|
||||
"unblock_all_confirm": "Είστε σίγουροι ότι θέλετε να ξεκλειδώσετε όλες τις διευθύνσεις συμβουλίων και χρηστών;",
|
||||
"hidden": "κρυφός"
|
||||
"hidden": "κρυφός",
|
||||
"save_options": "Αποθήκευση επιλογών",
|
||||
"filters": "φίλτρα",
|
||||
"image_size": "μέγεθος εικόνας",
|
||||
"show_op_comment": "Εμφάνιση σχολίου OP",
|
||||
"hide_threads_without_images": "Απόκρυψη νημάτων χωρίς εικόνες",
|
||||
"on": "ενεργό",
|
||||
"off": "απενεργοποιημένο",
|
||||
"small": "μικρό",
|
||||
"large": "μεγάλο",
|
||||
"show_worksafe_content_only": "Εμφάνιση μόνο ασφαλών πίνακων",
|
||||
"show_all_boards": "Εμφάνιση όλων των πινάκων",
|
||||
"show_nsfw_content_only": "Εμφάνιση μόνο NSFW περιεχομένου",
|
||||
"show_nsfw_boards_only": "Εμφάνιση μόνο NSFW πινάκων",
|
||||
"use_catalog": "χρησιμοποίηση καταλόγου",
|
||||
"show_worksafe_boards_only": "Εμφάνιση μόνο ασφαλών πινάκων εργασίας",
|
||||
"show_all_content": "Εμφάνιση όλων των περιεχομένων"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Block board",
|
||||
"unblock_board": "Unblock board",
|
||||
"unblock_all_confirm": "Are you sure you want to unblock all board addresses and user addresses?",
|
||||
"hidden": "hidden"
|
||||
"hidden": "hidden",
|
||||
"save_options": "Save Options",
|
||||
"filters": "filters",
|
||||
"image_size": "image size",
|
||||
"show_op_comment": "Show OP Comment",
|
||||
"hide_threads_without_images": "Hide Threads Without Images",
|
||||
"on": "on",
|
||||
"off": "off",
|
||||
"small": "small",
|
||||
"large": "large",
|
||||
"show_worksafe_content_only": "Show Worksafe Boards Only",
|
||||
"show_all_boards": "Show All Boards",
|
||||
"show_nsfw_content_only": "Show NSFW Content Only",
|
||||
"show_nsfw_boards_only": "Show NSFW Boards Only",
|
||||
"use_catalog": "use catalog",
|
||||
"show_worksafe_boards_only": "Show Worksafe Boards Only",
|
||||
"show_all_content": "Show All Content"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Bloquear foro",
|
||||
"unblock_board": "Desbloquear foro",
|
||||
"unblock_all_confirm": "¿Estás seguro de que quieres desbloquear todas las direcciones de foro y las direcciones de usuario?",
|
||||
"hidden": "oculto"
|
||||
"hidden": "oculto",
|
||||
"save_options": "Guardar opciones",
|
||||
"filters": "filtros",
|
||||
"image_size": "tamaño de la imagen",
|
||||
"show_op_comment": "Mostrar comentario del OP",
|
||||
"hide_threads_without_images": "Ocultar hilos sin imágenes",
|
||||
"on": "encendido",
|
||||
"off": "apagado",
|
||||
"small": "pequeño",
|
||||
"large": "grande",
|
||||
"show_worksafe_content_only": "Mostrar solo tableros seguros",
|
||||
"show_all_boards": "Mostrar todos los tableros",
|
||||
"show_nsfw_content_only": "Mostrar solo contenido NSFW",
|
||||
"show_nsfw_boards_only": "Mostrar solo tableros NSFW",
|
||||
"use_catalog": "usar catálogo",
|
||||
"show_worksafe_boards_only": "Mostrar solo tableros seguros para el trabajo",
|
||||
"show_all_content": "Mostrar todo el contenido"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "بلاک تالار",
|
||||
"unblock_board": "آزاد کردن تالار",
|
||||
"unblock_all_confirm": "آیا از می خواهید تمام آدرس های بورد و آدرس های کاربر را از مسدودیت خارج کنید؟",
|
||||
"hidden": "مخفی"
|
||||
"hidden": "مخفی",
|
||||
"save_options": "ذخیره گزینهها",
|
||||
"filters": "فیلترها",
|
||||
"image_size": "اندازه تصویر",
|
||||
"show_op_comment": "نمایش نظر OP",
|
||||
"hide_threads_without_images": "پنهان کردن موضوعات بدون تصاویر",
|
||||
"on": "روشن",
|
||||
"off": "خاموش",
|
||||
"small": "کوچک",
|
||||
"large": "بزرگ",
|
||||
"show_worksafe_content_only": "نمایش تنها تابلوهای ایمن",
|
||||
"show_all_boards": "نمایش همه تابلوها",
|
||||
"show_nsfw_content_only": "نمایش تنها محتوای NSFW",
|
||||
"show_nsfw_boards_only": "نمایش تنها بوردهای NSFW",
|
||||
"use_catalog": "استفاده از کاتالوگ",
|
||||
"show_worksafe_boards_only": "نمایش تنها بوردهای ایمن برای کار",
|
||||
"show_all_content": "نمایش تمام محتوا"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Estä foorumi",
|
||||
"unblock_board": "Poista foorumin esto",
|
||||
"unblock_all_confirm": "Oletko varma, että haluat poistaa estoja kaikista foorumin osoitteista ja käyttäjien osoitteista?",
|
||||
"hidden": "piilotettu"
|
||||
"hidden": "piilotettu",
|
||||
"save_options": "Tallenna asetukset",
|
||||
"filters": "suodattimet",
|
||||
"image_size": "kuvan koko",
|
||||
"show_op_comment": "Näytä OP:n kommentti",
|
||||
"hide_threads_without_images": "Piilota langat ilman kuvia",
|
||||
"on": "päällä",
|
||||
"off": "pois",
|
||||
"small": "pieni",
|
||||
"large": "suuri",
|
||||
"show_worksafe_content_only": "Näytä vain turvalliset lautat",
|
||||
"show_all_boards": "Näytä kaikki lautat",
|
||||
"show_nsfw_content_only": "Näytä vain NSFW-sisältö",
|
||||
"show_nsfw_boards_only": "Näytä vain NSFW-laudat",
|
||||
"use_catalog": "käytä luetteloa",
|
||||
"show_worksafe_boards_only": "Näytä vain työturvalliset hallit",
|
||||
"show_all_content": "Näytä kaikki sisällöt"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "I-block ang board",
|
||||
"unblock_board": "I-unblock ang board",
|
||||
"unblock_all_confirm": "Sigurado ka bang gusto mong i-unblock ang lahat ng mga board address at mga user address?",
|
||||
"hidden": "nakatago"
|
||||
"hidden": "nakatago",
|
||||
"save_options": "I-save ang mga Opsyon",
|
||||
"filters": "mga filter",
|
||||
"image_size": "laki ng larawan",
|
||||
"show_op_comment": "Ipakita ang OP na Komento",
|
||||
"hide_threads_without_images": "Itago ang Mga Threads Nang Walang Mga Larawan",
|
||||
"on": "bukas",
|
||||
"off": "naka-off",
|
||||
"small": "maliit",
|
||||
"large": "malaki",
|
||||
"show_worksafe_content_only": "Ipakita lamang ang mga work-safe boards",
|
||||
"show_all_boards": "Ipakita ang lahat ng mga boards",
|
||||
"show_nsfw_content_only": "Ipakita lamang ang NSFW na nilalaman",
|
||||
"show_nsfw_boards_only": "Ipakita lamang ang NSFW na boards",
|
||||
"use_catalog": "gamitin ang catalog",
|
||||
"show_worksafe_boards_only": "Ipakita lamang ang mga Worksafe boards",
|
||||
"show_all_content": "Ipakita lahat ng nilalaman"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Bloquer le forum",
|
||||
"unblock_board": "Débloquer le forum",
|
||||
"unblock_all_confirm": "Êtes-vous sûr de vouloir débloquer toutes les adresses de forum et les adresses d'utilisateur ?",
|
||||
"hidden": "caché"
|
||||
"hidden": "caché",
|
||||
"save_options": "Enregistrer les options",
|
||||
"filters": "filtres",
|
||||
"image_size": "taille de l'image",
|
||||
"show_op_comment": "Afficher le commentaire de l'OP",
|
||||
"hide_threads_without_images": "Masquer les fils sans images",
|
||||
"on": "activé",
|
||||
"off": "éteint",
|
||||
"small": "petit",
|
||||
"large": "grand",
|
||||
"show_worksafe_content_only": "Afficher uniquement les tableaux de travail sécurisés",
|
||||
"show_all_boards": "Afficher tous les boards",
|
||||
"show_nsfw_content_only": "Afficher uniquement le contenu NSFW",
|
||||
"show_nsfw_boards_only": "Afficher uniquement les boards NSFW",
|
||||
"use_catalog": "utiliser le catalogue",
|
||||
"show_worksafe_boards_only": "Afficher uniquement les tableaux Worksafe",
|
||||
"show_all_content": "Afficher tout le contenu"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "חסום פורום",
|
||||
"unblock_board": "ביטול חסימת פורום",
|
||||
"unblock_all_confirm": "האם אתה בטוח שברצונך לבטל את חסימת כל כתובות הפורום וכתובות המשתמש?",
|
||||
"hidden": "מוסתר"
|
||||
"hidden": "מוסתר",
|
||||
"save_options": "שמירת האפשרויות",
|
||||
"filters": "מסננים",
|
||||
"image_size": "גודל התמונה",
|
||||
"show_op_comment": "הצג תגובת היוצר",
|
||||
"hide_threads_without_images": "הסתר תכניות ללא תמונות",
|
||||
"on": "פועל",
|
||||
"off": "כבוי",
|
||||
"small": "קטן",
|
||||
"large": "גדול",
|
||||
"show_worksafe_content_only": "הצג רק לוחות עבודה בטוחים",
|
||||
"show_all_boards": "הצג את כל הלוחות",
|
||||
"show_nsfw_content_only": "הצג רק תוכן NSFW",
|
||||
"show_nsfw_boards_only": "הצג רק לוחות NSFW",
|
||||
"use_catalog": "השתמש בקטלוג",
|
||||
"show_worksafe_boards_only": "הצג לוחות עבודה בטוחים בלבד",
|
||||
"show_all_content": "הצג את כל התוכן"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "फ़ोरम अवरोधित करें",
|
||||
"unblock_board": "फ़ोरम को अनब्लॉक करें",
|
||||
"unblock_all_confirm": "क्या आप सभी बोर्ड पतों और उपयोगकर्ता पतों को अनब्लॉक करना चाहते हैं, क्या आप सुनिश्चित हैं?",
|
||||
"hidden": "छिपा हुआ"
|
||||
"hidden": "छिपा हुआ",
|
||||
"save_options": "विकल्प सहेजें",
|
||||
"filters": "फिल्टर",
|
||||
"image_size": "चित्र का आकार",
|
||||
"show_op_comment": "मूल टिप्पणी दिखाएं",
|
||||
"hide_threads_without_images": "तस्वीरें नहीं वाले धागे छिपाएं",
|
||||
"on": "चालू",
|
||||
"off": "बंद",
|
||||
"small": "छोटा",
|
||||
"large": "बड़ा",
|
||||
"show_worksafe_content_only": "केवल कार्य सुरक्षित बोर्ड दिखाएं",
|
||||
"show_all_boards": "सभी बोर्ड दिखाएं",
|
||||
"show_nsfw_content_only": "केवल NSFW सामग्री दिखाएं",
|
||||
"show_nsfw_boards_only": "केवल NSFW बोर्ड्स दिखाएं",
|
||||
"use_catalog": "कैटलॉग का उपयोग करें",
|
||||
"show_worksafe_boards_only": "केवल कामसुरक्षित बोर्ड्स दिखाएं",
|
||||
"show_all_content": "सभी सामग्री दिखाएं"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Fórum blokkolása",
|
||||
"unblock_board": "Fórum feloldása",
|
||||
"unblock_all_confirm": "Biztos vagy benne, hogy fel akarod oldani az összes fórumcímet és felhasználói címet?",
|
||||
"hidden": "rejtett"
|
||||
"hidden": "rejtett",
|
||||
"save_options": "Beállítások mentése",
|
||||
"filters": "szűrők",
|
||||
"image_size": "képméret",
|
||||
"show_op_comment": "Mutassuk meg az OP hozzászólását",
|
||||
"hide_threads_without_images": "Szálak elrejtése képek nélkül",
|
||||
"on": "be",
|
||||
"off": "ki",
|
||||
"small": "kicsi",
|
||||
"large": "nagy",
|
||||
"show_worksafe_content_only": "Csak a biztonságos táblák megjelenítése",
|
||||
"show_all_boards": "Mutasd az összes táblát",
|
||||
"show_nsfw_content_only": "Csak NSFW tartalmat mutasson",
|
||||
"show_nsfw_boards_only": "Csak NSFW táblák mutatása",
|
||||
"use_catalog": "használja a katalógust",
|
||||
"show_worksafe_boards_only": "Csak munkabiztos táblák mutatása",
|
||||
"show_all_content": "Mutasd az összes tartalmat"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Blokir papan",
|
||||
"unblock_board": "Buka blokir forum",
|
||||
"unblock_all_confirm": "Apakah Anda yakin ingin membuka blokir semua alamat board dan alamat pengguna?",
|
||||
"hidden": "tersembunyi"
|
||||
"hidden": "tersembunyi",
|
||||
"save_options": "Simpan Opsi",
|
||||
"filters": "filter",
|
||||
"image_size": "ukuran gambar",
|
||||
"show_op_comment": "Tampilkan Komentar OP",
|
||||
"hide_threads_without_images": "Sembunyikan Thread Tanpa Gambar",
|
||||
"on": "nyala",
|
||||
"off": "mati",
|
||||
"small": "kecil",
|
||||
"large": "besar",
|
||||
"show_worksafe_content_only": "Tampilkan Hanya Papan Kerja Aman",
|
||||
"show_all_boards": "Tampilkan Semua Board",
|
||||
"show_nsfw_content_only": "Tampilkan Hanya Konten NSFW",
|
||||
"show_nsfw_boards_only": "Tampilkan Hanya Board NSFW",
|
||||
"use_catalog": "gunakan katalog",
|
||||
"show_worksafe_boards_only": "Tampilkan Hanya Board Worksafe",
|
||||
"show_all_content": "Tampilkan Semua Konten"
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
"what_is_plebchan": "Cos'è plebchan?",
|
||||
"go": "vai",
|
||||
"or": "oppure",
|
||||
"plebchan_description": "Plebchan è un'alternativa a 4chan decentralizzata, senza server, senza amministratori, in cui qualunque pleb può creare e possedere forum illimitati. Tutti i dati provengono dal protocollo <1>plebbit</1>, sono tutti testo inclusi i link da cui sono incorporati i media, condivisi peer-to-peer. Gli utenti non devono registrare un account prima di partecipare alla community. Sentiti libero di cliccare su un forum qui sotto che ti interessa e unisciti subito!",
|
||||
"no_global_rules_info": "Non ci sono regole globali, ogni forum è completamente indipendente e il suo proprietario decide come/se moderarlo.",
|
||||
"boards": "forum",
|
||||
"plebchan_description": "Plebchan è un'alternativa a 4chan decentralizzata, senza server, senza amministratori, in cui qualunque pleb può creare e possedere board illimitate. Tutti i dati provengono dal protocollo <1>plebbit</1>, sono tutti testo inclusi i link da cui sono incorporati i media, condivisi peer-to-peer. Gli utenti non devono registrare un account prima di partecipare alla community. Sentiti libero di cliccare su una board qui sotto che ti interessa e unisciti subito!",
|
||||
"no_global_rules_info": "Non ci sono regole globali, ogni board è completamente indipendente e il suo proprietario decide come/se moderarlo.",
|
||||
"boards": "board",
|
||||
"popular_threads": "Thread popolari",
|
||||
"options": "Opzioni",
|
||||
"stats": "Statistiche",
|
||||
@@ -20,7 +20,7 @@
|
||||
"board_stats_week": "Nell'ultima settimana, <1>{{userCount}}</1> utenti hanno inviato <1>{{postCount}}</1> post",
|
||||
"board_stats_month": "Nell'ultimo mese, <1>{{userCount}}</1> utenti hanno inviato <1>{{postCount}}</1> post",
|
||||
"board_stats_all": "Da allora, <1>{{userCount}}</1> utenti hanno inviato <1>{{postCount}}</1> post",
|
||||
"board_created": "Forum creato",
|
||||
"board_created": "board creata",
|
||||
"settings": "Impostazioni",
|
||||
"home": "Home",
|
||||
"subscribe": "Iscriviti",
|
||||
@@ -29,7 +29,7 @@
|
||||
"catalog": "Catalogo",
|
||||
"all": "Tutti",
|
||||
"subscriptions": "Iscrizioni",
|
||||
"board": "Forum",
|
||||
"board": "board",
|
||||
"link_to_post": "Link per questo post",
|
||||
"reply_to_post": "Commenta questo post",
|
||||
"sticky": "Incollato",
|
||||
@@ -64,11 +64,11 @@
|
||||
"submit": "Invia",
|
||||
"gif": "GIF",
|
||||
"moderating": "stai moderando",
|
||||
"not_moderating": "Non stai moderando nessun forum",
|
||||
"not_subscribed": "Non iscritto a nessun forum",
|
||||
"not_moderating": "Non stai moderando nessuna board",
|
||||
"not_subscribed": "Non iscritto a nessuna board",
|
||||
"total_posts": "Post totali:",
|
||||
"current_users": "utenti attuali:",
|
||||
"boards_tracked": "forum tracciati:",
|
||||
"boards_tracked": "board tracciate:",
|
||||
"interests": "interessi",
|
||||
"random": "casuale",
|
||||
"international": "internazionali",
|
||||
@@ -135,10 +135,10 @@
|
||||
"expand_all_settings": "Espandi tutte le impostazioni",
|
||||
"collapse_all_settings": "Comprimi tutte le impostazioni",
|
||||
"refresh": "Aggiorna",
|
||||
"no_board_selected": "nessun forum selezionato",
|
||||
"no_board_selected": "nessuna board selezionata",
|
||||
"none": "nessuno",
|
||||
"not_subscribed_to_any_board": "Non sei ancora iscritto a nessun forum.",
|
||||
"board_mods": "Moderatori del Forum",
|
||||
"not_subscribed_to_any_board": "Non sei ancora iscritto a nessuna board.",
|
||||
"board_mods": "Moderatori della board",
|
||||
"this_post_was_removed": "questo post è stato rimosso",
|
||||
"user_deleted_this_post": "L'utente ha eliminato questo post.",
|
||||
"reason": "motivo",
|
||||
@@ -171,11 +171,27 @@
|
||||
"unblock": "Sblocca",
|
||||
"unblock_all": "Sblocca tutti",
|
||||
"blocked_addresses": "Indirizzi bloccati",
|
||||
"you_have_not_blocked": "Non hai bloccato nessun indirizzo di forum o utente.",
|
||||
"you_have_not_blocked": "Non hai bloccato nessun indirizzo di board o utente.",
|
||||
"block_user": "Blocca utente",
|
||||
"unblock_user": "Sblocca utente",
|
||||
"block_board": "Blocca forum",
|
||||
"unblock_board": "Sblocca forum",
|
||||
"unblock_all_confirm": "Sei sicuro di voler sbloccare tutti gli indirizzi del forum e gli indirizzi degli utenti?",
|
||||
"hidden": "nascosto"
|
||||
"block_board": "Blocca board",
|
||||
"unblock_board": "Sblocca board",
|
||||
"unblock_all_confirm": "Sei sicuro di voler sbloccare tutti gli indirizzi della board e gli indirizzi degli utenti?",
|
||||
"hidden": "nascosto",
|
||||
"save_options": "Salva opzioni",
|
||||
"filters": "filtri",
|
||||
"image_size": "dimensione immagini",
|
||||
"show_op_comment": "mostra commento OP",
|
||||
"hide_threads_without_images": "Nascondi thread senza immagini",
|
||||
"on": "on",
|
||||
"off": "off",
|
||||
"small": "piccolo",
|
||||
"large": "grande",
|
||||
"show_worksafe_content_only": "Mostra solo board sicure",
|
||||
"show_all_boards": "Mostra tutte le board",
|
||||
"show_nsfw_content_only": "Mostra solo contenuti NSFW",
|
||||
"show_nsfw_boards_only": "Mostra solo le board NSFW",
|
||||
"use_catalog": "usa catalogo",
|
||||
"show_worksafe_boards_only": "Mostra solo le board Worksafe",
|
||||
"show_all_content": "Mostra tutti i contenuti"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "掲示板をブロックする",
|
||||
"unblock_board": "掲示板のブロックを解除する",
|
||||
"unblock_all_confirm": "すべての掲示板アドレスとユーザーアドレスを解除してもよろしいですか?",
|
||||
"hidden": "隠し"
|
||||
"hidden": "隠し",
|
||||
"save_options": "オプションを保存",
|
||||
"filters": "フィルター",
|
||||
"image_size": "画像サイズ",
|
||||
"show_op_comment": "OPコメントを表示",
|
||||
"hide_threads_without_images": "画像のないスレッドを非表示にする",
|
||||
"on": "オン",
|
||||
"off": "オフ",
|
||||
"small": "小",
|
||||
"large": "大",
|
||||
"show_worksafe_content_only": "安全な掲示板のみ表示",
|
||||
"show_all_boards": "すべての掲示板を表示",
|
||||
"show_nsfw_content_only": "NSFWコンテンツのみ表示",
|
||||
"show_nsfw_boards_only": "NSFWボードのみ表示",
|
||||
"use_catalog": "カタログを使用する",
|
||||
"show_worksafe_boards_only": "Worksafeボードのみ表示",
|
||||
"show_all_content": "すべてのコンテンツを表示"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "게시판 차단",
|
||||
"unblock_board": "게시판 차단 해제",
|
||||
"unblock_all_confirm": "모든 게시판 주소와 사용자 주소를 해제하시겠습니까?",
|
||||
"hidden": "숨겨진"
|
||||
"hidden": "숨겨진",
|
||||
"save_options": "옵션 저장",
|
||||
"filters": "필터",
|
||||
"image_size": "이미지 크기",
|
||||
"show_op_comment": "작성자 댓글 보기",
|
||||
"hide_threads_without_images": "이미지 없는 스레드 숨기기",
|
||||
"on": "켜짐",
|
||||
"off": "끔",
|
||||
"small": "작은",
|
||||
"large": "큰",
|
||||
"show_worksafe_content_only": "안전한 게시판만 표시",
|
||||
"show_all_boards": "모든 게시판 보기",
|
||||
"show_nsfw_content_only": "NSFW 콘텐츠만 표시",
|
||||
"show_nsfw_boards_only": "NSFW 보드만 표시",
|
||||
"use_catalog": "카탈로그 사용",
|
||||
"show_worksafe_boards_only": "작업 안전 보드만 표시",
|
||||
"show_all_content": "모든 콘텐츠 보기"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "फोरम अवरोधित करा",
|
||||
"unblock_board": "फोरम अनब्लॉक करा",
|
||||
"unblock_all_confirm": "आपल्याला सर्व बोर्ड पत्ते आणि वापरकर्ता पत्ते अनब्लॉक करायचं आहे का?",
|
||||
"hidden": "लपवलेले"
|
||||
"hidden": "लपवलेले",
|
||||
"save_options": "विकल्प साठवा",
|
||||
"filters": "फिल्टर",
|
||||
"image_size": "चित्राचा आकार",
|
||||
"show_op_comment": "OP टिप्पणी दाखवा",
|
||||
"hide_threads_without_images": "चित्रे बिनांतर स्थिर करा",
|
||||
"on": "चालू",
|
||||
"off": "बंद",
|
||||
"small": "लहान",
|
||||
"large": "मोठा",
|
||||
"show_worksafe_content_only": "कार्यसुरक्षित बोर्ड्सचीच फक्त दाखवा",
|
||||
"show_all_boards": "सर्व बोर्ड्स दाखवा",
|
||||
"show_nsfw_content_only": "केवळ NSFW सामग्री दर्शवा",
|
||||
"show_nsfw_boards_only": "केवळ NSFW बोर्ड्स दाखवा",
|
||||
"use_catalog": "कॅटलॉग वापरा",
|
||||
"show_worksafe_boards_only": "केवळ कामसुरक्षित बोर्ड्स दाखवा",
|
||||
"show_all_content": "सर्व सामग्री दाखवा"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Forum blokkeren",
|
||||
"unblock_board": "Deblokkeer forum",
|
||||
"unblock_all_confirm": "Weet u zeker dat u alle boardadressen en gebruikersadressen wilt deblokkeren?",
|
||||
"hidden": "verborgen"
|
||||
"hidden": "verborgen",
|
||||
"save_options": "Opties opslaan",
|
||||
"filters": "filters",
|
||||
"image_size": "afbeeldingsgrootte",
|
||||
"show_op_comment": "Toon OP opmerking",
|
||||
"hide_threads_without_images": "Verberg Threads Zonder Afbeeldingen",
|
||||
"on": "aan",
|
||||
"off": "uit",
|
||||
"small": "klein",
|
||||
"large": "groot",
|
||||
"show_worksafe_content_only": "Toon alleen veilige boards",
|
||||
"show_all_boards": "Toon alle boards",
|
||||
"show_nsfw_content_only": "Toon alleen NSFW inhoud",
|
||||
"show_nsfw_boards_only": "Toon alleen NSFW boards",
|
||||
"use_catalog": "gebruik catalogus",
|
||||
"show_worksafe_boards_only": "Toon alleen Worksafe boards",
|
||||
"show_all_content": "Toon alle inhoud"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Blokker forum",
|
||||
"unblock_board": "Fjern blokkering av forum",
|
||||
"unblock_all_confirm": "Er du sikker på at du vil fjerne blokkeringen av alle bordadresser og brukeradresser?",
|
||||
"hidden": "skjult"
|
||||
"hidden": "skjult",
|
||||
"save_options": "Lagre alternativer",
|
||||
"filters": "filtre",
|
||||
"image_size": "bilde størrelse",
|
||||
"show_op_comment": "Vis OP-kommentar",
|
||||
"hide_threads_without_images": "Skjul tråder uten bilder",
|
||||
"on": "på",
|
||||
"off": "av",
|
||||
"small": "liten",
|
||||
"large": "stor",
|
||||
"show_worksafe_content_only": "Vis bare sikre tavler",
|
||||
"show_all_boards": "Vis alle boards",
|
||||
"show_nsfw_content_only": "Vis kun NSFW innhold",
|
||||
"show_nsfw_boards_only": "Vis kun NSFW boards",
|
||||
"use_catalog": "bruk katalog",
|
||||
"show_worksafe_boards_only": "Vis kun Worksafe boards",
|
||||
"show_all_content": "Vis allt innhold"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Zablokuj forum",
|
||||
"unblock_board": "Odblokuj forum",
|
||||
"unblock_all_confirm": "Jesteś pewien, że chcesz odblokować wszystkie adresy forum i adresy użytkowników?",
|
||||
"hidden": "ukryty"
|
||||
"hidden": "ukryty",
|
||||
"save_options": "Zapisz opcje",
|
||||
"filters": "filtry",
|
||||
"image_size": "rozmiar obrazu",
|
||||
"show_op_comment": "Pokaż komentarz OP",
|
||||
"hide_threads_without_images": "Ukryj wątki bez obrazów",
|
||||
"on": "włączone",
|
||||
"off": "wyłączone",
|
||||
"small": "mały",
|
||||
"large": "duży",
|
||||
"show_worksafe_content_only": "Pokaż tylko bezpieczne tablice",
|
||||
"show_all_boards": "Pokaż wszystkie tablice",
|
||||
"show_nsfw_content_only": "Pokaż tylko zawartość NSFW",
|
||||
"show_nsfw_boards_only": "Pokaż tylko tablice NSFW",
|
||||
"use_catalog": "użyj katalogu",
|
||||
"show_worksafe_boards_only": "Pokaż tylko bezpieczne tablice",
|
||||
"show_all_content": "Pokaż całą zawartość"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Bloquear fórum",
|
||||
"unblock_board": "Desbloquear fórum",
|
||||
"unblock_all_confirm": "Tem certeza de que deseja desbloquear todos os endereços de board e endereços de usuário?",
|
||||
"hidden": "escondido"
|
||||
"hidden": "escondido",
|
||||
"save_options": "Salvar opções",
|
||||
"filters": "filtros",
|
||||
"image_size": "tamanho da imagem",
|
||||
"show_op_comment": "Mostrar comentário do OP",
|
||||
"hide_threads_without_images": "Esconder tópicos sem imagens",
|
||||
"on": "ligado",
|
||||
"off": "desligado",
|
||||
"small": "pequeno",
|
||||
"large": "grande",
|
||||
"show_worksafe_content_only": "Mostrar apenas quadros seguros",
|
||||
"show_all_boards": "Mostrar todos os boards",
|
||||
"show_nsfw_content_only": "Mostrar apenas conteúdo NSFW",
|
||||
"show_nsfw_boards_only": "Mostrar apenas boards NSFW",
|
||||
"use_catalog": "usar catálogo",
|
||||
"show_worksafe_boards_only": "Mostrar apenas boards Worksafe",
|
||||
"show_all_content": "Mostrar Todo o Conteúdo"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Blochează forumul",
|
||||
"unblock_board": "Deblochează forumul",
|
||||
"unblock_all_confirm": "Sunteți sigur că doriți să deblocați toate adresele de board și adresele de utilizatori?",
|
||||
"hidden": "ascuns"
|
||||
"hidden": "ascuns",
|
||||
"save_options": "Salvați opțiunile",
|
||||
"filters": "filtre",
|
||||
"image_size": "dimensiunea imaginii",
|
||||
"show_op_comment": "Afișează comentariul OP",
|
||||
"hide_threads_without_images": "Ascunde firele fără imagini",
|
||||
"on": "pornit",
|
||||
"off": "oprit",
|
||||
"small": "mic",
|
||||
"large": "mare",
|
||||
"show_worksafe_content_only": "Afișați doar tablourile de lucru sigure",
|
||||
"show_all_boards": "Afișează toate tablourile",
|
||||
"show_nsfw_content_only": "Afișați doar conținutul NSFW",
|
||||
"show_nsfw_boards_only": "Afișați doar tablourile NSFW",
|
||||
"use_catalog": "folosește catalogul",
|
||||
"show_worksafe_boards_only": "Afișați doar tablourile Worksafe",
|
||||
"show_all_content": "Afișați tot conținutul"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Заблокировать форум",
|
||||
"unblock_board": "Разблокировать форум",
|
||||
"unblock_all_confirm": "Вы уверены, что хотите разблокировать все адреса форума и адреса пользователей?",
|
||||
"hidden": "скрытый"
|
||||
"hidden": "скрытый",
|
||||
"save_options": "Сохранить настройки",
|
||||
"filters": "фильтры",
|
||||
"image_size": "размер изображения",
|
||||
"show_op_comment": "Показать комментарий автора",
|
||||
"hide_threads_without_images": "Скрыть темы без изображений",
|
||||
"on": "включено",
|
||||
"off": "выкл",
|
||||
"small": "маленький",
|
||||
"large": "большой",
|
||||
"show_worksafe_content_only": "Показывать только безопасные доски",
|
||||
"show_all_boards": "Показать все доски",
|
||||
"show_nsfw_content_only": "Показывать только NSFW контент",
|
||||
"show_nsfw_boards_only": "Показывать только NSFW доски",
|
||||
"use_catalog": "использовать каталог",
|
||||
"show_worksafe_boards_only": "Показывать только безопасные доски",
|
||||
"show_all_content": "Показать весь контент"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Blloko bordi",
|
||||
"unblock_board": "Hiq bllokimin e bordit",
|
||||
"unblock_all_confirm": "A jeni i sigurt se doni të hiqni bllokimin e të gjitha adresave të bordit dhe adresave të përdoruesit?",
|
||||
"hidden": "i fshehur"
|
||||
"hidden": "i fshehur",
|
||||
"save_options": "Ruaj Cilësimet",
|
||||
"filters": "filtrot",
|
||||
"image_size": "madhësia e imazhit",
|
||||
"show_op_comment": "Shfaq komentin e OP-së",
|
||||
"hide_threads_without_images": "Fshih temat pa imazhe",
|
||||
"on": "në",
|
||||
"off": "jashtë",
|
||||
"small": "i vogël",
|
||||
"large": "i madh",
|
||||
"show_worksafe_content_only": "Shfaq vetëm tabela të sigurta pune",
|
||||
"show_all_boards": "Shfaq të gjitha taulat",
|
||||
"show_nsfw_content_only": "Shfaq vetëm përmbajtje NSFW",
|
||||
"show_nsfw_boards_only": "Shfaq vetëm taulat NSFW",
|
||||
"use_catalog": "përdor katalogun",
|
||||
"show_worksafe_boards_only": "Shfaq vetëm taulat e sigurta të punës",
|
||||
"show_all_content": "Shfaq të gjitha përmbajtjet"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Blockera forum",
|
||||
"unblock_board": "Avblockera forum",
|
||||
"unblock_all_confirm": "Är du säker på att du vill låsa upp alla boardadresser och användaradresser?",
|
||||
"hidden": "dold"
|
||||
"hidden": "dold",
|
||||
"save_options": "Spara alternativ",
|
||||
"filters": "filter",
|
||||
"image_size": "bildstorlek",
|
||||
"show_op_comment": "Visa OP-kommentar",
|
||||
"hide_threads_without_images": "Dölj trådar utan bilder",
|
||||
"on": "på",
|
||||
"off": "av",
|
||||
"small": "liten",
|
||||
"large": "stor",
|
||||
"show_worksafe_content_only": "Visa endast säkra styrelser",
|
||||
"show_all_boards": "Visa alla styrelser",
|
||||
"show_nsfw_content_only": "Visa endast NSFW-innehåll",
|
||||
"show_nsfw_boards_only": "Visa endast NSFW-styrelser",
|
||||
"use_catalog": "använd katalog",
|
||||
"show_worksafe_boards_only": "Visa endast Worksafe-styrelser",
|
||||
"show_all_content": "Visa allt innehåll"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "బోర్డును నిలిపించు",
|
||||
"unblock_board": "బోర్డును అన్బ్లాక్ చేయండి",
|
||||
"unblock_all_confirm": "మీరు అన్బ్లాక్ చేయడానికి అన్ని బోర్డు చిరునామాలను మరియు వాడుకరి చిరునామాలను ఖాళీ చేస్తున్నారా?",
|
||||
"hidden": "దాగిన"
|
||||
"hidden": "దాగిన",
|
||||
"save_options": "ఎంచుకోండి సేవ్ చేయండి",
|
||||
"filters": "ఫిల్టర్లు",
|
||||
"image_size": "చిత్రం పరిమాణం",
|
||||
"show_op_comment": "ప్రస్తుత పోస్ట్ అనుమతించుకోవడానికి టిప్పణిని చూపించు",
|
||||
"hide_threads_without_images": "చిత్రాలు లేని థ్రెడ్స్ దాచు",
|
||||
"on": "చెయ్యబడింది",
|
||||
"off": "ఆఫ్",
|
||||
"small": "చిన్న",
|
||||
"large": "పెద్ద",
|
||||
"show_worksafe_content_only": "పనిమాడు బోర్డులను మాత్రమే చూపించు",
|
||||
"show_all_boards": "అన్ని బోర్డులను చూపించు",
|
||||
"show_nsfw_content_only": "పనిమాడు కంటెంట్ మాత్రమే చూపించు",
|
||||
"show_nsfw_boards_only": "పనిమాడు బోర్డులను మాత్రమే చూపించు",
|
||||
"use_catalog": "కాటలాగ్ ఉపయోగించు",
|
||||
"show_worksafe_boards_only": "పనిమాడు భద్రపరిచిన బోర్డులను మాత్రమే చూపించు",
|
||||
"show_all_content": "అన్ని కాంటెంట్ చూపించు"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "บล็อกบอร์ด",
|
||||
"unblock_board": "ยกเลิกการบล็อกบอร์ด",
|
||||
"unblock_all_confirm": "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกการบล็อกทุกที่อยู่ของบอร์ดและผู้ใช้?",
|
||||
"hidden": "ซ่อน"
|
||||
"hidden": "ซ่อน",
|
||||
"save_options": "บันทึกตัวเลือก",
|
||||
"filters": "ตัวกรอง",
|
||||
"image_size": "ขนาดภาพ",
|
||||
"show_op_comment": "แสดงความคิดเห็นของ OP",
|
||||
"hide_threads_without_images": "ซ่อนกระทู้ที่ไม่มีภาพ",
|
||||
"on": "เปิด",
|
||||
"off": "ปิด",
|
||||
"small": "เล็ก",
|
||||
"large": "ใหญ่",
|
||||
"show_worksafe_content_only": "แสดงกระดานทำงานที่ปลอดภัยเท่านั้น",
|
||||
"show_all_boards": "แสดงกระดานทั้งหมด",
|
||||
"show_nsfw_content_only": "แสดงเนื้อหา NSFW เท่านั้น",
|
||||
"show_nsfw_boards_only": "แสดงบอร์ด NSFW เท่านั้น",
|
||||
"use_catalog": "ใช้แคตตาล็อก",
|
||||
"show_worksafe_boards_only": "แสดงบอร์ด Worksafe เท่านั้น",
|
||||
"show_all_content": "แสดงเนื้อหาทั้งหมด"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Forumu engelle",
|
||||
"unblock_board": "Forumu engeli kaldır",
|
||||
"unblock_all_confirm": "Tüm forum adreslerini ve kullanıcı adreslerini engellemek istediğinizden emin misiniz?",
|
||||
"hidden": "gizli"
|
||||
"hidden": "gizli",
|
||||
"save_options": "Seçenekleri Kaydet",
|
||||
"filters": "filtreler",
|
||||
"image_size": "resim boyutu",
|
||||
"show_op_comment": "OP Yorumunu Göster",
|
||||
"hide_threads_without_images": "Resimsiz Konuları Gizle",
|
||||
"on": "açık",
|
||||
"off": "kapalı",
|
||||
"small": "küçük",
|
||||
"large": "büyük",
|
||||
"show_worksafe_content_only": "Sadece güvenli panoları göster",
|
||||
"show_all_boards": "Tüm panoları göster",
|
||||
"show_nsfw_content_only": "Sadece NSFW İçerik Göster",
|
||||
"show_nsfw_boards_only": "Sadece NSFW Panoları Göster",
|
||||
"use_catalog": "katalog kullan",
|
||||
"show_worksafe_boards_only": "Sadece Worksafe Panoları Göster",
|
||||
"show_all_content": "Tüm İçeriği Göster"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Заблокувати форум",
|
||||
"unblock_board": "Розблокувати форум",
|
||||
"unblock_all_confirm": "Ви впевнені, що хочете розблокувати всі адреси форуму та адреси користувачів?",
|
||||
"hidden": "прихований"
|
||||
"hidden": "прихований",
|
||||
"save_options": "Зберегти налаштування",
|
||||
"filters": "фільтри",
|
||||
"image_size": "розмір зображення",
|
||||
"show_op_comment": "Показати коментар OP",
|
||||
"hide_threads_without_images": "Приховати теми без зображень",
|
||||
"on": "увімкнено",
|
||||
"off": "вимкнено",
|
||||
"small": "малий",
|
||||
"large": "великий",
|
||||
"show_worksafe_content_only": "Показувати лише безпечні дошки",
|
||||
"show_all_boards": "Показати всі дошки",
|
||||
"show_nsfw_content_only": "Показувати лише NSFW вміст",
|
||||
"show_nsfw_boards_only": "Показувати лише NSFW дошки",
|
||||
"use_catalog": "використовуйте каталог",
|
||||
"show_worksafe_boards_only": "Показувати лише безпечні дошки",
|
||||
"show_all_content": "Показати весь вміст"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "فورم کو بلاک کریں",
|
||||
"unblock_board": "فورم کو انبلاک کریں",
|
||||
"unblock_all_confirm": "کیا آپ بورڈ کے تمام پتے اور صارف پتے کھولنے کے لیے یقینی ہیں؟",
|
||||
"hidden": "چھپا ہوا"
|
||||
"hidden": "چھپا ہوا",
|
||||
"save_options": "خیارات محفوظ کریں",
|
||||
"filters": "فلٹر",
|
||||
"image_size": "تصویر کا سائز",
|
||||
"show_op_comment": "OP تبصرہ دکھائیں",
|
||||
"hide_threads_without_images": "تصاویر کے بغیر دھاگے چھپائیں",
|
||||
"on": "چالو",
|
||||
"off": "بند",
|
||||
"small": "چھوٹا",
|
||||
"large": "بڑا",
|
||||
"show_worksafe_content_only": "صرف ورکسیف بورڈز دکھائیں",
|
||||
"show_all_boards": "تمام بورڈز دکھائیں",
|
||||
"show_nsfw_content_only": "صرف NSFW مواد دکھائیں",
|
||||
"show_nsfw_boards_only": "صرف NSFW بورڈز دکھائیں",
|
||||
"use_catalog": "استعمال کیٹالوگ",
|
||||
"show_worksafe_boards_only": "صرف کام سے بچائے گئے بورڈز دکھائیں",
|
||||
"show_all_content": "تمام مواد دکھائیں"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "Chặn diễn đàn",
|
||||
"unblock_board": "Bỏ chặn diễn đàn",
|
||||
"unblock_all_confirm": "Bạn có chắc chắn muốn bỏ chặn tất cả các địa chỉ diễn đàn và địa chỉ người dùng không?",
|
||||
"hidden": "ẩn"
|
||||
"hidden": "ẩn",
|
||||
"save_options": "Lưu tùy chọn",
|
||||
"filters": "bộ lọc",
|
||||
"image_size": "kích thước ảnh",
|
||||
"show_op_comment": "Hiển thị Bình luận của OP",
|
||||
"hide_threads_without_images": "Ẩn các chủ đề không có hình ảnh",
|
||||
"on": "bật",
|
||||
"off": "tắt",
|
||||
"small": "nhỏ",
|
||||
"large": "lớn",
|
||||
"show_worksafe_content_only": "Chỉ hiển thị bảng an toàn",
|
||||
"show_all_boards": "Hiển thị tất cả các bảng",
|
||||
"show_nsfw_content_only": "Chỉ hiển thị nội dung NSFW",
|
||||
"show_nsfw_boards_only": "Chỉ hiển thị bảng NSFW",
|
||||
"use_catalog": "sử dụng danh mục",
|
||||
"show_worksafe_boards_only": "Chỉ hiển thị bảng Worksafe",
|
||||
"show_all_content": "Hiển thị tất cả nội dung"
|
||||
}
|
||||
@@ -177,5 +177,21 @@
|
||||
"block_board": "封锁论坛",
|
||||
"unblock_board": "解除封锁论坛",
|
||||
"unblock_all_confirm": "您确定要解锁所有论坛地址和用户地址吗?",
|
||||
"hidden": "隐藏"
|
||||
"hidden": "隐藏",
|
||||
"save_options": "保存选项",
|
||||
"filters": "过滤器",
|
||||
"image_size": "图像尺寸",
|
||||
"show_op_comment": "显示楼主评论",
|
||||
"hide_threads_without_images": "隐藏没有图片的主题",
|
||||
"on": "开启",
|
||||
"off": "关闭",
|
||||
"small": "小",
|
||||
"large": "大",
|
||||
"show_worksafe_content_only": "仅显示安全工作板",
|
||||
"show_all_boards": "显示所有板块",
|
||||
"show_nsfw_content_only": "仅显示NSFW内容",
|
||||
"show_nsfw_boards_only": "仅显示NSFW板块",
|
||||
"use_catalog": "使用目录",
|
||||
"show_worksafe_boards_only": "仅显示安全工作板",
|
||||
"show_all_content": "显示所有内容"
|
||||
}
|
||||
@@ -93,7 +93,7 @@ const SortOptions = () => {
|
||||
return (
|
||||
<>
|
||||
<span className='capitalize'>{t('sort_by')}</span>:
|
||||
<select value={sortType} onChange={handleSortChange}>
|
||||
<select className='capitalize' value={sortType} onChange={handleSortChange}>
|
||||
<option value='active'>{t('bump_order')}</option>
|
||||
<option value='new'>{t('creation_date')}</option>
|
||||
</select>
|
||||
@@ -102,28 +102,30 @@ const SortOptions = () => {
|
||||
};
|
||||
|
||||
const ImageSizeOptions = () => {
|
||||
const { t } = useTranslation();
|
||||
const { imageSize, setImageSize } = useCatalogStyleStore();
|
||||
|
||||
return (
|
||||
<>
|
||||
<span>Image Size:</span>
|
||||
<select value={imageSize} onChange={(e) => setImageSize(e.target.value as 'Small' | 'Large')}>
|
||||
<option value='Small'>Small</option>
|
||||
<option value='Large'>Large</option>
|
||||
<span className='capitalize'>{t('image_size')}:</span>
|
||||
<select className='capitalize' value={imageSize} onChange={(e) => setImageSize(e.target.value as 'Small' | 'Large')}>
|
||||
<option value='Small'>{t('small')}</option>
|
||||
<option value='Large'>{t('large')}</option>
|
||||
</select>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const ShowOPCommentOption = () => {
|
||||
const { t } = useTranslation();
|
||||
const { showOPComment, setShowOPComment } = useCatalogStyleStore();
|
||||
|
||||
return (
|
||||
<>
|
||||
<span>Show OP Comment:</span>
|
||||
<select value={showOPComment ? 'On' : 'Off'} onChange={(e) => setShowOPComment(e.target.value === 'On')}>
|
||||
<option value='Off'>Off</option>
|
||||
<option value='On'>On</option>
|
||||
<span className='capitalize'>{t('show_op_comment')}:</span>
|
||||
<select className='capitalize' value={showOPComment ? 'On' : 'Off'} onChange={(e) => setShowOPComment(e.target.value === 'On')}>
|
||||
<option value='Off'>{t('off')}</option>
|
||||
<option value='On'>{t('on')}</option>
|
||||
</select>
|
||||
</>
|
||||
);
|
||||
@@ -159,7 +161,7 @@ export const TimeFilter = ({ isInAllView, isInCatalogView, isInSubscriptionsView
|
||||
) : (
|
||||
<> </>
|
||||
)}
|
||||
<select onChange={changeTimeFilter} className={[styles.feedName, styles.menuItem].join(' ')} value={selectedTimeFilterName}>
|
||||
<select onChange={changeTimeFilter} className={[styles.feedName, styles.menuItem, 'capitalize'].join(' ')} value={selectedTimeFilterName}>
|
||||
{timeFilterNames.map((timeFilterName, i) => (
|
||||
<option key={timeFilterName + i} value={timeFilterName}>
|
||||
{timeFilterName}
|
||||
|
||||
@@ -34,8 +34,10 @@ export const CatalogPostMedia = ({ commentMediaInfo, isOutOfFeed, linkWidth, lin
|
||||
const handleError = () => setHasError(true);
|
||||
const loadingStyle = { display: isLoaded ? 'block' : 'none' };
|
||||
|
||||
const { imageSize } = useCatalogStyleStore();
|
||||
|
||||
let displayWidth, displayHeight;
|
||||
const maxThumbnailSize = 150;
|
||||
const maxThumbnailSize = imageSize === 'Large' ? 250 : 150;
|
||||
|
||||
if (linkWidth && linkHeight) {
|
||||
let scale = Math.min(1, maxThumbnailSize / Math.max(linkWidth, linkHeight));
|
||||
@@ -51,7 +53,6 @@ export const CatalogPostMedia = ({ commentMediaInfo, isOutOfFeed, linkWidth, lin
|
||||
displayHeight = 'unset';
|
||||
}
|
||||
|
||||
const { imageSize } = useCatalogStyleStore();
|
||||
const maxWidth = imageSize === 'Large' ? '250px' : '150px';
|
||||
const maxHeight = imageSize === 'Large' ? '250px' : '150px';
|
||||
|
||||
|
||||
@@ -95,7 +95,6 @@
|
||||
}
|
||||
|
||||
.replyCheckbox {
|
||||
padding-left: 5px;
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { autoUpdate, flip, FloatingFocusManager, offset, shift, useClick, useDismiss, useFloating, useId, useInteractions, useRole } from '@floating-ui/react';
|
||||
import { PublishCommentEditOptions, useComment, useEditedComment, usePublishCommentEdit } from '@plebbit/plebbit-react-hooks';
|
||||
import { Comment, PublishCommentEditOptions, usePublishCommentEdit } from '@plebbit/plebbit-react-hooks';
|
||||
import styles from './edit-menu.module.css';
|
||||
import { alertChallengeVerificationFailed } from '../../lib/utils/challenge-utils';
|
||||
import useChallengesStore from '../../stores/use-challenges-store';
|
||||
@@ -11,25 +11,17 @@ import useIsMobile from '../../hooks/use-is-mobile';
|
||||
const { addChallenge } = useChallengesStore.getState();
|
||||
|
||||
type EditMenuProps = {
|
||||
commentCid: string;
|
||||
isAccountMod?: boolean;
|
||||
isAccountCommentAuthor?: boolean;
|
||||
isCommentAuthorMod?: boolean;
|
||||
post: Comment;
|
||||
};
|
||||
|
||||
const EditMenu = ({ commentCid, isAccountMod, isAccountCommentAuthor, isCommentAuthorMod }: EditMenuProps) => {
|
||||
const EditMenu = ({ isAccountMod, isAccountCommentAuthor, isCommentAuthorMod, post }: EditMenuProps) => {
|
||||
const { t } = useTranslation();
|
||||
const isMobile = useIsMobile();
|
||||
let post: any;
|
||||
const comment = useComment({ commentCid });
|
||||
const { editedComment } = useEditedComment({ comment });
|
||||
if (editedComment) {
|
||||
post = editedComment;
|
||||
} else if (comment) {
|
||||
post = comment;
|
||||
}
|
||||
|
||||
const { banExpiresAt, content, deleted, locked, parentCid, pinned, removed, spoiler, subplebbitAddress } = post || {};
|
||||
const { banExpiresAt, cid, content, deleted, locked, parentCid, pinned, removed, spoiler, subplebbitAddress } = post || {};
|
||||
const isReply = parentCid;
|
||||
|
||||
const [isEditMenuOpen, setIsEditMenuOpen] = useState(false);
|
||||
@@ -44,7 +36,7 @@ const EditMenu = ({ commentCid, isAccountMod, isAccountCommentAuthor, isCommentA
|
||||
|
||||
const defaultPublishEditOptions: PublishCommentEditOptions = {
|
||||
commentAuthor: isAccountMod && !isAccountCommentAuthor && banExpiresAt !== undefined ? { banExpiresAt } : undefined,
|
||||
commentCid,
|
||||
commentCid: cid,
|
||||
content: isAccountCommentAuthor ? content : undefined,
|
||||
deleted: isAccountCommentAuthor ? deleted : undefined,
|
||||
locked: isAccountMod ? locked : undefined,
|
||||
@@ -125,13 +117,8 @@ const EditMenu = ({ commentCid, isAccountMod, isAccountCommentAuthor, isCommentA
|
||||
|
||||
return (
|
||||
<>
|
||||
<span className={`${styles.checkbox} ${isReply && styles.replyCheckbox}`} ref={refs.setReference} {...(commentCid && getReferenceProps())}>
|
||||
<input
|
||||
type='checkbox'
|
||||
onChange={() => commentCid && setIsEditMenuOpen(!isEditMenuOpen)}
|
||||
checked={isEditMenuOpen}
|
||||
disabled={!isAccountCommentAuthor && !isAccountMod}
|
||||
/>
|
||||
<span className={`${styles.checkbox} ${isReply && styles.replyCheckbox}`} ref={refs.setReference} {...(cid && getReferenceProps())}>
|
||||
<input type='checkbox' onChange={() => cid && setIsEditMenuOpen(!isEditMenuOpen)} checked={isEditMenuOpen} disabled={!isAccountCommentAuthor && !isAccountMod} />
|
||||
</span>
|
||||
{isEditMenuOpen && (isAccountCommentAuthor || isAccountMod) && (
|
||||
<FloatingFocusManager context={context} modal={false}>
|
||||
@@ -143,14 +130,14 @@ const EditMenu = ({ commentCid, isAccountMod, isAccountCommentAuthor, isCommentA
|
||||
<label>
|
||||
[
|
||||
<input onChange={onCheckbox} checked={publishCommentEditOptions.deleted ?? false} type='checkbox' id='deleted' />
|
||||
{_.capitalize(t('delete'))}? ]
|
||||
{_.capitalize(t('delete'))}?]
|
||||
</label>
|
||||
</div>
|
||||
<div className={styles.menuItem}>
|
||||
<label>
|
||||
[
|
||||
<input type='checkbox' onChange={() => setIsContentEditorOpen(!isContentEditorOpen)} checked={isContentEditorOpen} />
|
||||
{_.capitalize(t('edit'))}? ]
|
||||
{_.capitalize(t('edit'))}?]
|
||||
</label>
|
||||
</div>
|
||||
{isContentEditorOpen && (
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { Link, useLocation, useParams } from 'react-router-dom';
|
||||
import { Comment, useAccount, useComment } from '@plebbit/plebbit-react-hooks';
|
||||
import { Comment, useAccount, useComment, useEditedComment } from '@plebbit/plebbit-react-hooks';
|
||||
import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js';
|
||||
import styles from '../../views/post/post.module.css';
|
||||
import { getCommentMediaInfo, getDisplayMediaInfoType, getHasThumbnail } from '../../lib/utils/media-utils';
|
||||
@@ -50,7 +50,7 @@ const PostInfo = ({ openReplyModal, post, roles, isHidden }: PostProps) => {
|
||||
|
||||
return (
|
||||
<div className={styles.postInfo}>
|
||||
{!isHidden && <EditMenu commentCid={cid} isAccountCommentAuthor={isAccountCommentAuthor} isAccountMod={isAccountMod} isCommentAuthorMod={isCommentAuthorMod} />}
|
||||
{!isHidden && <EditMenu isAccountCommentAuthor={isAccountCommentAuthor} isAccountMod={isAccountMod} isCommentAuthorMod={isCommentAuthorMod} post={post} />}
|
||||
{title && <span className={styles.subject}>{displayTitle} </span>}
|
||||
<span className={styles.nameBlock}>
|
||||
<span className={`${styles.name} ${(isDescription || isRules || authorRole) && styles.capcodeMod}`}>
|
||||
@@ -185,7 +185,7 @@ const PostMessage = ({ post }: PostProps) => {
|
||||
|
||||
return (
|
||||
<blockquote className={styles.postMessage}>
|
||||
{isReply && isReplyingToReply && <ReplyQuotePreview isQuotelinkReply={true} quotelinkReply={quotelinkReply} />}
|
||||
{isReply && !(removed || deleted) && isReplyingToReply && <ReplyQuotePreview isQuotelinkReply={true} quotelinkReply={quotelinkReply} />}
|
||||
{removed ? (
|
||||
<span className={styles.removedContent}>({t('this_post_was_removed')})</span>
|
||||
) : deleted ? (
|
||||
@@ -230,17 +230,24 @@ const PostMessage = ({ post }: PostProps) => {
|
||||
};
|
||||
|
||||
const Reply = ({ openReplyModal, reply, roles }: PostProps) => {
|
||||
const { cid, subplebbitAddress } = reply || {};
|
||||
let post = reply;
|
||||
// handle pending mod or author edit
|
||||
const { editedComment } = useEditedComment({ comment: reply });
|
||||
if (editedComment) {
|
||||
post = editedComment;
|
||||
}
|
||||
|
||||
const { cid, content, link, subplebbitAddress } = post || {};
|
||||
const isRouteLinkToReply = useLocation().pathname.startsWith(`/p/${subplebbitAddress}/c/${cid}`);
|
||||
const { hidden } = useHide({ cid });
|
||||
|
||||
return (
|
||||
<div className={styles.replyDesktop}>
|
||||
<div className={styles.sideArrows}>{'>>'}</div>
|
||||
<div className={`${styles.reply} ${isRouteLinkToReply && styles.highlight} ${hidden && styles.postDesktopHidden}`} id={reply?.cid}>
|
||||
<PostInfo openReplyModal={openReplyModal} post={reply} roles={roles} />
|
||||
{reply.link && !hidden && isValidURL(reply.link) && <PostMedia post={reply} />}
|
||||
{reply.content && !hidden && <PostMessage post={reply} />}
|
||||
<div className={`${styles.reply} ${isRouteLinkToReply && styles.highlight} ${hidden && styles.postDesktopHidden}`} id={cid}>
|
||||
<PostInfo openReplyModal={openReplyModal} post={post} roles={roles} />
|
||||
{link && !hidden && isValidURL(link) && <PostMedia post={post} />}
|
||||
{content && !hidden && <PostMessage post={post} />}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.postMenu {
|
||||
font-size: 16px;
|
||||
line-height: 2.5em;
|
||||
|
||||
@@ -154,7 +154,9 @@ const PostMenuMobile = ({ post }: { post: Comment }) => {
|
||||
document.body,
|
||||
)}
|
||||
{(isAccountMod || isAccountCommentAuthor) && (
|
||||
<EditMenu commentCid={cid} isAccountCommentAuthor={isAccountCommentAuthor} isAccountMod={isAccountMod} isCommentAuthorMod={isCommentAuthorMod} />
|
||||
<span className={styles.checkbox}>
|
||||
<EditMenu isAccountCommentAuthor={isAccountCommentAuthor} isAccountMod={isAccountMod} isCommentAuthorMod={isCommentAuthorMod} post={post} />
|
||||
</span>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { Link, useLocation, useParams } from 'react-router-dom';
|
||||
import { Comment, useAccount, useComment } from '@plebbit/plebbit-react-hooks';
|
||||
import { Comment, useAccount, useComment, useEditedComment } from '@plebbit/plebbit-react-hooks';
|
||||
import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js';
|
||||
import styles from '../../views/post/post.module.css';
|
||||
import { getCommentMediaInfo, getHasThumbnail } from '../../lib/utils/media-utils';
|
||||
@@ -142,7 +142,7 @@ const PostMessageMobile = ({ post }: PostProps) => {
|
||||
return (
|
||||
content && (
|
||||
<blockquote className={`${styles.postMessage} ${!isReply && styles.clampLines}`}>
|
||||
{isReply && isReplyingToReply && <ReplyQuotePreview isQuotelinkReply={true} quotelinkReply={quotelinkReply} />}
|
||||
{isReply && !(removed || deleted) && isReplyingToReply && <ReplyQuotePreview isQuotelinkReply={true} quotelinkReply={quotelinkReply} />}
|
||||
{removed ? (
|
||||
<span className={styles.removedContent}>({t('this_post_was_removed')})</span>
|
||||
) : deleted ? (
|
||||
@@ -188,16 +188,22 @@ const PostMessageMobile = ({ post }: PostProps) => {
|
||||
};
|
||||
|
||||
const Reply = ({ openReplyModal, reply, roles }: PostProps) => {
|
||||
const { subplebbitAddress, cid } = reply || {};
|
||||
let post = reply;
|
||||
// handle pending mod or author edit
|
||||
const { editedComment } = useEditedComment({ comment: reply });
|
||||
if (editedComment) {
|
||||
post = editedComment;
|
||||
}
|
||||
const { cid, content, subplebbitAddress } = post || {};
|
||||
const isRouteLinkToReply = useLocation().pathname.startsWith(`/p/${subplebbitAddress}/c/${cid}`);
|
||||
const { hidden } = useHide({ cid });
|
||||
|
||||
return (
|
||||
<div className={styles.replyMobile}>
|
||||
<div className={styles.reply}>
|
||||
<div className={`${styles.replyContainer} ${isRouteLinkToReply && styles.highlight}`} id={reply?.cid}>
|
||||
<PostInfoAndMedia openReplyModal={openReplyModal} post={reply} roles={roles} />
|
||||
{reply.content && !hidden && <PostMessageMobile post={reply} />}
|
||||
<div className={`${styles.replyContainer} ${isRouteLinkToReply && styles.highlight}`} id={cid}>
|
||||
<PostInfoAndMedia openReplyModal={openReplyModal} post={post} roles={roles} />
|
||||
{content && !hidden && <PostMessageMobile post={post} />}
|
||||
<ReplyBacklinks post={reply} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { RefObject, useRef, useState } from 'react';
|
||||
import { setAccount, useAccount, usePlebbitRpcSettings } from '@plebbit/plebbit-react-hooks';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import styles from './plebbit-options.module.css';
|
||||
|
||||
interface SettingsProps {
|
||||
@@ -134,6 +135,7 @@ const NodeDataPathSettings = ({ nodeDataPathRef }: SettingsProps) => {
|
||||
};
|
||||
|
||||
const PlebbitOptions = () => {
|
||||
const { t } = useTranslation();
|
||||
const account = useAccount();
|
||||
const { plebbitOptions } = account || {};
|
||||
|
||||
@@ -204,7 +206,7 @@ const PlebbitOptions = () => {
|
||||
return (
|
||||
<div className={styles.content}>
|
||||
<button className={styles.saveOptions} onClick={handleSave}>
|
||||
save options
|
||||
{t('save_options')}
|
||||
</button>
|
||||
<div className={styles.category}>
|
||||
<span className={styles.categoryTitle}>IPFS gateways:</span>
|
||||
|
||||
+38
-27
@@ -4,60 +4,71 @@ import { isAllView, isSubscriptionsView } from '../lib/utils/view-utils';
|
||||
import useThemeStore from '../stores/use-theme-store';
|
||||
import useInitialTheme from './use-initial-theme';
|
||||
|
||||
const themeClasses = ['yotsuba', 'yotsuba-b', 'futaba', 'burichan', 'tomorrow', 'photon'];
|
||||
|
||||
const updateThemeClass = (newTheme: string) => {
|
||||
document.body.classList.remove(...themeClasses);
|
||||
if (newTheme) {
|
||||
document.body.classList.add(newTheme);
|
||||
}
|
||||
};
|
||||
|
||||
const useTheme = (): [string, (theme: string) => void] => {
|
||||
const location = useLocation();
|
||||
const params = useParams();
|
||||
const setThemeStore = useThemeStore((state) => state.setTheme);
|
||||
const getTheme = useThemeStore((state) => state.getTheme);
|
||||
const loadThemes = useThemeStore((state) => state.loadThemes);
|
||||
|
||||
const initialTheme = useInitialTheme();
|
||||
const [theme, setLocalTheme] = useState<string>(() => initialTheme);
|
||||
const [themesLoaded, setThemesLoaded] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const load = async () => {
|
||||
const loadAndApplyThemes = async () => {
|
||||
await loadThemes();
|
||||
setThemesLoaded(true);
|
||||
};
|
||||
load();
|
||||
|
||||
loadAndApplyThemes();
|
||||
}, [loadThemes]);
|
||||
|
||||
const initialTheme = useInitialTheme();
|
||||
|
||||
const [theme, setLocalTheme] = useState(initialTheme);
|
||||
|
||||
useEffect(() => {
|
||||
const previousTheme = document.body.className;
|
||||
document.body.classList.add(initialTheme);
|
||||
return () => {
|
||||
document.body.classList.remove(initialTheme);
|
||||
if (previousTheme) {
|
||||
document.body.classList.add(previousTheme);
|
||||
}
|
||||
};
|
||||
}, [initialTheme]);
|
||||
if (!themesLoaded) return;
|
||||
|
||||
useEffect(() => {
|
||||
if (themesLoaded) {
|
||||
document.body.classList.remove('yotsuba', 'yotsuba-b', 'futaba', 'burichan', 'tomorrow', 'photon');
|
||||
document.body.classList.add(initialTheme);
|
||||
setLocalTheme(initialTheme);
|
||||
const subplebbitAddress = params?.subplebbitAddress;
|
||||
const isInAllView = isAllView(location.pathname, params);
|
||||
const isInSubscriptionsView = isSubscriptionsView(location.pathname, params);
|
||||
|
||||
let storedTheme = null;
|
||||
if (subplebbitAddress) {
|
||||
storedTheme = getTheme(subplebbitAddress);
|
||||
} else if (isInAllView) {
|
||||
storedTheme = getTheme('all');
|
||||
} else if (isInSubscriptionsView) {
|
||||
storedTheme = getTheme('subscriptions');
|
||||
}
|
||||
}, [initialTheme, themesLoaded]);
|
||||
|
||||
const setSubplebbitTheme = (newTheme: string) => {
|
||||
const themeToSet = storedTheme || initialTheme;
|
||||
setLocalTheme(themeToSet);
|
||||
updateThemeClass(themeToSet);
|
||||
}, [initialTheme, location.pathname, params, getTheme, themesLoaded]);
|
||||
|
||||
const setSubplebbitTheme = async (newTheme: string) => {
|
||||
const subplebbitAddress = params?.subplebbitAddress;
|
||||
const isInAllView = isAllView(location.pathname, params);
|
||||
const isInSubscriptionsView = isSubscriptionsView(location.pathname, params);
|
||||
|
||||
if (subplebbitAddress) {
|
||||
setThemeStore(subplebbitAddress, newTheme);
|
||||
await setThemeStore(subplebbitAddress, newTheme);
|
||||
} else if (isInAllView) {
|
||||
setThemeStore('all', newTheme);
|
||||
await setThemeStore('all', newTheme);
|
||||
} else if (isInSubscriptionsView) {
|
||||
setThemeStore('subscriptions', newTheme);
|
||||
await setThemeStore('subscriptions', newTheme);
|
||||
}
|
||||
|
||||
setLocalTheme(newTheme);
|
||||
document.body.classList.remove('yotsuba', 'yotsuba-b', 'futaba', 'burichan', 'tomorrow', 'photon');
|
||||
document.body.classList.add(newTheme);
|
||||
updateThemeClass(newTheme);
|
||||
};
|
||||
|
||||
return [theme, setSubplebbitTheme];
|
||||
|
||||
@@ -5,7 +5,7 @@ interface ThemeState {
|
||||
themes: Record<string, string>;
|
||||
setTheme: (subplebbitAddress: string, theme: string) => void;
|
||||
getTheme: (subplebbitAddress: string) => string | null;
|
||||
loadThemes: () => void;
|
||||
loadThemes: () => Promise<void>;
|
||||
}
|
||||
|
||||
const themeStore = localForageLru.createInstance({
|
||||
@@ -35,6 +35,7 @@ const useThemeStore = create<ThemeState>((set: StoreApi<ThemeState>['setState'],
|
||||
},
|
||||
}));
|
||||
|
||||
// Load themes on store initialization
|
||||
useThemeStore.getState().loadThemes();
|
||||
|
||||
export default useThemeStore;
|
||||
|
||||
@@ -424,6 +424,9 @@
|
||||
--body-font-family: times new roman, serif;
|
||||
--body-font-size: 16px;
|
||||
|
||||
/* board banner */
|
||||
--banner-image-border: none;
|
||||
|
||||
/* board title */
|
||||
--board-title-font-size: 32px;
|
||||
--board-address-font-size: 10pt;
|
||||
@@ -781,6 +784,9 @@
|
||||
--body-font-family: arial, helvetica, sans-serif;
|
||||
--body-font-size: 13px;
|
||||
|
||||
/* board banner */
|
||||
--banner-image-border: none;
|
||||
|
||||
/* board title */
|
||||
--board-title-font-size: 28px;
|
||||
--board-title-font-family: Tahoma, sans-serif;
|
||||
@@ -990,6 +996,9 @@
|
||||
--body-font-family: arial, helvetica, sans-serif;
|
||||
--body-font-size: 13px;
|
||||
|
||||
/* board banner */
|
||||
--banner-image-border: none;
|
||||
|
||||
/* board title */
|
||||
--board-title-font-size: 28px;
|
||||
--board-title-font-family: Tahoma, sans-serif;
|
||||
|
||||
@@ -23,20 +23,20 @@ const FiltersModal = ({ closeModal }: { closeModal: () => void }) => {
|
||||
</div>
|
||||
<div className={styles.filters}>
|
||||
{isInCatalogView && (
|
||||
<label className={styles.paddingBottom}>
|
||||
<input type='checkbox' checked={!showTextOnlyThreads} onChange={(e) => setShowTextOnlyThreads(!e.target.checked)} />
|
||||
Hide Text-Only Posts
|
||||
<label className={`${styles.paddingBottom} capitalize`}>
|
||||
<input type='checkbox' checked={showTextOnlyThreads} onChange={(e) => setShowTextOnlyThreads(e.target.checked)} />
|
||||
{t('hide_threads_without_images')}
|
||||
</label>
|
||||
)}
|
||||
{isInAllView && (
|
||||
<div className={styles.nsfwLabels}>
|
||||
<div className={styles.categoryTitle}>NSFW Boards</div>
|
||||
<label>
|
||||
<input type='checkbox' checked={!showGoreBoards} onChange={(e) => setShowGoreBoards(!e.target.checked)} />
|
||||
<input type='checkbox' checked={showGoreBoards} onChange={(e) => setShowGoreBoards(e.target.checked)} />
|
||||
Hide Gore Boards
|
||||
</label>
|
||||
<label>
|
||||
<input type='checkbox' checked={!showAdultBoards} onChange={(e) => setShowAdultBoards(!e.target.checked)} />
|
||||
<input type='checkbox' checked={showAdultBoards} onChange={(e) => setShowAdultBoards(e.target.checked)} />
|
||||
Hide Adult Boards
|
||||
</label>
|
||||
</div>
|
||||
@@ -48,6 +48,7 @@ const FiltersModal = ({ closeModal }: { closeModal: () => void }) => {
|
||||
};
|
||||
|
||||
const CatalogFilters = () => {
|
||||
const { t } = useTranslation();
|
||||
const [showModal, setShowModal] = useState(false);
|
||||
|
||||
const closeModal = () => {
|
||||
@@ -57,7 +58,7 @@ const CatalogFilters = () => {
|
||||
return (
|
||||
<>
|
||||
<span className='button' onClick={() => setShowModal(true)}>
|
||||
Filters
|
||||
{t('filters')}
|
||||
</span>
|
||||
{showModal && <FiltersModal closeModal={closeModal} />}
|
||||
</>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Subplebbit, useAccount, useAccountSubplebbits } from '@plebbit/plebbit-react-hooks';
|
||||
@@ -7,138 +6,7 @@ import useHomeFiltersStore from '../../../stores/use-home-filters-store';
|
||||
import { useMultisubMetadata } from '../../../hooks/use-default-subplebbits';
|
||||
import styles from '../home.module.css';
|
||||
import { nsfwTags } from '../home';
|
||||
|
||||
const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
const { t } = useTranslation();
|
||||
const [showFilterModal, setShowFilterModal] = useState(false);
|
||||
const modalRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const {
|
||||
showNsfwBoardsOnly,
|
||||
setShowNsfwBoardsOnly,
|
||||
showWorksafeBoardsOnly,
|
||||
setShowWorksafeBoardsOnly,
|
||||
useCatalog,
|
||||
setUseCatalog,
|
||||
showWorksafeContentOnly,
|
||||
setShowWorksafeContentOnly,
|
||||
showNsfwContentOnly,
|
||||
setShowNsfwContentOnly,
|
||||
} = useHomeFiltersStore();
|
||||
|
||||
const handleClickOutside = useCallback(
|
||||
(event: MouseEvent) => {
|
||||
if (modalRef.current && !modalRef.current.contains(event.target as Node)) {
|
||||
setShowFilterModal(false);
|
||||
}
|
||||
},
|
||||
[modalRef, setShowFilterModal],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
document.addEventListener('mousedown', handleClickOutside);
|
||||
return () => {
|
||||
document.removeEventListener('mousedown', handleClickOutside);
|
||||
};
|
||||
}, [handleClickOutside]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<span ref={modalRef} onClick={() => setShowFilterModal(true)}>
|
||||
{isBoardsBoxModal ? t('filter') : t('options')} ▼
|
||||
</span>
|
||||
{showFilterModal && (
|
||||
<div ref={modalRef} className={styles.filterModal}>
|
||||
{isBoardsBoxModal ? (
|
||||
<>
|
||||
<div
|
||||
className={`${styles.option} ${!showNsfwBoardsOnly && !showWorksafeBoardsOnly && styles.selected}`}
|
||||
onClick={() => {
|
||||
setShowNsfwBoardsOnly(false);
|
||||
setShowWorksafeBoardsOnly(false);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show All Boards
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${showNsfwBoardsOnly && styles.selected}`}
|
||||
onClick={() => {
|
||||
if (showWorksafeBoardsOnly) {
|
||||
setShowWorksafeBoardsOnly(false);
|
||||
}
|
||||
setShowNsfwBoardsOnly(!showNsfwBoardsOnly);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show NSFW Boards Only
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${showWorksafeBoardsOnly && styles.selected}`}
|
||||
onClick={() => {
|
||||
if (showNsfwBoardsOnly) {
|
||||
setShowNsfwBoardsOnly(false);
|
||||
}
|
||||
setShowWorksafeBoardsOnly(!showWorksafeBoardsOnly);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show Worksafe Boards Only
|
||||
</div>
|
||||
<div className={styles.separator} />
|
||||
<div
|
||||
className={`${styles.option} ${useCatalog && styles.selected}`}
|
||||
onClick={() => {
|
||||
setUseCatalog(!useCatalog);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Use Catalog
|
||||
</div>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<div
|
||||
className={`${styles.option} ${showWorksafeContentOnly && styles.selected}`}
|
||||
onClick={() => {
|
||||
if (showNsfwContentOnly) {
|
||||
setShowNsfwContentOnly(false);
|
||||
}
|
||||
setShowWorksafeContentOnly(!showWorksafeContentOnly);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show Worksafe Content Only
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${showNsfwContentOnly && styles.selected}`}
|
||||
onClick={() => {
|
||||
if (showWorksafeContentOnly) {
|
||||
setShowWorksafeContentOnly(false);
|
||||
}
|
||||
setShowNsfwContentOnly(!showNsfwContentOnly);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show NSFW Content Only
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${!showWorksafeContentOnly && !showNsfwContentOnly && styles.selected}`}
|
||||
onClick={() => {
|
||||
setShowWorksafeContentOnly(false);
|
||||
setShowNsfwContentOnly(false);
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show All Content
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
import BoxModal from '../box-modal';
|
||||
|
||||
const Board = ({ isOffline, subplebbit }: { isOffline: boolean; subplebbit: Subplebbit }) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -54,7 +54,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show All Boards
|
||||
{t('show_all_boards')}
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${showNsfwBoardsOnly && styles.selected}`}
|
||||
@@ -66,7 +66,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show NSFW Boards Only
|
||||
{t('show_nsfw_boards_only')}
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${showWorksafeBoardsOnly && styles.selected}`}
|
||||
@@ -78,7 +78,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show Worksafe Boards Only
|
||||
{t('show_worksafe_boards_only')}
|
||||
</div>
|
||||
<div className={styles.separator} />
|
||||
<div
|
||||
@@ -88,7 +88,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Use Catalog
|
||||
{t('use_catalog')}
|
||||
</div>
|
||||
</>
|
||||
) : (
|
||||
@@ -103,7 +103,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show Worksafe Content Only
|
||||
{t('show_worksafe_content_only')}
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${showNsfwContentOnly && styles.selected}`}
|
||||
@@ -115,7 +115,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show NSFW Content Only
|
||||
{t('show_nsfw_content_only')}
|
||||
</div>
|
||||
<div
|
||||
className={`${styles.option} ${!showWorksafeContentOnly && !showNsfwContentOnly && styles.selected}`}
|
||||
@@ -125,7 +125,7 @@ const BoxModal = ({ isBoardsBoxModal }: { isBoardsBoxModal: boolean }) => {
|
||||
setShowFilterModal(false);
|
||||
}}
|
||||
>
|
||||
Show All Content
|
||||
{t('show_all_content')}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
.boxContent img {
|
||||
display: block;
|
||||
margin: auto;
|
||||
max-height: 500px;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
.backToBoard {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useState } from 'react';
|
||||
import { Link, useParams } from 'react-router-dom';
|
||||
import { Link, useLocation } from 'react-router-dom';
|
||||
import { HomeLogo } from '../home';
|
||||
import styles from './not-found.module.css';
|
||||
import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js';
|
||||
import { useSubplebbit } from '@plebbit/plebbit-react-hooks';
|
||||
|
||||
const totalNotFoundImages = 2;
|
||||
|
||||
@@ -16,8 +16,10 @@ const NotFoundImage = () => {
|
||||
};
|
||||
|
||||
const NotFound = () => {
|
||||
const { subplebbitAddress } = useParams();
|
||||
const isValidSubplebbitAddress = !subplebbitAddress || subplebbitAddress.includes('.') || /^12D3K[a-zA-Z0-9]{44}$/.test(subplebbitAddress);
|
||||
const location = useLocation();
|
||||
const subplebbitAddress = location.pathname.startsWith('/p/') ? location.pathname.split('/')[2] : '';
|
||||
const subplebbit = useSubplebbit({ subplebbitAddress });
|
||||
const { address, shortAddress } = subplebbit || {};
|
||||
|
||||
return (
|
||||
<div className={styles.wrapper}>
|
||||
@@ -30,11 +32,11 @@ const NotFound = () => {
|
||||
</div>
|
||||
<div className={styles.boxContent}>
|
||||
<NotFoundImage />
|
||||
{subplebbitAddress && isValidSubplebbitAddress && (
|
||||
{address && (
|
||||
<>
|
||||
<br />
|
||||
<div className={styles.backToBoard}>
|
||||
[<Link to={`/p/${subplebbitAddress}`}>Back to p/{Plebbit.getShortAddress(subplebbitAddress)}</Link>]
|
||||
[<Link to={`/p/${subplebbitAddress}`}>Back to p/{shortAddress}</Link>]
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
||||
+10
-8
@@ -28,13 +28,21 @@ export const Post = ({ post, showAllReplies = false, showReplies = true, openRep
|
||||
const subplebbit = useSubplebbit({ subplebbitAddress: post?.subplebbitAddress });
|
||||
const isMobile = useIsMobile();
|
||||
|
||||
let comment = post;
|
||||
|
||||
// handle pending mod or author edit
|
||||
const { editedComment } = useEditedComment({ comment });
|
||||
if (editedComment) {
|
||||
comment = editedComment;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={styles.thread}>
|
||||
<div className={styles.postContainer}>
|
||||
{isMobile ? (
|
||||
<PostMobile post={post} roles={subplebbit?.roles} showAllReplies={showAllReplies} showReplies={showReplies} openReplyModal={openReplyModal} />
|
||||
<PostMobile post={comment} roles={subplebbit?.roles} showAllReplies={showAllReplies} showReplies={showReplies} openReplyModal={openReplyModal} />
|
||||
) : (
|
||||
<PostDesktop post={post} roles={subplebbit?.roles} showAllReplies={showAllReplies} showReplies={showReplies} openReplyModal={openReplyModal} />
|
||||
<PostDesktop post={comment} roles={subplebbit?.roles} showAllReplies={showAllReplies} showReplies={showReplies} openReplyModal={openReplyModal} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
@@ -66,12 +74,6 @@ const PostPage = () => {
|
||||
post = comment;
|
||||
}
|
||||
|
||||
// handle pending mod or author edit
|
||||
const { editedComment } = useEditedComment({ comment: post });
|
||||
if (editedComment) {
|
||||
post = editedComment;
|
||||
}
|
||||
|
||||
const { deleted, locked, removed } = post || {};
|
||||
const isThreadClosed = deleted || locked || removed;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user