From 404a464310c82df1a39a9bf7568aeb2db915fd68 Mon Sep 17 00:00:00 2001 From: Tommaso Casaburi Date: Sat, 6 Jun 2026 19:06:04 +0700 Subject: [PATCH] feat: use s.5chan.app share links and remove report menu items Copy share links as path-based s.5chan.app URLs so the share server can render social previews, rename the menu label, remove the stub report action, and update the FAQ. --- public/translations/ar/default.json | 5 ++- public/translations/bn/default.json | 5 ++- public/translations/cs/default.json | 5 ++- public/translations/da/default.json | 5 ++- public/translations/de/default.json | 5 ++- public/translations/el/default.json | 5 ++- public/translations/en/default.json | 5 ++- public/translations/es/default.json | 5 ++- public/translations/fa/default.json | 5 ++- public/translations/fi/default.json | 5 ++- public/translations/fil/default.json | 5 ++- public/translations/fr/default.json | 5 ++- public/translations/he/default.json | 5 ++- public/translations/hi/default.json | 5 ++- public/translations/hu/default.json | 5 ++- public/translations/id/default.json | 5 ++- public/translations/it/default.json | 5 ++- public/translations/ja/default.json | 5 ++- public/translations/ko/default.json | 5 ++- public/translations/mr/default.json | 5 ++- public/translations/nl/default.json | 5 ++- public/translations/no/default.json | 5 ++- public/translations/pl/default.json | 5 ++- public/translations/pt/default.json | 5 ++- public/translations/ro/default.json | 5 ++- public/translations/ru/default.json | 5 ++- public/translations/sq/default.json | 5 ++- public/translations/sv/default.json | 5 ++- public/translations/te/default.json | 5 ++- public/translations/th/default.json | 5 ++- public/translations/tr/default.json | 5 ++- public/translations/uk/default.json | 5 ++- public/translations/ur/default.json | 5 ++- public/translations/vi/default.json | 5 ++- public/translations/zh/default.json | 5 ++- .../__tests__/post-menu-desktop.test.tsx | 2 +- .../post-menu-desktop/post-menu-desktop.tsx | 26 +++------------ .../__tests__/post-menu-mobile.test.tsx | 2 +- .../post-menu-mobile/post-menu-mobile.tsx | 32 +++---------------- src/lib/utils/__tests__/url-utils.test.ts | 8 +++-- src/lib/utils/url-utils.ts | 14 +++++--- src/views/faq/faq.tsx | 4 +-- 42 files changed, 97 insertions(+), 166 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 3187e2e7..fe42b1ce 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "في انتظار موافقة المشرف، غير مرئي للمستخدمين", "copy_user_id": "نسخ معرف المستخدم", - "copy_direct_link": "نسخ الرابط المباشر", "posts_auto_update_info": "يتم تحديث المنشورات تلقائياً كل ~2 دقيقة. لا يمكن تعطيل هذا في الوقت الحالي.", "board_address_tooltip": "عنوان عقدة الند للند لهذه اللوحة", "upload_failed": "فشل التحميل", @@ -307,7 +306,6 @@ "loading_archive": "تحميل الأرشيف...", "thread_archived": "تم أرشفة الموضوع.", "view": "عرض", - "report_post": "الإبلاغ عن المنشور", "delete_post": "حذف المنشور", "delete_post_confirm": "حذف هذا المنشور نهائياً؟ لا يمكن التراجع عن هذا.", "app_p2p_info": "يمكنك دائمًا الاتصال بأي لوحة، بشكل كامل P2P، لا أحد يستطيع إيقافك. ما عليك سوى لصق عنوانها في حقل البحث أعلاه.", @@ -406,5 +404,6 @@ "boards_loaded": "اللوحات المحملة:", "link_not_image_or_video_alert": "الرابط ليس صورة أو فيديو.", "not_a_file": "ليس ملفًا", - "tor_author_flag_label": "هذا المستخدم يستخدم Tor" + "tor_author_flag_label": "هذا المستخدم يستخدم Tor", + "copy_share_link": "نسخ رابط المشاركة" } diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 52b2008a..ec29b8b6 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "মডারেটর অনুমোদনের জন্য অপেক্ষা করছে, ব্যবহারকারীদের কাছে দৃশ্যমান নয়", "copy_user_id": "ইউজার আইডি কপি করুন", - "copy_direct_link": "সরাসরি লিংক অনুলিপি করুন", "posts_auto_update_info": "পোস্টগুলি প্রতি ~2 মিনিটে স্বয়ংক্রিয়ভাবে আপডেট হয়। বর্তমানে এটি অক্ষম করা সম্ভব নয়।", "board_address_tooltip": "এই বোর্ডের পিয়ার-টু-পিয়ার নোডের ঠিকানা", "upload_failed": "আপলোড ব্যর্থ", @@ -307,7 +306,6 @@ "loading_archive": "সংরক্ষণাগার লোড করা হচ্ছে...", "thread_archived": "থ্রেড আর্কাইভ করা হয়েছে।", "view": "দেখুন", - "report_post": "পোস্ট রিপোর্ট করুন", "delete_post": "পোস্ট মুছুন", "delete_post_confirm": "এই পোস্ট স্থায়ীভাবে মুছে ফেলবেন? এটি অপ্রত্যাবর্তনীয়।", "app_p2p_info": "আপনি যেকোনো বোর্ডে সর্বদা সংযোগ করতে পারেন, সম্পূর্ণ P2P, কেউ আপনাকে থামাতে পারবে না। উপরের অনুসন্ধান ক্ষেত্রে কেবল তার ঠিকানা পেস্ট করুন।", @@ -406,5 +404,6 @@ "boards_loaded": "লোড করা বোর্ড:", "link_not_image_or_video_alert": "লিংকটি ছবি বা ভিডিও নয়।", "not_a_file": "ফাইল নয়", - "tor_author_flag_label": "এই ব্যবহারকারী Tor ব্যবহার করছেন" + "tor_author_flag_label": "এই ব্যবহারকারী Tor ব্যবহার করছেন", + "copy_share_link": "শেয়ার লিংক কপি করুন" } diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index f48f227d..5074db88 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Čekání na schválení moderatorem, není viditelné uživatelům", "copy_user_id": "kopírovat ID uživatele", - "copy_direct_link": "kopírovat přímý odkaz", "posts_auto_update_info": "Příspěvky se aktualizují automaticky přibližně každých ~2 minut. V současné době není možné tuto funkci zakázat.", "board_address_tooltip": "Adresa uzlu peer-to-peer této desky", "upload_failed": "Nahrávání se nezdařilo", @@ -307,7 +306,6 @@ "loading_archive": "Načítání archivu...", "thread_archived": "Vlákno archivováno.", "view": "Zobrazit", - "report_post": "Nahlásit příspěvek", "delete_post": "Smazat příspěvek", "delete_post_confirm": "Nadobro smazat tento příspěvek? Tuto akci nelze vrátit zpět.", "app_p2p_info": "K jakékoli desce se můžete kdykoli připojit, plně P2P, nikdo vás nemůže zastavit. Stačí vložit její adresu do vyhledávacího pole výše.", @@ -406,5 +404,6 @@ "boards_loaded": "načtené nástěnky:", "link_not_image_or_video_alert": "Odkaz není obrázek ani video.", "not_a_file": "není soubor", - "tor_author_flag_label": "Tento uživatel je na síti Tor" + "tor_author_flag_label": "Tento uživatel je na síti Tor", + "copy_share_link": "Kopírovat odkaz pro sdílení" } diff --git a/public/translations/da/default.json b/public/translations/da/default.json index ad74f783..e8a05f19 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Afventer moderatorgodkendelse, ikke synlig for brugere", "copy_user_id": "kopier bruger-ID", - "copy_direct_link": "kopier direkte link", "posts_auto_update_info": "Indlæg opdateres automatisk hver ~2 minut. Det er ikke muligt at deaktivere dette i øjeblikket.", "board_address_tooltip": "Adressen til dette boards peer-to-peer-node", "upload_failed": "Upload mislykkedes", @@ -307,7 +306,6 @@ "loading_archive": "Indlæser arkiv...", "thread_archived": "Tråd arkiveret.", "view": "Se", - "report_post": "Rapporter indlæg", "delete_post": "Slet indlæg", "delete_post_confirm": "Slet dette opslag permanent? Dette kan ikke fortrydes.", "app_p2p_info": "Du kan altid forbinde til ethvert board, fuldt P2P, ingen kan stoppe dig. Indsæt blot dens adresse i søgefeltet ovenfor.", @@ -406,5 +404,6 @@ "boards_loaded": "indlæste boards:", "link_not_image_or_video_alert": "Linket er ikke et billede eller en video.", "not_a_file": "ikke en fil", - "tor_author_flag_label": "Denne bruger er på Tor" + "tor_author_flag_label": "Denne bruger er på Tor", + "copy_share_link": "Kopier delingslinkk" } diff --git a/public/translations/de/default.json b/public/translations/de/default.json index d6136f95..6b94d249 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -236,7 +236,6 @@ "no": "Nein", "pending_mod_approval": "Ausstehende Moderatorgenehmigung, für Benutzer nicht sichtbar", "copy_user_id": "Benutzer-ID kopieren", - "copy_direct_link": "Direktlink kopieren", "posts_auto_update_info": "Beiträge werden automatisch etwa alle ~2 Minuten aktualisiert. Es ist derzeit nicht möglich, dies zu deaktivieren.", "board_address_tooltip": "Die Adresse des Peer-to-Peer-Knotens dieses Boards", "upload_failed": "Upload fehlgeschlagen", @@ -307,7 +306,6 @@ "loading_archive": "Archiv wird geladen...", "thread_archived": "Thread archiviert.", "view": "Ansehen", - "report_post": "Beitrag melden", "delete_post": "Beitrag löschen", "delete_post_confirm": "Diesen Beitrag dauerhaft löschen? Dies kann nicht rückgängig gemacht werden.", "app_p2p_info": "Du kannst dich jederzeit mit jedem Board verbinden, vollständig P2P, niemand kann dich aufhalten. Füge einfach seine Adresse in das Suchfeld oben ein.", @@ -406,5 +404,6 @@ "boards_loaded": "geladene Boards:", "link_not_image_or_video_alert": "Der Link ist kein Bild oder Video.", "not_a_file": "keine Datei", - "tor_author_flag_label": "Dieser Benutzer ist auf Tor" + "tor_author_flag_label": "Dieser Benutzer ist auf Tor", + "copy_share_link": "Freigabelink kopieren" } diff --git a/public/translations/el/default.json b/public/translations/el/default.json index f70674e2..724a17f9 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Σε αναμονή έγκρισης διαχειριστή, δεν είναι ορατό στους χρήστες", "copy_user_id": "αντιγραφή ID χρήστη", - "copy_direct_link": "αντιγραφή άμεσου συνδέσμου", "posts_auto_update_info": "Οι δημοσιεύσεις ενημερώνονται αυτόματα περίπου κάθε ~2 λεπτά. Δεν είναι δυνατό να απενεργοποιήσετε αυτό τη στιγμή.", "board_address_tooltip": "Η διεύθυνση του κόμβου peer-to-peer αυτού του πίνακα", "upload_failed": "Αποτυχία μεταφόρτωσης", @@ -307,7 +306,6 @@ "loading_archive": "Φόρτωση αρχείου...", "thread_archived": "Το νήμα αρχειοθετήθηκε.", "view": "Προβολή", - "report_post": "Αναφορά ανάρτησης", "delete_post": "Διαγραφή ανάρτησης", "delete_post_confirm": "Διαγραφή οριστικά αυτής της ανάρτησης; Δεν είναι δυνατή η αναίρεση.", "app_p2p_info": "Μπορείς πάντα να συνδεθείς σε οποιοδήποτε board, πλήρως P2P, κανείς δεν μπορεί να σε σταματήσει. Απλά επικόλλησε τη διεύθυνσή του στο πεδίο αναζήτησης παραπάνω.", @@ -406,5 +404,6 @@ "boards_loaded": "φορτωμένοι πίνακες:", "link_not_image_or_video_alert": "Ο σύνδεσμος δεν είναι εικόνα ή βίντεο.", "not_a_file": "δεν είναι αρχείο", - "tor_author_flag_label": "Αυτός ο χρήστης είναι στο Tor" + "tor_author_flag_label": "Αυτός ο χρήστης είναι στο Tor", + "copy_share_link": "Αντιγραφή ενός συνδέσμου" } diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 54480672..d9a1ce7b 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -98,7 +98,6 @@ "invalid_url": "Invalid URL", "image_search": "image search", "hide_post": "Hide post", - "report_post": "Report post", "delete_post": "Delete post", "delete_post_confirm": "Delete this post permanently? This cannot be undone.", "hide_thread": "Hide thread", @@ -259,7 +258,6 @@ "no": "No", "pending_mod_approval": "Pending mod approval, not visible to users", "copy_user_id": "Copy user ID", - "copy_direct_link": "Copy direct link", "board_address_tooltip": "The address of this board's peer-to-peer node", "directory_heading": "Displaying all ({{count}}) known /{{boardIdentifier}}/ boards on 5chan", "directory_score": "Score", @@ -425,5 +423,6 @@ "boards_loaded": "boards loaded:", "link_not_image_or_video_alert": "Link is not an image or video.", "not_a_file": "not a file", - "tor_author_flag_label": "This user is on Tor" + "tor_author_flag_label": "This user is on Tor", + "copy_share_link": "Copy share link" } diff --git a/public/translations/es/default.json b/public/translations/es/default.json index a4b8c389..ba0a3984 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Pendiente de aprobación del moderador, no visible para los usuarios", "copy_user_id": "Copiar ID de usuario", - "copy_direct_link": "Copiar enlace directo", "posts_auto_update_info": "Los posts se actualizan automáticamente cada ~2 minutos. Por el momento, no es posible desactivar esto.", "board_address_tooltip": "La dirección del nodo peer-to-peer de este tablón", "upload_failed": "Error al subir", @@ -307,7 +306,6 @@ "loading_archive": "Cargando archivo...", "thread_archived": "Hilo archivado.", "view": "Ver", - "report_post": "Denunciar publicación", "delete_post": "Eliminar publicación", "delete_post_confirm": "¿Eliminar esta publicación permanentemente? Esto no se puede deshacer.", "app_p2p_info": "Siempre puedes conectarte a cualquier tablón, totalmente P2P, nadie puede impedírtelo. Simplemente pega su dirección en el campo de búsqueda de arriba.", @@ -406,5 +404,6 @@ "boards_loaded": "tableros cargados:", "link_not_image_or_video_alert": "El enlace no es una imagen ni un video.", "not_a_file": "no es un archivo", - "tor_author_flag_label": "Este usuario está en Tor" + "tor_author_flag_label": "Este usuario está en Tor", + "copy_share_link": "Copiar enlace compartido" } diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index ac3c1acf..3eb606ce 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "در انتظار تایید مدیر، برای کاربران قابل مشاهده نیست", "copy_user_id": "کپی شناسه کاربر", - "copy_direct_link": "رونوشت لینک مستقیم", "posts_auto_update_info": "پست‌ها هر ~2 دقیقه به‌طور خودکار به‌روز می‌شوند. فعلاً امکان غیرفعال کردن آن وجود ندارد.", "board_address_tooltip": "آدرس گره هم‌تا-همتای این تخته", "upload_failed": "آپلود ناموفق بود", @@ -307,7 +306,6 @@ "loading_archive": "در حال بارگذاری بایگانی...", "thread_archived": "موضوع بایگانی شد.", "view": "مشاهده", - "report_post": "گزارش پست", "delete_post": "حذف پست", "delete_post_confirm": "این پست را برای همیشه حذف کن؟ این کار قابل بازگشت نیست.", "app_p2p_info": "همیشه می‌توانید به هر بوردی متصل شوید، کاملاً P2P، هیچ‌کس نمی‌تواند جلوی شما را بگیرد. کافی است آدرس آن را در فیلد جستجوی بالا بچسبانید.", @@ -406,5 +404,6 @@ "boards_loaded": "بردهای بارگذاری‌شده:", "link_not_image_or_video_alert": "پیوند تصویر یا ویدیو نیست.", "not_a_file": "فایل نیست", - "tor_author_flag_label": "این کاربر روی Tor است" + "tor_author_flag_label": "این کاربر روی Tor است", + "copy_share_link": "کپی کردن لینک اشتراک" } diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 5dd55c40..57be0c31 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Odottaa moderaattorin hyväksyntää, ei näkyvissä käyttäjille", "copy_user_id": "kopioi käyttäjätunnus", - "copy_direct_link": "kopioi suora linkki", "posts_auto_update_info": "Viestit päivittyvät automaattisesti noin 2 minuutin välein. Tätä ei ole mahdollista poistaa käytöstä tällä hetkellä.", "board_address_tooltip": "Tämän laudan vertaisverkko-solmun osoite", "upload_failed": "Lataus epäonnistui", @@ -307,7 +306,6 @@ "loading_archive": "Ladataan arkistoa...", "thread_archived": "Keskustelu arkistoitu.", "view": "Katso", - "report_post": "Ilmoita viestistä", "delete_post": "Poista viesti", "delete_post_confirm": "Poistetaanko tämä julkaisu pysyvästi? Tätä ei voi perua.", "app_p2p_info": "Voit aina yhdistää mihin tahansa boardiin, täysin P2P, kukaan ei voi estää sinua. Liitä vain sen osoite yllä olevaan hakukenttään.", @@ -406,5 +404,6 @@ "boards_loaded": "ladatut boardit:", "link_not_image_or_video_alert": "Linkki ei ole kuva tai video.", "not_a_file": "ei ole tiedosto", - "tor_author_flag_label": "Tämä käyttäjä on Torissa" + "tor_author_flag_label": "Tämä käyttäjä on Torissa", + "copy_share_link": "Kopioi jakolinkkii" } diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 7cff6036..f7e6f68a 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Naghihintay ng pag-apruba ng moderator, hindi nakikita ng mga gumagamit", "copy_user_id": "kopyahin ang user ID", - "copy_direct_link": "kopyahin ang direct link", "posts_auto_update_info": "Ang mga post ay awtomatikong nag-update bawat ~2 minuto. Kasalukuyang hindi posible na i-disable ito.", "board_address_tooltip": "Ang address ng peer-to-peer node ng board na ito", "upload_failed": "Nabigo ang pag-upload", @@ -307,7 +306,6 @@ "loading_archive": "Naglo-load ng arkibo...", "thread_archived": "Thread na-archive na.", "view": "Tingnan", - "report_post": "I-report ang post", "delete_post": "Tanggalin ang post", "delete_post_confirm": "Permanenteng tanggalin ang post na ito? Hindi na ito maibabalik.", "app_p2p_info": "Maaari mong palaging kumonekta sa anumang board, ganap na P2P, walang makakapigil sa iyo. I-paste lamang ang address nito sa search field sa itaas.", @@ -406,5 +404,6 @@ "boards_loaded": "mga board na na-load:", "link_not_image_or_video_alert": "Ang link ay hindi larawan o video.", "not_a_file": "hindi file", - "tor_author_flag_label": "Ang user na ito ay nasa Tor" + "tor_author_flag_label": "Ang user na ito ay nasa Tor", + "copy_share_link": "Kopyahin ang link sa pagbabahagi" } diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 6786b5e2..b6bf8b1e 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -236,7 +236,6 @@ "no": "Non", "pending_mod_approval": "En attente d'approbation du modérateur, non visible pour les utilisateurs", "copy_user_id": "Copier l'ID utilisateur", - "copy_direct_link": "Copier le lien direct", "posts_auto_update_info": "Les messages se mettent à jour automatiquement toutes les ~2 minutes. Il n'est pas possible de désactiver cela pour le moment.", "board_address_tooltip": "L'adresse du nœud pair-à-pair de ce tableau", "upload_failed": "Échec du téléchargement", @@ -307,7 +306,6 @@ "loading_archive": "Chargement des archives...", "thread_archived": "Fil archivé.", "view": "Voir", - "report_post": "Signaler la publication", "delete_post": "Supprimer la publication", "delete_post_confirm": "Supprimer définitivement cette publication ? Cette action est irréversible.", "app_p2p_info": "Tu peux toujours te connecter à n'importe quel board, entièrement P2P, personne ne peut t'en empêcher. Colle simplement son adresse dans le champ de recherche ci-dessus.", @@ -406,5 +404,6 @@ "boards_loaded": "boards chargés :", "link_not_image_or_video_alert": "Le lien n'est pas une image ni une vidéo.", "not_a_file": "pas un fichier", - "tor_author_flag_label": "Cet utilisateur est sur Tor" + "tor_author_flag_label": "Cet utilisateur est sur Tor", + "copy_share_link": "Copier le lien de partage" } diff --git a/public/translations/he/default.json b/public/translations/he/default.json index e62b4e39..5e4692d3 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "ממתין לאישור מנהל, לא ניתן לראות למשתמשים", "copy_user_id": "העתק מזהה משתמש", - "copy_direct_link": "העתק קישור ישיר", "posts_auto_update_info": "הפוסטים מתעדכנים באופן אוטומטי בערך כל ~2 דקות. כרגע לא ניתן להשבית זאת.", "board_address_tooltip": "כתובת צומת ה-P2P של הלוח הזה", "upload_failed": "ההעלאה נכשלה", @@ -307,7 +306,6 @@ "loading_archive": "טוען ארכיון...", "thread_archived": "השרשור נשמר בארכיון.", "view": "צפה", - "report_post": "דווח על פוסט", "delete_post": "מחק פוסט", "delete_post_confirm": "למחוק את הפוסט הזה לצמיתות? לא ניתן לבטל פעולה זו.", "app_p2p_info": "תמיד תוכל להתחבר לכל לוח, במלואו P2P, אף אחד לא יכול לעצור אותך. פשוט הדבק את הכתובת שלו בשדה החיפוש למעלה.", @@ -406,5 +404,6 @@ "boards_loaded": "לוחות שנטענו:", "link_not_image_or_video_alert": "הקישור אינו תמונה או וידאו.", "not_a_file": "לא קובץ", - "tor_author_flag_label": "המשתמש הזה נמצא ב-Tor" + "tor_author_flag_label": "המשתמש הזה נמצא ב-Tor", + "copy_share_link": "העתק קישור שיתוף" } diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index bcfa2b33..d1ac4caa 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "मॉडरेटर की मंजूरी के लिए प्रतीक्षा में, उपयोगकर्ताओं को दिखाई नहीं देता", "copy_user_id": "यूज़र ID कॉपी करें", - "copy_direct_link": "डायरेक्ट लिंक कॉपी करें", "posts_auto_update_info": "पोस्ट्स हर ~2 मिनट में स्वचालित रूप से अपडेट होते हैं। फिलहाल इसे अक्षम करना संभव नहीं है।", "board_address_tooltip": "इस बोर्ड के पीयर-टू-पीयर नोड का पता", "upload_failed": "अपलोड विफल", @@ -307,7 +306,6 @@ "loading_archive": "संग्रह लोड हो रहा है...", "thread_archived": "थ्रेड आर्काइव हो गया।", "view": "देखें", - "report_post": "पोस्ट की रिपोर्ट करें", "delete_post": "पोस्ट हटाएं", "delete_post_confirm": "क्या इस पोस्ट को स्थायी रूप से हटाया जाए? इसे पूर्ववत नहीं किया जा सकता।", "app_p2p_info": "आप किसी भी बोर्ड से हमेशा कनेक्ट हो सकते हैं, पूरी तरह P2P, कोई आपको रोक नहीं सकता। बस ऊपर दिए गए खोज क्षेत्र में उसका पता पेस्ट करें।", @@ -406,5 +404,6 @@ "boards_loaded": "लोड किए गए बोर्ड:", "link_not_image_or_video_alert": "लिंक कोई छवि या वीडियो नहीं है.", "not_a_file": "फ़ाइल नहीं है", - "tor_author_flag_label": "यह उपयोगकर्ता Tor पर है" + "tor_author_flag_label": "यह उपयोगकर्ता Tor पर है", + "copy_share_link": "शेयर लिंक कॉपी करें" } diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 5f5e90b0..a693036e 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Moderátor jóváhagyása alatt áll, a felhasználók számára nem látható", "copy_user_id": "felhasználói ID másolása", - "copy_direct_link": "közvetlen link másolása", "posts_auto_update_info": "A bejegyzések kb. 2 percenként automatikusan frissülnek. Jelenleg nem lehetséges ezt letiltani.", "board_address_tooltip": "Ennek a táblának a peer-to-peer csomópontja címe", "upload_failed": "A feltöltés sikertelen", @@ -307,7 +306,6 @@ "loading_archive": "Archívum betöltése...", "thread_archived": "A téma archiválva.", "view": "Megtekintés", - "report_post": "Bejegyzés jelentése", "delete_post": "Bejegyzés törlése", "delete_post_confirm": "Végleg törölni ezt a bejegyzést? Ez nem vonható vissza.", "app_p2p_info": "Bármikor csatlakozhatsz bármely boardhoz, teljesen P2P, senki sem állíthat meg. Egyszerűen illeszd be a címét a fenti keresőmezőbe.", @@ -406,5 +404,6 @@ "boards_loaded": "betöltött boardok:", "link_not_image_or_video_alert": "A hivatkozás nem kép vagy videó.", "not_a_file": "nem fájl", - "tor_author_flag_label": "Ez a felhasználó a Tor hálózatán van" + "tor_author_flag_label": "Ez a felhasználó a Tor hálózatán van", + "copy_share_link": "Megosztási hivatkozás másolása" } diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 360b76b8..f0bcbace 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Menunggu persetujuan moderator, tidak terlihat oleh pengguna", "copy_user_id": "salin ID pengguna", - "copy_direct_link": "salin tautan langsung", "posts_auto_update_info": "Posting diperbarui secara otomatis setiap ~2 menit. Saat ini tidak mungkin untuk menonaktifkan ini.", "board_address_tooltip": "Alamat node peer-to-peer papan ini", "upload_failed": "Unggahan gagal", @@ -307,7 +306,6 @@ "loading_archive": "Memuat arsip...", "thread_archived": "Benang diarsipkan.", "view": "Lihat", - "report_post": "Laporkan kiriman", "delete_post": "Hapus kiriman", "delete_post_confirm": "Hapus permanen postingan ini? Tindakan ini tidak dapat dibatalkan.", "app_p2p_info": "Anda selalu dapat terhubung ke board mana pun, sepenuhnya P2P, tidak ada yang bisa menghentikan Anda. Cukup tempel alamatnya di kolom pencarian di atas.", @@ -406,5 +404,6 @@ "boards_loaded": "board dimuat:", "link_not_image_or_video_alert": "Tautan bukan gambar atau video.", "not_a_file": "bukan file", - "tor_author_flag_label": "Pengguna ini ada di Tor" + "tor_author_flag_label": "Pengguna ini ada di Tor", + "copy_share_link": "Salin tautan bagian" } diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 96be7a0d..a0d52942 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "In attesa di approvazione del moderatore, non visibile agli utenti", "copy_user_id": "Copia ID utente", - "copy_direct_link": "Copia link diretto", "posts_auto_update_info": "I post si aggiornano automaticamente ogni ~2 minuti. Non è possibile disabilitare questa funzione al momento.", "board_address_tooltip": "L'indirizzo del nodo peer-to-peer di questa bacheca", "upload_failed": "Caricamento fallito", @@ -307,7 +306,6 @@ "loading_archive": "Caricamento archivio...", "thread_archived": "Thread archiviato.", "view": "Visualizza", - "report_post": "Segnala post", "delete_post": "Elimina post", "delete_post_confirm": "Eliminare definitivamente questo post? Non è possibile annullare questa operazione.", "app_p2p_info": "Puoi sempre connetterti a qualsiasi board, completamente P2P, nessuno può fermarti. Basta incollare il suo indirizzo nel campo di ricerca sopra.", @@ -406,5 +404,6 @@ "boards_loaded": "board caricati:", "link_not_image_or_video_alert": "Il link non è un'immagine né un video.", "not_a_file": "non è un file", - "tor_author_flag_label": "Questo utente è su Tor" + "tor_author_flag_label": "Questo utente è su Tor", + "copy_share_link": "Copia link condiviso" } diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 1fcc4ca7..67269b2a 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -236,7 +236,6 @@ "no": "いいえ", "pending_mod_approval": "モデレーターの承認待ち、ユーザーには表示されません", "copy_user_id": "ユーザーIDをコピー", - "copy_direct_link": "直接リンクをコピー", "posts_auto_update_info": "投稿は約2分ごとに自動更新されます。現在、これを無効にすることはできません。", "board_address_tooltip": "この板のピアツーピアノードのアドレス", "upload_failed": "アップロードに失敗しました", @@ -307,7 +306,6 @@ "loading_archive": "アーカイブを読み込み中...", "thread_archived": "スレッドがアーカイブされました。", "view": "表示", - "report_post": "投稿を報告", "delete_post": "投稿を削除", "delete_post_confirm": "この投稿を完全に削除しますか?元に戻せません。", "app_p2p_info": "いつでもどのボードにも接続できます。完全にP2Pなので、誰にも止められません。上の検索欄にアドレスを貼り付けるだけです。", @@ -406,5 +404,6 @@ "boards_loaded": "読み込まれた板:", "link_not_image_or_video_alert": "リンクは画像または動画ではありません。", "not_a_file": "ファイルではありません", - "tor_author_flag_label": "このユーザーはTorを使用しています" + "tor_author_flag_label": "このユーザーはTorを使用しています", + "copy_share_link": "シェアリンクをコピー" } diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index bd2fb2f3..9b13325f 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "중재자 승인 대기 중, 사용자에게 표시되지 않음", "copy_user_id": "사용자 ID 복사", - "copy_direct_link": "직접 링크 복사", "posts_auto_update_info": "게시물은 약 2분마다 자동으로 업데이트됩니다. 현재 이를 비활성화할 수 없습니다.", "board_address_tooltip": "이 게시판의 P2P 노드 주소", "upload_failed": "업로드 실패", @@ -307,7 +306,6 @@ "loading_archive": "아카이브 로딩 중...", "thread_archived": "스레드가 아카이브되었습니다.", "view": "보기", - "report_post": "게시물 신고", "delete_post": "게시물 삭제", "delete_post_confirm": "이 게시물을 영구적으로 삭제하시겠습니까? 취소할 수 없습니다.", "app_p2p_info": "언제든 어떤 보드에도 연결할 수 있습니다. 완전 P2P라 아무도 당신을 막을 수 없습니다. 위 검색창에 주소를 붙여넣기만 하면 됩니다.", @@ -406,5 +404,6 @@ "boards_loaded": "불러온 게시판:", "link_not_image_or_video_alert": "링크가 이미지 또는 동영상이 아닙니다.", "not_a_file": "파일이 아님", - "tor_author_flag_label": "이 사용자는 Tor를 사용 중입니다" + "tor_author_flag_label": "이 사용자는 Tor를 사용 중입니다", + "copy_share_link": "공유 링크 복사" } diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 6a05d049..3d1cae55 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "संचालकाच्या मंजुरीची प्रतीक्षा, वापरकर्त्यांना दिसत नाही", "copy_user_id": "यूजर ID कॉपी करा", - "copy_direct_link": "डायरेक्ट लिंक कॉपी करा", "posts_auto_update_info": "पोस्ट प्रत्येक ~2 मिनिटात स्वयंचलितपणे अपडेट होतात. सध्या हे अक्षम करणे शक्य नाही.", "board_address_tooltip": "या बोर्डच्या पीअर-टू-पीअर नोडचा पत्ता", "upload_failed": "अपलोड अयशस्वी", @@ -307,7 +306,6 @@ "loading_archive": "संग्रह लोड करत आहे...", "thread_archived": "सूत्र आर्काइव केले गेले.", "view": "पहा", - "report_post": "पोस्ट निर्वेदन करा", "delete_post": "पोस्ट हटवा", "delete_post_confirm": "हे पोस्ट कायमचे हटवायचे? हे पूर्ववत करता येणार नाही.", "app_p2p_info": "तुम्ही नेहमी कोणत्याही बोर्डशी कनेक्ट होऊ शकता, पूर्णपणे P2P, कोणीही तुम्हाला थांबवू शकत नाही. वरील शोध क्षेत्रात त्याचा पत्ता पेस्ट करा.", @@ -406,5 +404,6 @@ "boards_loaded": "लोड केलेले बोर्ड:", "link_not_image_or_video_alert": "लिंक प्रतिमा किंवा व्हिडिओ नाही.", "not_a_file": "फाइल नाही", - "tor_author_flag_label": "हा वापरकर्ता Tor वर आहे" + "tor_author_flag_label": "हा वापरकर्ता Tor वर आहे", + "copy_share_link": "शेअर लिंक कॉपी करा" } diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index d0e1e370..da6d2495 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "In afwachting van moderatorgoedkeuring, niet zichtbaar voor gebruikers", "copy_user_id": "gebruikers-ID kopiëren", - "copy_direct_link": "directe link kopiëren", "posts_auto_update_info": "Berichten worden automatisch ongeveer elke ~2 minuten bijgewerkt. Het is momenteel niet mogelijk dit uit te schakelen.", "board_address_tooltip": "Het adres van de peer-to-peer-node van dit bord", "upload_failed": "Upload mislukt", @@ -307,7 +306,6 @@ "loading_archive": "Archief laden...", "thread_archived": "Thread gearchiveerd.", "view": "Bekijken", - "report_post": "Bericht melden", "delete_post": "Bericht verwijderen", "delete_post_confirm": "Dit bericht permanent verwijderen? Dit kan niet ongedaan worden gemaakt.", "app_p2p_info": "Je kunt altijd verbinding maken met elk board, volledig P2P, niemand kan je tegenhouden. Plak gewoon het adres in het zoekveld hierboven.", @@ -406,5 +404,6 @@ "boards_loaded": "geladen boards:", "link_not_image_or_video_alert": "De link is geen afbeelding of video.", "not_a_file": "geen bestand", - "tor_author_flag_label": "Deze gebruiker zit op Tor" + "tor_author_flag_label": "Deze gebruiker zit op Tor", + "copy_share_link": "Delen link kopiëren" } diff --git a/public/translations/no/default.json b/public/translations/no/default.json index f52e42c6..e8c072a5 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Venter på moderatorgodkjenning, ikke synlig for brukere", "copy_user_id": "kopier bruker-ID", - "copy_direct_link": "kopier direkte lenke", "posts_auto_update_info": "Innlegg oppdateres automatisk omtrent hver ~2 minutt. Det er ikke mulig å deaktivere dette for øyeblikket.", "board_address_tooltip": "Adressen til denne tavlens peer-to-peer-node", "upload_failed": "Opplasting mislyktes", @@ -307,7 +306,6 @@ "loading_archive": "Laster arkiv...", "thread_archived": "Tråd arkivert.", "view": "Se", - "report_post": "Rapporter innlegg", "delete_post": "Slett innlegg", "delete_post_confirm": "Slette dette innlegget permanent? Dette kan ikke angres.", "app_p2p_info": "Du kan alltid koble til hvilket som helst board, fullt P2P, ingen kan stoppe deg. Lim bare inn adressen i søkefeltet ovenfor.", @@ -406,5 +404,6 @@ "boards_loaded": "lastede boards:", "link_not_image_or_video_alert": "Lenken er ikke et bilde eller en video.", "not_a_file": "ikke en fil", - "tor_author_flag_label": "Denne brukeren er på Tor" + "tor_author_flag_label": "Denne brukeren er på Tor", + "copy_share_link": "Kopier delingslenke" } diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index f24a3fd1..73c54f5e 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Oczekiwanie na zatwierdzenie moderatora, niewidoczne dla użytkowników", "copy_user_id": "skopiuj ID użytkownika", - "copy_direct_link": "skopiuj bezpośredni link", "posts_auto_update_info": "Posty aktualizują się automatycznie co ~2 minuty. Chwilowo nie jest możliwe wyłączenie tej funkcji.", "board_address_tooltip": "Adres węzła peer-to-peer tej tablicy", "upload_failed": "Przesyłanie nie powiodło się", @@ -307,7 +306,6 @@ "loading_archive": "Ładowanie archiwum...", "thread_archived": "Wątek zarchiwizowany.", "view": "Zobacz", - "report_post": "Zgłoś post", "delete_post": "Usuń post", "delete_post_confirm": "Usunąć ten post na stałe? Tej operacji nie można cofnąć.", "app_p2p_info": "Zawsze możesz połączyć się z dowolnym boardem, w pełni P2P, nikt nie może cię powstrzymać. Wklej po prostu jego adres w pole wyszukiwania powyżej.", @@ -406,5 +404,6 @@ "boards_loaded": "załadowane boardy:", "link_not_image_or_video_alert": "Link nie jest obrazem ani filmem.", "not_a_file": "to nie plik", - "tor_author_flag_label": "Ten użytkownik jest w sieci Tor" + "tor_author_flag_label": "Ten użytkownik jest w sieci Tor", + "copy_share_link": "Kopiuj link udostępniania" } diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index 042ba742..3d0cbb57 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -236,7 +236,6 @@ "no": "Não", "pending_mod_approval": "Aguardando aprovação do moderador, não visível para os usuários", "copy_user_id": "Copiar ID do usuário", - "copy_direct_link": "Copiar link direto", "posts_auto_update_info": "Posts são atualizados automaticamente a cada ~2 minutos. Não é possível desabilitar isso no momento.", "board_address_tooltip": "O endereço do nó peer-to-peer desta placa", "upload_failed": "Falha no envio", @@ -307,7 +306,6 @@ "loading_archive": "Carregando arquivo...", "thread_archived": "Tópico arquivado.", "view": "Ver", - "report_post": "Denunciar publicação", "delete_post": "Excluir publicação", "delete_post_confirm": "Excluir esta publicação permanentemente? Isso não pode ser desfeito.", "app_p2p_info": "Podes sempre conectar a qualquer board, totalmente P2P, ninguém te pode impedir. Basta colar o endereço no campo de pesquisa acima.", @@ -406,5 +404,6 @@ "boards_loaded": "boards carregados:", "link_not_image_or_video_alert": "O link não é uma imagem nem um vídeo.", "not_a_file": "não é um arquivo", - "tor_author_flag_label": "Este usuário está no Tor" + "tor_author_flag_label": "Este usuário está no Tor", + "copy_share_link": "Copiar link compartilhado" } diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 8fa4d518..22aa95fd 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "În așteptarea aprobării moderatorului, nu este vizibil pentru utilizatori", "copy_user_id": "copiați ID-ul utilizatorului", - "copy_direct_link": "copiați linkul direct", "posts_auto_update_info": "Postările se actualizează automat la fiecare ~2 minute. În prezent, nu este posibil să dezactivezi aceasta.", "board_address_tooltip": "Adresa nodului peer-to-peer al acestei plăci", "upload_failed": "Încărcarea a eșuat", @@ -307,7 +306,6 @@ "loading_archive": "Încărcare arhivă...", "thread_archived": "Thread arhivat.", "view": "Vizualizare", - "report_post": "Raportează postarea", "delete_post": "Șterge postarea", "delete_post_confirm": "Șterge definitiv această postare? Această acțiune nu poate fi anulată.", "app_p2p_info": "Poți oricând să te conectezi la orice board, complet P2P, nimeni nu te poate opri. Pur și simplu lipește adresa în câmpul de căutare de mai sus.", @@ -406,5 +404,6 @@ "boards_loaded": "boarduri încărcate:", "link_not_image_or_video_alert": "Linkul nu este o imagine sau un videoclip.", "not_a_file": "nu este fișier", - "tor_author_flag_label": "Acest utilizator este pe Tor" + "tor_author_flag_label": "Acest utilizator este pe Tor", + "copy_share_link": "Copiezi link-ul de partajare" } diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 13661f21..1eaf9e4b 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -236,7 +236,6 @@ "no": "Нет", "pending_mod_approval": "Ожидает одобрения модератора, не видно пользователям", "copy_user_id": "копировать ID пользователя", - "copy_direct_link": "копировать прямую ссылку", "posts_auto_update_info": "Посты обновляются автоматически примерно каждые ~2 минуты. В данный момент невозможно отключить эту функцию.", "board_address_tooltip": "Адрес пирингового узла этой доски", "upload_failed": "Ошибка загрузки", @@ -307,7 +306,6 @@ "loading_archive": "Загрузка архива...", "thread_archived": "Тема архивирована.", "view": "Смотреть", - "report_post": "Пожаловаться на пост", "delete_post": "Удалить пост", "delete_post_confirm": "Удалить этот пост навсегда? Это действие нельзя отменить.", "app_p2p_info": "Ты всегда можешь подключиться к любому борду, полностью P2P, никто не сможет тебя остановить. Просто вставь его адрес в поле поиска выше.", @@ -406,5 +404,6 @@ "boards_loaded": "загруженные доски:", "link_not_image_or_video_alert": "Ссылка не является изображением или видео.", "not_a_file": "не файл", - "tor_author_flag_label": "Этот пользователь находится в Tor" + "tor_author_flag_label": "Этот пользователь находится в Tor", + "copy_share_link": "Копировать ссылку для общего доступа" } diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 6d96ec85..0f2985ca 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Duke pritur miratimin e moderatorit, jo i dukshëm për përdoruesit", "copy_user_id": "kopjo ID e përdoruesit", - "copy_direct_link": "kopjo lidhjen e drejtpërdrejtë", "posts_auto_update_info": "Postimet përditësohen automatikisht çdo ~2 minuta. Nuk është e mundur ta çaktivizoni këtë për momentin.", "board_address_tooltip": "Adresa e nyjës peer-to-peer të kësaj tabele", "upload_failed": "Ngarkimi dështoi", @@ -307,7 +306,6 @@ "loading_archive": "Po ngarkoni arkivin...", "thread_archived": "Fjala është arkivuar.", "view": "Shiko", - "report_post": "Raporto postimin", "delete_post": "Fshi postimin", "delete_post_confirm": "Fshini këtë postim përgjithmonë? Kjo nuk mund të zhbëhet.", "app_p2p_info": "Mund të lidhesh gjithmonë me çdo board, plotësisht P2P, askush nuk mund të të ndalojë. Thjesht ngjite adresën e tij në fushën e kërkimit më sipër.", @@ -406,5 +404,6 @@ "boards_loaded": "bordet e ngarkuara:", "link_not_image_or_video_alert": "Lidhja nuk është imazh ose video.", "not_a_file": "nuk është skedar", - "tor_author_flag_label": "Ky përdorues është në Tor" + "tor_author_flag_label": "Ky përdorues është në Tor", + "copy_share_link": "Kopjo lidhjen e ndarjes" } diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index be8c36e6..2d6f2f89 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Väntar på moderatorgodkännande, inte synligt för användare", "copy_user_id": "kopiera användar-ID", - "copy_direct_link": "kopiera direktlänk", "posts_auto_update_info": "Inlägg uppdateras automatiskt ungefär var ~2:e minut. Det är för närvarande inte möjligt att inaktivera detta.", "board_address_tooltip": "Adressen till denna tavlas peer-to-peer-nod", "upload_failed": "Uppladdning misslyckades", @@ -307,7 +306,6 @@ "loading_archive": "Laddar arkiv...", "thread_archived": "Tråd arkiverad.", "view": "Visa", - "report_post": "Rapportera inlägg", "delete_post": "Radera inlägg", "delete_post_confirm": "Radera detta inlägg permanent? Detta kan inte ångras.", "app_p2p_info": "Du kan alltid ansluta till vilket board som helst, helt P2P, ingen kan stoppa dig. Klistra bara in dess adress i sökfältet ovan.", @@ -406,5 +404,6 @@ "boards_loaded": "laddade boards:", "link_not_image_or_video_alert": "Länken är inte en bild eller video.", "not_a_file": "inte en fil", - "tor_author_flag_label": "Den här användaren är på Tor" + "tor_author_flag_label": "Den här användaren är på Tor", + "copy_share_link": "Kopiera delningslänk" } diff --git a/public/translations/te/default.json b/public/translations/te/default.json index b682b90f..bfdc0b95 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "మాడరేటర్ ఆమోదం కోసం చేతనిస్తోంది, వినియోగదారులకు కనిపించవు", "copy_user_id": "యూజర్ ID కాపీ చేయండి", - "copy_direct_link": "డైరెక్ట్ లింక్ కాపీ చేయండి", "posts_auto_update_info": "పోస్టులు ప్రతి ~2 నిమిషాలకు స్వయంచాలకంగా నవీకరించబడతాయి. ప్రస్తుతం దీనిని నిలిపివేయడం సম్భవం కాదు.", "board_address_tooltip": "ఈ బోర్డ్ యొక్క పీర్-టు-పీర్ నోడ్ యొక్క చిరునామా", "upload_failed": "అప్‌లోడ్ విఫలమైంది", @@ -307,7 +306,6 @@ "loading_archive": "ఆర్కైవ్ లోడ్ అవుతోంది...", "thread_archived": "థ్రెడ్ ఆర్కైవ్ చేయబడింది.", "view": "చూడు", - "report_post": "పోస్ట్ రిపోర్ట్ చేయండి", "delete_post": "పోస్ట్ తొలగించండి", "delete_post_confirm": "ఈ పోస్ట్‌ను శాశ్వతంగా తొలగించాలా? దీన్ని రద్దు చేయలేము.", "app_p2p_info": "మీరు ఎప్పుడైనా ఏ బోర్డ్‌కైనా కనెక్ట్ అవ్వవచ్చు, పూర్తిగా P2P, ఎవరూ మిమ్మల్ని ఆపలేరు. పైన ఉన్న సెర్చ్ ఫీల్డ్‌లో దాని అడ్రస్ పేస్ట్ చేయండి.", @@ -406,5 +404,6 @@ "boards_loaded": "లోడ్ చేసిన బోర్డులు:", "link_not_image_or_video_alert": "లింక్ చిత్రం లేదా వీడియో కాదు.", "not_a_file": "ఫైల్ కాదు", - "tor_author_flag_label": "ఈ వినియోగదారు Tor లో ఉన్నారు" + "tor_author_flag_label": "ఈ వినియోగదారు Tor లో ఉన్నారు", + "copy_share_link": "భాగస్వామ్య లింక్‌ను కాపీ చేయండి" } diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 1a10496a..c4eef64e 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "รอการอนุมัติจากผู้ดูแล ไม่มองเห็นสำหรับผู้ใช้", "copy_user_id": "คัดลอก ID ผู้ใช้", - "copy_direct_link": "คัดลอกลิงก์โดยตรง", "posts_auto_update_info": "โพสต์จะอัปเดตโดยอัตโนมัติทุก ~2 นาที ไม่สามารถปิดการใช้งานนี้ได้ในขณะนี้", "board_address_tooltip": "ที่อยู่โหนด P2P ของบอร์ดนี้", "upload_failed": "อัปโหลดล้มเหลว", @@ -307,7 +306,6 @@ "loading_archive": "กำลังโหลดเก็บถาวร...", "thread_archived": "เธรดถูกเก็บถาวร", "view": "ดู", - "report_post": "แจ้งรายงานโพสต์", "delete_post": "ลบโพสต์", "delete_post_confirm": "ลบกระทู้นี้อย่างถาวรหรือไม่? การดำเนินการนี้ไม่สามารถยกเลิกได้", "app_p2p_info": "คุณสามารถเชื่อมต่อกับบอร์ดใดก็ได้ตลอดเวลา แบบ P2P เต็มรูปแบบ ไม่มีใครหยุดคุณได้ แค่วางที่อยู่ของมันในช่องค้นหาด้านบน", @@ -406,5 +404,6 @@ "boards_loaded": "บอร์ดที่โหลดแล้ว:", "link_not_image_or_video_alert": "ลิงก์ไม่ใช่รูปภาพหรือวิดีโอ", "not_a_file": "ไม่ใช่ไฟล์", - "tor_author_flag_label": "ผู้ใช้นี้อยู่บน Tor" + "tor_author_flag_label": "ผู้ใช้นี้อยู่บน Tor", + "copy_share_link": "คัดลอกลิงก์แชร์" } diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index ed2792ab..6c91a18e 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Moderatör onayı beklemede, kullanıcılara görünmüyor", "copy_user_id": "kullanıcı ID'sini kopyala", - "copy_direct_link": "doğrudan bağlantıyı kopyala", "posts_auto_update_info": "Gönderiler her ~2 dakikada otomatik olarak güncellenir. Şu anda bunu devre dışı bırakmak mümkün değildir.", "board_address_tooltip": "Bu panonun eşler arası düğüm adresi", "upload_failed": "Yükleme başarısız", @@ -307,7 +306,6 @@ "loading_archive": "Arşiv yükleniyor...", "thread_archived": "Konu arşivlendi.", "view": "Görüntüle", - "report_post": "Gönderiyi bildir", "delete_post": "Gönderiyi sil", "delete_post_confirm": "Bu gönderiyi kalıcı olarak silmek istiyor musunuz? Bu işlem geri alınamaz.", "app_p2p_info": "Her zaman herhangi bir boarda bağlanabilirsin, tamamen P2P, kimse seni durduramaz. Sadece adresini yukarıdaki arama alanına yapıştır.", @@ -406,5 +404,6 @@ "boards_loaded": "yüklenen panolar:", "link_not_image_or_video_alert": "Bağlantı bir görsel veya video değil.", "not_a_file": "dosya değil", - "tor_author_flag_label": "Bu kullanıcı Tor'da" + "tor_author_flag_label": "Bu kullanıcı Tor'da", + "copy_share_link": "Paylaşma bağlantısını kopyala" } diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 6f0a402f..60904a78 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Очікує затвердження модератора, не видно користувачам", "copy_user_id": "копіювати ID користувача", - "copy_direct_link": "копіювати пряме посилання", "posts_auto_update_info": "Дописи оновлюються автоматично приблизно кожні ~2 хвилини. В даний момент неможливо вимкнути цю функцію.", "board_address_tooltip": "Адреса пірінгового вузла цієї дошки", "upload_failed": "Помилка завантаження", @@ -307,7 +306,6 @@ "loading_archive": "Завантаження архіву...", "thread_archived": "Тему архівовано.", "view": "Переглянути", - "report_post": "Поскаржитися на пост", "delete_post": "Видалити пост", "delete_post_confirm": "Видалити цей пост назавжди? Цю дію не можна скасувати.", "app_p2p_info": "Ти завжди можеш підключитися до будь-якого борду, повністю P2P, ніхто не зможе тебе зупинити. Просто встав його адресу в поле пошуку вище.", @@ -406,5 +404,6 @@ "boards_loaded": "завантажені дошки:", "link_not_image_or_video_alert": "Посилання не є зображенням або відео.", "not_a_file": "не файл", - "tor_author_flag_label": "Цей користувач у Tor" + "tor_author_flag_label": "Цей користувач у Tor", + "copy_share_link": "Копіювати посилання для спільного доступу" } diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index ded5c62a..5921c491 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "ماڈریٹر کی منظوری کا انتظار، صارفین کے لیے نظر نہیں آتا", "copy_user_id": "صارف کی شناخت کاپی کریں", - "copy_direct_link": "براہ راست لنک کاپی کریں", "posts_auto_update_info": "پوسٹس ہر ~2 منٹ میں خود بخود اپ ڈیٹ ہوتے ہیں۔ فی الوقت اس کو غیر فعال کرنا ممکن نہیں ہے۔", "board_address_tooltip": "اس بورڈ کے پیر ٹو پیر نوڈ کا پتہ", "upload_failed": "اپ لوڈ ناکام", @@ -307,7 +306,6 @@ "loading_archive": "آرکائیو لوڈ ہو رہا ہے...", "thread_archived": "موضوع آرکائیو کر دیا گیا ہے۔", "view": "دیکھیں", - "report_post": "پوسٹ ریپورٹ کریں", "delete_post": "پوسٹ حذف کریں", "delete_post_confirm": "کیا اس پوسٹ کو مستقل طور پر حذف کریں؟ یہ واپس نہیں لیا جا سکتا۔", "app_p2p_info": "آپ ہمیشہ کسی بھی بورڈ سے جڑ سکتے ہیں، مکمل طور پر P2P، کوئی آپ کو روک نہیں سکتا۔ اوپر والے سرچ فیلڈ میں اس کا پتہ پیسٹ کریں۔", @@ -406,5 +404,6 @@ "boards_loaded": "لوڈ شدہ بورڈز:", "link_not_image_or_video_alert": "لنک تصویر یا ویڈیو نہیں ہے۔", "not_a_file": "فائل نہیں ہے", - "tor_author_flag_label": "یہ صارف Tor پر ہے" + "tor_author_flag_label": "یہ صارف Tor پر ہے", + "copy_share_link": "شیئر لنک کاپی کریں" } diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index d4545028..292aed9c 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -236,7 +236,6 @@ "no": "No", "pending_mod_approval": "Chờ duyệt của người điều hành, không hiển thị cho người dùng", "copy_user_id": "sao chép ID người dùng", - "copy_direct_link": "sao chép liên kết trực tiếp", "posts_auto_update_info": "Bài đăng được cập nhật tự động cứ ~2 phút một lần. Hiện tại không thể tắt tính năng này.", "board_address_tooltip": "Địa chỉ nút peer-to-peer của bảng này", "upload_failed": "Tải lên thất bại", @@ -307,7 +306,6 @@ "loading_archive": "Đang tải lưu trữ...", "thread_archived": "Chủ đề đã được lưu trữ.", "view": "Xem", - "report_post": "Báo cáo bài viết", "delete_post": "Xóa bài viết", "delete_post_confirm": "Xóa bài viết này vĩnh viễn? Hành động này không thể hoàn tác.", "app_p2p_info": "Bạn luôn có thể kết nối với bất kỳ board nào, hoàn toàn P2P, không ai có thể ngăn cản bạn. Chỉ cần dán địa chỉ của nó vào ô tìm kiếm phía trên.", @@ -406,5 +404,6 @@ "boards_loaded": "bảng đã tải:", "link_not_image_or_video_alert": "Liên kết không phải là hình ảnh hoặc video.", "not_a_file": "không phải tệp", - "tor_author_flag_label": "Người dùng này đang ở trên Tor" + "tor_author_flag_label": "Người dùng này đang ở trên Tor", + "copy_share_link": "Sao chép liên kết chia sẻ" } diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 7c2883fa..a77b8701 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -236,7 +236,6 @@ "no": "否", "pending_mod_approval": "等待版主批准,用户不可见", "copy_user_id": "复制用户ID", - "copy_direct_link": "复制直接链接", "posts_auto_update_info": "帖子每约2分钟自动更新一次。目前无法禁用此功能。", "board_address_tooltip": "此板块的点对点节点地址", "upload_failed": "上传失败", @@ -307,7 +306,6 @@ "loading_archive": "正在加载归档...", "thread_archived": "主题已归档。", "view": "查看", - "report_post": "举报帖子", "delete_post": "删除帖子", "delete_post_confirm": "永久删除此帖子?此操作无法撤销。", "app_p2p_info": "你随时可以连接到任何看板,完全 P2P,没人能阻止你。只需将其地址粘贴到上方搜索框中即可。", @@ -406,5 +404,6 @@ "boards_loaded": "已加载的版块:", "link_not_image_or_video_alert": "链接不是图片或视频。", "not_a_file": "不是文件", - "tor_author_flag_label": "该用户正在使用 Tor" + "tor_author_flag_label": "该用户正在使用 Tor", + "copy_share_link": "复制分享链接" } diff --git a/src/components/post-desktop/post-menu-desktop/__tests__/post-menu-desktop.test.tsx b/src/components/post-desktop/post-menu-desktop/__tests__/post-menu-desktop.test.tsx index 6ee7c3d2..58bd9ecf 100644 --- a/src/components/post-desktop/post-menu-desktop/__tests__/post-menu-desktop.test.tsx +++ b/src/components/post-desktop/post-menu-desktop/__tests__/post-menu-desktop.test.tsx @@ -144,7 +144,7 @@ describe('PostMenuDesktop', () => { await renderMenu(); await openMenu(); - const copyLink = Array.from(document.body.querySelectorAll('button')).find((node) => node.textContent === 'copy_direct_link'); + const copyLink = Array.from(document.body.querySelectorAll('button')).find((node) => node.textContent === 'copy_share_link'); await act(async () => { copyLink?.dispatchEvent(new MouseEvent('click', { bubbles: true })); }); diff --git a/src/components/post-desktop/post-menu-desktop/post-menu-desktop.tsx b/src/components/post-desktop/post-menu-desktop/post-menu-desktop.tsx index 97f9c9d8..b574a8c6 100644 --- a/src/components/post-desktop/post-menu-desktop/post-menu-desktop.tsx +++ b/src/components/post-desktop/post-menu-desktop/post-menu-desktop.tsx @@ -46,7 +46,7 @@ const CopyLinkButton = ({ cid, communityAddress, linkType, onClose }: CopyLinkBu const { t } = useTranslation(); const directories = useDirectories(); const boardIdentifier = getBoardPath(communityAddress, directories); - const copyDirectLink = async () => { + const copyShareLink = async () => { await safeCopyShareLink(boardIdentifier, linkType, linkType === 'thread' ? cid : undefined); onClose(); }; @@ -55,15 +55,15 @@ const CopyLinkButton = ({ cid, communityAddress, linkType, onClose }: CopyLinkBu type='button' className={styles.postMenuItem} tabIndex={0} - onClick={copyDirectLink} + onClick={copyShareLink} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); - copyDirectLink(); + copyShareLink(); } }} > - {t('copy_direct_link')} + {t('copy_share_link')} ); }; @@ -225,24 +225,6 @@ const PostMenuDesktop = ({ postMenu }: PostMenuDesktopProps) => { createPortal(
- {!(isInPostPageView && postCid === cid) && ( ); }; @@ -150,29 +150,6 @@ const ImageSearchButtons = ({ url, onClose }: { url: string; onClose: () => void ); }; -const ReportPostButton = ({ onClose }: { onClose: () => void }) => { - const { t } = useTranslation(); - const reportPost = () => { - alert("Reporting isn't available yet."); - onClose(); - }; - return ( - - ); -}; - type DeletePostButtonProps = { post: Comment; onClose: () => void; @@ -353,7 +330,6 @@ const PostMenuMobile = ({ postMenu, editMenuPost }: PostMenuMobileProps) => { createPortal(
- {cid && communityAddress && } {(isAccountCommentAuthor || canAttemptAuthorDelete) && cid && editMenuPost && } {cid && communityAddress && } diff --git a/src/lib/utils/__tests__/url-utils.test.ts b/src/lib/utils/__tests__/url-utils.test.ts index 9c86ebb0..b41444bb 100644 --- a/src/lib/utils/__tests__/url-utils.test.ts +++ b/src/lib/utils/__tests__/url-utils.test.ts @@ -72,12 +72,12 @@ describe('url-utils', () => { expect(getExpiringMediaLinkHostname('not-a-url')).toBeNull(); }); - it('copies share links for threads and catalog pages using the production fallback base url', async () => { + it('copies path-based share links for threads and catalog pages using the share subdomain', async () => { await copyShareLinkToClipboard('music.eth', 'thread', 'cid-123'); - expect(testState.copyToClipboardMock).toHaveBeenCalledWith('https://5chan.app/#/music.eth/thread/cid-123'); + expect(testState.copyToClipboardMock).toHaveBeenCalledWith('https://s.5chan.app/music.eth/thread/cid-123'); await copyShareLinkToClipboard('music.eth', 'catalog'); - expect(testState.copyToClipboardMock).toHaveBeenCalledWith('https://5chan.app/#/music.eth/catalog'); + expect(testState.copyToClipboardMock).toHaveBeenCalledWith('https://s.5chan.app/music.eth/catalog'); const copyThreadWithoutCid = copyShareLinkToClipboard as (boardIdentifier: string, linkType: 'thread', cid?: string) => Promise; await expect(copyThreadWithoutCid('music.eth', 'thread')).rejects.toThrow('copyShareLinkToClipboard: thread links require a cid'); @@ -89,6 +89,8 @@ describe('url-utils', () => { expect(is5chanLink('https://5chan.app/#/music.eth/catalog')).toBe(true); expect(is5chanLink('https://5chan.app/p/music.eth/c/cid-123')).toBe(true); expect(is5chanLink('https://5chan.app/all/catalog')).toBe(true); + expect(is5chanLink('https://s.5chan.app/music.eth/thread/cid-123')).toBe(true); + expect(is5chanLink('https://s.5chan.app/music.eth/catalog')).toBe(true); expect(is5chanLink('https://example.com/music.eth')).toBe(false); }); diff --git a/src/lib/utils/url-utils.ts b/src/lib/utils/url-utils.ts index 4628a1f2..9bdb2b00 100644 --- a/src/lib/utils/url-utils.ts +++ b/src/lib/utils/url-utils.ts @@ -128,10 +128,14 @@ export const getPublishURLFilename = (url: string): string | null => { } }; -const CHAN_5_HOSTNAMES = ['5chan.app', '5chan.eth.limo', '5chan.eth.link', '5chan.eth.sucks', '5chan.netlify.app']; +// Dedicated subdomain that serves shared posts. Its server renders social-media link +// previews (OpenGraph/Twitter cards) for the shared post before handing off to the app. +const SHARE_HOSTNAME = 's.5chan.app'; + +const CHAN_5_HOSTNAMES = ['5chan.app', SHARE_HOSTNAME, '5chan.eth.limo', '5chan.eth.link', '5chan.eth.sucks', '5chan.netlify.app']; function getShareBaseUrl(): string { - return `https://${CHAN_5_HOSTNAMES[0]}`; + return `https://${SHARE_HOSTNAME}`; } export type ShareLinkType = 'thread' | 'catalog'; @@ -140,16 +144,18 @@ export type ShareLinkType = 'thread' | 'catalog'; export function copyShareLinkToClipboard(boardIdentifier: string, linkType: 'thread', cid: string): Promise; export function copyShareLinkToClipboard(boardIdentifier: string, linkType: Exclude): Promise; export async function copyShareLinkToClipboard(boardIdentifier: string, linkType: ShareLinkType, cid?: string): Promise { + // Share links are path-based (no HashRouter `#/`) so the share server can read the post + // from the request path and render its preview; URL fragments never reach the server. if (linkType === 'thread') { if (!cid) { throw new Error('copyShareLinkToClipboard: thread links require a cid'); } - const shareLink = `${getShareBaseUrl()}/#/${boardIdentifier}/thread/${cid}`; + const shareLink = `${getShareBaseUrl()}/${boardIdentifier}/thread/${cid}`; await copyToClipboard(shareLink); return; } - const shareLink = `${getShareBaseUrl()}/#/${boardIdentifier}/${linkType}`; + const shareLink = `${getShareBaseUrl()}/${boardIdentifier}/${linkType}`; await copyToClipboard(shareLink); } diff --git a/src/views/faq/faq.tsx b/src/views/faq/faq.tsx index 18b642b1..002f835e 100644 --- a/src/views/faq/faq.tsx +++ b/src/views/faq/faq.tsx @@ -230,8 +230,8 @@ const FAQ_SECTIONS: FAQSection[] = [ question: 'How do I report posts?', answer: ( <> - Reporting is not available yet. For now, board moderation happens through board-specific moderator tools and rules. If you are a board moderator, use the mod - queue and edit controls available for that board. + 5chan does not use manual user reports. Moderation is handled automatically by AI moderation, and board moderators review flagged content through the mod + queue. If you run a board, use the mod queue and edit controls available for that board. ), },