Merge pull request #5279 from pangeachat/5274-move-language-change

chore: replace message toolbar language mismatch popup with button in…
This commit is contained in:
ggurdin 2026-01-20 12:33:57 -05:00 committed by GitHub
commit be9e1f6fac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
57 changed files with 1441 additions and 88 deletions

View file

@ -1,6 +1,6 @@
{
"@@locale": "ar",
"@@last_modified": "2026-01-16 14:33:24.230348",
"@@last_modified": "2026-01-20 12:31:24.671375",
"about": "حول",
"@about": {
"type": "String",
@ -11082,5 +11082,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "ممارسة تصحيح أخطاء القواعد",
"constructUseIncGEDesc": "ممارسة أخطاء القواعد غير الصحيحة",
"fillInBlank": "املأ الفراغ بالخيار الصحيح",
"learn": "تعلم",
"languageUpdated": "تم تحديث اللغة المستهدفة!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1911,7 +1911,7 @@
"playWithAI": "Пакуль гуляйце з ШІ",
"courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!",
"@@locale": "be",
"@@last_modified": "2026-01-16 14:33:05.869532",
"@@last_modified": "2026-01-20 12:31:06.570011",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11964,5 +11964,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Практыка правільнага выкарыстання граматычных памылак",
"constructUseIncGEDesc": "Практыка няправільнага выкарыстання граматычных памылак",
"fillInBlank": "Запоўніце прабел правільным выбарам",
"learn": "Навучыцца",
"languageUpdated": "Мэтавая мова абноўлена!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:49.084569",
"@@last_modified": "2026-01-20 12:31:49.464406",
"about": "সম্পর্কে",
"@about": {
"type": "String",
@ -11969,5 +11969,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "সঠিক ব্যাকরণ ত্রুটি অনুশীলন",
"constructUseIncGEDesc": "ভুল ব্যাকরণ ত্রুটি অনুশীলন",
"fillInBlank": "সঠিক পছন্দ দিয়ে ফাঁকা স্থান পূরণ করুন",
"learn": "শিখুন",
"languageUpdated": "লক্ষ্য ভাষা আপডেট করা হয়েছে!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4279,7 +4279,7 @@
"joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།",
"startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།",
"@@locale": "bo",
"@@last_modified": "2026-01-16 14:33:43.824560",
"@@last_modified": "2026-01-20 12:31:44.969872",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -10619,5 +10619,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Praktik kesalahan tata bahasa yang benar",
"constructUseIncGEDesc": "Praktik kesalahan tata bahasa yang salah",
"fillInBlank": "Isi kekosongan dengan pilihan yang benar",
"learn": "Belajar",
"languageUpdated": "Bahasa target diperbarui!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:08.940071",
"@@last_modified": "2026-01-20 12:31:09.126351",
"about": "Quant a",
"@about": {
"type": "String",
@ -10889,5 +10889,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Pràctica d'errors gramaticals correctes",
"constructUseIncGEDesc": "Pràctica d'errors gramaticals incorrectes",
"fillInBlank": "Omple el buit amb l'elecció correcta",
"learn": "Aprendre",
"languageUpdated": "Idioma objectiu actualitzat!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "cs",
"@@last_modified": "2026-01-16 14:32:59.173160",
"@@last_modified": "2026-01-20 12:31:00.323945",
"about": "O aplikaci",
"@about": {
"type": "String",
@ -11472,5 +11472,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Cvičení správné gramatiky",
"constructUseIncGEDesc": "Cvičení nesprávné gramatiky",
"fillInBlank": "Doplňte prázdné místo správnou volbou",
"learn": "Učit se",
"languageUpdated": "Cílový jazyk byl aktualizován!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:32:06.899995",
"@@last_modified": "2026-01-20 12:30:10.761209",
"@aboutHomeserver": {
"type": "String",
"placeholders": {
@ -11926,5 +11926,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Korrekt grammatikfejl praksis",
"constructUseIncGEDesc": "Ukorrrekt grammatikfejl praksis",
"fillInBlank": "Udfyld det tomme felt med det korrekte valg",
"learn": "Lær",
"languageUpdated": "Mål sprog opdateret!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "de",
"@@last_modified": "2026-01-16 14:32:44.617501",
"@@last_modified": "2026-01-20 12:30:47.434524",
"alwaysUse24HourFormat": "true",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
@ -10872,5 +10872,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Korrekte Grammatikfehlerübung",
"constructUseIncGEDesc": "Falsche Grammatikfehlerübung",
"fillInBlank": "Füllen Sie die Lücke mit der richtigen Wahl aus",
"learn": "Lernen",
"languageUpdated": "Zielsprache aktualisiert!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4456,7 +4456,7 @@
"playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν",
"courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!",
"@@locale": "el",
"@@last_modified": "2026-01-16 14:33:59.313114",
"@@last_modified": "2026-01-20 12:31:59.503296",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11923,5 +11923,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Πρακτική διόρθωσης γραμματικών λαθών",
"constructUseIncGEDesc": "Πρακτική λανθασμένων γραμματικών λαθών",
"fillInBlank": "Συμπληρώστε το κενό με τη σωστή επιλογή",
"learn": "Μάθετε",
"languageUpdated": "Η γλώσσα στόχος ενημερώθηκε!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -5054,5 +5054,7 @@
"constructUseIncGCDesc": "Incorrect grammar category practice",
"constructUseCorGEDesc": "Correct grammar error practice",
"constructUseIncGEDesc": "Incorrect grammar error practice",
"fillInBlank": "Fill in the blank with the correct choice"
"fillInBlank": "Fill in the blank with the correct choice",
"learn": "Learn",
"languageUpdated": "Target language updated!"
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:34:08.644512",
"@@last_modified": "2026-01-20 12:32:07.490560",
"about": "Prio",
"@about": {
"type": "String",
@ -11954,5 +11954,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Praktiko pri ĝusta gramatika eraro",
"constructUseIncGEDesc": "Praktiko pri malĝusta gramatika eraro",
"fillInBlank": "Plenigu la malplenan lokon per la ĝusta elekto",
"learn": "Lerni",
"languageUpdated": "Celo lingvo ĝisdatigita!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "es",
"@@last_modified": "2026-01-16 14:31:58.653004",
"@@last_modified": "2026-01-20 12:29:59.898184",
"about": "Acerca de",
"@about": {
"type": "String",
@ -8099,5 +8099,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Práctica de errores gramaticales correctos",
"constructUseIncGEDesc": "Práctica de errores gramaticales incorrectos",
"fillInBlank": "Completa el espacio en blanco con la opción correcta",
"learn": "Aprender",
"languageUpdated": "¡Idioma objetivo actualizado!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "et",
"@@last_modified": "2026-01-16 14:32:41.585481",
"@@last_modified": "2026-01-20 12:30:45.162738",
"about": "Rakenduse teave",
"@about": {
"type": "String",
@ -11136,5 +11136,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Õige grammatika vea harjutamine",
"constructUseIncGEDesc": "Vale grammatika vea harjutamine",
"fillInBlank": "Täida tühik õige valikuga",
"learn": "Õpi",
"languageUpdated": "Sihtkeel on uuendatud!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "eu",
"@@last_modified": "2026-01-16 14:32:36.050138",
"@@last_modified": "2026-01-20 12:30:40.144354",
"about": "Honi buruz",
"@about": {
"type": "String",
@ -10865,5 +10865,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Gramatika akats zuzenketa praktika",
"constructUseIncGEDesc": "Gramatika akats okerra praktika",
"fillInBlank": "Betekoa bete aukerarik egokienarekin",
"learn": "Ikasi",
"languageUpdated": "Helmuga hizkuntza eguneratua!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:51.512389",
"@@last_modified": "2026-01-20 12:31:52.231221",
"repeatPassword": "تکرار رمزعبور",
"@repeatPassword": {},
"about": "درباره",
@ -11597,5 +11597,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "تمرین خطای گرامری صحیح",
"constructUseIncGEDesc": "تمرین خطای گرامری نادرست",
"fillInBlank": "جای خالی را با گزینه صحیح پر کنید",
"learn": "یاد بگیرید",
"languageUpdated": "زبان هدف به‌روزرسانی شد!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:32:03.875087",
"@@last_modified": "2026-01-20 12:30:08.099637",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11488,5 +11488,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Oikean kielioppivirheen harjoittelu",
"constructUseIncGEDesc": "Väärän kielioppivirheen harjoittelu",
"fillInBlank": "Täytä tyhjä kohta oikealla valinnalla",
"learn": "Oppia",
"languageUpdated": "Kohdekieli päivitetty!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -2787,7 +2787,7 @@
"selectAll": "Piliin lahat",
"deselectAll": "Huwag piliin lahat",
"@@locale": "fil",
"@@last_modified": "2026-01-16 14:33:18.880694",
"@@last_modified": "2026-01-20 12:31:19.884620",
"@setCustomPermissionLevel": {
"type": "String",
"placeholders": {}
@ -11841,5 +11841,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Pagsasanay sa tamang pagkakamali sa gramatika",
"constructUseIncGEDesc": "Pagsasanay sa maling pagkakamali sa gramatika",
"fillInBlank": "Punan ang blangko ng tamang pagpipilian",
"learn": "Matuto",
"languageUpdated": "Na-update ang target na wika!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "fr",
"@@last_modified": "2026-01-16 14:34:20.722657",
"@@last_modified": "2026-01-20 12:32:20.398562",
"about": "À propos",
"@about": {
"type": "String",
@ -11189,5 +11189,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Pratique de correction des erreurs grammaticales",
"constructUseIncGEDesc": "Pratique des erreurs grammaticales incorrectes",
"fillInBlank": "Remplissez le blanc avec le choix correct",
"learn": "Apprendre",
"languageUpdated": "Langue cible mise à jour !",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:34:18.473304",
"@@last_modified": "2026-01-20 12:32:18.033824",
"@customReaction": {
"type": "String",
"placeholders": {}
@ -10863,5 +10863,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Cleachtadh ar earráidí gramadaí ceart",
"constructUseIncGEDesc": "Cleachtadh ar earráidí gramadaí míchruinn",
"fillInBlank": "Líon isteach an folt le rogha cheart",
"learn": "Foghlaim",
"languageUpdated": "Teanga sprioc nuashonraithe!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "gl",
"@@last_modified": "2026-01-16 14:32:01.213945",
"@@last_modified": "2026-01-20 12:30:05.234280",
"about": "Acerca de",
"@about": {
"type": "String",
@ -10862,5 +10862,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Práctica de erro gramatical correcto",
"constructUseIncGEDesc": "Práctica de erro gramatical incorrecto",
"fillInBlank": "Completa o espazo en branco coa opción correcta",
"learn": "Aprender",
"languageUpdated": "Idioma de destino actualizado!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:32:26.413376",
"@@last_modified": "2026-01-20 12:30:31.884050",
"about": "אודות",
"@about": {
"type": "String",
@ -11914,5 +11914,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "תרגול תיקון שגיאות דקדוק",
"constructUseIncGEDesc": "תרגול שגיאות דקדוק לא נכונות",
"fillInBlank": "מלא את החסר עם הבחירה הנכונה",
"learn": "ללמוד",
"languageUpdated": "שפת היעד עודכנה!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4483,7 +4483,7 @@
"playWithAI": "अभी के लिए एआई के साथ खेलें",
"courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!",
"@@locale": "hi",
"@@last_modified": "2026-01-16 14:34:05.778231",
"@@last_modified": "2026-01-20 12:32:05.240015",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11950,5 +11950,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "व्याकरण त्रुटि सुधार अभ्यास",
"constructUseIncGEDesc": "व्याकरण त्रुटि गलत अभ्यास",
"fillInBlank": "सही विकल्प के साथ रिक्त स्थान भरें",
"learn": "सीखें",
"languageUpdated": "लक्षित भाषा अपडेट की गई!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "hr",
"@@last_modified": "2026-01-16 14:32:23.849622",
"@@last_modified": "2026-01-20 12:30:29.823787",
"about": "Informacije",
"@about": {
"type": "String",
@ -11237,5 +11237,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Prakticiranje ispravne gramatičke greške",
"constructUseIncGEDesc": "Prakticiranje pogrešne gramatičke greške",
"fillInBlank": "Ispunite prazno mjesto s ispravnim izborom",
"learn": "Učite",
"languageUpdated": "Ciljani jezik ažuriran!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "hu",
"@@last_modified": "2026-01-16 14:32:10.796625",
"@@last_modified": "2026-01-20 12:30:13.762355",
"about": "Névjegy",
"@about": {
"type": "String",
@ -10866,5 +10866,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Helyes nyelvtani hiba gyakorlás",
"constructUseIncGEDesc": "Helytelen nyelvtani hiba gyakorlás",
"fillInBlank": "Töltsd ki a hiányzó részt a helyes választással",
"learn": "Tanulj",
"languageUpdated": "Cél nyelv frissítve!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:32:31.137719",
"@@last_modified": "2026-01-20 12:30:35.012898",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11943,5 +11943,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Praktiko de ĝusta gramatika eraro",
"constructUseIncGEDesc": "Praktiko de malĝusta gramatika eraro",
"fillInBlank": "Plenigu la malplenan lokon kun la ĝusta elekto",
"learn": "Lerni",
"languageUpdated": "Celo lingvo ĝisdatigita!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:32:13.610901",
"@@last_modified": "2026-01-20 12:30:15.788809",
"setAsCanonicalAlias": "Atur sebagai alias utama",
"@setAsCanonicalAlias": {
"type": "String",
@ -10856,5 +10856,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Latihan kesalahan tata bahasa yang benar",
"constructUseIncGEDesc": "Latihan kesalahan tata bahasa yang salah",
"fillInBlank": "Isi kekosongan dengan pilihan yang benar",
"learn": "Belajar",
"languageUpdated": "Bahasa target diperbarui!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:32:21.289462",
"@@last_modified": "2026-01-20 12:30:26.700297",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11839,5 +11839,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Praktika korrekta gramatikfehler",
"constructUseIncGEDesc": "Praktika inkorrekt gramatikfehler",
"fillInBlank": "Fyll i tomrummet med det korrekta valget",
"learn": "Lær",
"languageUpdated": "Mål sprog opdateret!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:32:53.055805",
"@@last_modified": "2026-01-20 12:30:55.791406",
"about": "Informazioni",
"@about": {
"type": "String",
@ -10868,5 +10868,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Pratica degli errori grammaticali corretti",
"constructUseIncGEDesc": "Pratica degli errori grammaticali scorretti",
"fillInBlank": "Compila lo spazio vuoto con la scelta corretta",
"learn": "Impara",
"languageUpdated": "Lingua target aggiornata!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "ja",
"@@last_modified": "2026-01-16 14:34:03.101722",
"@@last_modified": "2026-01-20 12:32:02.883097",
"about": "このアプリについて",
"@about": {
"type": "String",
@ -11655,5 +11655,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "文法エラーの正しい練習",
"constructUseIncGEDesc": "文法エラーの不正確な練習",
"fillInBlank": "正しい選択肢で空欄を埋めてください",
"learn": "学ぶ",
"languageUpdated": "ターゲット言語が更新されました!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -2594,7 +2594,7 @@
"playWithAI": "ამ დროისთვის ითამაშეთ AI-თან",
"courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!",
"@@locale": "ka",
"@@last_modified": "2026-01-16 14:34:13.710408",
"@@last_modified": "2026-01-20 12:32:12.611848",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11895,5 +11895,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "მართებული გრამატიკული შეცდომების პრაქტიკა",
"constructUseIncGEDesc": "არასწორი გრამატიკული შეცდომების პრაქტიკა",
"fillInBlank": "შეავსეთ ცარიელი ადგილი სწორი არჩევანით",
"learn": "სწავლა",
"languageUpdated": "მიზნობრივი ენა განახლებულია!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:31:56.042093",
"@@last_modified": "2026-01-20 12:29:56.840054",
"about": "소개",
"@about": {
"type": "String",
@ -10973,5 +10973,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "문법 오류 수정 연습",
"constructUseIncGEDesc": "문법 오류 비정상 연습",
"fillInBlank": "올바른 선택으로 빈칸을 채우세요",
"learn": "배우다",
"languageUpdated": "목표 언어가 업데이트되었습니다!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:33:32.087889",
"@@last_modified": "2026-01-20 12:31:36.164653",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11670,5 +11670,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Teisingos gramatikos klaidų praktika",
"constructUseIncGEDesc": "Neteisingos gramatikos klaidų praktika",
"fillInBlank": "Užpildykite tuščią vietą teisingu pasirinkimu",
"learn": "Mokytis",
"languageUpdated": "Tikslo kalba atnaujinta!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:33:21.744947",
"@@last_modified": "2026-01-20 12:31:22.453166",
"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",
@ -10851,5 +10851,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Pareiza gramatikas kļūdu prakse",
"constructUseIncGEDesc": "Nepareiza gramatikas kļūdu prakse",
"fillInBlank": "Aizpildiet tukšo vietu ar pareizo izvēli",
"learn": "Mācīties",
"languageUpdated": "Mērķa valoda atjaunota!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:02.881359",
"@@last_modified": "2026-01-20 12:31:02.821968",
"about": "Om",
"@about": {
"type": "String",
@ -11958,5 +11958,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Korrekt grammatikkfeil praksis",
"constructUseIncGEDesc": "Feil grammatikkfeil praksis",
"fillInBlank": "Fyll inn blanketten med riktig valg",
"learn": "Lær",
"languageUpdated": "Mål språk oppdatert!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:40.784777",
"@@last_modified": "2026-01-20 12:31:42.507524",
"about": "Over ons",
"@about": {
"type": "String",
@ -10865,5 +10865,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Oefening voor correcte grammatica",
"constructUseIncGEDesc": "Oefening voor onjuiste grammatica",
"fillInBlank": "Vul de lege ruimte in met de juiste keuze",
"learn": "Leren",
"languageUpdated": "Doeltaal bijgewerkt!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "pl",
"@@last_modified": "2026-01-16 14:33:54.131854",
"@@last_modified": "2026-01-20 12:31:54.796841",
"about": "O aplikacji",
"@about": {
"type": "String",
@ -10863,5 +10863,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Ćwiczenie poprawnych błędów gramatycznych",
"constructUseIncGEDesc": "Ćwiczenie niepoprawnych błędów gramatycznych",
"fillInBlank": "Uzupełnij lukę poprawnym wyborem",
"learn": "Ucz się",
"languageUpdated": "Język docelowy zaktualizowany!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:32:38.304072",
"@@last_modified": "2026-01-20 12:30:42.601068",
"copiedToClipboard": "Copiada para a área de transferência",
"@copiedToClipboard": {
"type": "String",
@ -11965,5 +11965,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Prática de erro gramatical correto",
"constructUseIncGEDesc": "Prática de erro gramatical incorreto",
"fillInBlank": "Preencha a lacuna com a escolha correta",
"learn": "Aprender",
"languageUpdated": "Idioma de destino atualizado!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:32:33.894131",
"@@last_modified": "2026-01-20 12:30:37.380939",
"about": "Sobre",
"@about": {
"type": "String",
@ -11223,5 +11223,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Prática de erro gramatical correto",
"constructUseIncGEDesc": "Prática de erro gramatical incorreto",
"fillInBlank": "Preencha a lacuna com a escolha correta",
"learn": "Aprender",
"languageUpdated": "Idioma de destino atualizado!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -3331,7 +3331,7 @@
"selectAll": "Selecionar tudo",
"deselectAll": "Desmarcar tudo",
"@@locale": "pt_PT",
"@@last_modified": "2026-01-16 14:33:14.369639",
"@@last_modified": "2026-01-20 12:31:13.609297",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11894,5 +11894,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Prática de erro gramatical correto",
"constructUseIncGEDesc": "Prática de erro gramatical incorreto",
"fillInBlank": "Preencha a lacuna com a escolha correta",
"learn": "Aprender",
"languageUpdated": "Idioma de destino atualizado!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:32:16.042822",
"@@last_modified": "2026-01-20 12:30:21.408747",
"about": "Despre",
"@about": {
"type": "String",
@ -11600,5 +11600,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Practică corectă a erorilor de gramatică",
"constructUseIncGEDesc": "Practică incorectă a erorilor de gramatică",
"fillInBlank": "Completați spațiul gol cu alegerea corectă",
"learn": "Învățați",
"languageUpdated": "Limba țintă a fost actualizată!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "ru",
"@@last_modified": "2026-01-16 14:34:10.739852",
"@@last_modified": "2026-01-20 12:32:09.850624",
"about": "О проекте",
"@about": {
"type": "String",
@ -10970,5 +10970,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Практика исправления грамматических ошибок",
"constructUseIncGEDesc": "Практика неправильных грамматических ошибок",
"fillInBlank": "Заполните пропуск правильным вариантом",
"learn": "Учить",
"languageUpdated": "Целевой язык обновлен!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "sk",
"@@last_modified": "2026-01-16 14:32:18.425596",
"@@last_modified": "2026-01-20 12:30:24.498564",
"about": "O aplikácii",
"@about": {
"type": "String",
@ -11949,5 +11949,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Cvičenie na opravu gramatických chýb",
"constructUseIncGEDesc": "Cvičenie na nesprávne gramatické chyby",
"fillInBlank": "Doplňte prázdne miesto správnou voľbou",
"learn": "Učte sa",
"languageUpdated": "Cieľový jazyk bol aktualizovaný!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -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-16 14:32:46.504404",
"@@last_modified": "2026-01-20 12:30:51.399294",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11946,5 +11946,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Praksa pravilne rabe slovnice",
"constructUseIncGEDesc": "Praksa nepravilne rabe slovnice",
"fillInBlank": "Izpolnite prazno mesto s pravilno izbiro",
"learn": "Učite se",
"languageUpdated": "Ciljni jezik je posodobljen!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:34:16.018548",
"@@last_modified": "2026-01-20 12:32:14.799697",
"about": "О програму",
"@about": {
"type": "String",
@ -11967,5 +11967,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Vežba ispravne gramatike",
"constructUseIncGEDesc": "Vežba nepravilne gramatike",
"fillInBlank": "Popunite prazno mesto sa ispravnim izborom",
"learn": "Učite",
"languageUpdated": "Ciljni jezik je ažuriran!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:56.060391",
"@@last_modified": "2026-01-20 12:31:57.066428",
"about": "Om",
"@about": {
"type": "String",
@ -11343,5 +11343,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Korrekt grammatikfel övning",
"constructUseIncGEDesc": "Inkorrekt grammatikfel övning",
"fillInBlank": "Fyll i det tomma med rätt val",
"learn": "Lär dig",
"languageUpdated": "Målspråk uppdaterat!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:37.303345",
"@@last_modified": "2026-01-20 12:31:40.562260",
"acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது",
"@acceptedTheInvitation": {
"type": "String",
@ -11089,5 +11089,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "சரியான இலக்கண பிழை பயிற்சி",
"constructUseIncGEDesc": "தவறான இலக்கண பிழை பயிற்சி",
"fillInBlank": "சரியான தேர்வுடன் காலியை நிரப்பவும்",
"learn": "கற்றுக்கொள்ளுங்கள்",
"languageUpdated": "இலக்கு மொழி புதுப்பிக்கப்பட்டது!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1920,7 +1920,7 @@
"playWithAI": "ఇప్పుడే AI తో ఆడండి",
"courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!",
"@@locale": "te",
"@@last_modified": "2026-01-16 14:33:29.527681",
"@@last_modified": "2026-01-20 12:31:32.903548",
"@setCustomPermissionLevel": {
"type": "String",
"placeholders": {}
@ -11954,5 +11954,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "సరైన వ్యాకరణ దోషం అభ్యాసం",
"constructUseIncGEDesc": "తప్పు వ్యాకరణ దోషం అభ్యాసం",
"fillInBlank": "సరైన ఎంపికతో ఖాళీని నింపండి",
"learn": "కలవు",
"languageUpdated": "లక్ష్య భాష నవీకరించబడింది!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4456,7 +4456,7 @@
"playWithAI": "เล่นกับ AI ชั่วคราว",
"courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!",
"@@locale": "th",
"@@last_modified": "2026-01-16 14:33:11.816510",
"@@last_modified": "2026-01-20 12:31:11.891533",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11923,5 +11923,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "การฝึกฝนข้อผิดพลาดทางไวยากรณ์ที่ถูกต้อง",
"constructUseIncGEDesc": "การฝึกฝนข้อผิดพลาดทางไวยากรณ์ที่ไม่ถูกต้อง",
"fillInBlank": "กรอกข้อมูลในช่องว่างด้วยตัวเลือกที่ถูกต้อง",
"learn": "เรียนรู้",
"languageUpdated": "อัปเดตภาษาที่ต้องการแล้ว!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "tr",
"@@last_modified": "2026-01-16 14:33:26.649412",
"@@last_modified": "2026-01-20 12:31:28.469826",
"about": "Hakkında",
"@about": {
"type": "String",
@ -11087,5 +11087,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Doğru dil bilgisi hatası pratiği",
"constructUseIncGEDesc": "Yanlış dil bilgisi hatası pratiği",
"fillInBlank": "Boşluğu doğru seçimle doldurun",
"learn": "Öğren",
"languageUpdated": "Hedef dil güncellendi!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "uk",
"@@last_modified": "2026-01-16 14:32:56.338443",
"@@last_modified": "2026-01-20 12:30:57.869011",
"about": "Про застосунок",
"@about": {
"type": "String",
@ -10859,5 +10859,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Практика виправлення граматичних помилок",
"constructUseIncGEDesc": "Практика неправильних граматичних помилок",
"fillInBlank": "Заповніть пропуск правильним вибором",
"learn": "Вчити",
"languageUpdated": "Цільова мова оновлена!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:34.535886",
"@@last_modified": "2026-01-20 12:31:38.101874",
"about": "Giới thiệu",
"@about": {
"type": "String",
@ -6435,5 +6435,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "Thực hành lỗi ngữ pháp đúng",
"constructUseIncGEDesc": "Thực hành lỗi ngữ pháp sai",
"fillInBlank": "Điền vào chỗ trống với lựa chọn đúng",
"learn": "Học",
"languageUpdated": "Ngôn ngữ mục tiêu đã được cập nhật!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1856,7 +1856,7 @@
"selectAll": "全選",
"deselectAll": "取消全選",
"@@locale": "yue",
"@@last_modified": "2026-01-16 14:32:49.483939",
"@@last_modified": "2026-01-20 12:30:53.854617",
"@ignoreUser": {
"type": "String",
"placeholders": {}
@ -11956,5 +11956,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "正確語法錯誤練習",
"constructUseIncGEDesc": "不正確語法錯誤練習",
"fillInBlank": "用正確的選擇填空",
"learn": "學習",
"languageUpdated": "目標語言已更新!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "zh",
"@@last_modified": "2026-01-16 14:33:45.909821",
"@@last_modified": "2026-01-20 12:31:47.017242",
"about": "关于",
"@about": {
"type": "String",
@ -10856,5 +10856,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "正确语法错误练习",
"constructUseIncGEDesc": "不正确语法错误练习",
"fillInBlank": "用正确的选项填空",
"learn": "学习",
"languageUpdated": "目标语言已更新!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-16 14:33:16.316521",
"@@last_modified": "2026-01-20 12:31:16.140892",
"about": "關於",
"@about": {
"type": "String",
@ -10863,5 +10863,30 @@
"@constructUseIncGCDesc": {
"type": "String",
"placeholders": {}
},
"constructUseCorGEDesc": "正確語法錯誤練習",
"constructUseIncGEDesc": "不正確語法錯誤練習",
"fillInBlank": "用正確的選擇填空",
"learn": "學習",
"languageUpdated": "目標語言已更新!",
"@constructUseCorGEDesc": {
"type": "String",
"placeholders": {}
},
"@constructUseIncGEDesc": {
"type": "String",
"placeholders": {}
},
"@fillInBlank": {
"type": "String",
"placeholders": {}
},
"@learn": {
"type": "String",
"placeholders": {}
},
"@languageUpdated": {
"type": "String",
"placeholders": {}
}
}

View file

@ -32,7 +32,6 @@ import 'package:fluffychat/pangea/activity_sessions/activity_session_chat/activi
import 'package:fluffychat/pangea/activity_sessions/activity_session_chat/activity_chat_extension.dart';
import 'package:fluffychat/pangea/analytics_data/analytics_update_dispatcher.dart';
import 'package:fluffychat/pangea/analytics_data/analytics_updater_mixin.dart';
import 'package:fluffychat/pangea/analytics_misc/client_analytics_extension.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart';
import 'package:fluffychat/pangea/analytics_misc/constructs_model.dart';
import 'package:fluffychat/pangea/analytics_misc/level_up/level_up_banner.dart';
@ -2046,31 +2045,6 @@ class ChatController extends State<ChatPageWithRoom>
return;
}
final langCode =
pangeaMessageEvent?.originalSent?.langCode.split('-').first;
if (LanguageMismatchRepo.shouldShowByEvent(event.eventId) &&
langCode != null &&
pangeaMessageEvent?.originalSent?.content.langCodeMatchesL2 == false &&
room.client.allMyAnalyticsRooms.any((r) => r.madeForLang == langCode)) {
LanguageMismatchRepo.setEvent(event.eventId);
OverlayUtil.showLanguageMismatchPopup(
context: context,
targetId: event.eventId,
message: L10n.of(context).messageLanguageMismatchMessage,
targetLanguage: pangeaMessageEvent!.originalSent!.langCode,
onConfirm: () => showToolbar(
event,
pangeaMessageEvent: pangeaMessageEvent,
selectedToken: selectedToken,
mode: mode,
nextEvent: nextEvent,
prevEvent: prevEvent,
),
);
return;
}
final overlayEntry = MessageSelectionOverlay(
chatController: this,
event: event,
@ -2294,6 +2268,36 @@ class ChatController extends State<ChatPageWithRoom>
);
}
Future<void> updateLanguageOnMismatch(String target) async {
final messenger = ScaffoldMessenger.of(context);
messenger.hideCurrentSnackBar();
final resp = await showFutureLoadingDialog(
context: context,
future: () async {
clearSelectedEvents();
await MatrixState.pangeaController.userController.updateProfile(
(profile) {
profile.userSettings.targetLanguage = target;
return profile;
},
waitForDataInSync: true,
);
},
);
if (resp.isError) return;
if (mounted) {
messenger.hideCurrentSnackBar();
messenger.showSnackBar(
SnackBar(
content: Text(
L10n.of(context).languageUpdated,
textAlign: TextAlign.center,
),
),
);
}
}
void _onCloseIT() {
if (choreographer.timesDismissedIT.value >= 3) {
showDisableLanguageToolsPopup();

View file

@ -5,14 +5,10 @@ class LanguageMismatchRepo {
static const Duration displayInterval = Duration(minutes: 30);
static String _roomKey(String roomId) => 'language_mismatch_room_$roomId';
static String _eventKey(String eventId) => 'language_mismatch_event_$eventId';
static bool shouldShowByRoom(String roomId) => _get(_roomKey(roomId));
static bool shouldShowByEvent(String eventId) => _get(_eventKey(eventId));
static Future<void> setRoom(String roomId) async => _set(_roomKey(roomId));
static Future<void> setEvent(String eventId) async =>
_set(_eventKey(eventId));
static Future<void> _set(String key) async {
await _storage.write(

View file

@ -217,10 +217,32 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
}
Future<void> modeDisabled() async {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
ScaffoldMessenger.of(context).showSnackBar(
final target = controller.messageEvent.originalSent?.langCode;
final messenger = ScaffoldMessenger.of(context);
messenger.hideCurrentSnackBar();
messenger.showSnackBar(
SnackBar(
content: Text(L10n.of(context).modeDisabled),
content: Row(
spacing: 12.0,
children: [
Flexible(
child: Text(
L10n.of(context).modeDisabled,
textAlign: TextAlign.center,
),
),
if (target != null)
TextButton(
style: TextButton.styleFrom(
foregroundColor:
Theme.of(context).colorScheme.primaryContainer,
),
onPressed: () =>
widget.controller.updateLanguageOnMismatch(target),
child: Text(L10n.of(context).learn),
),
],
),
),
);
}
@ -405,6 +427,7 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
loading: controller.isLoading &&
mode == selectedMode,
playing: mode == SelectMode.audio && playing,
color: theme.colorScheme.onPrimaryContainer,
),
),
),
@ -435,11 +458,13 @@ class _SelectModeButtonIcon extends StatelessWidget {
final SelectMode mode;
final bool loading;
final bool playing;
final Color color;
const _SelectModeButtonIcon({
required this.mode,
this.loading = false,
this.playing = false,
required this.color,
});
@override
@ -458,10 +483,11 @@ class _SelectModeButtonIcon extends StatelessWidget {
return Icon(
playing ? Icons.pause_outlined : Icons.volume_up,
size: 20,
color: color,
);
}
return Icon(mode.icon, size: 20);
return Icon(mode.icon, size: 20, color: color);
}
}