From d7ca1652b30a35918758f4a681a828d35f9af686 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 15 Dec 2025 13:12:51 -0500 Subject: [PATCH] feat: add button to regenerate latest bot message --- lib/l10n/intl_ar.arb | 12 +++++- lib/l10n/intl_be.arb | 12 +++++- lib/l10n/intl_bn.arb | 12 +++++- lib/l10n/intl_bo.arb | 12 +++++- lib/l10n/intl_ca.arb | 12 +++++- lib/l10n/intl_cs.arb | 12 +++++- lib/l10n/intl_da.arb | 12 +++++- lib/l10n/intl_de.arb | 12 +++++- lib/l10n/intl_el.arb | 12 +++++- lib/l10n/intl_en.arb | 4 +- lib/l10n/intl_eo.arb | 12 +++++- lib/l10n/intl_es.arb | 12 +++++- lib/l10n/intl_et.arb | 12 +++++- lib/l10n/intl_eu.arb | 12 +++++- lib/l10n/intl_fa.arb | 12 +++++- lib/l10n/intl_fi.arb | 12 +++++- lib/l10n/intl_fil.arb | 12 +++++- lib/l10n/intl_fr.arb | 12 +++++- lib/l10n/intl_ga.arb | 12 +++++- lib/l10n/intl_gl.arb | 12 +++++- lib/l10n/intl_he.arb | 12 +++++- lib/l10n/intl_hi.arb | 12 +++++- lib/l10n/intl_hr.arb | 12 +++++- lib/l10n/intl_hu.arb | 12 +++++- lib/l10n/intl_ia.arb | 12 +++++- lib/l10n/intl_id.arb | 12 +++++- lib/l10n/intl_ie.arb | 12 +++++- lib/l10n/intl_it.arb | 12 +++++- lib/l10n/intl_ja.arb | 12 +++++- lib/l10n/intl_ka.arb | 12 +++++- lib/l10n/intl_ko.arb | 12 +++++- lib/l10n/intl_lt.arb | 12 +++++- lib/l10n/intl_lv.arb | 12 +++++- lib/l10n/intl_nb.arb | 12 +++++- lib/l10n/intl_nl.arb | 12 +++++- lib/l10n/intl_pl.arb | 12 +++++- lib/l10n/intl_pt.arb | 12 +++++- lib/l10n/intl_pt_BR.arb | 12 +++++- lib/l10n/intl_pt_PT.arb | 12 +++++- lib/l10n/intl_ro.arb | 12 +++++- lib/l10n/intl_ru.arb | 12 +++++- lib/l10n/intl_sk.arb | 12 +++++- lib/l10n/intl_sl.arb | 12 +++++- lib/l10n/intl_sr.arb | 12 +++++- lib/l10n/intl_sv.arb | 12 +++++- lib/l10n/intl_ta.arb | 12 +++++- lib/l10n/intl_te.arb | 12 +++++- lib/l10n/intl_th.arb | 12 +++++- lib/l10n/intl_tr.arb | 12 +++++- lib/l10n/intl_uk.arb | 12 +++++- lib/l10n/intl_vi.arb | 12 +++++- lib/l10n/intl_yue.arb | 12 +++++- lib/l10n/intl_zh.arb | 12 +++++- lib/l10n/intl_zh_Hant.arb | 12 +++++- lib/pages/chat/chat.dart | 38 +++++++++++++++++++ lib/pages/chat/chat_event_list.dart | 1 + lib/pages/chat/events/message.dart | 15 ++++++++ .../events/constants/pangea_event_types.dart | 2 + 58 files changed, 642 insertions(+), 54 deletions(-) diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index 9cf59f6e6..1fa726978 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -1,6 +1,6 @@ { "@@locale": "ar", - "@@last_modified": "2025-12-15 12:08:55.118158", + "@@last_modified": "2025-12-15 13:10:00.150906", "about": "حول", "@about": { "type": "String", @@ -10908,5 +10908,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "طلب إعادة التوليد", + "optionalRegenerateReason": "(اختياري) السبب", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb index 838661883..bd12201dd 100644 --- a/lib/l10n/intl_be.arb +++ b/lib/l10n/intl_be.arb @@ -1915,7 +1915,7 @@ "playWithAI": "Пакуль гуляйце з ШІ", "courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!", "@@locale": "be", - "@@last_modified": "2025-12-15 12:08:42.207839", + "@@last_modified": "2025-12-15 13:09:51.707905", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11790,5 +11790,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Запытаць рэгенерацыю", + "optionalRegenerateReason": "(Неабавязкова) Прычына", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb index bb5735e21..30627ab0c 100644 --- a/lib/l10n/intl_bn.arb +++ b/lib/l10n/intl_bn.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:08.421474", + "@@last_modified": "2025-12-15 13:10:11.203206", "about": "সম্পর্কে", "@about": { "type": "String", @@ -11795,5 +11795,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "পুনর্জন্মের জন্য অনুরোধ করুন", + "optionalRegenerateReason": "(ঐচ্ছিক) কারণ", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb index f8a26f739..8a73206da 100644 --- a/lib/l10n/intl_bo.arb +++ b/lib/l10n/intl_bo.arb @@ -4282,7 +4282,7 @@ "joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།", "startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།", "@@locale": "bo", - "@@last_modified": "2025-12-15 12:09:05.659457", + "@@last_modified": "2025-12-15 13:10:08.949661", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -10445,5 +10445,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Begär regenerering", + "optionalRegenerateReason": "(Valfritt) Orsak", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb index 3c82ce155..04ec1d689 100644 --- a/lib/l10n/intl_ca.arb +++ b/lib/l10n/intl_ca.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:43.538573", + "@@last_modified": "2025-12-15 13:09:52.878217", "about": "Quant a", "@about": { "type": "String", @@ -10715,5 +10715,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Sol·licitar regeneració", + "optionalRegenerateReason": "(Opcional) Motiu", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index 8ee07e391..f67065144 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,6 +1,6 @@ { "@@locale": "cs", - "@@last_modified": "2025-12-15 12:08:39.446987", + "@@last_modified": "2025-12-15 13:09:49.179864", "about": "O aplikaci", "@about": { "type": "String", @@ -11298,5 +11298,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Žádat o regeneraci", + "optionalRegenerateReason": "(Volitelné) Důvod", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 0d6b35d8d..1f637c106 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -1934,7 +1934,7 @@ "playWithAI": "Leg med AI for nu", "courseStartDesc": "Pangea Bot er klar til at starte når som helst!\n\n...men læring er bedre med venner!", "@@locale": "da", - "@@last_modified": "2025-12-15 12:08:11.060625", + "@@last_modified": "2025-12-15 13:09:27.476427", "@aboutHomeserver": { "type": "String", "placeholders": { @@ -11752,5 +11752,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Anmod om regenerering", + "optionalRegenerateReason": "(Valgfri) Årsag", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index ffd12d114..94b4820b2 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "@@last_modified": "2025-12-15 12:08:31.951599", + "@@last_modified": "2025-12-15 13:09:43.173559", "alwaysUse24HourFormat": "true", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." @@ -10698,5 +10698,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Anforderung der Regeneration", + "optionalRegenerateReason": "(Optional) Grund", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index 56de10a95..df3d20727 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -4460,7 +4460,7 @@ "playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν", "courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!", "@@locale": "el", - "@@last_modified": "2025-12-15 12:09:15.177117", + "@@last_modified": "2025-12-15 13:10:16.812716", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11749,5 +11749,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Αίτημα αναγέννησης", + "optionalRegenerateReason": "(Προαιρετικό) Λόγος", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 454aefb47..db78a545d 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -5000,5 +5000,7 @@ "courseParticipantTooltip": "This is everybody in this course. Click on any user’s avatar and “start conversation” to send a DM.", "chatParticipantTooltip": "This is everybody in this chat. Click on any user’s avatar and “start conversation” to send a DM.", "inOngoingActivity": "You have an ongoing activity!", - "vocabEmoji": "Vocab emoji" + "vocabEmoji": "Vocab emoji", + "requestRegeneration": "Request regeneration", + "optionalRegenerateReason": "(Optional) Reason" } diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb index 2afb17fa4..554a1cb1b 100644 --- a/lib/l10n/intl_eo.arb +++ b/lib/l10n/intl_eo.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:19.885781", + "@@last_modified": "2025-12-15 13:10:20.520198", "about": "Prio", "@about": { "type": "String", @@ -11780,5 +11780,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Petu regeneradon", + "optionalRegenerateReason": "(Opcie) Kialo", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 2255c73e7..3a161bc86 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,6 @@ { "@@locale": "es", - "@@last_modified": "2025-12-15 12:08:02.767004", + "@@last_modified": "2025-12-15 13:09:22.556485", "about": "Acerca de", "@about": { "type": "String", @@ -7925,5 +7925,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Solicitar regeneración", + "optionalRegenerateReason": "(Opcional) Razón", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb index 6f1145da3..debe2a255 100644 --- a/lib/l10n/intl_et.arb +++ b/lib/l10n/intl_et.arb @@ -1,6 +1,6 @@ { "@@locale": "et", - "@@last_modified": "2025-12-15 12:08:29.165916", + "@@last_modified": "2025-12-15 13:09:41.916204", "about": "Rakenduse teave", "@about": { "type": "String", @@ -10962,5 +10962,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Küsi regeneratsiooni", + "optionalRegenerateReason": "(Valikuline) Põhjus", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb index a3ceeaf23..507ae03a6 100644 --- a/lib/l10n/intl_eu.arb +++ b/lib/l10n/intl_eu.arb @@ -1,6 +1,6 @@ { "@@locale": "eu", - "@@last_modified": "2025-12-15 12:08:25.715230", + "@@last_modified": "2025-12-15 13:09:39.405643", "about": "Honi buruz", "@about": { "type": "String", @@ -10691,5 +10691,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Eskaera berritzea", + "optionalRegenerateReason": "(Aukerakoa) Arrazoia", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb index 8f9b2bff1..0d97952b3 100644 --- a/lib/l10n/intl_fa.arb +++ b/lib/l10n/intl_fa.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:09.425648", + "@@last_modified": "2025-12-15 13:10:12.289964", "repeatPassword": "تکرار رمزعبور", "@repeatPassword": {}, "about": "درباره", @@ -11423,5 +11423,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "درخواست تجدید", + "optionalRegenerateReason": "(اختیاری) دلیل", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb index d608ad4d8..7670f1bff 100644 --- a/lib/l10n/intl_fi.arb +++ b/lib/l10n/intl_fi.arb @@ -4013,7 +4013,7 @@ "playWithAI": "Leiki tekoälyn kanssa nyt", "courseStartDesc": "Pangea Bot on valmis milloin tahansa!\n\n...mutta oppiminen on parempaa ystävien kanssa!", "@@locale": "fi", - "@@last_modified": "2025-12-15 12:08:09.660013", + "@@last_modified": "2025-12-15 13:09:25.461324", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11314,5 +11314,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Pyydä uudelleensyntymää", + "optionalRegenerateReason": "(Valinnainen) Syynä", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb index cfadc5230..466b168d6 100644 --- a/lib/l10n/intl_fil.arb +++ b/lib/l10n/intl_fil.arb @@ -2791,7 +2791,7 @@ "selectAll": "Piliin lahat", "deselectAll": "Huwag piliin lahat", "@@locale": "fil", - "@@last_modified": "2025-12-15 12:08:49.579904", + "@@last_modified": "2025-12-15 13:09:57.098421", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -11667,5 +11667,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Humiling ng muling pagbuo", + "optionalRegenerateReason": "(Opsyonal) Dahilan", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 3403d2dfa..399e4a79e 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,6 @@ { "@@locale": "fr", - "@@last_modified": "2025-12-15 12:09:27.334083", + "@@last_modified": "2025-12-15 13:10:26.870783", "about": "À propos", "@about": { "type": "String", @@ -11015,5 +11015,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Demander une régénération", + "optionalRegenerateReason": "(Optionnel) Raison", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb index e766493d6..5f9087e42 100644 --- a/lib/l10n/intl_ga.arb +++ b/lib/l10n/intl_ga.arb @@ -4521,7 +4521,7 @@ "playWithAI": "Imir le AI faoi láthair", "courseStartDesc": "Tá Bot Pangea réidh chun dul am ar bith!\n\n...ach is fearr foghlaim le cairde!", "@@locale": "ga", - "@@last_modified": "2025-12-15 12:09:25.820630", + "@@last_modified": "2025-12-15 13:10:25.578909", "@customReaction": { "type": "String", "placeholders": {} @@ -10689,5 +10689,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Iarr ar athghiniúint", + "optionalRegenerateReason": "(Roghnach) Cúis", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index f5cafdd8d..652d554bc 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -1,6 +1,6 @@ { "@@locale": "gl", - "@@last_modified": "2025-12-15 12:08:05.415824", + "@@last_modified": "2025-12-15 13:09:24.082576", "about": "Acerca de", "@about": { "type": "String", @@ -10688,5 +10688,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Solicitar rexeneración", + "optionalRegenerateReason": "(Opcional) Razón", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb index 8856a1870..029f13d17 100644 --- a/lib/l10n/intl_he.arb +++ b/lib/l10n/intl_he.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:22.241555", + "@@last_modified": "2025-12-15 13:09:36.374126", "about": "אודות", "@about": { "type": "String", @@ -11740,5 +11740,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "בקש חידוש", + "optionalRegenerateReason": "(אופציונלי) סיבה", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb index 8b6c3b54a..e77b9082f 100644 --- a/lib/l10n/intl_hi.arb +++ b/lib/l10n/intl_hi.arb @@ -4487,7 +4487,7 @@ "playWithAI": "अभी के लिए एआई के साथ खेलें", "courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!", "@@locale": "hi", - "@@last_modified": "2025-12-15 12:09:18.418962", + "@@last_modified": "2025-12-15 13:10:19.180543", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11776,5 +11776,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "पुनर्जनन का अनुरोध करें", + "optionalRegenerateReason": "(वैकल्पिक) कारण", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index 965aef341..4f6f2156e 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1,6 +1,6 @@ { "@@locale": "hr", - "@@last_modified": "2025-12-15 12:08:20.497984", + "@@last_modified": "2025-12-15 13:09:35.275706", "about": "Informacije", "@about": { "type": "String", @@ -11063,5 +11063,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Zatraži regeneraciju", + "optionalRegenerateReason": "(Opcionalno) Razlog", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index 8083413ad..d0bb534f9 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -1,6 +1,6 @@ { "@@locale": "hu", - "@@last_modified": "2025-12-15 12:08:12.316889", + "@@last_modified": "2025-12-15 13:09:28.639253", "about": "Névjegy", "@about": { "type": "String", @@ -10692,5 +10692,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Regenerálás kérése", + "optionalRegenerateReason": "(Opcionális) Indok", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb index 525cb0c5d..a22dcf8b1 100644 --- a/lib/l10n/intl_ia.arb +++ b/lib/l10n/intl_ia.arb @@ -1962,7 +1962,7 @@ "playWithAI": "Joca con le IA pro ora", "courseStartDesc": "Pangea Bot es preste a comenzar a qualunque momento!\n\n...ma apprender es melior con amicos!", "@@locale": "ia", - "@@last_modified": "2025-12-15 12:08:23.429617", + "@@last_modified": "2025-12-15 13:09:37.510659", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11769,5 +11769,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Petició de regeneració", + "optionalRegenerateReason": "(Opcional) Motiu", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb index 72e4a10f4..59f6b436f 100644 --- a/lib/l10n/intl_id.arb +++ b/lib/l10n/intl_id.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:14.523338", + "@@last_modified": "2025-12-15 13:09:30.033862", "setAsCanonicalAlias": "Atur sebagai alias utama", "@setAsCanonicalAlias": { "type": "String", @@ -10682,5 +10682,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Permintaan regenerasi", + "optionalRegenerateReason": "(Opsional) Alasan", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb index 81c9b0331..c23aa2216 100644 --- a/lib/l10n/intl_ie.arb +++ b/lib/l10n/intl_ie.arb @@ -4376,7 +4376,7 @@ "playWithAI": "Joca con AI pro ora", "courseStartDesc": "Pangea Bot es preste a partir a qualunque momento!\n\n...ma apprender es melior con amicos!", "@@locale": "ie", - "@@last_modified": "2025-12-15 12:08:18.858371", + "@@last_modified": "2025-12-15 13:09:34.373708", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11665,5 +11665,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "D'iarr athghiniú", + "optionalRegenerateReason": "(Roghnach) Cúis", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 35a9004ef..4520c8720 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:36.478690", + "@@last_modified": "2025-12-15 13:09:46.808373", "about": "Informazioni", "@about": { "type": "String", @@ -10694,5 +10694,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Richiedi rigenerazione", + "optionalRegenerateReason": "(Facoltativo) Motivo", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 15177a618..086bf2767 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,6 +1,6 @@ { "@@locale": "ja", - "@@last_modified": "2025-12-15 12:09:16.362955", + "@@last_modified": "2025-12-15 13:10:17.963932", "about": "このアプリについて", "@about": { "type": "String", @@ -11481,5 +11481,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "再生成をリクエスト", + "optionalRegenerateReason": "(オプション) 理由", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb index 61a95b8a8..e4b9502f8 100644 --- a/lib/l10n/intl_ka.arb +++ b/lib/l10n/intl_ka.arb @@ -2598,7 +2598,7 @@ "playWithAI": "ამ დროისთვის ითამაშეთ AI-თან", "courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!", "@@locale": "ka", - "@@last_modified": "2025-12-15 12:09:23.154694", + "@@last_modified": "2025-12-15 13:10:22.979686", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11721,5 +11721,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "მოთხოვნა რეგენერაციისთვის", + "optionalRegenerateReason": "(Optional) მიზეზი", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb index 5905287da..8cd2805e3 100644 --- a/lib/l10n/intl_ko.arb +++ b/lib/l10n/intl_ko.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:01.209019", + "@@last_modified": "2025-12-15 13:09:21.214976", "about": "소개", "@about": { "type": "String", @@ -10799,5 +10799,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "재생 요청", + "optionalRegenerateReason": "(선택 사항) 이유", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb index 225742bc8..28874b3dd 100644 --- a/lib/l10n/intl_lt.arb +++ b/lib/l10n/intl_lt.arb @@ -3865,7 +3865,7 @@ "playWithAI": "Žaiskite su dirbtiniu intelektu dabar", "courseStartDesc": "Pangea botas pasiruošęs bet kada pradėti!\n\n...bet mokymasis yra geresnis su draugais!", "@@locale": "lt", - "@@last_modified": "2025-12-15 12:08:59.917763", + "@@last_modified": "2025-12-15 13:10:04.199235", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11496,5 +11496,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Prašyti regeneracijos", + "optionalRegenerateReason": "(Pasirinktinai) Priežastis", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb index 7df706525..df7a5f65b 100644 --- a/lib/l10n/intl_lv.arb +++ b/lib/l10n/intl_lv.arb @@ -4486,7 +4486,7 @@ "playWithAI": "Tagad spēlējiet ar AI", "courseStartDesc": "Pangea bots ir gatavs jebkurā laikā!\n\n...bet mācīties ir labāk ar draugiem!", "@@locale": "lv", - "@@last_modified": "2025-12-15 12:08:53.570594", + "@@last_modified": "2025-12-15 13:09:58.402497", "analyticsInactiveTitle": "Pieprasījumi neaktīviem lietotājiem nevar tikt nosūtīti", "analyticsInactiveDesc": "Neaktīvi lietotāji, kuri nav pieteikušies kopš šīs funkcijas ieviešanas, neredzēs jūsu pieprasījumu.\n\nPieprasījuma poga parādīsies, kad viņi atgriezīsies. Jūs varat atkārtoti nosūtīt pieprasījumu vēlāk, noklikšķinot uz pieprasījuma pogas viņu vārdā, kad tā būs pieejama.", "accessRequestedTitle": "Pieprasījums piekļūt analītikai", @@ -10677,5 +10677,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Pieprasīt regenerāciju", + "optionalRegenerateReason": "(Nepieciešams) Iemesls", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index 56b95a58d..b6d59f3fe 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:40.670855", + "@@last_modified": "2025-12-15 13:09:50.414856", "about": "Om", "@about": { "type": "String", @@ -11784,5 +11784,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Be om regenerering", + "optionalRegenerateReason": "(Valgfritt) Årsak", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index b5e8aa808..3016453d3 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:04.003380", + "@@last_modified": "2025-12-15 13:10:08.027282", "about": "Over ons", "@about": { "type": "String", @@ -10691,5 +10691,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Vraag regeneratie aan", + "optionalRegenerateReason": "(Optioneel) Reden", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index f3c9a04d8..0bee96e5e 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,6 @@ { "@@locale": "pl", - "@@last_modified": "2025-12-15 12:09:12.410471", + "@@last_modified": "2025-12-15 13:10:13.564120", "about": "O aplikacji", "@about": { "type": "String", @@ -10689,5 +10689,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Poproś o regenerację", + "optionalRegenerateReason": "(Opcjonalne) Powód", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 6c3182297..3c0bfbaaf 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:27.053836", + "@@last_modified": "2025-12-15 13:09:40.663100", "copiedToClipboard": "Copiada para a área de transferência", "@copiedToClipboard": { "type": "String", @@ -11791,5 +11791,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Solicitar regeneração", + "optionalRegenerateReason": "(Opcional) Motivo", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb index d5a4b2df3..661248021 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:24.622046", + "@@last_modified": "2025-12-15 13:09:38.322859", "about": "Sobre", "@about": { "type": "String", @@ -11049,5 +11049,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Solicitar regeneração", + "optionalRegenerateReason": "(Opcional) Motivo", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_PT.arb b/lib/l10n/intl_pt_PT.arb index 32f8d465f..3a78a477a 100644 --- a/lib/l10n/intl_pt_PT.arb +++ b/lib/l10n/intl_pt_PT.arb @@ -3335,7 +3335,7 @@ "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "@@locale": "pt_PT", - "@@last_modified": "2025-12-15 12:08:45.986778", + "@@last_modified": "2025-12-15 13:09:54.999629", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11720,5 +11720,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Solicitar regeneração", + "optionalRegenerateReason": "(Opcional) Motivo", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 3718b8691..254eb8bf4 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:15.866680", + "@@last_modified": "2025-12-15 13:09:31.920399", "about": "Despre", "@about": { "type": "String", @@ -11426,5 +11426,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Solicita regenerarea", + "optionalRegenerateReason": "(Opțional) Motiv", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index db9aed8de..aeba355a1 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,6 @@ { "@@locale": "ru", - "@@last_modified": "2025-12-15 12:09:21.331850", + "@@last_modified": "2025-12-15 13:10:22.056511", "about": "О проекте", "@about": { "type": "String", @@ -10796,5 +10796,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Запросить регенерацию", + "optionalRegenerateReason": "(Необязательно) Причина", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index fae215437..c99767dab 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,6 +1,6 @@ { "@@locale": "sk", - "@@last_modified": "2025-12-15 12:08:17.592692", + "@@last_modified": "2025-12-15 13:09:33.330473", "about": "O aplikácii", "@about": { "type": "String", @@ -11775,5 +11775,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Požiadať o regeneráciu", + "optionalRegenerateReason": "(Voliteľné) Dôvod", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb index b2f7617a3..f9cd2e6e8 100644 --- a/lib/l10n/intl_sl.arb +++ b/lib/l10n/intl_sl.arb @@ -2468,7 +2468,7 @@ "playWithAI": "Za zdaj igrajte z AI-jem", "courseStartDesc": "Pangea Bot je pripravljen kadarkoli!\n\n...ampak je bolje učiti se s prijatelji!", "@@locale": "sl", - "@@last_modified": "2025-12-15 12:08:33.099168", + "@@last_modified": "2025-12-15 13:09:44.475627", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11772,5 +11772,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Zahtevaj regeneracijo", + "optionalRegenerateReason": "(Neobvezno) Razlog", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb index 1fa082ddf..91754f5d2 100644 --- a/lib/l10n/intl_sr.arb +++ b/lib/l10n/intl_sr.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:24.388934", + "@@last_modified": "2025-12-15 13:10:24.291700", "about": "О програму", "@about": { "type": "String", @@ -11793,5 +11793,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Zatraži regeneraciju", + "optionalRegenerateReason": "(Opcionalno) Razlog", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index a27cb4786..321777fca 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:13.720212", + "@@last_modified": "2025-12-15 13:10:15.788663", "about": "Om", "@about": { "type": "String", @@ -11169,5 +11169,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Begär regenerering", + "optionalRegenerateReason": "(Valfritt) Orsak", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb index acd8ab55c..0c0edc2cc 100644 --- a/lib/l10n/intl_ta.arb +++ b/lib/l10n/intl_ta.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:02.883580", + "@@last_modified": "2025-12-15 13:10:06.701558", "acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது", "@acceptedTheInvitation": { "type": "String", @@ -10915,5 +10915,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "மறுசீரமைப்பை கோருங்கள்", + "optionalRegenerateReason": "(விருப்பம்) காரணம்", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb index e52bac0f8..059e9c2d0 100644 --- a/lib/l10n/intl_te.arb +++ b/lib/l10n/intl_te.arb @@ -1924,7 +1924,7 @@ "playWithAI": "ఇప్పుడే AI తో ఆడండి", "courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!", "@@locale": "te", - "@@last_modified": "2025-12-15 12:08:58.244462", + "@@last_modified": "2025-12-15 13:10:02.606443", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -11780,5 +11780,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "పునఃసృష్టి అభ్యర్థించండి", + "optionalRegenerateReason": "(ఐచ్ఛికం) కారణం", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb index 125207a35..513a43693 100644 --- a/lib/l10n/intl_th.arb +++ b/lib/l10n/intl_th.arb @@ -4460,7 +4460,7 @@ "playWithAI": "เล่นกับ AI ชั่วคราว", "courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!", "@@locale": "th", - "@@last_modified": "2025-12-15 12:08:44.865189", + "@@last_modified": "2025-12-15 13:09:53.958347", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11749,5 +11749,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "ขอการสร้างใหม่", + "optionalRegenerateReason": "(ไม่บังคับ) เหตุผล", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index 7a4d144da..daec1c5db 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -1,6 +1,6 @@ { "@@locale": "tr", - "@@last_modified": "2025-12-15 12:08:56.126544", + "@@last_modified": "2025-12-15 13:10:01.271793", "about": "Hakkında", "@about": { "type": "String", @@ -10913,5 +10913,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Yeniden oluşturma talep et", + "optionalRegenerateReason": "(Opsiyonel) Sebep", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index f2d5aa153..e107f7b2c 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -1,6 +1,6 @@ { "@@locale": "uk", - "@@last_modified": "2025-12-15 12:08:37.892592", + "@@last_modified": "2025-12-15 13:09:47.980810", "about": "Про застосунок", "@about": { "type": "String", @@ -10685,5 +10685,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Запит на регенерацію", + "optionalRegenerateReason": "(Необов'язково) Причина", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index 640ce2845..7987f97fd 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:09:01.141337", + "@@last_modified": "2025-12-15 13:10:05.261556", "about": "Giới thiệu", "@about": { "type": "String", @@ -6261,5 +6261,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "Yêu cầu tái tạo", + "optionalRegenerateReason": "(Tùy chọn) Lý do", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_yue.arb b/lib/l10n/intl_yue.arb index de36ffb7e..b639316ac 100644 --- a/lib/l10n/intl_yue.arb +++ b/lib/l10n/intl_yue.arb @@ -1860,7 +1860,7 @@ "selectAll": "全選", "deselectAll": "取消全選", "@@locale": "yue", - "@@last_modified": "2025-12-15 12:08:35.097898", + "@@last_modified": "2025-12-15 13:09:45.810126", "@ignoreUser": { "type": "String", "placeholders": {} @@ -11782,5 +11782,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "請求再生", + "optionalRegenerateReason": "(可選) 原因", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 15c5e8e75..3b9963992 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -1,6 +1,6 @@ { "@@locale": "zh", - "@@last_modified": "2025-12-15 12:09:06.977362", + "@@last_modified": "2025-12-15 13:10:10.038504", "about": "关于", "@about": { "type": "String", @@ -10682,5 +10682,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "请求再生", + "optionalRegenerateReason": "(可选) 原因", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb index 2310270d6..a8b04622b 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15 12:08:47.738143", + "@@last_modified": "2025-12-15 13:09:56.043510", "about": "關於", "@about": { "type": "String", @@ -10689,5 +10689,15 @@ "@vocabEmoji": { "type": "String", "placeholders": {} + }, + "requestRegeneration": "請求再生", + "optionalRegenerateReason": "(選填) 原因", + "@requestRegeneration": { + "type": "String", + "placeholders": {} + }, + "@optionalRegenerateReason": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 50b8e797e..10f4f194f 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -50,6 +50,7 @@ import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/common/utils/firebase_analytics.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; +import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/events/extensions/pangea_event_extension.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; @@ -1960,6 +1961,16 @@ class ChatController extends State ) ?.eventId; + String? get refreshEventID => timeline!.events + .firstWhereOrNull( + (event) => + event.isVisibleInGui && + event.senderId != room.client.userID && + event.senderId == BotName.byEnvironment && + !event.redacted, + ) + ?.eventId; + final StreamController showToolbarStream = StreamController.broadcast(); @@ -2336,6 +2347,33 @@ class ChatController extends State parentSpaceId != null ? '/rooms/spaces/$parentSpaceId' : '/rooms', ); } + + Future requestRegeneration(String eventId) async { + final reason = await showTextInputDialog( + context: context, + title: L10n.of(context).requestRegeneration, + hintText: L10n.of(context).optionalRegenerateReason, + autoSubmit: true, + maxLines: 5, + ); + + if (reason == null) return; + await showFutureLoadingDialog( + context: context, + future: () => room.sendEvent( + { + "m.relates_to": { + "rel_type": PangeaEventTypes.regenerationRequest, + "event_id": eventId, + }, + PangeaEventTypes.regenerationRequest: { + "reason": reason, + }, + }, + type: PangeaEventTypes.regenerationRequest, + ), + ); + } // Pangea# late final ValueNotifier _displayChatDetailsColumn; diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart index 8f806f725..4fa2a92a3 100644 --- a/lib/pages/chat/chat_event_list.dart +++ b/lib/pages/chat/chat_event_list.dart @@ -167,6 +167,7 @@ class ChatEventList extends StatelessWidget { // #Pangea controller: controller, isButton: event.eventId == controller.buttonEventID, + canRefresh: event.eventId == controller.refreshEventID, // Pangea# selected: controller.selectedEvents .any((e) => e.eventId == event.eventId), diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 4dd9ee40f..11e1d6f11 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -52,6 +52,7 @@ class Message extends StatelessWidget { // #Pangea final ChatController controller; final bool isButton; + final bool canRefresh; // Pangea# const Message( @@ -78,6 +79,7 @@ class Message extends StatelessWidget { // #Pangea required this.controller, this.isButton = false, + this.canRefresh = false, // Pangea# super.key, }); @@ -1034,6 +1036,19 @@ class Message extends StatelessWidget { ], ), ), + if (canRefresh) + Padding( + padding: const EdgeInsets.all(16.0), + child: IconButton( + tooltip: L10n.of(context) + .requestRegeneration, + icon: const Icon( + Icons.refresh_outlined, + ), + onPressed: () => controller + .requestRegeneration(event.eventId), + ), + ), ], ), ], diff --git a/lib/pangea/events/constants/pangea_event_types.dart b/lib/pangea/events/constants/pangea_event_types.dart index 53cc39763..bf5570f52 100644 --- a/lib/pangea/events/constants/pangea_event_types.dart +++ b/lib/pangea/events/constants/pangea_event_types.dart @@ -56,4 +56,6 @@ class PangeaEventTypes { static const courseChatList = "pangea.course_chat_list"; static const analyticsSettings = "pangea.analytics_settings"; + + static const regenerationRequest = "pangea.regeneration_request"; }