chore: onboarding updates (#5485)
This commit is contained in:
parent
aae00cd1d6
commit
172f1c96f8
61 changed files with 931 additions and 363 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "ar",
|
||||
"@@last_modified": "2026-01-27 14:02:59.727958",
|
||||
"@@last_modified": "2026-01-28 11:22:30.477643",
|
||||
"about": "حول",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11151,5 +11151,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "ما اللغة التي تتعلمها؟",
|
||||
"searchLanguagesHint": "ابحث عن اللغات المستهدفة",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1910,7 +1910,7 @@
|
|||
"playWithAI": "Пакуль гуляйце з ШІ",
|
||||
"courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!",
|
||||
"@@locale": "be",
|
||||
"@@last_modified": "2026-01-27 14:02:50.270963",
|
||||
"@@last_modified": "2026-01-28 11:22:20.711094",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12033,5 +12033,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Якую мову вы вывучаеце?",
|
||||
"searchLanguagesHint": "Пошук мэтавых моў",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:11.965364",
|
||||
"@@last_modified": "2026-01-28 11:22:41.965760",
|
||||
"about": "সম্পর্কে",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12038,5 +12038,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "আপনি কোন ভাষা শিখছেন?",
|
||||
"searchLanguagesHint": "লক্ষ্য ভাষা অনুসন্ধান করুন",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4278,7 +4278,7 @@
|
|||
"joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།",
|
||||
"startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།",
|
||||
"@@locale": "bo",
|
||||
"@@last_modified": "2026-01-27 14:03:09.952724",
|
||||
"@@last_modified": "2026-01-28 11:22:39.504934",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -10688,5 +10688,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Kedua bahasa apa yang Anda pelajari?",
|
||||
"searchLanguagesHint": "Cari bahasa target",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:51.719519",
|
||||
"@@last_modified": "2026-01-28 11:22:22.285622",
|
||||
"about": "Quant a",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10958,5 +10958,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Quina llengua estàs aprenent?",
|
||||
"searchLanguagesHint": "Cerca llengües objectiu",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "cs",
|
||||
"@@last_modified": "2026-01-27 14:02:46.567796",
|
||||
"@@last_modified": "2026-01-28 11:22:18.388059",
|
||||
"about": "O aplikaci",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11541,5 +11541,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Jaký jazyk se učíte?",
|
||||
"searchLanguagesHint": "Hledejte cílové jazyky",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1929,7 +1929,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-27 14:02:21.118853",
|
||||
"@@last_modified": "2026-01-28 11:21:51.175741",
|
||||
"@aboutHomeserver": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
|
@ -11995,5 +11995,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Hvilket sprog lærer du?",
|
||||
"searchLanguagesHint": "Søg efter målsprog",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "de",
|
||||
"@@last_modified": "2026-01-27 14:02:39.850908",
|
||||
"@@last_modified": "2026-01-28 11:22:11.549404",
|
||||
"alwaysUse24HourFormat": "true",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"description": "Set to true to always display time of day in 24 hour format."
|
||||
|
|
@ -10941,5 +10941,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Welche Sprache lernst du?",
|
||||
"searchLanguagesHint": "Zielsprachen suchen",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4455,7 +4455,7 @@
|
|||
"playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν",
|
||||
"courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!",
|
||||
"@@locale": "el",
|
||||
"@@last_modified": "2026-01-27 14:03:17.212773",
|
||||
"@@last_modified": "2026-01-28 11:22:48.079247",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11992,5 +11992,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Ποια γλώσσα μαθαίνετε;",
|
||||
"searchLanguagesHint": "Αναζητήστε γλώσσες στόχου",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -5063,5 +5063,7 @@
|
|||
"publicInviteDescSpace": "Search for users to invite them to this space.",
|
||||
"useActivityImageAsChatBackground": "Use activity image as chat background",
|
||||
"chatWithSupport": "Chat with Support",
|
||||
"newCourseAccess": "By default, courses are publicly searchable and require admin approval to join. You can edit these settings at any time."
|
||||
"newCourseAccess": "By default, courses are publicly searchable and require admin approval to join. You can edit these settings at any time.",
|
||||
"onboardingLanguagesTitle": "What language are you learning?",
|
||||
"searchLanguagesHint": "Search target languages"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:21.507072",
|
||||
"@@last_modified": "2026-01-28 11:22:51.689025",
|
||||
"about": "Prio",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12023,5 +12023,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Kian lingvon vi lernas?",
|
||||
"searchLanguagesHint": "Serĉu celajn lingvojn",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "es",
|
||||
"@@last_modified": "2026-01-27 14:02:15.353643",
|
||||
"@@last_modified": "2026-01-28 11:21:46.446878",
|
||||
"about": "Acerca de",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -8168,5 +8168,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "¿Qué idioma estás aprendiendo?",
|
||||
"searchLanguagesHint": "Buscar idiomas objetivo",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "et",
|
||||
"@@last_modified": "2026-01-27 14:02:38.644251",
|
||||
"@@last_modified": "2026-01-28 11:22:07.195180",
|
||||
"about": "Rakenduse teave",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11205,5 +11205,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Millist keelt sa õpid?",
|
||||
"searchLanguagesHint": "Otsi sihtkeeli",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "eu",
|
||||
"@@last_modified": "2026-01-27 14:02:35.628448",
|
||||
"@@last_modified": "2026-01-28 11:22:04.786494",
|
||||
"about": "Honi buruz",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10934,5 +10934,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Zer hizkuntza ikasten ari zara?",
|
||||
"searchLanguagesHint": "Bilatu helburu hizkuntzak",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:13.031797",
|
||||
"@@last_modified": "2026-01-28 11:22:43.436826",
|
||||
"repeatPassword": "تکرار رمزعبور",
|
||||
"@repeatPassword": {},
|
||||
"about": "درباره",
|
||||
|
|
@ -11666,5 +11666,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "شما در حال یادگیری چه زبانی هستید؟",
|
||||
"searchLanguagesHint": "زبانهای هدف را جستجو کنید",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4008,7 +4008,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-27 14:02:18.192045",
|
||||
"@@last_modified": "2026-01-28 11:21:50.004841",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11557,5 +11557,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Mitä kieltä opit?",
|
||||
"searchLanguagesHint": "Etsi kohdekieliä",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2786,7 +2786,7 @@
|
|||
"selectAll": "Piliin lahat",
|
||||
"deselectAll": "Huwag piliin lahat",
|
||||
"@@locale": "fil",
|
||||
"@@last_modified": "2026-01-27 14:02:56.958154",
|
||||
"@@last_modified": "2026-01-28 11:22:27.725706",
|
||||
"@setCustomPermissionLevel": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11910,5 +11910,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Anong wika ang iyong pinag-aaralan?",
|
||||
"searchLanguagesHint": "Maghanap ng mga target na wika",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "fr",
|
||||
"@@last_modified": "2026-01-27 14:03:27.361514",
|
||||
"@@last_modified": "2026-01-28 11:22:58.035061",
|
||||
"about": "À propos",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11258,5 +11258,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Quelle langue apprenez-vous ?",
|
||||
"searchLanguagesHint": "Recherchez des langues cibles",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4516,7 +4516,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-27 14:03:26.279031",
|
||||
"@@last_modified": "2026-01-28 11:22:56.916598",
|
||||
"@customReaction": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -10932,5 +10932,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Cén teanga atá á foghlaim agat?",
|
||||
"searchLanguagesHint": "Cuardaigh teangacha sprioc",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "gl",
|
||||
"@@last_modified": "2026-01-27 14:02:17.041137",
|
||||
"@@last_modified": "2026-01-28 11:21:48.193565",
|
||||
"about": "Acerca de",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10931,5 +10931,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Que idioma estás aprendendo?",
|
||||
"searchLanguagesHint": "Busca idiomas de destino",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:31.662677",
|
||||
"@@last_modified": "2026-01-28 11:22:00.895298",
|
||||
"about": "אודות",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11983,5 +11983,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "איזו שפה אתה לומד?",
|
||||
"searchLanguagesHint": "חפש שפות יעד",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4482,7 +4482,7 @@
|
|||
"playWithAI": "अभी के लिए एआई के साथ खेलें",
|
||||
"courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!",
|
||||
"@@locale": "hi",
|
||||
"@@last_modified": "2026-01-27 14:03:20.292018",
|
||||
"@@last_modified": "2026-01-28 11:22:50.465177",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12019,5 +12019,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "आप कौन सी भाषा सीख रहे हैं?",
|
||||
"searchLanguagesHint": "लक्षित भाषाएँ खोजें",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "hr",
|
||||
"@@last_modified": "2026-01-27 14:02:30.204264",
|
||||
"@@last_modified": "2026-01-28 11:21:59.771425",
|
||||
"about": "Informacije",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11306,5 +11306,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Koji jezik učite?",
|
||||
"searchLanguagesHint": "Pretraži ciljne jezike",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "hu",
|
||||
"@@last_modified": "2026-01-27 14:02:22.464338",
|
||||
"@@last_modified": "2026-01-28 11:21:52.684213",
|
||||
"about": "Névjegy",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10935,5 +10935,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Milyen nyelvet tanulsz?",
|
||||
"searchLanguagesHint": "Keresd a célnyelveket",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1957,7 +1957,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-27 14:02:33.390978",
|
||||
"@@last_modified": "2026-01-28 11:22:02.235990",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12012,5 +12012,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Kia lingvo vi lernas?",
|
||||
"searchLanguagesHint": "Serĉu celajn lingvojn",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:23.466673",
|
||||
"@@last_modified": "2026-01-28 11:21:53.689466",
|
||||
"setAsCanonicalAlias": "Atur sebagai alias utama",
|
||||
"@setAsCanonicalAlias": {
|
||||
"type": "String",
|
||||
|
|
@ -10925,5 +10925,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Bahasa apa yang Anda pelajari?",
|
||||
"searchLanguagesHint": "Cari bahasa target",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4371,7 +4371,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-27 14:02:28.999815",
|
||||
"@@last_modified": "2026-01-28 11:21:58.032557",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11908,5 +11908,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Cén teanga atá á foghlaim agat?",
|
||||
"searchLanguagesHint": "Cuardaigh teangacha sprioc",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:43.998266",
|
||||
"@@last_modified": "2026-01-28 11:22:15.909371",
|
||||
"about": "Informazioni",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10937,5 +10937,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Quale lingua stai imparando?",
|
||||
"searchLanguagesHint": "Cerca lingue target",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "ja",
|
||||
"@@last_modified": "2026-01-27 14:03:18.964652",
|
||||
"@@last_modified": "2026-01-28 11:22:49.278909",
|
||||
"about": "このアプリについて",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11724,5 +11724,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "どの言語を学んでいますか?",
|
||||
"searchLanguagesHint": "ターゲット言語を検索",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2593,7 +2593,7 @@
|
|||
"playWithAI": "ამ დროისთვის ითამაშეთ AI-თან",
|
||||
"courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!",
|
||||
"@@locale": "ka",
|
||||
"@@last_modified": "2026-01-27 14:03:23.702338",
|
||||
"@@last_modified": "2026-01-28 11:22:53.904103",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11964,5 +11964,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "რომელი ენა სწავლობთ?",
|
||||
"searchLanguagesHint": "ძებნა მიზნობრივი ენების",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:13.792128",
|
||||
"@@last_modified": "2026-01-28 11:21:45.008877",
|
||||
"about": "소개",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11042,5 +11042,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "어떤 언어를 배우고 있나요?",
|
||||
"searchLanguagesHint": "목표 언어 검색",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -3860,7 +3860,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-27 14:03:05.189233",
|
||||
"@@last_modified": "2026-01-28 11:22:34.341908",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11739,5 +11739,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Kokią kalbą mokotės?",
|
||||
"searchLanguagesHint": "Ieškoti tikslo kalbų",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -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-27 14:02:58.530525",
|
||||
"@@last_modified": "2026-01-28 11:22:29.356174",
|
||||
"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",
|
||||
|
|
@ -10920,5 +10920,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Kuru valodu tu mācies?",
|
||||
"searchLanguagesHint": "Meklēt mērķa valodas",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:48.767207",
|
||||
"@@last_modified": "2026-01-28 11:22:19.521122",
|
||||
"about": "Om",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12027,5 +12027,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Hvilket språk lærer du?",
|
||||
"searchLanguagesHint": "Søk etter målspråk",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:08.964846",
|
||||
"@@last_modified": "2026-01-28 11:22:38.374548",
|
||||
"about": "Over ons",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10934,5 +10934,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Welke taal ben je aan het leren?",
|
||||
"searchLanguagesHint": "Zoek doeltalen",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "pl",
|
||||
"@@last_modified": "2026-01-27 14:03:14.463461",
|
||||
"@@last_modified": "2026-01-28 11:22:45.302604",
|
||||
"about": "O aplikacji",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10932,5 +10932,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Jakiego języka się uczysz?",
|
||||
"searchLanguagesHint": "Szukaj języków docelowych",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:37.702228",
|
||||
"@@last_modified": "2026-01-28 11:22:05.803053",
|
||||
"copiedToClipboard": "Copiada para a área de transferência",
|
||||
"@copiedToClipboard": {
|
||||
"type": "String",
|
||||
|
|
@ -12034,5 +12034,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Qual idioma você está aprendendo?",
|
||||
"searchLanguagesHint": "Pesquise idiomas-alvo",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:34.316481",
|
||||
"@@last_modified": "2026-01-28 11:22:03.356659",
|
||||
"about": "Sobre",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11292,5 +11292,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Qual idioma você está aprendendo?",
|
||||
"searchLanguagesHint": "Pesquise idiomas-alvo",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -3330,7 +3330,7 @@
|
|||
"selectAll": "Selecionar tudo",
|
||||
"deselectAll": "Desmarcar tudo",
|
||||
"@@locale": "pt_PT",
|
||||
"@@last_modified": "2026-01-27 14:02:54.292550",
|
||||
"@@last_modified": "2026-01-28 11:22:25.268348",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11963,5 +11963,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Qual idioma você está aprendendo?",
|
||||
"searchLanguagesHint": "Pesquise idiomas-alvo",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:25.277330",
|
||||
"@@last_modified": "2026-01-28 11:21:55.514912",
|
||||
"about": "Despre",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11669,5 +11669,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Ce limbă înveți?",
|
||||
"searchLanguagesHint": "Caută limbi țintă",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "ru",
|
||||
"@@last_modified": "2026-01-27 14:03:22.446889",
|
||||
"@@last_modified": "2026-01-28 11:22:52.811123",
|
||||
"about": "О проекте",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11042,5 +11042,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Какой язык вы изучаете?",
|
||||
"searchLanguagesHint": "Поиск целевых языков",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "sk",
|
||||
"@@last_modified": "2026-01-27 14:02:27.134602",
|
||||
"@@last_modified": "2026-01-28 11:21:56.691598",
|
||||
"about": "O aplikácii",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12018,5 +12018,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Aký jazyk sa učíte?",
|
||||
"searchLanguagesHint": "Hľadajte cieľové jazyky",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2463,7 +2463,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-27 14:02:41.198883",
|
||||
"@@last_modified": "2026-01-28 11:22:12.982879",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12015,5 +12015,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Katero jezika se učiš?",
|
||||
"searchLanguagesHint": "Išči ciljne jezike",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:24.807506",
|
||||
"@@last_modified": "2026-01-28 11:22:55.286222",
|
||||
"about": "О програму",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12036,5 +12036,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Koji jezik učite?",
|
||||
"searchLanguagesHint": "Pretraži ciljne jezike",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:15.575050",
|
||||
"@@last_modified": "2026-01-28 11:22:46.768605",
|
||||
"about": "Om",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11412,5 +11412,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Vilket språk lär du dig?",
|
||||
"searchLanguagesHint": "Sök efter målspråk",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:07.633079",
|
||||
"@@last_modified": "2026-01-28 11:22:37.250743",
|
||||
"acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது",
|
||||
"@acceptedTheInvitation": {
|
||||
"type": "String",
|
||||
|
|
@ -11158,5 +11158,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "நீங்கள் எது மொழி கற்றுக்கொள்கிறீர்கள்?",
|
||||
"searchLanguagesHint": "இலக்கு மொழிகளை தேடுங்கள்",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1919,7 +1919,7 @@
|
|||
"playWithAI": "ఇప్పుడే AI తో ఆడండి",
|
||||
"courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!",
|
||||
"@@locale": "te",
|
||||
"@@last_modified": "2026-01-27 14:03:02.156703",
|
||||
"@@last_modified": "2026-01-28 11:22:33.163067",
|
||||
"@setCustomPermissionLevel": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12023,5 +12023,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "మీరు ఏ భాష నేర్చుకుంటున్నారు?",
|
||||
"searchLanguagesHint": "లక్ష్య భాషలను శోధించండి",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4455,7 +4455,7 @@
|
|||
"playWithAI": "เล่นกับ AI ชั่วคราว",
|
||||
"courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!",
|
||||
"@@locale": "th",
|
||||
"@@last_modified": "2026-01-27 14:02:53.265962",
|
||||
"@@last_modified": "2026-01-28 11:22:23.457945",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11992,5 +11992,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "คุณกำลังเรียนภาษาอะไรอยู่?",
|
||||
"searchLanguagesHint": "ค้นหาภาษาที่ต้องการ",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "tr",
|
||||
"@@last_modified": "2026-01-27 14:03:00.927147",
|
||||
"@@last_modified": "2026-01-28 11:22:31.719920",
|
||||
"about": "Hakkında",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11156,5 +11156,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Hangi dili öğreniyorsunuz?",
|
||||
"searchLanguagesHint": "Hedef dilleri arayın",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "uk",
|
||||
"@@last_modified": "2026-01-27 14:02:45.151936",
|
||||
"@@last_modified": "2026-01-28 11:22:17.132130",
|
||||
"about": "Про застосунок",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10928,5 +10928,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Яку мову ви вивчаєте?",
|
||||
"searchLanguagesHint": "Шукати цільові мови",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:03:06.468185",
|
||||
"@@last_modified": "2026-01-28 11:22:35.606622",
|
||||
"about": "Giới thiệu",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -6504,5 +6504,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "Bạn đang học ngôn ngữ nào?",
|
||||
"searchLanguagesHint": "Tìm kiếm ngôn ngữ mục tiêu",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1855,7 +1855,7 @@
|
|||
"selectAll": "全選",
|
||||
"deselectAll": "取消全選",
|
||||
"@@locale": "yue",
|
||||
"@@last_modified": "2026-01-27 14:02:42.486712",
|
||||
"@@last_modified": "2026-01-28 11:22:14.017616",
|
||||
"@ignoreUser": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12025,5 +12025,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "你正在學習什麼語言?",
|
||||
"searchLanguagesHint": "搜尋目標語言",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "zh",
|
||||
"@@last_modified": "2026-01-27 14:03:10.872296",
|
||||
"@@last_modified": "2026-01-28 11:22:40.631434",
|
||||
"about": "关于",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10925,5 +10925,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "你正在学习什么语言?",
|
||||
"searchLanguagesHint": "搜索目标语言",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-01-27 14:02:55.518251",
|
||||
"@@last_modified": "2026-01-28 11:22:26.284769",
|
||||
"about": "關於",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10932,5 +10932,15 @@
|
|||
"@newCourseAccess": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"onboardingLanguagesTitle": "你正在學習什麼語言?",
|
||||
"searchLanguagesHint": "搜尋目標語言",
|
||||
"@onboardingLanguagesTitle": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@searchLanguagesHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2015,18 +2015,6 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
bool get _isToolbarOpen =>
|
||||
MatrixState.pAnyState.isOverlayOpen(RegExp(r'^message_toolbar_overlay$'));
|
||||
|
||||
bool showMessageShimmer(Event event) {
|
||||
if (event.type != EventTypes.Message) return false;
|
||||
if (!(event.eventId == buttonEventID)) return false;
|
||||
if (event.messageType == MessageTypes.Text) {
|
||||
return !InstructionsEnum.clickTextMessages.isToggledOff;
|
||||
}
|
||||
if (event.messageType == MessageTypes.Audio) {
|
||||
return !InstructionsEnum.clickAudioMessages.isToggledOff;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void showToolbar(
|
||||
Event event, {
|
||||
PangeaMessageEvent? pangeaMessageEvent,
|
||||
|
|
@ -2059,14 +2047,11 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
);
|
||||
|
||||
// you've clicked a message so lets turn this off
|
||||
InstructionsEnum.clickMessage.setToggledOff(true);
|
||||
if (event.messageType == MessageTypes.Text &&
|
||||
!InstructionsEnum.clickTextMessages.isToggledOff) {
|
||||
InstructionsEnum.clickTextMessages.setToggledOff(true);
|
||||
if (!InstructionsEnum.clickMessage.isToggledOff) {
|
||||
InstructionsEnum.clickMessage.setToggledOff(true);
|
||||
}
|
||||
if (event.messageType == MessageTypes.Audio &&
|
||||
!InstructionsEnum.clickAudioMessages.isToggledOff) {
|
||||
InstructionsEnum.clickAudioMessages.setToggledOff(true);
|
||||
if (!InstructionsEnum.shimmerNewToken.isToggledOff) {
|
||||
InstructionsEnum.shimmerNewToken.setToggledOff(true);
|
||||
}
|
||||
|
||||
if (!kIsWeb) {
|
||||
|
|
|
|||
|
|
@ -11,8 +11,10 @@ import 'package:matrix/matrix.dart';
|
|||
|
||||
import 'package:fluffychat/config/app_config.dart';
|
||||
import 'package:fluffychat/pages/chat/chat.dart';
|
||||
import 'package:fluffychat/pangea/common/widgets/shimmer_background.dart';
|
||||
import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/pangea/events/models/pangea_token_model.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instructions_enum.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/message_practice/token_practice_button.dart';
|
||||
|
|
@ -446,6 +448,10 @@ class HtmlMessage extends StatelessWidget {
|
|||
: false;
|
||||
|
||||
final isNew = token != null && newTokens.contains(token.text);
|
||||
final isFirstNewToken = isNew && newTokens.first == token.text;
|
||||
final showShimmer =
|
||||
!InstructionsEnum.shimmerNewToken.isToggledOff && isFirstNewToken;
|
||||
|
||||
final tokenWidth = renderer.tokenTextWidthForContainer(
|
||||
node.text,
|
||||
Theme.of(context).colorScheme.primary.withAlpha(200),
|
||||
|
|
@ -500,19 +506,25 @@ class HtmlMessage extends StatelessWidget {
|
|||
: null,
|
||||
child: HoverBuilder(
|
||||
builder: (context, hovered) {
|
||||
return UnderlineText(
|
||||
text: node.text.trim(),
|
||||
style: existingStyle,
|
||||
linkStyle: linkStyle,
|
||||
textDirection: pangeaMessageEvent?.textDirection,
|
||||
underlineColor: TokenRenderingUtil.underlineColor(
|
||||
underlineColor,
|
||||
selected: selected,
|
||||
highlighted: highlighted,
|
||||
isNew: isNew,
|
||||
practiceMode: readingAssistanceMode ==
|
||||
ReadingAssistanceMode.practiceMode,
|
||||
hovered: hovered,
|
||||
return ShimmerBackground(
|
||||
enabled: showShimmer,
|
||||
borderRadius: BorderRadius.circular(4.0),
|
||||
child: UnderlineText(
|
||||
text: node.text.trim(),
|
||||
style: existingStyle,
|
||||
linkStyle: linkStyle,
|
||||
textDirection:
|
||||
pangeaMessageEvent?.textDirection,
|
||||
underlineColor:
|
||||
TokenRenderingUtil.underlineColor(
|
||||
underlineColor,
|
||||
selected: selected,
|
||||
highlighted: highlighted,
|
||||
isNew: isNew,
|
||||
practiceMode: readingAssistanceMode ==
|
||||
ReadingAssistanceMode.practiceMode,
|
||||
hovered: hovered,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ 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/common/widgets/pressable_button.dart';
|
||||
import 'package:fluffychat/pangea/common/widgets/shimmer_background.dart';
|
||||
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
|
||||
import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/utils/date_time_extension.dart';
|
||||
|
|
@ -603,228 +602,223 @@ class Message extends StatelessWidget {
|
|||
child: ValueListenableBuilder(
|
||||
valueListenable: controller
|
||||
.depressMessageButton,
|
||||
// #Pangea
|
||||
child: ShimmerBackground(
|
||||
enabled: controller
|
||||
.showMessageShimmer(
|
||||
event,
|
||||
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: noBubble
|
||||
? Colors.transparent
|
||||
: color,
|
||||
borderRadius:
|
||||
borderRadius,
|
||||
),
|
||||
// Pangea#
|
||||
child: Container(
|
||||
decoration:
|
||||
BoxDecoration(
|
||||
color: noBubble
|
||||
? Colors
|
||||
.transparent
|
||||
: color,
|
||||
borderRadius:
|
||||
borderRadius,
|
||||
),
|
||||
clipBehavior:
|
||||
Clip.antiAlias,
|
||||
// #Pangea
|
||||
child:
|
||||
CompositedTransformTarget(
|
||||
link: MatrixState
|
||||
clipBehavior:
|
||||
Clip.antiAlias,
|
||||
// #Pangea
|
||||
child:
|
||||
CompositedTransformTarget(
|
||||
link: MatrixState
|
||||
.pAnyState
|
||||
.layerLinkAndKey(
|
||||
event.eventId,
|
||||
)
|
||||
.link,
|
||||
// child: BubbleBackground(
|
||||
// colors: colors,
|
||||
// ignore: noBubble || !ownMessage,
|
||||
// scrollController: scrollController,
|
||||
// Pangea#
|
||||
child: Container(
|
||||
// #Pangea
|
||||
key: MatrixState
|
||||
.pAnyState
|
||||
.layerLinkAndKey(
|
||||
event.eventId,
|
||||
)
|
||||
.link,
|
||||
// child: BubbleBackground(
|
||||
// colors: colors,
|
||||
// ignore: noBubble || !ownMessage,
|
||||
// scrollController: scrollController,
|
||||
.key,
|
||||
// Pangea#
|
||||
child: Container(
|
||||
// #Pangea
|
||||
key: MatrixState
|
||||
.pAnyState
|
||||
.layerLinkAndKey(
|
||||
event.eventId,
|
||||
)
|
||||
.key,
|
||||
// Pangea#
|
||||
decoration:
|
||||
BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius
|
||||
.circular(
|
||||
AppConfig
|
||||
.borderRadius,
|
||||
),
|
||||
decoration:
|
||||
BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius
|
||||
.circular(
|
||||
AppConfig
|
||||
.borderRadius,
|
||||
),
|
||||
constraints:
|
||||
const BoxConstraints(
|
||||
maxWidth: FluffyThemes
|
||||
.columnWidth *
|
||||
1.5,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize:
|
||||
MainAxisSize
|
||||
.min,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment
|
||||
.start,
|
||||
children: <Widget>[
|
||||
if ({
|
||||
RelationshipTypes
|
||||
.reply,
|
||||
RelationshipTypes
|
||||
.thread,
|
||||
}.contains(
|
||||
event
|
||||
.relationshipType,
|
||||
))
|
||||
FutureBuilder<
|
||||
Event?>(
|
||||
future: event
|
||||
.getReplyEvent(
|
||||
timeline,
|
||||
),
|
||||
builder: (
|
||||
BuildContext
|
||||
context,
|
||||
snapshot,
|
||||
) {
|
||||
final replyEvent = snapshot
|
||||
.hasData
|
||||
? snapshot
|
||||
.data!
|
||||
: Event(
|
||||
eventId: event.relationshipEventId!,
|
||||
content: {
|
||||
'msgtype': 'm.text',
|
||||
'body': '...',
|
||||
},
|
||||
// #Pangea
|
||||
// senderId: event
|
||||
// .senderId,
|
||||
senderId: "",
|
||||
// Pangea#
|
||||
type: 'm.room.message',
|
||||
room: event.room,
|
||||
status: EventStatus.sent,
|
||||
originServerTs: DateTime.now(),
|
||||
);
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(
|
||||
left:
|
||||
16,
|
||||
right:
|
||||
16,
|
||||
top:
|
||||
8,
|
||||
),
|
||||
),
|
||||
constraints:
|
||||
const BoxConstraints(
|
||||
maxWidth: FluffyThemes
|
||||
.columnWidth *
|
||||
1.5,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize:
|
||||
MainAxisSize
|
||||
.min,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment
|
||||
.start,
|
||||
children: <Widget>[
|
||||
if ({
|
||||
RelationshipTypes
|
||||
.reply,
|
||||
RelationshipTypes
|
||||
.thread,
|
||||
}.contains(
|
||||
event
|
||||
.relationshipType,
|
||||
))
|
||||
FutureBuilder<
|
||||
Event?>(
|
||||
future: event
|
||||
.getReplyEvent(
|
||||
timeline,
|
||||
),
|
||||
builder: (
|
||||
BuildContext
|
||||
context,
|
||||
snapshot,
|
||||
) {
|
||||
final replyEvent = snapshot
|
||||
.hasData
|
||||
? snapshot
|
||||
.data!
|
||||
: Event(
|
||||
eventId:
|
||||
event.relationshipEventId!,
|
||||
content: {
|
||||
'msgtype': 'm.text',
|
||||
'body': '...',
|
||||
},
|
||||
// #Pangea
|
||||
// senderId: event
|
||||
// .senderId,
|
||||
senderId:
|
||||
"",
|
||||
// Pangea#
|
||||
type:
|
||||
'm.room.message',
|
||||
room:
|
||||
event.room,
|
||||
status:
|
||||
EventStatus.sent,
|
||||
originServerTs:
|
||||
DateTime.now(),
|
||||
);
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
left:
|
||||
16,
|
||||
right:
|
||||
16,
|
||||
top: 8,
|
||||
),
|
||||
child:
|
||||
Material(
|
||||
color: Colors
|
||||
.transparent,
|
||||
borderRadius:
|
||||
ReplyContent.borderRadius,
|
||||
child:
|
||||
Material(
|
||||
color:
|
||||
Colors.transparent,
|
||||
InkWell(
|
||||
borderRadius:
|
||||
ReplyContent.borderRadius,
|
||||
onTap: () =>
|
||||
scrollToEventId(
|
||||
replyEvent.eventId,
|
||||
),
|
||||
child:
|
||||
InkWell(
|
||||
borderRadius:
|
||||
ReplyContent.borderRadius,
|
||||
onTap: () =>
|
||||
scrollToEventId(
|
||||
replyEvent.eventId,
|
||||
),
|
||||
AbsorbPointer(
|
||||
child:
|
||||
AbsorbPointer(
|
||||
child: ReplyContent(
|
||||
replyEvent,
|
||||
ownMessage: ownMessage,
|
||||
timeline: timeline,
|
||||
),
|
||||
ReplyContent(
|
||||
replyEvent,
|
||||
ownMessage: ownMessage,
|
||||
timeline: timeline,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
MessageContent(
|
||||
displayEvent,
|
||||
textColor:
|
||||
textColor,
|
||||
linkColor:
|
||||
linkColor,
|
||||
onInfoTab:
|
||||
onInfoTab,
|
||||
borderRadius:
|
||||
borderRadius,
|
||||
timeline:
|
||||
timeline,
|
||||
selected:
|
||||
selected,
|
||||
// #Pangea
|
||||
pangeaMessageEvent:
|
||||
pangeaMessageEvent,
|
||||
controller:
|
||||
controller,
|
||||
nextEvent:
|
||||
nextEvent,
|
||||
prevEvent:
|
||||
previousEvent,
|
||||
// Pangea#
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
if (event
|
||||
.hasAggregatedEvents(
|
||||
timeline,
|
||||
RelationshipTypes
|
||||
.edit,
|
||||
))
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
bottom:
|
||||
8.0,
|
||||
left:
|
||||
16.0,
|
||||
right:
|
||||
16.0,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize:
|
||||
MainAxisSize
|
||||
.min,
|
||||
spacing:
|
||||
4.0,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.edit_outlined,
|
||||
MessageContent(
|
||||
displayEvent,
|
||||
textColor:
|
||||
textColor,
|
||||
linkColor:
|
||||
linkColor,
|
||||
onInfoTab:
|
||||
onInfoTab,
|
||||
borderRadius:
|
||||
borderRadius,
|
||||
timeline:
|
||||
timeline,
|
||||
selected:
|
||||
selected,
|
||||
// #Pangea
|
||||
pangeaMessageEvent:
|
||||
pangeaMessageEvent,
|
||||
controller:
|
||||
controller,
|
||||
nextEvent:
|
||||
nextEvent,
|
||||
prevEvent:
|
||||
previousEvent,
|
||||
// Pangea#
|
||||
),
|
||||
if (event
|
||||
.hasAggregatedEvents(
|
||||
timeline,
|
||||
RelationshipTypes
|
||||
.edit,
|
||||
))
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets
|
||||
.only(
|
||||
bottom: 8.0,
|
||||
left: 16.0,
|
||||
right: 16.0,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize:
|
||||
MainAxisSize
|
||||
.min,
|
||||
spacing:
|
||||
4.0,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.edit_outlined,
|
||||
color: textColor
|
||||
.withAlpha(
|
||||
164,
|
||||
),
|
||||
size:
|
||||
14,
|
||||
),
|
||||
Text(
|
||||
displayEvent
|
||||
.originServerTs
|
||||
.localizedTimeShort(
|
||||
context,
|
||||
),
|
||||
style:
|
||||
TextStyle(
|
||||
color:
|
||||
textColor.withAlpha(
|
||||
164,
|
||||
),
|
||||
size:
|
||||
14,
|
||||
fontSize:
|
||||
11,
|
||||
),
|
||||
Text(
|
||||
displayEvent
|
||||
.originServerTs
|
||||
.localizedTimeShort(
|
||||
context,
|
||||
),
|
||||
style:
|
||||
TextStyle(
|
||||
color:
|
||||
textColor.withAlpha(
|
||||
164,
|
||||
),
|
||||
fontSize:
|
||||
11,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -22,30 +22,33 @@ class ShimmerBackground extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (!enabled) {
|
||||
return child;
|
||||
}
|
||||
|
||||
final borderRadius =
|
||||
this.borderRadius ?? BorderRadius.circular(AppConfig.borderRadius);
|
||||
return Stack(
|
||||
children: [
|
||||
child,
|
||||
if (enabled)
|
||||
Positioned.fill(
|
||||
child: IgnorePointer(
|
||||
child: ClipRRect(
|
||||
borderRadius: borderRadius,
|
||||
child: Shimmer.fromColors(
|
||||
baseColor: baseColor ?? shimmerColor.withValues(alpha: 0.1),
|
||||
highlightColor: shimmerColor.withValues(alpha: 0.6),
|
||||
direction: ShimmerDirection.ltr,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: shimmerColor.withValues(alpha: 0.3),
|
||||
borderRadius: borderRadius,
|
||||
),
|
||||
Positioned.fill(
|
||||
child: IgnorePointer(
|
||||
child: ClipRRect(
|
||||
borderRadius: borderRadius,
|
||||
child: Shimmer.fromColors(
|
||||
baseColor: baseColor ?? shimmerColor.withValues(alpha: 0.1),
|
||||
highlightColor: shimmerColor.withValues(alpha: 0.6),
|
||||
direction: ShimmerDirection.ltr,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: shimmerColor.withValues(alpha: 0.3),
|
||||
borderRadius: borderRadius,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ enum InstructionsEnum {
|
|||
setLemmaEmoji,
|
||||
disableLanguageTools,
|
||||
selectMeaning,
|
||||
clickTextMessages,
|
||||
clickAudioMessages,
|
||||
dismissSupportChat,
|
||||
shimmerNewToken,
|
||||
shimmerTranslation,
|
||||
}
|
||||
|
||||
extension InstructionsEnumExtension on InstructionsEnum {
|
||||
|
|
@ -66,9 +66,9 @@ extension InstructionsEnumExtension on InstructionsEnum {
|
|||
case InstructionsEnum.noSavedActivitiesYet:
|
||||
case InstructionsEnum.setLemmaEmoji:
|
||||
case InstructionsEnum.disableLanguageTools:
|
||||
case InstructionsEnum.clickTextMessages:
|
||||
case InstructionsEnum.clickAudioMessages:
|
||||
case InstructionsEnum.dismissSupportChat:
|
||||
case InstructionsEnum.shimmerNewToken:
|
||||
case InstructionsEnum.shimmerTranslation:
|
||||
ErrorHandler.logError(
|
||||
e: Exception("No title for this instruction"),
|
||||
m: 'InstructionsEnumExtension.title',
|
||||
|
|
@ -130,9 +130,9 @@ extension InstructionsEnumExtension on InstructionsEnum {
|
|||
case InstructionsEnum.noSavedActivitiesYet:
|
||||
return l10n.noSavedActivitiesYet;
|
||||
case InstructionsEnum.setLemmaEmoji:
|
||||
case InstructionsEnum.clickTextMessages:
|
||||
case InstructionsEnum.clickAudioMessages:
|
||||
case InstructionsEnum.dismissSupportChat:
|
||||
case InstructionsEnum.shimmerNewToken:
|
||||
case InstructionsEnum.shimmerTranslation:
|
||||
return "";
|
||||
case InstructionsEnum.disableLanguageTools:
|
||||
return l10n.disableLanguageToolsDesc;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
|
|||
|
||||
import 'package:fluffychat/config/themes.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:fluffychat/pangea/common/widgets/shimmer_background.dart';
|
||||
import 'package:fluffychat/pangea/languages/language_model.dart';
|
||||
import 'package:fluffychat/pangea/languages/language_service.dart';
|
||||
import 'package:fluffychat/pangea/languages/p_language_store.dart';
|
||||
|
|
@ -102,7 +103,24 @@ class LanguageSelectionPageState extends State<LanguageSelectionPage> {
|
|||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(L10n.of(context).languages),
|
||||
title: ConstrainedBox(
|
||||
constraints: const BoxConstraints(
|
||||
maxWidth: 450,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
BackButton(
|
||||
onPressed: Navigator.of(context).pop,
|
||||
),
|
||||
Text(L10n.of(context).onboardingLanguagesTitle),
|
||||
const SizedBox(
|
||||
width: 40.0,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
automaticallyImplyLeading: false,
|
||||
),
|
||||
body: SafeArea(
|
||||
child: Center(
|
||||
|
|
@ -121,6 +139,7 @@ class LanguageSelectionPageState extends State<LanguageSelectionPage> {
|
|||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
),
|
||||
hintText: L10n.of(context).searchLanguagesHint,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
|
|
@ -153,27 +172,38 @@ class LanguageSelectionPageState extends State<LanguageSelectionPage> {
|
|||
),
|
||||
)
|
||||
.map(
|
||||
(l) => FilterChip(
|
||||
selected: _selectedLanguage == l,
|
||||
backgroundColor:
|
||||
_selectedLanguage == l
|
||||
? theme.colorScheme.primary
|
||||
: theme.colorScheme.surface,
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 8.0,
|
||||
vertical: 4.0,
|
||||
(l) => ShimmerBackground(
|
||||
enabled: _selectedLanguage == null,
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.circular(16.0),
|
||||
),
|
||||
label: Text(
|
||||
l.getDisplayName(context),
|
||||
style: isColumnMode
|
||||
? theme.textTheme.bodyLarge
|
||||
: theme.textTheme.bodyMedium,
|
||||
child: FilterChip(
|
||||
selected: _selectedLanguage == l,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(16.0),
|
||||
),
|
||||
),
|
||||
backgroundColor:
|
||||
_selectedLanguage == l
|
||||
? theme.colorScheme.primary
|
||||
: theme.colorScheme.surface,
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 8.0,
|
||||
vertical: 4.0,
|
||||
),
|
||||
label: Text(
|
||||
l.getDisplayName(context),
|
||||
style: isColumnMode
|
||||
? theme.textTheme.bodyLarge
|
||||
: theme.textTheme.bodyMedium,
|
||||
),
|
||||
onSelected: (selected) {
|
||||
_setSelectedLanguage(
|
||||
selected ? l : null,
|
||||
);
|
||||
},
|
||||
),
|
||||
onSelected: (selected) {
|
||||
_setSelectedLanguage(
|
||||
selected ? l : null,
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
|
|
@ -220,23 +250,24 @@ class LanguageSelectionPageState extends State<LanguageSelectionPage> {
|
|||
)
|
||||
: const SizedBox(),
|
||||
),
|
||||
Text(
|
||||
L10n.of(context).chooseLanguage,
|
||||
style: theme.textTheme.titleMedium?.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: _selectedLanguage != null ? _submit : null,
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: theme.colorScheme.primaryContainer,
|
||||
foregroundColor: theme.colorScheme.onPrimaryContainer,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(L10n.of(context).letsGo),
|
||||
],
|
||||
ShimmerBackground(
|
||||
enabled: _selectedLanguage != null,
|
||||
borderRadius: BorderRadius.circular(24.0),
|
||||
child: ElevatedButton(
|
||||
onPressed: _selectedLanguage != null ? _submit : null,
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: theme.colorScheme.primaryContainer,
|
||||
foregroundColor: theme.colorScheme.onPrimaryContainer,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(24.0),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(L10n.of(context).letsGo),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -15,9 +15,11 @@ import 'package:fluffychat/pages/chat/chat.dart';
|
|||
import 'package:fluffychat/pages/chat/events/audio_player.dart';
|
||||
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
|
||||
import 'package:fluffychat/pangea/common/widgets/pressable_button.dart';
|
||||
import 'package:fluffychat/pangea/common/widgets/shimmer_background.dart';
|
||||
import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/pangea/events/extensions/pangea_event_extension.dart';
|
||||
import 'package:fluffychat/pangea/events/utils/report_message.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instructions_enum.dart';
|
||||
import 'package:fluffychat/pangea/text_to_speech/tts_controller.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart';
|
||||
|
|
@ -214,6 +216,9 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
|
|||
}
|
||||
|
||||
if (updatedMode == SelectMode.translate) {
|
||||
if (!InstructionsEnum.shimmerTranslation.isToggledOff) {
|
||||
InstructionsEnum.shimmerTranslation.setToggledOff(true);
|
||||
}
|
||||
await controller.fetchTranslation();
|
||||
}
|
||||
|
||||
|
|
@ -423,25 +428,31 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
|
|||
colorFactor:
|
||||
theme.brightness == Brightness.light ? 0.55 : 0.3,
|
||||
builder: (context, depressed, shadowColor) =>
|
||||
AnimatedContainer(
|
||||
duration: FluffyThemes.animationDuration,
|
||||
height: buttonSize,
|
||||
width: buttonSize,
|
||||
decoration: BoxDecoration(
|
||||
color: depressed
|
||||
? shadowColor
|
||||
: theme.colorScheme.primaryContainer,
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: ValueListenableBuilder(
|
||||
valueListenable: _isPlayingNotifier,
|
||||
builder: (context, playing, __) =>
|
||||
_SelectModeButtonIcon(
|
||||
mode: mode,
|
||||
loading: controller.isLoading &&
|
||||
mode == selectedMode,
|
||||
playing: mode == SelectMode.audio && playing,
|
||||
color: theme.colorScheme.onPrimaryContainer,
|
||||
ShimmerBackground(
|
||||
enabled: !InstructionsEnum
|
||||
.shimmerTranslation.isToggledOff &&
|
||||
mode == SelectMode.translate,
|
||||
borderRadius: BorderRadius.circular(100),
|
||||
child: AnimatedContainer(
|
||||
duration: FluffyThemes.animationDuration,
|
||||
height: buttonSize,
|
||||
width: buttonSize,
|
||||
decoration: BoxDecoration(
|
||||
color: depressed
|
||||
? shadowColor
|
||||
: theme.colorScheme.primaryContainer,
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: ValueListenableBuilder(
|
||||
valueListenable: _isPlayingNotifier,
|
||||
builder: (context, playing, __) =>
|
||||
_SelectModeButtonIcon(
|
||||
mode: mode,
|
||||
loading: controller.isLoading &&
|
||||
mode == selectedMode,
|
||||
playing: mode == SelectMode.audio && playing,
|
||||
color: theme.colorScheme.onPrimaryContainer,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue