5515 add more to user profile (#5525)
* feat: add country and about to public profile model * display about me and country * translations
This commit is contained in:
parent
a5c82b2753
commit
53091cf4a6
67 changed files with 1422 additions and 141 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "ar",
|
||||
"@@last_modified": "2026-02-09 10:31:06.969392",
|
||||
"@@last_modified": "2026-02-09 11:09:32.801033",
|
||||
"about": "حول",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11177,6 +11177,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "عنّي",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "تعبير اصطلاحي",
|
||||
"grammarCopyPOSphrasalv": "فعل مركب",
|
||||
"grammarCopyPOScompn": "مركب",
|
||||
|
|
@ -11211,5 +11216,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "تغيير البريد الإلكتروني",
|
||||
"withTheseAddressesDescription": "باستخدام هذه العناوين البريدية يمكنك تسجيل الدخول، واستعادة كلمة المرور، وإدارة الاشتراكات.",
|
||||
"noAddressDescription": "لم تقم بإضافة أي عناوين بريد إلكتروني بعد.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1908,7 +1908,7 @@
|
|||
"playWithAI": "Пакуль гуляйце з ШІ",
|
||||
"courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!",
|
||||
"@@locale": "be",
|
||||
"@@last_modified": "2026-02-09 10:30:56.849128",
|
||||
"@@last_modified": "2026-02-09 11:09:23.199652",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12059,6 +12059,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Пра мяне",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Ідыём",
|
||||
"grammarCopyPOSphrasalv": "Фразавы дзеяслоў",
|
||||
"grammarCopyPOScompn": "Складаны",
|
||||
|
|
@ -12093,5 +12098,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Змяніць электронную пошту",
|
||||
"withTheseAddressesDescription": "З гэтымі электроннымі адрасамі вы можаце ўвайсці, аднавіць свой пароль і кіраваць падпіскамі.",
|
||||
"noAddressDescription": "Вы яшчэ не дабавілі ніводнага электроннага адрасу.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:21.327976",
|
||||
"@@last_modified": "2026-02-09 11:09:46.816075",
|
||||
"about": "সম্পর্কে",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12064,6 +12064,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "আমার সম্পর্কে",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "বাগধারা",
|
||||
"grammarCopyPOSphrasalv": "ফ্রেজাল ক্রিয়া",
|
||||
"grammarCopyPOScompn": "যুগ্ম",
|
||||
|
|
@ -12098,5 +12103,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "ইমেইল পরিবর্তন করুন",
|
||||
"withTheseAddressesDescription": "এই ইমেইল ঠিকানাগুলির মাধ্যমে আপনি লগ ইন করতে, আপনার পাসওয়ার্ড পুনরুদ্ধার করতে এবং সাবস্ক্রিপশন পরিচালনা করতে পারেন।",
|
||||
"noAddressDescription": "আপনি এখনও কোন ইমেইল ঠিকানা যোগ করেননি।",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4276,7 +4276,7 @@
|
|||
"joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།",
|
||||
"startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།",
|
||||
"@@locale": "bo",
|
||||
"@@last_modified": "2026-02-09 10:31:18.713273",
|
||||
"@@last_modified": "2026-02-09 11:09:44.069009",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -10714,6 +10714,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Bok o meni",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Compound",
|
||||
|
|
@ -10748,5 +10753,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Bohor email",
|
||||
"withTheseAddressesDescription": "S dengan alamat email ini, Anda dapat masuk, memulihkan kata sandi Anda, dan mengelola langganan.",
|
||||
"noAddressDescription": "Anda belum menambahkan alamat email apa pun.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:58.877498",
|
||||
"@@last_modified": "2026-02-09 11:09:24.612806",
|
||||
"about": "Quant a",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10984,6 +10984,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Sobre mi",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verb Phrasal",
|
||||
"grammarCopyPOScompn": "Compost",
|
||||
|
|
@ -11018,5 +11023,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Canvia l'email",
|
||||
"withTheseAddressesDescription": "Amb aquestes adreces de correu electrònic pots iniciar sessió, recuperar la teva contrasenya i gestionar les subscripcions.",
|
||||
"noAddressDescription": "Encara no has afegit cap adreça de correu electrònic.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "cs",
|
||||
"@@last_modified": "2026-02-09 10:30:53.085602",
|
||||
"@@last_modified": "2026-02-09 11:09:20.002945",
|
||||
"about": "O aplikaci",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11567,6 +11567,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "O mně",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Frázové sloveso",
|
||||
"grammarCopyPOScompn": "Složenina",
|
||||
|
|
@ -11601,5 +11606,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Změnit e-mail",
|
||||
"withTheseAddressesDescription": "S těmito e-mailovými adresami se můžete přihlásit, obnovit své heslo a spravovat předplatné.",
|
||||
"noAddressDescription": "Zatím jste nepřidali žádné e-mailové adresy.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1927,7 +1927,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-02-09 10:30:26.547080",
|
||||
"@@last_modified": "2026-02-09 11:08:45.510364",
|
||||
"@aboutHomeserver": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
|
@ -12021,6 +12021,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Om mig",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Sammensat",
|
||||
|
|
@ -12055,5 +12060,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Ændre email",
|
||||
"withTheseAddressesDescription": "Med disse emailadresser kan du logge ind, gendanne din adgangskode og administrere abonnementer.",
|
||||
"noAddressDescription": "Du har endnu ikke tilføjet nogen emailadresser.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "de",
|
||||
"@@last_modified": "2026-02-09 10:30:45.424459",
|
||||
"@@last_modified": "2026-02-09 11:09:13.137048",
|
||||
"alwaysUse24HourFormat": "true",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"description": "Set to true to always display time of day in 24 hour format."
|
||||
|
|
@ -10967,6 +10967,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Über mich",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Zusammengesetztes Wort",
|
||||
|
|
@ -11001,5 +11006,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "E-Mail ändern",
|
||||
"withTheseAddressesDescription": "Mit diesen E-Mail-Adressen können Sie sich anmelden, Ihr Passwort wiederherstellen und Abonnements verwalten.",
|
||||
"noAddressDescription": "Sie haben noch keine E-Mail-Adressen hinzugefügt.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4453,7 +4453,7 @@
|
|||
"playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν",
|
||||
"courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!",
|
||||
"@@locale": "el",
|
||||
"@@last_modified": "2026-02-09 10:31:27.836094",
|
||||
"@@last_modified": "2026-02-09 11:09:52.785391",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12018,6 +12018,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Σχετικά με εμένα",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Ιδιωματισμός",
|
||||
"grammarCopyPOSphrasalv": "Φραστικό Ρήμα",
|
||||
"grammarCopyPOScompn": "Σύνθετο",
|
||||
|
|
@ -12052,5 +12057,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Αλλαγή email",
|
||||
"withTheseAddressesDescription": "Με αυτές τις διευθύνσεις email μπορείτε να συνδεθείτε, να ανακτήσετε τον κωδικό πρόσβασής σας και να διαχειριστείτε τις συνδρομές.",
|
||||
"noAddressDescription": "Δεν έχετε προσθέσει καμία διεύθυνση email μέχρι στιγμής.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -5072,6 +5072,7 @@
|
|||
"autoIGCToolName": "Enable writing assistance",
|
||||
"autoIGCToolDescription": "Automatically run Pangea Chat tools to correct sent messages to target language.",
|
||||
"emptyAudioError": "Recording failed. Please check your audio permissions and try again.",
|
||||
"aboutMeHint": "About me",
|
||||
"changeEmail": "Change email",
|
||||
"withTheseAddressesDescription": "With these email addresses you can log in, recover your password, and manage subscriptions.",
|
||||
"noAddressDescription": "You have not added any email addresses yet.",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:32.343732",
|
||||
"@@last_modified": "2026-02-09 11:09:57.785827",
|
||||
"about": "Prio",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12049,6 +12049,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Pri mi",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Kunmetita",
|
||||
|
|
@ -12083,5 +12088,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Ŝanĝi retpoŝton",
|
||||
"withTheseAddressesDescription": "Kun ĉi tiuj retpoŝtaj adresoj vi povas ensaluti, rekuperi vian pasvorton, kaj administri abonojn.",
|
||||
"noAddressDescription": "Vi ankoraŭ ne aldonis iujn retpoŝtajn adresojn.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "es",
|
||||
"@@last_modified": "2026-02-09 10:30:21.560804",
|
||||
"@@last_modified": "2026-02-09 11:08:40.981454",
|
||||
"about": "Acerca de",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -8202,6 +8202,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Acerca de mí",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Modismo",
|
||||
"grammarCopyPOSphrasalv": "Verbo Frasal",
|
||||
"grammarCopyPOScompn": "Compuesto",
|
||||
|
|
@ -8236,5 +8241,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Cambiar correo electrónico",
|
||||
"withTheseAddressesDescription": "Con estas direcciones de correo electrónico puedes iniciar sesión, recuperar tu contraseña y gestionar suscripciones.",
|
||||
"noAddressDescription": "Aún no has añadido ninguna dirección de correo electrónico.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "et",
|
||||
"@@last_modified": "2026-02-09 10:30:44.206560",
|
||||
"@@last_modified": "2026-02-09 11:09:05.357413",
|
||||
"about": "Rakenduse teave",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11231,6 +11231,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Minust",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idioom",
|
||||
"grammarCopyPOSphrasalv": "Fraasi Verb",
|
||||
"grammarCopyPOScompn": "Kompleks",
|
||||
|
|
@ -11265,5 +11270,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Muuda e-posti",
|
||||
"withTheseAddressesDescription": "Nende e-posti aadressidega saad sisse logida, oma parooli taastada ja tellimusi hallata.",
|
||||
"noAddressDescription": "Sa ei ole veel ühtegi e-posti aadressi lisanud.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "eu",
|
||||
"@@last_modified": "2026-02-09 10:30:41.236742",
|
||||
"@@last_modified": "2026-02-09 11:09:01.052613",
|
||||
"about": "Honi buruz",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10960,6 +10960,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Niri buruz",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Konposatu",
|
||||
|
|
@ -10994,5 +10999,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Aldatu posta elektronikoa",
|
||||
"withTheseAddressesDescription": "Posta elektroniko helbide hauekin saioa hasi dezakezu, zure pasahitza berreskuratu eta harpidetzak kudeatu.",
|
||||
"noAddressDescription": "Oraindik ez duzu posta elektroniko helbiderik gehitu.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:23.313797",
|
||||
"@@last_modified": "2026-02-09 11:09:48.180617",
|
||||
"repeatPassword": "تکرار رمزعبور",
|
||||
"@repeatPassword": {},
|
||||
"about": "درباره",
|
||||
|
|
@ -11692,6 +11692,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "درباره من",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "اصطلاح",
|
||||
"grammarCopyPOSphrasalv": "فعل عبارتی",
|
||||
"grammarCopyPOScompn": "ترکیب",
|
||||
|
|
@ -11726,5 +11731,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "تغییر ایمیل",
|
||||
"withTheseAddressesDescription": "با این آدرسهای ایمیل میتوانید وارد شوید، رمز عبور خود را بازیابی کنید و اشتراکها را مدیریت کنید.",
|
||||
"noAddressDescription": "شما هنوز هیچ آدرس ایمیلی اضافه نکردهاید.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4006,7 +4006,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-02-09 10:30:24.862038",
|
||||
"@@last_modified": "2026-02-09 11:08:44.050102",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11583,6 +11583,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Tietoa minusta",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idioomi",
|
||||
"grammarCopyPOSphrasalv": "Fraasiverbi",
|
||||
"grammarCopyPOScompn": "Yhdistelmä",
|
||||
|
|
@ -11617,5 +11622,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Vaihda sähköpostiosoite",
|
||||
"withTheseAddressesDescription": "Näiden sähköpostiosoitteiden avulla voit kirjautua sisään, palauttaa salasanasi ja hallita tilauksia.",
|
||||
"noAddressDescription": "Et ole vielä lisännyt mitään sähköpostiosoitteita.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2784,7 +2784,7 @@
|
|||
"selectAll": "Piliin lahat",
|
||||
"deselectAll": "Huwag piliin lahat",
|
||||
"@@locale": "fil",
|
||||
"@@last_modified": "2026-02-09 10:31:04.579384",
|
||||
"@@last_modified": "2026-02-09 11:09:29.936599",
|
||||
"@setCustomPermissionLevel": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11936,6 +11936,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Tungkol sa akin",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idyoma",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Pinagsama",
|
||||
|
|
@ -11970,5 +11975,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Palitan ang email",
|
||||
"withTheseAddressesDescription": "Sa mga email address na ito, maaari kang mag-log in, i-recover ang iyong password, at pamahalaan ang mga subscription.",
|
||||
"noAddressDescription": "Wala ka pang naidagdag na anumang email address.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "fr",
|
||||
"@@last_modified": "2026-02-09 10:31:39.092623",
|
||||
"@@last_modified": "2026-02-09 11:10:07.003221",
|
||||
"about": "À propos",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11284,6 +11284,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "À propos de moi",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbe à particule",
|
||||
"grammarCopyPOScompn": "Composé",
|
||||
|
|
@ -11318,5 +11323,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Changer l'email",
|
||||
"withTheseAddressesDescription": "Avec ces adresses email, vous pouvez vous connecter, récupérer votre mot de passe et gérer vos abonnements.",
|
||||
"noAddressDescription": "Vous n'avez pas encore ajouté d'adresses email.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4514,7 +4514,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-02-09 10:31:37.968813",
|
||||
"@@last_modified": "2026-02-09 11:10:05.570216",
|
||||
"@customReaction": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -10958,6 +10958,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Fúm",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Frása",
|
||||
"grammarCopyPOSphrasalv": "Gníomhhacht Phrásúil",
|
||||
"grammarCopyPOScompn": "Comhoibriú",
|
||||
|
|
@ -10992,5 +10997,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Athraigh an ríomhphost",
|
||||
"withTheseAddressesDescription": "Leis na seoltaí ríomhphoist seo, is féidir leat logáil isteach, do phasfhocal a chur ar ais, agus síntiúis a bhainistiú.",
|
||||
"noAddressDescription": "Níl aon seoltaí ríomhphoist curtha leis fós.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "gl",
|
||||
"@@last_modified": "2026-02-09 10:30:23.363980",
|
||||
"@@last_modified": "2026-02-09 11:08:42.508158",
|
||||
"about": "Acerca de",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10957,6 +10957,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Sobre min",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbo Frasal",
|
||||
"grammarCopyPOScompn": "Composto",
|
||||
|
|
@ -10991,5 +10996,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Cambiar correo electrónico",
|
||||
"withTheseAddressesDescription": "Con estes enderezos de correo electrónico podes iniciar sesión, recuperar a túa contrasinal e xestionar subscricións.",
|
||||
"noAddressDescription": "Non engadiches ningún enderezo de correo electrónico aínda.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:36.836306",
|
||||
"@@last_modified": "2026-02-09 11:08:56.858820",
|
||||
"about": "אודות",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12009,6 +12009,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "עליי",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "ביטוי",
|
||||
"grammarCopyPOSphrasalv": "פועל פיזי",
|
||||
"grammarCopyPOScompn": "מורכב",
|
||||
|
|
@ -12043,5 +12048,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "שנה דוא\"ל",
|
||||
"withTheseAddressesDescription": "עם כתובות הדוא\"ל הללו אתה יכול להתחבר, לשחזר את הסיסמה שלך ולנהל מנויים.",
|
||||
"noAddressDescription": "עדיין לא הוספת כתובות דוא\"ל.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4480,7 +4480,7 @@
|
|||
"playWithAI": "अभी के लिए एआई के साथ खेलें",
|
||||
"courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!",
|
||||
"@@locale": "hi",
|
||||
"@@last_modified": "2026-02-09 10:31:30.698303",
|
||||
"@@last_modified": "2026-02-09 11:09:56.145817",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12045,6 +12045,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "मेरे बारे में",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "मुहावरा",
|
||||
"grammarCopyPOSphrasalv": "फ्रेज़ल वर्ब",
|
||||
"grammarCopyPOScompn": "संयुक्त",
|
||||
|
|
@ -12079,5 +12084,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "ईमेल बदलें",
|
||||
"withTheseAddressesDescription": "इन ईमेल पतों के साथ आप लॉग इन कर सकते हैं, अपना पासवर्ड पुनर्प्राप्त कर सकते हैं, और सब्सक्रिप्शन प्रबंधित कर सकते हैं।",
|
||||
"noAddressDescription": "आपने अभी तक कोई ईमेल पता नहीं जोड़ा है।",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "hr",
|
||||
"@@last_modified": "2026-02-09 10:30:35.547762",
|
||||
"@@last_modified": "2026-02-09 11:08:55.423013",
|
||||
"about": "Informacije",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11332,6 +11332,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "O meni",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasalni Glagol",
|
||||
"grammarCopyPOScompn": "Složenica",
|
||||
|
|
@ -11366,5 +11371,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Promijeni email",
|
||||
"withTheseAddressesDescription": "S ovim email adresama možete se prijaviti, oporaviti svoju lozinku i upravljati pretplatama.",
|
||||
"noAddressDescription": "Još niste dodali nijednu email adresu.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "hu",
|
||||
"@@last_modified": "2026-02-09 10:30:28.032874",
|
||||
"@@last_modified": "2026-02-09 11:08:47.162355",
|
||||
"about": "Névjegy",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10961,6 +10961,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Rólam",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idióma",
|
||||
"grammarCopyPOSphrasalv": "Frazális ige",
|
||||
"grammarCopyPOScompn": "Összetett",
|
||||
|
|
@ -10995,5 +11000,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Email cím módosítása",
|
||||
"withTheseAddressesDescription": "Ezekkel az email címekkel be tudsz jelentkezni, vissza tudod állítani a jelszavadat, és kezelni tudod az előfizetéseket.",
|
||||
"noAddressDescription": "Még nem adtál hozzá email címeket.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1955,7 +1955,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-02-09 10:30:38.575679",
|
||||
"@@last_modified": "2026-02-09 11:08:57.966375",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12038,6 +12038,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Despre mine",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbo Phrasal",
|
||||
"grammarCopyPOScompn": "Compuesto",
|
||||
|
|
@ -12072,5 +12077,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Cambia email",
|
||||
"withTheseAddressesDescription": "Con estas direcciones de correo electrónico puedes iniciar sesión, recuperar tu contraseña y gestionar suscripciones.",
|
||||
"noAddressDescription": "Aún no has añadido ninguna dirección de correo electrónico.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:29.458472",
|
||||
"@@last_modified": "2026-02-09 11:08:48.564116",
|
||||
"setAsCanonicalAlias": "Atur sebagai alias utama",
|
||||
"@setAsCanonicalAlias": {
|
||||
"type": "String",
|
||||
|
|
@ -10951,6 +10951,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Tentang saya",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Kata Kerja Phrasal",
|
||||
"grammarCopyPOScompn": "Kombinasi",
|
||||
|
|
@ -10985,5 +10990,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Ubah email",
|
||||
"withTheseAddressesDescription": "Dengan alamat email ini, Anda dapat masuk, memulihkan kata sandi Anda, dan mengelola langganan.",
|
||||
"noAddressDescription": "Anda belum menambahkan alamat email apapun.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4369,7 +4369,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-02-09 10:30:34.375227",
|
||||
"@@last_modified": "2026-02-09 11:08:53.872484",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11934,6 +11934,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Faoi m'ainm",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Composé",
|
||||
|
|
@ -11968,5 +11973,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Mudara e-posta",
|
||||
"withTheseAddressesDescription": "Izi e-posta adresleri ile giriş yapabilir, şifrenizi kurtarabilir ve aboneliklerinizi yönetebilirsiniz.",
|
||||
"noAddressDescription": "Henüz herhangi bir e-posta adresi eklemediniz.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:49.194487",
|
||||
"@@last_modified": "2026-02-09 11:09:17.051102",
|
||||
"about": "Informazioni",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10963,6 +10963,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Informazioni su di me",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbo Frazionale",
|
||||
"grammarCopyPOScompn": "Composto",
|
||||
|
|
@ -10997,5 +11002,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Cambia email",
|
||||
"withTheseAddressesDescription": "Con queste email puoi accedere, recuperare la tua password e gestire gli abbonamenti.",
|
||||
"noAddressDescription": "Non hai ancora aggiunto alcun indirizzo email.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "ja",
|
||||
"@@last_modified": "2026-02-09 10:31:29.266500",
|
||||
"@@last_modified": "2026-02-09 11:09:54.188816",
|
||||
"about": "このアプリについて",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11750,6 +11750,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "私について",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "イディオム",
|
||||
"grammarCopyPOSphrasalv": "句動詞",
|
||||
"grammarCopyPOScompn": "複合語",
|
||||
|
|
@ -11784,5 +11789,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "メールアドレスを変更",
|
||||
"withTheseAddressesDescription": "これらのメールアドレスを使用して、ログイン、パスワードの回復、サブスクリプションの管理ができます。",
|
||||
"noAddressDescription": "まだメールアドレスを追加していません。",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2591,7 +2591,7 @@
|
|||
"playWithAI": "ამ დროისთვის ითამაშეთ AI-თან",
|
||||
"courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!",
|
||||
"@@locale": "ka",
|
||||
"@@last_modified": "2026-02-09 10:31:35.201910",
|
||||
"@@last_modified": "2026-02-09 11:10:02.292014",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11990,6 +11990,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "ჩემზე",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "იდიომი",
|
||||
"grammarCopyPOSphrasalv": "ფრაზული ზმნა",
|
||||
"grammarCopyPOScompn": "კომპლექსური",
|
||||
|
|
@ -12024,5 +12029,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "ელ. ფოსტის შეცვლა",
|
||||
"withTheseAddressesDescription": "ამ ელ. ფოსტის მისამართების საშუალებით შეგიძლიათ შეხვიდეთ, აღადგინოთ თქვენი პაროლი და მართოთ გამოწერები.",
|
||||
"noAddressDescription": "თქვენ ჯერ არ გაქვთ დამატებული ელ. ფოსტის მისამართები.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:18.919050",
|
||||
"@@last_modified": "2026-02-09 11:08:39.290513",
|
||||
"about": "소개",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11068,6 +11068,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "내 소개",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "관용구",
|
||||
"grammarCopyPOSphrasalv": "구동사",
|
||||
"grammarCopyPOScompn": "복합어",
|
||||
|
|
@ -11102,5 +11107,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "이메일 변경",
|
||||
"withTheseAddressesDescription": "이 이메일 주소로 로그인하고, 비밀번호를 복구하며, 구독을 관리할 수 있습니다.",
|
||||
"noAddressDescription": "아직 이메일 주소를 추가하지 않았습니다.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -3858,7 +3858,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-02-09 10:31:13.179961",
|
||||
"@@last_modified": "2026-02-09 11:09:38.541694",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11765,6 +11765,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Apie mane",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Sudėtinis",
|
||||
|
|
@ -11799,5 +11804,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Keisti el. paštą",
|
||||
"withTheseAddressesDescription": "Su šiais el. pašto adresais galite prisijungti, atkurti slaptažodį ir valdyti prenumeratas.",
|
||||
"noAddressDescription": "Jūs dar nepridėjote jokių el. pašto adresų.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4480,7 +4480,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-02-09 10:31:05.908661",
|
||||
"@@last_modified": "2026-02-09 11:09:31.557778",
|
||||
"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",
|
||||
|
|
@ -10946,6 +10946,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Par mani",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Frazēts darbības vārds",
|
||||
"grammarCopyPOScompn": "Savienojums",
|
||||
|
|
@ -10980,5 +10985,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Mainīt e-pastu",
|
||||
"withTheseAddressesDescription": "Ar šiem e-pasta adresēm jūs varat pieteikties, atjaunot savu paroli un pārvaldīt abonementus.",
|
||||
"noAddressDescription": "Jūs vēl neesat pievienojis nevienu e-pasta adresi.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:55.280815",
|
||||
"@@last_modified": "2026-02-09 11:09:21.418237",
|
||||
"about": "Om",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12053,6 +12053,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Om meg",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Sammensatt",
|
||||
|
|
@ -12087,5 +12092,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Endre e-post",
|
||||
"withTheseAddressesDescription": "Med disse e-postadressene kan du logge inn, gjenopprette passordet ditt og administrere abonnementer.",
|
||||
"noAddressDescription": "Du har ikke lagt til noen e-postadresser ennå.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:17.188799",
|
||||
"@@last_modified": "2026-02-09 11:09:42.630335",
|
||||
"about": "Over ons",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10960,6 +10960,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Over mij",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idioom",
|
||||
"grammarCopyPOSphrasalv": "Frazal Werkwoord",
|
||||
"grammarCopyPOScompn": "Samenstelling",
|
||||
|
|
@ -10994,5 +10999,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Wijzig e-mailadres",
|
||||
"withTheseAddressesDescription": "Met deze e-mailadressen kun je inloggen, je wachtwoord herstellen en abonnementen beheren.",
|
||||
"noAddressDescription": "Je hebt nog geen e-mailadressen toegevoegd.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "pl",
|
||||
"@@last_modified": "2026-02-09 10:31:24.557539",
|
||||
"@@last_modified": "2026-02-09 11:09:49.851439",
|
||||
"about": "O aplikacji",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10958,6 +10958,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "O mnie",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Czasownik frazowy",
|
||||
"grammarCopyPOScompn": "Złożony",
|
||||
|
|
@ -10992,5 +10997,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Zmień adres e-mail",
|
||||
"withTheseAddressesDescription": "Dzięki tym adresom e-mail możesz się zalogować, odzyskać hasło i zarządzać subskrypcjami.",
|
||||
"noAddressDescription": "Nie dodałeś jeszcze żadnych adresów e-mail.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:42.465226",
|
||||
"@@last_modified": "2026-02-09 11:09:03.927804",
|
||||
"copiedToClipboard": "Copiada para a área de transferência",
|
||||
"@copiedToClipboard": {
|
||||
"type": "String",
|
||||
|
|
@ -12060,6 +12060,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Sobre mim",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbo Frasal",
|
||||
"grammarCopyPOScompn": "Composto",
|
||||
|
|
@ -12094,5 +12099,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Alterar e-mail",
|
||||
"withTheseAddressesDescription": "Com esses endereços de e-mail, você pode fazer login, recuperar sua senha e gerenciar assinaturas.",
|
||||
"noAddressDescription": "Você ainda não adicionou nenhum endereço de e-mail.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:39.705540",
|
||||
"@@last_modified": "2026-02-09 11:08:59.417144",
|
||||
"about": "Sobre",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11318,6 +11318,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Sobre mim",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbo Frasal",
|
||||
"grammarCopyPOScompn": "Composto",
|
||||
|
|
@ -11352,5 +11357,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Alterar e-mail",
|
||||
"withTheseAddressesDescription": "Com esses endereços de e-mail, você pode fazer login, recuperar sua senha e gerenciar assinaturas.",
|
||||
"noAddressDescription": "Você ainda não adicionou nenhum endereço de e-mail.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -3328,7 +3328,7 @@
|
|||
"selectAll": "Selecionar tudo",
|
||||
"deselectAll": "Desmarcar tudo",
|
||||
"@@locale": "pt_PT",
|
||||
"@@last_modified": "2026-02-09 10:31:01.370163",
|
||||
"@@last_modified": "2026-02-09 11:09:27.266695",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -11989,6 +11989,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Sobre mim",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verbo Frasal",
|
||||
"grammarCopyPOScompn": "Composto",
|
||||
|
|
@ -12023,5 +12028,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Alterar e-mail",
|
||||
"withTheseAddressesDescription": "Com esses endereços de e-mail, você pode fazer login, recuperar sua senha e gerenciar assinaturas.",
|
||||
"noAddressDescription": "Você ainda não adicionou nenhum endereço de e-mail.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:30:31.024987",
|
||||
"@@last_modified": "2026-02-09 11:08:50.792922",
|
||||
"about": "Despre",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11695,6 +11695,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Despre mine",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Verb Phrastic",
|
||||
"grammarCopyPOScompn": "Compus",
|
||||
|
|
@ -11729,5 +11734,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Schimbă emailul",
|
||||
"withTheseAddressesDescription": "Cu aceste adrese de email poți să te conectezi, să îți recuperezi parola și să gestionezi abonamentele.",
|
||||
"noAddressDescription": "Nu ai adăugat încă nicio adresă de email.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "ru",
|
||||
"@@last_modified": "2026-02-09 10:31:33.668055",
|
||||
"@@last_modified": "2026-02-09 11:09:59.118469",
|
||||
"about": "О проекте",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11068,6 +11068,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Обо мне",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Идиома",
|
||||
"grammarCopyPOSphrasalv": "Фразовый глагол",
|
||||
"grammarCopyPOScompn": "Составное",
|
||||
|
|
@ -11102,5 +11107,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Сменить электронную почту",
|
||||
"withTheseAddressesDescription": "С помощью этих адресов электронной почты вы можете войти в систему, восстановить пароль и управлять подписками.",
|
||||
"noAddressDescription": "Вы еще не добавили ни одного адреса электронной почты.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "sk",
|
||||
"@@last_modified": "2026-02-09 10:30:32.743132",
|
||||
"@@last_modified": "2026-02-09 11:08:52.351401",
|
||||
"about": "O aplikácii",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12044,6 +12044,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "O mne",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idióm",
|
||||
"grammarCopyPOSphrasalv": "Frázové sloveso",
|
||||
"grammarCopyPOScompn": "Zložené",
|
||||
|
|
@ -12078,5 +12083,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Zmeniť e-mail",
|
||||
"withTheseAddressesDescription": "S týmito e-mailovými adresami sa môžete prihlásiť, obnoviť svoje heslo a spravovať predplatné.",
|
||||
"noAddressDescription": "Ešte ste nepridali žiadne e-mailové adresy.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -2461,7 +2461,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-02-09 10:30:46.615986",
|
||||
"@@last_modified": "2026-02-09 11:09:14.553223",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12041,6 +12041,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "O meni",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasalni glagol",
|
||||
"grammarCopyPOScompn": "Sestavljenka",
|
||||
|
|
@ -12075,5 +12080,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Spremeni e-pošto",
|
||||
"withTheseAddressesDescription": "S temi e-poštnimi naslovi se lahko prijavite, obnovite geslo in upravljate z naročninami.",
|
||||
"noAddressDescription": "Še niste dodali nobenih e-poštnih naslovov.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:36.571438",
|
||||
"@@last_modified": "2026-02-09 11:10:03.632765",
|
||||
"about": "О програму",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -12062,6 +12062,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "О мени",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasal Verb",
|
||||
"grammarCopyPOScompn": "Kombinacija",
|
||||
|
|
@ -12096,5 +12101,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Promeni email",
|
||||
"withTheseAddressesDescription": "Sa ovim email adresama možete se prijaviti, povratiti svoju lozinku i upravljati pretplatama.",
|
||||
"noAddressDescription": "Još niste dodali nijednu email adresu.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:25.986941",
|
||||
"@@last_modified": "2026-02-09 11:09:51.437329",
|
||||
"about": "Om",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11438,6 +11438,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Om mig",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Idiom",
|
||||
"grammarCopyPOSphrasalv": "Phrasverb",
|
||||
"grammarCopyPOScompn": "Sammansatt",
|
||||
|
|
@ -11472,5 +11477,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Ändra e-postadress",
|
||||
"withTheseAddressesDescription": "Med dessa e-postadresser kan du logga in, återställa ditt lösenord och hantera prenumerationer.",
|
||||
"noAddressDescription": "Du har ännu inte lagt till några e-postadresser.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:16.047418",
|
||||
"@@last_modified": "2026-02-09 11:09:41.597668",
|
||||
"acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது",
|
||||
"@acceptedTheInvitation": {
|
||||
"type": "String",
|
||||
|
|
@ -11184,6 +11184,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "என்னைப் பற்றி",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "விளக்கம்",
|
||||
"grammarCopyPOSphrasalv": "பொருள் வினை",
|
||||
"grammarCopyPOScompn": "சேர்க்கை",
|
||||
|
|
@ -11218,5 +11223,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "மின்னஞ்சலை மாற்றவும்",
|
||||
"withTheseAddressesDescription": "இந்த மின்னஞ்சல் முகவரிகளுடன் நீங்கள் உள்நுழைந்து, உங்கள் கடவுச்சொல்லை மீட்டெடுக்கவும், சந்தாக்களை நிர்வகிக்கவும் முடியும்.",
|
||||
"noAddressDescription": "நீங்கள் இன்னும் எந்த மின்னஞ்சல் முகவரிகளையும் சேர்க்கவில்லை.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1917,7 +1917,7 @@
|
|||
"playWithAI": "ఇప్పుడే AI తో ఆడండి",
|
||||
"courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!",
|
||||
"@@locale": "te",
|
||||
"@@last_modified": "2026-02-09 10:31:11.484072",
|
||||
"@@last_modified": "2026-02-09 11:09:36.591690",
|
||||
"@setCustomPermissionLevel": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12049,6 +12049,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "నా గురించి",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "సామెత",
|
||||
"grammarCopyPOSphrasalv": "పదబంధ క్రియ",
|
||||
"grammarCopyPOScompn": "సంకలనం",
|
||||
|
|
@ -12083,5 +12088,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "ఇమెయిల్ మార్చండి",
|
||||
"withTheseAddressesDescription": "ఈ ఇమెయిల్ చిరునామాలతో మీరు లాగిన్ అవ్వవచ్చు, మీ పాస్వర్డ్ను పునరుద్ధరించవచ్చు మరియు సబ్స్క్రిప్షన్లను నిర్వహించవచ్చు.",
|
||||
"noAddressDescription": "మీరు ఇంకా ఎలాంటి ఇమెయిల్ చిరునామాలను జోడించలేదు.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -4453,7 +4453,7 @@
|
|||
"playWithAI": "เล่นกับ AI ชั่วคราว",
|
||||
"courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!",
|
||||
"@@locale": "th",
|
||||
"@@last_modified": "2026-02-09 10:31:00.286726",
|
||||
"@@last_modified": "2026-02-09 11:09:25.941768",
|
||||
"@alwaysUse24HourFormat": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12018,6 +12018,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "เกี่ยวกับฉัน",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "สำนวน",
|
||||
"grammarCopyPOSphrasalv": "กริยาวลี",
|
||||
"grammarCopyPOScompn": "คำผสม",
|
||||
|
|
@ -12052,5 +12057,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "เปลี่ยนอีเมล",
|
||||
"withTheseAddressesDescription": "ด้วยที่อยู่อีเมลเหล่านี้ คุณสามารถเข้าสู่ระบบ กู้คืนรหัสผ่าน และจัดการการสมัครสมาชิกได้",
|
||||
"noAddressDescription": "คุณยังไม่ได้เพิ่มที่อยู่อีเมลใด ๆ",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "tr",
|
||||
"@@last_modified": "2026-02-09 10:31:10.118107",
|
||||
"@@last_modified": "2026-02-09 11:09:34.545567",
|
||||
"about": "Hakkında",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -11182,6 +11182,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Hakkımda",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Deyim",
|
||||
"grammarCopyPOSphrasalv": "Deyim Fiili",
|
||||
"grammarCopyPOScompn": "Bileşik",
|
||||
|
|
@ -11216,5 +11221,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "E-posta değiştir",
|
||||
"withTheseAddressesDescription": "Bu e-posta adresleriyle oturum açabilir, şifrenizi kurtarabilir ve aboneliklerinizi yönetebilirsiniz.",
|
||||
"noAddressDescription": "Henüz herhangi bir e-posta adresi eklemediniz.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "uk",
|
||||
"@@last_modified": "2026-02-09 10:30:50.645170",
|
||||
"@@last_modified": "2026-02-09 11:09:18.460030",
|
||||
"about": "Про застосунок",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10954,6 +10954,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Про мене",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Ідіома",
|
||||
"grammarCopyPOSphrasalv": "Фразове дієслово",
|
||||
"grammarCopyPOScompn": "Складене",
|
||||
|
|
@ -10988,5 +10993,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Змінити електронну пошту",
|
||||
"withTheseAddressesDescription": "З цими електронними адресами ви можете увійти, відновити свій пароль і керувати підписками.",
|
||||
"noAddressDescription": "Ви ще не додали жодних електронних адрес.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:14.436728",
|
||||
"@@last_modified": "2026-02-09 11:09:39.961686",
|
||||
"about": "Giới thiệu",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -6538,6 +6538,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "Về tôi",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "Thành ngữ",
|
||||
"grammarCopyPOSphrasalv": "Động từ cụm",
|
||||
"grammarCopyPOScompn": "Hợp chất",
|
||||
|
|
@ -6572,5 +6577,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "Thay đổi email",
|
||||
"withTheseAddressesDescription": "Với những địa chỉ email này, bạn có thể đăng nhập, khôi phục mật khẩu và quản lý đăng ký.",
|
||||
"noAddressDescription": "Bạn chưa thêm địa chỉ email nào.",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1853,7 +1853,7 @@
|
|||
"selectAll": "全選",
|
||||
"deselectAll": "取消全選",
|
||||
"@@locale": "yue",
|
||||
"@@last_modified": "2026-02-09 10:30:47.898227",
|
||||
"@@last_modified": "2026-02-09 11:09:15.805629",
|
||||
"@ignoreUser": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -12051,6 +12051,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "關於我",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "成語",
|
||||
"grammarCopyPOSphrasalv": "短語動詞",
|
||||
"grammarCopyPOScompn": "複合詞",
|
||||
|
|
@ -12085,5 +12090,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "更改電郵",
|
||||
"withTheseAddressesDescription": "使用這些電郵地址您可以登錄、恢復密碼和管理訂閱。",
|
||||
"noAddressDescription": "您尚未添加任何電郵地址。",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"@@locale": "zh",
|
||||
"@@last_modified": "2026-02-09 10:31:19.946784",
|
||||
"@@last_modified": "2026-02-09 11:09:45.374826",
|
||||
"about": "关于",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10951,6 +10951,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "关于我",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "成语",
|
||||
"grammarCopyPOSphrasalv": "短语动词",
|
||||
"grammarCopyPOScompn": "复合词",
|
||||
|
|
@ -10985,5 +10990,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "更改电子邮件",
|
||||
"withTheseAddressesDescription": "使用这些电子邮件地址,您可以登录、恢复密码和管理订阅。",
|
||||
"noAddressDescription": "您尚未添加任何电子邮件地址。",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"@@last_modified": "2026-02-09 10:31:02.904070",
|
||||
"@@last_modified": "2026-02-09 11:09:28.599644",
|
||||
"about": "關於",
|
||||
"@about": {
|
||||
"type": "String",
|
||||
|
|
@ -10958,6 +10958,11 @@
|
|||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"aboutMeHint": "關於我",
|
||||
"@aboutMeHint": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"grammarCopyPOSidiom": "成語",
|
||||
"grammarCopyPOSphrasalv": "片語動詞",
|
||||
"grammarCopyPOScompn": "合成詞",
|
||||
|
|
@ -10992,5 +10997,20 @@
|
|||
"@youveCompletedPractice": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"changeEmail": "更改電子郵件",
|
||||
"withTheseAddressesDescription": "使用這些電子郵件地址,您可以登錄、恢復密碼和管理訂閱。",
|
||||
"noAddressDescription": "您尚未添加任何電子郵件地址。",
|
||||
"@changeEmail": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@withTheseAddressesDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"@noAddressDescription": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
|
|
@ -442,7 +442,8 @@ class AnalyticsDataService {
|
|||
final offset = lowerLevelXP - newData.totalXP;
|
||||
await MatrixState.pangeaController.userController.addXPOffset(offset);
|
||||
await updateXPOffset(
|
||||
MatrixState.pangeaController.userController.analyticsProfile!.xpOffset!,
|
||||
MatrixState
|
||||
.pangeaController.userController.publicProfile!.analytics.xpOffset!,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,8 +23,9 @@ class LevelDisplayName extends StatelessWidget {
|
|||
),
|
||||
child: FutureBuilder(
|
||||
future: MatrixState.pangeaController.userController
|
||||
.getPublicAnalyticsProfile(userId),
|
||||
.getPublicProfile(userId),
|
||||
builder: (context, snapshot) {
|
||||
final analytics = snapshot.data?.analytics;
|
||||
return Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
|
|
@ -42,27 +43,36 @@ class LevelDisplayName extends StatelessWidget {
|
|||
else
|
||||
Row(
|
||||
children: [
|
||||
if (snapshot.data?.baseLanguage != null &&
|
||||
snapshot.data?.targetLanguage != null)
|
||||
if (snapshot.data?.countryEmoji != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 4.0),
|
||||
child: Text(
|
||||
snapshot.data!.countryEmoji!,
|
||||
style: textStyle ??
|
||||
const TextStyle(
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (analytics?.baseLanguage != null &&
|
||||
analytics?.targetLanguage != null)
|
||||
Text(
|
||||
snapshot.data!.baseLanguage!.langCodeShort
|
||||
.toUpperCase(),
|
||||
analytics!.baseLanguage!.langCodeShort.toUpperCase(),
|
||||
style: textStyle ??
|
||||
TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
if (snapshot.data?.baseLanguage != null &&
|
||||
snapshot.data?.targetLanguage != null)
|
||||
if (analytics?.baseLanguage != null &&
|
||||
analytics?.targetLanguage != null)
|
||||
Icon(
|
||||
Icons.chevron_right_outlined,
|
||||
size: iconSize ?? 16.0,
|
||||
),
|
||||
if (snapshot.data?.targetLanguage != null)
|
||||
if (analytics?.targetLanguage != null)
|
||||
Text(
|
||||
snapshot.data!.targetLanguage!.langCodeShort
|
||||
.toUpperCase(),
|
||||
analytics!.targetLanguage!.langCodeShort.toUpperCase(),
|
||||
style: textStyle ??
|
||||
TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
@ -70,14 +80,14 @@ class LevelDisplayName extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
const SizedBox(width: 4.0),
|
||||
if (snapshot.data?.level != null)
|
||||
if (analytics?.level != null)
|
||||
Text(
|
||||
"⭐",
|
||||
style: textStyle,
|
||||
),
|
||||
if (snapshot.data?.level != null)
|
||||
if (analytics?.level != null)
|
||||
Text(
|
||||
"${snapshot.data!.level!}",
|
||||
"${analytics!.level!}",
|
||||
style: textStyle ??
|
||||
TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ class ModelKey {
|
|||
static const String userDateOfBirth = 'date_of_birth';
|
||||
static const String userSpeaks = 'speaks';
|
||||
static const String userCountry = 'country';
|
||||
static const String userAbout = 'about';
|
||||
static const String hasJoinedHelpSpace = 'has_joined_help_space';
|
||||
static const String userInterests = 'interests';
|
||||
static const String publicProfile = 'public_profile';
|
||||
|
|
|
|||
|
|
@ -120,7 +120,10 @@ class PangeaController {
|
|||
|
||||
_settingsSubscription?.cancel();
|
||||
_settingsSubscription = userController.settingsUpdateStream.stream.listen(
|
||||
(update) => matrixState.client.updateBotOptions(update.userSettings),
|
||||
(update) async {
|
||||
await matrixState.client.updateBotOptions(update.userSettings);
|
||||
await userController.updatePublicProfile();
|
||||
},
|
||||
);
|
||||
|
||||
_joinSpaceSubscription?.cancel();
|
||||
|
|
@ -178,8 +181,10 @@ class PangeaController {
|
|||
]);
|
||||
}
|
||||
|
||||
_clearCache(exclude: exclude);
|
||||
matrixState.client.updateBotOptions(userController.profile.userSettings);
|
||||
await _clearCache(exclude: exclude);
|
||||
await matrixState.client
|
||||
.updateBotOptions(userController.profile.userSettings);
|
||||
await userController.updatePublicProfile();
|
||||
}
|
||||
|
||||
static final List<String> _storageKeys = [
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ class CountryPickerDropdownState extends State<CountryPickerDropdown> {
|
|||
),
|
||||
),
|
||||
],
|
||||
onChanged: widget.learningController.changeCountry,
|
||||
onChanged: widget.learningController.setCountry,
|
||||
value: widget.learningController.country,
|
||||
dropdownSearchData: DropdownSearchData(
|
||||
searchController: _searchController,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import 'dart:async';
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
|
|
@ -44,11 +45,14 @@ class SettingsLearningController extends State<SettingsLearning> {
|
|||
String? languageMatchError;
|
||||
|
||||
final ScrollController scrollController = ScrollController();
|
||||
final TextEditingController aboutTextController = TextEditingController();
|
||||
Timer? _textDebounce;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_profile = pangeaController.userController.profile.copy();
|
||||
aboutTextController.text = _profile.userSettings.about ?? '';
|
||||
TtsController.setAvailableLanguages().then((_) => setState(() {}));
|
||||
}
|
||||
|
||||
|
|
@ -56,6 +60,8 @@ class SettingsLearningController extends State<SettingsLearning> {
|
|||
void dispose() {
|
||||
TtsController.stop();
|
||||
scrollController.dispose();
|
||||
aboutTextController.dispose();
|
||||
_textDebounce?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
|
@ -183,11 +189,19 @@ class SettingsLearningController extends State<SettingsLearning> {
|
|||
if (mounted) setState(() {});
|
||||
}
|
||||
|
||||
void changeCountry(Country? country) {
|
||||
void setCountry(Country? country) {
|
||||
_profile.userSettings.country = country?.name;
|
||||
if (mounted) setState(() {});
|
||||
}
|
||||
|
||||
void setAbout(String about) {
|
||||
_profile.userSettings.about = about;
|
||||
_textDebounce?.cancel();
|
||||
_textDebounce = Timer(const Duration(milliseconds: 500), () {
|
||||
if (mounted) setState(() {});
|
||||
});
|
||||
}
|
||||
|
||||
void updateToolSetting(ToolSetting toolSetting, bool value) {
|
||||
switch (toolSetting) {
|
||||
case ToolSetting.interactiveTranslator:
|
||||
|
|
@ -350,6 +364,8 @@ class SettingsLearningController extends State<SettingsLearning> {
|
|||
Country? get country =>
|
||||
CountryService().findByName(_profile.userSettings.country);
|
||||
|
||||
String? get about => _profile.userSettings.about;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SettingsLearningView(this);
|
||||
|
|
|
|||
|
|
@ -144,6 +144,16 @@ class SettingsLearningView extends StatelessWidget {
|
|||
initialGender: controller.gender,
|
||||
onChanged: controller.setGender,
|
||||
),
|
||||
TextField(
|
||||
controller: controller.aboutTextController,
|
||||
decoration: InputDecoration(
|
||||
hintText: L10n.of(context).aboutMeHint,
|
||||
),
|
||||
onChanged: (val) =>
|
||||
controller.setAbout(val),
|
||||
minLines: 1,
|
||||
maxLines: 3,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
38
lib/pangea/user/about_me_display.dart
Normal file
38
lib/pangea/user/about_me_display.dart
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
||||
class AboutMeDisplay extends StatelessWidget {
|
||||
final String userId;
|
||||
final double maxWidth;
|
||||
final double textSize;
|
||||
|
||||
const AboutMeDisplay({
|
||||
super.key,
|
||||
required this.userId,
|
||||
this.maxWidth = 200,
|
||||
this.textSize = 12,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ConstrainedBox(
|
||||
constraints: BoxConstraints(maxWidth: maxWidth),
|
||||
child: FutureBuilder(
|
||||
future: MatrixState.pangeaController.userController
|
||||
.getPublicProfile(userId),
|
||||
builder: (context, snapshot) => snapshot.data?.about == null
|
||||
? const SizedBox.shrink()
|
||||
: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: Text(
|
||||
snapshot.data!.about!,
|
||||
style: TextStyle(fontSize: textSize),
|
||||
maxLines: 3,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
61
lib/pangea/user/public_profile_model.dart
Normal file
61
lib/pangea/user/public_profile_model.dart
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import 'package:country_picker/country_picker.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
|
||||
import 'package:fluffychat/pangea/user/analytics_profile_model.dart';
|
||||
|
||||
class PublicProfileModel {
|
||||
final AnalyticsProfileModel analytics;
|
||||
final String? country;
|
||||
final String? about;
|
||||
|
||||
const PublicProfileModel({
|
||||
required this.analytics,
|
||||
this.country,
|
||||
this.about,
|
||||
});
|
||||
|
||||
String? get countryEmoji =>
|
||||
country != null ? CountryService().findByName(country!)?.flagEmoji : null;
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final json = analytics.toJson();
|
||||
|
||||
if (country != null) {
|
||||
json['country'] = country;
|
||||
}
|
||||
|
||||
if (about != null) {
|
||||
json['about'] = about;
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
factory PublicProfileModel.fromJson(Map<String, dynamic> json) {
|
||||
final analytics = AnalyticsProfileModel.fromJson(json);
|
||||
|
||||
final profileJson =
|
||||
json[PangeaEventTypes.profileAnalytics] as Map<String, dynamic>?;
|
||||
|
||||
final String? country = profileJson != null ? profileJson['country'] : null;
|
||||
final String? about = profileJson != null ? profileJson['about'] : null;
|
||||
|
||||
return PublicProfileModel(
|
||||
analytics: analytics,
|
||||
country: country,
|
||||
about: about,
|
||||
);
|
||||
}
|
||||
|
||||
PublicProfileModel copyWith({
|
||||
AnalyticsProfileModel? analytics,
|
||||
String? country,
|
||||
String? about,
|
||||
}) {
|
||||
return PublicProfileModel(
|
||||
analytics: analytics ?? this.analytics,
|
||||
country: country ?? this.country,
|
||||
about: about ?? this.about,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ import 'package:fluffychat/pangea/languages/language_service.dart';
|
|||
import 'package:fluffychat/pangea/languages/p_language_store.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/tool_settings_enum.dart';
|
||||
import 'package:fluffychat/pangea/user/analytics_profile_model.dart';
|
||||
import 'package:fluffychat/pangea/user/public_profile_model.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
import 'user_model.dart';
|
||||
|
||||
|
|
@ -43,7 +44,7 @@ class UserController {
|
|||
/// to be read in from client's account data each time it is accessed.
|
||||
Profile? _cachedProfile;
|
||||
|
||||
AnalyticsProfileModel? analyticsProfile;
|
||||
PublicProfileModel? publicProfile;
|
||||
|
||||
/// Listens for account updates and updates the cached profile
|
||||
StreamSubscription? _profileListener;
|
||||
|
|
@ -174,18 +175,21 @@ class UserController {
|
|||
if (client.userID == null) return;
|
||||
try {
|
||||
final resp = await client.getUserProfile(client.userID!);
|
||||
analyticsProfile =
|
||||
AnalyticsProfileModel.fromJson(resp.additionalProperties);
|
||||
publicProfile = PublicProfileModel.fromJson(resp.additionalProperties);
|
||||
} catch (e) {
|
||||
// getting a 404 error for some users without pre-existing profile
|
||||
// still want to set other properties, so catch this error
|
||||
analyticsProfile = AnalyticsProfileModel();
|
||||
publicProfile = PublicProfileModel(
|
||||
analytics: AnalyticsProfileModel(),
|
||||
);
|
||||
}
|
||||
|
||||
await updatePublicProfile();
|
||||
|
||||
// Do not await. This function pulls level from analytics,
|
||||
// so it waits for analytics to finish initializing. Analytics waits for user controller to
|
||||
// finish initializing, so this would cause a deadlock.
|
||||
if (analyticsProfile!.isEmpty) {
|
||||
if (publicProfile!.analytics.isEmpty) {
|
||||
final analyticsService =
|
||||
MatrixState.pangeaController.matrixState.analyticsDataService;
|
||||
|
||||
|
|
@ -272,12 +276,24 @@ class UserController {
|
|||
Future<void> _savePublicProfileUpdate(
|
||||
String type,
|
||||
Map<String, dynamic> content,
|
||||
) async =>
|
||||
client.setUserProfile(
|
||||
) async {
|
||||
try {
|
||||
await client.setUserProfile(
|
||||
client.userID!,
|
||||
type,
|
||||
content,
|
||||
);
|
||||
} catch (e, s) {
|
||||
ErrorHandler.logError(
|
||||
e: e,
|
||||
s: s,
|
||||
data: {
|
||||
'type': type,
|
||||
'content': content,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateAnalyticsProfile({
|
||||
required int level,
|
||||
|
|
@ -286,75 +302,98 @@ class UserController {
|
|||
}) async {
|
||||
targetLanguage ??= userL2;
|
||||
baseLanguage ??= userL1;
|
||||
if (targetLanguage == null || analyticsProfile == null) return;
|
||||
if (targetLanguage == null || publicProfile == null) return;
|
||||
|
||||
final analyticsRoom = client.analyticsRoomLocal(targetLanguage);
|
||||
|
||||
if (analyticsProfile!.targetLanguage == targetLanguage &&
|
||||
analyticsProfile!.baseLanguage == baseLanguage &&
|
||||
analyticsProfile!.languageAnalytics?[targetLanguage]?.level == level &&
|
||||
analyticsProfile!.analyticsRoomIdByLanguage(targetLanguage) ==
|
||||
if (publicProfile!.analytics.targetLanguage == targetLanguage &&
|
||||
publicProfile!.analytics.baseLanguage == baseLanguage &&
|
||||
publicProfile!.analytics.languageAnalytics?[targetLanguage]?.level ==
|
||||
level &&
|
||||
publicProfile!.analytics.analyticsRoomIdByLanguage(targetLanguage) ==
|
||||
analyticsRoom?.id) {
|
||||
return;
|
||||
}
|
||||
|
||||
analyticsProfile!.baseLanguage = baseLanguage;
|
||||
analyticsProfile!.targetLanguage = targetLanguage;
|
||||
analyticsProfile!.setLanguageInfo(
|
||||
publicProfile!.analytics.baseLanguage = baseLanguage;
|
||||
publicProfile!.analytics.targetLanguage = targetLanguage;
|
||||
publicProfile!.analytics.setLanguageInfo(
|
||||
targetLanguage,
|
||||
level,
|
||||
analyticsRoom?.id,
|
||||
);
|
||||
|
||||
await _savePublicProfileUpdate(
|
||||
PangeaEventTypes.profileAnalytics,
|
||||
analyticsProfile!.toJson(),
|
||||
publicProfile!.toJson(),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _addAnalyticsRoomIdsToPublicProfile() async {
|
||||
if (analyticsProfile?.languageAnalytics == null) return;
|
||||
if (publicProfile?.analytics.languageAnalytics == null) return;
|
||||
final analyticsRooms = client.allMyAnalyticsRooms;
|
||||
|
||||
if (analyticsRooms.isEmpty) return;
|
||||
for (final analyticsRoom in analyticsRooms) {
|
||||
final lang = analyticsRoom.madeForLang?.split("-").first;
|
||||
if (lang == null || analyticsProfile?.languageAnalytics == null) continue;
|
||||
if (lang == null || publicProfile?.analytics.languageAnalytics == null) {
|
||||
continue;
|
||||
}
|
||||
final langKey =
|
||||
analyticsProfile!.languageAnalytics!.keys.firstWhereOrNull(
|
||||
publicProfile!.analytics.languageAnalytics!.keys.firstWhereOrNull(
|
||||
(l) => l.langCodeShort == lang,
|
||||
);
|
||||
|
||||
if (langKey == null) continue;
|
||||
if (analyticsProfile!.languageAnalytics![langKey]!.analyticsRoomId ==
|
||||
if (publicProfile!
|
||||
.analytics.languageAnalytics![langKey]!.analyticsRoomId ==
|
||||
analyticsRoom.id) {
|
||||
continue;
|
||||
}
|
||||
|
||||
analyticsProfile!.setLanguageInfo(
|
||||
publicProfile!.analytics.setLanguageInfo(
|
||||
langKey,
|
||||
analyticsProfile!.languageAnalytics![langKey]!.level,
|
||||
publicProfile!.analytics.languageAnalytics![langKey]!.level,
|
||||
analyticsRoom.id,
|
||||
);
|
||||
}
|
||||
|
||||
await _savePublicProfileUpdate(
|
||||
PangeaEventTypes.profileAnalytics,
|
||||
analyticsProfile!.toJson(),
|
||||
publicProfile!.toJson(),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> addXPOffset(int offset) async {
|
||||
final targetLanguage = userL2;
|
||||
if (targetLanguage == null || analyticsProfile == null) return;
|
||||
if (targetLanguage == null || publicProfile == null) return;
|
||||
|
||||
analyticsProfile!.addXPOffset(
|
||||
publicProfile!.analytics.addXPOffset(
|
||||
targetLanguage,
|
||||
offset,
|
||||
client.analyticsRoomLocal(targetLanguage)?.id,
|
||||
);
|
||||
await _savePublicProfileUpdate(
|
||||
PangeaEventTypes.profileAnalytics,
|
||||
analyticsProfile!.toJson(),
|
||||
publicProfile!.toJson(),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> updatePublicProfile() async {
|
||||
if (publicProfile == null ||
|
||||
(publicProfile!.country == profile.userSettings.country &&
|
||||
publicProfile!.about == profile.userSettings.about)) {
|
||||
return;
|
||||
}
|
||||
|
||||
publicProfile = publicProfile!.copyWith(
|
||||
country: profile.userSettings.country,
|
||||
about: profile.userSettings.about,
|
||||
);
|
||||
|
||||
await _savePublicProfileUpdate(
|
||||
PangeaEventTypes.profileAnalytics,
|
||||
publicProfile!.toJson(),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -380,6 +419,28 @@ class UserController {
|
|||
}
|
||||
}
|
||||
|
||||
Future<PublicProfileModel?> getPublicProfile(String userId) async {
|
||||
try {
|
||||
if (userId == BotName.byEnvironment) {
|
||||
return PublicProfileModel(
|
||||
analytics: AnalyticsProfileModel(),
|
||||
);
|
||||
}
|
||||
|
||||
final resp = await client.getUserProfile(userId);
|
||||
return PublicProfileModel.fromJson(resp.additionalProperties);
|
||||
} catch (e, s) {
|
||||
ErrorHandler.logError(
|
||||
e: e,
|
||||
s: s,
|
||||
data: {
|
||||
userId: userId,
|
||||
},
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
bool isToolEnabled(ToolSetting setting) {
|
||||
return userToolSetting(setting);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ class UserSettings {
|
|||
String? sourceLanguage;
|
||||
GenderEnum gender;
|
||||
String? country;
|
||||
String? about;
|
||||
LanguageLevelTypeEnum cefrLevel;
|
||||
String? voice;
|
||||
|
||||
|
|
@ -29,6 +30,7 @@ class UserSettings {
|
|||
this.sourceLanguage,
|
||||
this.gender = GenderEnum.unselected,
|
||||
this.country,
|
||||
this.about,
|
||||
this.cefrLevel = LanguageLevelTypeEnum.a1,
|
||||
this.voice,
|
||||
});
|
||||
|
|
@ -49,6 +51,7 @@ class UserSettings {
|
|||
)
|
||||
: GenderEnum.unselected,
|
||||
country: json[ModelKey.userCountry],
|
||||
about: json[ModelKey.userAbout],
|
||||
cefrLevel: json[ModelKey.cefrLevel] is String
|
||||
? LanguageLevelTypeEnum.fromString(
|
||||
json[ModelKey.cefrLevel],
|
||||
|
|
@ -66,6 +69,7 @@ class UserSettings {
|
|||
data[ModelKey.sourceLanguage] = sourceLanguage;
|
||||
data[ModelKey.userGender] = gender.string;
|
||||
data[ModelKey.userCountry] = country;
|
||||
data[ModelKey.userAbout] = about;
|
||||
data[ModelKey.cefrLevel] = cefrLevel.string;
|
||||
data[ModelKey.voice] = voice;
|
||||
return data;
|
||||
|
|
@ -126,6 +130,7 @@ class UserSettings {
|
|||
sourceLanguage: sourceLanguage,
|
||||
gender: gender,
|
||||
country: country,
|
||||
about: about,
|
||||
cefrLevel: cefrLevel,
|
||||
voice: voice,
|
||||
);
|
||||
|
|
@ -143,6 +148,7 @@ class UserSettings {
|
|||
other.sourceLanguage == sourceLanguage &&
|
||||
other.gender == gender &&
|
||||
other.country == country &&
|
||||
other.about == about &&
|
||||
other.cefrLevel == cefrLevel &&
|
||||
other.voice == voice;
|
||||
}
|
||||
|
|
@ -156,6 +162,7 @@ class UserSettings {
|
|||
sourceLanguage.hashCode,
|
||||
gender.hashCode,
|
||||
country.hashCode,
|
||||
about.hashCode,
|
||||
cefrLevel.hashCode,
|
||||
voice.hashCode,
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import 'package:matrix/matrix.dart';
|
|||
import 'package:fluffychat/config/themes.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:fluffychat/pangea/analytics_misc/level_display_name.dart';
|
||||
import 'package:fluffychat/pangea/user/about_me_display.dart';
|
||||
import 'package:fluffychat/utils/date_time_extension.dart';
|
||||
import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart';
|
||||
import 'package:fluffychat/widgets/avatar.dart';
|
||||
|
|
@ -163,10 +164,10 @@ class UserDialog extends StatelessWidget {
|
|||
// ),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
child: Column(
|
||||
children: [
|
||||
LevelDisplayName(userId: profile.userId),
|
||||
AboutMeDisplay(userId: profile.userId),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:fluffychat/pangea/analytics_misc/level_display_name.dart';
|
|||
import 'package:fluffychat/pangea/bot/utils/bot_name.dart';
|
||||
import 'package:fluffychat/pangea/bot/widgets/bot_chat_settings_dialog.dart';
|
||||
import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart';
|
||||
import 'package:fluffychat/pangea/user/about_me_display.dart';
|
||||
import 'package:fluffychat/widgets/avatar.dart';
|
||||
import 'package:fluffychat/widgets/permission_slider_dialog.dart';
|
||||
import 'adaptive_dialogs/show_ok_cancel_alert_dialog.dart';
|
||||
|
|
@ -58,53 +59,61 @@ void showMemberActionsPopupMenu({
|
|||
items: <PopupMenuEntry<_MemberActions>>[
|
||||
PopupMenuItem(
|
||||
value: _MemberActions.info,
|
||||
child: Row(
|
||||
// Pangea#
|
||||
spacing: 12.0,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Avatar(
|
||||
name: displayname,
|
||||
mxContent: user.avatarUrl,
|
||||
presenceUserId: user.id,
|
||||
presenceBackgroundColor: theme.colorScheme.surfaceContainer,
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
Row(
|
||||
// Pangea#
|
||||
spacing: 12.0,
|
||||
children: [
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(maxWidth: 128),
|
||||
child: Text(
|
||||
displayname,
|
||||
textAlign: TextAlign.center,
|
||||
style: theme.textTheme.labelLarge,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
Avatar(
|
||||
name: displayname,
|
||||
mxContent: user.avatarUrl,
|
||||
presenceUserId: user.id,
|
||||
presenceBackgroundColor: theme.colorScheme.surfaceContainer,
|
||||
),
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(maxWidth: 128),
|
||||
child: Text(
|
||||
user.id,
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(fontSize: 10),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(maxWidth: 128),
|
||||
child: Text(
|
||||
displayname,
|
||||
textAlign: TextAlign.center,
|
||||
style: theme.textTheme.labelLarge,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(maxWidth: 128),
|
||||
child: Text(
|
||||
user.id,
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(fontSize: 10),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
// #Pangea
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
LevelDisplayName(userId: user.id),
|
||||
],
|
||||
),
|
||||
),
|
||||
// Pangea#
|
||||
],
|
||||
),
|
||||
// #Pangea
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
LevelDisplayName(userId: user.id),
|
||||
],
|
||||
),
|
||||
),
|
||||
// Pangea#
|
||||
],
|
||||
),
|
||||
// #Pangea
|
||||
AboutMeDisplay(userId: user.id),
|
||||
// Pangea#
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue