diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index e44da976..c7ce4ca7 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "يرجى تحديد لوحة قبل النشر.", "invalid_url_alert": "الرابط المقدم ليس عنوان URL صالحًا.", "empty_comment_alert": "لا يمكن نشر تعليق فارغ.", - "more_posts_last_week": "تظهر المشاركات منذ {{currentTimeFilterName}} ، <1>عرض المزيد من المشاركات من الأسبوع الماضي", - "more_posts_last_month": "تظهر المشاركات منذ {{currentTimeFilterName}} ، <1>عرض المزيد من المشاركات من الشهر الماضي", - "newer_posts_available": "مشاركات جديدة متاحة، <1>قم بتحديث الخلاصة", + "more_posts_last_week": "عرض المشاركات منذ {{currentTimeFilterName}} — [<1>عرض المزيد من المشاركات من الأسبوع الماضي]", + "more_posts_last_month": "عرض المشاركات منذ {{currentTimeFilterName}} — [<1>عرض المزيد من المشاركات من الشهر الماضي]", + "newer_posts_available": "مشاركات جديدة متوفرة — [<1>تحديث]", "stored_locally": "مخزنة محليًا ({{location}})، ليست متزامنة عبر الأجهزة", "choose_one": "اختر واحدة:", "create": "إنشاء", diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index d7f7b0b9..41a2ba6a 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "পোস্ট করার আগে একটি বোর্ড নির্বাচন করুন।", "invalid_url_alert": "দেওয়া লিঙ্কটি একটি বৈধ URL নয়।", "empty_comment_alert": "খালি মন্তব্য পোস্ট করা যাবে না।", - "more_posts_last_week": "আপনি {{currentTimeFilterName}} থেকে পোস্টগুলি দেখছেন, <1>গত সপ্তাহ থেকে আরও পোস্ট দেখান", - "more_posts_last_month": "আপনি {{currentTimeFilterName}} থেকে পোস্টগুলি দেখছেন, <1>গত মাস থেকে আরও পোস্ট দেখান", - "newer_posts_available": "নতুন পোস্ট উপলব্ধ, <1>ফিডটি রিফ্রেশ করুন", + "more_posts_last_week": "প্রকাশের পর {{currentTimeFilterName}} থেকে পোস্টগুলি দেখাচ্ছে — [<1>গত সপ্তাহ থেকে আরও পোস্ট দেখান]", + "more_posts_last_month": "প্রকাশের পর {{currentTimeFilterName}} থেকে পোস্টগুলি দেখাচ্ছে — [<1>গত মাস থেকে আরও পোস্ট দেখান]", + "newer_posts_available": "নতুন পোস্ট উপলব্ধ — [<1>রিফ্রেশ]", "stored_locally": "স্থানীয়ভাবে সংরক্ষিত ({{location}}), ডিভাইসের মধ্যে সিঙ্ক করা হয়নি", "choose_one": "একটি নির্বাচন করুন:", "create": "তৈরি করুন", diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index f8026d41..f229511c 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Vyberte desku před odesláním.", "invalid_url_alert": "Poskytnutý odkaz není platná adresa URL.", "empty_comment_alert": "Nelze publikovat prázdný komentář.", - "more_posts_last_week": "Zobrazujeme příspěvky od {{currentTimeFilterName}}, <1>zobrazit další příspěvky z minulého týdne", - "more_posts_last_month": "Zobrazujeme příspěvky od {{currentTimeFilterName}}, <1>zobrazit další příspěvky z minulého měsíce", - "newer_posts_available": "Novější příspěvky jsou k dispozici, <1>aktualizujte kanál", + "more_posts_last_week": "Zobrazení příspěvků od {{currentTimeFilterName}} — [<1>zobrazit více příspěvků z minulého týdne]", + "more_posts_last_month": "Zobrazení příspěvků od {{currentTimeFilterName}} — [<1>zobrazit více příspěvků z minulého měsíce]", + "newer_posts_available": "Novější příspěvky jsou k dispozici — [<1>Obnovit]", "stored_locally": "Uloženo lokálně ({{location}}), není synchronizováno mezi zařízeními", "choose_one": "Vyberte jednu:", "create": "Vytvořit", diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 1626ca69..31b1e588 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Vælg en tavle, før du poster.", "invalid_url_alert": "Det angivne link er ikke en gyldig URL.", "empty_comment_alert": "Kan ikke poste en tom kommentar.", - "more_posts_last_week": "Viser indlæg siden {{currentTimeFilterName}}, <1>vis flere indlæg fra sidste uge", - "more_posts_last_month": "Viser indlæg siden {{currentTimeFilterName}}, <1>vis flere indlæg fra sidste måned", - "newer_posts_available": "Nyere indlæg tilgængelige, <1>genindlæs feed", + "more_posts_last_week": "Viser indlæg siden {{currentTimeFilterName}} — [<1>vis flere indlæg fra sidste uge]", + "more_posts_last_month": "Viser indlæg siden {{currentTimeFilterName}} — [<1>vis flere indlæg fra sidste måned]", + "newer_posts_available": "Nyere indlæg tilgængelige — [<1>Opdater]", "stored_locally": "Lager lokalt ({{location}}), ikke synkroniseret på tværs af enheder", "choose_one": "Vælg en:", "create": "Opret", diff --git a/public/translations/de/default.json b/public/translations/de/default.json index 16cef671..9fe94204 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Bitte wählen Sie ein Board, bevor Sie posten.", "invalid_url_alert": "Der bereitgestellte Link ist keine gültige URL.", "empty_comment_alert": "Kann keinen leeren Kommentar posten.", - "more_posts_last_week": "Zeigt Beiträge seit {{currentTimeFilterName}}, <1>zeige mehr Beiträge aus der letzten Woche", - "more_posts_last_month": "Zeigt Beiträge seit {{currentTimeFilterName}}, <1>zeige mehr Beiträge aus dem letzten Monat", - "newer_posts_available": "Neuere Beiträge verfügbar, <1>Feed neu laden", + "more_posts_last_week": "Zeigt Beiträge seit {{currentTimeFilterName}} — [<1>Weitere Beiträge aus der letzten Woche anzeigen]", + "more_posts_last_month": "Zeigt Beiträge seit {{currentTimeFilterName}} — [<1>Weitere Beiträge aus dem letzten Monat anzeigen]", + "newer_posts_available": "Neuere Beiträge verfügbar — [<1>Aktualisieren]", "stored_locally": "Lokal gespeichert ({{location}}), nicht geräteübergreifend synchronisiert", "choose_one": "Wählen Sie eine:", "create": "Erstellen", diff --git a/public/translations/el/default.json b/public/translations/el/default.json index c04b2849..e2bbc5b4 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Παρακαλώ επιλέξτε μια κατηγορία πριν δημοσιεύσετε.", "invalid_url_alert": "Ο παρεχόμενος σύνδεσμος δεν είναι έγκυρη διεύθυνση URL.", "empty_comment_alert": "Δεν μπορεί να δημοσιευτεί κενό σχόλιο.", - "more_posts_last_week": "Εμφανίζονται αναρτήσεις από {{currentTimeFilterName}}, <1>εμφάνιση περισσότερων αναρτήσεων από την περασμένη εβδομάδα", - "more_posts_last_month": "Διατίθενται αναρτήσεις από {{currentTimeFilterName}}, <1>εμφάνιση περισσότερων αναρτήσεων από τον περασμένο μήνα", - "newer_posts_available": "Διατίθενται νεότερες δημοσιεύσεις, <1>επανεκκινήστε τη ροή", + "more_posts_last_week": "Εμφάνιση αναρτήσεων από {{currentTimeFilterName}} — [<1>Δείτε περισσότερες αναρτήσεις από την περασμένη εβδομάδα]", + "more_posts_last_month": "Εμφάνιση αναρτήσεων από {{currentTimeFilterName}} — [<1>Δείτε περισσότερες αναρτήσεις από τον περασμένο μήνα]", + "newer_posts_available": "Διαθέσιμες νεότερες αναρτήσεις — [<1>Ανανέωση]", "stored_locally": "Αποθηκευμένο τοπικά ({{location}}), δεν συγχρονίζεται σε όλες τις συσκευές", "choose_one": "Επιλέξτε μία:", "create": "Δημιουργία", diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 0d0528c5..faf6fc26 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Please select a board before posting.", "invalid_url_alert": "The provided link is not a valid URL.", "empty_comment_alert": "Cannot post empty comment.", - "more_posts_last_week": "Showing posts since {{currentTimeFilterName}}, <1>show more posts from last week", - "more_posts_last_month": "Showing posts since {{currentTimeFilterName}}, <1>show more posts from last month", - "newer_posts_available": "Newer posts available, <1>reload feed", + "more_posts_last_week": "Showing posts since {{currentTimeFilterName}} — [<1>Show more posts from last week]", + "more_posts_last_month": "Showing posts since {{currentTimeFilterName}} — [<1>Show more posts from last month]", + "newer_posts_available": "Newer posts available — [<1>Refresh]", "stored_locally": "Stored locally ({{location}}), not synced across devices", "choose_one": "Choose one:", "create": "Create", diff --git a/public/translations/es/default.json b/public/translations/es/default.json index ac1a80ce..e075da2f 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Por favor, selecciona una tabla antes de publicar.", "invalid_url_alert": "El enlace proporcionado no es una URL válida.", "empty_comment_alert": "No se puede publicar un comentario vacío.", - "more_posts_last_week": "Mostrando publicaciones desde {{currentTimeFilterName}}, <1>mostrar más publicaciones de la semana pasada", - "more_posts_last_month": "Mostrando publicaciones desde {{currentTimeFilterName}}, <1>mostrar más publicaciones del mes pasado", - "newer_posts_available": "Nuevas publicaciones disponibles, <1>recargar el feed", + "more_posts_last_week": "Mostrando publicaciones desde {{currentTimeFilterName}} — [<1>ver más publicaciones de la semana pasada]", + "more_posts_last_month": "Mostrando publicaciones desde {{currentTimeFilterName}} — [<1>ver más publicaciones del mes pasado]", + "newer_posts_available": "Publicaciones más recientes disponibles — [<1>Actualizar]", "stored_locally": "Almacenado localmente ({{location}}), no sincronizado entre dispositivos", "choose_one": "Elige uno:", "create": "Crear", diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index 90041de6..cfe14675 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "لطفاً قبل از ارسال یک تابلو انتخاب کنید.", "invalid_url_alert": "لینک ارائه شده یک URL معتبر نیست.", "empty_comment_alert": "نمی‌توان نظر خالی ارسال کرد.", - "more_posts_last_week": "نمایش پست‌ها از {{currentTimeFilterName}}، <1>نمایش پست‌های بیشتر از هفته گذشته", - "more_posts_last_month": "نمایش پست‌ها از {{currentTimeFilterName}}، <1>نمایش پست‌های بیشتر از ماه گذشته", - "newer_posts_available": "پست‌های جدیدتر در دسترس هستند، <1>بارگذاری مجدد خوراک", + "more_posts_last_week": "نمایش پست‌ها از {{currentTimeFilterName}} — [<1>مشاهده پست‌های بیشتر از هفته گذشته]", + "more_posts_last_month": "نمایش پست‌ها از {{currentTimeFilterName}} — [<1>مشاهده پست‌های بیشتر از ماه گذشته]", + "newer_posts_available": "پست‌های جدید موجود است — [<1>بارگذاری مجدد]", "stored_locally": "محلی ذخیره شده ({{location}})، با دستگاه‌ها همگام‌سازی نشده است", "choose_one": "یکی را انتخاب کنید:", "create": "ایجاد", diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 200999c9..352ec4da 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Valitse taulu ennen julkaisemista.", "invalid_url_alert": "Annettu linkki ei ole voimassa oleva URL.", "empty_comment_alert": "Ei voi julkaista tyhjää kommenttia.", - "more_posts_last_week": "Näytetään viestejä ajasta {{currentTimeFilterName}}, <1>näytä lisää viestejä viime viikolta", - "more_posts_last_month": "Näytetään viestejä ajasta {{currentTimeFilterName}}, <1>näytä lisää viestejä viime kuulta", - "newer_posts_available": "Uudemmat viestit saatavilla, <1>lataa syöte uudelleen", + "more_posts_last_week": "Näytetään viestejä {{currentTimeFilterName}} lähtien — [<1>näytä lisää viestejä viime viikolta]", + "more_posts_last_month": "Näytetään viestejä {{currentTimeFilterName}} lähtien — [<1>näytä lisää viestejä viime kuulta]", + "newer_posts_available": "Uudemmat postaukset saatavilla — [<1>Päivitä]", "stored_locally": "Tallennettu paikallisesti ({{location}}), ei synkronoitu laitteiden välillä", "choose_one": "Valitse yksi:", "create": "Luo", diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index b8c01b8c..d0e49cb1 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Mangyaring pumili ng board bago mag-post.", "invalid_url_alert": "Ang ibinigay na link ay hindi isang wastong URL.", "empty_comment_alert": "Hindi makapag-post ng walang laman na komento.", - "more_posts_last_week": "Ipinapakita ang mga post mula {{currentTimeFilterName}}, <1>ipakita ang higit pang mga post mula sa nakaraang linggo", - "more_posts_last_month": "Ipinapakita ang mga post mula {{currentTimeFilterName}}, <1>ipakita ang higit pang mga post mula sa nakaraang buwan", - "newer_posts_available": "May mga bagong post na magagamit, <1>i-reload ang feed", + "more_posts_last_week": "Ipinapakita ang mga post mula {{currentTimeFilterName}} — [<1>ipakita ang higit pang mga post mula noong nakaraang linggo]", + "more_posts_last_month": "Ipinapakita ang mga post mula {{currentTimeFilterName}} — [<1>ipakita ang higit pang mga post mula noong nakaraang buwan]", + "newer_posts_available": "Mga bagong post na available — [<1>I-refresh]", "stored_locally": "Nakaimbak nang lokal ({{location}}), hindi naka-sync sa iba pang device", "choose_one": "Pumili ng isa:", "create": "Lumikha", diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 2bce8623..d5dce7de 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Veuillez sélectionner un tableau avant de publier.", "invalid_url_alert": "Le lien fourni n'est pas une URL valide.", "empty_comment_alert": "Impossible de publier un commentaire vide.", - "more_posts_last_week": "Affichage des publications depuis {{currentTimeFilterName}}, <1>afficher plus de publications de la semaine dernière", - "more_posts_last_month": "Affichage des publications depuis {{currentTimeFilterName}}, <1>recharger plus de publications du mois dernier", - "newer_posts_available": "Nouveaux messages disponibles, <1>recharger le fil", + "more_posts_last_week": "Affichage des publications depuis {{currentTimeFilterName}} — [<1>afficher plus de publications de la semaine dernière]", + "more_posts_last_month": "Affichage des publications depuis {{currentTimeFilterName}} — [<1>afficher plus de publications du mois dernier]", + "newer_posts_available": "De nouveaux messages disponibles — [<1>Rafraîchir]", "stored_locally": "Stocké localement ({{location}}), non synchronisé entre les appareils", "choose_one": "Choisissez-en un :", "create": "Créer", diff --git a/public/translations/he/default.json b/public/translations/he/default.json index c320f0f7..4cf8e125 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "אנא בחר לוח לפני פרסום.", "invalid_url_alert": "הלינק שסופק אינו כתובת URL חוקית.", "empty_comment_alert": "לא ניתן לפרסם תגובה ריקה.", - "more_posts_last_week": "מראה פוסטים מאז {{currentTimeFilterName}}, <1>הצג פוסטים נוספים מהשבוע שעבר", - "more_posts_last_month": "מראה פוסטים מאז {{currentTimeFilterName}}, <1>הצג פוסטים נוספים מהחודש שעבר", - "newer_posts_available": "ישנם פוסטים חדשים זמינים, <1>טען מחדש את הפיד", + "more_posts_last_week": "מציג פוסטים מ{{currentTimeFilterName}} — [<1>הצג עוד פוסטים מהשבוע שעבר]", + "more_posts_last_month": "מציג פוסטים מ{{currentTimeFilterName}} — [<1>הצג עוד פוסטים מהחודש שעבר]", + "newer_posts_available": "פוסטים חדשים זמינים — [<1>רענן]", "stored_locally": "מאוחסן מקומית ({{location}}), לא מסונכרן בין מכשירים", "choose_one": "בחר אחת:", "create": "צור", diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index 94e319ab..d868f138 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "पोस्ट करने से पहले कृपया एक बोर्ड चुनें।", "invalid_url_alert": "प्रदत्त लिंक एक वैध URL नहीं है।", "empty_comment_alert": "खाली टिप्पणी पोस्ट नहीं कर सकते।", - "more_posts_last_week": "आप {{currentTimeFilterName}} से पोस्ट देख रहे हैं, <1>पिछले सप्ताह के और पोस्ट दिखाएं", - "more_posts_last_month": "आप {{currentTimeFilterName}} से पोस्ट देख रहे हैं, <1>पिछले महीने के और पोस्ट दिखाएं", - "newer_posts_available": "नए पोस्ट उपलब्ध हैं, <1>फीड रीलोड करें", + "more_posts_last_week": "दिखा रहा है पोस्ट {{currentTimeFilterName}} से — [<1>पिछले सप्ताह से और पोस्ट दिखाएं]", + "more_posts_last_month": "दिखा रहा है पोस्ट {{currentTimeFilterName}} से — [<1>पिछले महीने से और पोस्ट दिखाएं]", + "newer_posts_available": "नए पोस्ट उपलब्ध हैं — [<1>रिफ्रेश करें]", "stored_locally": "स्थानीय रूप से संग्रहीत ({{location}}), उपकरणों के बीच समन्वयित नहीं", "choose_one": "एक चुनें:", "create": "बनाएं", diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index f84fdfdd..067af75d 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Kérlek, válassz egy táblát a közzététel előtt.", "invalid_url_alert": "A megadott hivatkozás nem érvényes URL.", "empty_comment_alert": "Üres hozzászólást nem lehet közzétenni.", - "more_posts_last_week": "A {{currentTimeFilterName}} óta látható bejegyzések, <1>további bejegyzések megjelenítése az előző héten", - "more_posts_last_month": "A {{currentTimeFilterName}} óta látható bejegyzések, <1>további bejegyzések megjelenítése az előző hónapban", - "newer_posts_available": "Új bejegyzések állnak rendelkezésre, <1>frissítse az adatfolyamot", + "more_posts_last_week": "Bejegyzések megjelenítése {{currentTimeFilterName}} óta — [<1>további bejegyzések megjelenítése a múlt héten]", + "more_posts_last_month": "Bejegyzések megjelenítése {{currentTimeFilterName}} óta — [<1>további bejegyzések megjelenítése a múlt hónapból]", + "newer_posts_available": "Új bejegyzések elérhetőek — [<1>Frissítés]", "stored_locally": "Helyben tárolva ({{location}}), nem szinkronizálva eszközök között", "choose_one": "Válasszon egyet:", "create": "Létrehozás", diff --git a/public/translations/id/default.json b/public/translations/id/default.json index ac515ab8..51160707 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Silakan pilih papan sebelum memposting.", "invalid_url_alert": "Tautan yang diberikan bukan URL yang valid.", "empty_comment_alert": "Tidak dapat memposting komentar kosong.", - "more_posts_last_week": "Menampilkan pos sejak {{currentTimeFilterName}}, <1>tampilkan lebih banyak pos dari minggu lalu", - "more_posts_last_month": "Menampilkan pos sejak {{currentTimeFilterName}}, <1>tampilkan lebih banyak pos dari bulan lalu", - "newer_posts_available": "Postingan terbaru tersedia, <1>muat ulang umpan", + "more_posts_last_week": "Menampilkan postingan sejak {{currentTimeFilterName}} — [<1>tampilkan lebih banyak postingan dari minggu lalu]", + "more_posts_last_month": "Menampilkan postingan sejak {{currentTimeFilterName}} — [<1>tampilkan lebih banyak postingan dari bulan lalu]", + "newer_posts_available": "Postingan baru tersedia — [<1>Segarkan]", "stored_locally": "Disimpan secara lokal ({{location}}), tidak disinkronkan antar perangkat", "choose_one": "Pilih satu:", "create": "Buat", diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 8a033e57..6adcc5cb 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Per favore, seleziona una board prima di pubblicare.", "invalid_url_alert": "Il link fornito non è un URL valido.", "empty_comment_alert": "Impossibile pubblicare un commento vuoto.", - "more_posts_last_week": "Stai visualizzando post da {{currentTimeFilterName}}, <1>visualizza più post della scorsa settimana", - "more_posts_last_month": "Stai visualizzando post da {{currentTimeFilterName}}, <1>visualizza più post del mese scorso", - "newer_posts_available": "Nuovi post disponibili, <1>ricarica il feed", + "more_posts_last_week": "Mostra post da {{currentTimeFilterName}} — [<1>mostra altri post dalla scorsa settimana]", + "more_posts_last_month": "Mostra post da {{currentTimeFilterName}} — [<1>mostra altri post dallo scorso mese]", + "newer_posts_available": "Nuovi post disponibili — [<1>Aggiorna]", "stored_locally": "Memorizzato localmente ({{location}}), non sincronizzato tra i dispositivi", "choose_one": "Scegline una:", "create": "Crea", diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 5a0c41b0..330dcdbb 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "投稿する前にボードを選択してください。", "invalid_url_alert": "提供されたリンクは有効なURLではありません。", "empty_comment_alert": "空のコメントは投稿できません。", - "more_posts_last_week": "{{currentTimeFilterName}} からの投稿を表示しています。<1>先週の投稿をさらに表示", - "more_posts_last_month": "{{currentTimeFilterName}} からの投稿を表示しています。<1>先月の投稿をさらに表示", - "newer_posts_available": "新しい投稿が利用可能です、<1>フィードを再読み込み", + "more_posts_last_week": "{{currentTimeFilterName}} 以降の投稿を表示 — [<1>先週の投稿をさらに表示]", + "more_posts_last_month": "{{currentTimeFilterName}} 以降の投稿を表示 — [<1>先月の投稿をさらに表示]", + "newer_posts_available": "新しい投稿が利用可能です — [<1>更新]", "stored_locally": "ローカルに保存されています ({{location}})、デバイス間で同期されていません", "choose_one": "いずれかを選択してください:", "create": "作成", diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 52266125..3762d2a3 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "게시하기 전에 보드를 선택하십시오.", "invalid_url_alert": "제공된 링크는 유효한 URL이 아닙니다.", "empty_comment_alert": "빈 댓글을 게시할 수 없습니다.", - "more_posts_last_week": "{{currentTimeFilterName}} 이후의 게시물이 표시됩니다. <1>지난 주의 게시물 더 보기", - "more_posts_last_month": "{{currentTimeFilterName}} 이후의 게시물이 표시됩니다. <1>지난달의 게시물 더 보기", - "newer_posts_available": "새로운 게시물이 있습니다, <1>피드를 새로 고침", + "more_posts_last_week": "{{currentTimeFilterName}} 이후의 게시물 표시 — [<1>지난 주의 게시물 더 보기]", + "more_posts_last_month": "{{currentTimeFilterName}} 이후의 게시물 표시 — [<1>지난 달의 게시물 더 보기]", + "newer_posts_available": "새로운 게시물이 있습니다 — [<1>새로 고침]", "stored_locally": "로컬에 저장됨 ({{location}}), 장치 간에 동기화되지 않음", "choose_one": "하나를 선택하세요:", "create": "생성", diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index b674f361..bc59f938 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "पोस्ट करण्यापूर्वी कृपया एक बोर्ड निवडा.", "invalid_url_alert": "दिलेला लिंक वैध URL नाही.", "empty_comment_alert": "रिक्त टिप्पणी पोस्ट करू शकत नाही.", - "more_posts_last_week": "{{currentTimeFilterName}} पासून पोस्ट दर्शवित आहेत, <1>गेल्या आठवड्यातील अधिक पोस्ट दर्शवा", - "more_posts_last_month": "{{currentTimeFilterName}} पासून पोस्ट दर्शवित आहेत, <1>गेल्या महिन्यातील अधिक पोस्ट दर्शवा", - "newer_posts_available": "नवीनतम पोस्ट उपलब्ध आहेत, <1>फीड रीलोड करा", + "more_posts_last_week": "{{currentTimeFilterName}} पासून पोस्ट्स दर्शवत आहे — [<1>गेल्या आठवड्यातील आणखी पोस्ट्स दाखवा]", + "more_posts_last_month": "{{currentTimeFilterName}} पासून पोस्ट्स दर्शवत आहे — [<1>गेल्या महिन्यातील आणखी पोस्ट्स दाखवा]", + "newer_posts_available": "नवीन पोस्ट उपलब्ध आहेत — [<1>रीफ्रेश करा]", "stored_locally": "स्थानिकपणे संग्रहित ({{location}}), उपकरणांमध्ये समन्वयित केलेले नाही", "choose_one": "एक निवडा:", "create": "तयार करा", diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index d5b398a5..f4b30d30 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Selecteer een bord voordat je plaatst.", "invalid_url_alert": "De opgegeven link is geen geldige URL.", "empty_comment_alert": "Kan geen lege opmerking plaatsen.", - "more_posts_last_week": "Berichten sinds {{currentTimeFilterName}}, <1>meer berichten van afgelopen week tonen", - "more_posts_last_month": "Berichten sinds {{currentTimeFilterName}}, <1>meer berichten van afgelopen maand tonen", - "newer_posts_available": "Nieuwere berichten beschikbaar, <1>herlaad feed", + "more_posts_last_week": "Berichten weergeven sinds {{currentTimeFilterName}} — [<1>toon meer berichten van vorige week]", + "more_posts_last_month": "Berichten weergeven sinds {{currentTimeFilterName}} — [<1>toon meer berichten van vorige maand]", + "newer_posts_available": "Nieuwere berichten beschikbaar — [<1>Vernieuwen]", "stored_locally": "Lokaal opgeslagen ({{location}}), niet gesynchroniseerd tussen apparaten", "choose_one": "Kies er een:", "create": "Maak aan", diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 9a79cee5..f5531d21 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Vennligst velg et brett før du poster.", "invalid_url_alert": "Den angitte lenken er ikke en gyldig URL.", "empty_comment_alert": "Kan ikke poste tom kommentar.", - "more_posts_last_week": "Viser innlegg siden {{currentTimeFilterName}}, <1>vis flere innlegg fra forrige uke", - "more_posts_last_month": "Viser innlegg siden {{currentTimeFilterName}}, <1>vis flere innlegg fra forrige måned", - "newer_posts_available": "Nyere innlegg tilgjengelige, <1>oppdater feed", + "more_posts_last_week": "Viser innlegg siden {{currentTimeFilterName}} — [<1>vis flere innlegg fra forrige uke]", + "more_posts_last_month": "Viser innlegg siden {{currentTimeFilterName}} — [<1>vis flere innlegg fra forrige måned]", + "newer_posts_available": "Nyere innlegg tilgjengelig — [<1>Oppdater]", "stored_locally": "Lagring lokalt ({{location}}), ikke synkronisert på tvers av enheter", "choose_one": "Velg en:", "create": "Opprett", diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index db887c4d..75e3d78c 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Proszę wybrać tablicę przed opublikowaniem.", "invalid_url_alert": "Podany link nie jest poprawnym adresem URL.", "empty_comment_alert": "Nie można opublikować pustego komentarza.", - "more_posts_last_week": "Pokazuje posty od {{currentTimeFilterName}}, <1>pokaż więcej postów z zeszłego tygodnia", - "more_posts_last_month": "Pokazuje posty od {{currentTimeFilterName}}, <1>pokaż więcej postów z zeszłego miesiąca", - "newer_posts_available": "Dostępne są nowsze posty, <1>przeładuj kanał", + "more_posts_last_week": "Pokazuje posty od {{currentTimeFilterName}} — [<1>pokaż więcej postów z zeszłego tygodnia]", + "more_posts_last_month": "Pokazuje posty od {{currentTimeFilterName}} — [<1>pokaż więcej postów z zeszłego miesiąca]", + "newer_posts_available": "Dostępne nowsze posty — [<1>Odśwież]", "stored_locally": "Przechowywane lokalnie ({{location}}), nie synchronizowane między urządzeniami", "choose_one": "Wybierz jeden:", "create": "Utwórz", diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index 4b4ae626..44c19686 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Por favor, selecione um quadro antes de postar.", "invalid_url_alert": "O link fornecido não é uma URL válida.", "empty_comment_alert": "Não é possível postar um comentário vazio.", - "more_posts_last_week": "Exibindo postagens desde {{currentTimeFilterName}}, <1>mostrar mais postagens da semana passada", - "more_posts_last_month": "Exibindo postagens desde {{currentTimeFilterName}}, <1>atualize o feed com mais postagens do mês passado", - "newer_posts_available": "Novos posts disponíveis, <1>atualize o feed", + "more_posts_last_week": "Mostrando postagens desde {{currentTimeFilterName}} — [<1>mostrar mais postagens da semana passada]", + "more_posts_last_month": "Mostrando postagens desde {{currentTimeFilterName}} — [<1>mostrar mais postagens do mês passado]", + "newer_posts_available": "Novos posts disponíveis — [<1>Atualizar]", "stored_locally": "Armazenado localmente ({{location}}), não sincronizado entre dispositivos", "choose_one": "Escolha um:", "create": "Criar", diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 6c7b2ecf..2455602f 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Vă rugăm să selectați un tablou înainte de a publica.", "invalid_url_alert": "Linkul furnizat nu este un URL valid.", "empty_comment_alert": "Nu se poate publica un comentariu gol.", - "more_posts_last_week": "Afișând postări din {{currentTimeFilterName}}, <1>afișați mai multe postări din săptămâna trecută", - "more_posts_last_month": "Afișând postări din {{currentTimeFilterName}}, <1>afișați mai multe postări din luna trecută", - "newer_posts_available": "Postări mai recente disponibile, <1>reîncarcă fluxul", + "more_posts_last_week": "Afișând postări de la {{currentTimeFilterName}} — [<1>afisează mai multe postări din săptămâna trecută]", + "more_posts_last_month": "Afișând postări de la {{currentTimeFilterName}} — [<1>afisează mai multe postări din luna trecută]", + "newer_posts_available": "Postări mai noi disponibile — [<1>Reîmprospătare]", "stored_locally": "Stocat local ({{location}}), nu este sincronizat între dispozitive", "choose_one": "Alege una:", "create": "Creează", diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 371b8a17..f8839d7f 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Пожалуйста, выберите доску перед публикацией.", "invalid_url_alert": "Предоставленная ссылка не является действительным URL.", "empty_comment_alert": "Невозможно опубликовать пустой комментарий.", - "more_posts_last_week": "Показаны записи с {{currentTimeFilterName}}, <1>показать больше записей за прошлую неделю", - "more_posts_last_month": "Показаны записи с {{currentTimeFilterName}}, <1>показать больше записей за прошлый месяц", - "newer_posts_available": "Доступны более новые записи, <1>обновите ленту", + "more_posts_last_week": "Показываем посты с {{currentTimeFilterName}} — [<1>показать больше постов с прошлой недели]", + "more_posts_last_month": "Показываем посты с {{currentTimeFilterName}} — [<1>показать больше постов с прошлого месяца]", + "newer_posts_available": "Доступны новые посты — [<1>Обновить]", "stored_locally": "Сохранено локально ({{location}}), не синхронизировано между устройствами", "choose_one": "Выберите один:", "create": "Создать", diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 620e9e13..b19ea302 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Ju lutemi zgjidhni një bord para se të postoni.", "invalid_url_alert": "Lidhja e ofruar nuk është një URL e vlefshme.", "empty_comment_alert": "Nuk mund të postoni një koment bosh.", - "more_posts_last_week": "Duke treguar postimet që nga {{currentTimeFilterName}}, <1>tregoni më shumë postime nga java e kaluar", - "more_posts_last_month": "Duke treguar postimet që nga {{currentTimeFilterName}}, <1>tregoni më shumë postime nga java e kaluar", - "newer_posts_available": "Postime më të reja janë të disponueshme, <1>rifreskoje fluxin", + "more_posts_last_week": "Po shfaq postime që nga {{currentTimeFilterName}} — [<1>shfaqni më shumë postime nga java e kaluar]", + "more_posts_last_month": "Po shfaq postime që nga {{currentTimeFilterName}} — [<1>shfaqni më shumë postime nga muaji i kaluar]", + "newer_posts_available": "Postime më të reja të disponueshme — [<1>Rifresko]", "stored_locally": "Ruajtur lokalmente ({{location}}), nuk është sinkronizuar ndërmjet pajisjeve", "choose_one": "Zgjidhni një:", "create": "Krijo", diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 09593b17..4aae1018 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Vänligen välj en tavla innan du postar.", "invalid_url_alert": "Den angivna länken är inte en giltig URL.", "empty_comment_alert": "Kan inte posta tom kommentar.", - "more_posts_last_week": "Visar inlägg sedan {{currentTimeFilterName}}, <1>visa fler inlägg från förra veckan", - "more_posts_last_month": "Visar inlägg sedan {{currentTimeFilterName}}, <1>visa fler inlägg från förra månaden", - "newer_posts_available": "Nyare inlägg tillgängliga, <1>ladda om flödet", + "more_posts_last_week": "Visar inlägg sedan {{currentTimeFilterName}} — [<1>visa fler inlägg från förra veckan]", + "more_posts_last_month": "Visar inlägg sedan {{currentTimeFilterName}} — [<1>visa fler inlägg från förra månaden]", + "newer_posts_available": "Nyare inlägg tillgängliga — [<1>Uppdatera]", "stored_locally": "Lagrad lokalt ({{location}}), inte synkroniserad mellan enheter", "choose_one": "Välj en:", "create": "Skapa", diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 83b513f6..95b59168 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "పోస్ట్ చేయడానికి ముందు దయచేసి ఒక బోర్డు ఎంచుకోండి.", "invalid_url_alert": "నివేదిక ఇవ్వబడిన లింక్ చెల్లుబాటులో లేని URL.", "empty_comment_alert": "ఖాళీ వ్యాఖ్యను పోస్ట్ చేయలేరు.", - "more_posts_last_week": "{{currentTimeFilterName}} నుండి పోస్టులు చూపిస్తున్నాయి, <1>గత వారంనుంచి మరిన్ని పోస్టులను చూపించు", - "more_posts_last_month": "{{currentTimeFilterName}} నుండి పోస్టులు చూపిస్తున్నాయి, <1>గత నెల నుండి మరిన్ని పోస్టులను చూపించండి", - "newer_posts_available": "కొత్త పోస్టులు అందుబాటులో ఉన్నాయి, <1>ఫీడ్‌ను తిరిగి లోడ్ చేయండి", + "more_posts_last_week": "{{currentTimeFilterName}} నుండి పోస్టులు చూపిస్తున్నాయి — [<1>గత వారం నుండి మరిన్ని పోస్టులను చూపించు]", + "more_posts_last_month": "{{currentTimeFilterName}} నుండి పోస్టులు చూపిస్తున్నాయి — [<1>గత నెల నుండి మరిన్ని పోస్టులను చూపించు]", + "newer_posts_available": "కొత్త పోస్టులు అందుబాటులో ఉన్నాయి — [<1>రిఫ్రెష్ చేయండి]", "stored_locally": "స్థానికంగా నిల్వ ({{location}}), పరికరాల మధ్య సమన్వయించడం లేదు", "choose_one": "ఒకటి ఎంపిక చేసుకోండి:", "create": "సృష్టించండి", diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 90720a8e..b4b2344d 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "กรุณาเลือกกระดานก่อนที่จะโพสต์.", "invalid_url_alert": "ลิงก์ที่ให้ไม่ใช่ URL ที่ถูกต้อง", "empty_comment_alert": "ไม่สามารถโพสต์ความคิดเห็นว่างเปล่าได้", - "more_posts_last_week": "แสดงโพสต์ตั้งแต่ {{currentTimeFilterName}} <1>แสดงโพสต์เพิ่มเติมจากสัปดาห์ที่แล้ว", - "more_posts_last_month": "โพสต์ตั้งแต่ {{currentTimeFilterName}} <1>แสดงโพสต์เพิ่มเติมจากเดือนที่แล้ว", - "newer_posts_available": "โพสต์ใหม่พร้อมใช้งาน, <1>โหลดฟีดใหม่", + "more_posts_last_week": "แสดงโพสต์ตั้งแต่ {{currentTimeFilterName}} — [<1>แสดงโพสต์เพิ่มเติมจากสัปดาห์ที่แล้ว]", + "more_posts_last_month": "แสดงโพสต์ตั้งแต่ {{currentTimeFilterName}} — [<1>แสดงโพสต์เพิ่มเติมจากเดือนที่แล้ว]", + "newer_posts_available": "โพสต์ใหม่พร้อมใช้งาน — [<1>รีเฟรช]", "stored_locally": "จัดเก็บในเครื่อง ({{location}}) ไม่ได้ซิงค์ข้ามอุปกรณ์", "choose_one": "เลือกหนึ่ง:", "create": "สร้าง", diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 70433403..ae777ac6 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Lütfen gönderimden önce bir pano seçin.", "invalid_url_alert": "Verilen bağlantı geçerli bir URL değildir.", "empty_comment_alert": "Boş yorum gönderilemez.", - "more_posts_last_week": "{{currentTimeFilterName}} tarihinden itibaren gönderiler gösteriliyor, <1>geçen haftadan daha fazla gönderi göster", - "more_posts_last_month": "{{currentTimeFilterName}} tarihinden itibaren gönderiler gösteriliyor, <1>geçen aydan daha fazla gönderi göster", - "newer_posts_available": "Daha yeni gönderiler mevcut, <1>beslemeyi yenile", + "more_posts_last_week": "{{currentTimeFilterName}} tarihinden itibaren gönderiler gösteriliyor — [<1>geçen haftadan daha fazla gönderi göster]", + "more_posts_last_month": "{{currentTimeFilterName}} tarihinden itibaren gönderiler gösteriliyor — [<1>geçen aydan daha fazla gönderi göster]", + "newer_posts_available": "Daha yeni gönderiler mevcut — [<1>Yenile]", "stored_locally": "Yerel olarak saklanıyor ({{location}}), cihazlar arasında senkronize edilmedi", "choose_one": "Birini seç:", "create": "Oluştur", diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 73c34772..07bab21d 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Будь ласка, виберіть дошку перед публікацією.", "invalid_url_alert": "Надане посилання не є дійсною URL-адресою.", "empty_comment_alert": "Не можна опублікувати порожній коментар.", - "more_posts_last_week": "Показані пости з {{currentTimeFilterName}}, <1>показати більше постів з минулого тижня", - "more_posts_last_month": "Показані пости з {{currentTimeFilterName}}, <1>показати більше постів з минулого місяця", - "newer_posts_available": "Доступні нові пости, <1>перезавантажити стрічку", + "more_posts_last_week": "Показує пости з {{currentTimeFilterName}} — [<1>показати більше постів з минулого тижня]", + "more_posts_last_month": "Показує пости з {{currentTimeFilterName}} — [<1>показати більше постів з минулого місяця]", + "newer_posts_available": "Новіші пости доступні — [<1>Оновити]", "stored_locally": "Збережено локально ({{location}}), не синхронізується між пристроями", "choose_one": "Виберіть один:", "create": "Створити", diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 9e59679f..ad663a4f 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "براہ کرم پوسٹ کرنے سے پہلے ایک بورڈ منتخب کریں۔", "invalid_url_alert": "فراہم کردہ لنک درست URL نہیں ہے۔", "empty_comment_alert": "خالی تبصرہ پوسٹ نہیں کیا جا سکتا۔", - "more_posts_last_week": "{{currentTimeFilterName}} سے پوسٹ دکھا رہا ہے، <1>پچھلے ہفتے کے مزید پوسٹس دکھائیں", - "more_posts_last_month": "{{currentTimeFilterName}} سے پوسٹ دکھا رہا ہے، <1>پچھلے مہینے کے مزید پوسٹس دکھائیں", - "newer_posts_available": "نئے پوسٹس دستیاب ہیں، <1>فیڈ کو دوبارہ لوڈ کریں", + "more_posts_last_week": "پوسٹس دکھا رہا ہے {{currentTimeFilterName}} سے — [<1>گزشتہ ہفتے سے مزید پوسٹس دکھائیں]", + "more_posts_last_month": "پوسٹس دکھا رہا ہے {{currentTimeFilterName}} سے — [<1>گزشتہ مہینے سے مزید پوسٹس دکھائیں]", + "newer_posts_available": "نئے پوسٹس دستیاب ہیں — [<1>ریفریش کریں]", "stored_locally": "مقامی طور پر محفوظ ({{location}})، آلات کے درمیان ہم وقت سازی نہیں کی گئی", "choose_one": "ایک کا انتخاب کریں:", "create": "تخلیق کریں", diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index bcca2371..9a0aabe0 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "Vui lòng chọn một bảng trước khi đăng.", "invalid_url_alert": "Liên kết được cung cấp không phải là một URL hợp lệ.", "empty_comment_alert": "Không thể đăng bình luận trống.", - "more_posts_last_week": "Đang hiển thị bài viết từ {{currentTimeFilterName}}, <1>hiển thị thêm bài viết từ tuần trước", - "more_posts_last_month": "Đang hiển thị bài viết từ {{currentTimeFilterName}}, <1>hiển thị thêm bài viết từ tháng trước", - "newer_posts_available": "Có bài viết mới, <1>tải lại nguồn cấp dữ liệu", + "more_posts_last_week": "Hiển thị bài viết từ {{currentTimeFilterName}} — [<1>hiển thị thêm bài viết từ tuần trước]", + "more_posts_last_month": "Hiển thị bài viết từ {{currentTimeFilterName}} — [<1>hiển thị thêm bài viết từ tháng trước]", + "newer_posts_available": "Bài viết mới có sẵn — [<1>làm mới]", "stored_locally": "Lưu trữ cục bộ ({{location}}), không được đồng bộ qua các thiết bị", "choose_one": "Chọn một:", "create": "Tạo", diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index ae71f6fc..d46cebd6 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -237,9 +237,9 @@ "no_board_selected_warning": "请在发布之前选择一个板块。", "invalid_url_alert": "提供的链接不是有效的 URL。", "empty_comment_alert": "无法发布空评论。", - "more_posts_last_week": "显示自 {{currentTimeFilterName}} 以来的帖子,<1>显示上周的更多帖子", - "more_posts_last_month": "显示自 {{currentTimeFilterName}} 以来的帖子,<1>显示上个月的更多帖子", - "newer_posts_available": "新帖子可用,<1>重新加载源", + "more_posts_last_week": "显示自{{currentTimeFilterName}}以来的帖子 — [<1>显示更多来自上周的帖子]", + "more_posts_last_month": "显示自{{currentTimeFilterName}}以来的帖子 — [<1>显示更多来自上个月的帖子]", + "newer_posts_available": "有新的帖子可用 — [<1>刷新]", "stored_locally": "本地存储 ({{location}}),未在设备之间同步", "choose_one": "选择一个:", "create": "创建", diff --git a/src/app.tsx b/src/app.tsx index 933ab81c..2bb0c9b7 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -32,7 +32,7 @@ const ValidateRouteParams = () => { accountComments?.length > 0 && parseInt(accountCommentIndex) < accountComments.length); - const isDynamicTimeFilter = (filter: string) => /^\d+[dwmy]$/.test(filter); + const isDynamicTimeFilter = (filter: string) => /^\d+[hdwmy]$/.test(filter); const isTimeFilterNameValid = !timeFilterName || timeFilterNames.includes(timeFilterName as any) || timeFilterName === lastVisitTimeFilterName || isDynamicTimeFilter(timeFilterName); diff --git a/src/components/board-buttons/board-buttons.tsx b/src/components/board-buttons/board-buttons.tsx index 7db33822..3e70bafe 100644 --- a/src/components/board-buttons/board-buttons.tsx +++ b/src/components/board-buttons/board-buttons.tsx @@ -197,7 +197,7 @@ export const TimeFilter = ({ isInAllView, isInCatalogView, isInSubscriptionsView const { sortType } = useSortingStore(); - const allTimeFilterNames = timeFilterName && !timeFilterNames.includes(timeFilterName) ? [timeFilterName, ...timeFilterNames.slice(1)] : timeFilterNames.slice(1); + const allTimeFilterNames = timeFilterName ? Array.from(new Set([timeFilterName, ...timeFilterNames])) : timeFilterNames; return ( <> diff --git a/src/components/markdown/markdown.tsx b/src/components/markdown/markdown.tsx index 6fc19b21..bb79e537 100644 --- a/src/components/markdown/markdown.tsx +++ b/src/components/markdown/markdown.tsx @@ -179,17 +179,21 @@ const Markdown = ({ content, title }: MarkdownProps) => { source: ({ src }) => {src}, a: ({ href, children }) => { if (href && !isInCatalogView) { - const linkMediaInfo = getLinkMediaInfo(href); - const embedUrl = new URL(href); - if (canEmbed(embedUrl) || getHasThumbnail(linkMediaInfo, href)) { - return ; - } else { - return ( - - {children} - - ); + try { + const linkMediaInfo = getLinkMediaInfo(href); + const embedUrl = href.startsWith('http') ? new URL(href) : null; + if ((embedUrl && canEmbed(embedUrl)) || getHasThumbnail(linkMediaInfo, href)) { + return ; + } + } catch (e) { + console.debug('Invalid URL:', href); } + + return ( + + {children} + + ); } }, }} diff --git a/src/components/post-desktop/post-desktop.tsx b/src/components/post-desktop/post-desktop.tsx index 26b601db..97aec2d5 100644 --- a/src/components/post-desktop/post-desktop.tsx +++ b/src/components/post-desktop/post-desktop.tsx @@ -1,10 +1,17 @@ -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useEffect, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { Link, useLocation, useParams } from 'react-router-dom'; import { Comment, useAuthorAvatar, useComment, useEditedComment, useSubplebbit } from '@plebbit/plebbit-react-hooks'; import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js'; import styles from '../../views/post/post.module.css'; -import { fetchWebpageThumbnailIfNeeded, getCommentMediaInfo, getDisplayMediaInfoType, getHasThumbnail, getMediaDimensions } from '../../lib/utils/media-utils'; +import { + CommentMediaInfo, + fetchWebpageThumbnailIfNeeded, + getCommentMediaInfo, + getDisplayMediaInfoType, + getHasThumbnail, + getMediaDimensions, +} from '../../lib/utils/media-utils'; import { hashStringToColor, getTextColorForBackground } from '../../lib/utils/post-utils'; import { getFormattedDate, getFormattedTimeAgo } from '../../lib/utils/time-utils'; import { isValidURL } from '../../lib/utils/url-utils'; @@ -207,22 +214,28 @@ const PostInfo = ({ openReplyModal, post, postReplyCount = 0, roles, isHidden }: const PostMedia = ({ post }: PostProps) => { const { t } = useTranslation(); - const { link, spoiler } = post || {}; + const { link, spoiler, cid } = post || {}; - // some sites have CORS access, so the thumbnail can be fetched client-side, which is helpful if subplebbit.settings.fetchThumbnailUrls is false - const initialCommentMediaInfo = useMemo(() => getCommentMediaInfo(post), [post]); - const [commentMediaInfo, setCommentMediaInfo] = useState(initialCommentMediaInfo); + // Reset state by remounting component when post changes + return ; +}; - const fetchThumbnail = useCallback(async () => { - if (initialCommentMediaInfo?.type === 'webpage' && !initialCommentMediaInfo.thumbnail) { - const newMediaInfo = await fetchWebpageThumbnailIfNeeded(initialCommentMediaInfo); - setCommentMediaInfo(newMediaInfo); - } - }, [initialCommentMediaInfo]); +const PostMediaContent = ({ post, link, spoiler, t }: { post: any; link: string; spoiler: boolean; t: any }) => { + const initialInfo = getCommentMediaInfo(post); + const [webpageThumbnail, setWebpageThumbnail] = useState(); useEffect(() => { - fetchThumbnail(); - }, [fetchThumbnail]); + // some sites have CORS access, so the thumbnail can be fetched client-side, which is helpful if subplebbit.settings.fetchThumbnailUrls is false + const loadThumbnail = async () => { + if (initialInfo?.type === 'webpage' && !initialInfo.thumbnail) { + const newMediaInfo = await fetchWebpageThumbnailIfNeeded(initialInfo); + setWebpageThumbnail(newMediaInfo); + } + }; + loadThumbnail(); + }, [initialInfo]); + + const commentMediaInfo = webpageThumbnail || initialInfo; const { url } = commentMediaInfo || {}; let type = commentMediaInfo?.type; diff --git a/src/components/post-mobile/post-mobile.tsx b/src/components/post-mobile/post-mobile.tsx index f2a5e421..1d1dad70 100644 --- a/src/components/post-mobile/post-mobile.tsx +++ b/src/components/post-mobile/post-mobile.tsx @@ -1,10 +1,10 @@ -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useEffect, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { Link, useLocation, useParams } from 'react-router-dom'; import { Comment, useAuthorAvatar, useComment, useEditedComment, useSubplebbit } from '@plebbit/plebbit-react-hooks'; import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js'; import styles from '../../views/post/post.module.css'; -import { fetchWebpageThumbnailIfNeeded, getCommentMediaInfo, getHasThumbnail } from '../../lib/utils/media-utils'; +import { CommentMediaInfo, fetchWebpageThumbnailIfNeeded, getCommentMediaInfo, getHasThumbnail } from '../../lib/utils/media-utils'; import { getTextColorForBackground, hashStringToColor } from '../../lib/utils/post-utils'; import { getFormattedDate, getFormattedTimeAgo } from '../../lib/utils/time-utils'; import { isAllView, isPendingPostView, isPostPageView, isSubscriptionsView } from '../../lib/utils/view-utils'; @@ -40,23 +40,24 @@ const PostInfoAndMedia = ({ openReplyModal, post, postReplyCount = 0, roles }: P const isInPostPageView = isPostPageView(location.pathname, params); const isInSubscriptionsView = isSubscriptionsView(location.pathname, params); - // some sites have CORS access, so the thumbnail can be fetched client-side, which is helpful if subplebbit.settings.fetchThumbnailUrls is false - const initialCommentMediaInfo = useMemo(() => getCommentMediaInfo(post), [post]); - const [commentMediaInfo, setCommentMediaInfo] = useState(initialCommentMediaInfo); - - const fetchThumbnail = useCallback(async () => { - if (initialCommentMediaInfo?.type === 'webpage' && !initialCommentMediaInfo.thumbnail) { - const newMediaInfo = await fetchWebpageThumbnailIfNeeded(initialCommentMediaInfo); - setCommentMediaInfo(newMediaInfo); - } - }, [initialCommentMediaInfo]); - + const initialInfo = getCommentMediaInfo(post); + const [webpageThumbnail, setWebpageThumbnail] = useState(); useEffect(() => { - fetchThumbnail(); - }, [fetchThumbnail]); + // some sites have CORS access, so the thumbnail can be fetched client-side, which is helpful if subplebbit.settings.fetchThumbnailUrls is false + const loadThumbnail = async () => { + if (initialInfo?.type === 'webpage' && !initialInfo.thumbnail) { + const newMediaInfo = await fetchWebpageThumbnailIfNeeded(initialInfo); + setWebpageThumbnail(newMediaInfo); + } + }; + loadThumbnail(); + return () => { + setWebpageThumbnail(undefined); + }; + }, [initialInfo]); + const commentMediaInfo = webpageThumbnail || initialInfo; const hasThumbnail = getHasThumbnail(commentMediaInfo, link); - const [showThumbnail, setShowThumbnail] = useState(true); const isReply = parentCid; @@ -181,13 +182,33 @@ const PostInfoAndMedia = ({ openReplyModal, post, postReplyCount = 0, roles }: P - {(hasThumbnail || link) && !(deleted || removed) && ( - - )} + {(hasThumbnail || link) && !(deleted || removed) && } ); }; +const PostMediaContent = ({ post, link, t }: { post: any; link: string; t: any }) => { + const initialInfo = getCommentMediaInfo(post); + const [webpageThumbnail, setWebpageThumbnail] = useState(); + const [showThumbnail, setShowThumbnail] = useState(true); + + useEffect(() => { + // some sites have CORS access, so the thumbnail can be fetched client-side, which is helpful if subplebbit.settings.fetchThumbnailUrls is false + const loadThumbnail = async () => { + if (initialInfo?.type === 'webpage' && !initialInfo.thumbnail) { + const newMediaInfo = await fetchWebpageThumbnailIfNeeded(initialInfo); + setWebpageThumbnail(newMediaInfo); + } + }; + loadThumbnail(); + }, [initialInfo]); + + const commentMediaInfo = webpageThumbnail || initialInfo; + const hasThumbnail = getHasThumbnail(commentMediaInfo, link); + + return hasThumbnail && ; +}; + const ReplyBacklinks = ({ post }: PostProps) => { const { cid, parentCid } = post || {}; const replies = useReplies(post); diff --git a/src/hooks/use-time-filter.ts b/src/hooks/use-time-filter.ts index 748b30cc..e3e920fd 100644 --- a/src/hooks/use-time-filter.ts +++ b/src/hooks/use-time-filter.ts @@ -42,6 +42,31 @@ if (secondsSinceLastVisit > 30 * day) { export const timeFilterNames = [lastVisitTimeFilterName, '1h', '12h', '24h', '48h', '1w', '1m', '1y', 'all']; +function convertTimeStringToSeconds(timeString: string): number { + const match = timeString.match(/^(\d+)([hdwmy])$/); + if (!match) { + throw new Error(`Invalid time filter format: ${timeString}`); + } + + const [, value, unit] = match; + const numValue = parseInt(value, 10); + + switch (unit) { + case 'h': + return numValue * 60 * 60; + case 'd': + return numValue * 24 * 60 * 60; + case 'w': + return numValue * 7 * 24 * 60 * 60; + case 'm': + return numValue * 30 * 24 * 60 * 60; + case 'y': + return numValue * 365 * 24 * 60 * 60; + default: + throw new Error(`Invalid time unit: ${unit}`); + } +} + const useTimeFilter = () => { const params = useParams(); let timeFilterName = params.timeFilterName; @@ -58,25 +83,11 @@ const useTimeFilter = () => { } else if (timeFilterName && timeFilterName in timeFilterNamesToSeconds) { timeFilterSeconds = timeFilterNamesToSeconds[timeFilterName as keyof typeof timeFilterNamesToSeconds]; } else if (timeFilterName) { - // Handle dynamic time filters (e.g., "3d", "2w") - const match = timeFilterName.match(/^(\d+)([dwmy])$/); - if (match) { - const [, value, unit] = match; - const numValue = parseInt(value, 10); - switch (unit) { - case 'd': - timeFilterSeconds = numValue * 24 * 60 * 60; - break; - case 'w': - timeFilterSeconds = numValue * 7 * 24 * 60 * 60; - break; - case 'm': - timeFilterSeconds = numValue * 30 * 24 * 60 * 60; - break; - case 'y': - timeFilterSeconds = numValue * 365 * 24 * 60 * 60; - break; - } + try { + timeFilterSeconds = convertTimeStringToSeconds(timeFilterName); + } catch (e) { + console.error(`Invalid time filter format: ${timeFilterName}`); + timeFilterSeconds = undefined; } } diff --git a/src/lib/init-translations.ts b/src/lib/init-translations.ts index 5fe78a86..dacc105b 100644 --- a/src/lib/init-translations.ts +++ b/src/lib/init-translations.ts @@ -12,100 +12,41 @@ i18next .init({ fallbackLng: 'en', supportedLngs: [ - 'af', - 'am', 'ar', - 'az', - 'be', - 'bg', 'bn', - 'bs', - 'ca', - 'ckb', 'cs', - 'cy', 'da', 'de', 'el', 'en', - 'eo', 'es', - 'et', - 'eu', 'fa', 'fi', 'fil', 'fr', - 'fy', - 'ga', - 'gd', - 'gl', - 'gu', - 'ha', 'he', 'hi', - 'hr', - 'ht', 'hu', - 'hy', 'id', - 'ig', - 'is', 'it', 'ja', - 'ka', - 'kk', - 'km', - 'kn', 'ko', - 'ku', - 'ky', - 'lb', - 'lo', - 'lt', - 'lv', - 'mg', - 'mk', - 'ml', - 'mn', 'mr', - 'ms', - 'mt', - 'my', - 'ne', 'nl', 'no', - 'or', - 'pa', 'pl', - 'ps', 'pt', 'ro', 'ru', - 'rw', - 'si', - 'sk', - 'sl', - 'sn', - 'so', 'sq', - 'sr', 'sv', - 'sw', - 'ta', 'te', 'th', - 'tl', 'tr', - 'ug', 'uk', 'ur', - 'uz', 'vi', - 'yi', - 'yo', 'zh', - 'zu', ], ns: ['default'], diff --git a/src/views/board/board.module.css b/src/views/board/board.module.css index f2cb2d3f..68c7b16b 100644 --- a/src/views/board/board.module.css +++ b/src/views/board/board.module.css @@ -4,7 +4,12 @@ .footer { color: var(--post-mobile-abbr-text-color); - padding: 15px 0 10px 5px; + padding: 15px 0 20px 5px; +} + +.morePostsSuggestion { + color: var(--body-font-color); + padding-bottom: 5px; } .footer a, .newerPostsButton { diff --git a/src/views/board/board.tsx b/src/views/board/board.tsx index 878d4404..465bb4d0 100644 --- a/src/views/board/board.tsx +++ b/src/views/board/board.tsx @@ -164,7 +164,7 @@ const Board = () => { footerContent = ( <> {subplebbitAddressesWithNewerPosts.length > 0 ? ( -
+
{ showMorePostsSuggestion && monthlyFeed.length > feed.length && (weeklyFeed.length > feed.length ? ( -
+
{ />
) : ( -
+
{ )} {/* TODO: remove this replyCount error once api supports scrolling replies pages */} {replyCount > 60 && Error: this thread has too many replies, some of them cannot be displayed right now.} - {error && Error: {error.message}} + {error && Error: {error?.message || error?.toString?.()}} {isInDescriptionView ? (