From d51257179294a957ff2f53d2148693e5437d2847 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:33:35 -0500 Subject: [PATCH] feat: allow users to update bot's voice settings (#5119) --- lib/l10n/intl_ar.arb | 87 +++++++- lib/l10n/intl_be.arb | 87 +++++++- lib/l10n/intl_bn.arb | 87 +++++++- lib/l10n/intl_bo.arb | 87 +++++++- lib/l10n/intl_ca.arb | 87 +++++++- lib/l10n/intl_cs.arb | 87 +++++++- lib/l10n/intl_da.arb | 87 +++++++- lib/l10n/intl_de.arb | 87 +++++++- lib/l10n/intl_el.arb | 87 +++++++- lib/l10n/intl_en.arb | 6 +- lib/l10n/intl_eo.arb | 87 +++++++- lib/l10n/intl_es.arb | 87 +++++++- lib/l10n/intl_et.arb | 87 +++++++- lib/l10n/intl_eu.arb | 87 +++++++- lib/l10n/intl_fa.arb | 87 +++++++- lib/l10n/intl_fi.arb | 87 +++++++- lib/l10n/intl_fil.arb | 87 +++++++- lib/l10n/intl_fr.arb | 87 +++++++- lib/l10n/intl_ga.arb | 87 +++++++- lib/l10n/intl_gl.arb | 87 +++++++- lib/l10n/intl_he.arb | 87 +++++++- lib/l10n/intl_hi.arb | 87 +++++++- lib/l10n/intl_hr.arb | 87 +++++++- lib/l10n/intl_hu.arb | 87 +++++++- lib/l10n/intl_ia.arb | 87 +++++++- lib/l10n/intl_id.arb | 87 +++++++- lib/l10n/intl_ie.arb | 87 +++++++- lib/l10n/intl_it.arb | 87 +++++++- lib/l10n/intl_ja.arb | 87 +++++++- lib/l10n/intl_ka.arb | 87 +++++++- lib/l10n/intl_ko.arb | 87 +++++++- lib/l10n/intl_lt.arb | 87 +++++++- lib/l10n/intl_lv.arb | 87 +++++++- lib/l10n/intl_nb.arb | 87 +++++++- lib/l10n/intl_nl.arb | 87 +++++++- lib/l10n/intl_pl.arb | 87 +++++++- lib/l10n/intl_pt.arb | 87 +++++++- lib/l10n/intl_pt_BR.arb | 87 +++++++- lib/l10n/intl_pt_PT.arb | 87 +++++++- lib/l10n/intl_ro.arb | 87 +++++++- lib/l10n/intl_ru.arb | 87 +++++++- lib/l10n/intl_sk.arb | 87 +++++++- lib/l10n/intl_sl.arb | 87 +++++++- lib/l10n/intl_sr.arb | 87 +++++++- lib/l10n/intl_sv.arb | 87 +++++++- lib/l10n/intl_ta.arb | 87 +++++++- lib/l10n/intl_te.arb | 87 +++++++- lib/l10n/intl_th.arb | 87 +++++++- lib/l10n/intl_tr.arb | 87 +++++++- lib/l10n/intl_uk.arb | 87 +++++++- lib/l10n/intl_vi.arb | 87 +++++++- lib/l10n/intl_yue.arb | 87 +++++++- lib/l10n/intl_zh.arb | 87 +++++++- lib/l10n/intl_zh_Hant.arb | 87 +++++++- lib/pages/chat/events/message.dart | 17 ++ .../activity_participant_indicator.dart | 13 ++ .../activity_participant_list.dart | 4 +- .../activity_user_summaries_widget.dart | 1 + .../bot/widgets/bot_chat_settings_dialog.dart | 194 ++++++++++++++++++ .../widgets/bot_settings_language_icon.dart | 52 +++++ .../pages/room_participants_widget.dart | 1 + .../widgets/language_level_dropdown.dart | 1 + .../event_wrappers/pangea_message_event.dart | 2 + lib/pangea/languages/language_model.dart | 4 + .../p_language_dropdown.dart | 6 +- .../text_to_speech_request_model.dart | 8 +- .../message_practice/message_audio_card.dart | 2 + .../select_mode_controller.dart | 2 + lib/widgets/avatar.dart | 10 +- .../member_actions_popup_menu_button.dart | 22 ++ 70 files changed, 4896 insertions(+), 60 deletions(-) create mode 100644 lib/pangea/bot/widgets/bot_chat_settings_dialog.dart create mode 100644 lib/pangea/bot/widgets/bot_settings_language_icon.dart diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index c71d4f82c..37cbcb133 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -1,6 +1,6 @@ { "@@locale": "ar", - "@@last_modified": "2026-01-06 13:02:07.966839", + "@@last_modified": "2026-01-07 14:27:10.974178", "about": "حول", "@about": { "type": "String", @@ -10957,5 +10957,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "ممارسة تعريف المفردات الصحيحة", + "constructUseIncLMDesc": "ممارسة تعريف المفردات غير الصحيحة", + "constructUseCorLADesc": "ممارسة الصوت للمفردات الصحيحة", + "constructUseIncLADesc": "ممارسة الصوت للمفردات غير الصحيحة", + "constructUseBonus": "مكافأة أثناء ممارسة المفردات", + "practiceVocab": "ممارسة المفردات", + "selectMeaning": "اختر المعنى", + "selectAudio": "اختر الصوت المطابق", + "congratulations": "مبروك!", + "anotherRound": "جولة أخرى", + "noActivityRequest": "لا يوجد طلب نشاط حالي.", + "quit": "خروج", + "congratulationsYouveCompletedPractice": "تهانينا! لقد أكملت جلسة التدريب.", + "mustHave10Words": "يجب أن يكون لديك على الأقل 10 كلمات مفردات لممارستها. حاول التحدث إلى صديق أو بوت بانجيا لاكتشاف المزيد!", + "botSettings": "إعدادات البوت", + "activitySettingsOverrideWarning": "اللغة ومستوى اللغة محددان بواسطة خطة النشاط", + "voice": "صوت", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb index 5bd6f5ac8..8f328151c 100644 --- a/lib/l10n/intl_be.arb +++ b/lib/l10n/intl_be.arb @@ -1911,7 +1911,7 @@ "playWithAI": "Пакуль гуляйце з ШІ", "courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!", "@@locale": "be", - "@@last_modified": "2026-01-06 13:01:53.730932", + "@@last_modified": "2026-01-07 14:26:19.740329", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11839,5 +11839,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Правільная практыка вызначэння слоўнікавага запасу", + "constructUseIncLMDesc": "Неправільная практыка вызначэння слоўнікавага запасу", + "constructUseCorLADesc": "Правільная практыка аўдыё слоўнікавага запасу", + "constructUseIncLADesc": "Неправільная практыка аўдыё слоўнікавага запасу", + "constructUseBonus": "Бонус падчас практыкі слоўнікавага запасу", + "practiceVocab": "Практыкаваць слоўнік", + "selectMeaning": "Выберыце значэнне", + "selectAudio": "Выберыце адпаведнае аўдыё", + "congratulations": "Сардэчна віншуем!", + "anotherRound": "Яшчэ адзін раунд", + "noActivityRequest": "Няма бягучага запыту на актыўнасць.", + "quit": "Выйсці", + "congratulationsYouveCompletedPractice": "Сардэчна віншуем! Вы завяршылі сесію практыкі.", + "mustHave10Words": "Вы павінны мець не менш за 10 слоў для практыкавання. Паспрабуйце пагаварыць з сябрам або Pangea Bot, каб даведацца больш!", + "botSettings": "Налады бота", + "activitySettingsOverrideWarning": "Мова і ўзровень мовы вызначаюцца планам актыўнасці", + "voice": "Голас", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb index 52a3ffdfe..0c4ceee1b 100644 --- a/lib/l10n/intl_bn.arb +++ b/lib/l10n/intl_bn.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:28.649450", + "@@last_modified": "2026-01-07 14:28:06.931186", "about": "সম্পর্কে", "@about": { "type": "String", @@ -11844,5 +11844,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "সঠিক শব্দভাণ্ডার সংজ্ঞা অনুশীলন", + "constructUseIncLMDesc": "ভুল শব্দভাণ্ডার সংজ্ঞা অনুশীলন", + "constructUseCorLADesc": "সঠিক শব্দভাণ্ডার অডিও অনুশীলন", + "constructUseIncLADesc": "ভুল শব্দভাণ্ডার অডিও অনুশীলন", + "constructUseBonus": "শব্দভাণ্ডার অনুশীলনের সময় বোনাস", + "practiceVocab": "শব্দভাণ্ডার অনুশীলন", + "selectMeaning": "অর্থ নির্বাচন করুন", + "selectAudio": "মিলানো অডিও নির্বাচন করুন", + "congratulations": "অভিনন্দন!", + "anotherRound": "আরেকটি রাউন্ড", + "noActivityRequest": "বর্তমান কোন কার্যকলাপের অনুরোধ নেই।", + "quit": "বিরতি", + "congratulationsYouveCompletedPractice": "অভিনন্দন! আপনি অনুশীলন সেশন সম্পন্ন করেছেন।", + "mustHave10Words": "আপনার অনুশীলনের জন্য অন্তত 10টি শব্দ থাকতে হবে। আরও জানার জন্য একটি বন্ধুর সাথে কথা বলুন বা Pangea Bot এর সাথে কথা বলুন!", + "botSettings": "বট সেটিংস", + "activitySettingsOverrideWarning": "কার্যকলাপ পরিকল্পনার দ্বারা নির্ধারিত ভাষা এবং ভাষার স্তর", + "voice": "কণ্ঠ", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb index fab9cf1aa..6bb73e24c 100644 --- a/lib/l10n/intl_bo.arb +++ b/lib/l10n/intl_bo.arb @@ -4279,7 +4279,7 @@ "joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།", "startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།", "@@locale": "bo", - "@@last_modified": "2026-01-06 13:02:23.320520", + "@@last_modified": "2026-01-07 14:27:54.438001", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -10494,5 +10494,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Korekt vokab definicij praksi", + "constructUseIncLMDesc": "Nekorekt vokab definicij praksi", + "constructUseCorLADesc": "Korekt vokab audio praksi", + "constructUseIncLADesc": "Nekorekt vokab audio praksi", + "constructUseBonus": "Bonus tokom vokab prakse", + "practiceVocab": "Vežbaj vokabular", + "selectMeaning": "Izaberi značenje", + "selectAudio": "Izaberi odgovarajući audio", + "congratulations": "Čestitamo!", + "anotherRound": "Još jedan krug", + "noActivityRequest": "Ninguna solicitud de actividad actual.", + "quit": "Salir", + "congratulationsYouveCompletedPractice": "¡Felicidades! Has completado la sesión de práctica.", + "mustHave10Words": "Debes tener al menos 10 palabras de vocabulario para practicarlas. ¡Intenta hablar con un amigo o con Pangea Bot para descubrir más!", + "botSettings": "Configuraciones del Bot", + "activitySettingsOverrideWarning": "Idioma y nivel de idioma determinados por el plan de actividad", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb index 9026e25af..0291e8daf 100644 --- a/lib/l10n/intl_ca.arb +++ b/lib/l10n/intl_ca.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:55.665527", + "@@last_modified": "2026-01-07 14:26:27.395689", "about": "Quant a", "@about": { "type": "String", @@ -10764,5 +10764,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Pràctica correcta de definicions de vocabulari", + "constructUseIncLMDesc": "Pràctica incorrecta de definicions de vocabulari", + "constructUseCorLADesc": "Pràctica correcta d'àudio de vocabulari", + "constructUseIncLADesc": "Pràctica incorrecta d'àudio de vocabulari", + "constructUseBonus": "Boni durant la pràctica de vocabulari", + "practiceVocab": "Practica vocabulari", + "selectMeaning": "Selecciona el significat", + "selectAudio": "Selecciona l'àudio corresponent", + "congratulations": "Felicitats!", + "anotherRound": "Una altra ronda", + "noActivityRequest": "No hi ha cap sol·licitud d'activitat actual.", + "quit": "Sortir", + "congratulationsYouveCompletedPractice": "Felicitats! Has completat la sessió de pràctica.", + "mustHave10Words": "Has de tenir almenys 10 paraules de vocabulari per practicar-les. Prova a parlar amb un amic o amb el Pangea Bot per descobrir-ne més!", + "botSettings": "Configuració del Bot", + "activitySettingsOverrideWarning": "Idioma i nivell d'idioma determinats pel pla d'activitat", + "voice": "Veu", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index 853e56cb6..ca1035047 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,6 +1,6 @@ { "@@locale": "cs", - "@@last_modified": "2026-01-06 13:01:46.866113", + "@@last_modified": "2026-01-07 14:26:03.848423", "about": "O aplikaci", "@about": { "type": "String", @@ -11347,5 +11347,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Správná praxe definice slovní zásoby", + "constructUseIncLMDesc": "Nesprávná praxe definice slovní zásoby", + "constructUseCorLADesc": "Správná praxe audio slovní zásoby", + "constructUseIncLADesc": "Nesprávná praxe audio slovní zásoby", + "constructUseBonus": "Bonus během praxe slovní zásoby", + "practiceVocab": "Procvičování slovní zásoby", + "selectMeaning": "Vyberte význam", + "selectAudio": "Vyberte odpovídající audio", + "congratulations": "Gratulujeme!", + "anotherRound": "Další kolo", + "noActivityRequest": "Žádná aktuální žádost o aktivitu.", + "quit": "Ukončit", + "congratulationsYouveCompletedPractice": "Gratulujeme! Dokončili jste cvičební sezení.", + "mustHave10Words": "Musíte mít alespoň 10 slovní zásoby, abyste je mohli procvičovat. Zkuste si promluvit s přítelem nebo Pangea Botem, abyste objevili více!", + "botSettings": "Nastavení bota", + "activitySettingsOverrideWarning": "Jazyk a jazyková úroveň určené plánem aktivity", + "voice": "Hlas", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 03b51e366..512ab67cf 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -1930,7 +1930,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": "2026-01-06 13:01:06.115252", + "@@last_modified": "2026-01-07 14:23:47.042043", "@aboutHomeserver": { "type": "String", "placeholders": { @@ -11801,5 +11801,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Korrekt orddefinition praksis", + "constructUseIncLMDesc": "Forkert orddefinition praksis", + "constructUseCorLADesc": "Korrekt ordlyd praksis", + "constructUseIncLADesc": "Forkert ordlyd praksis", + "constructUseBonus": "Bonus under ordpraksis", + "practiceVocab": "Øv ordforråd", + "selectMeaning": "Vælg betydningen", + "selectAudio": "Vælg den matchende lyd", + "congratulations": "Tillykke!", + "anotherRound": "En runde mere", + "noActivityRequest": "Ingen aktuelle aktivitetsanmodning.", + "quit": "Afslut", + "congratulationsYouveCompletedPractice": "Tillykke! Du har gennemført øvelsessessionen.", + "mustHave10Words": "Du skal have mindst 10 ordforrådsord for at øve dem. Prøv at tale med en ven eller Pangea Bot for at opdage mere!", + "botSettings": "Botindstillinger", + "activitySettingsOverrideWarning": "Sprog og sprogniveau bestemt af aktivitetsplan", + "voice": "Stemme", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 935e22f63..63d7c56b2 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "@@last_modified": "2026-01-06 13:01:34.264308", + "@@last_modified": "2026-01-07 14:25:24.418870", "alwaysUse24HourFormat": "true", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." @@ -10747,5 +10747,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Korrekte Vokabeldefinitionsübung", + "constructUseIncLMDesc": "Falsche Vokabeldefinitionsübung", + "constructUseCorLADesc": "Korrekte Vokabelaudioübung", + "constructUseIncLADesc": "Falsche Vokabelaudioübung", + "constructUseBonus": "Bonus während der Vokabelübung", + "practiceVocab": "Vokabeln üben", + "selectMeaning": "Wähle die Bedeutung", + "selectAudio": "Wähle das passende Audio", + "congratulations": "Herzlichen Glückwunsch!", + "anotherRound": "Eine weitere Runde", + "noActivityRequest": "Keine aktuellen Aktivitätsanfragen.", + "quit": "Beenden", + "congratulationsYouveCompletedPractice": "Herzlichen Glückwunsch! Sie haben die Übungssitzung abgeschlossen.", + "mustHave10Words": "Sie müssen mindestens 10 Vokabeln haben, um sie zu üben. Versuchen Sie, mit einem Freund oder dem Pangea Bot zu sprechen, um mehr zu entdecken!", + "botSettings": "Bot-Einstellungen", + "activitySettingsOverrideWarning": "Sprache und Sprachniveau werden durch den Aktivitätsplan bestimmt", + "voice": "Stimme", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index 11966251c..a8651b345 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -4456,7 +4456,7 @@ "playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν", "courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!", "@@locale": "el", - "@@last_modified": "2026-01-06 13:02:36.159093", + "@@last_modified": "2026-01-07 14:28:33.144714", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11798,5 +11798,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Διόρθωση πρακτικής ορισμού λεξιλογίου", + "constructUseIncLMDesc": "Λάθος πρακτική ορισμού λεξιλογίου", + "constructUseCorLADesc": "Διόρθωση πρακτικής ήχου λεξιλογίου", + "constructUseIncLADesc": "Λάθος πρακτική ήχου λεξιλογίου", + "constructUseBonus": "Μπόνους κατά τη διάρκεια της πρακτικής λεξιλογίου", + "practiceVocab": "Πρακτική λεξιλογίου", + "selectMeaning": "Επιλέξτε την έννοια", + "selectAudio": "Επιλέξτε τον αντίστοιχο ήχο", + "congratulations": "Συγχαρητήρια!", + "anotherRound": "Μια ακόμη γύρος", + "noActivityRequest": "Δεν υπάρχει τρέχουσα αίτηση δραστηριότητας.", + "quit": "Έξοδος", + "congratulationsYouveCompletedPractice": "Συγχαρητήρια! Έχετε ολοκληρώσει την πρακτική συνεδρία.", + "mustHave10Words": "Πρέπει να έχετε τουλάχιστον 10 λέξεις λεξιλογίου για να τις εξασκήσετε. Δοκιμάστε να μιλήσετε με έναν φίλο ή με τον Pangea Bot για να ανακαλύψετε περισσότερα!", + "botSettings": "Ρυθμίσεις Bot", + "activitySettingsOverrideWarning": "Η γλώσσα και το επίπεδο γλώσσας καθορίζονται από το σχέδιο δραστηριότητας", + "voice": "Φωνή", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 0568a011a..7cdbd28e1 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -5040,6 +5040,8 @@ "inOngoingActivity": "You have an ongoing activity!", "activitiesToUnlockTopicTitle": "Activities to Unlock Next Topic", "activitiesToUnlockTopicDesc": "Set the number of activities to unlock the next course topic", - "mustHave10Words" : "You must have at least 10 vocab words to practice them. Try talking to a friend or Pangea Bot to discover more!" - + "mustHave10Words" : "You must have at least 10 vocab words to practice them. Try talking to a friend or Pangea Bot to discover more!", + "botSettings": "Bot Settings", + "activitySettingsOverrideWarning": "Language and language level determined by activity plan", + "voice": "Voice" } diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb index 2723baaa3..3776e3eb4 100644 --- a/lib/l10n/intl_eo.arb +++ b/lib/l10n/intl_eo.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:41.310107", + "@@last_modified": "2026-01-07 14:28:53.013525", "about": "Prio", "@about": { "type": "String", @@ -11829,5 +11829,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Ĝusta vortaro difino praktiko", + "constructUseIncLMDesc": "Malĝusta vortaro difino praktiko", + "constructUseCorLADesc": "Ĝusta vortaro aŭdio praktiko", + "constructUseIncLADesc": "Malĝusta vortaro aŭdio praktiko", + "constructUseBonus": "Bonus dum vortaro praktiko", + "practiceVocab": "Praktiku vortaron", + "selectMeaning": "Elektu la signifon", + "selectAudio": "Elektu la kongruan aŭdion", + "congratulations": "Gratulon!", + "anotherRound": "Alia rundo", + "noActivityRequest": "Neniu aktuala aktivitecpeticio.", + "quit": "Eliri", + "congratulationsYouveCompletedPractice": "Gratulojn! Vi kompletigis la praktikadon.", + "mustHave10Words": "Vi devas havi almenaŭ 10 vortojn por praktiki ilin. Provu paroli kun amiko aŭ Pangea Bot por malkovri pli!", + "botSettings": "Botaj Agordoj", + "activitySettingsOverrideWarning": "Lingvo kaj lingvonivelo determinita de la aktiviteca plano", + "voice": "Voĉo", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index de9e066c9..b170a1e28 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,6 @@ { "@@locale": "es", - "@@last_modified": "2026-01-06 13:00:57.006469", + "@@last_modified": "2026-01-07 14:23:22.356161", "about": "Acerca de", "@about": { "type": "String", @@ -7974,5 +7974,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Práctica de definición de vocabulario correcta", + "constructUseIncLMDesc": "Práctica de definición de vocabulario incorrecta", + "constructUseCorLADesc": "Práctica de audio de vocabulario correcta", + "constructUseIncLADesc": "Práctica de audio de vocabulario incorrecta", + "constructUseBonus": "Bonificación durante la práctica de vocabulario", + "practiceVocab": "Practicar vocabulario", + "selectMeaning": "Seleccionar el significado", + "selectAudio": "Seleccionar el audio correspondiente", + "congratulations": "¡Felicidades!", + "anotherRound": "Otra ronda", + "noActivityRequest": "No hay solicitudes de actividad actuales.", + "quit": "Salir", + "congratulationsYouveCompletedPractice": "¡Felicidades! Has completado la sesión de práctica.", + "mustHave10Words": "Debes tener al menos 10 palabras de vocabulario para practicarlas. ¡Intenta hablar con un amigo o con Pangea Bot para descubrir más!", + "botSettings": "Configuración del Bot", + "activitySettingsOverrideWarning": "Idioma y nivel de idioma determinados por el plan de actividad", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb index 1beabb712..5eb052ca0 100644 --- a/lib/l10n/intl_et.arb +++ b/lib/l10n/intl_et.arb @@ -1,6 +1,6 @@ { "@@locale": "et", - "@@last_modified": "2026-01-06 13:01:32.507692", + "@@last_modified": "2026-01-07 14:25:18.173924", "about": "Rakenduse teave", "@about": { "type": "String", @@ -11011,5 +11011,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Õige sõnavara määratlemise harjutus", + "constructUseIncLMDesc": "Vale sõnavara määratlemise harjutus", + "constructUseCorLADesc": "Õige sõnavara heliharjutus", + "constructUseIncLADesc": "Vale sõnavara heliharjutus", + "constructUseBonus": "Boonus sõnavara harjutamise ajal", + "practiceVocab": "Harjuta sõnavara", + "selectMeaning": "Vali tähendus", + "selectAudio": "Vali sobiv heli", + "congratulations": "Palju õnne!", + "anotherRound": "Veel üks voor", + "noActivityRequest": "Praegu ei ole aktiivsuse taotlust.", + "quit": "Välju", + "congratulationsYouveCompletedPractice": "Palju õnne! Olete lõpetanud harjut seansi.", + "mustHave10Words": "Te peate omama vähemalt 10 sõnavara sõna, et neid harjutada. Proovige rääkida sõbraga või Pangea Botiga, et rohkem avastada!", + "botSettings": "Boti seaded", + "activitySettingsOverrideWarning": "Keele ja keele taseme määrab tegevusplaan", + "voice": "Hääl", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb index 355606a9f..80f3ffc6e 100644 --- a/lib/l10n/intl_eu.arb +++ b/lib/l10n/intl_eu.arb @@ -1,6 +1,6 @@ { "@@locale": "eu", - "@@last_modified": "2026-01-06 13:01:29.144037", + "@@last_modified": "2026-01-07 14:25:02.696896", "about": "Honi buruz", "@about": { "type": "String", @@ -10740,5 +10740,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Hitz-baliabideen definizio zuzena praktika", + "constructUseIncLMDesc": "Hitz-baliabideen definizio okerra praktika", + "constructUseCorLADesc": "Hitz-baliabideen audio zuzena praktika", + "constructUseIncLADesc": "Hitz-baliabideen audio okerra praktika", + "constructUseBonus": "Bonus hitz-baliabideen praktikaren bitartean", + "practiceVocab": "Praktikatu hiztegia", + "selectMeaning": "Aukeratu esanahia", + "selectAudio": "Aukeratu audio egokia", + "congratulations": "Zorionak!", + "anotherRound": "Beste txanda bat", + "noActivityRequest": "Ez dago egungo jarduera eskaerarik.", + "quit": "Irten", + "congratulationsYouveCompletedPractice": "Zorionak! Praktika saioa amaitu duzu.", + "mustHave10Words": "Gutxienez 10 hiztegi hitz izan behar dituzu praktikan jartzeko. Saiatu lagun batekin edo Pangea Bot-ekin hitz egiten gehiago ezagutzeko!", + "botSettings": "Botaren Ezarpenak", + "activitySettingsOverrideWarning": "Jarduera planak zehaztutako hizkuntza eta hizkuntza maila", + "voice": "Ahots", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb index 71bae0880..e82c668ba 100644 --- a/lib/l10n/intl_fa.arb +++ b/lib/l10n/intl_fa.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:30.390244", + "@@last_modified": "2026-01-07 14:28:12.371773", "repeatPassword": "تکرار رمزعبور", "@repeatPassword": {}, "about": "درباره", @@ -11472,5 +11472,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "تمرین تعریف واژه صحیح", + "constructUseIncLMDesc": "تمرین تعریف واژه نادرست", + "constructUseCorLADesc": "تمرین صوتی واژه صحیح", + "constructUseIncLADesc": "تمرین صوتی واژه نادرست", + "constructUseBonus": "پاداش در حین تمرین واژه", + "practiceVocab": "تمرین واژگان", + "selectMeaning": "معنی را انتخاب کنید", + "selectAudio": "صوت مطابقتی را انتخاب کنید", + "congratulations": "تبریک می‌گویم!", + "anotherRound": "یک دور دیگر", + "noActivityRequest": "درخواست فعالیت فعلی وجود ندارد.", + "quit": "خروج", + "congratulationsYouveCompletedPractice": "تبریک! شما جلسه تمرین را کامل کرده‌اید.", + "mustHave10Words": "شما باید حداقل 10 کلمه واژگان برای تمرین داشته باشید. سعی کنید با یک دوست یا ربات پانژیا صحبت کنید تا بیشتر کشف کنید!", + "botSettings": "تنظیمات ربات", + "activitySettingsOverrideWarning": "زبان و سطح زبان تعیین شده توسط برنامه فعالیت", + "voice": "صدا", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb index b68a81a29..95155473a 100644 --- a/lib/l10n/intl_fi.arb +++ b/lib/l10n/intl_fi.arb @@ -4009,7 +4009,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": "2026-01-06 13:01:04.204663", + "@@last_modified": "2026-01-07 14:23:39.963677", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11363,5 +11363,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Oikea sanaston määritelmän harjoittelu", + "constructUseIncLMDesc": "Väärä sanaston määritelmän harjoittelu", + "constructUseCorLADesc": "Oikea sanaston ääniharjoittelu", + "constructUseIncLADesc": "Väärä sanaston ääniharjoittelu", + "constructUseBonus": "Bonus sanaharjoittelun aikana", + "practiceVocab": "Harjoittele sanastoa", + "selectMeaning": "Valitse merkitys", + "selectAudio": "Valitse vastaava ääni", + "congratulations": "Onnittelut!", + "anotherRound": "Toinen kierros", + "noActivityRequest": "Ei nykyistä aktiviteettipyyntöä.", + "quit": "Poistu", + "congratulationsYouveCompletedPractice": "Onnittelut! Olet suorittanut harjoitussession.", + "mustHave10Words": "Sinulla on oltava vähintään 10 sanastoa harjoiteltavaksi. Yritä puhua ystävän tai Pangea Botin kanssa löytääksesi lisää!", + "botSettings": "Bottiasetukset", + "activitySettingsOverrideWarning": "Kieli ja kielitaso määräytyvät aktiviteettisuunnitelman mukaan", + "voice": "Ääni", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb index 1dce7c4d1..f70476b4e 100644 --- a/lib/l10n/intl_fil.arb +++ b/lib/l10n/intl_fil.arb @@ -2787,7 +2787,7 @@ "selectAll": "Piliin lahat", "deselectAll": "Huwag piliin lahat", "@@locale": "fil", - "@@last_modified": "2026-01-06 13:02:03.027217", + "@@last_modified": "2026-01-07 14:26:57.612933", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -11716,5 +11716,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Tamang pagsasanay sa kahulugan ng bokabularyo", + "constructUseIncLMDesc": "Maling pagsasanay sa kahulugan ng bokabularyo", + "constructUseCorLADesc": "Tamang pagsasanay sa audio ng bokabularyo", + "constructUseIncLADesc": "Maling pagsasanay sa audio ng bokabularyo", + "constructUseBonus": "Bonus sa panahon ng pagsasanay sa bokabularyo", + "practiceVocab": "Magsanay ng bokabularyo", + "selectMeaning": "Pumili ng kahulugan", + "selectAudio": "Pumili ng katugmang audio", + "congratulations": "Binabati kita!", + "anotherRound": "Isa pang round", + "noActivityRequest": "Walang kasalukuyang kahilingan sa aktibidad.", + "quit": "Lumabas", + "congratulationsYouveCompletedPractice": "Binabati kita! Natapos mo na ang sesyon ng pagsasanay.", + "mustHave10Words": "Dapat mayroon kang hindi bababa sa 10 salita ng bokabularyo upang sanayin ang mga ito. Subukan mong makipag-usap sa isang kaibigan o sa Pangea Bot upang matuklasan pa!", + "botSettings": "Mga Setting ng Bot", + "activitySettingsOverrideWarning": "Wika at antas ng wika na tinutukoy ng plano ng aktibidad", + "voice": "Boses", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 1fecaba18..39234cc32 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,6 @@ { "@@locale": "fr", - "@@last_modified": "2026-01-06 13:02:50.687446", + "@@last_modified": "2026-01-07 14:29:28.310920", "about": "À propos", "@about": { "type": "String", @@ -11064,5 +11064,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Pratique de définition de vocabulaire correcte", + "constructUseIncLMDesc": "Pratique de définition de vocabulaire incorrecte", + "constructUseCorLADesc": "Pratique audio de vocabulaire correcte", + "constructUseIncLADesc": "Pratique audio de vocabulaire incorrecte", + "constructUseBonus": "Bonus pendant la pratique de vocabulaire", + "practiceVocab": "Pratiquer le vocabulaire", + "selectMeaning": "Sélectionner la signification", + "selectAudio": "Sélectionner l'audio correspondant", + "congratulations": "Félicitations !", + "anotherRound": "Un autre tour", + "noActivityRequest": "Aucune demande d'activité en cours.", + "quit": "Quitter", + "congratulationsYouveCompletedPractice": "Félicitations ! Vous avez terminé la session de pratique.", + "mustHave10Words": "Vous devez avoir au moins 10 mots de vocabulaire à pratiquer. Essayez de parler à un ami ou au Pangea Bot pour en découvrir plus !", + "botSettings": "Paramètres du bot", + "activitySettingsOverrideWarning": "Langue et niveau de langue déterminés par le plan d'activité", + "voice": "Voix", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb index acfa1cacf..0fbd10091 100644 --- a/lib/l10n/intl_ga.arb +++ b/lib/l10n/intl_ga.arb @@ -4517,7 +4517,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": "2026-01-06 13:02:48.899020", + "@@last_modified": "2026-01-07 14:29:21.686769", "@customReaction": { "type": "String", "placeholders": {} @@ -10738,5 +10738,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Cleachtadh ar shainmhíniú ceart foclóra", + "constructUseIncLMDesc": "Cleachtadh ar shainmhíniú mícheart foclóra", + "constructUseCorLADesc": "Cleachtadh ar chluastuiscint ceart foclóra", + "constructUseIncLADesc": "Cleachtadh ar chluastuiscint mícheart foclóra", + "constructUseBonus": "Bónas le linn cleachtaidh foclóra", + "practiceVocab": "Cleachtadh foclóra", + "selectMeaning": "Roghnaigh an bhrí", + "selectAudio": "Roghnaigh an chluastuiscint comhoiriúnach", + "congratulations": "Comhghairdeas!", + "anotherRound": "Ciorcal eile", + "noActivityRequest": "Níl aon iarratas gníomhaíochta reatha.", + "quit": "Dícheangail", + "congratulationsYouveCompletedPractice": "Comhghairdeas! Tá an seisiún cleachtaidh críochnaithe agat.", + "mustHave10Words": "Caithfidh go mbeidh 10 focal le haghaidh cleachtaidh agat ar a laghad. Bain triail as labhairt le cara nó le Pangea Bot chun tuilleadh a fháil amach!", + "botSettings": "Socruithe an Bhot", + "activitySettingsOverrideWarning": "Teanga agus leibhéal teanga a chinneadh de réir plean gníomhaíochta", + "voice": "Guth", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index f5b997d57..75e246ad8 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -1,6 +1,6 @@ { "@@locale": "gl", - "@@last_modified": "2026-01-06 13:01:01.095511", + "@@last_modified": "2026-01-07 14:23:32.582541", "about": "Acerca de", "@about": { "type": "String", @@ -10737,5 +10737,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Práctica correcta da definición de vocabulario", + "constructUseIncLMDesc": "Práctica incorrecta da definición de vocabulario", + "constructUseCorLADesc": "Práctica correcta do audio de vocabulario", + "constructUseIncLADesc": "Práctica incorrecta do audio de vocabulario", + "constructUseBonus": "Bonificación durante a práctica de vocabulario", + "practiceVocab": "Practica de vocabulario", + "selectMeaning": "Selecciona o significado", + "selectAudio": "Selecciona o audio correspondente", + "congratulations": "Parabéns!", + "anotherRound": "Outra ronda", + "noActivityRequest": "Non hai solicitudes de actividade actuais.", + "quit": "Saír", + "congratulationsYouveCompletedPractice": "Parabéns! Completaches a sesión de práctica.", + "mustHave10Words": "Debes ter polo menos 10 palabras de vocabulario para practicálas. Intenta falar cun amigo ou co Pangea Bot para descubrir máis!", + "botSettings": "Configuración do Bot", + "activitySettingsOverrideWarning": "Idioma e nivel de idioma determinados polo plan de actividade", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb index a88fdccfe..06e395102 100644 --- a/lib/l10n/intl_he.arb +++ b/lib/l10n/intl_he.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:22.903727", + "@@last_modified": "2026-01-07 14:24:41.103817", "about": "אודות", "@about": { "type": "String", @@ -11789,5 +11789,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "תרגול הגדרה נכונה של אוצר מילים", + "constructUseIncLMDesc": "תרגול הגדרה שגויה של אוצר מילים", + "constructUseCorLADesc": "תרגול שמע נכון של אוצר מילים", + "constructUseIncLADesc": "תרגול שמע שגוי של אוצר מילים", + "constructUseBonus": "בונוס במהלך תרגול אוצר מילים", + "practiceVocab": "תרגל אוצר מילים", + "selectMeaning": "בחר את המשמעות", + "selectAudio": "בחר את השמע התואם", + "congratulations": "מזל טוב!", + "anotherRound": "סיבוב נוסף", + "noActivityRequest": "אין בקשת פעילות נוכחית.", + "quit": "צא", + "congratulationsYouveCompletedPractice": "מזל טוב! סיימת את מושב האימון.", + "mustHave10Words": "עליך שיהיו לפחות 10 מילים לאוצר מילים כדי לתרגל אותן. נסה לדבר עם חבר או עם פנגיאה בוט כדי לגלות עוד!", + "botSettings": "הגדרות בוט", + "activitySettingsOverrideWarning": "שפה ורמת שפה נקבעות על ידי תוכנית הפעילות", + "voice": "קול", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb index d1e3ca780..f0a80fd80 100644 --- a/lib/l10n/intl_hi.arb +++ b/lib/l10n/intl_hi.arb @@ -4483,7 +4483,7 @@ "playWithAI": "अभी के लिए एआई के साथ खेलें", "courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!", "@@locale": "hi", - "@@last_modified": "2026-01-06 13:02:39.726780", + "@@last_modified": "2026-01-07 14:28:46.662693", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11825,5 +11825,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "सही शब्दावली परिभाषा अभ्यास", + "constructUseIncLMDesc": "गलत शब्दावली परिभाषा अभ्यास", + "constructUseCorLADesc": "सही शब्दावली ऑडियो अभ्यास", + "constructUseIncLADesc": "गलत शब्दावली ऑडियो अभ्यास", + "constructUseBonus": "शब्दावली अभ्यास के दौरान बोनस", + "practiceVocab": "शब्दावली का अभ्यास करें", + "selectMeaning": "अर्थ चुनें", + "selectAudio": "मेल खाने वाला ऑडियो चुनें", + "congratulations": "बधाई हो!", + "anotherRound": "एक और राउंड", + "noActivityRequest": "कोई वर्तमान गतिविधि अनुरोध नहीं है।", + "quit": "बंद करें", + "congratulationsYouveCompletedPractice": "बधाई हो! आपने अभ्यास सत्र पूरा कर लिया है।", + "mustHave10Words": "आपके पास उन्हें अभ्यास करने के लिए कम से कम 10 शब्द होने चाहिए। अधिक जानने के लिए किसी मित्र या Pangea Bot से बात करने की कोशिश करें!", + "botSettings": "बॉट सेटिंग्स", + "activitySettingsOverrideWarning": "भाषा और भाषा स्तर गतिविधि योजना द्वारा निर्धारित किया गया है", + "voice": "स्वर", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index b1fc1d5b7..a60833d29 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1,6 +1,6 @@ { "@@locale": "hr", - "@@last_modified": "2026-01-06 13:01:21.058681", + "@@last_modified": "2026-01-07 14:24:33.836325", "about": "Informacije", "@about": { "type": "String", @@ -11112,5 +11112,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Ispravna praksa definicije vokabulara", + "constructUseIncLMDesc": "Neispravna praksa definicije vokabulara", + "constructUseCorLADesc": "Ispravna praksa audio vokabulara", + "constructUseIncLADesc": "Neispravna praksa audio vokabulara", + "constructUseBonus": "Bonus tijekom prakse vokabulara", + "practiceVocab": "Vježbajte vokabular", + "selectMeaning": "Odaberite značenje", + "selectAudio": "Odaberite odgovarajući audio", + "congratulations": "Čestitamo!", + "anotherRound": "Još jedan krug", + "noActivityRequest": "Nema trenutnog zahtjeva za aktivnost.", + "quit": "Izlaz", + "congratulationsYouveCompletedPractice": "Čestitamo! Završili ste sesiju vježbanja.", + "mustHave10Words": "Morate imati najmanje 10 riječi za vokabular kako biste ih vježbali. Pokušajte razgovarati s prijateljem ili Pangea Botom kako biste otkrili više!", + "botSettings": "Postavke Bota", + "activitySettingsOverrideWarning": "Jezik i razina jezika određeni planom aktivnosti", + "voice": "Glas", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index 4e245b293..3683bcbe0 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -1,6 +1,6 @@ { "@@locale": "hu", - "@@last_modified": "2026-01-06 13:01:08.359844", + "@@last_modified": "2026-01-07 14:23:56.196432", "about": "Névjegy", "@about": { "type": "String", @@ -10741,5 +10741,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Helyes szókincs definíció gyakorlás", + "constructUseIncLMDesc": "Helytelen szókincs definíció gyakorlás", + "constructUseCorLADesc": "Helyes szókincs audio gyakorlás", + "constructUseIncLADesc": "Helytelen szókincs audio gyakorlás", + "constructUseBonus": "Bónusz a szókincs gyakorlás során", + "practiceVocab": "Szókincs gyakorlás", + "selectMeaning": "Jelöld ki a jelentést", + "selectAudio": "Válaszd ki a megfelelő audiót", + "congratulations": "Gratulálunk!", + "anotherRound": "Még egy kör", + "noActivityRequest": "Jelenleg nincs aktivitás kérés.", + "quit": "Kilépés", + "congratulationsYouveCompletedPractice": "Gratulálunk! Befejezted a gyakorló ülést.", + "mustHave10Words": "Legalább 10 szókincsszót kellene gyakorolnod. Próbálj meg beszélni egy baráttal vagy a Pangea Bot-tal, hogy többet felfedezhess!", + "botSettings": "Bot beállítások", + "activitySettingsOverrideWarning": "A nyelvet és a nyelvi szintet az aktivitási terv határozza meg", + "voice": "Hang", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb index fa0a17fd0..40ca83dba 100644 --- a/lib/l10n/intl_ia.arb +++ b/lib/l10n/intl_ia.arb @@ -1958,7 +1958,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": "2026-01-06 13:01:24.542087", + "@@last_modified": "2026-01-07 14:24:47.787013", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11818,5 +11818,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Praktiko de ĝusta vortaro difino", + "constructUseIncLMDesc": "Praktiko de malĝusta vortaro difino", + "constructUseCorLADesc": "Praktiko de ĝusta vortaro aŭdio", + "constructUseIncLADesc": "Praktiko de malĝusta vortaro aŭdio", + "constructUseBonus": "Bonus dum vortaro praktiko", + "practiceVocab": "Praktiki vortaron", + "selectMeaning": "Elekti la signifon", + "selectAudio": "Elekti la kongruan aŭdion", + "congratulations": "Gratulon!", + "anotherRound": "Alia rundo", + "noActivityRequest": "Ninguna solicitud de actividad actual.", + "quit": "Salir", + "congratulationsYouveCompletedPractice": "¡Felicidades! Has completado la sesión de práctica.", + "mustHave10Words": "Debes tener al menos 10 palabras de vocabulario para practicarlas. ¡Intenta hablar con un amigo o con Pangea Bot para descubrir más!", + "botSettings": "Configuraciones del Bot", + "activitySettingsOverrideWarning": "Idioma y nivel de idioma determinados por el plan de actividad", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb index a56054886..64cf24c41 100644 --- a/lib/l10n/intl_id.arb +++ b/lib/l10n/intl_id.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:11.059266", + "@@last_modified": "2026-01-07 14:24:04.023956", "setAsCanonicalAlias": "Atur sebagai alias utama", "@setAsCanonicalAlias": { "type": "String", @@ -10731,5 +10731,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Latihan definisi kosakata yang benar", + "constructUseIncLMDesc": "Latihan definisi kosakata yang salah", + "constructUseCorLADesc": "Latihan audio kosakata yang benar", + "constructUseIncLADesc": "Latihan audio kosakata yang salah", + "constructUseBonus": "Bonus selama latihan kosakata", + "practiceVocab": "Latihan kosakata", + "selectMeaning": "Pilih arti", + "selectAudio": "Pilih audio yang sesuai", + "congratulations": "Selamat!", + "anotherRound": "Putaran lain", + "noActivityRequest": "Tidak ada permintaan aktivitas saat ini.", + "quit": "Keluar", + "congratulationsYouveCompletedPractice": "Selamat! Anda telah menyelesaikan sesi latihan.", + "mustHave10Words": "Anda harus memiliki setidaknya 10 kata kosakata untuk berlatih. Cobalah berbicara dengan teman atau Pangea Bot untuk menemukan lebih banyak!", + "botSettings": "Pengaturan Bot", + "activitySettingsOverrideWarning": "Bahasa dan tingkat bahasa ditentukan oleh rencana aktivitas", + "voice": "Suara", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb index 5b2bb1da1..af33f1f37 100644 --- a/lib/l10n/intl_ie.arb +++ b/lib/l10n/intl_ie.arb @@ -4372,7 +4372,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": "2026-01-06 13:01:17.481803", + "@@last_modified": "2026-01-07 14:24:25.335678", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11714,5 +11714,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Praktiko de ĝusta vortodefino", + "constructUseIncLMDesc": "Praktiko de malĝusta vortodefino", + "constructUseCorLADesc": "Praktiko de ĝusta vortaudio", + "constructUseIncLADesc": "Praktiko de malĝusta vortaudio", + "constructUseBonus": "Bonus dum vortpraktiko", + "practiceVocab": "Praktiki vortaron", + "selectMeaning": "Elekti la signifon", + "selectAudio": "Elekti la kongruan audion", + "congratulations": "Gratulon!", + "anotherRound": "Alia rundo", + "noActivityRequest": "Ninguna solicitud de actividad actual.", + "quit": "Salir", + "congratulationsYouveCompletedPractice": "¡Felicidades! Has completado la sesión de práctica.", + "mustHave10Words": "Debes tener al menos 10 palabras de vocabulario para practicarlas. ¡Intenta hablar con un amigo o con Pangea Bot para descubrir más!", + "botSettings": "Configuración del Bot", + "activitySettingsOverrideWarning": "Idioma y nivel de idioma determinados por el plan de actividad", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 2ebbede0d..ca4d47338 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:39.801417", + "@@last_modified": "2026-01-07 14:25:44.793254", "about": "Informazioni", "@about": { "type": "String", @@ -10743,5 +10743,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Pratica corretta della definizione del vocabolario", + "constructUseIncLMDesc": "Pratica scorretta della definizione del vocabolario", + "constructUseCorLADesc": "Pratica corretta dell'audio del vocabolario", + "constructUseIncLADesc": "Pratica scorretta dell'audio del vocabolario", + "constructUseBonus": "Bonus durante la pratica del vocabolario", + "practiceVocab": "Pratica del vocabolario", + "selectMeaning": "Seleziona il significato", + "selectAudio": "Seleziona l'audio corrispondente", + "congratulations": "Congratulazioni!", + "anotherRound": "Un altro turno", + "noActivityRequest": "Nessuna richiesta di attività attuale.", + "quit": "Esci", + "congratulationsYouveCompletedPractice": "Congratulazioni! Hai completato la sessione di pratica.", + "mustHave10Words": "Devi avere almeno 10 parole di vocabolario per praticarle. Prova a parlare con un amico o con Pangea Bot per scoprire di più!", + "botSettings": "Impostazioni del Bot", + "activitySettingsOverrideWarning": "Lingua e livello di lingua determinati dal piano di attività", + "voice": "Voce", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 6dd49cd70..b2c854382 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,6 +1,6 @@ { "@@locale": "ja", - "@@last_modified": "2026-01-06 13:02:37.951868", + "@@last_modified": "2026-01-07 14:28:40.112996", "about": "このアプリについて", "@about": { "type": "String", @@ -11530,5 +11530,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "正しい語彙定義の練習", + "constructUseIncLMDesc": "誤った語彙定義の練習", + "constructUseCorLADesc": "正しい語彙音声の練習", + "constructUseIncLADesc": "誤った語彙音声の練習", + "constructUseBonus": "語彙練習中のボーナス", + "practiceVocab": "語彙を練習する", + "selectMeaning": "意味を選択する", + "selectAudio": "一致する音声を選択する", + "congratulations": "おめでとうございます!", + "anotherRound": "もう一回", + "noActivityRequest": "現在のアクティビティリクエストはありません。", + "quit": "終了", + "congratulationsYouveCompletedPractice": "おめでとうございます!練習セッションを完了しました。", + "mustHave10Words": "練習するには、少なくとも10語の語彙が必要です。友達やPangea Botに話しかけて、もっと発見してみてください!", + "botSettings": "ボット設定", + "activitySettingsOverrideWarning": "アクティビティプランによって決定された言語と言語レベル", + "voice": "声", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb index 252d932be..9b6f413e3 100644 --- a/lib/l10n/intl_ka.arb +++ b/lib/l10n/intl_ka.arb @@ -2594,7 +2594,7 @@ "playWithAI": "ამ დროისთვის ითამაშეთ AI-თან", "courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!", "@@locale": "ka", - "@@last_modified": "2026-01-06 13:02:45.195897", + "@@last_modified": "2026-01-07 14:29:07.353656", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11770,5 +11770,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "სწორი სიტყვების განმარტების პრაქტიკა", + "constructUseIncLMDesc": "არასწორი სიტყვების განმარტების პრაქტიკა", + "constructUseCorLADesc": "სწორი სიტყვების აუდიო პრაქტიკა", + "constructUseIncLADesc": "არასწორი სიტყვების აუდიო პრაქტიკა", + "constructUseBonus": "ბონუსი სიტყვების პრაქტიკის დროს", + "practiceVocab": "სიტყვების პრაქტიკა", + "selectMeaning": "მნიშვნელობის არჩევა", + "selectAudio": "შესაბამის აუდიოს არჩევა", + "congratulations": "გილოცავთ!", + "anotherRound": "მეორე რაუნდი", + "noActivityRequest": "ამჟამად აქტივობის მოთხოვნა არ არის.", + "quit": "გამოსვლა", + "congratulationsYouveCompletedPractice": "გილოცავთ! თქვენ დაასრულეთ პრაქტიკის სესია.", + "mustHave10Words": "თქვენ უნდა გქონდეთ მინიმუმ 10 სიტყვა, რომ მათ პრაქტიკაში გამოიყენოთ. სცადეთ მეგობართან ან Pangea Bot-თან საუბარი, რომ მეტი აღმოაჩინოთ!", + "botSettings": "ბოტის პარამეტრები", + "activitySettingsOverrideWarning": "ენასა და ენების დონეს განსაზღვრავს აქტივობის გეგმა", + "voice": "ხმა", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb index 3ae3c064c..dc4bac579 100644 --- a/lib/l10n/intl_ko.arb +++ b/lib/l10n/intl_ko.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:00:55.145584", + "@@last_modified": "2026-01-07 14:23:16.118299", "about": "소개", "@about": { "type": "String", @@ -10848,5 +10848,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "정확한 어휘 정의 연습", + "constructUseIncLMDesc": "부정확한 어휘 정의 연습", + "constructUseCorLADesc": "정확한 어휘 오디오 연습", + "constructUseIncLADesc": "부정확한 어휘 오디오 연습", + "constructUseBonus": "어휘 연습 중 보너스", + "practiceVocab": "어휘 연습", + "selectMeaning": "의미 선택", + "selectAudio": "일치하는 오디오 선택", + "congratulations": "축하합니다!", + "anotherRound": "또 다른 라운드", + "noActivityRequest": "현재 활동 요청이 없습니다.", + "quit": "종료", + "congratulationsYouveCompletedPractice": "축하합니다! 연습 세션을 완료했습니다.", + "mustHave10Words": "연습할 단어가 최소 10개 이상 있어야 합니다. 친구나 Pangea Bot과 대화하여 더 많은 것을 발견해 보세요!", + "botSettings": "봇 설정", + "activitySettingsOverrideWarning": "활동 계획에 의해 결정된 언어 및 언어 수준", + "voice": "음성", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb index 2ad1c93f3..fd8eadc44 100644 --- a/lib/l10n/intl_lt.arb +++ b/lib/l10n/intl_lt.arb @@ -3861,7 +3861,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": "2026-01-06 13:02:14.517811", + "@@last_modified": "2026-01-07 14:27:30.418081", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11545,5 +11545,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Teisinga žodyno apibrėžimo praktika", + "constructUseIncLMDesc": "Neteisinga žodyno apibrėžimo praktika", + "constructUseCorLADesc": "Teisinga žodyno garso praktika", + "constructUseIncLADesc": "Neteisinga žodyno garso praktika", + "constructUseBonus": "Premija žodyno praktikos metu", + "practiceVocab": "Praktikuoti žodyną", + "selectMeaning": "Pasirinkite reikšmę", + "selectAudio": "Pasirinkite atitinkamą garsą", + "congratulations": "Sveikiname!", + "anotherRound": "Dar viena raundas", + "noActivityRequest": "Nėra dabartinio veiklos prašymo.", + "quit": "Išeiti", + "congratulationsYouveCompletedPractice": "Sveikiname! Jūs baigėte praktikos sesiją.", + "mustHave10Words": "Turite turėti bent 10 žodžių, kad galėtumėte juos praktikuoti. Pabandykite pasikalbėti su draugu arba Pangea Bot, kad sužinotumėte daugiau!", + "botSettings": "Roboto nustatymai", + "activitySettingsOverrideWarning": "Kalba ir kalbos lygis nustatomi pagal veiklos planą", + "voice": "Balsas", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb index 5bfd85c8a..a52336e79 100644 --- a/lib/l10n/intl_lv.arb +++ b/lib/l10n/intl_lv.arb @@ -4482,7 +4482,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": "2026-01-06 13:02:05.693062", + "@@last_modified": "2026-01-07 14:27:04.364429", "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", @@ -10726,5 +10726,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Pareiza vārdu definīciju prakse", + "constructUseIncLMDesc": "Nepareiza vārdu definīciju prakse", + "constructUseCorLADesc": "Pareiza vārdu audio prakse", + "constructUseIncLADesc": "Nepareiza vārdu audio prakse", + "constructUseBonus": "Bonuss vārdu praksē", + "practiceVocab": "Praktizēt vārdu krājumu", + "selectMeaning": "Izvēlieties nozīmi", + "selectAudio": "Izvēlieties atbilstošo audio", + "congratulations": "Apsveicam!", + "anotherRound": "Vēl viena kārta", + "noActivityRequest": "Nav pašreizējo aktivitāšu pieprasījumu.", + "quit": "Iziet", + "congratulationsYouveCompletedPractice": "Apsveicam! Jūs esat pabeidzis prakses sesiju.", + "mustHave10Words": "Jums jābūt vismaz 10 vārdiem, lai tos praktizētu. Mēģiniet parunāt ar draugu vai Pangea Bot, lai uzzinātu vairāk!", + "botSettings": "Bota iestatījumi", + "activitySettingsOverrideWarning": "Valoda un valodas līmenis, ko nosaka aktivitāšu plāns", + "voice": "Balss", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index a533a837c..8c947d498 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:49.200225", + "@@last_modified": "2026-01-07 14:26:11.727122", "about": "Om", "@about": { "type": "String", @@ -11833,5 +11833,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Korrekt orddefinisjonspraksis", + "constructUseIncLMDesc": "Feil orddefinisjonspraksis", + "constructUseCorLADesc": "Korrekt ordlyttpraksis", + "constructUseIncLADesc": "Feil ordlyttpraksis", + "constructUseBonus": "Bonus under ordpraksis", + "practiceVocab": "Øv på ordforråd", + "selectMeaning": "Velg betydningen", + "selectAudio": "Velg den matchende lyden", + "congratulations": "Gratulerer!", + "anotherRound": "En runde til", + "noActivityRequest": "Ingen nåværende aktivitetsforespørsel.", + "quit": "Avslutt", + "congratulationsYouveCompletedPractice": "Gratulerer! Du har fullført økt med øvelser.", + "mustHave10Words": "Du må ha minst 10 ordforråd for å øve på dem. Prøv å snakke med en venn eller Pangea Bot for å oppdage mer!", + "botSettings": "Bot-innstillinger", + "activitySettingsOverrideWarning": "Språk og språknivå bestemt av aktivitetsplan", + "voice": "Stemme", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index 6e532c290..e55bad11f 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:20.252502", + "@@last_modified": "2026-01-07 14:27:48.189369", "about": "Over ons", "@about": { "type": "String", @@ -10740,5 +10740,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Correcte vocabulaire definitie oefening", + "constructUseIncLMDesc": "Onjuiste vocabulaire definitie oefening", + "constructUseCorLADesc": "Correcte vocabulaire audio oefening", + "constructUseIncLADesc": "Onjuiste vocabulaire audio oefening", + "constructUseBonus": "Bonus tijdens vocabulaire oefening", + "practiceVocab": "Oefen vocabulaire", + "selectMeaning": "Selecteer de betekenis", + "selectAudio": "Selecteer de bijpassende audio", + "congratulations": "Gefeliciteerd!", + "anotherRound": "Nog een ronde", + "noActivityRequest": "Geen huidige activiteit aanvraag.", + "quit": "Afsluiten", + "congratulationsYouveCompletedPractice": "Gefeliciteerd! Je hebt de oefensessie voltooid.", + "mustHave10Words": "Je moet minstens 10 vocabulairewoorden hebben om ze te oefenen. Probeer met een vriend of Pangea Bot te praten om meer te ontdekken!", + "botSettings": "Botinstellingen", + "activitySettingsOverrideWarning": "Taal en taalniveau bepaald door het activiteitenplan", + "voice": "Stem", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index 7f709ccc7..75961bf4d 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,6 @@ { "@@locale": "pl", - "@@last_modified": "2026-01-06 13:02:32.127346", + "@@last_modified": "2026-01-07 14:28:18.089845", "about": "O aplikacji", "@about": { "type": "String", @@ -10738,5 +10738,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Poprawna praktyka definicji słownictwa", + "constructUseIncLMDesc": "Niepoprawna praktyka definicji słownictwa", + "constructUseCorLADesc": "Poprawna praktyka audio słownictwa", + "constructUseIncLADesc": "Niepoprawna praktyka audio słownictwa", + "constructUseBonus": "Bonus podczas praktyki słownictwa", + "practiceVocab": "Ćwicz słownictwo", + "selectMeaning": "Wybierz znaczenie", + "selectAudio": "Wybierz pasujące audio", + "congratulations": "Gratulacje!", + "anotherRound": "Kolejna runda", + "noActivityRequest": "Brak bieżącego żądania aktywności.", + "quit": "Zakończ", + "congratulationsYouveCompletedPractice": "Gratulacje! Ukończyłeś sesję ćwiczeń.", + "mustHave10Words": "Musisz mieć co najmniej 10 słówek do ćwiczenia. Spróbuj porozmawiać z przyjacielem lub Pangea Bot, aby odkryć więcej!", + "botSettings": "Ustawienia bota", + "activitySettingsOverrideWarning": "Język i poziom językowy określone przez plan aktywności", + "voice": "Głos", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 66e710572..34e340d40 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:30.651964", + "@@last_modified": "2026-01-07 14:25:09.370204", "copiedToClipboard": "Copiada para a área de transferência", "@copiedToClipboard": { "type": "String", @@ -11840,5 +11840,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Prática correta de definição de vocabulário", + "constructUseIncLMDesc": "Prática incorreta de definição de vocabulário", + "constructUseCorLADesc": "Prática correta de áudio de vocabulário", + "constructUseIncLADesc": "Prática incorreta de áudio de vocabulário", + "constructUseBonus": "Bônus durante a prática de vocabulário", + "practiceVocab": "Praticar vocabulário", + "selectMeaning": "Selecione o significado", + "selectAudio": "Selecione o áudio correspondente", + "congratulations": "Parabéns!", + "anotherRound": "Outra rodada", + "noActivityRequest": "Nenhum pedido de atividade atual.", + "quit": "Sair", + "congratulationsYouveCompletedPractice": "Parabéns! Você completou a sessão de prática.", + "mustHave10Words": "Você deve ter pelo menos 10 palavras de vocabulário para praticá-las. Tente conversar com um amigo ou com o Pangea Bot para descobrir mais!", + "botSettings": "Configurações do Bot", + "activitySettingsOverrideWarning": "Idioma e nível de idioma determinados pelo plano de atividade", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "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 f57a20e92..a2fdf12cf 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:26.266378", + "@@last_modified": "2026-01-07 14:24:55.031821", "about": "Sobre", "@about": { "type": "String", @@ -11098,5 +11098,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Prática de definição de vocabulário correta", + "constructUseIncLMDesc": "Prática de definição de vocabulário incorreta", + "constructUseCorLADesc": "Prática de áudio de vocabulário correta", + "constructUseIncLADesc": "Prática de áudio de vocabulário incorreta", + "constructUseBonus": "Bônus durante a prática de vocabulário", + "practiceVocab": "Praticar vocabulário", + "selectMeaning": "Selecione o significado", + "selectAudio": "Selecione o áudio correspondente", + "congratulations": "Parabéns!", + "anotherRound": "Outra rodada", + "noActivityRequest": "Nenhum pedido de atividade atual.", + "quit": "Sair", + "congratulationsYouveCompletedPractice": "Parabéns! Você completou a sessão de prática.", + "mustHave10Words": "Você deve ter pelo menos 10 palavras de vocabulário para praticá-las. Tente conversar com um amigo ou com o Pangea Bot para descobrir mais!", + "botSettings": "Configurações do Bot", + "activitySettingsOverrideWarning": "Idioma e nível de idioma determinados pelo plano de atividade", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "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 f1a9d893a..3af737159 100644 --- a/lib/l10n/intl_pt_PT.arb +++ b/lib/l10n/intl_pt_PT.arb @@ -3331,7 +3331,7 @@ "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "@@locale": "pt_PT", - "@@last_modified": "2026-01-06 13:01:59.189375", + "@@last_modified": "2026-01-07 14:26:44.705293", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11769,5 +11769,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Prática correta de definição de vocabulário", + "constructUseIncLMDesc": "Prática incorreta de definição de vocabulário", + "constructUseCorLADesc": "Prática correta de áudio de vocabulário", + "constructUseIncLADesc": "Prática incorreta de áudio de vocabulário", + "constructUseBonus": "Bônus durante a prática de vocabulário", + "practiceVocab": "Praticar vocabulário", + "selectMeaning": "Selecione o significado", + "selectAudio": "Selecione o áudio correspondente", + "congratulations": "Parabéns!", + "anotherRound": "Outra rodada", + "noActivityRequest": "Nenhum pedido de atividade atual.", + "quit": "Sair", + "congratulationsYouveCompletedPractice": "Parabéns! Você completou a sessão de prática.", + "mustHave10Words": "Você deve ter pelo menos 10 palavras de vocabulário para praticar. Tente conversar com um amigo ou com o Pangea Bot para descobrir mais!", + "botSettings": "Configurações do Bot", + "activitySettingsOverrideWarning": "Idioma e nível de idioma determinados pelo plano de atividade", + "voice": "Voz", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index a8c5a2465..7ab1f3c39 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:01:12.939720", + "@@last_modified": "2026-01-07 14:24:11.005786", "about": "Despre", "@about": { "type": "String", @@ -11475,5 +11475,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Practică corectă a definițiilor vocabularului", + "constructUseIncLMDesc": "Practică incorectă a definițiilor vocabularului", + "constructUseCorLADesc": "Practică corectă a audio-ului vocabularului", + "constructUseIncLADesc": "Practică incorectă a audio-ului vocabularului", + "constructUseBonus": "Bonus în timpul practicii vocabularului", + "practiceVocab": "Practică vocabularul", + "selectMeaning": "Selectați semnificația", + "selectAudio": "Selectați audio-ul corespunzător", + "congratulations": "Felicitări!", + "anotherRound": "Încă o rundă", + "noActivityRequest": "Nu există cereri de activitate curente.", + "quit": "Ieși", + "congratulationsYouveCompletedPractice": "Felicitări! Ai completat sesiunea de practică.", + "mustHave10Words": "Trebuie să ai cel puțin 10 cuvinte de vocabular pentru a le exersa. Încearcă să vorbești cu un prieten sau cu Pangea Bot pentru a descoperi mai multe!", + "botSettings": "Setări Bot", + "activitySettingsOverrideWarning": "Limba și nivelul de limbă sunt determinate de planul de activitate", + "voice": "Voce", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index f791c4603..720485908 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,6 @@ { "@@locale": "ru", - "@@last_modified": "2026-01-06 13:02:42.875671", + "@@last_modified": "2026-01-07 14:28:59.154241", "about": "О проекте", "@about": { "type": "String", @@ -10845,5 +10845,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Правильная практика определения слов", + "constructUseIncLMDesc": "Неправильная практика определения слов", + "constructUseCorLADesc": "Правильная практика аудио слов", + "constructUseIncLADesc": "Неправильная практика аудио слов", + "constructUseBonus": "Бонус во время практики слов", + "practiceVocab": "Практика словарного запаса", + "selectMeaning": "Выберите значение", + "selectAudio": "Выберите соответствующее аудио", + "congratulations": "Поздравляем!", + "anotherRound": "Еще один раунд", + "noActivityRequest": "Нет текущего запроса на активность.", + "quit": "Выйти", + "congratulationsYouveCompletedPractice": "Поздравляем! Вы завершили практическую сессию.", + "mustHave10Words": "Вы должны иметь как минимум 10 слов для практики. Попробуйте поговорить с другом или Pangea Bot, чтобы узнать больше!", + "botSettings": "Настройки бота", + "activitySettingsOverrideWarning": "Язык и уровень языка определяются планом активности", + "voice": "Голос", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index 716ef0fcc..ab85fb852 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,6 +1,6 @@ { "@@locale": "sk", - "@@last_modified": "2026-01-06 13:01:15.636781", + "@@last_modified": "2026-01-07 14:24:18.684168", "about": "O aplikácii", "@about": { "type": "String", @@ -11824,5 +11824,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Správna prax definície slovnej zásoby", + "constructUseIncLMDesc": "Nesprávna prax definície slovnej zásoby", + "constructUseCorLADesc": "Správna prax audio slovnej zásoby", + "constructUseIncLADesc": "Nesprávna prax audio slovnej zásoby", + "constructUseBonus": "Bonus počas praxe slovnej zásoby", + "practiceVocab": "Cvičenie slovnej zásoby", + "selectMeaning": "Vyberte význam", + "selectAudio": "Vyberte zodpovedajúce audio", + "congratulations": "Gratulujeme!", + "anotherRound": "Ďalšie kolo", + "noActivityRequest": "Žiadna aktuálna požiadavka na aktivitu.", + "quit": "Ukončiť", + "congratulationsYouveCompletedPractice": "Gratulujeme! Dokončili ste cvičebnú reláciu.", + "mustHave10Words": "Musíte mať aspoň 10 slovíčok na precvičovanie. Skúste sa porozprávať s priateľom alebo Pangea Botom, aby ste objavili viac!", + "botSettings": "Nastavenia bota", + "activitySettingsOverrideWarning": "Jazyk a jazyková úroveň určené plánom aktivity", + "voice": "Hlas", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb index 0fd387875..f82b3a3a5 100644 --- a/lib/l10n/intl_sl.arb +++ b/lib/l10n/intl_sl.arb @@ -2464,7 +2464,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": "2026-01-06 13:01:36.111015", + "@@last_modified": "2026-01-07 14:25:29.847675", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11821,5 +11821,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Pravilna praksa definicije besedi", + "constructUseIncLMDesc": "Napačna praksa definicije besedi", + "constructUseCorLADesc": "Pravilna praksa avdio besedi", + "constructUseIncLADesc": "Napačna praksa avdio besedi", + "constructUseBonus": "Bonus med prakso besedi", + "practiceVocab": "Vadite besedi", + "selectMeaning": "Izberite pomen", + "selectAudio": "Izberite ustrezen avdio", + "congratulations": "Čestitamo!", + "anotherRound": "Še en krog", + "noActivityRequest": "Trenutno ni zahtevka za aktivnost.", + "quit": "Izhod", + "congratulationsYouveCompletedPractice": "Čestitamo! Zaključili ste vadbeno sejo.", + "mustHave10Words": "Imeti morate vsaj 10 besed za besedišče, da jih lahko vadite. Poskusite se pogovoriti s prijateljem ali Pangea Botom, da odkrijete več!", + "botSettings": "Nastavitve bota", + "activitySettingsOverrideWarning": "Jezik in jezikovna raven sta določena z načrtom aktivnosti", + "voice": "Glas", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb index 7cb2f21e1..c863983a5 100644 --- a/lib/l10n/intl_sr.arb +++ b/lib/l10n/intl_sr.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:46.667322", + "@@last_modified": "2026-01-07 14:29:14.506248", "about": "О програму", "@about": { "type": "String", @@ -11842,5 +11842,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Praktikovanje ispravne definicije reči", + "constructUseIncLMDesc": "Praktikovanje pogrešne definicije reči", + "constructUseCorLADesc": "Praktikovanje ispravnog audio sadržaja reči", + "constructUseIncLADesc": "Praktikovanje pogrešnog audio sadržaja reči", + "constructUseBonus": "Bonus tokom praktikovanja reči", + "practiceVocab": "Vežbajte rečnik", + "selectMeaning": "Izaberite značenje", + "selectAudio": "Izaberite odgovarajući audio", + "congratulations": "Čestitamo!", + "anotherRound": "Još jedan krug", + "noActivityRequest": "Nema trenutnog zahteva za aktivnost.", + "quit": "Izlaz", + "congratulationsYouveCompletedPractice": "Čestitamo! Završili ste sesiju vežbanja.", + "mustHave10Words": "Morate imati najmanje 10 reči za rečnik da biste ih vežbali. Pokušajte da razgovarate sa prijateljem ili Pangea Bot-om da biste otkrili više!", + "botSettings": "Podešavanja Bota", + "activitySettingsOverrideWarning": "Jezik i nivo jezika određeni planom aktivnosti", + "voice": "Glas", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index 09af7b4f0..b70f8acbc 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:34.358506", + "@@last_modified": "2026-01-07 14:28:25.359543", "about": "Om", "@about": { "type": "String", @@ -11218,5 +11218,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Korrekt vokabulär definitionsövning", + "constructUseIncLMDesc": "Inkorrekt vokabulär definitionsövning", + "constructUseCorLADesc": "Korrekt vokabulär ljudövning", + "constructUseIncLADesc": "Inkorrekt vokabulär ljudövning", + "constructUseBonus": "Bonus under vokabulärövning", + "practiceVocab": "Öva vokabulär", + "selectMeaning": "Välj betydelsen", + "selectAudio": "Välj den matchande ljudfilen", + "congratulations": "Grattis!", + "anotherRound": "En runda till", + "noActivityRequest": "Ingen aktuell aktivitetsförfrågan.", + "quit": "Avsluta", + "congratulationsYouveCompletedPractice": "Grattis! Du har slutfört övningssessionen.", + "mustHave10Words": "Du måste ha minst 10 ord för att öva dem. Försök att prata med en vän eller Pangea Bot för att upptäcka mer!", + "botSettings": "Botinställningar", + "activitySettingsOverrideWarning": "Språk och språknivå bestäms av aktivitetsplanen", + "voice": "Röst", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb index e01b67a3f..22033e897 100644 --- a/lib/l10n/intl_ta.arb +++ b/lib/l10n/intl_ta.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:17.997622", + "@@last_modified": "2026-01-07 14:27:42.869267", "acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது", "@acceptedTheInvitation": { "type": "String", @@ -10964,5 +10964,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "சரியான சொல் வரையறை பயிற்சி", + "constructUseIncLMDesc": "தவறான சொல் வரையறை பயிற்சி", + "constructUseCorLADesc": "சரியான சொல் ஒலிப்பதிவு பயிற்சி", + "constructUseIncLADesc": "தவறான சொல் ஒலிப்பதிவு பயிற்சி", + "constructUseBonus": "சொல் பயிற்சியின் போது போனஸ்", + "practiceVocab": "சொற்களை பயிற்சி செய்யுங்கள்", + "selectMeaning": "அர்த்தத்தை தேர்ந்தெடுக்கவும்", + "selectAudio": "ஒலியை தேர்ந்தெடுக்கவும்", + "congratulations": "வாழ்த்துகள்!", + "anotherRound": "மற்றொரு சுற்று", + "noActivityRequest": "தற்போதைய செயல்பாட்டுக்கான கோரிக்கை இல்லை.", + "quit": "விலகுங்கள்", + "congratulationsYouveCompletedPractice": "வாழ்த்துகள்! நீங்கள் பயிற்சி அமர்வை முடித்துவிட்டீர்கள்.", + "mustHave10Words": "நீங்கள் பயிற்சிக்காக குறைந்தது 10 சொற்களை வைத்திருக்க வேண்டும். மேலும் கண்டுபிடிக்க நண்பருடன் அல்லது பாஙோ பாட்டுடன் பேச முயற்சிக்கவும்!", + "botSettings": "பாடல் அமைப்புகள்", + "activitySettingsOverrideWarning": "செயல்பாட்டு திட்டத்தால் நிர்ணயிக்கப்பட்ட மொழி மற்றும் மொழி நிலை", + "voice": "குரல்", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb index 48f4fe55d..64aa04147 100644 --- a/lib/l10n/intl_te.arb +++ b/lib/l10n/intl_te.arb @@ -1920,7 +1920,7 @@ "playWithAI": "ఇప్పుడే AI తో ఆడండి", "courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!", "@@locale": "te", - "@@last_modified": "2026-01-06 13:02:11.522520", + "@@last_modified": "2026-01-07 14:27:24.330788", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -11829,5 +11829,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "సరైన పదకోశ నిర్వచన అభ్యాసం", + "constructUseIncLMDesc": "తప్పు పదకోశ నిర్వచన అభ్యాసం", + "constructUseCorLADesc": "సరైన పదకోశ ఆడియో అభ్యాసం", + "constructUseIncLADesc": "తప్పు పదకోశ ఆడియో అభ్యాసం", + "constructUseBonus": "పదకోశ అభ్యాసం సమయంలో బోనస్", + "practiceVocab": "పదకోశాన్ని అభ్యాసం చేయండి", + "selectMeaning": "అర్థాన్ని ఎంచుకోండి", + "selectAudio": "సమానమైన ఆడియోను ఎంచుకోండి", + "congratulations": "అభినందనలు!", + "anotherRound": "మరొక రౌండ్", + "noActivityRequest": "ప్రస్తుతం ఎలాంటి కార్యకలాపం అభ్యర్థన లేదు.", + "quit": "విడుదల", + "congratulationsYouveCompletedPractice": "అభినందనలు! మీరు అభ్యాస సెషన్‌ను పూర్తి చేశారు.", + "mustHave10Words": "మీరు వాటిని అభ్యాసం చేయడానికి కనీసం 10 పదాలను కలిగి ఉండాలి. మరింత తెలుసుకోవడానికి మీ స్నేహితుడితో లేదా పాంజియా బాట్‌తో మాట్లాడండి!", + "botSettings": "బాట్ సెట్టింగులు", + "activitySettingsOverrideWarning": "కార్యకలాపం ప్రణాళిక ద్వారా నిర్ణయించబడిన భాష మరియు భాష స్థాయి", + "voice": "శబ్దం", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb index dd8c5171e..d810730a4 100644 --- a/lib/l10n/intl_th.arb +++ b/lib/l10n/intl_th.arb @@ -4456,7 +4456,7 @@ "playWithAI": "เล่นกับ AI ชั่วคราว", "courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!", "@@locale": "th", - "@@last_modified": "2026-01-06 13:01:57.436131", + "@@last_modified": "2026-01-07 14:26:38.383329", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -11798,5 +11798,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "การฝึกฝนความหมายคำศัพท์ที่ถูกต้อง", + "constructUseIncLMDesc": "การฝึกฝนความหมายคำศัพท์ที่ไม่ถูกต้อง", + "constructUseCorLADesc": "การฝึกฝนเสียงคำศัพท์ที่ถูกต้อง", + "constructUseIncLADesc": "การฝึกฝนเสียงคำศัพท์ที่ไม่ถูกต้อง", + "constructUseBonus": "โบนัสระหว่างการฝึกคำศัพท์", + "practiceVocab": "ฝึกคำศัพท์", + "selectMeaning": "เลือกความหมาย", + "selectAudio": "เลือกเสียงที่ตรงกัน", + "congratulations": "ขอแสดงความยินดี!", + "anotherRound": "อีกหนึ่งรอบ", + "noActivityRequest": "ไม่มีคำขอทำกิจกรรมในขณะนี้", + "quit": "ออก", + "congratulationsYouveCompletedPractice": "ขอแสดงความยินดี! คุณได้เสร็จสิ้นการฝึกฝนแล้ว", + "mustHave10Words": "คุณต้องมีคำศัพท์อย่างน้อย 10 คำเพื่อฝึกฝน ลองพูดคุยกับเพื่อนหรือ Pangea Bot เพื่อค้นพบเพิ่มเติม!", + "botSettings": "การตั้งค่า Bot", + "activitySettingsOverrideWarning": "ภาษาและระดับภาษาที่กำหนดโดยแผนกิจกรรม", + "voice": "เสียง", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index a5b597b8c..392af0e8a 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -1,6 +1,6 @@ { "@@locale": "tr", - "@@last_modified": "2026-01-06 13:02:09.596458", + "@@last_modified": "2026-01-07 14:27:16.503973", "about": "Hakkında", "@about": { "type": "String", @@ -10962,5 +10962,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Doğru kelime tanımı pratiği", + "constructUseIncLMDesc": "Yanlış kelime tanımı pratiği", + "constructUseCorLADesc": "Doğru kelime ses pratiği", + "constructUseIncLADesc": "Yanlış kelime ses pratiği", + "constructUseBonus": "Kelime pratiği sırasında bonus", + "practiceVocab": "Kelime pratiği yap", + "selectMeaning": "Anlamı seç", + "selectAudio": "Eşleşen sesi seç", + "congratulations": "Tebrikler!", + "anotherRound": "Bir tur daha", + "noActivityRequest": "Şu anda etkinlik talebi yok.", + "quit": "Çık", + "congratulationsYouveCompletedPractice": "Tebrikler! Pratik oturumunu tamamladınız.", + "mustHave10Words": "Pratik yapmak için en az 10 kelimeye sahip olmalısınız. Daha fazla keşfetmek için bir arkadaşınızla veya Pangea Bot ile konuşmayı deneyin!", + "botSettings": "Bot Ayarları", + "activitySettingsOverrideWarning": "Etkinlik planı tarafından belirlenen dil ve dil seviyesi", + "voice": "Ses", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index 1cf49442d..9b8d546e5 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -1,6 +1,6 @@ { "@@locale": "uk", - "@@last_modified": "2026-01-06 13:01:42.034870", + "@@last_modified": "2026-01-07 14:25:54.221263", "about": "Про застосунок", "@about": { "type": "String", @@ -10734,5 +10734,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Правильна практика визначення словникового запасу", + "constructUseIncLMDesc": "Неправильна практика визначення словникового запасу", + "constructUseCorLADesc": "Правильна практика аудіо словникового запасу", + "constructUseIncLADesc": "Неправильна практика аудіо словникового запасу", + "constructUseBonus": "Бонус під час практики словникового запасу", + "practiceVocab": "Практика словникового запасу", + "selectMeaning": "Виберіть значення", + "selectAudio": "Виберіть відповідне аудіо", + "congratulations": "Вітаємо!", + "anotherRound": "Ще один раунд", + "noActivityRequest": "Немає поточного запиту на активність.", + "quit": "Вийти", + "congratulationsYouveCompletedPractice": "Вітаємо! Ви завершили практичну сесію.", + "mustHave10Words": "Вам потрібно мати принаймні 10 слів для практики. Спробуйте поговорити з другом або Pangea Bot, щоб дізнатися більше!", + "botSettings": "Налаштування бота", + "activitySettingsOverrideWarning": "Мова та рівень мови визначаються планом активності", + "voice": "Голос", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index 62a2e23cd..77ad1ad05 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:16.250270", + "@@last_modified": "2026-01-07 14:27:35.989013", "about": "Giới thiệu", "@about": { "type": "String", @@ -6310,5 +6310,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "Thực hành định nghĩa từ vựng đúng", + "constructUseIncLMDesc": "Thực hành định nghĩa từ vựng sai", + "constructUseCorLADesc": "Thực hành âm thanh từ vựng đúng", + "constructUseIncLADesc": "Thực hành âm thanh từ vựng sai", + "constructUseBonus": "Thưởng trong quá trình thực hành từ vựng", + "practiceVocab": "Thực hành từ vựng", + "selectMeaning": "Chọn nghĩa", + "selectAudio": "Chọn âm thanh phù hợp", + "congratulations": "Chúc mừng!", + "anotherRound": "Một vòng nữa", + "noActivityRequest": "Không có yêu cầu hoạt động nào hiện tại.", + "quit": "Thoát", + "congratulationsYouveCompletedPractice": "Chúc mừng! Bạn đã hoàn thành buổi thực hành.", + "mustHave10Words": "Bạn phải có ít nhất 10 từ vựng để thực hành. Hãy thử nói chuyện với một người bạn hoặc Pangea Bot để khám phá thêm!", + "botSettings": "Cài đặt Bot", + "activitySettingsOverrideWarning": "Ngôn ngữ và cấp độ ngôn ngữ được xác định bởi kế hoạch hoạt động", + "voice": "Giọng nói", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_yue.arb b/lib/l10n/intl_yue.arb index 4d4fa5707..8684f06a8 100644 --- a/lib/l10n/intl_yue.arb +++ b/lib/l10n/intl_yue.arb @@ -1856,7 +1856,7 @@ "selectAll": "全選", "deselectAll": "取消全選", "@@locale": "yue", - "@@last_modified": "2026-01-06 13:01:38.057632", + "@@last_modified": "2026-01-07 14:25:37.722488", "@ignoreUser": { "type": "String", "placeholders": {} @@ -11831,5 +11831,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "正確的詞彙定義練習", + "constructUseIncLMDesc": "不正確的詞彙定義練習", + "constructUseCorLADesc": "正確的詞彙音頻練習", + "constructUseIncLADesc": "不正確的詞彙音頻練習", + "constructUseBonus": "詞彙練習期間的獎勵", + "practiceVocab": "練習詞彙", + "selectMeaning": "選擇意思", + "selectAudio": "選擇匹配的音頻", + "congratulations": "恭喜!", + "anotherRound": "再來一輪", + "noActivityRequest": "目前沒有活動請求。", + "quit": "退出", + "congratulationsYouveCompletedPractice": "恭喜!你已完成練習課程。", + "mustHave10Words": "你必須至少有 10 個詞彙來練習它們。試著和朋友或 Pangea Bot 談談以發現更多!", + "botSettings": "機械人設置", + "activitySettingsOverrideWarning": "活動計劃決定的語言和語言水平", + "voice": "聲音", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 90c36fb2d..401c2b283 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -1,6 +1,6 @@ { "@@locale": "zh", - "@@last_modified": "2026-01-06 13:02:25.686469", + "@@last_modified": "2026-01-07 14:27:59.550670", "about": "关于", "@about": { "type": "String", @@ -10731,5 +10731,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "正确的词汇定义练习", + "constructUseIncLMDesc": "错误的词汇定义练习", + "constructUseCorLADesc": "正确的词汇音频练习", + "constructUseIncLADesc": "错误的词汇音频练习", + "constructUseBonus": "词汇练习期间的奖励", + "practiceVocab": "练习词汇", + "selectMeaning": "选择意思", + "selectAudio": "选择匹配的音频", + "congratulations": "恭喜!", + "anotherRound": "再来一轮", + "noActivityRequest": "当前没有活动请求。", + "quit": "退出", + "congratulationsYouveCompletedPractice": "恭喜!您已完成练习课程。", + "mustHave10Words": "您必须至少有 10 个词汇来进行练习。尝试与朋友或 Pangea Bot 交谈以发现更多!", + "botSettings": "机器人设置", + "activitySettingsOverrideWarning": "活动计划确定的语言和语言级别", + "voice": "声音", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "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 3865fb512..3ee19351a 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-06 13:02:01.182495", + "@@last_modified": "2026-01-07 14:26:51.046421", "about": "關於", "@about": { "type": "String", @@ -10738,5 +10738,90 @@ "@activitiesToUnlockTopicDesc": { "type": "String", "placeholders": {} + }, + "constructUseCorLMDesc": "正確的詞彙定義練習", + "constructUseIncLMDesc": "不正確的詞彙定義練習", + "constructUseCorLADesc": "正確的詞彙音頻練習", + "constructUseIncLADesc": "不正確的詞彙音頻練習", + "constructUseBonus": "詞彙練習期間的獎勵", + "practiceVocab": "練習詞彙", + "selectMeaning": "選擇意思", + "selectAudio": "選擇匹配的音頻", + "congratulations": "恭喜!", + "anotherRound": "再來一輪", + "noActivityRequest": "目前沒有活動請求。", + "quit": "退出", + "congratulationsYouveCompletedPractice": "恭喜!您已完成練習課程。", + "mustHave10Words": "您必須至少有 10 個詞彙來進行練習。嘗試與朋友或 Pangea Bot 交談以發現更多!", + "botSettings": "機器人設定", + "activitySettingsOverrideWarning": "語言和語言級別由活動計劃決定", + "voice": "聲音", + "@constructUseCorLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLMDesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseCorLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseIncLADesc": { + "type": "String", + "placeholders": {} + }, + "@constructUseBonus": { + "type": "String", + "placeholders": {} + }, + "@practiceVocab": { + "type": "String", + "placeholders": {} + }, + "@selectMeaning": { + "type": "String", + "placeholders": {} + }, + "@selectAudio": { + "type": "String", + "placeholders": {} + }, + "@congratulations": { + "type": "String", + "placeholders": {} + }, + "@anotherRound": { + "type": "String", + "placeholders": {} + }, + "@noActivityRequest": { + "type": "String", + "placeholders": {} + }, + "@quit": { + "type": "String", + "placeholders": {} + }, + "@congratulationsYouveCompletedPractice": { + "type": "String", + "placeholders": {} + }, + "@mustHave10Words": { + "type": "String", + "placeholders": {} + }, + "@botSettings": { + "type": "String", + "placeholders": {} + }, + "@activitySettingsOverrideWarning": { + "type": "String", + "placeholders": {} + }, + "@voice": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 9ba11fed9..15273e9fb 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -13,6 +13,8 @@ import 'package:fluffychat/pages/chat/events/room_creation_state_event.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_session_chat/activity_roles_event_widget.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_summary_widget.dart'; +import 'package:fluffychat/pangea/bot/utils/bot_name.dart'; +import 'package:fluffychat/pangea/bot/widgets/bot_settings_language_icon.dart'; import 'package:fluffychat/pangea/chat/extensions/custom_room_display_extension.dart'; import 'package:fluffychat/pangea/chat/widgets/request_regeneration_button.dart'; import 'package:fluffychat/pangea/common/widgets/pressable_button.dart'; @@ -468,11 +470,26 @@ class Message extends StatelessWidget { context: context, user: user, onMention: onMention, + // #Pangea + room: controller.room, + // Pangea# ), presenceUserId: user.stateKey, presenceBackgroundColor: wallpaperMode ? Colors.transparent : null, + // #Pangea + miniIcon: + user.id == BotName.byEnvironment + ? BotSettingsLanguageIcon( + room: controller.room, + ) + : null, + presenceOffset: + user.id == BotName.byEnvironment + ? const Offset(0, 0) + : null, + // Pangea# ); }, ), diff --git a/lib/pangea/activity_sessions/activity_participant_indicator.dart b/lib/pangea/activity_sessions/activity_participant_indicator.dart index 58ba597aa..0f85ff327 100644 --- a/lib/pangea/activity_sessions/activity_participant_indicator.dart +++ b/lib/pangea/activity_sessions/activity_participant_indicator.dart @@ -6,6 +6,8 @@ import 'package:shimmer/shimmer.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pangea/bot/utils/bot_name.dart'; +import 'package:fluffychat/pangea/bot/widgets/bot_settings_language_icon.dart'; import 'package:fluffychat/utils/string_color.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/hover_builder.dart'; @@ -15,6 +17,7 @@ class ActivityParticipantIndicator extends StatelessWidget { final String name; final String? userId; final User? user; + final Room? room; final VoidCallback? onTap; final bool selected; @@ -29,6 +32,7 @@ class ActivityParticipantIndicator extends StatelessWidget { super.key, required this.name, this.user, + this.room, this.userId, this.selected = false, this.selectable = true, @@ -50,6 +54,7 @@ class ActivityParticipantIndicator extends StatelessWidget { ? () => showMemberActionsPopupMenu( context: context, user: user!, + room: room, ) : null), child: AbsorbPointer( @@ -65,6 +70,14 @@ class ActivityParticipantIndicator extends StatelessWidget { name: userId!.localpart, size: 60.0, userId: userId, + miniIcon: + room != null && userId == BotName.byEnvironment + ? BotSettingsLanguageIcon(room: room!) + : null, + presenceOffset: + room != null && userId == BotName.byEnvironment + ? const Offset(0, 0) + : null, ) : ClipRRect( borderRadius: BorderRadius.circular(30), diff --git a/lib/pangea/activity_sessions/activity_participant_list.dart b/lib/pangea/activity_sessions/activity_participant_list.dart index cae1390b3..ecc3f7a7f 100644 --- a/lib/pangea/activity_sessions/activity_participant_list.dart +++ b/lib/pangea/activity_sessions/activity_participant_list.dart @@ -27,7 +27,7 @@ class ActivityParticipantList extends StatelessWidget { super.key, required this.activity, required this.assignedRoles, - required this.room, + this.room, this.course, this.onTap, this.canSelect, @@ -94,6 +94,7 @@ class ActivityParticipantList extends StatelessWidget { selected: selected, selectable: selectable, shimmer: shimmering, + room: room, ); }).toList(), ), @@ -106,6 +107,7 @@ class ActivityParticipantList extends StatelessWidget { onTap: () => showMemberActionsPopupMenu( context: context, user: member, + room: room, ), child: Container( decoration: BoxDecoration( diff --git a/lib/pangea/activity_sessions/activity_user_summaries_widget.dart b/lib/pangea/activity_sessions/activity_user_summaries_widget.dart index 2d4f92002..2553f1a5a 100644 --- a/lib/pangea/activity_sessions/activity_user_summaries_widget.dart +++ b/lib/pangea/activity_sessions/activity_user_summaries_widget.dart @@ -297,6 +297,7 @@ class ButtonControlledCarouselView extends StatelessWidget { borderRadius: BorderRadius.circular(4), selected: highlightedRole?.id == userRole.id, onTap: () => _scrollToUser(userRole, index, cardWidth), + room: controller.room, ); }, ); diff --git a/lib/pangea/bot/widgets/bot_chat_settings_dialog.dart b/lib/pangea/bot/widgets/bot_chat_settings_dialog.dart new file mode 100644 index 000000000..2b91247f3 --- /dev/null +++ b/lib/pangea/bot/widgets/bot_chat_settings_dialog.dart @@ -0,0 +1,194 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:dropdown_button2/dropdown_button2.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart'; +import 'package:fluffychat/pangea/bot/utils/bot_room_extension.dart'; +import 'package:fluffychat/pangea/chat_settings/models/bot_options_model.dart'; +import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown.dart'; +import 'package:fluffychat/pangea/common/widgets/dropdown_text_button.dart'; +import 'package:fluffychat/pangea/languages/language_model.dart'; +import 'package:fluffychat/pangea/languages/p_language_store.dart'; +import 'package:fluffychat/pangea/learning_settings/language_level_type_enum.dart'; +import 'package:fluffychat/pangea/learning_settings/p_language_dropdown.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class BotChatSettingsDialog extends StatefulWidget { + final Room room; + + static Future show({ + required BuildContext context, + required Room room, + }) async { + final resp = await showAdaptiveDialog( + context: context, + barrierDismissible: true, + builder: (context) => BotChatSettingsDialog(room: room), + ); + if (resp == null) return; + await showFutureLoadingDialog( + context: context, + future: () => room.setBotOptions(resp), + ); + } + + const BotChatSettingsDialog({ + required this.room, + super.key, + }); + + @override + BotChatSettingsDialogState createState() => BotChatSettingsDialogState(); +} + +class BotChatSettingsDialogState extends State { + LanguageModel? _selectedLang; + LanguageLevelTypeEnum? _selectedLevel; + String? _selectedVoice; + + @override + void initState() { + final botSettings = widget.room.botOptions; + final activityPlan = _isActivity ? widget.room.activityPlan : null; + + _selectedLevel = activityPlan?.req.cefrLevel ?? botSettings?.languageLevel; + _selectedVoice = botSettings?.targetVoice; + final lang = + activityPlan?.req.targetLanguage ?? botSettings?.targetLanguage; + if (lang != null) { + _selectedLang = PLanguageStore.byLangCode(lang); + } + super.initState(); + } + + bool get _isActivity => widget.room.isActivitySession; + + void _setLanguage(LanguageModel? lang) => + setState(() => _selectedLang = lang); + void _setLevel(LanguageLevelTypeEnum? level) => + setState(() => _selectedLevel = level); + void _setVoice(String? voice) => setState(() => _selectedVoice = voice); + + BotOptionsModel get _updatedModel { + final botSettings = widget.room.botOptions ?? BotOptionsModel(); + if (_selectedLang != null) { + botSettings.targetLanguage = _selectedLang!.langCode; + } + if (_selectedLevel != null) { + botSettings.languageLevel = _selectedLevel!; + } + if (_selectedVoice != null) { + botSettings.targetVoice = _selectedVoice; + } + return botSettings; + } + + @override + Widget build(BuildContext context) { + return AlertDialog.adaptive( + title: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Center( + child: Text( + L10n.of(context).botSettings, + textAlign: TextAlign.center, + ), + ), + ), + content: Material( + type: MaterialType.transparency, + child: Container( + padding: const EdgeInsets.only(top: 16.0), + constraints: const BoxConstraints( + maxWidth: 256, + maxHeight: 300, + ), + child: SingleChildScrollView( + child: Column( + spacing: 16.0, + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (_isActivity) + ListTile( + contentPadding: const EdgeInsets.all(0.0), + minLeadingWidth: 12.0, + leading: Icon( + Icons.info_outline, + size: 12.0, + color: Theme.of(context).disabledColor, + ), + title: Text( + L10n.of(context).activitySettingsOverrideWarning, + style: TextStyle( + color: Theme.of(context).disabledColor, + fontSize: 12.0, + ), + ), + ), + PLanguageDropdown( + onChange: _setLanguage, + initialLanguage: _selectedLang, + languages: + MatrixState.pangeaController.pLanguageStore.targetOptions, + isL2List: true, + decorationText: L10n.of(context).targetLanguage, + enabled: !_isActivity, + ), + LanguageLevelDropdown( + initialLevel: _selectedLevel, + onChanged: _setLevel, + enabled: !_isActivity, + ), + DropdownButtonFormField2( + customButton: _selectedVoice != null + ? CustomDropdownTextButton(text: _selectedVoice!) + : null, + menuItemStyleData: MenuItemStyleData( + padding: const EdgeInsets.symmetric( + vertical: 8.0, + horizontal: 16.0, + ), + height: FluffyThemes.isColumnMode(context) ? 100.0 : 150.0, + ), + decoration: InputDecoration( + labelText: L10n.of(context).voice, + ), + isExpanded: true, + dropdownStyleData: DropdownStyleData( + maxHeight: kIsWeb ? 500 : null, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainerHigh, + borderRadius: BorderRadius.circular(14.0), + ), + ), + items: (_selectedLang?.voices ?? []).map((voice) { + return DropdownMenuItem( + value: voice, + child: Text(voice), + ); + }).toList(), + onChanged: _setVoice, + value: _selectedVoice, + ), + ], + ), + ), + ), + ), + actions: [ + AdaptiveDialogAction( + bigButtons: true, + onPressed: () => Navigator.of(context).pop(_updatedModel), + child: Text(L10n.of(context).submit), + ), + ], + ); + } +} diff --git a/lib/pangea/bot/widgets/bot_settings_language_icon.dart b/lib/pangea/bot/widgets/bot_settings_language_icon.dart new file mode 100644 index 000000000..b72bb8590 --- /dev/null +++ b/lib/pangea/bot/widgets/bot_settings_language_icon.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart'; +import 'package:fluffychat/pangea/bot/utils/bot_room_extension.dart'; +import 'package:fluffychat/pangea/bot/widgets/bot_chat_settings_dialog.dart'; + +class BotSettingsLanguageIcon extends StatelessWidget { + final Room room; + + const BotSettingsLanguageIcon({ + super.key, + required this.room, + }); + + @override + Widget build(BuildContext context) { + String? langCode = room.botOptions?.targetLanguage; + if (room.isActivitySession && room.activityPlan != null) { + langCode = room.activityPlan!.req.targetLanguage; + } + if (langCode == null) { + return const SizedBox(); + } + + langCode = langCode.split('-').first; + return InkWell( + borderRadius: BorderRadius.circular(32.0), + onTap: () => BotChatSettingsDialog.show( + context: context, + room: room, + ), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16.0), + color: Theme.of(context).colorScheme.primaryContainer, + ), + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Text( + langCode, + style: TextStyle( + fontSize: 10.0, + color: Theme.of(context).colorScheme.onPrimaryContainer, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + ), + ), + ); + } +} diff --git a/lib/pangea/chat_settings/pages/room_participants_widget.dart b/lib/pangea/chat_settings/pages/room_participants_widget.dart index 42332ef6f..2423c6ce7 100644 --- a/lib/pangea/chat_settings/pages/room_participants_widget.dart +++ b/lib/pangea/chat_settings/pages/room_participants_widget.dart @@ -187,6 +187,7 @@ class RoomParticipantsSection extends StatelessWidget { onTap: () => showMemberActionsPopupMenu( context: context, user: user, + room: room, ), child: Center( child: Avatar( diff --git a/lib/pangea/chat_settings/widgets/language_level_dropdown.dart b/lib/pangea/chat_settings/widgets/language_level_dropdown.dart index 4fdc4bd37..6dafafaad 100644 --- a/lib/pangea/chat_settings/widgets/language_level_dropdown.dart +++ b/lib/pangea/chat_settings/widgets/language_level_dropdown.dart @@ -84,6 +84,7 @@ class LanguageLevelDropdown extends StatelessWidget { : null, value: initialLevel, validator: validator, + enableFeedback: enabled, ); } } diff --git a/lib/pangea/events/event_wrappers/pangea_message_event.dart b/lib/pangea/events/event_wrappers/pangea_message_event.dart index e238ae6e7..f1322fdf2 100644 --- a/lib/pangea/events/event_wrappers/pangea_message_event.dart +++ b/lib/pangea/events/event_wrappers/pangea_message_event.dart @@ -363,6 +363,7 @@ class PangeaMessageEvent { Future requestTextToSpeech( String langCode, + String? voice, ) async { final local = getTextToSpeechLocal(langCode, messageDisplayText); if (local != null) { @@ -378,6 +379,7 @@ class PangeaMessageEvent { langCode: langCode, userL1: _l1Code ?? LanguageKeys.unknownLanguage, userL2: _l2Code ?? LanguageKeys.unknownLanguage, + voice: voice, ); final result = await TextToSpeechRepo.get( diff --git a/lib/pangea/languages/language_model.dart b/lib/pangea/languages/language_model.dart index d6bb30df0..4eda72f43 100644 --- a/lib/pangea/languages/language_model.dart +++ b/lib/pangea/languages/language_model.dart @@ -13,6 +13,7 @@ class LanguageModel { final String? localeEmoji; final L2SupportEnum l2Support; final TextDirection? _textDirection; + final List voices; LanguageModel({ required this.langCode, @@ -20,6 +21,7 @@ class LanguageModel { this.localeEmoji, this.script = LanguageKeys.unknownLanguage, this.l2Support = L2SupportEnum.na, + this.voices = const [], TextDirection? textDirection, }) : _textDirection = textDirection; @@ -43,6 +45,7 @@ class LanguageModel { ) : null, localeEmoji: json['locale_emoji'], + voices: json['voices'] != null ? List.from(json['voices']) : [], ); } @@ -53,6 +56,7 @@ class LanguageModel { 'l2_support': l2Support.storageString, 'text_direction': textDirection.name, 'locale_emoji': localeEmoji, + 'voices': voices, }; bool get l2 => l2Support != L2SupportEnum.na; diff --git a/lib/pangea/learning_settings/p_language_dropdown.dart b/lib/pangea/learning_settings/p_language_dropdown.dart index fa291d235..5957e003a 100644 --- a/lib/pangea/learning_settings/p_language_dropdown.dart +++ b/lib/pangea/learning_settings/p_language_dropdown.dart @@ -19,6 +19,7 @@ class PLanguageDropdown extends StatefulWidget { final String? error; final Color? backgroundColor; final bool hasError; + final bool enabled; const PLanguageDropdown({ super.key, @@ -30,6 +31,7 @@ class PLanguageDropdown extends StatefulWidget { this.error, this.backgroundColor, this.hasError = false, + this.enabled = true, }); @override @@ -89,6 +91,7 @@ class PLanguageDropdownState extends State { languageModel: widget.initialLanguage!, isL2List: widget.isL2List, isDropdown: true, + enabled: widget.enabled, ) : null, menuItemStyleData: const MenuItemStyleData( @@ -143,7 +146,7 @@ class PLanguageDropdownState extends State { ), ), ], - onChanged: (value) => widget.onChange(value!), + onChanged: widget.enabled ? (value) => widget.onChange(value!) : null, value: widget.initialLanguage, dropdownSearchData: DropdownSearchData( searchController: _searchController, @@ -167,6 +170,7 @@ class PLanguageDropdownState extends State { onMenuStateChange: (isOpen) { if (!isOpen) _searchController.clear(); }, + enableFeedback: widget.enabled, ), AnimatedSize( duration: FluffyThemes.animationDuration, diff --git a/lib/pangea/text_to_speech/text_to_speech_request_model.dart b/lib/pangea/text_to_speech/text_to_speech_request_model.dart index 9c18104f7..c8a13a0fe 100644 --- a/lib/pangea/text_to_speech/text_to_speech_request_model.dart +++ b/lib/pangea/text_to_speech/text_to_speech_request_model.dart @@ -7,6 +7,7 @@ class TextToSpeechRequestModel { String userL1; String userL2; List tokens; + String? voice; TextToSpeechRequestModel({ required this.text, @@ -14,6 +15,7 @@ class TextToSpeechRequestModel { required this.userL1, required this.userL2, required this.tokens, + this.voice, }); Map toJson() => { @@ -22,6 +24,7 @@ class TextToSpeechRequestModel { ModelKey.userL1: userL1, ModelKey.userL2: userL2, ModelKey.tokens: tokens.map((token) => token.toJson()).toList(), + 'voice': voice, }; @override @@ -30,9 +33,10 @@ class TextToSpeechRequestModel { return other is TextToSpeechRequestModel && other.text == text && - other.langCode == langCode; + other.langCode == langCode && + other.voice == voice; } @override - int get hashCode => text.hashCode ^ langCode.hashCode; + int get hashCode => text.hashCode ^ langCode.hashCode ^ voice.hashCode; } diff --git a/lib/pangea/toolbar/message_practice/message_audio_card.dart b/lib/pangea/toolbar/message_practice/message_audio_card.dart index 7bc02242c..bf57035aa 100644 --- a/lib/pangea/toolbar/message_practice/message_audio_card.dart +++ b/lib/pangea/toolbar/message_practice/message_audio_card.dart @@ -8,6 +8,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pages/chat/events/audio_player.dart'; import 'package:fluffychat/pangea/analytics_misc/text_loading_shimmer.dart'; +import 'package:fluffychat/pangea/bot/utils/bot_room_extension.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/text_to_speech/text_to_speech_response_model.dart'; @@ -43,6 +44,7 @@ class MessageAudioCardState extends State { try { audioFile = await widget.messageEvent.requestTextToSpeech( widget.messageEvent.messageDisplayLangCode, + widget.messageEvent.room.botOptions?.targetVoice, ); debugPrint("audio file is now: $audioFile. setting starts and ends..."); if (mounted) setState(() => _isLoading = false); diff --git a/lib/pangea/toolbar/reading_assistance/select_mode_controller.dart b/lib/pangea/toolbar/reading_assistance/select_mode_controller.dart index e0a45a003..eee6bdcbc 100644 --- a/lib/pangea/toolbar/reading_assistance/select_mode_controller.dart +++ b/lib/pangea/toolbar/reading_assistance/select_mode_controller.dart @@ -7,6 +7,7 @@ import 'package:matrix/matrix.dart'; import 'package:path_provider/path_provider.dart'; import 'package:fluffychat/pangea/analytics_misc/lemma_emoji_setter_mixin.dart'; +import 'package:fluffychat/pangea/bot/utils/bot_room_extension.dart'; import 'package:fluffychat/pangea/common/utils/async_state.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_text_model.dart'; @@ -57,6 +58,7 @@ class _AudioLoader extends AsyncLoader<(PangeaAudioFile, File?)> { Future<(PangeaAudioFile, File?)> fetch() async { final audioBytes = await messageEvent.requestTextToSpeech( messageEvent.messageDisplayLangCode, + messageEvent.room.botOptions?.targetVoice, ); File? audioFile; diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index ae0e10471..bfba786b1 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -28,6 +28,7 @@ class Avatar extends StatelessWidget { final double? presenceSize; final Offset? presenceOffset; + final Widget? miniIcon; // Pangea# const Avatar({ @@ -47,6 +48,7 @@ class Avatar extends StatelessWidget { this.userId, this.presenceSize, this.presenceOffset, + this.miniIcon, // Pangea# super.key, }); @@ -138,7 +140,13 @@ class Avatar extends StatelessWidget { ), // #Pangea // if (presenceUserId != null) - if (presenceUserId != null && size >= 32.0 && showPresence) + if (miniIcon != null) + Positioned( + bottom: presenceOffset?.dy ?? -3, + right: presenceOffset?.dx ?? -3, + child: miniIcon!, + ) + else if (presenceUserId != null && size >= 32.0 && showPresence) // Pangea# PresenceBuilder( client: client, diff --git a/lib/widgets/member_actions_popup_menu_button.dart b/lib/widgets/member_actions_popup_menu_button.dart index 9e6de2412..3782b024c 100644 --- a/lib/widgets/member_actions_popup_menu_button.dart +++ b/lib/widgets/member_actions_popup_menu_button.dart @@ -6,6 +6,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/analytics_misc/level_display_name.dart'; import 'package:fluffychat/pangea/bot/utils/bot_name.dart'; +import 'package:fluffychat/pangea/bot/widgets/bot_chat_settings_dialog.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/permission_slider_dialog.dart'; import 'adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; @@ -16,6 +17,9 @@ void showMemberActionsPopupMenu({ required BuildContext context, required User user, void Function()? onMention, + // #Pangea + Room? room, + // Pangea# }) async { final theme = Theme.of(context); final displayname = user.calcDisplayname(); @@ -119,6 +123,17 @@ void showMemberActionsPopupMenu({ ], ), ), + if (user.id == BotName.byEnvironment && room != null) + PopupMenuItem( + value: _MemberActions.botSettings, + child: Row( + children: [ + const Icon(Icons.settings_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).botSettings), + ], + ), + ), // Pangea# if (onMention != null) PopupMenuItem( @@ -340,6 +355,12 @@ void showMemberActionsPopupMenu({ final roomId = roomIdResult.result; if (roomId == null) return; router.go('/rooms/$roomId'); + case _MemberActions.botSettings: + await BotChatSettingsDialog.show( + context: context, + room: room!, + ); + return; // Pangea# case _MemberActions.info: await UserDialog.show( @@ -379,5 +400,6 @@ enum _MemberActions { // #Pangea // report, chat, + botSettings, // Pangea# }