From 0f82430d752bffab9455f0bd44124a8e9b79e66a Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Fri, 1 Mar 2024 13:17:40 +0100 Subject: [PATCH 01/14] chore(translations): popular threads --- public/translations/ar/default.json | 3 ++- public/translations/bn/default.json | 3 ++- public/translations/cs/default.json | 3 ++- public/translations/da/default.json | 3 ++- public/translations/de/default.json | 3 ++- public/translations/el/default.json | 3 ++- public/translations/en/default.json | 3 ++- public/translations/es/default.json | 3 ++- public/translations/fa/default.json | 3 ++- public/translations/fi/default.json | 3 ++- public/translations/fil/default.json | 3 ++- public/translations/fr/default.json | 3 ++- public/translations/he/default.json | 3 ++- public/translations/hi/default.json | 3 ++- public/translations/hu/default.json | 3 ++- public/translations/id/default.json | 3 ++- public/translations/it/default.json | 3 ++- public/translations/ja/default.json | 3 ++- public/translations/ko/default.json | 3 ++- public/translations/mr/default.json | 3 ++- public/translations/nl/default.json | 3 ++- public/translations/no/default.json | 3 ++- public/translations/pl/default.json | 3 ++- public/translations/pt/default.json | 3 ++- public/translations/ro/default.json | 3 ++- public/translations/ru/default.json | 3 ++- public/translations/sq/default.json | 3 ++- public/translations/sv/default.json | 3 ++- public/translations/te/default.json | 3 ++- public/translations/th/default.json | 3 ++- public/translations/tr/default.json | 3 ++- public/translations/uk/default.json | 3 ++- public/translations/ur/default.json | 3 ++- public/translations/vi/default.json | 3 ++- public/translations/zh/default.json | 3 ++- 35 files changed, 70 insertions(+), 35 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 61775e79..75570ff2 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -4,5 +4,6 @@ "or": "أو", "plebchan_description": "Plebchan هو بديل لـ 4chan موزع، بدون خادم، بدون مسؤولين، حيث يمكن لأي شخص إنشاء وامتلاك منتديات غير محدودة. جميع البيانات تأتي من بروتوكول <1>plebbit، كلها نصوص بما في ذلك الروابط التي يتم تضمين الوسائط فيها، مشتركة نقطة لنقطة. لا يحتاج المستخدمون إلى تسجيل حساب قبل المشاركة في المجتمع. لا تتردد في النقر فوق منتدى أدناه الذي يهمك والانضمام فورًا!", "no_global_rules_info": "لا توجد قواعد عالمية، كل منتدى مستقل تمامًا وصاحبه يقرر كيفية/ما إذا كان يعتد به.", - "boards": "منتديات" + "boards": "منتديات", + "popular_threads": "المواضيع الشائعة" } \ No newline at end of file diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 742c1796..65842abb 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -4,5 +4,6 @@ "or": "অথবা", "plebchan_description": "Plebchan একটি সার্ভারলেস, অ্যাডমিনলেস, ডিসেন্ট্রালাইজড 4chan বিকল্প যেখানে কেউই অসীম বোর্ড তৈরি এবং মালিকত্ব করতে পারেন। সমস্ত তথ্য প্রোটোকল <1>plebbit থেকে এসেছে, যেমন সব টেক্সট, যেখানে মিডিয়া সংযুক্ত লিংক থেকে অবস্থান করে, শেয়ার পির-টু-পি। ব্যবহারকারীদের কোনও অ্যাকাউন্ট নিবন্ধন করতে হয় না যাতে কোম্যুনিটিতে অংশগ্রহণ করতে পারেন। আপনি যেটা আপনার সাথে আগ্রহী তার নিচে একটি বোর্ডে ক্লিক করে যথাযথভাবে যোগদান করতে পারেন!", "no_global_rules_info": "কোন গ্লোবাল নিয়ম নেই, প্রতিটি বোর্ড সম্পূর্ণভাবে স্বতন্ত্র এবং তার মালিক কীভাবে/যদি তা নিয়ন্ত্রণ করতে চায় তা নির্ধারণ করে।", - "boards": "বোর্ডসমূহ" + "boards": "বোর্ডসমূহ", + "popular_threads": "জনপ্রিয় থ্রেডগুলি" } \ No newline at end of file diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index 967a2430..b69c8ac2 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -4,5 +4,6 @@ "or": "nebo", "plebchan_description": "Plebchan je decentralizovaná alternativa 4chan bez serveru, bez administrátorů, kde si každý pleb může vytvořit a vlastnit neomezené nástěnky. Všechna data pocházejí z protokolu <1>plebbit, jsou všechno texty včetně odkazů, ze kterých jsou média vložena, sdílená peer-to-peer. Uživatelé se nemusí registrovat před účastí v komunitě. Neváhejte kliknout na nástěnku níže, která vás zajímá, a okamžitě se připojit!", "no_global_rules_info": "Žádná globální pravidla neexistují, každá nástěnka je zcela nezávislá a její vlastník rozhoduje o tom, jak/či ji moderovat.", - "boards": "nástěnky" + "boards": "nástěnky", + "popular_threads": "Oblíbená vlákna" } \ No newline at end of file diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 787853c4..8f4a84dd 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -4,5 +4,6 @@ "or": "eller", "plebchan_description": "Plebchan er et serverløst, adminløst, decentraliseret 4chan-alternativ, hvor enhver pleb kan oprette og eje ubegrænsede opslagstavler. Alle data kommer fra protokollen <1>plebbit, det hele er tekst inklusive links, hvorfra medier er indlejret, delt peer-to-peer. Brugere behøver ikke at registrere en konto før deltagelse i fællesskabet. Du er velkommen til at klikke på en opslagstavle nedenfor, der interesserer dig, og springe direkte ind!", "no_global_rules_info": "Der er ingen globale regler, hver opslagstavle er helt uafhængig, og dens ejer beslutter hvordan/om at moderere den.", - "boards": "opslagstavler" + "boards": "opslagstavler", + "popular_threads": "Populære tråde" } \ No newline at end of file diff --git a/public/translations/de/default.json b/public/translations/de/default.json index 4bbd22fc..31cdc970 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -4,5 +4,6 @@ "or": "oder", "plebchan_description": "Plebchan ist eine serverlose, adminlose, dezentralisierte Alternative zu 4chan, bei der jeder Pleb unbegrenzte Foren erstellen und besitzen kann. Alle Daten stammen aus dem Protokoll <1>plebbit, es handelt sich ausschließlich um Texte einschließlich Links, aus denen Medien eingebettet werden, die peer-to-peer geteilt werden. Benutzer müssen sich nicht registrieren, bevor sie an der Community teilnehmen. Fühlen Sie sich frei, auf ein Forum unten zu klicken, das Sie interessiert, und steigen Sie direkt ein!", "no_global_rules_info": "Es gibt keine globalen Regeln, jedes Forum ist völlig unabhängig und sein Besitzer entscheidet, wie/ob es moderiert wird.", - "boards": "Foren" + "boards": "Foren", + "popular_threads": "Beliebte Threads" } \ No newline at end of file diff --git a/public/translations/el/default.json b/public/translations/el/default.json index bbd62b24..995dd2c2 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -4,5 +4,6 @@ "or": "ή", "plebchan_description": "Το Plebchan είναι μια αντικατάσταση του 4chan χωρίς διακομιστή, χωρίς διαχειριστές, αποκεντρωμένη, όπου οποιοσδήποτε pleb μπορεί να δημιουργήσει και να έχει απεριόριστα boards. Όλα τα δεδομένα προέρχονται από το πρωτόκολλο <1>plebbit, είναι όλα κείμενα συμπεριλαμβανομένων των συνδέσμων από τους οποίους ενσωματώνονται τα πολυμέσα, κοινοποιούνται peer-to-peer. Οι χρήστες δεν χρειάζεται να εγγραφούν πριν να συμμετάσχουν στην κοινότητα. Μη διστάσετε να κάνετε κλικ σε ένα board παρακάτω που σας ενδιαφέρει και να μπείτε αμέσως μέσα!", "no_global_rules_info": "Δεν υπάρχουν παγκόσμιοι κανόνες, κάθε Διαδικτυακή πίνακας είναι εντελώς ανεξάρτητος και ο ιδιοκτήτης του αποφασίζει πώς/εάν να τον ελέγξει.", - "boards": "διαδικτυακές πινακίδες" + "boards": "διαδικτυακές πινακίδες", + "popular_threads": "Δημοφιλή νήματα" } \ No newline at end of file diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 38aa061a..a4383fe5 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -4,5 +4,6 @@ "or": "or", "plebchan_description": "Plebchan is a serverless, adminless, decentralized 4chan alternative where any pleb can create and own unlimited boards. All data comes from the <1>plebbit protocol, it's all text including links from which media is embedded, shared peer-to-peer. Users do not need to register an account before participating in the community. Feel free to click on a board below that interests you and jump right in!", "no_global_rules_info": "There are no global rules, each board is completely independent and its owner decides how/if to moderate it.", - "boards": "boards" + "boards": "boards", + "popular_threads": "Popular threads" } \ No newline at end of file diff --git a/public/translations/es/default.json b/public/translations/es/default.json index 219e363a..3e0a82b7 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -4,5 +4,6 @@ "or": "o", "plebchan_description": "Plebchan es una alternativa descentralizada, sin servidor, sin administrador, de 4chan donde cualquier pleb puede crear y poseer foros ilimitados. Todos los datos provienen del protocolo <1>plebbit, son todo texto incluidos los enlaces desde los cuales se incrustan los medios, compartidos de igual a igual. Los usuarios no necesitan registrarse antes de participar en la comunidad. ¡Siéntete libre de hacer clic en un foro a continuación que te interese y únete de inmediato!", "no_global_rules_info": "No hay reglas globales, cada foro es completamente independiente y su propietario decide cómo/si moderarlo.", - "boards": "foros" + "boards": "foros", + "popular_threads": "Hilos populares" } \ No newline at end of file diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index dd52e80c..ab89c164 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -4,5 +4,6 @@ "or": "یا", "plebchan_description": "پلبچن یک جایگزین ۴چن بدون سرور، بدون مدیر و متمرکز است که هر پلب می‌تواند تالارهای نامحدودی را ایجاد و مالکیت کند. تمام داده‌ها از پروتکل <1>پلبیت گرفته می‌شود، همه متن‌اند از جمله پیوندهایی که رسانه‌ها از آنها جاسازی می‌شوند، به صورت همتا به همتا به اشتراک گذاشته می‌شوند. کاربران قبل از شرکت در این جامعه نیازی به ثبت نام ندارند. لطفاً روی یک تالار زیر که به شما علاقه‌مند است کلیک کنید و مستقیماً به آن بپیوندید!", "no_global_rules_info": "هیچ قانون جهانی وجود ندارد، هر تالار کاملا مستقل است و مالک آن تصمیم می‌گیرد چگونه/آیا آن را نظارت کند.", - "boards": "تالارهای پیام" + "boards": "تالارهای پیام", + "popular_threads": "نخستین موضوعات" } \ No newline at end of file diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index b2f95ac5..79542835 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -4,5 +4,6 @@ "or": "tai", "plebchan_description": "Plebchan on palvelin- ja ylläpitovapaa hajautettu vaihtoehto 4chanille, jossa kuka tahansa pleb voi luoda ja omistaa rajoittamattomasti foorumeita. Kaikki tiedot tulevat <1>plebbit-protokollasta, ne ovat kaikki tekstiä mukaan lukien linkit, joista media upotetaan, jaettuna vertaisverkkona. Käyttäjien ei tarvitse rekisteröityä ennen osallistumista yhteisöön. Voit vapaasti klikata alla olevaa foorumia, joka kiinnostaa sinua, ja liittyä heti mukaan!", "no_global_rules_info": "Maailmanlaajuisia sääntöjä ei ole, jokainen foorumi on täysin itsenäinen ja sen omistaja päättää kuinka / onko se säännelty.", - "boards": "foorumit" + "boards": "foorumit", + "popular_threads": "Suositut langat" } \ No newline at end of file diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 4ace4593..8118a143 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -4,5 +4,6 @@ "or": "o", "plebchan_description": "Ang Plebchan ay isang serverless, adminless, decentralized na alternatibo sa 4chan kung saan maaaring lumikha at magmamay-ari ang sinumang pleb ng walang limitasyong boards. Lahat ng data ay nagmumula sa <1>plebbit protocol, ito ay lahat ng teksto kabilang ang mga link mula sa kung saan ang midya ay naka-embed, ibinahagi peer-to-peer. Hindi kailangang magparehistro ang mga gumagamit bago makilahok sa komunidad. Huwag mag-atubiling mag-click sa isang board sa ibaba na nais mong salihan at sumali na agad!", "no_global_rules_info": "Walang global na mga patakaran, bawat board ay lubusang independiyente at ang may-ari nito ang nagdedesisyon kung paano / kung ito ay isasakdal.", - "boards": "mga board" + "boards": "mga board", + "popular_threads": "Mga popular na thread" } \ No newline at end of file diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index e6948653..7165dce0 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -4,5 +4,6 @@ "or": "ou", "plebchan_description": "Plebchan est une alternative décentralisée, sans serveur, sans administrateur à 4chan où n'importe quel pleb peut créer et posséder des forums illimités. Toutes les données proviennent du protocole <1>plebbit, elles sont toutes textuelles y compris les liens à partir desquels les médias sont intégrés, partagés de pair à pair. Les utilisateurs n'ont pas besoin de s'inscrire avant de participer à la communauté. N'hésitez pas à cliquer sur un forum ci-dessous qui vous intéresse et à vous joindre immédiatement !", "no_global_rules_info": "Il n'y a pas de règles globales, chaque forum est complètement indépendant et son propriétaire décide comment/s'il doit le modérer.", - "boards": "forums" + "boards": "forums", + "popular_threads": "Fils populaires" } \ No newline at end of file diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 09ad42a3..5e281752 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -4,5 +4,6 @@ "or": "או", "plebchan_description": "פלבצ'ן הוא אלטרנטיבה חדשה, ללא שרת, ללא מנהל, וללא מרכזית ל־4chan, בה כל pleb יכול ליצור ולבעוט בלוחות ללא הגבלה. כל הנתונים מגיעים מפרוטוקול <1>plebbit, הם כולם טקסט כולל קישורים מהם מוטמעת מדיה, משותפת פר אחד פר אחד. המשתמשים אינם צריכים להירשם לחשבון לפני השתתפותם בקהילה. נכון ללחוץ על לוח מטה שמעניין אתכם ולהצטרף מיידית!", "no_global_rules_info": "אין כלל כללי, כל לוח הודעות הוא לחוד ובעליו מחליט איך/האם להודיע על זה.", - "boards": "פורומים" + "boards": "פורומים", + "popular_threads": "אשכולות פופולריים" } \ No newline at end of file diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index cf5759d8..b892365e 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -4,5 +4,6 @@ "or": "या", "plebchan_description": "प्लेबचान एक सर्वरलेस, एडमिनलेस, डीसेंट्रलाइज्ड 4chan का विकल्प है जहां कोई भी प्लेब असीमित बोर्ड बना सकता है और मालिक हो सकता है। सभी डेटा प्रोटोकॉल <1>प्लेबिट से आता है, यह सभी पाठ है जिसमें मीडिया एम्बेड है, पीयर-टू-पीर साझा किया जाता है, सहित लिंक। उपयोगकर्ताओं को समुदाय में भाग लेने से पहले खाता रजिस्टर करने की आवश्यकता नहीं है। आपको जो भी बोर्ड नीचे पसंद है, उसपर क्लिक करें और तुरंत शामिल हों!", "no_global_rules_info": "कोई वैश्विक नियम नहीं हैं, प्रत्येक मंच पूरी तरह से स्वतंत्र है और इसके मालिक यह तय करता है कि कैसे/क्या उसे नियंत्रित किया जाए।", - "boards": "मंच" + "boards": "मंच", + "popular_threads": "लोकप्रिय थ्रेड्स" } \ No newline at end of file diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 4d79efab..4f5f02bb 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -4,5 +4,6 @@ "or": "vagy", "plebchan_description": "A Plebchan egy szerver nélküli, admin nélküli, decentralizált 4chan alternatíva, ahol bármelyik pleb létrehozhat és birtokolhat korlátlan fórumokat. Az adatok mindegyike a <1>plebbit protokollból származik, minden szöveg, beleértve a hivatkozásokat is, amelyekből a média be van ágyazva, peer-to-peer megosztással. A felhasználóknak nem kell fiókot regisztrálniuk a közösség részvételéhez. Kattints bármelyik lent lévő fórumra, amely érdekel, és csatlakozz azonnal!", "no_global_rules_info": "Nincsenek globális szabályok, minden fórum teljesen független, és tulajdonosa dönti el, hogyan/ha moderálja azt.", - "boards": "fórumok" + "boards": "fórumok", + "popular_threads": "Népszerű szálak" } \ No newline at end of file diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 194ed239..4d76ede6 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -4,5 +4,6 @@ "or": "atau", "plebchan_description": "Plebchan adalah alternatif 4chan tanpa server, tanpa admin, terdesentralisasi di mana siapa pun pleb bisa membuat dan memiliki papan tak terbatas. Semua data berasal dari protokol <1>plebbit, semuanya teks termasuk tautan dari mana media disematkan, dibagikan peer-to-peer. Pengguna tidak perlu mendaftar akun sebelum berpartisipasi dalam komunitas. Jangan ragu untuk mengklik papan di bawah yang menarik bagi Anda dan bergabung segera!", "no_global_rules_info": "Tidak ada aturan global, setiap papan adalah sepenuhnya independen dan pemiliknya yang menentukan bagaimana/apa yang dimoderasi.", - "boards": "papan pesan" + "boards": "papan pesan", + "popular_threads": "Benang populer" } \ No newline at end of file diff --git a/public/translations/it/default.json b/public/translations/it/default.json index cd23b9ba..d5c896c3 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -4,5 +4,6 @@ "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, 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" + "boards": "forum", + "popular_threads": "Thread popolari" } \ No newline at end of file diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 88eaef86..7b12d34b 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -4,5 +4,6 @@ "or": "または", "plebchan_description": "Plebchan は、サーバーレス、管理者なし、分散型の 4chan の代替であり、どんな pleb も無制限のボードを作成して所有できます。すべてのデータは、<1>plebbit プロトコルから取得され、すべてのテキスト、埋め込まれるメディアが含まれるリンク、ピアツーピアで共有されます。ユーザーはコミュニティに参加する前にアカウントを登録する必要はありません。興味のあるボードをクリックして、すぐに参加してください!", "no_global_rules_info": "グローバルなルールはありません、各掲示板は完全に独立しており、その所有者がそれをどのように/どのようにモデレートするかを決定します。", - "boards": "掲示板" + "boards": "掲示板", + "popular_threads": "人気のあるスレッド" } \ No newline at end of file diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 0bde8426..9c66dd04 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -4,5 +4,6 @@ "or": "또는", "plebchan_description": "Plebchan은 서버 없이, 관리자 없이, 분산형인 4chan 대안으로 어떤 pleb도 무제한의 게시판을 생성하고 소유할 수 있습니다. 모든 데이터는 <1>plebbit 프로토콜에서 나온 것으로, 모두 텍스트이며, 그 안에 미디어가 포함된 링크를 통해 peer-to-peer로 공유됩니다. 사용자는 커뮤니티에 참여하기 전에 계정을 등록할 필요가 없습니다. 관심 있는 아래의 게시판을 클릭하고 바로 참여해보세요!", "no_global_rules_info": "전역 규칙이 없습니다. 각 게시판은 완전히 독립적이며 소유자가 어떻게/모디레이션할지를 결정합니다.", - "boards": "게시판" + "boards": "게시판", + "popular_threads": "인기 있는 스레드" } \ No newline at end of file diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 9db91dc0..856cf6c4 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -4,5 +4,6 @@ "or": "किव्हा", "plebchan_description": "प्लेबचॅन हा सर्व्हरलेस, एडमिनलेस, डीसेंट्रलाइझ्ड ४चॅनचा पर्याय आहे ज्यात कोणत्याही प्लेबला अमित बोर्ड तयार करून ठेवू शकतात. सर्व डेटा <1>प्लेबिट प्रोटोकॉलपासून आला आहे, ते सर्व पाठ आहेत, त्यातून मीडिया एम्बेड केला जातो, पीयर-ते-पीयर सामायिक केला जातो. वापरकर्त्यांना समुदायात सहभाग घेण्यापूर्वी खाते नोंदविण्याची आवश्यकता नाही. आपल्याला आवडता असलेला खालील बोर्ड क्लिक करून प्रवेश करा आणि लवकरच ज्वाइन करा!", "no_global_rules_info": "कोणत्याही जागतिक कायद्या नाहीत, प्रत्येक बोर्ड पूर्णपणे स्वतंत्र आहे आणि त्याचा मालक कसा/आणि कशा प्रकारे याची नियमन करावी हे त्याच्याकडून ठरतो.", - "boards": "संदेश फलक" + "boards": "संदेश फलक", + "popular_threads": "लोकप्रिय थ्रेड्स" } \ No newline at end of file diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 98da3c97..585ef712 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -4,5 +4,6 @@ "or": "of", "plebchan_description": "Plebchan is een serverloos, adminloos, gedecentraliseerd alternatief voor 4chan waar elke pleb onbeperkte forums kan maken en bezitten. Alle gegevens komen van het <1>plebbit-protocol, het is allemaal tekst inclusief links waaruit media is ingesloten, gedeeld peer-to-peer. Gebruikers hoeven geen account te registreren voordat ze deelnemen aan de community. Voel je vrij om op een forum hieronder te klikken dat je interesseert en spring er meteen in!", "no_global_rules_info": "Er zijn geen wereldwijde regels, elk forum is volledig onafhankelijk en de eigenaar beslist hoe/wel of niet te modereren.", - "boards": "forums" + "boards": "forums", + "popular_threads": "Populaire threads" } \ No newline at end of file diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 08efe050..b8c9e16b 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -4,5 +4,6 @@ "or": "eller", "plebchan_description": "Plebchan er et serverløst, adminløst, desentralisert alternativ til 4chan der hvilken som helst pleb kan opprette og eie ubegrensede fora. Alle data kommer fra protokollen <1>plebbit, det er all tekst inkludert lenker fra hvilke medier er innebygd, delt peer-to-peer. Brukere trenger ikke å registrere en konto før de deltar i fellesskapet. Ikke nøl med å klikke på et forum nedenfor som interesserer deg og bli med en gang!", "no_global_rules_info": "Det er ingen globale regler, hvert forum er helt uavhengig, og eieren bestemmer hvordan/om å moderere det.", - "boards": "fora" + "boards": "fora", + "popular_threads": "Populære tråder" } \ No newline at end of file diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 960ebe3c..31e4b561 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -4,5 +4,6 @@ "or": "lub", "plebchan_description": "Plebchan to serwer, admin, zdecentralizowana alternatywa dla 4chan, gdzie każdy pleb może tworzyć i posiadać nieograniczone fora. Wszystkie dane pochodzą z protokołu <1>plebbit, są to same teksty, w tym linki, z których osadzone są media, udostępniane w trybie peer-to-peer. Użytkownicy nie muszą rejestrować konta przed uczestnictwem w społeczności. Śmiało kliknij na forum poniżej, które Cię interesuje, i dołącz!", "no_global_rules_info": "Nie ma globalnych zasad, każda tablica jest całkowicie niezależna, a jej właściciel decyduje, w jaki sposób/czy ją moderować.", - "boards": "fora" + "boards": "fora", + "popular_threads": "Popularne wątki" } \ No newline at end of file diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index ab9f4452..e96a5216 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -4,5 +4,6 @@ "or": "ou", "plebchan_description": "Plebchan é uma alternativa descentralizada, sem servidor, sem administradores ao 4chan onde qualquer plebeu pode criar e possuir fóruns ilimitados. Todos os dados vêm do protocolo <1>plebbit, são todos textos incluindo links dos quais a mídia é incorporada, compartilhada peer-to-peer. Os usuários não precisam se registrar antes de participar da comunidade. Sinta-se à vontade para clicar em um fórum abaixo que lhe interesse e participar imediatamente!", "no_global_rules_info": "Não existem regras globais, cada fórum é completamente independente e o seu proprietário decide como/se o moderar.", - "boards": "fóruns" + "boards": "fóruns", + "popular_threads": "Tópicos populares" } \ No newline at end of file diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 724ff429..5d309a59 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -4,5 +4,6 @@ "or": "sau", "plebchan_description": "Plebchan este o alternativă descentralizată, fără server, fără administratori la 4chan, unde orice pleb poate crea și deține forumuri nelimitate. Toate datele vin de la protocolul <1>plebbit, sunt toate text inclusiv linkuri din care sunt încorporate media, distribuite peer-to-peer. Utilizatorii nu trebuie să-și înregistreze un cont înainte de a participa la comunitate. Nu ezitați să faceți clic pe un forum de mai jos care vă interesează și să vă alăturați imediat!", "no_global_rules_info": "Nu există reguli globale, fiecare forum este complet independent și proprietarul său decide cum/sau dacă să îl modereze.", - "boards": "forumuri" + "boards": "forumuri", + "popular_threads": "Threaduri populare" } \ No newline at end of file diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index a3bebdf8..7525f383 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -4,5 +4,6 @@ "or": "или", "plebchan_description": "Plebchan - это безсерверная, безадминистративная, децентрализованная альтернатива 4chan, где любой плеб может создавать и владеть неограниченным количеством форумов. Все данные поступают из протокола <1>plebbit, это весь текст, включая ссылки, из которых встроены медиа, и распространяются по сети peer-to-peer. Пользователи не должны регистрировать учетную запись перед участием в сообществе. Не стесняйтесь нажимать на форум ниже, который вас интересует, и присоединяйтесь немедленно!", "no_global_rules_info": "Нет глобальных правил, каждая доска полностью независима, и ее владелец решает, как/если ее модерировать.", - "boards": "форумы" + "boards": "форумы", + "popular_threads": "Популярные темы" } \ No newline at end of file diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 38c4fcb4..492e3430 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -4,5 +4,6 @@ "or": "ose", "plebchan_description": "Plebchan është një alternativë e 4chan decentralizuar, pa server, pa administratorë, ku çdo pleb mund të krijojë dhe të posedojë forume të pakufizuara. Të gjitha të dhënat vijnë nga protokoli <1>plebbit, janë të gjitha tekste duke përfshirë lidhjet nga të cilat mediat janë të mbështjellë, ndarë peer-to-peer. Përdoruesit nuk duhet të regjistrojnë një llogari para se të marrin pjesë në komunitet. Mos ngurroni të klikoni në një forum më poshtë që ju intereson dhe të bashkoheni menjëherë!", "no_global_rules_info": "Nuk ka rregulla globale, çdo forum është plotësisht i pavarur dhe pronari i tij vendos se si/nëse ta moderohet.", - "boards": "forume" + "boards": "forume", + "popular_threads": "Threadet e njohur" } \ No newline at end of file diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 9ab9e440..e22b76b6 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -4,5 +4,6 @@ "or": "eller", "plebchan_description": "Plebchan är ett serverlöst, adminlöst, decentraliserat alternativ till 4chan där vilken pleb som helst kan skapa och äga obegränsade forum. Alla data kommer från protokollet <1>plebbit, det är all text inklusive länkar från vilka media bäddas in, delat peer-to-peer. Användare behöver inte registrera ett konto innan de deltar i gemenskapen. Tveka inte att klicka på ett forum nedan som intresserar dig och gå med direkt!", "no_global_rules_info": "Det finns inga globala regler, varje forum är helt oberoende och dess ägare bestämmer hur/om att moderera den.", - "boards": "forum" + "boards": "forum", + "popular_threads": "Populära trådar" } \ No newline at end of file diff --git a/public/translations/te/default.json b/public/translations/te/default.json index c9ebb717..48977e29 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -4,5 +4,6 @@ "or": "లేదా", "plebchan_description": "ప్లెబ్చాన్ ఒక సర్వర్ లేని, అడ్మిన్ లేని, డిసెంట్రలైజ్‌డ్ 4చాన్ వైకల్పికం దీనిలో ఏ ప్లెబ్ యొక్క సర్వర్లేస్, అడ్మిన్‌లేస్, అసంబద్ధ బోర్డులు సృష్టించవచ్చు. అన్ని డేటా <1>ప్లెబిట్ ప్రోటోకాల్‌నుండి వస్తాయి, అది అన్ని లింక్‌లు జాబితానుండి మీడియా ఎంబెడ్ చేయబడినపుడు ఉంటుంది, అది పీయర్‌టు‌పీయర్ గా పంపబడుతుంది. వాడుకరు కమ్యూనిటీలో పాల్గొనుటకు ముందు ఎకౌంటు నమోదు చేయాల్సిన అవసరం లేదు. మీకు ఆసక్తి కలిగించే బోర్డుకు క్లిక్ చేసి ప్రత్యక్షంగా చేరవచ్చు!", "no_global_rules_info": "గ్లోబల్ నియమాలు లేవు, ప్రతి బోర్డు పూర్తిగా స్వతంత్రంగా ఉంటుంది మరియు అది మాలిక ఏమి/అయితే అని నిర్వచించండి.", - "boards": "సందేశ బోర్డులు" + "boards": "సందేశ బోర్డులు", + "popular_threads": "జనప్రియమైన థ్రెడ్‌లు" } \ No newline at end of file diff --git a/public/translations/th/default.json b/public/translations/th/default.json index a7344e7c..4240ccdd 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -4,5 +4,6 @@ "or": "หรือ", "plebchan_description": "Plebchan เป็นทางเลือกที่ไม่มีเซิร์ฟเวอร์ แอดมินไม่มี แบบกระจายสำหรับ 4chan ที่ใครก็สามารถสร้างและเป็นเจ้าของบอร์ดได้ไม่จำกัด ข้อมูลทั้งหมดมาจากโปรโตคอล <1>plebbit มันเป็นข้อความทั้งหมดที่รวมถึงลิงก์จากซึ่งมีสื่อที่ฝังอยู่ และแบ่งปันแบบ peer-to-peer ผู้ใช้ไม่จำเป็นต้องลงทะเบียนบัญชีก่อนที่จะเข้าร่วมชุมชน อย่าลังเลที่จะคลิกบอร์ดด้านล่างที่คุณสนใจและเข้าร่วมทันที!", "no_global_rules_info": "ไม่มีกฎทั่วโลกที่มีอยู่, แต่ละกระดานเป็นอิสระและเจ้าของกำหนดว่าจะ/จะไม่ต้องควบคุมมันอย่างไร", - "boards": "กระดานข่าว" + "boards": "กระดานข่าว", + "popular_threads": "กระทู้ยอดนิยม" } \ No newline at end of file diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 0d6f842f..0608f4f1 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -4,5 +4,6 @@ "or": "veya", "plebchan_description": "Plebchan, herhangi bir plebin sınırsız tahtalar oluşturabileceği ve sahip olabileceği sunucusuz, yöneticisiz, merkezi olmayan 4chan alternatifidir. Tüm veriler, tüm metinler ve yerleştirilen medyaların içinde bulunduğu bağlantılar da dahil olmak üzere <1>plebbit protokolünden gelir ve eşler arası olarak paylaşılır. Kullanıcıların topluluğa katılmadan önce bir hesap kaydetmelerine gerek yoktur. Sizi ilgilendiren aşağıdaki tahtaya tıklayın ve hemen katılın!", "no_global_rules_info": "Küresel kurallar yoktur, her forum tamamen bağımsızdır ve sahibi nasıl/modere edileceğine karar verir.", - "boards": "forumlar" + "boards": "forumlar", + "popular_threads": "Popüler konular" } \ No newline at end of file diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index a8291998..1ac7c345 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -4,5 +4,6 @@ "or": "або", "plebchan_description": "Plebchan - це безсерверний, безадміністративний, децентралізований альтернативний 4chan, де будь-який плеб може створити та володіти необмеженою кількістю форумів. Усі дані надходять з протоколу <1>plebbit, це весь текст, включаючи посилання, з яких вбудовані медіа, та розповсюджуються у режимі peer-to-peer. Користувачам не потрібно реєструвати обліковий запис перед участю в спільноті. Не соромтеся натискати на дошку нижче, яка цікавить вас, і приєднуйтеся одразу!", "no_global_rules_info": "Немає глобальних правил, кожна дошка цілком незалежна, і її власник вирішує, як/чи модерувати її.", - "boards": "форуми" + "boards": "форуми", + "popular_threads": "Популярні теми" } \ No newline at end of file diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 90037f3b..8d486ba3 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -4,5 +4,6 @@ "or": "یا", "plebchan_description": "پلیبچان ایک سرور کم، ایڈمن کم، غیر مرکزی 4chan کی بدلتا ہے جہاں ہر کوئی پلیب بے حد بورڈ بنا سکتا ہے اور مالک ہو سکتا ہے۔ تمام ڈیٹا پروٹوکول <1>پلیبٹ سے آتا ہے، یہ سب ٹیکسٹ ہے جس میں میڈیا شامل ہے، پیر-سے-پیر اشتراک کیا گیا ہے۔ صارفین کو بہمت شامل ہونے سے پہلے اکاؤنٹ رجسٹر کرانے کی ضرورت نہیں ہے۔ نیچے کسی بھی بورڈ پر کلک کریں جو آپ کو دلچسپ لگتا ہے اور فوراً شامل ہوں!", "no_global_rules_info": "کوئی عالمی اصول نہیں ہیں، ہر بورڈ مکمل طور پر آزاد ہے اور اس کا مالک یہ فیصلہ کرتا ہے کہ وہ کیسے/کیا اسے موڈریٹ کرے گا۔", - "boards": "پیغام بورڈز" + "boards": "پیغام بورڈز", + "popular_threads": "مقبول تھریڈز" } \ No newline at end of file diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index 6f6023d0..d4fe8e57 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -4,5 +4,6 @@ "or": "hoặc", "plebchan_description": "Plebchan là một lựa chọn phi tập trung, không có máy chủ, không có quản trị viên cho 4chan nơi bất kỳ pleb nào cũng có thể tạo và sở hữu các bảng không giới hạn. Tất cả dữ liệu đều đến từ giao thức <1>plebbit, đó là toàn bộ văn bản bao gồm cả liên kết từ đó các phương tiện được nhúng, được chia sẻ ngang hàng. Người dùng không cần đăng ký tài khoản trước khi tham gia cộng đồng. Hãy thoải mái nhấp vào một bảng dưới đây mà bạn quan tâm và tham gia ngay!", "no_global_rules_info": "Không có quy tắc toàn cầu, mỗi diễn đàn là hoàn toàn độc lập và chủ sở hữu quyết định cách/nếu muốn kiểm duyệt nó.", - "boards": "diễn đàn" + "boards": "diễn đàn", + "popular_threads": "Chủ đề phổ biến" } \ No newline at end of file diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 6823f689..569dfec8 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -4,5 +4,6 @@ "or": "或者", "plebchan_description": "Plebchan是4chan的无服务器,无管理员,去中心化替代品,任何平民都可以创建和拥有无限的板块。所有数据都来自<1>plebbit协议,所有内容都是文本,包括嵌入媒体的链接,采用对等方式共享。用户在参与社区之前无需注册帐户。随时点击下面您感兴趣的板块,立即加入吧!", "no_global_rules_info": "没有全球规则,每个板块都是完全独立的,其所有者决定如何/是否对其进行审查。", - "boards": "论坛" + "boards": "论坛", + "popular_threads": "热门主题" } \ No newline at end of file From a7827d15ec5a81cb359c985cf0ea6c766a9589f4 Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Fri, 1 Mar 2024 13:18:01 +0100 Subject: [PATCH 02/14] update css variables naming --- src/app.module.css | 2 +- src/themes.css | 38 +++++++++++++++++++--------------- src/views/home/home.module.css | 23 +++++++++++++------- src/views/home/home.tsx | 10 +++++++-- 4 files changed, 46 insertions(+), 27 deletions(-) diff --git a/src/app.module.css b/src/app.module.css index 0ffc0490..001294fe 100644 --- a/src/app.module.css +++ b/src/app.module.css @@ -1,5 +1,5 @@ .app { - background: var(--background-color) var(--background-fade) top center repeat-x; + background: var(--background-base-color) var(--background-pattern-image) top center repeat-x; font: 13px/1.231 arial, helvetica, sans-serif; z-index: 1; min-height: 100%; diff --git a/src/themes.css b/src/themes.css index c5e9b0d9..091291a0 100644 --- a/src/themes.css +++ b/src/themes.css @@ -1,21 +1,25 @@ :root .yotsuba { - --background-color: #ffe; - --background-fade: url("/public/assets/background-fade.png"); - --color-primary: #800; - --text-primary: #fff; - --text-black: #000; - --text-white: #fff; - --text-background: #fff; - --text-link: #00f; + --background-base-color: #ffe; + --background-pattern-image: url("/public/assets/background-fade.png"); + --primary-color: #800; + --secondary-color: #fca; + --text-color-on-primary: #fff; + --text-color-on-secondary: #800; + --text-color-standard: #000; + --text-color-inverse: #fff; + --background-text-color: #fff; + --link-text-color: #00f; } :root .yotsuba-b { - --background-color: #eef2ff; - --background-fade: url("/public/assets/background-fade-blue.png"); - --color-primary: #98e; - --text-primary: #000; - --text-black: #000; - --text-white: #fff; - --text-background: #fff; - --text-link: #00f; -} \ No newline at end of file + --background-base-color: #eef2ff; + --background-pattern-image: url("/public/assets/background-fade-blue.png"); + --primary-color: #98e; + --secondary-color: #98e; + --text-color-on-primary: #000; + --text-color-on-secondary: #000; + --text-color-standard: #000; + --text-color-inverse: #fff; + --background-text-color: #fff; + --link-text-color: #00f; +} diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index 1528d4dc..dbe2efda 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -1,5 +1,4 @@ .content { - color: var(--color-primary); width: 100%; height: 100%; margin: auto; @@ -30,20 +29,28 @@ } .box { - background: var(--text-background); - color: var(--text-black); + background: var(--background-text-color); + color: var(--text-color-standard); border: 1px solid; margin-bottom: 0.5em; padding-bottom: 0.5em; } .boxBar { - background: var(--color-primary); - color: var(--text-primary); padding-left: 0.5em; line-height: 2em; } +.primaryColorBar { + background: var(--primary-color); + color: var(--text-color-on-primary); +} + +.secondaryColorBar { + background: var(--secondary-color); + color: var(--text-color-on-secondary); +} + .boxBar h2 { font-size: 131%; font-weight: 700; @@ -58,7 +65,7 @@ } .boxContent a, .boxContent a:visited{ - color: var(--text-link); + color: var(--link-text-color); } .searchBar { @@ -85,7 +92,7 @@ .searchBar button { margin-left: 4px; - padding: 3px 10px; + padding: 3px 5px; display: inline-block; text-transform: capitalize; font-size: 14px; @@ -98,6 +105,8 @@ @media (max-width: 768px) { .content { + min-width: 0; width: auto; + padding: 10px; } } \ No newline at end of file diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index 6face47b..0a46366a 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -59,7 +59,7 @@ const Home = () => {
-
+

{t('what_is_plebchan')}

@@ -70,11 +70,17 @@ const Home = () => {
-
+

{t('boards')}

+
+
+

{t('popular_threads')}

+
+
+
); }; From 8f61caa789b02cf418b578280f9924c7e0d49791 Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Fri, 1 Mar 2024 20:42:21 +0100 Subject: [PATCH 03/14] add default subplebbit addresses --- public/translations/ar/default.json | 3 +- public/translations/bn/default.json | 3 +- public/translations/cs/default.json | 3 +- public/translations/da/default.json | 3 +- public/translations/de/default.json | 3 +- public/translations/el/default.json | 3 +- public/translations/en/default.json | 3 +- public/translations/es/default.json | 3 +- public/translations/fa/default.json | 3 +- public/translations/fi/default.json | 3 +- public/translations/fil/default.json | 3 +- public/translations/fr/default.json | 3 +- public/translations/he/default.json | 3 +- public/translations/hi/default.json | 3 +- public/translations/hu/default.json | 3 +- public/translations/id/default.json | 3 +- public/translations/it/default.json | 3 +- public/translations/ja/default.json | 3 +- public/translations/ko/default.json | 3 +- public/translations/mr/default.json | 3 +- public/translations/nl/default.json | 3 +- public/translations/no/default.json | 3 +- public/translations/pl/default.json | 3 +- public/translations/pt/default.json | 3 +- public/translations/ro/default.json | 3 +- public/translations/ru/default.json | 3 +- public/translations/sq/default.json | 3 +- public/translations/sv/default.json | 3 +- public/translations/te/default.json | 3 +- public/translations/th/default.json | 3 +- public/translations/tr/default.json | 3 +- public/translations/uk/default.json | 3 +- public/translations/ur/default.json | 3 +- public/translations/vi/default.json | 3 +- public/translations/zh/default.json | 3 +- src/hooks/use-default-subplebbits.ts | 41 ++++++++++ src/hooks/use-theme.ts | 2 +- src/themes.css | 16 +++- src/views/home/home.module.css | 49 +++++++++++- src/views/home/home.tsx | 107 ++++++++++++++++++++------- 40 files changed, 253 insertions(+), 67 deletions(-) create mode 100644 src/hooks/use-default-subplebbits.ts diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 75570ff2..38102ba8 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan هو بديل لـ 4chan موزع، بدون خادم، بدون مسؤولين، حيث يمكن لأي شخص إنشاء وامتلاك منتديات غير محدودة. جميع البيانات تأتي من بروتوكول <1>plebbit، كلها نصوص بما في ذلك الروابط التي يتم تضمين الوسائط فيها، مشتركة نقطة لنقطة. لا يحتاج المستخدمون إلى تسجيل حساب قبل المشاركة في المجتمع. لا تتردد في النقر فوق منتدى أدناه الذي يهمك والانضمام فورًا!", "no_global_rules_info": "لا توجد قواعد عالمية، كل منتدى مستقل تمامًا وصاحبه يقرر كيفية/ما إذا كان يعتد به.", "boards": "منتديات", - "popular_threads": "المواضيع الشائعة" + "popular_threads": "المواضيع الشائعة", + "options": "الخيارات" } \ No newline at end of file diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 65842abb..421e0bcd 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan একটি সার্ভারলেস, অ্যাডমিনলেস, ডিসেন্ট্রালাইজড 4chan বিকল্প যেখানে কেউই অসীম বোর্ড তৈরি এবং মালিকত্ব করতে পারেন। সমস্ত তথ্য প্রোটোকল <1>plebbit থেকে এসেছে, যেমন সব টেক্সট, যেখানে মিডিয়া সংযুক্ত লিংক থেকে অবস্থান করে, শেয়ার পির-টু-পি। ব্যবহারকারীদের কোনও অ্যাকাউন্ট নিবন্ধন করতে হয় না যাতে কোম্যুনিটিতে অংশগ্রহণ করতে পারেন। আপনি যেটা আপনার সাথে আগ্রহী তার নিচে একটি বোর্ডে ক্লিক করে যথাযথভাবে যোগদান করতে পারেন!", "no_global_rules_info": "কোন গ্লোবাল নিয়ম নেই, প্রতিটি বোর্ড সম্পূর্ণভাবে স্বতন্ত্র এবং তার মালিক কীভাবে/যদি তা নিয়ন্ত্রণ করতে চায় তা নির্ধারণ করে।", "boards": "বোর্ডসমূহ", - "popular_threads": "জনপ্রিয় থ্রেডগুলি" + "popular_threads": "জনপ্রিয় থ্রেডগুলি", + "options": "বিকল্পগুলি" } \ No newline at end of file diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index b69c8ac2..e7760065 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan je decentralizovaná alternativa 4chan bez serveru, bez administrátorů, kde si každý pleb může vytvořit a vlastnit neomezené nástěnky. Všechna data pocházejí z protokolu <1>plebbit, jsou všechno texty včetně odkazů, ze kterých jsou média vložena, sdílená peer-to-peer. Uživatelé se nemusí registrovat před účastí v komunitě. Neváhejte kliknout na nástěnku níže, která vás zajímá, a okamžitě se připojit!", "no_global_rules_info": "Žádná globální pravidla neexistují, každá nástěnka je zcela nezávislá a její vlastník rozhoduje o tom, jak/či ji moderovat.", "boards": "nástěnky", - "popular_threads": "Oblíbená vlákna" + "popular_threads": "Oblíbená vlákna", + "options": "Možnosti" } \ No newline at end of file diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 8f4a84dd..8ab2ae13 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan er et serverløst, adminløst, decentraliseret 4chan-alternativ, hvor enhver pleb kan oprette og eje ubegrænsede opslagstavler. Alle data kommer fra protokollen <1>plebbit, det hele er tekst inklusive links, hvorfra medier er indlejret, delt peer-to-peer. Brugere behøver ikke at registrere en konto før deltagelse i fællesskabet. Du er velkommen til at klikke på en opslagstavle nedenfor, der interesserer dig, og springe direkte ind!", "no_global_rules_info": "Der er ingen globale regler, hver opslagstavle er helt uafhængig, og dens ejer beslutter hvordan/om at moderere den.", "boards": "opslagstavler", - "popular_threads": "Populære tråde" + "popular_threads": "Populære tråde", + "options": "Indstillinger" } \ No newline at end of file diff --git a/public/translations/de/default.json b/public/translations/de/default.json index 31cdc970..ecd5d31b 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan ist eine serverlose, adminlose, dezentralisierte Alternative zu 4chan, bei der jeder Pleb unbegrenzte Foren erstellen und besitzen kann. Alle Daten stammen aus dem Protokoll <1>plebbit, es handelt sich ausschließlich um Texte einschließlich Links, aus denen Medien eingebettet werden, die peer-to-peer geteilt werden. Benutzer müssen sich nicht registrieren, bevor sie an der Community teilnehmen. Fühlen Sie sich frei, auf ein Forum unten zu klicken, das Sie interessiert, und steigen Sie direkt ein!", "no_global_rules_info": "Es gibt keine globalen Regeln, jedes Forum ist völlig unabhängig und sein Besitzer entscheidet, wie/ob es moderiert wird.", "boards": "Foren", - "popular_threads": "Beliebte Threads" + "popular_threads": "Beliebte Threads", + "options": "Optionen" } \ No newline at end of file diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 995dd2c2..65399980 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Το Plebchan είναι μια αντικατάσταση του 4chan χωρίς διακομιστή, χωρίς διαχειριστές, αποκεντρωμένη, όπου οποιοσδήποτε pleb μπορεί να δημιουργήσει και να έχει απεριόριστα boards. Όλα τα δεδομένα προέρχονται από το πρωτόκολλο <1>plebbit, είναι όλα κείμενα συμπεριλαμβανομένων των συνδέσμων από τους οποίους ενσωματώνονται τα πολυμέσα, κοινοποιούνται peer-to-peer. Οι χρήστες δεν χρειάζεται να εγγραφούν πριν να συμμετάσχουν στην κοινότητα. Μη διστάσετε να κάνετε κλικ σε ένα board παρακάτω που σας ενδιαφέρει και να μπείτε αμέσως μέσα!", "no_global_rules_info": "Δεν υπάρχουν παγκόσμιοι κανόνες, κάθε Διαδικτυακή πίνακας είναι εντελώς ανεξάρτητος και ο ιδιοκτήτης του αποφασίζει πώς/εάν να τον ελέγξει.", "boards": "διαδικτυακές πινακίδες", - "popular_threads": "Δημοφιλή νήματα" + "popular_threads": "Δημοφιλή νήματα", + "options": "Επιλογές" } \ No newline at end of file diff --git a/public/translations/en/default.json b/public/translations/en/default.json index a4383fe5..68960192 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan is a serverless, adminless, decentralized 4chan alternative where any pleb can create and own unlimited boards. All data comes from the <1>plebbit protocol, it's all text including links from which media is embedded, shared peer-to-peer. Users do not need to register an account before participating in the community. Feel free to click on a board below that interests you and jump right in!", "no_global_rules_info": "There are no global rules, each board is completely independent and its owner decides how/if to moderate it.", "boards": "boards", - "popular_threads": "Popular threads" + "popular_threads": "Popular threads", + "options": "Options" } \ No newline at end of file diff --git a/public/translations/es/default.json b/public/translations/es/default.json index 3e0a82b7..c3371c11 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan es una alternativa descentralizada, sin servidor, sin administrador, de 4chan donde cualquier pleb puede crear y poseer foros ilimitados. Todos los datos provienen del protocolo <1>plebbit, son todo texto incluidos los enlaces desde los cuales se incrustan los medios, compartidos de igual a igual. Los usuarios no necesitan registrarse antes de participar en la comunidad. ¡Siéntete libre de hacer clic en un foro a continuación que te interese y únete de inmediato!", "no_global_rules_info": "No hay reglas globales, cada foro es completamente independiente y su propietario decide cómo/si moderarlo.", "boards": "foros", - "popular_threads": "Hilos populares" + "popular_threads": "Hilos populares", + "options": "Opciones" } \ No newline at end of file diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index ab89c164..d0dc3be5 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -5,5 +5,6 @@ "plebchan_description": "پلبچن یک جایگزین ۴چن بدون سرور، بدون مدیر و متمرکز است که هر پلب می‌تواند تالارهای نامحدودی را ایجاد و مالکیت کند. تمام داده‌ها از پروتکل <1>پلبیت گرفته می‌شود، همه متن‌اند از جمله پیوندهایی که رسانه‌ها از آنها جاسازی می‌شوند، به صورت همتا به همتا به اشتراک گذاشته می‌شوند. کاربران قبل از شرکت در این جامعه نیازی به ثبت نام ندارند. لطفاً روی یک تالار زیر که به شما علاقه‌مند است کلیک کنید و مستقیماً به آن بپیوندید!", "no_global_rules_info": "هیچ قانون جهانی وجود ندارد، هر تالار کاملا مستقل است و مالک آن تصمیم می‌گیرد چگونه/آیا آن را نظارت کند.", "boards": "تالارهای پیام", - "popular_threads": "نخستین موضوعات" + "popular_threads": "نخستین موضوعات", + "options": "گزینه ها" } \ No newline at end of file diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 79542835..0adf723b 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan on palvelin- ja ylläpitovapaa hajautettu vaihtoehto 4chanille, jossa kuka tahansa pleb voi luoda ja omistaa rajoittamattomasti foorumeita. Kaikki tiedot tulevat <1>plebbit-protokollasta, ne ovat kaikki tekstiä mukaan lukien linkit, joista media upotetaan, jaettuna vertaisverkkona. Käyttäjien ei tarvitse rekisteröityä ennen osallistumista yhteisöön. Voit vapaasti klikata alla olevaa foorumia, joka kiinnostaa sinua, ja liittyä heti mukaan!", "no_global_rules_info": "Maailmanlaajuisia sääntöjä ei ole, jokainen foorumi on täysin itsenäinen ja sen omistaja päättää kuinka / onko se säännelty.", "boards": "foorumit", - "popular_threads": "Suositut langat" + "popular_threads": "Suositut langat", + "options": "Vaihtoehdot" } \ No newline at end of file diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 8118a143..46ab6cf3 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Ang Plebchan ay isang serverless, adminless, decentralized na alternatibo sa 4chan kung saan maaaring lumikha at magmamay-ari ang sinumang pleb ng walang limitasyong boards. Lahat ng data ay nagmumula sa <1>plebbit protocol, ito ay lahat ng teksto kabilang ang mga link mula sa kung saan ang midya ay naka-embed, ibinahagi peer-to-peer. Hindi kailangang magparehistro ang mga gumagamit bago makilahok sa komunidad. Huwag mag-atubiling mag-click sa isang board sa ibaba na nais mong salihan at sumali na agad!", "no_global_rules_info": "Walang global na mga patakaran, bawat board ay lubusang independiyente at ang may-ari nito ang nagdedesisyon kung paano / kung ito ay isasakdal.", "boards": "mga board", - "popular_threads": "Mga popular na thread" + "popular_threads": "Mga popular na thread", + "options": "Mga opsyon" } \ No newline at end of file diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 7165dce0..35b4f215 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan est une alternative décentralisée, sans serveur, sans administrateur à 4chan où n'importe quel pleb peut créer et posséder des forums illimités. Toutes les données proviennent du protocole <1>plebbit, elles sont toutes textuelles y compris les liens à partir desquels les médias sont intégrés, partagés de pair à pair. Les utilisateurs n'ont pas besoin de s'inscrire avant de participer à la communauté. N'hésitez pas à cliquer sur un forum ci-dessous qui vous intéresse et à vous joindre immédiatement !", "no_global_rules_info": "Il n'y a pas de règles globales, chaque forum est complètement indépendant et son propriétaire décide comment/s'il doit le modérer.", "boards": "forums", - "popular_threads": "Fils populaires" + "popular_threads": "Fils populaires", + "options": "Options" } \ No newline at end of file diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 5e281752..39b9d09f 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -5,5 +5,6 @@ "plebchan_description": "פלבצ'ן הוא אלטרנטיבה חדשה, ללא שרת, ללא מנהל, וללא מרכזית ל־4chan, בה כל pleb יכול ליצור ולבעוט בלוחות ללא הגבלה. כל הנתונים מגיעים מפרוטוקול <1>plebbit, הם כולם טקסט כולל קישורים מהם מוטמעת מדיה, משותפת פר אחד פר אחד. המשתמשים אינם צריכים להירשם לחשבון לפני השתתפותם בקהילה. נכון ללחוץ על לוח מטה שמעניין אתכם ולהצטרף מיידית!", "no_global_rules_info": "אין כלל כללי, כל לוח הודעות הוא לחוד ובעליו מחליט איך/האם להודיע על זה.", "boards": "פורומים", - "popular_threads": "אשכולות פופולריים" + "popular_threads": "אשכולות פופולריים", + "options": "אפשרויות" } \ No newline at end of file diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index b892365e..adbbaf66 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -5,5 +5,6 @@ "plebchan_description": "प्लेबचान एक सर्वरलेस, एडमिनलेस, डीसेंट्रलाइज्ड 4chan का विकल्प है जहां कोई भी प्लेब असीमित बोर्ड बना सकता है और मालिक हो सकता है। सभी डेटा प्रोटोकॉल <1>प्लेबिट से आता है, यह सभी पाठ है जिसमें मीडिया एम्बेड है, पीयर-टू-पीर साझा किया जाता है, सहित लिंक। उपयोगकर्ताओं को समुदाय में भाग लेने से पहले खाता रजिस्टर करने की आवश्यकता नहीं है। आपको जो भी बोर्ड नीचे पसंद है, उसपर क्लिक करें और तुरंत शामिल हों!", "no_global_rules_info": "कोई वैश्विक नियम नहीं हैं, प्रत्येक मंच पूरी तरह से स्वतंत्र है और इसके मालिक यह तय करता है कि कैसे/क्या उसे नियंत्रित किया जाए।", "boards": "मंच", - "popular_threads": "लोकप्रिय थ्रेड्स" + "popular_threads": "लोकप्रिय थ्रेड्स", + "options": "विकल्प" } \ No newline at end of file diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 4f5f02bb..14dccc19 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -5,5 +5,6 @@ "plebchan_description": "A Plebchan egy szerver nélküli, admin nélküli, decentralizált 4chan alternatíva, ahol bármelyik pleb létrehozhat és birtokolhat korlátlan fórumokat. Az adatok mindegyike a <1>plebbit protokollból származik, minden szöveg, beleértve a hivatkozásokat is, amelyekből a média be van ágyazva, peer-to-peer megosztással. A felhasználóknak nem kell fiókot regisztrálniuk a közösség részvételéhez. Kattints bármelyik lent lévő fórumra, amely érdekel, és csatlakozz azonnal!", "no_global_rules_info": "Nincsenek globális szabályok, minden fórum teljesen független, és tulajdonosa dönti el, hogyan/ha moderálja azt.", "boards": "fórumok", - "popular_threads": "Népszerű szálak" + "popular_threads": "Népszerű szálak", + "options": "Lehetőségek" } \ No newline at end of file diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 4d76ede6..bd285558 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan adalah alternatif 4chan tanpa server, tanpa admin, terdesentralisasi di mana siapa pun pleb bisa membuat dan memiliki papan tak terbatas. Semua data berasal dari protokol <1>plebbit, semuanya teks termasuk tautan dari mana media disematkan, dibagikan peer-to-peer. Pengguna tidak perlu mendaftar akun sebelum berpartisipasi dalam komunitas. Jangan ragu untuk mengklik papan di bawah yang menarik bagi Anda dan bergabung segera!", "no_global_rules_info": "Tidak ada aturan global, setiap papan adalah sepenuhnya independen dan pemiliknya yang menentukan bagaimana/apa yang dimoderasi.", "boards": "papan pesan", - "popular_threads": "Benang populer" + "popular_threads": "Benang populer", + "options": "Pilihan" } \ No newline at end of file diff --git a/public/translations/it/default.json b/public/translations/it/default.json index d5c896c3..24a65c5b 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -5,5 +5,6 @@ "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, 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", - "popular_threads": "Thread popolari" + "popular_threads": "Thread popolari", + "options": "Opzioni" } \ No newline at end of file diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 7b12d34b..15052451 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan は、サーバーレス、管理者なし、分散型の 4chan の代替であり、どんな pleb も無制限のボードを作成して所有できます。すべてのデータは、<1>plebbit プロトコルから取得され、すべてのテキスト、埋め込まれるメディアが含まれるリンク、ピアツーピアで共有されます。ユーザーはコミュニティに参加する前にアカウントを登録する必要はありません。興味のあるボードをクリックして、すぐに参加してください!", "no_global_rules_info": "グローバルなルールはありません、各掲示板は完全に独立しており、その所有者がそれをどのように/どのようにモデレートするかを決定します。", "boards": "掲示板", - "popular_threads": "人気のあるスレッド" + "popular_threads": "人気のあるスレッド", + "options": "オプション" } \ No newline at end of file diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 9c66dd04..cdb4b37f 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan은 서버 없이, 관리자 없이, 분산형인 4chan 대안으로 어떤 pleb도 무제한의 게시판을 생성하고 소유할 수 있습니다. 모든 데이터는 <1>plebbit 프로토콜에서 나온 것으로, 모두 텍스트이며, 그 안에 미디어가 포함된 링크를 통해 peer-to-peer로 공유됩니다. 사용자는 커뮤니티에 참여하기 전에 계정을 등록할 필요가 없습니다. 관심 있는 아래의 게시판을 클릭하고 바로 참여해보세요!", "no_global_rules_info": "전역 규칙이 없습니다. 각 게시판은 완전히 독립적이며 소유자가 어떻게/모디레이션할지를 결정합니다.", "boards": "게시판", - "popular_threads": "인기 있는 스레드" + "popular_threads": "인기 있는 스레드", + "options": "옵션" } \ No newline at end of file diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 856cf6c4..48628090 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -5,5 +5,6 @@ "plebchan_description": "प्लेबचॅन हा सर्व्हरलेस, एडमिनलेस, डीसेंट्रलाइझ्ड ४चॅनचा पर्याय आहे ज्यात कोणत्याही प्लेबला अमित बोर्ड तयार करून ठेवू शकतात. सर्व डेटा <1>प्लेबिट प्रोटोकॉलपासून आला आहे, ते सर्व पाठ आहेत, त्यातून मीडिया एम्बेड केला जातो, पीयर-ते-पीयर सामायिक केला जातो. वापरकर्त्यांना समुदायात सहभाग घेण्यापूर्वी खाते नोंदविण्याची आवश्यकता नाही. आपल्याला आवडता असलेला खालील बोर्ड क्लिक करून प्रवेश करा आणि लवकरच ज्वाइन करा!", "no_global_rules_info": "कोणत्याही जागतिक कायद्या नाहीत, प्रत्येक बोर्ड पूर्णपणे स्वतंत्र आहे आणि त्याचा मालक कसा/आणि कशा प्रकारे याची नियमन करावी हे त्याच्याकडून ठरतो.", "boards": "संदेश फलक", - "popular_threads": "लोकप्रिय थ्रेड्स" + "popular_threads": "लोकप्रिय थ्रेड्स", + "options": "पर्याय" } \ No newline at end of file diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 585ef712..09d12e95 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan is een serverloos, adminloos, gedecentraliseerd alternatief voor 4chan waar elke pleb onbeperkte forums kan maken en bezitten. Alle gegevens komen van het <1>plebbit-protocol, het is allemaal tekst inclusief links waaruit media is ingesloten, gedeeld peer-to-peer. Gebruikers hoeven geen account te registreren voordat ze deelnemen aan de community. Voel je vrij om op een forum hieronder te klikken dat je interesseert en spring er meteen in!", "no_global_rules_info": "Er zijn geen wereldwijde regels, elk forum is volledig onafhankelijk en de eigenaar beslist hoe/wel of niet te modereren.", "boards": "forums", - "popular_threads": "Populaire threads" + "popular_threads": "Populaire threads", + "options": "Opties" } \ No newline at end of file diff --git a/public/translations/no/default.json b/public/translations/no/default.json index b8c9e16b..e746d6aa 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan er et serverløst, adminløst, desentralisert alternativ til 4chan der hvilken som helst pleb kan opprette og eie ubegrensede fora. Alle data kommer fra protokollen <1>plebbit, det er all tekst inkludert lenker fra hvilke medier er innebygd, delt peer-to-peer. Brukere trenger ikke å registrere en konto før de deltar i fellesskapet. Ikke nøl med å klikke på et forum nedenfor som interesserer deg og bli med en gang!", "no_global_rules_info": "Det er ingen globale regler, hvert forum er helt uavhengig, og eieren bestemmer hvordan/om å moderere det.", "boards": "fora", - "popular_threads": "Populære tråder" + "popular_threads": "Populære tråder", + "options": "Alternativer" } \ No newline at end of file diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 31e4b561..760f06d9 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan to serwer, admin, zdecentralizowana alternatywa dla 4chan, gdzie każdy pleb może tworzyć i posiadać nieograniczone fora. Wszystkie dane pochodzą z protokołu <1>plebbit, są to same teksty, w tym linki, z których osadzone są media, udostępniane w trybie peer-to-peer. Użytkownicy nie muszą rejestrować konta przed uczestnictwem w społeczności. Śmiało kliknij na forum poniżej, które Cię interesuje, i dołącz!", "no_global_rules_info": "Nie ma globalnych zasad, każda tablica jest całkowicie niezależna, a jej właściciel decyduje, w jaki sposób/czy ją moderować.", "boards": "fora", - "popular_threads": "Popularne wątki" + "popular_threads": "Popularne wątki", + "options": "Opcje" } \ No newline at end of file diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index e96a5216..af2636b5 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan é uma alternativa descentralizada, sem servidor, sem administradores ao 4chan onde qualquer plebeu pode criar e possuir fóruns ilimitados. Todos os dados vêm do protocolo <1>plebbit, são todos textos incluindo links dos quais a mídia é incorporada, compartilhada peer-to-peer. Os usuários não precisam se registrar antes de participar da comunidade. Sinta-se à vontade para clicar em um fórum abaixo que lhe interesse e participar imediatamente!", "no_global_rules_info": "Não existem regras globais, cada fórum é completamente independente e o seu proprietário decide como/se o moderar.", "boards": "fóruns", - "popular_threads": "Tópicos populares" + "popular_threads": "Tópicos populares", + "options": "Opções" } \ No newline at end of file diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 5d309a59..124b16ef 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan este o alternativă descentralizată, fără server, fără administratori la 4chan, unde orice pleb poate crea și deține forumuri nelimitate. Toate datele vin de la protocolul <1>plebbit, sunt toate text inclusiv linkuri din care sunt încorporate media, distribuite peer-to-peer. Utilizatorii nu trebuie să-și înregistreze un cont înainte de a participa la comunitate. Nu ezitați să faceți clic pe un forum de mai jos care vă interesează și să vă alăturați imediat!", "no_global_rules_info": "Nu există reguli globale, fiecare forum este complet independent și proprietarul său decide cum/sau dacă să îl modereze.", "boards": "forumuri", - "popular_threads": "Threaduri populare" + "popular_threads": "Threaduri populare", + "options": "Opțiuni" } \ No newline at end of file diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 7525f383..adf66637 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan - это безсерверная, безадминистративная, децентрализованная альтернатива 4chan, где любой плеб может создавать и владеть неограниченным количеством форумов. Все данные поступают из протокола <1>plebbit, это весь текст, включая ссылки, из которых встроены медиа, и распространяются по сети peer-to-peer. Пользователи не должны регистрировать учетную запись перед участием в сообществе. Не стесняйтесь нажимать на форум ниже, который вас интересует, и присоединяйтесь немедленно!", "no_global_rules_info": "Нет глобальных правил, каждая доска полностью независима, и ее владелец решает, как/если ее модерировать.", "boards": "форумы", - "popular_threads": "Популярные темы" + "popular_threads": "Популярные темы", + "options": "Опции" } \ No newline at end of file diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 492e3430..cda01943 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan është një alternativë e 4chan decentralizuar, pa server, pa administratorë, ku çdo pleb mund të krijojë dhe të posedojë forume të pakufizuara. Të gjitha të dhënat vijnë nga protokoli <1>plebbit, janë të gjitha tekste duke përfshirë lidhjet nga të cilat mediat janë të mbështjellë, ndarë peer-to-peer. Përdoruesit nuk duhet të regjistrojnë një llogari para se të marrin pjesë në komunitet. Mos ngurroni të klikoni në një forum më poshtë që ju intereson dhe të bashkoheni menjëherë!", "no_global_rules_info": "Nuk ka rregulla globale, çdo forum është plotësisht i pavarur dhe pronari i tij vendos se si/nëse ta moderohet.", "boards": "forume", - "popular_threads": "Threadet e njohur" + "popular_threads": "Threadet e njohur", + "options": "Mundësitë" } \ No newline at end of file diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index e22b76b6..c9bf9353 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan är ett serverlöst, adminlöst, decentraliserat alternativ till 4chan där vilken pleb som helst kan skapa och äga obegränsade forum. Alla data kommer från protokollet <1>plebbit, det är all text inklusive länkar från vilka media bäddas in, delat peer-to-peer. Användare behöver inte registrera ett konto innan de deltar i gemenskapen. Tveka inte att klicka på ett forum nedan som intresserar dig och gå med direkt!", "no_global_rules_info": "Det finns inga globala regler, varje forum är helt oberoende och dess ägare bestämmer hur/om att moderera den.", "boards": "forum", - "popular_threads": "Populära trådar" + "popular_threads": "Populära trådar", + "options": "Alternativ" } \ No newline at end of file diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 48977e29..3ac4e2b5 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -5,5 +5,6 @@ "plebchan_description": "ప్లెబ్చాన్ ఒక సర్వర్ లేని, అడ్మిన్ లేని, డిసెంట్రలైజ్‌డ్ 4చాన్ వైకల్పికం దీనిలో ఏ ప్లెబ్ యొక్క సర్వర్లేస్, అడ్మిన్‌లేస్, అసంబద్ధ బోర్డులు సృష్టించవచ్చు. అన్ని డేటా <1>ప్లెబిట్ ప్రోటోకాల్‌నుండి వస్తాయి, అది అన్ని లింక్‌లు జాబితానుండి మీడియా ఎంబెడ్ చేయబడినపుడు ఉంటుంది, అది పీయర్‌టు‌పీయర్ గా పంపబడుతుంది. వాడుకరు కమ్యూనిటీలో పాల్గొనుటకు ముందు ఎకౌంటు నమోదు చేయాల్సిన అవసరం లేదు. మీకు ఆసక్తి కలిగించే బోర్డుకు క్లిక్ చేసి ప్రత్యక్షంగా చేరవచ్చు!", "no_global_rules_info": "గ్లోబల్ నియమాలు లేవు, ప్రతి బోర్డు పూర్తిగా స్వతంత్రంగా ఉంటుంది మరియు అది మాలిక ఏమి/అయితే అని నిర్వచించండి.", "boards": "సందేశ బోర్డులు", - "popular_threads": "జనప్రియమైన థ్రెడ్‌లు" + "popular_threads": "జనప్రియమైన థ్రెడ్‌లు", + "options": "ఎంపికలు" } \ No newline at end of file diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 4240ccdd..96a0a051 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan เป็นทางเลือกที่ไม่มีเซิร์ฟเวอร์ แอดมินไม่มี แบบกระจายสำหรับ 4chan ที่ใครก็สามารถสร้างและเป็นเจ้าของบอร์ดได้ไม่จำกัด ข้อมูลทั้งหมดมาจากโปรโตคอล <1>plebbit มันเป็นข้อความทั้งหมดที่รวมถึงลิงก์จากซึ่งมีสื่อที่ฝังอยู่ และแบ่งปันแบบ peer-to-peer ผู้ใช้ไม่จำเป็นต้องลงทะเบียนบัญชีก่อนที่จะเข้าร่วมชุมชน อย่าลังเลที่จะคลิกบอร์ดด้านล่างที่คุณสนใจและเข้าร่วมทันที!", "no_global_rules_info": "ไม่มีกฎทั่วโลกที่มีอยู่, แต่ละกระดานเป็นอิสระและเจ้าของกำหนดว่าจะ/จะไม่ต้องควบคุมมันอย่างไร", "boards": "กระดานข่าว", - "popular_threads": "กระทู้ยอดนิยม" + "popular_threads": "กระทู้ยอดนิยม", + "options": "ตัวเลือก" } \ No newline at end of file diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 0608f4f1..3354e2c4 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan, herhangi bir plebin sınırsız tahtalar oluşturabileceği ve sahip olabileceği sunucusuz, yöneticisiz, merkezi olmayan 4chan alternatifidir. Tüm veriler, tüm metinler ve yerleştirilen medyaların içinde bulunduğu bağlantılar da dahil olmak üzere <1>plebbit protokolünden gelir ve eşler arası olarak paylaşılır. Kullanıcıların topluluğa katılmadan önce bir hesap kaydetmelerine gerek yoktur. Sizi ilgilendiren aşağıdaki tahtaya tıklayın ve hemen katılın!", "no_global_rules_info": "Küresel kurallar yoktur, her forum tamamen bağımsızdır ve sahibi nasıl/modere edileceğine karar verir.", "boards": "forumlar", - "popular_threads": "Popüler konular" + "popular_threads": "Popüler konular", + "options": "Seçenekler" } \ No newline at end of file diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 1ac7c345..dfa080dd 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan - це безсерверний, безадміністративний, децентралізований альтернативний 4chan, де будь-який плеб може створити та володіти необмеженою кількістю форумів. Усі дані надходять з протоколу <1>plebbit, це весь текст, включаючи посилання, з яких вбудовані медіа, та розповсюджуються у режимі peer-to-peer. Користувачам не потрібно реєструвати обліковий запис перед участю в спільноті. Не соромтеся натискати на дошку нижче, яка цікавить вас, і приєднуйтеся одразу!", "no_global_rules_info": "Немає глобальних правил, кожна дошка цілком незалежна, і її власник вирішує, як/чи модерувати її.", "boards": "форуми", - "popular_threads": "Популярні теми" + "popular_threads": "Популярні теми", + "options": "Опції" } \ No newline at end of file diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 8d486ba3..f5b1f3c3 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -5,5 +5,6 @@ "plebchan_description": "پلیبچان ایک سرور کم، ایڈمن کم، غیر مرکزی 4chan کی بدلتا ہے جہاں ہر کوئی پلیب بے حد بورڈ بنا سکتا ہے اور مالک ہو سکتا ہے۔ تمام ڈیٹا پروٹوکول <1>پلیبٹ سے آتا ہے، یہ سب ٹیکسٹ ہے جس میں میڈیا شامل ہے، پیر-سے-پیر اشتراک کیا گیا ہے۔ صارفین کو بہمت شامل ہونے سے پہلے اکاؤنٹ رجسٹر کرانے کی ضرورت نہیں ہے۔ نیچے کسی بھی بورڈ پر کلک کریں جو آپ کو دلچسپ لگتا ہے اور فوراً شامل ہوں!", "no_global_rules_info": "کوئی عالمی اصول نہیں ہیں، ہر بورڈ مکمل طور پر آزاد ہے اور اس کا مالک یہ فیصلہ کرتا ہے کہ وہ کیسے/کیا اسے موڈریٹ کرے گا۔", "boards": "پیغام بورڈز", - "popular_threads": "مقبول تھریڈز" + "popular_threads": "مقبول تھریڈز", + "options": "اختیارات" } \ No newline at end of file diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index d4fe8e57..d1975bdc 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan là một lựa chọn phi tập trung, không có máy chủ, không có quản trị viên cho 4chan nơi bất kỳ pleb nào cũng có thể tạo và sở hữu các bảng không giới hạn. Tất cả dữ liệu đều đến từ giao thức <1>plebbit, đó là toàn bộ văn bản bao gồm cả liên kết từ đó các phương tiện được nhúng, được chia sẻ ngang hàng. Người dùng không cần đăng ký tài khoản trước khi tham gia cộng đồng. Hãy thoải mái nhấp vào một bảng dưới đây mà bạn quan tâm và tham gia ngay!", "no_global_rules_info": "Không có quy tắc toàn cầu, mỗi diễn đàn là hoàn toàn độc lập và chủ sở hữu quyết định cách/nếu muốn kiểm duyệt nó.", "boards": "diễn đàn", - "popular_threads": "Chủ đề phổ biến" + "popular_threads": "Chủ đề phổ biến", + "options": "Tùy chọn" } \ No newline at end of file diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 569dfec8..f4588f61 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -5,5 +5,6 @@ "plebchan_description": "Plebchan是4chan的无服务器,无管理员,去中心化替代品,任何平民都可以创建和拥有无限的板块。所有数据都来自<1>plebbit协议,所有内容都是文本,包括嵌入媒体的链接,采用对等方式共享。用户在参与社区之前无需注册帐户。随时点击下面您感兴趣的板块,立即加入吧!", "no_global_rules_info": "没有全球规则,每个板块都是完全独立的,其所有者决定如何/是否对其进行审查。", "boards": "论坛", - "popular_threads": "热门主题" + "popular_threads": "热门主题", + "options": "选项" } \ No newline at end of file diff --git a/src/hooks/use-default-subplebbits.ts b/src/hooks/use-default-subplebbits.ts new file mode 100644 index 00000000..4e2186c3 --- /dev/null +++ b/src/hooks/use-default-subplebbits.ts @@ -0,0 +1,41 @@ +import { useEffect, useMemo, useState } from 'react'; + +interface Subplebbit { + title?: string; + address: string; + tags?: string[]; + features?: string[]; +} + +let cache: Subplebbit[] | null = null; + +const useDefaultSubplebbits = () => { + const [subplebbits, setSubplebbits] = useState([]); + + useEffect(() => { + if (cache) { + return; + } + (async () => { + try { + const multisub = await fetch( + 'https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json', + // { cache: 'no-cache' } + ).then((res) => res.json()); + cache = multisub.subplebbits; + setSubplebbits(multisub.subplebbits); + } catch (e) { + console.warn(e); + } + })(); + }, []); + + return cache || subplebbits; +}; + +export const useDefaultSubplebbitAddresses = () => { + const defaultSubplebbits = useDefaultSubplebbits(); + return useMemo(() => defaultSubplebbits.map((subplebbit: Subplebbit) => subplebbit.address), [defaultSubplebbits]); +}; + +export default useDefaultSubplebbits; diff --git a/src/hooks/use-theme.ts b/src/hooks/use-theme.ts index d3601bff..426a7d63 100644 --- a/src/hooks/use-theme.ts +++ b/src/hooks/use-theme.ts @@ -6,7 +6,7 @@ interface ThemeState { } const useThemeStore = create((set: StoreApi['setState']) => ({ - theme: localStorage.getItem('theme') || 'yotsuba', + theme: localStorage.getItem('theme') || 'yotsuba-b', setTheme: (theme: string) => { localStorage.setItem('theme', theme); set({ theme }); diff --git a/src/themes.css b/src/themes.css index 091291a0..125620c8 100644 --- a/src/themes.css +++ b/src/themes.css @@ -5,10 +5,16 @@ --secondary-color: #fca; --text-color-on-primary: #fff; --text-color-on-secondary: #800; + --text-color-on-secondary-hover: #c63; --text-color-standard: #000; --text-color-inverse: #fff; --background-text-color: #fff; - --link-text-color: #00f; + --external-link-text-color: #00f; + --external-link-text-decoration: underline; + --internal-link-text-color: #800; + --internal-link-text-color-hover: #e00; + --internal-link-text-decoration: none; + --internal-link-text-decoration-hover: underline; } :root .yotsuba-b { @@ -18,8 +24,14 @@ --secondary-color: #98e; --text-color-on-primary: #000; --text-color-on-secondary: #000; + --text-color-on-secondary-hover: #fff; --text-color-standard: #000; --text-color-inverse: #fff; --background-text-color: #fff; - --link-text-color: #00f; + --external-link-text-color: #00f; + --external-link-text-decoration: underline; + --internal-link-text-color: #34345c; + --internal-link-text-color-hover: #d00; + --internal-link-text-decoration: none; + --internal-link-text-decoration-hover: underline; } diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index dbe2efda..f45bb575 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -29,6 +29,7 @@ } .box { + position: relative; background: var(--background-text-color); color: var(--text-color-standard); border: 1px solid; @@ -56,6 +57,19 @@ font-weight: 700; } +.boxBar span { + position: absolute; + top: 0; + right: 0; + padding-right: 0.25em; + text-transform: lowercase; +} + +.boxBar span:hover { + cursor: pointer; + color: var(--text-color-on-secondary-hover); +} + .boxContent { line-height: 1.5em; font-size: 93%; @@ -65,7 +79,7 @@ } .boxContent a, .boxContent a:visited{ - color: var(--link-text-color); + color: var(--external-link-text-color); } .searchBar { @@ -102,6 +116,39 @@ text-transform: capitalize; } +.list a { + display: inline-block; + color: var(--internal-link-text-color); + text-decoration: var(--internal-link-text-decoration); +} + +.list a:hover { + color: var(--internal-link-text-color-hover); + text-decoration: var(--internal-link-text-decoration-hover); +} + +.boardsBoxContent { + font-size: 93%; + padding: 0.5em; + padding-top: 0.25em; + padding-bottom: 0; + line-height: 130%; + display: table; +} + +.boardsBoxContent .column { + float: left; + width: 163px; + margin-right: 20px; + overflow: hidden; +} + +.boardsBoxContent h3 { + font-size: 100%; + font-weight: 700; + text-decoration: underline; + color: var(--text-color-on-secondary); +} @media (max-width: 768px) { .content { diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index 0a46366a..4b4c7880 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -2,6 +2,7 @@ import styles from './home.module.css'; import useTheme from '../../hooks/use-theme'; import { Link } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; +import { useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbits'; // TODO: remove theme and languages selectors for debugging const ThemeSettings = () => { @@ -40,9 +41,82 @@ const LanguageSettings = () => { ); }; -const Home = () => { +const SearchBar = () => { const { t } = useTranslation(); + return ( +
+ + +
+ ); +}; +const InfoBox = () => { + const { t } = useTranslation(); + return ( +
+
+

{t('what_is_plebchan')}

+
+
+ }} /> +
+
+ {t('no_global_rules_info')} +
+
+ ); +}; + +const Boards = () => { + const { t } = useTranslation(); + const defaultSubplebbitAddresses = useDefaultSubplebbitAddresses(); + + return ( +
+
+

{t('boards')}

+ {t('options')} ▼ +
+
+
+

Default SFW

+
+ {defaultSubplebbitAddresses.map((address) => ( +
+ {address} +
+ ))} +
+
+
+

Default NSFW

+
+
+

Subscriptions

+
+
+

Moderating

+
+
+
+ ); +}; + +const PopularThreads = () => { + const { t } = useTranslation(); + return ( +
+
+

{t('popular_threads')}

+ {t('options')} ▼ +
+
+
+ ); +}; + +const Home = () => { return (
@@ -54,33 +128,10 @@ const Home = () => { plebchan
-
- - -
-
-
-

{t('what_is_plebchan')}

-
-
- }} /> -
-
- {t('no_global_rules_info')} -
-
-
-
-

{t('boards')}

-
-
-
-
-
-

{t('popular_threads')}

-
-
-
+ + + +
); }; From b57e49ac38743c8a175f30777a73cf8b6baf901f Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Sat, 2 Mar 2024 11:38:27 +0100 Subject: [PATCH 04/14] Delete script.sh --- public/translations/script.sh | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100755 public/translations/script.sh diff --git a/public/translations/script.sh b/public/translations/script.sh deleted file mode 100755 index 59f45794..00000000 --- a/public/translations/script.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -# Array of languages -languages=('ar' 'bn' 'cs' 'da' 'de' 'el' 'en' 'es' 'fa' 'fi' 'fil' 'fr' 'he' 'hi' 'hu' 'id' 'it' 'ja' 'ko' 'mr' 'nl' 'no' 'pl' 'pt' 'ro' 'ru' 'sq' 'sv' 'te' 'th' 'tr' 'uk' 'ur' 'vi' 'zh') - -# Create directories and default.json files -for lang in "${languages[@]}"; do - mkdir -p "$lang" - touch "$lang/default.json" -done From 8880c2c92f6a2115991e33b9a2fa5da58108f83b Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Fri, 15 Mar 2024 15:53:50 +0100 Subject: [PATCH 05/14] Create banner-24.jpg --- public/assets/banners/banner-24.jpg | Bin 0 -> 75686 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/assets/banners/banner-24.jpg diff --git a/public/assets/banners/banner-24.jpg b/public/assets/banners/banner-24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15bd15766cbafbaea87457c716da55091d5e3d2a GIT binary patch literal 75686 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 z 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 Date: Fri, 15 Mar 2024 15:54:07 +0100 Subject: [PATCH 06/14] chore(translations): stats --- public/translations/ar/default.json | 3 ++- public/translations/bn/default.json | 3 ++- public/translations/cs/default.json | 3 ++- public/translations/da/default.json | 3 ++- public/translations/de/default.json | 3 ++- public/translations/el/default.json | 3 ++- public/translations/en/default.json | 3 ++- public/translations/es/default.json | 3 ++- public/translations/fa/default.json | 3 ++- public/translations/fi/default.json | 3 ++- public/translations/fil/default.json | 3 ++- public/translations/fr/default.json | 3 ++- public/translations/he/default.json | 3 ++- public/translations/hi/default.json | 3 ++- public/translations/hu/default.json | 3 ++- public/translations/id/default.json | 3 ++- public/translations/it/default.json | 3 ++- public/translations/ja/default.json | 3 ++- public/translations/ko/default.json | 3 ++- public/translations/mr/default.json | 3 ++- public/translations/nl/default.json | 3 ++- public/translations/no/default.json | 3 ++- public/translations/pl/default.json | 3 ++- public/translations/pt/default.json | 3 ++- public/translations/ro/default.json | 3 ++- public/translations/ru/default.json | 3 ++- public/translations/sq/default.json | 3 ++- public/translations/sv/default.json | 3 ++- public/translations/te/default.json | 3 ++- public/translations/th/default.json | 3 ++- public/translations/tr/default.json | 3 ++- public/translations/uk/default.json | 3 ++- public/translations/ur/default.json | 3 ++- public/translations/vi/default.json | 3 ++- public/translations/zh/default.json | 3 ++- 35 files changed, 70 insertions(+), 35 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 38102ba8..4f75db6c 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "لا توجد قواعد عالمية، كل منتدى مستقل تمامًا وصاحبه يقرر كيفية/ما إذا كان يعتد به.", "boards": "منتديات", "popular_threads": "المواضيع الشائعة", - "options": "الخيارات" + "options": "الخيارات", + "stats": "إحصائيات" } \ No newline at end of file diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 421e0bcd..5b125da2 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "কোন গ্লোবাল নিয়ম নেই, প্রতিটি বোর্ড সম্পূর্ণভাবে স্বতন্ত্র এবং তার মালিক কীভাবে/যদি তা নিয়ন্ত্রণ করতে চায় তা নির্ধারণ করে।", "boards": "বোর্ডসমূহ", "popular_threads": "জনপ্রিয় থ্রেডগুলি", - "options": "বিকল্পগুলি" + "options": "বিকল্পগুলি", + "stats": "পরিসংখ্যান" } \ No newline at end of file diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index e7760065..e84f5c95 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Žádná globální pravidla neexistují, každá nástěnka je zcela nezávislá a její vlastník rozhoduje o tom, jak/či ji moderovat.", "boards": "nástěnky", "popular_threads": "Oblíbená vlákna", - "options": "Možnosti" + "options": "Možnosti", + "stats": "Statistiky" } \ No newline at end of file diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 8ab2ae13..5b8dd39b 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Der er ingen globale regler, hver opslagstavle er helt uafhængig, og dens ejer beslutter hvordan/om at moderere den.", "boards": "opslagstavler", "popular_threads": "Populære tråde", - "options": "Indstillinger" + "options": "Indstillinger", + "stats": "Statistik" } \ No newline at end of file diff --git a/public/translations/de/default.json b/public/translations/de/default.json index ecd5d31b..a64e99a6 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Es gibt keine globalen Regeln, jedes Forum ist völlig unabhängig und sein Besitzer entscheidet, wie/ob es moderiert wird.", "boards": "Foren", "popular_threads": "Beliebte Threads", - "options": "Optionen" + "options": "Optionen", + "stats": "Statistiken" } \ No newline at end of file diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 65399980..7a06cba7 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Δεν υπάρχουν παγκόσμιοι κανόνες, κάθε Διαδικτυακή πίνακας είναι εντελώς ανεξάρτητος και ο ιδιοκτήτης του αποφασίζει πώς/εάν να τον ελέγξει.", "boards": "διαδικτυακές πινακίδες", "popular_threads": "Δημοφιλή νήματα", - "options": "Επιλογές" + "options": "Επιλογές", + "stats": "Στατιστικά" } \ No newline at end of file diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 68960192..41a3bc42 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "There are no global rules, each board is completely independent and its owner decides how/if to moderate it.", "boards": "boards", "popular_threads": "Popular threads", - "options": "Options" + "options": "Options", + "stats": "Stats" } \ No newline at end of file diff --git a/public/translations/es/default.json b/public/translations/es/default.json index c3371c11..bfe5297f 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "No hay reglas globales, cada foro es completamente independiente y su propietario decide cómo/si moderarlo.", "boards": "foros", "popular_threads": "Hilos populares", - "options": "Opciones" + "options": "Opciones", + "stats": "Estadísticas" } \ No newline at end of file diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index d0dc3be5..eb25c1fd 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "هیچ قانون جهانی وجود ندارد، هر تالار کاملا مستقل است و مالک آن تصمیم می‌گیرد چگونه/آیا آن را نظارت کند.", "boards": "تالارهای پیام", "popular_threads": "نخستین موضوعات", - "options": "گزینه ها" + "options": "گزینه ها", + "stats": "آمار" } \ No newline at end of file diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 0adf723b..73d16ce4 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Maailmanlaajuisia sääntöjä ei ole, jokainen foorumi on täysin itsenäinen ja sen omistaja päättää kuinka / onko se säännelty.", "boards": "foorumit", "popular_threads": "Suositut langat", - "options": "Vaihtoehdot" + "options": "Vaihtoehdot", + "stats": "Tilastot" } \ No newline at end of file diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 46ab6cf3..a8f13db8 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Walang global na mga patakaran, bawat board ay lubusang independiyente at ang may-ari nito ang nagdedesisyon kung paano / kung ito ay isasakdal.", "boards": "mga board", "popular_threads": "Mga popular na thread", - "options": "Mga opsyon" + "options": "Mga opsyon", + "stats": "Estadistika" } \ No newline at end of file diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 35b4f215..2d5628dd 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Il n'y a pas de règles globales, chaque forum est complètement indépendant et son propriétaire décide comment/s'il doit le modérer.", "boards": "forums", "popular_threads": "Fils populaires", - "options": "Options" + "options": "Options", + "stats": "Statistiques" } \ No newline at end of file diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 39b9d09f..1efe9ac2 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "אין כלל כללי, כל לוח הודעות הוא לחוד ובעליו מחליט איך/האם להודיע על זה.", "boards": "פורומים", "popular_threads": "אשכולות פופולריים", - "options": "אפשרויות" + "options": "אפשרויות", + "stats": "סטטיסטיקות" } \ No newline at end of file diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index adbbaf66..b45f1b17 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "कोई वैश्विक नियम नहीं हैं, प्रत्येक मंच पूरी तरह से स्वतंत्र है और इसके मालिक यह तय करता है कि कैसे/क्या उसे नियंत्रित किया जाए।", "boards": "मंच", "popular_threads": "लोकप्रिय थ्रेड्स", - "options": "विकल्प" + "options": "विकल्प", + "stats": "आँकड़े" } \ No newline at end of file diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 14dccc19..8077bbba 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Nincsenek globális szabályok, minden fórum teljesen független, és tulajdonosa dönti el, hogyan/ha moderálja azt.", "boards": "fórumok", "popular_threads": "Népszerű szálak", - "options": "Lehetőségek" + "options": "Lehetőségek", + "stats": "Statisztikák" } \ No newline at end of file diff --git a/public/translations/id/default.json b/public/translations/id/default.json index bd285558..0c16053f 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Tidak ada aturan global, setiap papan adalah sepenuhnya independen dan pemiliknya yang menentukan bagaimana/apa yang dimoderasi.", "boards": "papan pesan", "popular_threads": "Benang populer", - "options": "Pilihan" + "options": "Pilihan", + "stats": "Statistik" } \ No newline at end of file diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 24a65c5b..bc495ad2 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Non ci sono regole globali, ogni forum è completamente indipendente e il suo proprietario decide come/se moderarlo.", "boards": "forum", "popular_threads": "Thread popolari", - "options": "Opzioni" + "options": "Opzioni", + "stats": "Statistiche" } \ No newline at end of file diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 15052451..989c086e 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "グローバルなルールはありません、各掲示板は完全に独立しており、その所有者がそれをどのように/どのようにモデレートするかを決定します。", "boards": "掲示板", "popular_threads": "人気のあるスレッド", - "options": "オプション" + "options": "オプション", + "stats": "統計" } \ No newline at end of file diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index cdb4b37f..fc887ba4 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "전역 규칙이 없습니다. 각 게시판은 완전히 독립적이며 소유자가 어떻게/모디레이션할지를 결정합니다.", "boards": "게시판", "popular_threads": "인기 있는 스레드", - "options": "옵션" + "options": "옵션", + "stats": "통계" } \ No newline at end of file diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 48628090..2cc3fc61 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "कोणत्याही जागतिक कायद्या नाहीत, प्रत्येक बोर्ड पूर्णपणे स्वतंत्र आहे आणि त्याचा मालक कसा/आणि कशा प्रकारे याची नियमन करावी हे त्याच्याकडून ठरतो.", "boards": "संदेश फलक", "popular_threads": "लोकप्रिय थ्रेड्स", - "options": "पर्याय" + "options": "पर्याय", + "stats": "सांख्यिकी" } \ No newline at end of file diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 09d12e95..ea794d5d 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Er zijn geen wereldwijde regels, elk forum is volledig onafhankelijk en de eigenaar beslist hoe/wel of niet te modereren.", "boards": "forums", "popular_threads": "Populaire threads", - "options": "Opties" + "options": "Opties", + "stats": "Statistieken" } \ No newline at end of file diff --git a/public/translations/no/default.json b/public/translations/no/default.json index e746d6aa..1bbe94ff 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Det er ingen globale regler, hvert forum er helt uavhengig, og eieren bestemmer hvordan/om å moderere det.", "boards": "fora", "popular_threads": "Populære tråder", - "options": "Alternativer" + "options": "Alternativer", + "stats": "Statistikk" } \ No newline at end of file diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 760f06d9..5b035412 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Nie ma globalnych zasad, każda tablica jest całkowicie niezależna, a jej właściciel decyduje, w jaki sposób/czy ją moderować.", "boards": "fora", "popular_threads": "Popularne wątki", - "options": "Opcje" + "options": "Opcje", + "stats": "Statystyki" } \ No newline at end of file diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index af2636b5..8d5a07cf 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Não existem regras globais, cada fórum é completamente independente e o seu proprietário decide como/se o moderar.", "boards": "fóruns", "popular_threads": "Tópicos populares", - "options": "Opções" + "options": "Opções", + "stats": "Estatísticas" } \ No newline at end of file diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 124b16ef..26268c08 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Nu există reguli globale, fiecare forum este complet independent și proprietarul său decide cum/sau dacă să îl modereze.", "boards": "forumuri", "popular_threads": "Threaduri populare", - "options": "Opțiuni" + "options": "Opțiuni", + "stats": "Statistici" } \ No newline at end of file diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index adf66637..b3383335 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Нет глобальных правил, каждая доска полностью независима, и ее владелец решает, как/если ее модерировать.", "boards": "форумы", "popular_threads": "Популярные темы", - "options": "Опции" + "options": "Опции", + "stats": "Статистика" } \ No newline at end of file diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index cda01943..466c63fd 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Nuk ka rregulla globale, çdo forum është plotësisht i pavarur dhe pronari i tij vendos se si/nëse ta moderohet.", "boards": "forume", "popular_threads": "Threadet e njohur", - "options": "Mundësitë" + "options": "Mundësitë", + "stats": "Statistikat" } \ No newline at end of file diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index c9bf9353..7cc97b40 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Det finns inga globala regler, varje forum är helt oberoende och dess ägare bestämmer hur/om att moderera den.", "boards": "forum", "popular_threads": "Populära trådar", - "options": "Alternativ" + "options": "Alternativ", + "stats": "Statistik" } \ No newline at end of file diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 3ac4e2b5..1c7cc395 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "గ్లోబల్ నియమాలు లేవు, ప్రతి బోర్డు పూర్తిగా స్వతంత్రంగా ఉంటుంది మరియు అది మాలిక ఏమి/అయితే అని నిర్వచించండి.", "boards": "సందేశ బోర్డులు", "popular_threads": "జనప్రియమైన థ్రెడ్‌లు", - "options": "ఎంపికలు" + "options": "ఎంపికలు", + "stats": "సాంకేతికం" } \ No newline at end of file diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 96a0a051..63a5d8cb 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "ไม่มีกฎทั่วโลกที่มีอยู่, แต่ละกระดานเป็นอิสระและเจ้าของกำหนดว่าจะ/จะไม่ต้องควบคุมมันอย่างไร", "boards": "กระดานข่าว", "popular_threads": "กระทู้ยอดนิยม", - "options": "ตัวเลือก" + "options": "ตัวเลือก", + "stats": "สถิติ" } \ No newline at end of file diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 3354e2c4..258ccd67 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Küresel kurallar yoktur, her forum tamamen bağımsızdır ve sahibi nasıl/modere edileceğine karar verir.", "boards": "forumlar", "popular_threads": "Popüler konular", - "options": "Seçenekler" + "options": "Seçenekler", + "stats": "İstatistikler" } \ No newline at end of file diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index dfa080dd..0471407d 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Немає глобальних правил, кожна дошка цілком незалежна, і її власник вирішує, як/чи модерувати її.", "boards": "форуми", "popular_threads": "Популярні теми", - "options": "Опції" + "options": "Опції", + "stats": "Статистика" } \ No newline at end of file diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index f5b1f3c3..201e8fc6 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "کوئی عالمی اصول نہیں ہیں، ہر بورڈ مکمل طور پر آزاد ہے اور اس کا مالک یہ فیصلہ کرتا ہے کہ وہ کیسے/کیا اسے موڈریٹ کرے گا۔", "boards": "پیغام بورڈز", "popular_threads": "مقبول تھریڈز", - "options": "اختیارات" + "options": "اختیارات", + "stats": "احصائیہ" } \ No newline at end of file diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index d1975bdc..7797cb61 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "Không có quy tắc toàn cầu, mỗi diễn đàn là hoàn toàn độc lập và chủ sở hữu quyết định cách/nếu muốn kiểm duyệt nó.", "boards": "diễn đàn", "popular_threads": "Chủ đề phổ biến", - "options": "Tùy chọn" + "options": "Tùy chọn", + "stats": "Thống kê" } \ No newline at end of file diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index f4588f61..cd8175f8 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -6,5 +6,6 @@ "no_global_rules_info": "没有全球规则,每个板块都是完全独立的,其所有者决定如何/是否对其进行审查。", "boards": "论坛", "popular_threads": "热门主题", - "options": "选项" + "options": "选项", + "stats": "统计" } \ No newline at end of file From 3f8d3dd9d1ae4fd4c06263a0933864fac81a03c7 Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Fri, 15 Mar 2024 22:42:13 +0100 Subject: [PATCH 07/14] update homepage, css themes --- src/hooks/use-theme.ts | 2 +- src/themes.css | 40 ++++++++++++++----- src/views/home/home.module.css | 49 +++++++++++++++++++----- src/views/home/home.tsx | 70 ++++++++++++++++++++++++++++++++-- 4 files changed, 138 insertions(+), 23 deletions(-) diff --git a/src/hooks/use-theme.ts b/src/hooks/use-theme.ts index 426a7d63..d3601bff 100644 --- a/src/hooks/use-theme.ts +++ b/src/hooks/use-theme.ts @@ -6,7 +6,7 @@ interface ThemeState { } const useThemeStore = create((set: StoreApi['setState']) => ({ - theme: localStorage.getItem('theme') || 'yotsuba-b', + theme: localStorage.getItem('theme') || 'yotsuba', setTheme: (theme: string) => { localStorage.setItem('theme', theme); set({ theme }); diff --git a/src/themes.css b/src/themes.css index 125620c8..672065b9 100644 --- a/src/themes.css +++ b/src/themes.css @@ -1,11 +1,13 @@ :root .yotsuba { --background-base-color: #ffe; --background-pattern-image: url("/public/assets/background-fade.png"); - --primary-color: #800; - --secondary-color: #fca; - --text-color-on-primary: #fff; - --text-color-on-secondary: #800; - --text-color-on-secondary-hover: #c63; + --color1: #800; + --color2: #fca; + --color3: #fed; + --text-color: maroon; + --text-color-on-color1: #fff; + --text-color-on-color2: #800; + --text-color-on-color2-hover: #c63; --text-color-standard: #000; --text-color-inverse: #fff; --background-text-color: #fff; @@ -15,16 +17,19 @@ --internal-link-text-color-hover: #e00; --internal-link-text-decoration: none; --internal-link-text-decoration-hover: underline; + --box-border-color: #800; } :root .yotsuba-b { --background-base-color: #eef2ff; --background-pattern-image: url("/public/assets/background-fade-blue.png"); - --primary-color: #98e; - --secondary-color: #98e; - --text-color-on-primary: #000; - --text-color-on-secondary: #000; - --text-color-on-secondary-hover: #fff; + --color1: #98e; + --color2: #98e; + --color3: #eef2ff; + --text-color: #000; + --text-color-on-color1: #000; + --text-color-on-color2: #000; + --text-color-on-color2-hover: #fff; --text-color-standard: #000; --text-color-inverse: #fff; --background-text-color: #fff; @@ -34,4 +39,19 @@ --internal-link-text-color-hover: #d00; --internal-link-text-decoration: none; --internal-link-text-decoration-hover: underline; + --box-border-color: #000; } + +:root .tomorrow { + --background-base-color: #1d1f21; + --background-pattern-image: none; + --color1: rgb(33, 35, 38); + --color2: rgb(33, 35, 38); + --text-color: #c5c8c6; + --text-color-standard: #c5c8c6; + --text-color-on-color1: #c5c8c6; + --text-color-on-color2: #c5c8c6; + --text-color-on-color3: #c5c8c6; + --background-text-color: #282a2e; + --box-border-color: rgb(45, 47, 51); +} \ No newline at end of file diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index f45bb575..792758f4 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -32,7 +32,7 @@ position: relative; background: var(--background-text-color); color: var(--text-color-standard); - border: 1px solid; + border: 1px solid var(--box-border-color); margin-bottom: 0.5em; padding-bottom: 0.5em; } @@ -42,14 +42,14 @@ line-height: 2em; } -.primaryColorBar { - background: var(--primary-color); - color: var(--text-color-on-primary); +.color1ColorBar { + background: var(--color1); + color: var(--text-color-on-color1); } -.secondaryColorBar { - background: var(--secondary-color); - color: var(--text-color-on-secondary); +.color2ColorBar { + background: var(--color2); + color: var(--text-color-on-color2); } .boxBar h2 { @@ -67,7 +67,7 @@ .boxBar span:hover { cursor: pointer; - color: var(--text-color-on-secondary-hover); + color: var(--text-color-on-color2-hover); } .boxContent { @@ -78,6 +78,10 @@ padding-bottom: 0; } +.boxContent a { + text-decoration: underline; +} + .boxContent a, .boxContent a:visited{ color: var(--external-link-text-color); } @@ -147,7 +151,34 @@ font-size: 100%; font-weight: 700; text-decoration: underline; - color: var(--text-color-on-secondary); + color: var(--text-color-on-color2); +} + +.footer { + border-top: 1px solid; + width: 750px; + display: inline-flex; + align-items: center; + font-size: 12px; + justify-content: center; +} + +.footer li { + background: var(--color3); + border: 1px solid; + padding: 2px 1em 2px 1em; + border-left: none; + margin-top: -1px; + list-style: none; +} + +.footer li:first-child { + border-left: 1px solid !important; +} + +a { + color: var(--text-color-on-color2); + text-decoration: none; } @media (max-width: 768px) { diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index 4b4c7880..25d99943 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -3,6 +3,7 @@ import useTheme from '../../hooks/use-theme'; import { Link } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; import { useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbits'; +import { useEffect } from 'react'; // TODO: remove theme and languages selectors for debugging const ThemeSettings = () => { @@ -12,6 +13,7 @@ const ThemeSettings = () => { ); }; @@ -55,7 +57,7 @@ const InfoBox = () => { const { t } = useTranslation(); return (
-
+

{t('what_is_plebchan')}

@@ -74,7 +76,7 @@ const Boards = () => { return (
-
+

{t('boards')}

{t('options')} ▼
@@ -107,7 +109,7 @@ const PopularThreads = () => { const { t } = useTranslation(); return (
-
+

{t('popular_threads')}

{t('options')} ▼
@@ -116,7 +118,67 @@ const PopularThreads = () => { ); }; +const Stats = () => { + const { t } = useTranslation(); + return ( +
+
+

{t('stats')}

+
+
+
+ ); +}; + +const Footer = () => { + return ( +
+ ); +}; + const Home = () => { + const [, setTheme] = useTheme(); + + useEffect(() => { + setTheme('yotsuba'); + }, [setTheme]); + return (
@@ -132,6 +194,8 @@ const Home = () => { + +
); }; From 46ee42829b02147449ee3340fe7674c28157eb84 Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Sat, 16 Mar 2024 13:35:41 +0100 Subject: [PATCH 08/14] style(home): add mobile styling to footer --- src/views/home/home.module.css | 75 ++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 27 deletions(-) diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index 792758f4..d88aeda2 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -154,37 +154,58 @@ color: var(--text-color-on-color2); } -.footer { - border-top: 1px solid; - width: 750px; - display: inline-flex; - align-items: center; - font-size: 12px; - justify-content: center; -} - -.footer li { - background: var(--color3); - border: 1px solid; - padding: 2px 1em 2px 1em; - border-left: none; - margin-top: -1px; - list-style: none; -} - -.footer li:first-child { - border-left: 1px solid !important; -} - -a { - color: var(--text-color-on-color2); - text-decoration: none; -} - @media (max-width: 768px) { .content { min-width: 0; width: auto; padding: 10px; } + + .footer { + text-align: center; + } + + .footer ul { + margin: auto; + } + + .footer li { + display: inline-table; + line-height: 1.7; + white-space: nowrap; + padding: 2px 1em 2px 1em; + } + + .footer a { + color: var(--external-link-text-color); + text-decoration: underline; + } +} + +@media (min-width: 640px) { + .footer { + border-top: 1px solid; + width: 750px; + display: inline-flex; + justify-content: center; + font-size: 12px; + } + + .footer li { + background: var(--color3); + border: 1px solid; + padding: 2px 1em 2px 1em; + border-left: none; + margin-top: -1px; + list-style: none; + } + + .footer li:first-child { + border-left: 1px solid !important; + } + + .footer a { + color: var(--text-color-on-color2); + text-decoration: none; + } } \ No newline at end of file From 3a6f6cf20c6926dd83af40bebf5aede19c86fe71 Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Sat, 16 Mar 2024 13:52:06 +0100 Subject: [PATCH 09/14] chore(translations): about, whitepaper, token, download app --- public/translations/ar/default.json | 6 +++++- public/translations/bn/default.json | 6 +++++- public/translations/cs/default.json | 6 +++++- public/translations/da/default.json | 6 +++++- public/translations/de/default.json | 6 +++++- public/translations/el/default.json | 6 +++++- public/translations/en/default.json | 6 +++++- public/translations/es/default.json | 6 +++++- public/translations/fa/default.json | 6 +++++- public/translations/fi/default.json | 6 +++++- public/translations/fil/default.json | 6 +++++- public/translations/fr/default.json | 6 +++++- public/translations/he/default.json | 6 +++++- public/translations/hi/default.json | 6 +++++- public/translations/hu/default.json | 6 +++++- public/translations/id/default.json | 6 +++++- public/translations/it/default.json | 6 +++++- public/translations/ja/default.json | 6 +++++- public/translations/ko/default.json | 6 +++++- public/translations/mr/default.json | 6 +++++- public/translations/nl/default.json | 6 +++++- public/translations/no/default.json | 6 +++++- public/translations/pl/default.json | 6 +++++- public/translations/pt/default.json | 6 +++++- public/translations/ro/default.json | 6 +++++- public/translations/ru/default.json | 6 +++++- public/translations/sq/default.json | 6 +++++- public/translations/sv/default.json | 6 +++++- public/translations/te/default.json | 6 +++++- public/translations/th/default.json | 6 +++++- public/translations/tr/default.json | 6 +++++- public/translations/uk/default.json | 6 +++++- public/translations/ur/default.json | 6 +++++- public/translations/vi/default.json | 6 +++++- public/translations/zh/default.json | 6 +++++- src/views/home/home.module.css | 4 ++++ src/views/home/home.tsx | 13 ++++++++++--- 37 files changed, 189 insertions(+), 38 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 4f75db6c..052869e1 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -7,5 +7,9 @@ "boards": "منتديات", "popular_threads": "المواضيع الشائعة", "options": "الخيارات", - "stats": "إحصائيات" + "stats": "إحصائيات", + "about": "حول", + "whitepaper": "ورقة بيضاء", + "token": "رمز", + "download_app": "تحميل التطبيق" } \ No newline at end of file diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 5b125da2..4e06fc66 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -7,5 +7,9 @@ "boards": "বোর্ডসমূহ", "popular_threads": "জনপ্রিয় থ্রেডগুলি", "options": "বিকল্পগুলি", - "stats": "পরিসংখ্যান" + "stats": "পরিসংখ্যান", + "about": "সম্পর্কিত", + "whitepaper": "হোয়াইট পেপার", + "token": "টোকেন", + "download_app": "অ্যাপ ডাউনলোড করুন" } \ No newline at end of file diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index e84f5c95..d4fcf7f8 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -7,5 +7,9 @@ "boards": "nástěnky", "popular_threads": "Oblíbená vlákna", "options": "Možnosti", - "stats": "Statistiky" + "stats": "Statistiky", + "about": "O nás", + "whitepaper": "Bílá kniha", + "token": "Token", + "download_app": "Stáhnout aplikaci" } \ No newline at end of file diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 5b8dd39b..adba35c3 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -7,5 +7,9 @@ "boards": "opslagstavler", "popular_threads": "Populære tråde", "options": "Indstillinger", - "stats": "Statistik" + "stats": "Statistik", + "about": "Om", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Download app" } \ No newline at end of file diff --git a/public/translations/de/default.json b/public/translations/de/default.json index a64e99a6..ee2231be 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -7,5 +7,9 @@ "boards": "Foren", "popular_threads": "Beliebte Threads", "options": "Optionen", - "stats": "Statistiken" + "stats": "Statistiken", + "about": "Über", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "App herunterladen" } \ No newline at end of file diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 7a06cba7..d5b395ef 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -7,5 +7,9 @@ "boards": "διαδικτυακές πινακίδες", "popular_threads": "Δημοφιλή νήματα", "options": "Επιλογές", - "stats": "Στατιστικά" + "stats": "Στατιστικά", + "about": "Σχετικά", + "whitepaper": "Λευκή Βίβλος", + "token": "Τόκεν", + "download_app": "Λήψη εφαρμογής" } \ No newline at end of file diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 41a3bc42..29bc443e 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -7,5 +7,9 @@ "boards": "boards", "popular_threads": "Popular threads", "options": "Options", - "stats": "Stats" + "stats": "Stats", + "about": "About", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Download app" } \ No newline at end of file diff --git a/public/translations/es/default.json b/public/translations/es/default.json index bfe5297f..f27e7989 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -7,5 +7,9 @@ "boards": "foros", "popular_threads": "Hilos populares", "options": "Opciones", - "stats": "Estadísticas" + "stats": "Estadísticas", + "about": "Acerca de", + "whitepaper": "Libro blanco", + "token": "Token", + "download_app": "Descargar la aplicación" } \ No newline at end of file diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index eb25c1fd..88c9b609 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -7,5 +7,9 @@ "boards": "تالارهای پیام", "popular_threads": "نخستین موضوعات", "options": "گزینه ها", - "stats": "آمار" + "stats": "آمار", + "about": "درباره", + "whitepaper": "کاغذ سفید", + "token": "توکن", + "download_app": "دانلود اپلیکیشن" } \ No newline at end of file diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 73d16ce4..cdc3edc2 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -7,5 +7,9 @@ "boards": "foorumit", "popular_threads": "Suositut langat", "options": "Vaihtoehdot", - "stats": "Tilastot" + "stats": "Tilastot", + "about": "Tietoa", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Lataa sovellus" } \ No newline at end of file diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index a8f13db8..76d3a889 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -7,5 +7,9 @@ "boards": "mga board", "popular_threads": "Mga popular na thread", "options": "Mga opsyon", - "stats": "Estadistika" + "stats": "Estadistika", + "about": "Tungkol sa", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "I-download ang app" } \ No newline at end of file diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 2d5628dd..e71391cb 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -7,5 +7,9 @@ "boards": "forums", "popular_threads": "Fils populaires", "options": "Options", - "stats": "Statistiques" + "stats": "Statistiques", + "about": "À propos de", + "whitepaper": "Livre blanc", + "token": "Jeton", + "download_app": "Télécharger l'application" } \ No newline at end of file diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 1efe9ac2..86adf33f 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -7,5 +7,9 @@ "boards": "פורומים", "popular_threads": "אשכולות פופולריים", "options": "אפשרויות", - "stats": "סטטיסטיקות" + "stats": "סטטיסטיקות", + "about": "אודות", + "whitepaper": "מסמך לבן", + "token": "אסימון", + "download_app": "הורד את האפליקציה" } \ No newline at end of file diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index b45f1b17..8918d927 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -7,5 +7,9 @@ "boards": "मंच", "popular_threads": "लोकप्रिय थ्रेड्स", "options": "विकल्प", - "stats": "आँकड़े" + "stats": "आँकड़े", + "about": "के बारे में", + "whitepaper": "व्हाइटपेपर", + "token": "टोकन", + "download_app": "ऐप डाउनलोड करें" } \ No newline at end of file diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 8077bbba..618829b5 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -7,5 +7,9 @@ "boards": "fórumok", "popular_threads": "Népszerű szálak", "options": "Lehetőségek", - "stats": "Statisztikák" + "stats": "Statisztikák", + "about": "Rólunk", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "App letöltése" } \ No newline at end of file diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 0c16053f..c7481905 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -7,5 +7,9 @@ "boards": "papan pesan", "popular_threads": "Benang populer", "options": "Pilihan", - "stats": "Statistik" + "stats": "Statistik", + "about": "Tentang", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Unduh aplikasi" } \ No newline at end of file diff --git a/public/translations/it/default.json b/public/translations/it/default.json index bc495ad2..4ed31157 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -7,5 +7,9 @@ "boards": "forum", "popular_threads": "Thread popolari", "options": "Opzioni", - "stats": "Statistiche" + "stats": "Statistiche", + "about": "Info", + "whitepaper": "Libro bianco", + "token": "Token", + "download_app": "Scarica app" } \ No newline at end of file diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 989c086e..8783ad42 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -7,5 +7,9 @@ "boards": "掲示板", "popular_threads": "人気のあるスレッド", "options": "オプション", - "stats": "統計" + "stats": "統計", + "about": "約", + "whitepaper": "ホワイトペーパー", + "token": "トークン", + "download_app": "アプリをダウンロード" } \ No newline at end of file diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index fc887ba4..ee0fe24d 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -7,5 +7,9 @@ "boards": "게시판", "popular_threads": "인기 있는 스레드", "options": "옵션", - "stats": "통계" + "stats": "통계", + "about": "약", + "whitepaper": "화이트페이퍼", + "token": "토큰", + "download_app": "앱 다운로드" } \ No newline at end of file diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 2cc3fc61..70b3d20a 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -7,5 +7,9 @@ "boards": "संदेश फलक", "popular_threads": "लोकप्रिय थ्रेड्स", "options": "पर्याय", - "stats": "सांख्यिकी" + "stats": "सांख्यिकी", + "about": "विषयी", + "whitepaper": "व्हायटपेपर", + "token": "टोकन", + "download_app": "अ‍ॅप डाउनलोड करा" } \ No newline at end of file diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index ea794d5d..ea56587f 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -7,5 +7,9 @@ "boards": "forums", "popular_threads": "Populaire threads", "options": "Opties", - "stats": "Statistieken" + "stats": "Statistieken", + "about": "Over", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "App downloaden" } \ No newline at end of file diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 1bbe94ff..935277ec 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -7,5 +7,9 @@ "boards": "fora", "popular_threads": "Populære tråder", "options": "Alternativer", - "stats": "Statistikk" + "stats": "Statistikk", + "about": "Om", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Last ned appen" } \ No newline at end of file diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 5b035412..04b26fff 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -7,5 +7,9 @@ "boards": "fora", "popular_threads": "Popularne wątki", "options": "Opcje", - "stats": "Statystyki" + "stats": "Statystyki", + "about": "O", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Pobierz aplikację" } \ No newline at end of file diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index 8d5a07cf..69ecc397 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -7,5 +7,9 @@ "boards": "fóruns", "popular_threads": "Tópicos populares", "options": "Opções", - "stats": "Estatísticas" + "stats": "Estatísticas", + "about": "Sobre", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Baixar aplicativo" } \ No newline at end of file diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 26268c08..7ed29047 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -7,5 +7,9 @@ "boards": "forumuri", "popular_threads": "Threaduri populare", "options": "Opțiuni", - "stats": "Statistici" + "stats": "Statistici", + "about": "Despre", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Descărcați aplicația" } \ No newline at end of file diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index b3383335..d4228de0 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -7,5 +7,9 @@ "boards": "форумы", "popular_threads": "Популярные темы", "options": "Опции", - "stats": "Статистика" + "stats": "Статистика", + "about": "О", + "whitepaper": "Белая бумага", + "token": "Токен", + "download_app": "Скачать приложение" } \ No newline at end of file diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 466c63fd..c2ce428d 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -7,5 +7,9 @@ "boards": "forume", "popular_threads": "Threadet e njohur", "options": "Mundësitë", - "stats": "Statistikat" + "stats": "Statistikat", + "about": "Rreth", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Shkarko aplikacionin" } \ No newline at end of file diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 7cc97b40..7e0ec95a 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -7,5 +7,9 @@ "boards": "forum", "popular_threads": "Populära trådar", "options": "Alternativ", - "stats": "Statistik" + "stats": "Statistik", + "about": "Om", + "whitepaper": "Whitepaper", + "token": "Token", + "download_app": "Ladda ner appen" } \ No newline at end of file diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 1c7cc395..8be68f0d 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -7,5 +7,9 @@ "boards": "సందేశ బోర్డులు", "popular_threads": "జనప్రియమైన థ్రెడ్‌లు", "options": "ఎంపికలు", - "stats": "సాంకేతికం" + "stats": "సాంకేతికం", + "about": "గురించి", + "whitepaper": "వైట్‌పేపర్", + "token": "టోకెన్", + "download_app": "అప్లికేషన్‌ను డౌన్‌లోడ్ చేయండి" } \ No newline at end of file diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 63a5d8cb..c1bb5404 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -7,5 +7,9 @@ "boards": "กระดานข่าว", "popular_threads": "กระทู้ยอดนิยม", "options": "ตัวเลือก", - "stats": "สถิติ" + "stats": "สถิติ", + "about": "เกี่ยวกับ", + "whitepaper": "เอกสารขาว", + "token": "โทเค็น", + "download_app": "ดาวน์โหลดแอพ" } \ No newline at end of file diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 258ccd67..aea6c636 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -7,5 +7,9 @@ "boards": "forumlar", "popular_threads": "Popüler konular", "options": "Seçenekler", - "stats": "İstatistikler" + "stats": "İstatistikler", + "about": "Hakkında", + "whitepaper": "Beyaz kağıt", + "token": "Jeton", + "download_app": "Uygulamayı indir" } \ No newline at end of file diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 0471407d..7c878586 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -7,5 +7,9 @@ "boards": "форуми", "popular_threads": "Популярні теми", "options": "Опції", - "stats": "Статистика" + "stats": "Статистика", + "about": "Про", + "whitepaper": "Біла книга", + "token": "Токен", + "download_app": "Завантажити додаток" } \ No newline at end of file diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 201e8fc6..498adec0 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -7,5 +7,9 @@ "boards": "پیغام بورڈز", "popular_threads": "مقبول تھریڈز", "options": "اختیارات", - "stats": "احصائیہ" + "stats": "احصائیہ", + "about": "کے بارے میں", + "whitepaper": "سفید پیپر", + "token": "ٹوکن", + "download_app": "ایپ ڈاؤن لوڈ کریں" } \ No newline at end of file diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index 7797cb61..e25d3397 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -7,5 +7,9 @@ "boards": "diễn đàn", "popular_threads": "Chủ đề phổ biến", "options": "Tùy chọn", - "stats": "Thống kê" + "stats": "Thống kê", + "about": "Về", + "whitepaper": "Bản trắng", + "token": "Token", + "download_app": "Tải ứng dụng" } \ No newline at end of file diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index cd8175f8..acbe65e4 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -7,5 +7,9 @@ "boards": "论坛", "popular_threads": "热门主题", "options": "选项", - "stats": "统计" + "stats": "统计", + "about": "关于", + "whitepaper": "白皮书", + "token": "代币", + "download_app": "下载应用" } \ No newline at end of file diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index d88aeda2..3d860f4b 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -154,6 +154,10 @@ color: var(--text-color-on-color2); } +.footer a { + text-transform: capitalize; +} + @media (max-width: 768px) { .content { min-width: 0; diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index 25d99943..f0403add 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -131,11 +131,13 @@ const Stats = () => { }; const Footer = () => { + const { t } = useTranslation(); + return ( From e59a2290ab8c37db054e1a687d4019bc8789aa6c Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Sat, 16 Mar 2024 13:54:38 +0100 Subject: [PATCH 10/14] feat(home): user can download desktop client from footer button --- src/views/home/home.tsx | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index f0403add..4059e0de 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -4,6 +4,7 @@ import { Link } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; import { useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbits'; import { useEffect } from 'react'; +import packageJson from '../../../package.json'; // TODO: remove theme and languages selectors for debugging const ThemeSettings = () => { @@ -130,9 +131,26 @@ const Stats = () => { ); }; +const { version } = packageJson; +const downloadAppLink = (() => { + const platform = navigator.platform; + if (platform === 'Linux' || platform === 'Linux x86_64' || platform === 'Linux i686' || platform === 'Linux aarch64') { + return `https://github.com/plebbit/plebchan/releases/download/v${version}/plebchan-${version}.AppImage`; + } else if (platform === 'Win32' || platform === 'Win64' || platform === 'Windows') { + return `https://github.com/plebbit/plebchan/releases/download/v${version}/plebchan.Portable.${version}.exe`; + } else if (platform === 'MacIntel' || platform === 'Macintosh') { + return `https://github.com/plebbit/plebchan/releases/download/v${version}/plebchan-${version}.dmg`; + } else if (platform === 'Android') { + return undefined; + } else if (platform === 'iPhone' || platform === 'iPad') { + return undefined; + } else { + return undefined; + } +})(); + const Footer = () => { const { t } = useTranslation(); - return (