mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "التعليق طويل جدًا. <1>اضغط هنا</1> لعرض النص الكامل.",
|
"comment_too_long": "التعليق طويل جدًا. <1>اضغط هنا</1> لعرض النص الكامل.",
|
||||||
"replies_omitted": "{{repliesCount}} ردود محذوفة. <1>اضغط هنا</1> لعرضها.",
|
"replies_omitted": "{{repliesCount}} ردود محذوفة. <1>اضغط هنا</1> لعرضها.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} ردود و{{linksCount}} روابط محذوفة. <1>اضغط هنا</1> لعرضها.",
|
"replies_and_links_omitted": "{{repliesCount}} ردود و{{linksCount}} روابط محذوفة. <1>اضغط هنا</1> لعرضها.",
|
||||||
"thread_closed_alert": "الموضوع مغلق"
|
"thread_closed_alert": "الموضوع مغلق",
|
||||||
|
"reply_to_cid": "الرد على {{cid}}",
|
||||||
|
"submit": "إرسال"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "মন্তব্য খুব দীর্ঘ। <1>পূর্ণ পাঠ্য দেখতে এখানে ক্লিক করুন</1>।",
|
"comment_too_long": "মন্তব্য খুব দীর্ঘ। <1>পূর্ণ পাঠ্য দেখতে এখানে ক্লিক করুন</1>।",
|
||||||
"replies_omitted": "{{repliesCount}}টি উত্তর বাদ দেওয়া হয়েছে। <1>দেখতে এখানে ক্লিক করুন</1>।",
|
"replies_omitted": "{{repliesCount}}টি উত্তর বাদ দেওয়া হয়েছে। <1>দেখতে এখানে ক্লিক করুন</1>।",
|
||||||
"replies_and_links_omitted": "{{repliesCount}}টি উত্তর এবং {{linksCount}}টি লিঙ্ক বাদ দেওয়া হয়েছে। <1>দেখতে এখানে ক্লিক করুন</1>।",
|
"replies_and_links_omitted": "{{repliesCount}}টি উত্তর এবং {{linksCount}}টি লিঙ্ক বাদ দেওয়া হয়েছে। <1>দেখতে এখানে ক্লিক করুন</1>।",
|
||||||
"thread_closed_alert": "থ্রেডটি বন্ধ করা হয়েছে"
|
"thread_closed_alert": "থ্রেডটি বন্ধ করা হয়েছে",
|
||||||
|
"reply_to_cid": "{{cid}}-এ উত্তর দিন",
|
||||||
|
"submit": "জমা দিন"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Komentář je příliš dlouhý. <1>Klikněte zde</1> pro zobrazení celého textu.",
|
"comment_too_long": "Komentář je příliš dlouhý. <1>Klikněte zde</1> pro zobrazení celého textu.",
|
||||||
"replies_omitted": "{{repliesCount}} odpovědí vynecháno. <1>Klikněte zde</1> pro zobrazení.",
|
"replies_omitted": "{{repliesCount}} odpovědí vynecháno. <1>Klikněte zde</1> pro zobrazení.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} odpovědí a {{linksCount}} odkazů vynecháno. <1>Klikněte zde</1> pro zobrazení.",
|
"replies_and_links_omitted": "{{repliesCount}} odpovědí a {{linksCount}} odkazů vynecháno. <1>Klikněte zde</1> pro zobrazení.",
|
||||||
"thread_closed_alert": "Vlákno je uzavřeno"
|
"thread_closed_alert": "Vlákno je uzavřeno",
|
||||||
|
"reply_to_cid": "Odpovědět na {{cid}}",
|
||||||
|
"submit": "Odeslat"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Kommentaren er for lang. <1>Klik her</1> for at se hele teksten.",
|
"comment_too_long": "Kommentaren er for lang. <1>Klik her</1> for at se hele teksten.",
|
||||||
"replies_omitted": "{{repliesCount}} svar udeladt. <1>Klik her</1> for at se dem.",
|
"replies_omitted": "{{repliesCount}} svar udeladt. <1>Klik her</1> for at se dem.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} svar og {{linksCount}} links udeladt. <1>Klik her</1> for at se dem.",
|
"replies_and_links_omitted": "{{repliesCount}} svar og {{linksCount}} links udeladt. <1>Klik her</1> for at se dem.",
|
||||||
"thread_closed_alert": "Tråden er lukket"
|
"thread_closed_alert": "Tråden er lukket",
|
||||||
|
"reply_to_cid": "Svar til {{cid}}",
|
||||||
|
"submit": "Indsend"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Kommentar zu lang. <1>Klicken Sie hier</1>, um den vollständigen Text anzuzeigen.",
|
"comment_too_long": "Kommentar zu lang. <1>Klicken Sie hier</1>, um den vollständigen Text anzuzeigen.",
|
||||||
"replies_omitted": "{{repliesCount}} Antworten ausgelassen. <1>Klicken Sie hier</1>, um sie anzuzeigen.",
|
"replies_omitted": "{{repliesCount}} Antworten ausgelassen. <1>Klicken Sie hier</1>, um sie anzuzeigen.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} Antworten und {{linksCount}} Links ausgelassen. <1>Klicken Sie hier</1>, um sie anzuzeigen.",
|
"replies_and_links_omitted": "{{repliesCount}} Antworten und {{linksCount}} Links ausgelassen. <1>Klicken Sie hier</1>, um sie anzuzeigen.",
|
||||||
"thread_closed_alert": "Der Thread ist geschlossen"
|
"thread_closed_alert": "Der Thread ist geschlossen",
|
||||||
|
"reply_to_cid": "Antwort an {{cid}}",
|
||||||
|
"submit": "Einreichen"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Το σχόλιο είναι πολύ μακροσκελές. <1>Κάντε κλικ εδώ</1> για να δείτε το πλήρες κείμενο.",
|
"comment_too_long": "Το σχόλιο είναι πολύ μακροσκελές. <1>Κάντε κλικ εδώ</1> για να δείτε το πλήρες κείμενο.",
|
||||||
"replies_omitted": "{{repliesCount}} απαντήσεις παραλείφθηκαν. <1>Κάντε κλικ εδώ</1> για να τις δείτε.",
|
"replies_omitted": "{{repliesCount}} απαντήσεις παραλείφθηκαν. <1>Κάντε κλικ εδώ</1> για να τις δείτε.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} απαντήσεις και {{linksCount}} σύνδεσμοι παραλείφθηκαν. <1>Κάντε κλικ εδώ</1> για να τις δείτε.",
|
"replies_and_links_omitted": "{{repliesCount}} απαντήσεις και {{linksCount}} σύνδεσμοι παραλείφθηκαν. <1>Κάντε κλικ εδώ</1> για να τις δείτε.",
|
||||||
"thread_closed_alert": "Το νήμα έχει κλείσει"
|
"thread_closed_alert": "Το νήμα έχει κλείσει",
|
||||||
|
"reply_to_cid": "Απάντηση σε {{cid}}",
|
||||||
|
"submit": "Υποβολή"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Comment too long. <1>Click here</1> to view the full text.",
|
"comment_too_long": "Comment too long. <1>Click here</1> to view the full text.",
|
||||||
"replies_omitted": "{{repliesCount}} replies omitted. <1>Click here</1> to view.",
|
"replies_omitted": "{{repliesCount}} replies omitted. <1>Click here</1> to view.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} replies and {{linksCount}} links omitted. <1>Click here</1> to view.",
|
"replies_and_links_omitted": "{{repliesCount}} replies and {{linksCount}} links omitted. <1>Click here</1> to view.",
|
||||||
"thread_closed_alert": "This thread is closed"
|
"thread_closed_alert": "This thread is closed",
|
||||||
|
"reply_to_cid": "Reply to {{cid}}",
|
||||||
|
"submit": "Submit"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Comentario demasiado largo. <1>Haz clic aquí</1> para ver el texto completo.",
|
"comment_too_long": "Comentario demasiado largo. <1>Haz clic aquí</1> para ver el texto completo.",
|
||||||
"replies_omitted": "{{repliesCount}} respuestas omitidas. <1>Haz clic aquí</1> para verlas.",
|
"replies_omitted": "{{repliesCount}} respuestas omitidas. <1>Haz clic aquí</1> para verlas.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} respuestas y {{linksCount}} enlaces omitidos. <1>Haz clic aquí</1> para verlos.",
|
"replies_and_links_omitted": "{{repliesCount}} respuestas y {{linksCount}} enlaces omitidos. <1>Haz clic aquí</1> para verlos.",
|
||||||
"thread_closed_alert": "El hilo está cerrado"
|
"thread_closed_alert": "El hilo está cerrado",
|
||||||
|
"reply_to_cid": "Responder a {{cid}}",
|
||||||
|
"submit": "Enviar"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "نظر بسیار طولانی است. <1>اینجا کلیک کنید</1> تا متن کامل را ببینید.",
|
"comment_too_long": "نظر بسیار طولانی است. <1>اینجا کلیک کنید</1> تا متن کامل را ببینید.",
|
||||||
"replies_omitted": "{{repliesCount}} پاسخ حذف شده است. <1>اینجا کلیک کنید</1> تا آنها را مشاهده کنید.",
|
"replies_omitted": "{{repliesCount}} پاسخ حذف شده است. <1>اینجا کلیک کنید</1> تا آنها را مشاهده کنید.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} پاسخ و {{linksCount}} لینک حذف شده است. <1>اینجا کلیک کنید</1> تا آنها را مشاهده کنید.",
|
"replies_and_links_omitted": "{{repliesCount}} پاسخ و {{linksCount}} لینک حذف شده است. <1>اینجا کلیک کنید</1> تا آنها را مشاهده کنید.",
|
||||||
"thread_closed_alert": "موضوع بسته شده است"
|
"thread_closed_alert": "موضوع بسته شده است",
|
||||||
|
"reply_to_cid": "پاسخ به {{cid}}",
|
||||||
|
"submit": "ارسال"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Kommentti on liian pitkä. <1>Napsauta tästä</1> nähdäksesi koko tekstin.",
|
"comment_too_long": "Kommentti on liian pitkä. <1>Napsauta tästä</1> nähdäksesi koko tekstin.",
|
||||||
"replies_omitted": "{{repliesCount}} vastausta jätetty pois. <1>Napsauta tästä</1> nähdäksesi ne.",
|
"replies_omitted": "{{repliesCount}} vastausta jätetty pois. <1>Napsauta tästä</1> nähdäksesi ne.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} vastausta ja {{linksCount}} linkkiä jätetty pois. <1>Napsauta tästä</1> nähdäksesi ne.",
|
"replies_and_links_omitted": "{{repliesCount}} vastausta ja {{linksCount}} linkkiä jätetty pois. <1>Napsauta tästä</1> nähdäksesi ne.",
|
||||||
"thread_closed_alert": "Ketju on suljettu"
|
"thread_closed_alert": "Ketju on suljettu",
|
||||||
|
"reply_to_cid": "Vastaa {{cid}}",
|
||||||
|
"submit": "Lähetä"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Masyadong mahaba ang komento. <1>I-click dito</1> upang makita ang buong teksto.",
|
"comment_too_long": "Masyadong mahaba ang komento. <1>I-click dito</1> upang makita ang buong teksto.",
|
||||||
"replies_omitted": "{{repliesCount}} mga tugon ang hindi ipinakita. <1>I-click dito</1> upang makita.",
|
"replies_omitted": "{{repliesCount}} mga tugon ang hindi ipinakita. <1>I-click dito</1> upang makita.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} mga tugon at {{linksCount}} mga link ang hindi ipinakita. <1>I-click dito</1> upang makita.",
|
"replies_and_links_omitted": "{{repliesCount}} mga tugon at {{linksCount}} mga link ang hindi ipinakita. <1>I-click dito</1> upang makita.",
|
||||||
"thread_closed_alert": "Sarado na ang thread"
|
"thread_closed_alert": "Sarado na ang thread",
|
||||||
|
"reply_to_cid": "Tumugon sa {{cid}}",
|
||||||
|
"submit": "Isumite"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Commentaire trop long. <1>Cliquez ici</1> pour voir le texte complet.",
|
"comment_too_long": "Commentaire trop long. <1>Cliquez ici</1> pour voir le texte complet.",
|
||||||
"replies_omitted": "{{repliesCount}} réponses omises. <1>Cliquez ici</1> pour les afficher.",
|
"replies_omitted": "{{repliesCount}} réponses omises. <1>Cliquez ici</1> pour les afficher.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} réponses et {{linksCount}} liens omis. <1>Cliquez ici</1> pour les afficher.",
|
"replies_and_links_omitted": "{{repliesCount}} réponses et {{linksCount}} liens omis. <1>Cliquez ici</1> pour les afficher.",
|
||||||
"thread_closed_alert": "Le fil est fermé"
|
"thread_closed_alert": "Le fil est fermé",
|
||||||
|
"reply_to_cid": "Répondre à {{cid}}",
|
||||||
|
"submit": "Soumettre"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "התגובה ארוכה מדי. <1>לחץ כאן</1> כדי לראות את הטקסט המלא.",
|
"comment_too_long": "התגובה ארוכה מדי. <1>לחץ כאן</1> כדי לראות את הטקסט המלא.",
|
||||||
"replies_omitted": "{{repliesCount}} תגובות נשמטו. <1>לחץ כאן</1> לצפייה.",
|
"replies_omitted": "{{repliesCount}} תגובות נשמטו. <1>לחץ כאן</1> לצפייה.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} תגובות ו{{linksCount}} קישורים נשמטו. <1>לחץ כאן</1> לצפייה.",
|
"replies_and_links_omitted": "{{repliesCount}} תגובות ו{{linksCount}} קישורים נשמטו. <1>לחץ כאן</1> לצפייה.",
|
||||||
"thread_closed_alert": "האשכול סגור"
|
"thread_closed_alert": "האשכול סגור",
|
||||||
|
"reply_to_cid": "תגובה ל{{cid}}",
|
||||||
|
"submit": "שלח"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "टिप्पणी बहुत लंबी है। <1>पूरा टेक्स्ट देखने के लिए यहां क्लिक करें</1>।",
|
"comment_too_long": "टिप्पणी बहुत लंबी है। <1>पूरा टेक्स्ट देखने के लिए यहां क्लिक करें</1>।",
|
||||||
"replies_omitted": "{{repliesCount}} उत्तर छोड़े गए हैं। <1>देखने के लिए यहां क्लिक करें</1>।",
|
"replies_omitted": "{{repliesCount}} उत्तर छोड़े गए हैं। <1>देखने के लिए यहां क्लिक करें</1>।",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} उत्तर और {{linksCount}} लिंक छोड़े गए हैं। <1>देखने के लिए यहां क्लिक करें</1>।",
|
"replies_and_links_omitted": "{{repliesCount}} उत्तर और {{linksCount}} लिंक छोड़े गए हैं। <1>देखने के लिए यहां क्लिक करें</1>।",
|
||||||
"thread_closed_alert": "यह थ्रेड बंद है"
|
"thread_closed_alert": "यह थ्रेड बंद है",
|
||||||
|
"reply_to_cid": "{{cid}} का उत्तर दें",
|
||||||
|
"submit": "जमा करें"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "A megjegyzés túl hosszú. <1>Kattintson ide</1> a teljes szöveg megtekintéséhez.",
|
"comment_too_long": "A megjegyzés túl hosszú. <1>Kattintson ide</1> a teljes szöveg megtekintéséhez.",
|
||||||
"replies_omitted": "{{repliesCount}} válasz kihagyva. <1>Kattintson ide</1> a megtekintéshez.",
|
"replies_omitted": "{{repliesCount}} válasz kihagyva. <1>Kattintson ide</1> a megtekintéshez.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} válasz és {{linksCount}} link kihagyva. <1>Kattintson ide</1> a megtekintéshez.",
|
"replies_and_links_omitted": "{{repliesCount}} válasz és {{linksCount}} link kihagyva. <1>Kattintson ide</1> a megtekintéshez.",
|
||||||
"thread_closed_alert": "A téma lezárva"
|
"thread_closed_alert": "A téma lezárva",
|
||||||
|
"reply_to_cid": "Válasz erre: {{cid}}",
|
||||||
|
"submit": "Beküldés"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Komentar terlalu panjang. <1>Klik di sini</1> untuk melihat teks lengkap.",
|
"comment_too_long": "Komentar terlalu panjang. <1>Klik di sini</1> untuk melihat teks lengkap.",
|
||||||
"replies_omitted": "{{repliesCount}} balasan dihilangkan. <1>Klik di sini</1> untuk melihat.",
|
"replies_omitted": "{{repliesCount}} balasan dihilangkan. <1>Klik di sini</1> untuk melihat.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} balasan dan {{linksCount}} tautan dihilangkan. <1>Klik di sini</1> untuk melihat.",
|
"replies_and_links_omitted": "{{repliesCount}} balasan dan {{linksCount}} tautan dihilangkan. <1>Klik di sini</1> untuk melihat.",
|
||||||
"thread_closed_alert": "Thread ini ditutup"
|
"thread_closed_alert": "Thread ini ditutup",
|
||||||
|
"reply_to_cid": "Balas ke {{cid}}",
|
||||||
|
"submit": "Kirim"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Commento troppo lungo. <1>Clicca qui</1> per vedere il testo completo.",
|
"comment_too_long": "Commento troppo lungo. <1>Clicca qui</1> per vedere il testo completo.",
|
||||||
"replies_omitted": "{{repliesCount}} risposte omesse. <1>Clicca qui</1> per visualizzare.",
|
"replies_omitted": "{{repliesCount}} risposte omesse. <1>Clicca qui</1> per visualizzare.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} risposte e {{linksCount}} link omessi. <1>Clicca qui</1> per visualizzare.",
|
"replies_and_links_omitted": "{{repliesCount}} risposte e {{linksCount}} link omessi. <1>Clicca qui</1> per visualizzare.",
|
||||||
"thread_closed_alert": "Questo thread è chiuso"
|
"thread_closed_alert": "Questo thread è chiuso",
|
||||||
|
"reply_to_cid": "Rispondi a {{cid}}",
|
||||||
|
"submit": "Invia"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "コメントが長すぎます。 <1>ここをクリック</1>して全文を表示。",
|
"comment_too_long": "コメントが長すぎます。 <1>ここをクリック</1>して全文を表示。",
|
||||||
"replies_omitted": "{{repliesCount}}件の返信が省略されました。 <1>ここをクリック</1>して表示。",
|
"replies_omitted": "{{repliesCount}}件の返信が省略されました。 <1>ここをクリック</1>して表示。",
|
||||||
"replies_and_links_omitted": "{{repliesCount}}件の返信と{{linksCount}}件のリンクが省略されました。 <1>ここをクリック</1>して表示。",
|
"replies_and_links_omitted": "{{repliesCount}}件の返信と{{linksCount}}件のリンクが省略されました。 <1>ここをクリック</1>して表示。",
|
||||||
"thread_closed_alert": "このスレッドは閉じられています"
|
"thread_closed_alert": "このスレッドは閉じられています",
|
||||||
|
"reply_to_cid": "{{cid}}に返信",
|
||||||
|
"submit": "送信"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "댓글이 너무 깁니다. <1>여기를 클릭하십시오</1> 전체 텍스트를 보려면.",
|
"comment_too_long": "댓글이 너무 깁니다. <1>여기를 클릭하십시오</1> 전체 텍스트를 보려면.",
|
||||||
"replies_omitted": "{{repliesCount}}개의 답글이 생략되었습니다. <1>여기를 클릭하십시오</1> 보려면.",
|
"replies_omitted": "{{repliesCount}}개의 답글이 생략되었습니다. <1>여기를 클릭하십시오</1> 보려면.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}}개의 답글과 {{linksCount}}개의 링크가 생략되었습니다. <1>여기를 클릭하십시오</1> 보려면.",
|
"replies_and_links_omitted": "{{repliesCount}}개의 답글과 {{linksCount}}개의 링크가 생략되었습니다. <1>여기를 클릭하십시오</1> 보려면.",
|
||||||
"thread_closed_alert": "이 스레드는 닫혔습니다"
|
"thread_closed_alert": "이 스레드는 닫혔습니다",
|
||||||
|
"reply_to_cid": "{{cid}}에 답변",
|
||||||
|
"submit": "제출"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "टिप्पणी खूप लांब आहे. <1>पूर्ण मजकूर पाहण्यासाठी येथे क्लिक करा</1>.",
|
"comment_too_long": "टिप्पणी खूप लांब आहे. <1>पूर्ण मजकूर पाहण्यासाठी येथे क्लिक करा</1>.",
|
||||||
"replies_omitted": "{{repliesCount}} प्रतिसाद वगळले गेले आहेत. <1>पाहण्यासाठी येथे क्लिक करा</1>.",
|
"replies_omitted": "{{repliesCount}} प्रतिसाद वगळले गेले आहेत. <1>पाहण्यासाठी येथे क्लिक करा</1>.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} प्रतिसाद आणि {{linksCount}} दुवे वगळले गेले आहेत. <1>पाहण्यासाठी येथे क्लिक करा</1>.",
|
"replies_and_links_omitted": "{{repliesCount}} प्रतिसाद आणि {{linksCount}} दुवे वगळले गेले आहेत. <1>पाहण्यासाठी येथे क्लिक करा</1>.",
|
||||||
"thread_closed_alert": "हा थ्रेड बंद आहे"
|
"thread_closed_alert": "हा थ्रेड बंद आहे",
|
||||||
|
"reply_to_cid": "{{cid}} ला उत्तर द्या",
|
||||||
|
"submit": "सबमिट करा"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Reactie te lang. <1>Klik hier</1> om de volledige tekst te bekijken.",
|
"comment_too_long": "Reactie te lang. <1>Klik hier</1> om de volledige tekst te bekijken.",
|
||||||
"replies_omitted": "{{repliesCount}} reacties weggelaten. <1>Klik hier</1> om ze te bekijken.",
|
"replies_omitted": "{{repliesCount}} reacties weggelaten. <1>Klik hier</1> om ze te bekijken.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} reacties en {{linksCount}} links weggelaten. <1>Klik hier</1> om ze te bekijken.",
|
"replies_and_links_omitted": "{{repliesCount}} reacties en {{linksCount}} links weggelaten. <1>Klik hier</1> om ze te bekijken.",
|
||||||
"thread_closed_alert": "De thread is gesloten"
|
"thread_closed_alert": "De thread is gesloten",
|
||||||
|
"reply_to_cid": "Reageren op {{cid}}",
|
||||||
|
"submit": "Verzenden"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Kommentaren er for lang. <1>Klikk her</1> for å se hele teksten.",
|
"comment_too_long": "Kommentaren er for lang. <1>Klikk her</1> for å se hele teksten.",
|
||||||
"replies_omitted": "{{repliesCount}} svar utelatt. <1>Klikk her</1> for å se dem.",
|
"replies_omitted": "{{repliesCount}} svar utelatt. <1>Klikk her</1> for å se dem.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} svar og {{linksCount}} lenker utelatt. <1>Klikk her</1> for å se dem.",
|
"replies_and_links_omitted": "{{repliesCount}} svar og {{linksCount}} lenker utelatt. <1>Klikk her</1> for å se dem.",
|
||||||
"thread_closed_alert": "Tråden er stengt"
|
"thread_closed_alert": "Tråden er stengt",
|
||||||
|
"reply_to_cid": "Svar til {{cid}}",
|
||||||
|
"submit": "Send inn"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Komentarz jest za długi. <1>Kliknij tutaj</1>, aby zobaczyć pełny tekst.",
|
"comment_too_long": "Komentarz jest za długi. <1>Kliknij tutaj</1>, aby zobaczyć pełny tekst.",
|
||||||
"replies_omitted": "Pominięto {{repliesCount}} odpowiedzi. <1>Kliknij tutaj</1>, aby je zobaczyć.",
|
"replies_omitted": "Pominięto {{repliesCount}} odpowiedzi. <1>Kliknij tutaj</1>, aby je zobaczyć.",
|
||||||
"replies_and_links_omitted": "Pominięto {{repliesCount}} odpowiedzi i {{linksCount}} linków. <1>Kliknij tutaj</1>, aby je zobaczyć.",
|
"replies_and_links_omitted": "Pominięto {{repliesCount}} odpowiedzi i {{linksCount}} linków. <1>Kliknij tutaj</1>, aby je zobaczyć.",
|
||||||
"thread_closed_alert": "Wątek jest zamknięty"
|
"thread_closed_alert": "Wątek jest zamknięty",
|
||||||
|
"reply_to_cid": "Odpowiedz na {{cid}}",
|
||||||
|
"submit": "Zatwierdź"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Comentário muito longo. <1>Clique aqui</1> para ver o texto completo.",
|
"comment_too_long": "Comentário muito longo. <1>Clique aqui</1> para ver o texto completo.",
|
||||||
"replies_omitted": "{{repliesCount}} respostas omitidas. <1>Clique aqui</1> para visualizar.",
|
"replies_omitted": "{{repliesCount}} respostas omitidas. <1>Clique aqui</1> para visualizar.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} respostas e {{linksCount}} links omitidos. <1>Clique aqui</1> para visualizar.",
|
"replies_and_links_omitted": "{{repliesCount}} respostas e {{linksCount}} links omitidos. <1>Clique aqui</1> para visualizar.",
|
||||||
"thread_closed_alert": "O tópico está fechado"
|
"thread_closed_alert": "O tópico está fechado",
|
||||||
|
"reply_to_cid": "Responder a {{cid}}",
|
||||||
|
"submit": "Enviar"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Comentariul este prea lung. <1>Click aici</1> pentru a vedea textul complet.",
|
"comment_too_long": "Comentariul este prea lung. <1>Click aici</1> pentru a vedea textul complet.",
|
||||||
"replies_omitted": "{{repliesCount}} răspunsuri omise. <1>Click aici</1> pentru a le vizualiza.",
|
"replies_omitted": "{{repliesCount}} răspunsuri omise. <1>Click aici</1> pentru a le vizualiza.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} răspunsuri și {{linksCount}} linkuri omise. <1>Click aici</1> pentru a le vizualiza.",
|
"replies_and_links_omitted": "{{repliesCount}} răspunsuri și {{linksCount}} linkuri omise. <1>Click aici</1> pentru a le vizualiza.",
|
||||||
"thread_closed_alert": "Acest fir de discuție este închis"
|
"thread_closed_alert": "Acest fir de discuție este închis",
|
||||||
|
"reply_to_cid": "Răspundeți la {{cid}}",
|
||||||
|
"submit": "Trimite"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Комментарий слишком длинный. <1>Нажмите здесь</1>, чтобы прочитать полный текст.",
|
"comment_too_long": "Комментарий слишком длинный. <1>Нажмите здесь</1>, чтобы прочитать полный текст.",
|
||||||
"replies_omitted": "{{repliesCount}} ответов пропущено. <1>Нажмите здесь</1>, чтобы посмотреть.",
|
"replies_omitted": "{{repliesCount}} ответов пропущено. <1>Нажмите здесь</1>, чтобы посмотреть.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} ответов и {{linksCount}} ссылок пропущено. <1>Нажмите здесь</1>, чтобы посмотреть.",
|
"replies_and_links_omitted": "{{repliesCount}} ответов и {{linksCount}} ссылок пропущено. <1>Нажмите здесь</1>, чтобы посмотреть.",
|
||||||
"thread_closed_alert": "Тема закрыта"
|
"thread_closed_alert": "Тема закрыта",
|
||||||
|
"reply_to_cid": "Ответить на {{cid}}",
|
||||||
|
"submit": "Отправить"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Komenti është shumë i gjatë. <1>Kliko këtu</1> për të parë tekstin e plotë.",
|
"comment_too_long": "Komenti është shumë i gjatë. <1>Kliko këtu</1> për të parë tekstin e plotë.",
|
||||||
"replies_omitted": "{{repliesCount}} përgjigje janë lënë jashtë. <1>Kliko këtu</1> për t'i shikuar.",
|
"replies_omitted": "{{repliesCount}} përgjigje janë lënë jashtë. <1>Kliko këtu</1> për t'i shikuar.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} përgjigje dhe {{linksCount}} lidhje janë lënë jashtë. <1>Kliko këtu</1> për t'i shikuar.",
|
"replies_and_links_omitted": "{{repliesCount}} përgjigje dhe {{linksCount}} lidhje janë lënë jashtë. <1>Kliko këtu</1> për t'i shikuar.",
|
||||||
"thread_closed_alert": "Temë është mbyllur"
|
"thread_closed_alert": "Temë është mbyllur",
|
||||||
|
"reply_to_cid": "Përgjigju në {{cid}}",
|
||||||
|
"submit": "Dorëzo"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Kommentaren är för lång. <1>Klicka här</1> för att se hela texten.",
|
"comment_too_long": "Kommentaren är för lång. <1>Klicka här</1> för att se hela texten.",
|
||||||
"replies_omitted": "{{repliesCount}} svar utelämnade. <1>Klicka här</1> för att visa dem.",
|
"replies_omitted": "{{repliesCount}} svar utelämnade. <1>Klicka här</1> för att visa dem.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} svar och {{linksCount}} länkar utelämnade. <1>Klicka här</1> för att visa dem.",
|
"replies_and_links_omitted": "{{repliesCount}} svar och {{linksCount}} länkar utelämnade. <1>Klicka här</1> för att visa dem.",
|
||||||
"thread_closed_alert": "Tråden är stängd"
|
"thread_closed_alert": "Tråden är stängd",
|
||||||
|
"reply_to_cid": "Svara på {{cid}}",
|
||||||
|
"submit": "Skicka in"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "వ్యాఖ్య చాలా పొడవుగా ఉంది. <1>పూర్తి టెక్స్ట్ చూడటానికి ఇక్కడ క్లిక్ చేయండి</1>.",
|
"comment_too_long": "వ్యాఖ్య చాలా పొడవుగా ఉంది. <1>పూర్తి టెక్స్ట్ చూడటానికి ఇక్కడ క్లిక్ చేయండి</1>.",
|
||||||
"replies_omitted": "{{repliesCount}} స్పందనలు వదిలివేయబడ్డాయి. <1>చూడటానికి ఇక్కడ క్లిక్ చేయండి</1>.",
|
"replies_omitted": "{{repliesCount}} స్పందనలు వదిలివేయబడ్డాయి. <1>చూడటానికి ఇక్కడ క్లిక్ చేయండి</1>.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} స్పందనలు మరియు {{linksCount}} లింకులు వదిలివేయబడ్డాయి. <1>చూడటానికి ఇక్కడ క్లిక్ చేయండి</1>.",
|
"replies_and_links_omitted": "{{repliesCount}} స్పందనలు మరియు {{linksCount}} లింకులు వదిలివేయబడ్డాయి. <1>చూడటానికి ఇక్కడ క్లిక్ చేయండి</1>.",
|
||||||
"thread_closed_alert": "ఈ థ్రెడ్ మూసివేయబడింది"
|
"thread_closed_alert": "ఈ థ్రెడ్ మూసివేయబడింది",
|
||||||
|
"reply_to_cid": "{{cid}}కి స్పందించండి",
|
||||||
|
"submit": "సమర్పించు"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "ความคิดเห็นยาวเกินไป <1>คลิกที่นี่</1> เพื่อดูข้อความเต็ม.",
|
"comment_too_long": "ความคิดเห็นยาวเกินไป <1>คลิกที่นี่</1> เพื่อดูข้อความเต็ม.",
|
||||||
"replies_omitted": "ข้าม {{repliesCount}} คำตอบ <1>คลิกที่นี่</1> เพื่อดู.",
|
"replies_omitted": "ข้าม {{repliesCount}} คำตอบ <1>คลิกที่นี่</1> เพื่อดู.",
|
||||||
"replies_and_links_omitted": "ข้าม {{repliesCount}} คำตอบและ {{linksCount}} ลิงก์ <1>คลิกที่นี่</1> เพื่อดู.",
|
"replies_and_links_omitted": "ข้าม {{repliesCount}} คำตอบและ {{linksCount}} ลิงก์ <1>คลิกที่นี่</1> เพื่อดู.",
|
||||||
"thread_closed_alert": "กระทู้นี้ถูกปิด"
|
"thread_closed_alert": "กระทู้นี้ถูกปิด",
|
||||||
|
"reply_to_cid": "ตอบกลับ {{cid}}",
|
||||||
|
"submit": "ส่ง"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Yorum çok uzun. <1>Buraya tıklayın</1> tam metni görüntülemek için.",
|
"comment_too_long": "Yorum çok uzun. <1>Buraya tıklayın</1> tam metni görüntülemek için.",
|
||||||
"replies_omitted": "{{repliesCount}} yanıt göz ardı edildi. <1>Buraya tıklayın</1> görüntülemek için.",
|
"replies_omitted": "{{repliesCount}} yanıt göz ardı edildi. <1>Buraya tıklayın</1> görüntülemek için.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} yanıt ve {{linksCount}} bağlantı göz ardı edildi. <1>Buraya tıklayın</1> görüntülemek için.",
|
"replies_and_links_omitted": "{{repliesCount}} yanıt ve {{linksCount}} bağlantı göz ardı edildi. <1>Buraya tıklayın</1> görüntülemek için.",
|
||||||
"thread_closed_alert": "Bu konu kapatılmıştır"
|
"thread_closed_alert": "Bu konu kapatılmıştır",
|
||||||
|
"reply_to_cid": "{{cid}}’ye yanıt ver",
|
||||||
|
"submit": "Gönder"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Коментар занадто довгий. <1>Натисніть тут</1>, щоб переглянути повний текст.",
|
"comment_too_long": "Коментар занадто довгий. <1>Натисніть тут</1>, щоб переглянути повний текст.",
|
||||||
"replies_omitted": "{{repliesCount}} відповідей пропущено. <1>Натисніть тут</1>, щоб переглянути.",
|
"replies_omitted": "{{repliesCount}} відповідей пропущено. <1>Натисніть тут</1>, щоб переглянути.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} відповідей та {{linksCount}} посилань пропущено. <1>Натисніть тут</1>, щоб переглянути.",
|
"replies_and_links_omitted": "{{repliesCount}} відповідей та {{linksCount}} посилань пропущено. <1>Натисніть тут</1>, щоб переглянути.",
|
||||||
"thread_closed_alert": "Тему закрито"
|
"thread_closed_alert": "Тему закрито",
|
||||||
|
"reply_to_cid": "Відповісти на {{cid}}",
|
||||||
|
"submit": "Надіслати"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "تبصرہ بہت طویل ہے۔ <1>مکمل متن دیکھنے کے لیے یہاں کلک کریں</1>۔",
|
"comment_too_long": "تبصرہ بہت طویل ہے۔ <1>مکمل متن دیکھنے کے لیے یہاں کلک کریں</1>۔",
|
||||||
"replies_omitted": "{{repliesCount}} جوابات چھوڑ دیے گئے ہیں۔ <1>مکمل دیکھنے کے لیے یہاں کلک کریں</1>۔",
|
"replies_omitted": "{{repliesCount}} جوابات چھوڑ دیے گئے ہیں۔ <1>مکمل دیکھنے کے لیے یہاں کلک کریں</1>۔",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} جوابات اور {{linksCount}} لنکس چھوڑ دیے گئے ہیں۔ <1>مکمل دیکھنے کے لیے یہاں کلک کریں</1>۔",
|
"replies_and_links_omitted": "{{repliesCount}} جوابات اور {{linksCount}} لنکس چھوڑ دیے گئے ہیں۔ <1>مکمل دیکھنے کے لیے یہاں کلک کریں</1>۔",
|
||||||
"thread_closed_alert": "یہ دھاگہ بند ہے"
|
"thread_closed_alert": "یہ دھاگہ بند ہے",
|
||||||
|
"reply_to_cid": "{{cid}} کا جواب دیں",
|
||||||
|
"submit": "جمع کرائیں"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "Bình luận quá dài. <1>Nhấn vào đây</1> để xem toàn bộ văn bản.",
|
"comment_too_long": "Bình luận quá dài. <1>Nhấn vào đây</1> để xem toàn bộ văn bản.",
|
||||||
"replies_omitted": "{{repliesCount}} câu trả lời bị bỏ qua. <1>Nhấn vào đây</1> để xem.",
|
"replies_omitted": "{{repliesCount}} câu trả lời bị bỏ qua. <1>Nhấn vào đây</1> để xem.",
|
||||||
"replies_and_links_omitted": "{{repliesCount}} câu trả lời và {{linksCount}} liên kết bị bỏ qua. <1>Nhấn vào đây</1> để xem.",
|
"replies_and_links_omitted": "{{repliesCount}} câu trả lời và {{linksCount}} liên kết bị bỏ qua. <1>Nhấn vào đây</1> để xem.",
|
||||||
"thread_closed_alert": "Chủ đề này đã đóng"
|
"thread_closed_alert": "Chủ đề này đã đóng",
|
||||||
|
"reply_to_cid": "Trả lời {{cid}}",
|
||||||
|
"submit": "Gửi"
|
||||||
}
|
}
|
||||||
@@ -59,5 +59,7 @@
|
|||||||
"comment_too_long": "评论太长。 <1>点击这里</1>查看完整文本。",
|
"comment_too_long": "评论太长。 <1>点击这里</1>查看完整文本。",
|
||||||
"replies_omitted": "省略了{{repliesCount}}条回复。 <1>点击这里</1>查看。",
|
"replies_omitted": "省略了{{repliesCount}}条回复。 <1>点击这里</1>查看。",
|
||||||
"replies_and_links_omitted": "省略了{{repliesCount}}条回复和{{linksCount}}个链接。 <1>点击这里</1>查看。",
|
"replies_and_links_omitted": "省略了{{repliesCount}}条回复和{{linksCount}}个链接。 <1>点击这里</1>查看。",
|
||||||
"thread_closed_alert": "该主题已关闭"
|
"thread_closed_alert": "该主题已关闭",
|
||||||
|
"reply_to_cid": "回复{{cid}}",
|
||||||
|
"submit": "提交"
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,27 @@
|
|||||||
padding: 2px 4px;
|
padding: 2px 4px;
|
||||||
background-color: var(--boardnav-mobile-background-color);
|
background-color: var(--boardnav-mobile-background-color);
|
||||||
border-bottom: var(--boardnav-mobile-border-bottom);
|
border-bottom: var(--boardnav-mobile-border-bottom);
|
||||||
|
font-size: var(--boardnav-mobile-font-size);
|
||||||
position: fixed;
|
position: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: var(--boardnav-mobile-font-size);
|
z-index: 6;
|
||||||
|
animation-name: stickyMenuAnimation;
|
||||||
|
animation-duration: 1s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
animation-play-state: paused;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes stickyMenuAnimation {
|
||||||
|
0% {
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
top: -50px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.boardNavMobile .pageJump a {
|
.boardNavMobile .pageJump a {
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ const BoardNavMobile = ({ subplebbitAddresses, subplebbitAddress }: BoardNavProp
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.boardNavMobile}>
|
<div className={styles.boardNavMobile} id='sticky-menu'>
|
||||||
<div className={styles.boardSelect}>
|
<div className={styles.boardSelect}>
|
||||||
<strong>{t('board')}</strong>
|
<strong>{t('board')}</strong>
|
||||||
{boardSelect}
|
{boardSelect}
|
||||||
@@ -75,6 +75,52 @@ const BoardNavMobile = ({ subplebbitAddresses, subplebbitAddress }: BoardNavProp
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// sticky menu animation
|
||||||
|
// will trigger more than once with hot reloading during development
|
||||||
|
if (!window.STICKY_MENU_SCROLL_LISTENER) {
|
||||||
|
window.STICKY_MENU_SCROLL_LISTENER = true;
|
||||||
|
|
||||||
|
const scrollRange = 50; // the animation css px range in stickyMenuAnimation, must also edit css animation 100%: {top}
|
||||||
|
let currentScrollInRange = 0,
|
||||||
|
previousScroll = 0;
|
||||||
|
|
||||||
|
window.addEventListener('scroll', () => {
|
||||||
|
// find difference between current and last scroll position
|
||||||
|
const currentScroll = window.scrollY;
|
||||||
|
const scrollDifference = currentScroll - previousScroll;
|
||||||
|
previousScroll = currentScroll;
|
||||||
|
|
||||||
|
// find new current scroll in range
|
||||||
|
const previousScrollInRange = currentScrollInRange;
|
||||||
|
currentScrollInRange += scrollDifference;
|
||||||
|
if (currentScrollInRange > scrollRange) {
|
||||||
|
currentScrollInRange = scrollRange;
|
||||||
|
} else if (currentScrollInRange < 0) {
|
||||||
|
currentScrollInRange = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// fix mobile overflow scroll bug
|
||||||
|
if (currentScroll <= 0) {
|
||||||
|
currentScrollInRange = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// no changes
|
||||||
|
if (currentScrollInRange === previousScrollInRange) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the menu element
|
||||||
|
const menuElement = document.getElementById('sticky-menu');
|
||||||
|
if (!menuElement) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// control progress of the animation using negative animation-delay (0 to -1s)
|
||||||
|
const animationPercent = currentScrollInRange / scrollRange;
|
||||||
|
menuElement.style.animationDelay = animationPercent * -1 + 's';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const BoardNav = () => {
|
const BoardNav = () => {
|
||||||
const subplebbitAddresses = useDefaultSubplebbitAddresses();
|
const subplebbitAddresses = useDefaultSubplebbitAddresses();
|
||||||
|
|
||||||
|
|||||||
@@ -78,3 +78,9 @@
|
|||||||
filter: var(--filter80);
|
filter: var(--filter80);
|
||||||
text-transform: capitalize;
|
text-transform: capitalize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.title {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { Challenge as ChallengeType } from '@plebbit/plebbit-react-hooks';
|
import { Challenge as ChallengeType } from '@plebbit/plebbit-react-hooks';
|
||||||
import { getPublicationType } from '../../lib/utils/challenge-utils';
|
import { getPublicationType } from '../../lib/utils/challenge-utils';
|
||||||
import useChallenges from '../../hooks/use-challenges';
|
import useChallenges from '../../hooks/use-challenges';
|
||||||
|
import useWindowWidth from '../../hooks/use-window-width';
|
||||||
import styles from './challenge-modal.module.css';
|
import styles from './challenge-modal.module.css';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
@@ -53,9 +54,9 @@ const Challenge = ({ challenge, closeModal }: ChallengeProps) => {
|
|||||||
|
|
||||||
// react-draggable requires a ref to the modal node
|
// react-draggable requires a ref to the modal node
|
||||||
const nodeRef = useRef(null);
|
const nodeRef = useRef(null);
|
||||||
|
const isMobile = useWindowWidth() < 640;
|
||||||
|
|
||||||
return (
|
const modalContent = (
|
||||||
<Draggable handle='.challengeHandle' nodeRef={nodeRef}>
|
|
||||||
<div className={styles.container} ref={nodeRef}>
|
<div className={styles.container} ref={nodeRef}>
|
||||||
<div className={`challengeHandle ${styles.title}`}>
|
<div className={`challengeHandle ${styles.title}`}>
|
||||||
Challenge for {publicationType}
|
Challenge for {publicationType}
|
||||||
@@ -114,6 +115,13 @@ const Challenge = ({ challenge, closeModal }: ChallengeProps) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
return isMobile ? (
|
||||||
|
modalContent
|
||||||
|
) : (
|
||||||
|
<Draggable handle='.challengeHandle' nodeRef={nodeRef}>
|
||||||
|
{modalContent}
|
||||||
</Draggable>
|
</Draggable>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -128,7 +128,6 @@ const PostFormTable = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (typeof replyIndex === 'number') {
|
if (typeof replyIndex === 'number') {
|
||||||
resetContent();
|
resetContent();
|
||||||
window.scrollTo(0, document.body.scrollHeight);
|
|
||||||
}
|
}
|
||||||
}, [replyIndex, resetContent]);
|
}, [replyIndex, resetContent]);
|
||||||
|
|
||||||
|
|||||||
@@ -426,6 +426,10 @@
|
|||||||
font-weight: 700 !important;
|
font-weight: 700 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.replyToPost {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
@media (max-width: 640px) {
|
||||||
.postDesktop {
|
.postDesktop {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -38,17 +38,21 @@
|
|||||||
background-image: var(--close-button-background-image);
|
background-image: var(--close-button-background-image);
|
||||||
}
|
}
|
||||||
|
|
||||||
.container input, .container textarea {
|
.container input[type="text"], .container textarea {
|
||||||
border: 1px solid #aaa;
|
border: var(--post-form-field-input-border, revert);
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
font-family: var(--post-form-field-font-family, revert);
|
||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
outline: medium none;
|
outline: var(--post-form-field-input-outline, revert);
|
||||||
width: 298px;
|
width: 298px;
|
||||||
filter: var(--filter80);
|
filter: var(--filter80);
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
margin-bottom: 1px;
|
margin-bottom: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.container input[type="text"]:focus, .container textarea:focus {
|
||||||
|
border: var(--post-form-field-input-focus-border, revert);
|
||||||
|
}
|
||||||
|
|
||||||
.content textarea {
|
.content textarea {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
@@ -58,3 +62,13 @@
|
|||||||
float: right;
|
float: right;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.container {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,9 +3,10 @@ import { useParams } from 'react-router-dom';
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import Draggable from 'react-draggable';
|
import Draggable from 'react-draggable';
|
||||||
import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js';
|
import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js';
|
||||||
import { useAccount } from '@plebbit/plebbit-react-hooks';
|
import { setAccount, useAccount } from '@plebbit/plebbit-react-hooks';
|
||||||
import { isValidURL } from '../../lib/utils/url-utils';
|
import { isValidURL } from '../../lib/utils/url-utils';
|
||||||
import useReply from '../../hooks/use-reply';
|
import useReply from '../../hooks/use-reply';
|
||||||
|
import useWindowWidth from '../../hooks/use-window-width';
|
||||||
import styles from './reply-modal.module.css';
|
import styles from './reply-modal.module.css';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
@@ -48,31 +49,68 @@ const ReplyModal = ({ closeModal, parentCid }: ReplyModalProps) => {
|
|||||||
}
|
}
|
||||||
}, [replyIndex, resetContent, closeModal]);
|
}, [replyIndex, resetContent, closeModal]);
|
||||||
|
|
||||||
// react-draggable requires a ref to the modal node
|
const nodeRef = useRef<HTMLDivElement>(null);
|
||||||
const nodeRef = useRef(null);
|
const isMobile = useWindowWidth() < 640;
|
||||||
|
|
||||||
return (
|
// on mobile, the position is absolute instead of fixed, so we need to calculate the top position
|
||||||
<Draggable handle='.replyModalHandle' nodeRef={nodeRef}>
|
useEffect(() => {
|
||||||
|
if (nodeRef.current && isMobile) {
|
||||||
|
const viewportHeight = window.innerHeight;
|
||||||
|
const scrollY = window.scrollY;
|
||||||
|
const modalHeight = 150;
|
||||||
|
const centeredPosition = scrollY + viewportHeight / 2 - modalHeight / 2;
|
||||||
|
nodeRef.current.style.top = `${centeredPosition}px`;
|
||||||
|
}
|
||||||
|
}, [isMobile]);
|
||||||
|
|
||||||
|
const modalContent = (
|
||||||
<div className={styles.container} ref={nodeRef}>
|
<div className={styles.container} ref={nodeRef}>
|
||||||
<div className={`replyModalHandle ${styles.title}`}>
|
<div className={`replyModalHandle ${styles.title}`}>
|
||||||
Reply to c/{parentCid && Plebbit.getShortCid(parentCid)}
|
{t('reply_to_cid', { cid: `c/${parentCid && Plebbit.getShortCid(parentCid)}`, interpolation: { escapeValue: false } })}
|
||||||
<button className={styles.closeIcon} onClick={closeModal} title='close' />
|
<button
|
||||||
|
className={styles.closeIcon}
|
||||||
|
onClick={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
closeModal();
|
||||||
|
}}
|
||||||
|
title='close'
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.replyForm}>
|
<div className={styles.replyForm}>
|
||||||
<div className={styles.name}>
|
<div className={styles.name}>
|
||||||
<input type='text' defaultValue={displayName} placeholder={displayName ? undefined : _.capitalize(t('anonymous'))} />
|
<input
|
||||||
|
type='text'
|
||||||
|
defaultValue={displayName}
|
||||||
|
placeholder={displayName ? undefined : _.capitalize(t('anonymous'))}
|
||||||
|
onChange={(e) => setAccount({ ...account, author: { ...account?.author, displayName: e.target.value } })}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.link}>
|
<div className={styles.link}>
|
||||||
<input type='text' ref={urlRef} placeholder={_.capitalize(t('link'))} onChange={(e) => setContent.link(e.target.value)} />
|
<input type='text' ref={urlRef} placeholder={_.capitalize(t('link'))} onChange={(e) => setContent.link(e.target.value)} />
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<textarea cols={48} rows={4} wrap='soft' ref={textRef} placeholder={_.capitalize(t('comment'))} onChange={(e) => setContent.content(e.target.value)} />
|
<textarea
|
||||||
|
cols={48}
|
||||||
|
rows={4}
|
||||||
|
wrap='soft'
|
||||||
|
ref={textRef}
|
||||||
|
placeholder={_.capitalize(t('comment'))}
|
||||||
|
onChange={(e) => setContent.content(e.target.value)}
|
||||||
|
autoFocus
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.footer}>
|
<div className={styles.footer}>
|
||||||
<button onClick={onPublishReply}>{t('reply')}</button>
|
<button onClick={onPublishReply}>{t('reply')}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
return isMobile ? (
|
||||||
|
modalContent
|
||||||
|
) : (
|
||||||
|
<Draggable handle='.replyModalHandle' nodeRef={nodeRef}>
|
||||||
|
{modalContent}
|
||||||
</Draggable>
|
</Draggable>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,14 +2,15 @@ import Post from '../post';
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
interface DescriptionPostProps {
|
interface DescriptionPostProps {
|
||||||
subplebbitAddress: string | undefined;
|
avatarUrl?: string;
|
||||||
createdAt: number;
|
createdAt: number;
|
||||||
description: string;
|
description: string;
|
||||||
avatarUrl?: string;
|
shortAddress: string;
|
||||||
|
subplebbitAddress: string | undefined;
|
||||||
title: string;
|
title: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const SubplebbitDescription = ({ subplebbitAddress, createdAt, description, avatarUrl, title }: DescriptionPostProps) => {
|
const SubplebbitDescription = ({ avatarUrl, createdAt, description, shortAddress, subplebbitAddress, title }: DescriptionPostProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const post = {
|
const post = {
|
||||||
isDescription: true,
|
isDescription: true,
|
||||||
@@ -18,7 +19,7 @@ const SubplebbitDescription = ({ subplebbitAddress, createdAt, description, avat
|
|||||||
author: { displayName: '## Board Mods' },
|
author: { displayName: '## Board Mods' },
|
||||||
content: description,
|
content: description,
|
||||||
link: avatarUrl,
|
link: avatarUrl,
|
||||||
title: t('welcome_to_board', { board: title }),
|
title: t('welcome_to_board', { board: title || `p/${shortAddress}` }),
|
||||||
pinned: true,
|
pinned: true,
|
||||||
locked: true,
|
locked: true,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,11 +3,22 @@ import { Comment, useAccountComments } from '@plebbit/plebbit-react-hooks';
|
|||||||
import { flattenCommentsPages } from '@plebbit/plebbit-react-hooks/dist/lib/utils';
|
import { flattenCommentsPages } from '@plebbit/plebbit-react-hooks/dist/lib/utils';
|
||||||
|
|
||||||
const useRepliesAndAccountReplies = (comment: Comment) => {
|
const useRepliesAndAccountReplies = (comment: Comment) => {
|
||||||
// filter only the parent cid
|
// flatten all replies including nested ones from the original comment
|
||||||
const filter = useCallback((accountComment: Comment) => accountComment.parentCid === (comment?.cid || 'n/a'), [comment?.cid]);
|
|
||||||
const { accountComments } = useAccountComments({ filter });
|
|
||||||
const flattenedReplies = useMemo(() => flattenCommentsPages(comment.replies), [comment.replies]);
|
const flattenedReplies = useMemo(() => flattenCommentsPages(comment.replies), [comment.replies]);
|
||||||
|
|
||||||
|
// gemerate a Set of CIDs from flattened replies for quick lookup
|
||||||
|
const replyCids = useMemo(() => new Set(flattenedReplies.map((reply) => reply.cid)), [flattenedReplies]);
|
||||||
|
|
||||||
|
// filter against all CIDs in flattened replies
|
||||||
|
const filter = useCallback(
|
||||||
|
(accountComment: Comment) => {
|
||||||
|
return replyCids.has(accountComment.parentCid);
|
||||||
|
},
|
||||||
|
[replyCids],
|
||||||
|
);
|
||||||
|
|
||||||
|
const { accountComments } = useAccountComments({ filter });
|
||||||
|
|
||||||
// the account's replies have a delay before getting published, so get them locally from accountComments instead
|
// the account's replies have a delay before getting published, so get them locally from accountComments instead
|
||||||
const accountRepliesNotYetPublished = useMemo(() => {
|
const accountRepliesNotYetPublished = useMemo(() => {
|
||||||
const replies = flattenedReplies || [];
|
const replies = flattenedReplies || [];
|
||||||
|
|||||||
@@ -4,25 +4,27 @@ const useReplyModal = () => {
|
|||||||
const [showReplyModal, setShowReplyModal] = useState(false);
|
const [showReplyModal, setShowReplyModal] = useState(false);
|
||||||
const [activeCid, setActiveCid] = useState<string | null>(null);
|
const [activeCid, setActiveCid] = useState<string | null>(null);
|
||||||
|
|
||||||
const openReplyModal = useCallback(
|
|
||||||
(cid: string) => {
|
|
||||||
if (activeCid && activeCid !== cid) {
|
|
||||||
closeModal(); // close modal if a different CID is clicked
|
|
||||||
setActiveCid(cid);
|
|
||||||
setShowReplyModal(true);
|
|
||||||
} else if (!activeCid) {
|
|
||||||
setActiveCid(cid);
|
|
||||||
setShowReplyModal(true);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[activeCid],
|
|
||||||
);
|
|
||||||
|
|
||||||
const closeModal = useCallback(() => {
|
const closeModal = useCallback(() => {
|
||||||
setActiveCid(null);
|
setActiveCid(null);
|
||||||
setShowReplyModal(false);
|
setShowReplyModal(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const openReplyModal = useCallback(
|
||||||
|
(cid: string) => {
|
||||||
|
if (activeCid && activeCid !== cid) {
|
||||||
|
closeModal();
|
||||||
|
setTimeout(() => {
|
||||||
|
setActiveCid(cid);
|
||||||
|
setShowReplyModal(true);
|
||||||
|
}, 0); // minimal timeout to allow for state reset
|
||||||
|
} else if (!activeCid) {
|
||||||
|
setActiveCid(cid);
|
||||||
|
setShowReplyModal(true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[activeCid, closeModal],
|
||||||
|
);
|
||||||
|
|
||||||
return { showReplyModal, activeCid, openReplyModal, closeModal };
|
return { showReplyModal, activeCid, openReplyModal, closeModal };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -317,7 +317,7 @@
|
|||||||
--boardnav-desktop-link-text-decoration-hover: underline;
|
--boardnav-desktop-link-text-decoration-hover: underline;
|
||||||
--boardnav-mobile-background-color: #f0e0d6;
|
--boardnav-mobile-background-color: #f0e0d6;
|
||||||
--boardnav-mobile-border-bottom: 2px solid #d9c5b7;
|
--boardnav-mobile-border-bottom: 2px solid #d9c5b7;
|
||||||
--boardnav-mobile-font-size: 11pt;
|
--boardnav-mobile-font-size: 10pt;
|
||||||
--boardnav-mobile-button-text-color: #00f;
|
--boardnav-mobile-button-text-color: #00f;
|
||||||
|
|
||||||
/* board title */
|
/* board title */
|
||||||
@@ -440,7 +440,7 @@
|
|||||||
--boardnav-desktop-link-text-decoration-hover: underline;
|
--boardnav-desktop-link-text-decoration-hover: underline;
|
||||||
--boardnav-mobile-background-color: #d6daf0;
|
--boardnav-mobile-background-color: #d6daf0;
|
||||||
--boardnav-mobile-border-bottom: 2px solid #b7c5d9;
|
--boardnav-mobile-border-bottom: 2px solid #b7c5d9;
|
||||||
--boardnav-mobile-font-size: 11pt;
|
--boardnav-mobile-font-size: 10pt;
|
||||||
--boardnav-mobile-button-text-color: #34345c;
|
--boardnav-mobile-button-text-color: #34345c;
|
||||||
|
|
||||||
/* body */
|
/* body */
|
||||||
|
|||||||
@@ -67,7 +67,14 @@ const Board = () => {
|
|||||||
<>
|
<>
|
||||||
{rules && rules.length > 0 && <SubplebbitRules subplebbitAddress={subplebbitAddress} createdAt={createdAt} rules={rules} />}
|
{rules && rules.length > 0 && <SubplebbitRules subplebbitAddress={subplebbitAddress} createdAt={createdAt} rules={rules} />}
|
||||||
{description && description.length > 0 && (
|
{description && description.length > 0 && (
|
||||||
<SubplebbitDescription avatarUrl={suggested?.avatarUrl} subplebbitAddress={subplebbitAddress} createdAt={createdAt} description={description} title={title} />
|
<SubplebbitDescription
|
||||||
|
avatarUrl={suggested?.avatarUrl}
|
||||||
|
subplebbitAddress={subplebbitAddress}
|
||||||
|
createdAt={createdAt}
|
||||||
|
description={description}
|
||||||
|
shortAddress={shortAddress}
|
||||||
|
title={title}
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import useWindowWidth from '../../hooks/use-window-width';
|
|||||||
import CatalogRow from '../../components/catalog-row';
|
import CatalogRow from '../../components/catalog-row';
|
||||||
import LoadingEllipsis from '../../components/loading-ellipsis';
|
import LoadingEllipsis from '../../components/loading-ellipsis';
|
||||||
import styles from './catalog.module.css';
|
import styles from './catalog.module.css';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
const lastVirtuosoStates: { [key: string]: StateSnapshot } = {};
|
const lastVirtuosoStates: { [key: string]: StateSnapshot } = {};
|
||||||
|
|
||||||
@@ -32,7 +33,7 @@ const useFeedRows = (columnCount: number, feed: any, isFeedLoaded: boolean, subp
|
|||||||
author: { displayName: '## Board Mods' },
|
author: { displayName: '## Board Mods' },
|
||||||
content: description,
|
content: description,
|
||||||
link: avatarUrl,
|
link: avatarUrl,
|
||||||
title: 'Welcome to ' + (title || `p/${shortAddress}`),
|
title: t('welcome_to_board', { board: title || `p/${shortAddress}` }),
|
||||||
pinned: true,
|
pinned: true,
|
||||||
locked: true,
|
locked: true,
|
||||||
});
|
});
|
||||||
@@ -44,13 +45,13 @@ const useFeedRows = (columnCount: number, feed: any, isFeedLoaded: boolean, subp
|
|||||||
timestamp: createdAt,
|
timestamp: createdAt,
|
||||||
author: { displayName: '## Board Mods' },
|
author: { displayName: '## Board Mods' },
|
||||||
content: rules.map((rule: string, index: number) => `${index + 1}. ${rule}`).join('\n'),
|
content: rules.map((rule: string, index: number) => `${index + 1}. ${rule}`).join('\n'),
|
||||||
title: 'Rules',
|
title: _.capitalize(t('rules')),
|
||||||
pinned: true,
|
pinned: true,
|
||||||
locked: true,
|
locked: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return _feed;
|
return _feed;
|
||||||
}, [feed, description, rules, address, isFeedLoaded, createdAt, title, shortAddress, avatarUrl]);
|
}, [feed, description, rules, address, isFeedLoaded, createdAt, title, shortAddress, avatarUrl, t]);
|
||||||
|
|
||||||
// Memoize rows calculation, ensuring it updates on changes to the modified feed or column count
|
// Memoize rows calculation, ensuring it updates on changes to the modified feed or column count
|
||||||
const rows = useMemo(() => {
|
const rows = useMemo(() => {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const PostPage = () => {
|
|||||||
const { commentCid, subplebbitAddress } = params;
|
const { commentCid, subplebbitAddress } = params;
|
||||||
|
|
||||||
const subplebbit = useSubplebbit({ subplebbitAddress });
|
const subplebbit = useSubplebbit({ subplebbitAddress });
|
||||||
const { createdAt, description, rules, suggested, title } = subplebbit;
|
const { createdAt, description, rules, shortAddress, suggested, title } = subplebbit;
|
||||||
|
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const isInDescriptionView = isDescriptionView(location.pathname, params);
|
const isInDescriptionView = isDescriptionView(location.pathname, params);
|
||||||
@@ -36,7 +36,14 @@ const PostPage = () => {
|
|||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
{showReplyModal && activeCid && <ReplyModal closeModal={closeModal} parentCid={activeCid} />}
|
{showReplyModal && activeCid && <ReplyModal closeModal={closeModal} parentCid={activeCid} />}
|
||||||
{isInDescriptionView ? (
|
{isInDescriptionView ? (
|
||||||
<SubplebbitDescription avatarUrl={suggested?.avatarUrl} createdAt={createdAt} description={description} subplebbitAddress={subplebbitAddress} title={title} />
|
<SubplebbitDescription
|
||||||
|
avatarUrl={suggested?.avatarUrl}
|
||||||
|
createdAt={createdAt}
|
||||||
|
description={description}
|
||||||
|
subplebbitAddress={subplebbitAddress}
|
||||||
|
shortAddress={shortAddress}
|
||||||
|
title={title}
|
||||||
|
/>
|
||||||
) : isInRulesView ? (
|
) : isInRulesView ? (
|
||||||
<SubplebbitRules createdAt={createdAt} rules={rules} subplebbitAddress={subplebbitAddress} />
|
<SubplebbitRules createdAt={createdAt} rules={rules} subplebbitAddress={subplebbitAddress} />
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
Reference in New Issue
Block a user