diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 1b2e5b616..12d15f6a7 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -134,7 +134,7 @@ + android:value="false" /> io.flutter.embedded_views_preview FlutterDeepLinkingEnabled - + diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index 79de6dbcb..bbb9bf4d6 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -1,6 +1,6 @@ { "@@locale": "ar", - "@@last_modified": "2026-01-28 13:26:35.542116", + "@@last_modified": "2026-01-29 15:25:01.121856", "about": "حول", "@about": { "type": "String", @@ -3670,8 +3670,6 @@ "noPaymentInfo": "لا حاجة لمعلومات الدفع!", "updatePhoneOS": "قد تحتاج إلى تحديث إصدار نظام تشغيل جهازك.", "wordsPerMinute": "كلمات في الدقيقة", - "autoIGCToolName": "تشغيل مساعدة الكتابة Pangea تلقائيًا", - "autoIGCToolDescription": "تشغيل مساعدة القواعد والترجمة في دردشة Pangea تلقائيًا قبل إرسال رسالتي.", "tooltipInstructionsTitle": "لست متأكدًا مما يفعله ذلك؟", "tooltipInstructionsMobileBody": "اضغط مع الاستمرار على العناصر لعرض تلميحات الأدوات.", "tooltipInstructionsBrowserBody": "مرر فوق العناصر لعرض تلميحات الأدوات.", @@ -6422,14 +6420,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11171,5 +11161,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "تفعيل مساعدة الكتابة", + "autoIGCToolDescription": "تشغيل أدوات دردشة بانجيا تلقائيًا لتصحيح الرسائل المرسلة إلى اللغة المستهدفة.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "فشل التسجيل. يرجى التحقق من أذونات الصوت الخاصة بك والمحاولة مرة أخرى.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb index 75bef97b7..5495930c4 100644 --- a/lib/l10n/intl_be.arb +++ b/lib/l10n/intl_be.arb @@ -1187,8 +1187,6 @@ "noPaymentInfo": "Інфармацыя аб плацяжах не патрабуецца!", "updatePhoneOS": "Магчыма, вам трэба абнавіць версію аперацыйнай сістэмы вашага прылады.", "wordsPerMinute": "Словы за хвіліну", - "autoIGCToolName": "Аўтаматычна запускаць дапамогу для пісьма Pangea", - "autoIGCToolDescription": "Аўтаматычна запускаць дапамогу для граматыкі і перакладу ў чат-прыкладанні Pangea перад адпраўкай майго паведамлення.", "tooltipInstructionsTitle": "Не ўпэўнены, што гэта робіць?", "tooltipInstructionsMobileBody": "Затрымайце і трымайце элементы, каб праглядзець падказкі.", "tooltipInstructionsBrowserBody": "Навядзіце курсор на элементы, каб праглядзець падказкі.", @@ -1910,7 +1908,7 @@ "playWithAI": "Пакуль гуляйце з ШІ", "courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!", "@@locale": "be", - "@@last_modified": "2026-01-28 13:26:22.828870", + "@@last_modified": "2026-01-29 15:24:53.163474", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7304,14 +7302,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12053,5 +12043,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Уключыць дапамогу ў напісанні", + "autoIGCToolDescription": "Аўтаматычна запускаць інструменты Pangea Chat для выпраўлення адпраўленых паведамленняў на мэтавую мову.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Запіс не ўдалося. Калі ласка, праверце свае аўдыё дазволы і паспрабуйце яшчэ раз.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb index 8f60d1e0b..75bed772b 100644 --- a/lib/l10n/intl_bn.arb +++ b/lib/l10n/intl_bn.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:47.712647", + "@@last_modified": "2026-01-29 15:25:11.468426", "about": "সম্পর্কে", "@about": { "type": "String", @@ -3779,8 +3779,6 @@ "noPaymentInfo": "কোনও পেমেন্ট তথ্য প্রয়োজন নয়!", "updatePhoneOS": "আপনার ডিভাইসের অপারেটিং সিস্টেমের সংস্করণ আপডেটের প্রয়োজন হতে পারে।", "wordsPerMinute": "প্রতি মিনিটে শব্দ", - "autoIGCToolName": "পাঙ্গিয়া লেখনী সহায়তা স্বয়ংক্রিয়ভাবে চালান", - "autoIGCToolDescription": "আমার বার্তা পাঠানোর আগে স্বয়ংক্রিয়ভাবে পাঙ্গিয়া চ্যাট ব্যাকরণ এবং অনুবাদ লেখনী সহায়তা চালান।", "tooltipInstructionsTitle": "এটি কি করে তা নিশ্চিত নন?", "tooltipInstructionsMobileBody": "আইটেমে চাপুন এবং ধরে রাখুন টুলটিপ দেখার জন্য।", "tooltipInstructionsBrowserBody": "আইটেমের উপর হোভার করে টুলটিপ দেখুন।", @@ -7309,14 +7307,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12058,5 +12048,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "লেখার সহায়তা সক্রিয় করুন", + "autoIGCToolDescription": "লক্ষ্য ভাষায় পাঠানো বার্তা সংশোধন করতে স্বয়ংক্রিয়ভাবে প্যাঙ্গিয়া চ্যাট টুলগুলি চালান।", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "রেকর্ডিং ব্যর্থ হয়েছে। দয়া করে আপনার অডিও অনুমতিগুলি পরীক্ষা করুন এবং আবার চেষ্টা করুন।", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb index 943d56029..3fc63cb2f 100644 --- a/lib/l10n/intl_bo.arb +++ b/lib/l10n/intl_bo.arb @@ -3621,8 +3621,6 @@ "translationTooltip": "འབྲེལ་བའི་སྒྲོམ", "updatePhoneOS": "ཁྱེད་ཀྱི་རྒྱུན་ལས་སྤྱོད་ལམ་ལ་བསྐུར་བྱེད་དགོས་མིན་པ", "wordsPerMinute": "ཚིག་ལ་སྤྱོད་ལམ་ལ་བརྟེན་", - "autoIGCToolName": "ཕན་ཚུལ་ལས་འགན་སྤྱོད་ལས་སྤྱོད་ལམ་ལ་བརྟེན་", - "autoIGCToolDescription": "ཁྱེད་ཀྱི་དུས་སྐབས་སྤྱོད་ལམ་ལ་བརྟེན་པའི་ཕན་ཚུལ་ལས་འགན་སྤྱོད་ལས་སྤྱོད་ལམ་ལ་བརྟེན་", "tooltipInstructionsTitle": "དེ་ལ་གང་འདྲ་ཡོད་པ?", "tooltipInstructionsMobileBody": "རྟེན་འབྲེལ་དང་བསྟན་པའི་རྟེན་འབྲེལ་ལ་ལོག་བརྟེན་", "tooltipInstructionsBrowserBody": "རྟེན་འབྲེལ་ལ་ལོག་བརྟེན་", @@ -4278,7 +4276,7 @@ "joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།", "startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།", "@@locale": "bo", - "@@last_modified": "2026-01-28 13:26:44.570789", + "@@last_modified": "2026-01-29 15:25:08.749600", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -6724,14 +6722,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10708,5 +10698,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Buka bantuan nulis", + "autoIGCToolDescription": "Secara otomatis menjalankan alat Pangea Chat untuk memperbaiki pesan yang dikirim ke bahasa target.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Recording failed. Please check your audio permissions and try again.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb index 32c6fa6c5..8368b89d7 100644 --- a/lib/l10n/intl_ca.arb +++ b/lib/l10n/intl_ca.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:23.872618", + "@@last_modified": "2026-01-29 15:24:54.287095", "about": "Quant a", "@about": { "type": "String", @@ -3757,8 +3757,6 @@ "noPaymentInfo": "No cal informació de pagament!", "updatePhoneOS": "Pot ser que necessitis actualitzar la versió del sistema operatiu del teu dispositiu.", "wordsPerMinute": "Paraules per minut", - "autoIGCToolName": "Executa automàticament l'assistència d'escriptura Pangea", - "autoIGCToolDescription": "Executa automàticament l'assistència d'escriptura de gramàtica i traducció de Pangea abans d'enviar el meu missatge.", "tooltipInstructionsTitle": "No estàs segur de què fa això?", "tooltipInstructionsMobileBody": "Prem i mantén premut per veure les eines d'informació sobre les opcions.", "tooltipInstructionsBrowserBody": "Passa el cursor sobre els elements per veure les eines d'informació.", @@ -6229,14 +6227,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10978,5 +10968,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Activar l'assistència d'escriptura", + "autoIGCToolDescription": "Executar automàticament les eines de Pangea Chat per corregir els missatges enviats a l'idioma de destinació.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "La gravació ha fallat. Si us plau, comproveu els vostres permisos d'àudio i torneu-ho a provar.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index 94fb2d6fd..131ca13bc 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,6 +1,6 @@ { "@@locale": "cs", - "@@last_modified": "2026-01-28 13:26:20.564591", + "@@last_modified": "2026-01-29 15:24:50.917574", "about": "O aplikaci", "@about": { "type": "String", @@ -3314,8 +3314,6 @@ "noPaymentInfo": "Není třeba žádné platební informace!", "updatePhoneOS": "Možná budete muset aktualizovat verzi operačního systému vašeho zařízení", "wordsPerMinute": "Slov za minutu", - "autoIGCToolName": "Automaticky spustit pomoc s psaním Pangea", - "autoIGCToolDescription": "Automaticky spustit gramatickou kontrolu a překlad pomocí Pangea Chat před odesláním mé zprávy", "tooltipInstructionsTitle": "Nejste si jistí, co to dělá?", "tooltipInstructionsMobileBody": "Podržte položky pro zobrazení nápověd.", "tooltipInstructionsBrowserBody": "Na položky najeďte myší pro zobrazení nápověd.", @@ -6812,14 +6810,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11561,5 +11551,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Povolit asistenci při psaní", + "autoIGCToolDescription": "Automaticky spouštět nástroje Pangea Chat pro opravu odeslaných zpráv do cílového jazyka.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Nahrávání se nezdařilo. Zkontrolujte prosím svá oprávnění k audiosouborům a zkuste to znovu.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 51ca228a6..c9199d76a 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -1206,8 +1206,6 @@ "noPaymentInfo": "Ingen betalingsoplysninger nødvendige!", "updatePhoneOS": "Du kan være nødt til at opdatere din enheds OS-version.", "wordsPerMinute": "Ord pr. minut", - "autoIGCToolName": "Kør Pangea skriveassistance automatisk", - "autoIGCToolDescription": "Kør automatisk Pangea Chat grammatik- og oversættelsesassistance, før jeg sender min besked.", "tooltipInstructionsTitle": "Er du ikke sikker på, hvad det gør?", "tooltipInstructionsMobileBody": "Tryk og hold på elementer for at se værktøjstip.", "tooltipInstructionsBrowserBody": "Hold musen over elementer for at se værktøjstip.", @@ -1929,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-01-28 13:25:58.575899", + "@@last_modified": "2026-01-29 15:24:30.021734", "@aboutHomeserver": { "type": "String", "placeholders": { @@ -7267,14 +7265,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12015,5 +12005,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Aktivér skriveassistance", + "autoIGCToolDescription": "Kør automatisk Pangea Chat-værktøjer for at rette sendte beskeder til målsproget.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Optagelse mislykkedes. Tjek venligst dine lydtilladelser og prøv igen.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index d09f5edac..3946a72f4 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "@@last_modified": "2026-01-28 13:26:14.577124", + "@@last_modified": "2026-01-29 15:24:45.173559", "alwaysUse24HourFormat": "true", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." @@ -3792,8 +3792,6 @@ "noPaymentInfo": "Keine Zahlungsinformationen erforderlich!", "updatePhoneOS": "Sie müssen möglicherweise die OS-Version Ihres Geräts aktualisieren.", "wordsPerMinute": "Wörter pro Minute", - "autoIGCToolName": "Pangea Schreibhilfe automatisch ausführen", - "autoIGCToolDescription": "Führen Sie die Pangea Chat-Grammatik- und Übersetzungs-Schreibhilfe automatisch aus, bevor Sie meine Nachricht senden.", "tooltipInstructionsTitle": "Nicht sicher, was das macht?", "tooltipInstructionsMobileBody": "Tippen und halten Sie Elemente, um Tooltips anzuzeigen.", "tooltipInstructionsBrowserBody": "Bewegen Sie den Mauszeiger über Elemente, um Tooltips anzuzeigen.", @@ -6212,14 +6210,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10961,5 +10951,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Schreibassistenz aktivieren", + "autoIGCToolDescription": "Automatisch Pangea Chat-Tools ausführen, um gesendete Nachrichten in die Zielsprache zu korrigieren.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Die Aufnahme ist fehlgeschlagen. Bitte überprüfen Sie Ihre Audio-Berechtigungen und versuchen Sie es erneut.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index a752153e0..f8f02aaac 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -3732,8 +3732,6 @@ "noPaymentInfo": "Δεν απαιτείται πληροφορία πληρωμής!", "updatePhoneOS": "Ίσως χρειαστεί να ενημερώσετε την έκδοση του λειτουργικού συστήματος της συσκευής σας.", "wordsPerMinute": "Λέξεις ανά λεπτό", - "autoIGCToolName": "Αυτόματη εκτέλεση της βοήθειας γραφής Pangea", - "autoIGCToolDescription": "Αυτόματα εκτελείτε τη γραμματική και τη βοήθεια μετάφρασης του Pangea Chat πριν στείλετε το μήνυμά μου.", "tooltipInstructionsTitle": "Δεν είστε σίγουροι τι κάνει αυτό;", "tooltipInstructionsMobileBody": "Πατήστε και κρατήστε πατημένο αντικείμενα για να δείτε τις συμβουλές εργαλείων.", "tooltipInstructionsBrowserBody": "Τοποθετήστε το δείκτη πάνω από αντικείμενα για να δείτε τις συμβουλές εργαλείων.", @@ -4455,7 +4453,7 @@ "playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν", "courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!", "@@locale": "el", - "@@last_modified": "2026-01-28 13:26:53.057151", + "@@last_modified": "2026-01-29 15:25:16.616510", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7263,14 +7261,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12012,5 +12002,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Ενεργοποίηση βοήθειας γραφής", + "autoIGCToolDescription": "Αυτόματα εκτελέστε τα εργαλεία Pangea Chat για να διορθώσετε τα αποσταλμένα μηνύματα στη γλώσσα στόχο.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Η ηχογράφηση απέτυχε. Παρακαλώ ελέγξτε τις άδειες ήχου σας και δοκιμάστε ξανά.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index e8064ea1e..a9d91816d 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -3730,8 +3730,6 @@ "noPaymentInfo": "No payment info necessary!", "updatePhoneOS": "You may need to update your device's OS version.", "wordsPerMinute": "Words per minute", - "autoIGCToolName": "Run Pangea writing assistance automatically", - "autoIGCToolDescription": "Automatically run Pangea Chat grammar and translation writing assistance before sending my message.", "chatCapacity": "Chat capacity", "roomFull": "This room is already at capacity.", "chatCapacityHasBeenChanged": "Chat capacity changed", @@ -5067,5 +5065,8 @@ "courseLoadingError": "Something went wrong, and we're hard at work fixing it. Check again later.", "onboardingLanguagesTitle": "What language are you learning?", "searchLanguagesHint": "Search target languages", - "supportSubtitle": "Questions? We're here to help!" + "supportSubtitle": "Questions? We're here to help!", + "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." } diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb index 09bb94838..2db67fc78 100644 --- a/lib/l10n/intl_eo.arb +++ b/lib/l10n/intl_eo.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:57.219657", + "@@last_modified": "2026-01-29 15:25:20.184834", "about": "Prio", "@about": { "type": "String", @@ -2911,8 +2911,6 @@ "noPaymentInfo": "Ne necesas paginformoj!", "updatePhoneOS": "Eble vi bezonas ĝisdatigi la version de la operaciumo de via aparato.", "wordsPerMinute": "Vortoj po minuto", - "autoIGCToolName": "Kurigu Pangea verkhelpilo aŭtomate", - "autoIGCToolDescription": "Aŭtomate funkciigu Pangea Chat gramatikon kaj tradukadon por helpi vin verki antaŭ ol sendi vian mesaĝon.", "tooltipInstructionsTitle": "Ne certas kio tio faras?", "tooltipInstructionsMobileBody": "Premu kaj teni objektojn por vidi ilustraĵojn.", "tooltipInstructionsBrowserBody": "Hovru super objektoj por vidi ilustraĵojn.", @@ -7294,14 +7292,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12043,5 +12033,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Ebligi skriban asistadon", + "autoIGCToolDescription": "Aŭtomate funkciigi Pangea Chat-ilojn por korekti senditajn mesaĝojn al la cellingvo.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Registrado malsukcesis. Bonvolu kontroli viajn aŭdajn permesojn kaj provi denove.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index d55ec2891..7551953cc 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,6 @@ { "@@locale": "es", - "@@last_modified": "2026-01-28 13:25:54.826808", + "@@last_modified": "2026-01-29 15:24:25.947319", "about": "Acerca de", "@about": { "type": "String", @@ -4251,8 +4251,6 @@ "wordsPerMinute": "Palabras por minuto", "roomFull": "Esta sala ya está al límite de su capacidad.", "enterNumber": "Introduzca un valor numérico entero.", - "autoIGCToolName": "Ejecutar automáticamente la asistencia lingüística", - "autoIGCToolDescription": "Ejecutar automáticamente la asistencia lingüística después de escribir mensajes", "buildTranslation": "Construye tu traducción a partir de las opciones anteriores", "languageSettings": "Ajustes de idioma", "selectSpaceDominantLanguage": "¿Cuál es la lengua más común de los miembros del espacio?", @@ -8188,5 +8186,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Habilitar asistencia de escritura", + "autoIGCToolDescription": "Ejecutar automáticamente las herramientas de Pangea Chat para corregir los mensajes enviados al idioma de destino.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "La grabación falló. Por favor, verifica tus permisos de audio y vuelve a intentarlo.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb index 8c8809c5a..f3660a31e 100644 --- a/lib/l10n/intl_et.arb +++ b/lib/l10n/intl_et.arb @@ -1,6 +1,6 @@ { "@@locale": "et", - "@@last_modified": "2026-01-28 13:26:13.431455", + "@@last_modified": "2026-01-29 15:24:43.759174", "about": "Rakenduse teave", "@about": { "type": "String", @@ -3811,8 +3811,6 @@ "noPaymentInfo": "Makseteadet pole vaja!", "updatePhoneOS": "Võib olla vajalik uuendada oma seadme operatsioonisüsteemi versiooni.", "wordsPerMinute": "Sõnad minutis", - "autoIGCToolName": "Käivita Pangea kirjutamisabi automaatselt", - "autoIGCToolDescription": "Käivita automaatselt Pangea vestluse grammatika- ja tõlkeabi enne sõnumi saatmist.", "addSpaceToSpaceDescription": "Vali ruum, mida lisada vanemaks", "chatCapacity": "Vestluse maht", "spaceCapacity": "Ruumimaht", @@ -6229,14 +6227,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@addSpaceToSpaceDescription": { "type": "String", "placeholders": {} @@ -11225,5 +11215,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Luba kirjutamise abi", + "autoIGCToolDescription": "Käivita automaatselt Pangea Chat tööriistad, et parandada saadetud sõnumid sihtkeelde.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Salvestamine ebaõnnestus. Palun kontrollige oma heliõigusi ja proovige uuesti.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb index 3a569f1af..ee41e44f8 100644 --- a/lib/l10n/intl_eu.arb +++ b/lib/l10n/intl_eu.arb @@ -1,6 +1,6 @@ { "@@locale": "eu", - "@@last_modified": "2026-01-28 13:26:10.864458", + "@@last_modified": "2026-01-29 15:24:41.896758", "about": "Honi buruz", "@about": { "type": "String", @@ -3785,8 +3785,6 @@ "noPaymentInfo": "Ez dago ordainketa informaziorik behar!", "updatePhoneOS": "Baliteke zure gailuaren OS bertsioa eguneratu behar izatea.", "wordsPerMinute": "Hitz minutuko", - "autoIGCToolName": "Exekutatu Pangea idazketa laguntza automatikoki", - "autoIGCToolDescription": "Exekutatu automatikoki Pangea Txataren gramatika eta itzulpen idazketa laguntza mezu bat bidali aurretik.", "tooltipInstructionsTitle": "Ez da ziur zer den hori?", "tooltipInstructionsMobileBody": "Elementuak sakatu eta eutsi tresna-txartelak ikusteko.", "tooltipInstructionsBrowserBody": "Elementuak gainean mugitu eta ikusi tresna-txartelak.", @@ -6205,14 +6203,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10954,5 +10944,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Idazteko laguntza aktibatu", + "autoIGCToolDescription": "Automatikoki exekutatu Pangea Chat tresnak helburu hizkuntzara bidalitako mezuak zuzentzeko.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Grabaketa huts egin da. Mesedez, egiaztatu zure audio baimenak eta saiatu berriro.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb index a9a59f38c..a4ca4d98f 100644 --- a/lib/l10n/intl_fa.arb +++ b/lib/l10n/intl_fa.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:49.168597", + "@@last_modified": "2026-01-29 15:25:12.904348", "repeatPassword": "تکرار رمزعبور", "@repeatPassword": {}, "about": "درباره", @@ -3205,8 +3205,6 @@ "noPaymentInfo": "نیازی به اطلاعات پرداخت نیست!", "updatePhoneOS": "ممکن است نیاز باشد نسخه سیستم‌عامل دستگاه خود را به‌روزرسانی کنید.", "wordsPerMinute": "کلمات در دقیقه", - "autoIGCToolName": "اجرای خودکار کمک نوشتن پنگئا", - "autoIGCToolDescription": "به طور خودکار قبل از ارسال پیام من، کمک نگارش گرامر و ترجمه چت پنگئا را اجرا کنید.", "tooltipInstructionsTitle": "مطمئن نیستید چه کاری انجام می‌دهد؟", "tooltipInstructionsMobileBody": "برای مشاهده راهنما، آیتم‌ها را نگه دارید.", "tooltipInstructionsBrowserBody": "برای مشاهده راهنما، روی آیتم‌ها هاور کنید.", @@ -6937,14 +6935,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11686,5 +11676,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "فعال‌سازی کمک‌نویس", + "autoIGCToolDescription": "به‌طور خودکار ابزارهای چت پانژیا را برای اصلاح پیام‌های ارسال‌شده به زبان هدف اجرا کنید.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "ضبط صدا ناموفق بود. لطفاً مجوزهای صوتی خود را بررسی کرده و دوباره تلاش کنید.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb index d17f6b29b..aac0ee07e 100644 --- a/lib/l10n/intl_fi.arb +++ b/lib/l10n/intl_fi.arb @@ -3285,8 +3285,6 @@ "noPaymentInfo": "Maksutietoja ei tarvita!", "updatePhoneOS": "Saattaa olla, että sinun täytyy päivittää laitteesi käyttöjärjestelmän versio.", "wordsPerMinute": "Sanoja minuutissa", - "autoIGCToolName": "Aja Pangea kirjoitusavustusta automaattisesti", - "autoIGCToolDescription": "Aja automaattisesti Pangea Chatin kieliopin ja käännöksen kirjoitusavustusta ennen viestini lähettämistä.", "tooltipInstructionsTitle": "Et ole varma, mitä tämä tekee?", "tooltipInstructionsMobileBody": "Pidä painettuna kohteita nähdäksesi työkaluvihjeet.", "tooltipInstructionsBrowserBody": "Vie hiiri kohteen päälle nähdäksesi työkaluvihjeet.", @@ -4008,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-01-28 13:25:57.438673", + "@@last_modified": "2026-01-29 15:24:28.359131", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -6828,14 +6826,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11577,5 +11567,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Ota käyttöön kirjoitusapu", + "autoIGCToolDescription": "Suorita automaattisesti Pangea Chat -työkaluja korjataksesi lähetetyt viestit kohdekielelle.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Äänityksen tallentaminen epäonnistui. Tarkista äänioikeutesi ja yritä uudelleen.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb index 284988b9b..11f741731 100644 --- a/lib/l10n/intl_fil.arb +++ b/lib/l10n/intl_fil.arb @@ -2051,8 +2051,6 @@ "noPaymentInfo": "Hindi kailangan ng impormasyon sa pagbabayad!", "updatePhoneOS": "Maaaring kailangan mong i-update ang bersyon ng OS ng iyong device.", "wordsPerMinute": "Mga salita kada minuto", - "autoIGCToolName": "Awtomatikong patakbuhin ang Pangea writing assistance", - "autoIGCToolDescription": "Awtomatikong patakbuhin ang Pangea Chat grammar at translation writing assistance bago ipadala ang aking mensahe.", "tooltipInstructionsTitle": "Hindi sigurado kung ano ang ginagawa niyan?", "tooltipInstructionsMobileBody": "Pindutin at hawakan ang mga item upang makita ang mga tooltip.", "tooltipInstructionsBrowserBody": "I-hover ang cursor sa mga item upang makita ang mga tooltip.", @@ -2786,7 +2784,7 @@ "selectAll": "Piliin lahat", "deselectAll": "Huwag piliin lahat", "@@locale": "fil", - "@@last_modified": "2026-01-28 13:26:32.216257", + "@@last_modified": "2026-01-29 15:24:58.900213", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -7198,14 +7196,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11930,5 +11920,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Paganahin ang tulong sa pagsusulat", + "autoIGCToolDescription": "Awtomatikong patakbuhin ang mga tool ng Pangea Chat upang ituwid ang mga ipinadalang mensahe sa target na wika.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Nabigo ang pag-record. Pakisuri ang iyong mga pahintulot sa audio at subukan muli.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 22902c22d..c870edeee 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,6 @@ { "@@locale": "fr", - "@@last_modified": "2026-01-28 13:27:03.910294", + "@@last_modified": "2026-01-29 15:25:26.287351", "about": "À propos", "@about": { "type": "String", @@ -3615,8 +3615,6 @@ "noPaymentInfo": "Aucune information de paiement nécessaire !", "updatePhoneOS": "Vous devrez peut-être mettre à jour la version du système d'exploitation de votre appareil.", "wordsPerMinute": "Mots par minute", - "autoIGCToolName": "Exécuter automatiquement l'assistance à l'écriture Pangea", - "autoIGCToolDescription": "Exécuter automatiquement l'assistance à la grammaire et à la traduction de Pangea Chat avant d'envoyer mon message.", "tooltipInstructionsTitle": "Vous ne savez pas ce que cela fait ?", "tooltipInstructionsMobileBody": "Appuyez longuement sur les éléments pour voir les infobulles.", "tooltipInstructionsBrowserBody": "Survolez les éléments pour voir les infobulles.", @@ -6529,14 +6527,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11278,5 +11268,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Activer l'assistance à l'écriture", + "autoIGCToolDescription": "Exécutez automatiquement les outils de Pangea Chat pour corriger les messages envoyés dans la langue cible.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "L'enregistrement a échoué. Veuillez vérifier vos autorisations audio et réessayer.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb index 3bbdb7ddf..ec3c93803 100644 --- a/lib/l10n/intl_ga.arb +++ b/lib/l10n/intl_ga.arb @@ -3793,8 +3793,6 @@ "noPaymentInfo": "Níl aon eolas íocaíochta de dhíth!", "updatePhoneOS": "D'fhéadfadh go mbeadh ort do leagan OS a nuashonrú ar do ghléas.", "wordsPerMinute": "Focail in aghaidh na nóimead", - "autoIGCToolName": "Rith cabhair scríbhneoireachta Pangea go huathoibríoch", - "autoIGCToolDescription": "Rith uathoibríoch cabhair gramadaí agus aistriúcháin Pangea Chat sula seolfaidh mé mo theachtaireacht.", "tooltipInstructionsTitle": "Níl tú cinnte cad a dhéanann sé sin?", "tooltipInstructionsMobileBody": "Bain agus coinnigh ar na míreanna chun treoracha a fheiceáil.", "tooltipInstructionsBrowserBody": "Cliceáil agus coinnigh ar na míreanna chun treoracha a fheiceáil.", @@ -4516,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-01-28 13:27:02.604512", + "@@last_modified": "2026-01-29 15:25:25.078471", "@customReaction": { "type": "String", "placeholders": {} @@ -6203,14 +6201,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10952,5 +10942,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Cuir ar chumas cúnamh scríbhneoireachta", + "autoIGCToolDescription": "Rith uathoibríoch uirlisí Pangea Chat chun teachtaireachtaí a sheoladh a cheartú go teanga sprioc.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Theip ar an taifeadadh. Seiceáil do cheadanna gutháin le do thoil agus déan iarracht arís.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index f1aed4b67..6afe8ff27 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -1,6 +1,6 @@ { "@@locale": "gl", - "@@last_modified": "2026-01-28 13:25:56.077589", + "@@last_modified": "2026-01-29 15:24:27.141903", "about": "Acerca de", "@about": { "type": "String", @@ -3786,8 +3786,6 @@ "noPaymentInfo": "Non é necesaria información de pagamento!", "updatePhoneOS": "Pode que necesites actualizar a versión do sistema operativo do teu dispositivo.", "wordsPerMinute": "Palabras por minuto", - "autoIGCToolName": "Executar a asistencia de escritura Pangea automaticamente", - "autoIGCToolDescription": "Executar automaticamente a asistencia de gramática e tradución de Pangea Chat antes de enviar a miña mensaxe.", "tooltipInstructionsTitle": "Non estás seguro de para que serve iso?", "tooltipInstructionsMobileBody": "Prema e mantén os elementos para ver as pistas.", "tooltipInstructionsBrowserBody": "Pasa o rato por riba dos elementos para ver as pistas.", @@ -6202,14 +6200,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10951,5 +10941,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Activar a asistencia de escritura", + "autoIGCToolDescription": "Executar automaticamente as ferramentas de Pangea Chat para corrixir os mensaxes enviados á lingua de destino.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "A gravación fallou. Por favor, verifica os teus permisos de audio e intenta de novo.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb index d75f1d839..62ea0d0a8 100644 --- a/lib/l10n/intl_he.arb +++ b/lib/l10n/intl_he.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:06.755080", + "@@last_modified": "2026-01-29 15:24:38.819884", "about": "אודות", "@about": { "type": "String", @@ -2371,8 +2371,6 @@ "noPaymentInfo": "אין צורך במידע תשלום!", "updatePhoneOS": "ייתכן שתצטרך לעדכן את גרסת מערכת ההפעלה של המכשיר שלך.", "wordsPerMinute": "מילים בדקה", - "autoIGCToolName": "הרץ אוטומטית את עזר הכתיבה של פאנגיאה", - "autoIGCToolDescription": "הרץ אוטומטית את עזר הכתיבה של דקדוק ותרגום של פאנגיאה לפני שליחת ההודעה שלי.", "tooltipInstructionsTitle": "לא בטוח מה זה עושה?", "tooltipInstructionsMobileBody": "החזק והחלק על פריטים כדי לצפות בטיפים.", "tooltipInstructionsBrowserBody": "החלק מעל פריטים כדי לצפות בטיפים.", @@ -7254,14 +7252,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12003,5 +11993,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "אפשר סיוע בכתיבה", + "autoIGCToolDescription": "הרץ אוטומטית את כלי Pangea Chat כדי לתקן הודעות שנשלחו לשפה היעד.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "הקלטה נכשלה. אנא בדוק את הרשאות האודיו שלך ונסה שוב.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb index 84368b8da..5b4aec6df 100644 --- a/lib/l10n/intl_hi.arb +++ b/lib/l10n/intl_hi.arb @@ -3759,8 +3759,6 @@ "noPaymentInfo": "कोई भुगतान जानकारी आवश्यक नहीं!", "updatePhoneOS": "आपको अपने डिवाइस का OS संस्करण अपडेट करने की आवश्यकता हो सकती है।", "wordsPerMinute": "मिनट में शब्द", - "autoIGCToolName": "स्वचालित रूप से पैंजिया लेखन सहायता चलाएँ", - "autoIGCToolDescription": "मेरे संदेश भेजने से पहले स्वचालित रूप से पैंजिया चैट व्याकरण और अनुवाद लेखन सहायता चलाएँ।", "tooltipInstructionsTitle": "क्या यह करता है, इसके बारे में सुनिश्चित नहीं?", "tooltipInstructionsMobileBody": "आइटम को दबाकर रखें और टूलटिप देखने के लिए होवर करें।", "tooltipInstructionsBrowserBody": "आइटम पर होवर करें और टूलटिप देखने के लिए होवर करें।", @@ -4482,7 +4480,7 @@ "playWithAI": "अभी के लिए एआई के साथ खेलें", "courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!", "@@locale": "hi", - "@@last_modified": "2026-01-28 13:26:55.548010", + "@@last_modified": "2026-01-29 15:25:18.981310", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7290,14 +7288,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12039,5 +12029,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "लेखन सहायता सक्षम करें", + "autoIGCToolDescription": "लक्षित भाषा में भेजे गए संदेशों को सही करने के लिए स्वचालित रूप से Pangea चैट उपकरण चलाएँ।", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "रिकॉर्डिंग विफल हो गई। कृपया अपनी ऑडियो अनुमति की जांच करें और फिर से प्रयास करें।", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index f0a63cb08..48febb156 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1,6 +1,6 @@ { "@@locale": "hr", - "@@last_modified": "2026-01-28 13:26:05.722028", + "@@last_modified": "2026-01-29 15:24:37.899487", "about": "Informacije", "@about": { "type": "String", @@ -3541,8 +3541,6 @@ "noPaymentInfo": "Nije potrebna informacija o plaćanju!", "updatePhoneOS": "Možda ćete morati ažurirati verziju OS-a na svom uređaju.", "wordsPerMinute": "Riječi po minuti", - "autoIGCToolName": "Automatski pokreni pomoć za pisanje Pangea", - "autoIGCToolDescription": "Automatski pokreni pomoć za gramatiku i prijevod Pangea Chat prije slanja moje poruke.", "tooltipInstructionsTitle": "Niste sigurni što to radi?", "tooltipInstructionsMobileBody": "Dugim pritiskom na stavke prikazuju se alati za pomoć.", "tooltipInstructionsBrowserBody": "Pomičite mišem preko stavki za prikazivanje saveta.", @@ -6577,14 +6575,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11326,5 +11316,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Omogući pomoć pri pisanju", + "autoIGCToolDescription": "Automatski pokreni Pangea Chat alate za ispravljanje poslanih poruka na ciljni jezik.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Snimanje nije uspjelo. Provjerite svoja audio dopuštenja i pokušajte ponovo.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index d21418bcf..84f9c75cd 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -1,6 +1,6 @@ { "@@locale": "hu", - "@@last_modified": "2026-01-28 13:25:59.737331", + "@@last_modified": "2026-01-29 15:24:31.343536", "about": "Névjegy", "@about": { "type": "String", @@ -3786,8 +3786,6 @@ "noPaymentInfo": "Nincs szükség fizetési adatokra!", "updatePhoneOS": "Előfordulhat, hogy frissítenie kell az eszköz operációs rendszerét.", "wordsPerMinute": "Szavak száma percenként", - "autoIGCToolName": "A Pangea írássegéd automatikus futtatása", - "autoIGCToolDescription": "Automatikusan futtassa a Pangea Chat nyelvtani és fordítási írássegédet az üzenetem küldése előtt.", "tooltipInstructionsTitle": "Nem biztos benne, mit csinál ez?", "tooltipInstructionsMobileBody": "Hosszan nyomja meg az elemeket a súgók megtekintéséhez.", "tooltipInstructionsBrowserBody": "Húzza az egérrel az elemek fölé a súgók megtekintéséhez.", @@ -6206,14 +6204,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10955,5 +10945,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Írássegítő engedélyezése", + "autoIGCToolDescription": "Automatikusan futtassa a Pangea Chat eszközöket a küldött üzenetek célnyelvre történő javításához.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "A felvétel nem sikerült. Kérjük, ellenőrizze az audio engedélyeit, és próbálja újra.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb index 9dabec835..5fd4b8497 100644 --- a/lib/l10n/intl_ia.arb +++ b/lib/l10n/intl_ia.arb @@ -1234,8 +1234,6 @@ "noPaymentInfo": "Nulle information de pagamento necessari!", "updatePhoneOS": "Es possibile que tu necesse actualisar le versione del sistema operative de tu dispositivo.", "wordsPerMinute": "Palabras per minuto", - "autoIGCToolName": "Execute automaticemente le assistance de scriber Pangea", - "autoIGCToolDescription": "Execute automaticamente le assistance de grammatica e traduction de Pangea Chat ante de inviar mi message.", "tooltipInstructionsTitle": "Nescite que illo face?", "tooltipInstructionsMobileBody": "Pressa e tene le items pro vider le tooltip.", "tooltipInstructionsBrowserBody": "Survole le items pro vider le tooltip.", @@ -1957,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-01-28 13:26:08.333302", + "@@last_modified": "2026-01-29 15:24:39.850520", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7283,14 +7281,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12032,5 +12022,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Abilita l'assistenza alla scrittura", + "autoIGCToolDescription": "Esegui automaticamente gli strumenti di Pangea Chat per correggere i messaggi inviati nella lingua target.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Fala falhou. Por favor, verifique suas permissões de áudio e tente novamente.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb index afffc9180..e2df77b03 100644 --- a/lib/l10n/intl_id.arb +++ b/lib/l10n/intl_id.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:00.772325", + "@@last_modified": "2026-01-29 15:24:32.345033", "setAsCanonicalAlias": "Atur sebagai alias utama", "@setAsCanonicalAlias": { "type": "String", @@ -3787,8 +3787,6 @@ "noPaymentInfo": "Tidak perlu info pembayaran!", "updatePhoneOS": "Anda mungkin perlu memperbarui versi OS perangkat Anda.", "wordsPerMinute": "Kata per menit", - "autoIGCToolName": "Jalankan otomatis bantuan penulisan Pangea", - "autoIGCToolDescription": "Jalankan otomatis bantuan penulisan tata bahasa dan terjemahan Chat Pangea sebelum mengirim pesan saya.", "tooltipInstructionsTitle": "Tidak yakin apa itu?", "tooltipInstructionsMobileBody": "Tekan dan tahan item untuk melihat tooltip.", "tooltipInstructionsBrowserBody": "Arahkan kursor ke item untuk melihat tooltip.", @@ -6196,14 +6194,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10945,5 +10935,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Aktifkan bantuan penulisan", + "autoIGCToolDescription": "Secara otomatis menjalankan alat Pangea Chat untuk memperbaiki pesan yang dikirim ke bahasa target.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Perekaman gagal. Silakan periksa izin audio Anda dan coba lagi.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb index 3c8ed322a..6b918b6b7 100644 --- a/lib/l10n/intl_ie.arb +++ b/lib/l10n/intl_ie.arb @@ -3648,8 +3648,6 @@ "noPaymentInfo": "Nulle information de pagamento necessari!", "updatePhoneOS": "Tu pote haber de actualizar la version del sistema operative de tu dispositivo", "wordsPerMinute": "Palabras per minutu", - "autoIGCToolName": "Execute automaticamente le assistent de scriber Pangea", - "autoIGCToolDescription": "Execute automaticamente le grammatica e traduction del chat Pangea ante de inviar mi message", "tooltipInstructionsTitle": "Non es secur de que isto face?", "tooltipInstructionsMobileBody": "Pressa e tenea items pro vider le tooltip.", "tooltipInstructionsBrowserBody": "Survole items pro vider le tooltip.", @@ -4371,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-01-28 13:26:04.525215", + "@@last_modified": "2026-01-29 15:24:36.672214", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7179,14 +7177,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11928,5 +11918,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Aktivoi kirjoitusavustaja", + "autoIGCToolDescription": "Suorita automaattisesti Pangea Chat -työkaluja korjataksesi lähetetyt viestit kohdekielelle.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Faillí an taifeadadh. Seiceáil do cheadanna gutháin agus déan iarracht arís.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 5c3e594ee..9c90360c5 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:18.238331", + "@@last_modified": "2026-01-29 15:24:48.551043", "about": "Informazioni", "@about": { "type": "String", @@ -3764,8 +3764,6 @@ "noPaymentInfo": "Nessuna informazione di pagamento necessaria!", "updatePhoneOS": "Potresti dover aggiornare la versione del sistema operativo del tuo dispositivo.", "wordsPerMinute": "Parole al minuto", - "autoIGCToolName": "Esegui automaticamente l'assistenza alla scrittura Pangea", - "autoIGCToolDescription": "Esegui automaticamente l'assistenza alla grammatica e alla traduzione di Pangea Chat prima di inviare il mio messaggio.", "tooltipInstructionsTitle": "Non sei sicuro di cosa faccia?", "tooltipInstructionsMobileBody": "Tieni premuti gli elementi per visualizzare i suggerimenti.", "tooltipInstructionsBrowserBody": "Passa il mouse sugli elementi per visualizzare i suggerimenti.", @@ -6208,14 +6206,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10957,5 +10947,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Abilita assistenza alla scrittura", + "autoIGCToolDescription": "Esegui automaticamente gli strumenti di Pangea Chat per correggere i messaggi inviati nella lingua target.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Registrazione fallita. Controlla le tue autorizzazioni audio e riprova.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 5728a47ad..92adcf3a0 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,6 +1,6 @@ { "@@locale": "ja", - "@@last_modified": "2026-01-28 13:26:54.166864", + "@@last_modified": "2026-01-29 15:25:17.739953", "about": "このアプリについて", "@about": { "type": "String", @@ -3128,8 +3128,6 @@ "noPaymentInfo": "支払い情報は不要です!", "updatePhoneOS": "デバイスのOSバージョンを更新する必要があるかもしれません。", "wordsPerMinute": "1分あたりの単語数", - "autoIGCToolName": "Pangeaのライティング支援を自動的に実行", - "autoIGCToolDescription": "メッセージ送信前にPangeaチャットの文法と翻訳のライティング支援を自動的に実行します。", "tooltipInstructionsTitle": "それは何のためか分からない?", "tooltipInstructionsMobileBody": "アイテムを長押ししてツールチップを表示します。", "tooltipInstructionsBrowserBody": "アイテムにカーソルを合わせてツールチップを表示します。", @@ -6995,14 +6993,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11744,5 +11734,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "ライティングアシスタントを有効にする", + "autoIGCToolDescription": "送信されたメッセージをターゲット言語に修正するために、Pangea Chatツールを自動的に実行します。", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "録音に失敗しました。オーディオの権限を確認して、再試行してください。", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb index 5a03fc058..a7767b8f2 100644 --- a/lib/l10n/intl_ka.arb +++ b/lib/l10n/intl_ka.arb @@ -1870,8 +1870,6 @@ "noPaymentInfo": "გადახდის ინფორმაცია საჭირო არაა!", "updatePhoneOS": "შესაძლოა დაგჭირდეთ თქვენი მოწყობილობის ოპერაციული სისტემის განახლება.", "wordsPerMinute": "სიტყვები წუთში", - "autoIGCToolName": "ავტომატურად ჩართეთ პანგეა წერის დახმარება", - "autoIGCToolDescription": "ავტომატურად ჩართეთ პანგეა ჩატის გრამატიკა და თარგმნის დახმარება ჩემი შეტყობინების გაგზავნამდე.", "tooltipInstructionsTitle": "არ იცით რა აკეთებს ეს?", "tooltipInstructionsMobileBody": "დაჭერით და შეინახეთ ინსტრუმენტების სანახავად.", "tooltipInstructionsBrowserBody": "მოძრაობით მერყეობთ ნივთებზე ინსტრუმენტების სანახავად.", @@ -2593,7 +2591,7 @@ "playWithAI": "ამ დროისთვის ითამაშეთ AI-თან", "courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!", "@@locale": "ka", - "@@last_modified": "2026-01-28 13:27:00.130109", + "@@last_modified": "2026-01-29 15:25:22.347053", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7235,14 +7233,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11984,5 +11974,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "წერის დახმარების ჩართვა", + "autoIGCToolDescription": "ავტომატურად გაწვდეთ Pangea Chat ინსტრუმენტები გაგზავნილი შეტყობინებების მიზნობრივი ენაზე გასასწორებლად.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "ჩაწერა ვერ მოხერხდა. გთხოვთ, შეამოწმოთ თქვენი აუდიო უფლებები და სცადოთ კიდევ ერთხელ.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb index c07d9a90d..07bbc150e 100644 --- a/lib/l10n/intl_ko.arb +++ b/lib/l10n/intl_ko.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:25:53.869320", + "@@last_modified": "2026-01-29 15:24:24.593568", "about": "소개", "@about": { "type": "String", @@ -3721,8 +3721,6 @@ "noPaymentInfo": "결제 정보가 필요 없습니다!", "updatePhoneOS": "기기의 OS 버전을 업데이트해야 할 수 있습니다.", "wordsPerMinute": "분당 단어 수", - "autoIGCToolName": "판게아 작문 지원 자동 실행", - "autoIGCToolDescription": "메시지를 보내기 전에 판게아 채팅 문법 및 번역 작문 지원을 자동으로 실행합니다.", "tooltipInstructionsTitle": "이게 무슨 기능인지 잘 모르겠나요?", "tooltipInstructionsMobileBody": "항목을 길게 눌러 툴팁을 볼 수 있습니다.", "tooltipInstructionsBrowserBody": "항목 위에 마우스를 올려 툴팁을 볼 수 있습니다.", @@ -6313,14 +6311,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11062,5 +11052,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "쓰기 지원 활성화", + "autoIGCToolDescription": "전송된 메시지를 목표 언어로 수정하기 위해 Pangea Chat 도구를 자동으로 실행합니다.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "녹음에 실패했습니다. 오디오 권한을 확인하고 다시 시도해 주세요.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb index 245586145..3308c41dc 100644 --- a/lib/l10n/intl_lt.arb +++ b/lib/l10n/intl_lt.arb @@ -3137,8 +3137,6 @@ "noPaymentInfo": "Apmokėjimo informacija nereikalinga!", "updatePhoneOS": "Gali būti, kad reikės atnaujinti įrenginio operacinės sistemos versiją.", "wordsPerMinute": "Žodžių per minutę", - "autoIGCToolName": "Automatiškai paleisti Pangea rašymo pagalbą", - "autoIGCToolDescription": "Automatiškai paleisti Pangea pokalbio gramatikos ir vertimo rašymo pagalbą prieš išsiunčiant žinutę.", "tooltipInstructionsTitle": "Nesate tikri, ką tai daro?", "tooltipInstructionsMobileBody": "Paspauskite ir palaikykite elementus, kad pamatytumėte įrankių patarimus.", "tooltipInstructionsBrowserBody": "Užveskite pelės žymeklį ant elementų, kad pamatytumėte įrankių patarimus.", @@ -3860,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-01-28 13:26:39.413825", + "@@last_modified": "2026-01-29 15:25:04.531263", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7010,14 +7008,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11759,5 +11749,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Įgalinti rašymo pagalbą", + "autoIGCToolDescription": "Automatiškai paleisti Pangea Chat įrankius, kad ištaisytumėte išsiųstas žinutes į tikslinę kalbą.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Įrašymas nepavyko. Patikrinkite savo garso teises ir bandykite dar kartą.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb index 6cc205fba..3723d4804 100644 --- a/lib/l10n/intl_lv.arb +++ b/lib/l10n/intl_lv.arb @@ -3773,8 +3773,6 @@ "noPaymentInfo": "Nav nepieciešama maksājuma informācija!", "updatePhoneOS": "Var būt nepieciešams atjaunināt ierīces operētājsistēmas versiju.", "wordsPerMinute": "Vārdi minūtē", - "autoIGCToolName": "Automātiski palaist Pangea rakstīšanas palīgu", - "autoIGCToolDescription": "Automātiski palaist Pangea Čata gramatikas un tulkošanas rakstīšanas palīgu pirms mana ziņojuma nosūtīšanas.", "tooltipInstructionsTitle": "Neesat pārliecināts, kas tas dara?", "tooltipInstructionsMobileBody": "Turiet un turiet vienumus, lai skatītu rīku padomus.", "tooltipInstructionsBrowserBody": "Novietojiet peles kursoru virs vienumiem, lai skatītu rīku padomus.", @@ -4482,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-01-28 13:26:33.690801", + "@@last_modified": "2026-01-29 15:25:00.127768", "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", @@ -6191,14 +6189,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10940,5 +10930,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Iespējot rakstīšanas palīdzību", + "autoIGCToolDescription": "Automātiski palaist Pangea Chat rīkus, lai labotu nosūtītās ziņas mērķa valodā.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Ieraksts neizdevās. Lūdzu, pārbaudiet savas audio atļaujas un mēģiniet vēlreiz.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index 05c19a9c4..09e9c33e9 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:21.535919", + "@@last_modified": "2026-01-29 15:24:51.834093", "about": "Om", "@about": { "type": "String", @@ -2700,8 +2700,6 @@ "noPaymentInfo": "Ingen betalingsinformasjon nødvendig!", "updatePhoneOS": "Du kan trenge å oppdatere enhetens OS-versjon.", "wordsPerMinute": "Ord per minutt", - "autoIGCToolName": "Kjør Pangea skrivehjelp automatisk", - "autoIGCToolDescription": "Kjør automatisk Pangea Chat grammatikk- og oversettelsesstøtte før jeg sender meldingen min.", "tooltipInstructionsTitle": "Usikker på hva det gjør?", "tooltipInstructionsMobileBody": "Trykk og hold på elementer for å se verktøytips.", "tooltipInstructionsBrowserBody": "Hold musepekeren over elementer for å se verktøytips.", @@ -7298,14 +7296,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12047,5 +12037,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Aktiver skriveassistent", + "autoIGCToolDescription": "Kjør Pangea Chat-verktøy automatisk for å korrigere sendte meldinger til målspråket.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Opptak mislyktes. Vennligst sjekk lydinnstillingene dine og prøv igjen.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index 902a72a70..c42360e72 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:43.074504", + "@@last_modified": "2026-01-29 15:25:07.906820", "about": "Over ons", "@about": { "type": "String", @@ -3784,8 +3784,6 @@ "noPaymentInfo": "Geen betalingsinformatie nodig!", "updatePhoneOS": "U moet mogelijk de OS-versie van uw apparaat bijwerken.", "wordsPerMinute": "Woorden per minuut", - "autoIGCToolName": "Voer Pangea schrijfhulp automatisch uit", - "autoIGCToolDescription": "Voer automatisch Pangea Chat grammatica- en vertaalhulp uit voordat ik mijn bericht verstuur.", "tooltipInstructionsTitle": "Weet je niet wat dat doet?", "tooltipInstructionsMobileBody": "Houd items ingedrukt om tooltips te bekijken.", "tooltipInstructionsBrowserBody": "Houd de muisaanwijzer over items om tooltips te bekijken.", @@ -6205,14 +6203,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10954,5 +10944,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Schrijfassistentie inschakelen", + "autoIGCToolDescription": "Voer automatisch Pangea Chat-tools uit om verzonden berichten naar de doeltaal te corrigeren.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Opname mislukt. Controleer uw audiorechten en probeer het opnieuw.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index d7353e601..1f510f122 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,6 @@ { "@@locale": "pl", - "@@last_modified": "2026-01-28 13:26:50.545730", + "@@last_modified": "2026-01-29 15:25:13.973596", "about": "O aplikacji", "@about": { "type": "String", @@ -3785,8 +3785,6 @@ "noPaymentInfo": "Brak konieczności podawania informacji o płatności!", "updatePhoneOS": "Możesz potrzebować zaktualizować wersję systemu operacyjnego swojego urządzenia.", "wordsPerMinute": "Słów na minutę", - "autoIGCToolName": "Uruchom automatycznie pomoc w pisaniu Pangea", - "autoIGCToolDescription": "Automatycznie uruchom pomoc w gramatyce i tłumaczeniu Pangea Chat przed wysłaniem mojej wiadomości.", "tooltipInstructionsTitle": "Nie jesteś pewien, co to robi?", "tooltipInstructionsMobileBody": "Przytrzymaj elementy, aby wyświetlić podpowiedzi.", "tooltipInstructionsBrowserBody": "Najedź kursorem na elementy, aby wyświetlić podpowiedzi.", @@ -6205,14 +6203,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10952,5 +10942,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Włącz pomoc w pisaniu", + "autoIGCToolDescription": "Automatycznie uruchom narzędzia Pangea Chat, aby poprawić wysłane wiadomości na docelowy język.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Nagrywanie nie powiodło się. Sprawdź swoje uprawnienia audio i spróbuj ponownie.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 61e8795dd..fb1fe68ad 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:11.994676", + "@@last_modified": "2026-01-29 15:24:42.742766", "copiedToClipboard": "Copiada para a área de transferência", "@copiedToClipboard": { "type": "String", @@ -3775,8 +3775,6 @@ "noPaymentInfo": "Nenhuma informação de pagamento necessária!", "updatePhoneOS": "Pode ser necessário atualizar a versão do sistema operacional do seu dispositivo.", "wordsPerMinute": "Palavras por minuto", - "autoIGCToolName": "Executar assistência de escrita Pangea automaticamente", - "autoIGCToolDescription": "Executar automaticamente a assistência de escrita de gramática e tradução do Pangea Chat antes de enviar minha mensagem.", "tooltipInstructionsTitle": "Não tem certeza do que isso faz?", "tooltipInstructionsMobileBody": "Pressione e segure itens para ver dicas de ferramenta.", "tooltipInstructionsBrowserBody": "Passe o mouse sobre os itens para ver dicas de ferramenta.", @@ -7305,14 +7303,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12054,5 +12044,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Ativar assistência de escrita", + "autoIGCToolDescription": "Executar automaticamente as ferramentas do Pangea Chat para corrigir mensagens enviadas para o idioma de destino.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "A gravação falhou. Verifique suas permissões de áudio e tente novamente.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb index 29d204099..804cf4d03 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:09.473589", + "@@last_modified": "2026-01-29 15:24:40.772387", "about": "Sobre", "@about": { "type": "String", @@ -3532,8 +3532,6 @@ "noPaymentInfo": "Nenhuma informação de pagamento necessária!", "updatePhoneOS": "Você pode precisar atualizar a versão do sistema operacional do seu dispositivo.", "wordsPerMinute": "Palavras por minuto", - "autoIGCToolName": "Executar assistência de escrita Pangea automaticamente", - "autoIGCToolDescription": "Executar automaticamente a assistência de gramática e tradução do Pangea Chat antes de enviar minha mensagem.", "tooltipInstructionsTitle": "Não tem certeza do que isso faz?", "tooltipInstructionsMobileBody": "Pressione e segure os itens para ver dicas de ferramenta.", "tooltipInstructionsBrowserBody": "Passe o mouse sobre os itens para ver dicas de ferramenta.", @@ -6580,14 +6578,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11312,5 +11302,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Ativar assistência de escrita", + "autoIGCToolDescription": "Executar automaticamente as ferramentas do Pangea Chat para corrigir mensagens enviadas para o idioma de destino.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Gravação falhou. Por favor, verifique suas permissões de áudio e tente novamente.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_PT.arb b/lib/l10n/intl_pt_PT.arb index 3c53e2fbc..d432143f5 100644 --- a/lib/l10n/intl_pt_PT.arb +++ b/lib/l10n/intl_pt_PT.arb @@ -2595,8 +2595,6 @@ "noPaymentInfo": "Nenhuma informação de pagamento necessária!", "updatePhoneOS": "Pode ser necessário atualizar a versão do sistema operacional do seu dispositivo.", "wordsPerMinute": "Palavras por minuto", - "autoIGCToolName": "Executar assistência de escrita Pangea automaticamente", - "autoIGCToolDescription": "Executar automaticamente a assistência de escrita de gramática e tradução do Pangea Chat antes de enviar minha mensagem.", "tooltipInstructionsTitle": "Não tem certeza do que isso faz?", "tooltipInstructionsMobileBody": "Pressione e segure itens para visualizar dicas de ferramenta.", "tooltipInstructionsBrowserBody": "Passe o mouse sobre os itens para visualizar dicas de ferramenta.", @@ -3330,7 +3328,7 @@ "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "@@locale": "pt_PT", - "@@last_modified": "2026-01-28 13:26:26.329625", + "@@last_modified": "2026-01-29 15:24:56.954106", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7251,14 +7249,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11983,5 +11973,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Ativar assistência de escrita", + "autoIGCToolDescription": "Executar automaticamente as ferramentas do Pangea Chat para corrigir mensagens enviadas para o idioma de destino.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "A gravação falhou. Por favor, verifique suas permissões de áudio e tente novamente.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 8ab62b620..edec75b6d 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:01.958335", + "@@last_modified": "2026-01-29 15:24:33.490827", "about": "Despre", "@about": { "type": "String", @@ -3204,8 +3204,6 @@ "noPaymentInfo": "Nicio informație de plată necesară!", "updatePhoneOS": "Poate fi necesar să actualizați versiunea sistemului de operare al dispozitivului dvs.", "wordsPerMinute": "Cuvinte pe minut", - "autoIGCToolName": "Rulează automat asistența de scriere Pangea", - "autoIGCToolDescription": "Porniți automat asistența pentru scrierea gramaticii și traducerii în Pangea Chat înainte de a trimite mesajul meu.", "tooltipInstructionsTitle": "Nu ești sigur ce face asta?", "tooltipInstructionsMobileBody": "Ține apăsat pe elemente pentru a vizualiza sfaturi.", "tooltipInstructionsBrowserBody": "Poziționează cursorul peste elemente pentru a vizualiza sfaturi.", @@ -6940,14 +6938,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11689,5 +11679,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Activare asistență la scriere", + "autoIGCToolDescription": "Rulați automat instrumentele Pangea Chat pentru a corecta mesajele trimise în limba țintă.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Înregistrarea a eșuat. Vă rugăm să verificați permisiunile audio și să încercați din nou.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 470f329fd..c8ee20fd1 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,6 @@ { "@@locale": "ru", - "@@last_modified": "2026-01-28 13:26:58.889837", + "@@last_modified": "2026-01-29 15:25:21.118191", "about": "О проекте", "@about": { "type": "String", @@ -3714,8 +3714,6 @@ "noPaymentInfo": "Информация о платеже не требуется!", "updatePhoneOS": "Возможно, потребуется обновить версию ОС вашего устройства.", "wordsPerMinute": "Слова в минуту", - "autoIGCToolName": "Автоматически запускать помощь в написании Pangea", - "autoIGCToolDescription": "Автоматически запускать помощь в грамматике и переводе Pangea Chat перед отправкой моего сообщения.", "tooltipInstructionsTitle": "Не уверены, что это делает?", "tooltipInstructionsMobileBody": "Нажмите и удерживайте элементы, чтобы просмотреть подсказки.", "tooltipInstructionsBrowserBody": "Наведите курсор на элементы, чтобы просмотреть подсказки.", @@ -6294,14 +6292,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11062,5 +11052,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Включить помощь в написании", + "autoIGCToolDescription": "Автоматически запускать инструменты Pangea Chat для исправления отправленных сообщений на целевой язык.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Запись не удалась. Пожалуйста, проверьте свои аудиоразрешения и попробуйте снова.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index 39202ddde..c21ad3db8 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,6 +1,6 @@ { "@@locale": "sk", - "@@last_modified": "2026-01-28 13:26:03.157059", + "@@last_modified": "2026-01-29 15:24:35.550214", "about": "O aplikácii", "@about": { "type": "String", @@ -2408,8 +2408,6 @@ "noPaymentInfo": "Nie sú potrebné žiadne platobné údaje!", "updatePhoneOS": "Možno budete musieť aktualizovať verziu operačného systému zariadenia", "wordsPerMinute": "Slová za minútu", - "autoIGCToolName": "Automaticky spustiť pomoc pri písaní Pangea", - "autoIGCToolDescription": "Automaticky spustiť gramatickú kontrolu a preklad pomocníka Pangea Chat pred odoslaním správy.", "tooltipInstructionsTitle": "Neviete, čo to robí?", "tooltipInstructionsMobileBody": "Stlačte a podržte položky na zobrazenie návodov.", "tooltipInstructionsBrowserBody": "Nájdite myšou nad položkami na zobrazenie návodov.", @@ -7289,14 +7287,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12038,5 +12028,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Povoliť pomoc pri písaní", + "autoIGCToolDescription": "Automaticky spustiť nástroje Pangea Chat na opravu odoslaných správ do cieľového jazyka.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Nahrávanie zlyhalo. Skontrolujte svoje povolenia na zvuk a skúste to znova.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb index f63713041..f60670b58 100644 --- a/lib/l10n/intl_sl.arb +++ b/lib/l10n/intl_sl.arb @@ -1740,8 +1740,6 @@ "noPaymentInfo": "Ni potrebnih plačilnih informacij!", "updatePhoneOS": "Morda boste morali posodobiti različico operacijskega sistema naprave", "wordsPerMinute": "Besed na minuto", - "autoIGCToolName": "Samodejno zaženi pomoč pri pisanju Pangea", - "autoIGCToolDescription": "Samodejno zaženi pomoč pri slovnici in prevajanju v klepetu Pangea pred pošiljanjem sporočila", "tooltipInstructionsTitle": "Niste prepričani, kaj to naredi?", "tooltipInstructionsMobileBody": "Podrsajte in držite elemente za ogled nasvetov orodja", "tooltipInstructionsBrowserBody": "Premaknite kazalec nad elemente za ogled nasvetov orodja", @@ -2463,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-01-28 13:26:15.797667", + "@@last_modified": "2026-01-29 15:24:46.298517", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7286,14 +7284,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12035,5 +12025,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Omogoči pomoč pri pisanju", + "autoIGCToolDescription": "Samodejno zaženi orodja Pangea Chat za popravljanje poslanih sporočil v ciljni jezik.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Zapisovanje ni uspelo. Preverite svoje avdio dovoljenja in poskusite znova.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb index d666cef35..5d7e48627 100644 --- a/lib/l10n/intl_sr.arb +++ b/lib/l10n/intl_sr.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:27:01.338972", + "@@last_modified": "2026-01-29 15:25:23.670980", "about": "О програму", "@about": { "type": "String", @@ -2821,8 +2821,6 @@ "noPaymentInfo": "Није потребно информације о плаћању!", "updatePhoneOS": "Можда ће вам бити потребно ажурирати верзију оперативног система уређаја.", "wordsPerMinute": "Речи по минуту", - "autoIGCToolName": "Аутоматски покрените Пангее помоћ за писање", - "autoIGCToolDescription": "Аутоматски покреће Пангее Граматика и помоћ за превођење пре слања моје поруке.", "tooltipInstructionsTitle": "Нисте сигурни шта то ради?", "tooltipInstructionsMobileBody": "Држите дуго на ставкама да бисте видели савете.", "tooltipInstructionsBrowserBody": "Покажите мишем на ставке да бисте видели савете.", @@ -7307,14 +7305,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12056,5 +12046,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Omogući pomoć pri pisanju", + "autoIGCToolDescription": "Automatski pokreni Pangea Chat alate za ispravljanje poslatih poruka na ciljni jezik.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Snimanje nije uspelo. Proverite svoja audio dopuštenja i pokušajte ponovo.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index 356a01900..c78d86da4 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:51.814505", + "@@last_modified": "2026-01-29 15:25:15.398282", "about": "Om", "@about": { "type": "String", @@ -3446,8 +3446,6 @@ "noPaymentInfo": "Ingen betalningsinformation behövs!", "updatePhoneOS": "Du kan behöva uppdatera din enhets operativsystemversion.", "wordsPerMinute": "Ord per minut", - "autoIGCToolName": "Kör Pangea skrivhjälp automatiskt", - "autoIGCToolDescription": "Kör automatiskt Pangea Chat grammatik- och översättningshjälp innan jag skickar mitt meddelande.", "tooltipInstructionsTitle": "Inte säker på vad det gör?", "tooltipInstructionsMobileBody": "Håll och tryck på objekt för att visa verktygstips.", "tooltipInstructionsBrowserBody": "Hovra över objekt för att visa verktygstips.", @@ -6683,14 +6681,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11432,5 +11422,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Aktivera skrivhjälp", + "autoIGCToolDescription": "Kör automatiskt Pangea Chat-verktyg för att korrigera skickade meddelanden till målspråket.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Inspelningen misslyckades. Kontrollera dina ljudbehörigheter och försök igen.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb index af6a8649c..7e00ff56c 100644 --- a/lib/l10n/intl_ta.arb +++ b/lib/l10n/intl_ta.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:42.100203", + "@@last_modified": "2026-01-29 15:25:06.783614", "acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது", "@acceptedTheInvitation": { "type": "String", @@ -3661,8 +3661,6 @@ "noPaymentInfo": "பணம் செலுத்தும் தகவல் தேவையில்லை!", "updatePhoneOS": "உங்கள் சாதனத்தின் OS பதிப்பை புதுப்பிக்க வேண்டியிருக்கலாம்.", "wordsPerMinute": "நிமிடத்திற்கு சொற்கள்", - "autoIGCToolName": "பங்கேயா எழுத்து உதவியை தானாக இயக்கவும்", - "autoIGCToolDescription": "எனது செய்தியை அனுப்புவதற்கு முன் தானாக பங்கேயா உரையாடல் இலக்கணம் மற்றும் மொழிபெயர்ப்பு எழுத்து உதவியை இயக்கவும்.", "tooltipInstructionsTitle": "அது என்ன செய்கிறது என்று தெரியுமா?", "tooltipInstructionsMobileBody": "உருப்படிகளை அழுத்தி வைத்திருங்கள், கருவி விளக்கங்களைப் பார்க்க.", "tooltipInstructionsBrowserBody": "உருப்படிகளின் மேல் கரைசல் வைத்து கருவி விளக்கங்களைப் பார்க்க.", @@ -6429,14 +6427,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11178,5 +11168,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "எழுத்து உதவியை செயல்படுத்தவும்", + "autoIGCToolDescription": "அனுப்பிய செய்திகளை இலக்கு மொழிக்கு சரிசெய்ய பாஙோ உரையாடல் கருவிகளை தானாகவே இயக்கவும்.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "பதிவு தோல்வியுற்றது. உங்கள் ஒலிப் அனுமதிகளை சரிபார்க்கவும் மற்றும் மீண்டும் முயற்சிக்கவும்.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb index abc4086be..8ee0f85f3 100644 --- a/lib/l10n/intl_te.arb +++ b/lib/l10n/intl_te.arb @@ -1196,8 +1196,6 @@ "noPaymentInfo": "చెల్లింపు సమాచారం అవసరం లేదు!", "updatePhoneOS": "మీ డివైస్ యొక్క OS వెర్షన్‌ను నవీకరించాల్సి ఉండవచ్చు.", "wordsPerMinute": "నిమిషానికి పదాలు", - "autoIGCToolName": "పాంజియా రాయడం సహాయాన్ని స్వయంచాలకంగా నడపండి", - "autoIGCToolDescription": "నా సందేశాన్ని పంపేముందు స్వయంచాలకంగా పాంజియా చాట్ వ్యాకరణం మరియు అనువాద రాయడం సహాయాన్ని నడపండి.", "tooltipInstructionsTitle": "అది ఏమిటో తెలియదా?", "tooltipInstructionsMobileBody": "టూల్‌టిప్‌లను చూడటానికి అంశాలను నొక్కి ఉంచండి.", "tooltipInstructionsBrowserBody": "టూల్‌టిప్‌లను చూడటానికి అంశాలపై హోవర్ చేయండి.", @@ -1919,7 +1917,7 @@ "playWithAI": "ఇప్పుడే AI తో ఆడండి", "courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!", "@@locale": "te", - "@@last_modified": "2026-01-28 13:26:38.102435", + "@@last_modified": "2026-01-29 15:25:03.384353", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -7297,14 +7295,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12043,5 +12033,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "రాయడం సహాయాన్ని ప్రారంభించండి", + "autoIGCToolDescription": "సమర్పించిన సందేశాలను లక్ష్య భాషకు సరిదిద్దడానికి పాంజియా చాట్ సాధనాలను ఆటోమేటిక్‌గా నడపండి.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "రికార్డింగ్ విఫలమైంది. దయచేసి మీ ఆడియో అనుమతులను తనిఖీ చేసి మళ్లీ ప్రయత్నించండి.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb index 5946ef20f..64c3ee9b5 100644 --- a/lib/l10n/intl_th.arb +++ b/lib/l10n/intl_th.arb @@ -3732,8 +3732,6 @@ "noPaymentInfo": "ไม่จำเป็นต้องมีข้อมูลการชำระเงิน!", "updatePhoneOS": "คุณอาจจำเป็นต้องอัปเดตเวอร์ชันระบบปฏิบัติการของอุปกรณ์ของคุณ", "wordsPerMinute": "คำต่อนาที", - "autoIGCToolName": "เรียกใช้เครื่องมือช่วยเขียน Pangea อัตโนมัติ", - "autoIGCToolDescription": "เรียกใช้การช่วยเขียนไวยากรณ์และการแปลของ Pangea Chat อัตโนมัติก่อนส่งข้อความของฉัน", "tooltipInstructionsTitle": "ไม่แน่ใจว่าสิ่งนั้นทำอะไร?", "tooltipInstructionsMobileBody": "กดค้างไว้เพื่อดูคำแนะนำเครื่องมือ", "tooltipInstructionsBrowserBody": "วางเมาส์เหนือรายการเพื่อดูคำแนะนำเครื่องมือ", @@ -4455,7 +4453,7 @@ "playWithAI": "เล่นกับ AI ชั่วคราว", "courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!", "@@locale": "th", - "@@last_modified": "2026-01-28 13:26:25.241346", + "@@last_modified": "2026-01-29 15:24:55.978319", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -7263,14 +7261,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12012,5 +12002,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "เปิดใช้งานความช่วยเหลือในการเขียน", + "autoIGCToolDescription": "เรียกใช้เครื่องมือ Pangea Chat โดยอัตโนมัติเพื่อแก้ไขข้อความที่ส่งไปยังภาษาที่ต้องการ.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "การบันทึกล้มเหลว โปรดตรวจสอบสิทธิ์เสียงของคุณและลองอีกครั้ง", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index 480a0e9c5..ecb6d5684 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -1,6 +1,6 @@ { "@@locale": "tr", - "@@last_modified": "2026-01-28 13:26:36.845268", + "@@last_modified": "2026-01-29 15:25:02.072081", "about": "Hakkında", "@about": { "type": "String", @@ -3668,8 +3668,6 @@ "noPaymentInfo": "Ödeme bilgisi gerekmez!", "updatePhoneOS": "Cihazınızın işletim sistemi sürümünü güncellemeniz gerekebilir.", "wordsPerMinute": "Dakikada kelime", - "autoIGCToolName": "Pangea yazma yardımını otomatik çalıştır", - "autoIGCToolDescription": "Mesajımı göndermeden önce Pangea Sohbet dilbilgisi ve çeviri yazma yardımını otomatik olarak çalıştır.", "tooltipInstructionsTitle": "Bu ne işe yarar bilmiyor musun?", "tooltipInstructionsMobileBody": "Öğe üzerine basılı tutarak ipuçlarını görüntüleyin.", "tooltipInstructionsBrowserBody": "İpuçlarını görüntülemek için öğeler üzerinde fare ile durun.", @@ -6427,14 +6425,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -11176,5 +11166,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Yazma yardımını etkinleştir", + "autoIGCToolDescription": "Gönderilen mesajları hedef dile düzeltmek için Pangea Chat araçlarını otomatik olarak çalıştır.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Kayıt başarısız oldu. Lütfen ses izinlerinizi kontrol edin ve tekrar deneyin.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index c13815b3e..241d83125 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -1,6 +1,6 @@ { "@@locale": "uk", - "@@last_modified": "2026-01-28 13:26:19.427065", + "@@last_modified": "2026-01-29 15:24:49.757644", "about": "Про застосунок", "@about": { "type": "String", @@ -3787,8 +3787,6 @@ "noPaymentInfo": "Інформація про оплату не потрібна!", "updatePhoneOS": "Можливо, потрібно оновити версію ОС вашого пристрою.", "wordsPerMinute": "Слів за хвилину", - "autoIGCToolName": "Автоматично запускати допомогу з написання Pangea", - "autoIGCToolDescription": "Автоматично запускати допомогу з граматики та перекладу в чаті Pangea перед відправкою мого повідомлення.", "tooltipInstructionsTitle": "Не впевнений, що це робить?", "tooltipInstructionsMobileBody": "Натисніть і утримуйте елементи, щоб переглянути підказки.", "tooltipInstructionsBrowserBody": "Наведіть курсор на елементи, щоб переглянути підказки.", @@ -6199,14 +6197,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10948,5 +10938,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Увімкнути допомогу в написанні", + "autoIGCToolDescription": "Автоматично запускати інструменти Pangea Chat для виправлення надісланих повідомлень на цільову мову.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Запис не вдався. Будь ласка, перевірте свої аудіоправа та спробуйте ще раз.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index 3fc2e61d1..ac763b4d1 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:40.659203", + "@@last_modified": "2026-01-29 15:25:05.410589", "about": "Giới thiệu", "@about": { "type": "String", @@ -2422,8 +2422,6 @@ "noPaymentInfo": "Không cần thông tin thanh toán!", "updatePhoneOS": "Bạn có thể cần nâng cấp phiên bản hệ điều hành.", "wordsPerMinute": "Từ mỗi phút", - "autoIGCToolName": "Tự động chạy hỗ trợ ngôn ngữ", - "autoIGCToolDescription": "Tự động chạy hỗ trợ ngôn ngữ sau khi gõ tin nhắn", "chatCapacity": "Giới hạn thành viên trò chuyện", "roomFull": "Phòng đã đạt giới hạn.", "chatCapacityHasBeenChanged": "Giới hạn thành viên trò chuyện đã thay đổi", @@ -6524,5 +6522,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "Bật trợ giúp viết", + "autoIGCToolDescription": "Tự động chạy các công cụ Pangea Chat để sửa các tin nhắn đã gửi sang ngôn ngữ mục tiêu.", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "Ghi âm không thành công. Vui lòng kiểm tra quyền truy cập âm thanh của bạn và thử lại.", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_yue.arb b/lib/l10n/intl_yue.arb index fe82df0cf..429ee83b3 100644 --- a/lib/l10n/intl_yue.arb +++ b/lib/l10n/intl_yue.arb @@ -1119,8 +1119,6 @@ "noPaymentInfo": "無需付款資料!", "updatePhoneOS": "您可能需要更新設備的操作系統版本。", "wordsPerMinute": "每分鐘字數", - "autoIGCToolName": "自動運行Pangea寫作協助", - "autoIGCToolDescription": "在發送消息前,自動運行Pangea聊天語法和翻譯寫作協助。", "tooltipInstructionsTitle": "不確定那是什麼嗎?", "tooltipInstructionsMobileBody": "長按項目以查看工具提示。", "tooltipInstructionsBrowserBody": "將滑鼠懸停在項目上以查看工具提示。", @@ -1855,7 +1853,7 @@ "selectAll": "全選", "deselectAll": "取消全選", "@@locale": "yue", - "@@last_modified": "2026-01-28 13:26:16.825978", + "@@last_modified": "2026-01-29 15:24:47.783824", "@ignoreUser": { "type": "String", "placeholders": {} @@ -6898,14 +6896,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -12045,5 +12035,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "啟用寫作輔助", + "autoIGCToolDescription": "自動運行 Pangea Chat 工具以將發送的消息更正為目標語言。", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "錄音失敗。請檢查您的音頻權限並重試。", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index c488b0d36..a9ae94fd4 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -1,6 +1,6 @@ { "@@locale": "zh", - "@@last_modified": "2026-01-28 13:26:45.843538", + "@@last_modified": "2026-01-29 15:25:09.954015", "about": "关于", "@about": { "type": "String", @@ -3788,8 +3788,6 @@ "noPaymentInfo": "无需支付信息!", "updatePhoneOS": "您可能需要更新设备的操作系统版本。", "wordsPerMinute": "每分钟字数", - "autoIGCToolName": "自动运行Pangea写作辅助", - "autoIGCToolDescription": "在发送消息前自动运行Pangea聊天语法和翻译写作辅助。", "tooltipInstructionsTitle": "不确定它的作用吗?", "tooltipInstructionsMobileBody": "长按项目以查看工具提示。", "tooltipInstructionsBrowserBody": "将鼠标悬停在项目上以查看工具提示。", @@ -6196,14 +6194,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10945,5 +10935,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "启用写作辅助", + "autoIGCToolDescription": "自动运行 Pangea Chat 工具以将发送的消息纠正为目标语言。", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "录音失败。请检查您的音频权限并重试。", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb index 45bd99c5c..872b4672d 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2026-01-28 13:26:27.558260", + "@@last_modified": "2026-01-29 15:24:57.889262", "about": "關於", "@about": { "type": "String", @@ -3764,8 +3764,6 @@ "noPaymentInfo": "無需付款資訊!", "updatePhoneOS": "您可能需要更新設備的作業系統版本。", "wordsPerMinute": "每分鐘字數", - "autoIGCToolName": "自動運行Pangea寫作協助", - "autoIGCToolDescription": "在發送訊息前,自動運行Pangea聊天語法和翻譯寫作協助。", "tooltipInstructionsTitle": "不確定這是做什麼的嗎?", "tooltipInstructionsMobileBody": "長按項目以查看工具提示。", "tooltipInstructionsBrowserBody": "將滑鼠懸停在項目上以查看工具提示。", @@ -6220,14 +6218,6 @@ "type": "String", "placeholders": {} }, - "@autoIGCToolName": { - "type": "String", - "placeholders": {} - }, - "@autoIGCToolDescription": { - "type": "String", - "placeholders": {} - }, "@tooltipInstructionsTitle": { "type": "String", "placeholders": {} @@ -10952,5 +10942,20 @@ "@courseLoadingError": { "type": "String", "placeholders": {} + }, + "autoIGCToolName": "啟用寫作輔助", + "autoIGCToolDescription": "自動運行 Pangea Chat 工具以將發送的消息更正為目標語言。", + "@autoIGCToolName": { + "type": "String", + "placeholders": {} + }, + "@autoIGCToolDescription": { + "type": "String", + "placeholders": {} + }, + "emptyAudioError": "錄音失敗。請檢查您的音頻權限並重試。", + "@emptyAudioError": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 53a791d19..d97eba68c 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -195,6 +195,7 @@ class ChatController extends State StreamSubscription? _botAudioSubscription; final timelineUpdateNotifier = _TimelineUpdateNotifier(); late final ActivityChatController activityController; + final ValueNotifier scrollableNotifier = ValueNotifier(false); // Pangea# Room get room => sendingClient.getRoomById(roomId) ?? widget.room; @@ -807,6 +808,7 @@ class ChatController extends State scrollController.dispose(); inputFocus.dispose(); depressMessageButton.dispose(); + scrollableNotifier.dispose(); TokensUtil.clearNewTokenCache(); //Pangea# super.dispose(); diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart index 4fa2a92a3..990469e8f 100644 --- a/lib/pages/chat/chat_event_list.dart +++ b/lib/pages/chat/chat_event_list.dart @@ -51,147 +51,160 @@ class ChatEventList extends StatelessWidget { controller.room.client.applicationAccountConfig.wallpaperUrl != null; return SelectionArea( - child: ListView.custom( - padding: EdgeInsets.only( - top: 16, - bottom: 8, - left: horizontalPadding, - right: horizontalPadding, - ), - reverse: true, - controller: controller.scrollController, - keyboardDismissBehavior: PlatformInfos.isIOS - ? ScrollViewKeyboardDismissBehavior.onDrag - : ScrollViewKeyboardDismissBehavior.manual, - childrenDelegate: SliverChildBuilderDelegate( - (BuildContext context, int i) { - // Footer to display typing indicator and read receipts: - if (i == 0) { - if (timeline.isRequestingFuture) { - return const Center( - child: CircularProgressIndicator.adaptive(strokeWidth: 2), - ); - } - if (timeline.canRequestFuture) { - return Center( - child: IconButton( - onPressed: controller.requestFuture, - icon: const Icon(Icons.refresh_outlined), - ), - ); - } - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - SeenByRow(controller), - TypingIndicators(controller), - ], - ); - } - - // Request history button or progress indicator: - // #Pangea - // if (i == events.length + 1) { - if (i == events.length + 2) { - // Pangea# - if (timeline.isRequestingHistory) { - return const Center( - child: CircularProgressIndicator.adaptive(strokeWidth: 2), - ); - } - if (timeline.canRequestHistory) { - return Builder( - builder: (context) { - // #Pangea - // WidgetsBinding.instance - // .addPostFrameCallback(controller.requestHistory); - WidgetsBinding.instance.addPostFrameCallback( - (_) => controller.requestHistory(), - ); - // Pangea# - return Center( - child: IconButton( - onPressed: controller.requestHistory, - icon: const Icon(Icons.refresh_outlined), - ), - ); - }, - ); - } - return const SizedBox.shrink(); - } - - // #Pangea - if (i == 1) { - return ActivityUserSummaries(controller: controller); - } - // Pangea# - - // #Pangea - // i--; - i = i - 2; - // Pangea# - - // The message at this index: - final event = events[i]; - final animateIn = animateInEventIndex != null && - timeline.events.length > animateInEventIndex && - event == timeline.events[animateInEventIndex]; - - return AutoScrollTag( - key: ValueKey(event.eventId), - index: i, - controller: controller.scrollController, - child: Message( - event, - animateIn: animateIn, - resetAnimateIn: () { - controller.animateInEventIndex = null; - }, - onSwipe: () => controller.replyAction(replyTo: event), - // #Pangea - onInfoTab: (_) => {}, - // onInfoTab: controller.showEventInfo, - // Pangea# - onMention: () => controller.sendController.text += - '${event.senderFromMemoryOrFallback.mention} ', - highlightMarker: - controller.scrollToEventIdMarker == event.eventId, - // #Pangea - // onSelect: controller.onSelectMessage, - onSelect: (_) {}, - // Pangea# - scrollToEventId: (String eventId) => - controller.scrollToEventId(eventId), - longPressSelect: controller.selectedEvents.isNotEmpty, - // #Pangea - controller: controller, - isButton: event.eventId == controller.buttonEventID, - canRefresh: event.eventId == controller.refreshEventID, - // Pangea# - selected: controller.selectedEvents - .any((e) => e.eventId == event.eventId), - singleSelected: - controller.selectedEvents.singleOrNull?.eventId == - event.eventId, - onEdit: () => controller.editSelectedEventAction(), - timeline: timeline, - displayReadMarker: - i > 0 && controller.readMarkerEventId == event.eventId, - nextEvent: i + 1 < events.length ? events[i + 1] : null, - previousEvent: i > 0 ? events[i - 1] : null, - wallpaperMode: hasWallpaper, - scrollController: controller.scrollController, - colors: colors, - ), - ); - }, - // #Pangea - // childCount: events.length + 2, - childCount: events.length + 3, + // #Pangea + // child: ListView.custom( + child: NotificationListener( + onNotification: (_) { + WidgetsBinding.instance.addPostFrameCallback((_) { + final scrollable = + controller.scrollController.position.maxScrollExtent > 0; + controller.scrollableNotifier.value = scrollable; + }); + return true; + }, + child: ListView.custom( // Pangea# - findChildIndexCallback: (key) => - controller.findChildIndexCallback(key, thisEventsKeyMap), + padding: EdgeInsets.only( + top: 16, + bottom: 8, + left: horizontalPadding, + right: horizontalPadding, + ), + reverse: true, + controller: controller.scrollController, + keyboardDismissBehavior: PlatformInfos.isIOS + ? ScrollViewKeyboardDismissBehavior.onDrag + : ScrollViewKeyboardDismissBehavior.manual, + childrenDelegate: SliverChildBuilderDelegate( + (BuildContext context, int i) { + // Footer to display typing indicator and read receipts: + if (i == 0) { + if (timeline.isRequestingFuture) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } + if (timeline.canRequestFuture) { + return Center( + child: IconButton( + onPressed: controller.requestFuture, + icon: const Icon(Icons.refresh_outlined), + ), + ); + } + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + SeenByRow(controller), + TypingIndicators(controller), + ], + ); + } + + // Request history button or progress indicator: + // #Pangea + // if (i == events.length + 1) { + if (i == events.length + 2) { + // Pangea# + if (timeline.isRequestingHistory) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } + if (timeline.canRequestHistory) { + return Builder( + builder: (context) { + // #Pangea + // WidgetsBinding.instance + // .addPostFrameCallback(controller.requestHistory); + WidgetsBinding.instance.addPostFrameCallback( + (_) => controller.requestHistory(), + ); + // Pangea# + return Center( + child: IconButton( + onPressed: controller.requestHistory, + icon: const Icon(Icons.refresh_outlined), + ), + ); + }, + ); + } + return const SizedBox.shrink(); + } + + // #Pangea + if (i == 1) { + return ActivityUserSummaries(controller: controller); + } + // Pangea# + + // #Pangea + // i--; + i = i - 2; + // Pangea# + + // The message at this index: + final event = events[i]; + final animateIn = animateInEventIndex != null && + timeline.events.length > animateInEventIndex && + event == timeline.events[animateInEventIndex]; + + return AutoScrollTag( + key: ValueKey(event.eventId), + index: i, + controller: controller.scrollController, + child: Message( + event, + animateIn: animateIn, + resetAnimateIn: () { + controller.animateInEventIndex = null; + }, + onSwipe: () => controller.replyAction(replyTo: event), + // #Pangea + onInfoTab: (_) => {}, + // onInfoTab: controller.showEventInfo, + // Pangea# + onMention: () => controller.sendController.text += + '${event.senderFromMemoryOrFallback.mention} ', + highlightMarker: + controller.scrollToEventIdMarker == event.eventId, + // #Pangea + // onSelect: controller.onSelectMessage, + onSelect: (_) {}, + // Pangea# + scrollToEventId: (String eventId) => + controller.scrollToEventId(eventId), + longPressSelect: controller.selectedEvents.isNotEmpty, + // #Pangea + controller: controller, + isButton: event.eventId == controller.buttonEventID, + canRefresh: event.eventId == controller.refreshEventID, + // Pangea# + selected: controller.selectedEvents + .any((e) => e.eventId == event.eventId), + singleSelected: + controller.selectedEvents.singleOrNull?.eventId == + event.eventId, + onEdit: () => controller.editSelectedEventAction(), + timeline: timeline, + displayReadMarker: + i > 0 && controller.readMarkerEventId == event.eventId, + nextEvent: i + 1 < events.length ? events[i + 1] : null, + previousEvent: i > 0 ? events[i - 1] : null, + wallpaperMode: hasWallpaper, + scrollController: controller.scrollController, + colors: colors, + ), + ); + }, + // #Pangea + // childCount: events.length + 2, + childCount: events.length + 3, + // Pangea# + findChildIndexCallback: (key) => + controller.findChildIndexCallback(key, thisEventsKeyMap), + ), ), ), ); diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index bf450254a..501e20663 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -19,6 +19,8 @@ import 'events/audio_player.dart'; class PermissionException implements Exception {} +class EmptyAudioException implements Exception {} + class RecordingDialog extends StatefulWidget { const RecordingDialog({ super.key, @@ -143,6 +145,16 @@ class RecordingDialogState extends State { for (var i = 0; i < amplitudeTimeline.length; i += step) { waveform.add((amplitudeTimeline[i] / 100 * 1024).round()); } + + // #Pangea + if (amplitudeTimeline.isEmpty || amplitudeTimeline.every((e) => e <= 1)) { + if (mounted) { + setState(() => error = EmptyAudioException()); + } + return; + } + // Pangea# + Navigator.of(context, rootNavigator: false).pop( RecordingResult( path: path, @@ -168,7 +180,7 @@ class RecordingDialogState extends State { constraints: const BoxConstraints(maxWidth: 250.0), child: error is PermissionException ? Text(L10n.of(context).recordingPermissionDenied) - : kIsWeb + : kIsWeb && error is! EmptyAudioException ? Text(L10n.of(context).genericWebRecordingError) : Text(error!.toLocalizedString(context)), ) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 42617c405..bd2d0c0a2 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -696,7 +696,6 @@ class ChatListController extends State _roomCapacitySubscription?.cancel(); MatrixState.pangeaController.subscriptionController.subscriptionNotifier .removeListener(_onSubscribe); - SpaceCodeController.codeNotifier.removeListener(_onCacheSpaceCode); //Pangea# scrollController.removeListener(_onScroll); super.dispose(); @@ -1108,14 +1107,8 @@ class ChatListController extends State MatrixState.pangeaController.initControllers(); if (mounted) { SpaceCodeController.joinCachedSpaceCode(context); - SpaceCodeController.codeNotifier.addListener(_onCacheSpaceCode); } } - - void _onCacheSpaceCode() { - if (!mounted) return; - SpaceCodeController.joinCachedSpaceCode(context); - } // Pangea# void setActiveFilter(ActiveFilter filter) { diff --git a/lib/pages/new_private_chat/new_private_chat.dart b/lib/pages/new_private_chat/new_private_chat.dart index 45f94a302..4c7984ce2 100644 --- a/lib/pages/new_private_chat/new_private_chat.dart +++ b/lib/pages/new_private_chat/new_private_chat.dart @@ -60,11 +60,13 @@ class NewPrivateChatController extends State { // Pangea# final profiles = result.results; - if (searchTerm.isValidMatrixId && - searchTerm.sigil == '@' && - !profiles.any((profile) => profile.userId == searchTerm)) { - profiles.add(Profile(userId: searchTerm)); - } + // #Pangea + // if (searchTerm.isValidMatrixId && + // searchTerm.sigil == '@' && + // !profiles.any((profile) => profile.userId == searchTerm)) { + // profiles.add(Profile(userId: searchTerm)); + // } + // Pangea# return profiles; } diff --git a/lib/pangea/activity_sessions/activity_summary_widget.dart b/lib/pangea/activity_sessions/activity_summary_widget.dart index 3592967dc..7ef14d940 100644 --- a/lib/pangea/activity_sessions/activity_summary_widget.dart +++ b/lib/pangea/activity_sessions/activity_summary_widget.dart @@ -97,17 +97,15 @@ class ActivitySummary extends StatelessWidget { color: theme.colorScheme.surface.withAlpha(128), borderRadius: BorderRadius.circular(12.0), ), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8.0, - ), - child: Column( - spacing: 4.0, - mainAxisSize: MainAxisSize.min, - children: [ - InkWell( - hoverColor: theme.colorScheme.surfaceTint.withAlpha(55), - onTap: toggleInstructions, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + InkWell( + borderRadius: BorderRadius.circular(12.0), + hoverColor: theme.colorScheme.surfaceTint.withAlpha(55), + onTap: toggleInstructions, + child: Padding( + padding: const EdgeInsets.all(8.0), child: Column( spacing: 4.0, children: [ @@ -139,69 +137,75 @@ class ActivitySummary extends StatelessWidget { ], ), ), - if (showInstructions) ...[ - Row( - spacing: 8.0, - mainAxisSize: MainAxisSize.min, + ), + if (showInstructions) + Padding( + padding: const EdgeInsets.all(16.0), + child: Column( children: [ - Text( - activity.req.mode, - style: theme.textTheme.bodyMedium, - ), Row( - spacing: 4.0, + spacing: 8.0, mainAxisSize: MainAxisSize.min, children: [ - const Icon(Icons.school, size: 12.0), Text( - activity.req.cefrLevel.string, + activity.req.mode, style: theme.textTheme.bodyMedium, ), + Row( + spacing: 4.0, + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.school, size: 12.0), + Text( + activity.req.cefrLevel.string, + style: theme.textTheme.bodyMedium, + ), + ], + ), ], ), + ActivitySessionDetailsRow( + icon: Symbols.target, + iconSize: 16.0, + child: Text( + activity.learningObjective, + style: theme.textTheme.bodyMedium, + ), + ), + ActivitySessionDetailsRow( + icon: Symbols.steps, + iconSize: 16.0, + child: Html( + data: markdown(activity.instructions), + style: { + "body": Style( + margin: Margins.all(0), + padding: HtmlPaddings.all(0), + fontSize: FontSize( + theme.textTheme.bodyMedium!.fontSize!, + ), + ), + }, + ), + ), + ActivitySessionDetailsRow( + icon: Symbols.dictionary, + iconSize: 16.0, + child: ActivityVocabWidget( + key: ValueKey( + "activity-summary-${activity.activityId}", + ), + vocab: activity.vocab, + langCode: activity.req.targetLanguage, + targetId: "activity-summary-vocab", + usedVocab: usedVocab, + activityLangCode: activity.req.targetLanguage, + ), + ), ], ), - ActivitySessionDetailsRow( - icon: Symbols.target, - iconSize: 16.0, - child: Text( - activity.learningObjective, - style: theme.textTheme.bodyMedium, - ), - ), - ActivitySessionDetailsRow( - icon: Symbols.steps, - iconSize: 16.0, - child: Html( - data: markdown(activity.instructions), - style: { - "body": Style( - margin: Margins.all(0), - padding: HtmlPaddings.all(0), - fontSize: FontSize( - theme.textTheme.bodyMedium!.fontSize!, - ), - ), - }, - ), - ), - ActivitySessionDetailsRow( - icon: Symbols.dictionary, - iconSize: 16.0, - child: ActivityVocabWidget( - key: ValueKey( - "activity-summary-${activity.activityId}", - ), - vocab: activity.vocab, - langCode: activity.req.targetLanguage, - targetId: "activity-summary-vocab", - usedVocab: usedVocab, - activityLangCode: activity.req.targetLanguage, - ), - ), - ], - ], - ), + ), + ], ), ), ], diff --git a/lib/pangea/analytics_data/analytics_data_service.dart b/lib/pangea/analytics_data/analytics_data_service.dart index 1cfe805be..bd371aa81 100644 --- a/lib/pangea/analytics_data/analytics_data_service.dart +++ b/lib/pangea/analytics_data/analytics_data_service.dart @@ -163,6 +163,7 @@ class AnalyticsDataService { Logs().i("Analytics database initialized."); initCompleter.complete(); updateDispatcher.sendConstructAnalyticsUpdate(AnalyticsUpdate([])); + updateDispatcher.sendActivityAnalyticsUpdate(null); } } diff --git a/lib/pangea/analytics_data/analytics_update_dispatcher.dart b/lib/pangea/analytics_data/analytics_update_dispatcher.dart index 922d6637f..acf7052fc 100644 --- a/lib/pangea/analytics_data/analytics_update_dispatcher.dart +++ b/lib/pangea/analytics_data/analytics_update_dispatcher.dart @@ -47,8 +47,8 @@ class AnalyticsUpdateDispatcher { final StreamController constructUpdateStream = StreamController.broadcast(); - final StreamController activityAnalyticsStream = - StreamController.broadcast(); + final StreamController activityAnalyticsStream = + StreamController.broadcast(); final StreamController> unlockedConstructsStream = StreamController>.broadcast(); @@ -85,7 +85,7 @@ class AnalyticsUpdateDispatcher { .map((update) => update.value); void sendActivityAnalyticsUpdate( - String activityAnalytics, + String? activityAnalytics, ) => activityAnalyticsStream.add(activityAnalytics); diff --git a/lib/pangea/analytics_page/activity_archive.dart b/lib/pangea/analytics_page/activity_archive.dart index c9ae71625..c76bdff96 100644 --- a/lib/pangea/analytics_page/activity_archive.dart +++ b/lib/pangea/analytics_page/activity_archive.dart @@ -26,47 +26,58 @@ class ActivityArchive extends StatelessWidget { @override Widget build(BuildContext context) { - final Room? analyticsRoom = Matrix.of(context).client.analyticsRoomLocal(); - final archive = analyticsRoom?.archivedActivities ?? []; - final selectedRoomId = GoRouterState.of(context).pathParameters['roomid']; - return Scaffold( - body: SafeArea( - child: Padding( - padding: const EdgeInsetsGeometry.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const LearningProgressIndicators( - selected: ProgressIndicatorEnum.activities, - ), - Expanded( - child: MaxWidthBody( - withScrolling: false, - child: ListView.builder( - physics: const ClampingScrollPhysics(), - itemCount: archive.length + 1, - itemBuilder: (BuildContext context, int i) { - if (i == 0) { - return InstructionsInlineTooltip( - instructionsEnum: archive.isEmpty - ? InstructionsEnum.noSavedActivitiesYet - : InstructionsEnum.activityAnalyticsList, - padding: const EdgeInsets.all(8.0), - ); - } - i--; - return AnalyticsActivityItem( - room: archive[i], - selected: archive[i].id == selectedRoomId, - ); - }, + return StreamBuilder( + stream: Matrix.of(context) + .analyticsDataService + .updateDispatcher + .activityAnalyticsStream + .stream, + builder: (context, _) { + final Room? analyticsRoom = + Matrix.of(context).client.analyticsRoomLocal(); + final archive = analyticsRoom?.archivedActivities ?? []; + final selectedRoomId = + GoRouterState.of(context).pathParameters['roomid']; + return Scaffold( + body: SafeArea( + child: Padding( + padding: const EdgeInsetsGeometry.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const LearningProgressIndicators( + selected: ProgressIndicatorEnum.activities, ), - ), + Expanded( + child: MaxWidthBody( + withScrolling: false, + child: ListView.builder( + physics: const ClampingScrollPhysics(), + itemCount: archive.length + 1, + itemBuilder: (BuildContext context, int i) { + if (i == 0) { + return InstructionsInlineTooltip( + instructionsEnum: archive.isEmpty + ? InstructionsEnum.noSavedActivitiesYet + : InstructionsEnum.activityAnalyticsList, + padding: const EdgeInsets.all(8.0), + ); + } + i--; + return AnalyticsActivityItem( + room: archive[i], + selected: archive[i].id == selectedRoomId, + ); + }, + ), + ), + ), + ], ), - ], + ), ), - ), - ), + ); + }, ); } } diff --git a/lib/pangea/analytics_practice/analytics_practice_view.dart b/lib/pangea/analytics_practice/analytics_practice_view.dart index 7dc768784..9ada4f9d2 100644 --- a/lib/pangea/analytics_practice/analytics_practice_view.dart +++ b/lib/pangea/analytics_practice/analytics_practice_view.dart @@ -134,7 +134,6 @@ class _AnalyticsActivityView extends StatelessWidget { valueListenable: controller.activityTarget, builder: (context, target, __) => target != null ? Column( - mainAxisAlignment: MainAxisAlignment.center, children: [ Text( target.promptText(context), diff --git a/lib/pangea/chat/widgets/chat_floating_action_button.dart b/lib/pangea/chat/widgets/chat_floating_action_button.dart index b7bf6a8cc..88122aa3c 100644 --- a/lib/pangea/chat/widgets/chat_floating_action_button.dart +++ b/lib/pangea/chat/widgets/chat_floating_action_button.dart @@ -22,6 +22,7 @@ class ChatFloatingActionButton extends StatelessWidget { controller.choreographer.errorService, controller.choreographer.itController.open, controller.scrollController, + controller.scrollableNotifier, ], ), builder: (context, _) { diff --git a/lib/pangea/chat_settings/models/bot_options_model.dart b/lib/pangea/chat_settings/models/bot_options_model.dart index e21f141b9..d8670dbab 100644 --- a/lib/pangea/chat_settings/models/bot_options_model.dart +++ b/lib/pangea/chat_settings/models/bot_options_model.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:fluffychat/pangea/chat_settings/constants/bot_mode.dart'; import 'package:fluffychat/pangea/common/constants/model_keys.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; +import 'package:fluffychat/pangea/learning_settings/gender_enum.dart'; import 'package:fluffychat/pangea/learning_settings/language_level_type_enum.dart'; class BotOptionsModel { @@ -23,6 +24,7 @@ class BotOptionsModel { final String? textAdventureGameMasterInstructions; final String? targetLanguage; final String? targetVoice; + final GenderEnum targetGender; const BotOptionsModel({ //////////////////////////////////////////////////////////////////////////// @@ -35,6 +37,7 @@ class BotOptionsModel { this.mode = BotMode.discussion, this.targetLanguage, this.targetVoice, + this.targetGender = GenderEnum.unselected, //////////////////////////////////////////////////////////////////////////// // Discussion Mode Options @@ -73,6 +76,12 @@ class BotOptionsModel { mode: json[ModelKey.mode] ?? BotMode.discussion, targetLanguage: json[ModelKey.targetLanguage], targetVoice: json[ModelKey.targetVoice], + targetGender: json[ModelKey.targetGender] != null + ? GenderEnum.values.firstWhere( + (g) => g.name == json[ModelKey.targetGender], + orElse: () => GenderEnum.unselected, + ) + : GenderEnum.unselected, ////////////////////////////////////////////////////////////////////////// // Discussion Mode Options @@ -121,6 +130,7 @@ class BotOptionsModel { data[ModelKey.customTriggerReactionKey] = customTriggerReactionKey ?? "⏩"; data[ModelKey.textAdventureGameMasterInstructions] = textAdventureGameMasterInstructions; + data[ModelKey.targetGender] = targetGender.name; return data; } catch (e, s) { debugger(when: kDebugMode); @@ -149,6 +159,7 @@ class BotOptionsModel { String? textAdventureGameMasterInstructions, String? targetLanguage, String? targetVoice, + GenderEnum? targetGender, }) { return BotOptionsModel( languageLevel: languageLevel ?? this.languageLevel, @@ -172,6 +183,7 @@ class BotOptionsModel { this.textAdventureGameMasterInstructions, targetLanguage: targetLanguage ?? this.targetLanguage, targetVoice: targetVoice ?? this.targetVoice, + targetGender: targetGender ?? this.targetGender, ); } } diff --git a/lib/pangea/chat_settings/utils/bot_client_extension.dart b/lib/pangea/chat_settings/utils/bot_client_extension.dart index 69c9b84cc..6ae38cb56 100644 --- a/lib/pangea/chat_settings/utils/bot_client_extension.dart +++ b/lib/pangea/chat_settings/utils/bot_client_extension.dart @@ -59,10 +59,12 @@ extension BotClientExtension on Client { final targetLanguage = userSettings.targetLanguage; final languageLevel = userSettings.cefrLevel; final voice = userSettings.voice; + final gender = userSettings.gender; if (botOptions.targetLanguage == targetLanguage && botOptions.languageLevel == languageLevel && - botOptions.targetVoice == voice) { + botOptions.targetVoice == voice && + botOptions.targetGender == gender) { continue; } @@ -70,6 +72,7 @@ extension BotClientExtension on Client { targetLanguage: targetLanguage, languageLevel: languageLevel, targetVoice: voice, + targetGender: gender, ); futures.add(targetBotRoom.setBotOptions(updated)); } diff --git a/lib/pangea/common/config/environment.dart b/lib/pangea/common/config/environment.dart index 970017bd6..53388f2dc 100644 --- a/lib/pangea/common/config/environment.dart +++ b/lib/pangea/common/config/environment.dart @@ -107,7 +107,9 @@ class Environment { static String get stripeManagementUrl { return appConfigOverride?.stripeManagementUrl ?? dotenv.env["STRIPE_MANAGEMENT_LINK"] ?? - 'https://billing.stripe.com/p/login/dR6dSkf5p6rBc4EcMM'; + (isStagingEnvironment + ? 'https://billing.stripe.com/p/login/test_9AQaI8d3O9lmaXe5kk' + : 'https://billing.stripe.com/p/login/dR6dSkf5p6rBc4EcMM'); } static String get supportUserId { diff --git a/lib/pangea/common/constants/local.key.dart b/lib/pangea/common/constants/local.key.dart index 9d722ca6c..1aae92846 100644 --- a/lib/pangea/common/constants/local.key.dart +++ b/lib/pangea/common/constants/local.key.dart @@ -5,6 +5,7 @@ class PLocalKey { static const String dismissedPaywall = 'dismissedPaywall'; static const String paywallBackoff = 'paywallBackoff'; static const String clickedCancelSubscription = 'clickedCancelSubscription'; + static const String subscriptionEndDate = 'subscriptionWillEnd'; static const String messagesSinceUpdate = 'messagesSinceLastUpdate'; static const String completedActivities = 'completedActivities'; static const String justInputtedCode = 'justInputtedCode'; diff --git a/lib/pangea/common/constants/model_keys.dart b/lib/pangea/common/constants/model_keys.dart index d248e680e..84b69e97b 100644 --- a/lib/pangea/common/constants/model_keys.dart +++ b/lib/pangea/common/constants/model_keys.dart @@ -132,6 +132,7 @@ class ModelKey { static const String targetLanguage = "target_language"; static const String sourceLanguage = "source_language"; static const String targetVoice = "target_voice"; + static const String targetGender = "users_genders"; static const String prevEventId = "prev_event_id"; static const String prevLastUpdated = "prev_last_updated"; diff --git a/lib/pangea/join_codes/space_code_controller.dart b/lib/pangea/join_codes/space_code_controller.dart index 1606f2792..e1590a130 100644 --- a/lib/pangea/join_codes/space_code_controller.dart +++ b/lib/pangea/join_codes/space_code_controller.dart @@ -13,7 +13,6 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/join_codes/knock_space_extension.dart'; import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; import 'package:fluffychat/pangea/join_codes/too_many_requests_dialog.dart'; -import 'package:fluffychat/pangea/spaces/space_constants.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import '../common/controllers/base_controller.dart'; @@ -21,18 +20,6 @@ import '../common/controllers/base_controller.dart'; class NotFoundException implements Exception {} class SpaceCodeController extends BaseController { - static ValueNotifier codeNotifier = ValueNotifier(null); - - static Future onOpenAppViaUrl(Uri url) async { - if (url.fragment.isEmpty) return; - final fragment = Uri.parse(url.fragment); - final code = fragment.queryParameters[SpaceConstants.classCode]; - if (code != null && fragment.path.contains('join_with_link')) { - await SpaceCodeRepo.setSpaceCode(code); - codeNotifier.value = code; - } - } - static Future joinCachedSpaceCode(BuildContext context) async { final String? spaceCode = SpaceCodeRepo.spaceCode; if (spaceCode == null) return null; diff --git a/lib/pangea/login/pages/language_selection_page.dart b/lib/pangea/login/pages/language_selection_page.dart index 939af0d98..772425fa9 100644 --- a/lib/pangea/login/pages/language_selection_page.dart +++ b/lib/pangea/login/pages/language_selection_page.dart @@ -170,7 +170,7 @@ class LanguageSelectionPageState extends State { ), child: Wrap( spacing: isColumnMode ? 16.0 : 8.0, - runSpacing: isColumnMode ? 16.0 : 8.0, + runSpacing: isColumnMode ? 24.0 : 16.0, alignment: WrapAlignment.center, children: languages .where( @@ -189,6 +189,9 @@ class LanguageSelectionPageState extends State { Radius.circular(16.0), ), child: FilterChip( + materialTapTargetSize: + MaterialTapTargetSize + .shrinkWrap, selected: _selectedLanguage == l, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.all( diff --git a/lib/pangea/subscription/pages/settings_subscription.dart b/lib/pangea/subscription/pages/settings_subscription.dart index a1f54d8ca..37145333a 100644 --- a/lib/pangea/subscription/pages/settings_subscription.dart +++ b/lib/pangea/subscription/pages/settings_subscription.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher_string.dart'; @@ -22,7 +23,8 @@ class SubscriptionManagement extends StatefulWidget { SubscriptionManagementController(); } -class SubscriptionManagementController extends State { +class SubscriptionManagementController extends State + with WidgetsBindingObserver { final SubscriptionController subscriptionController = MatrixState.pangeaController.subscriptionController; @@ -31,6 +33,9 @@ class SubscriptionManagementController extends State { @override void initState() { + WidgetsBinding.instance.addObserver(this); + _refreshSubscription(); + if (!subscriptionController.initCompleter.isCompleted) { subscriptionController.initialize().then((_) => setState(() {})); } @@ -43,11 +48,20 @@ class SubscriptionManagementController extends State { @override void dispose() { + WidgetsBinding.instance.removeObserver(this); subscriptionController.subscriptionNotifier.removeListener(_onSubscribe); subscriptionController.removeListener(_onSubscriptionUpdate); super.dispose(); } + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state == AppLifecycleState.resumed) { + _refreshSubscription(); + } + super.didChangeAppLifecycleState(state); + } + bool get subscriptionsAvailable => subscriptionController .availableSubscriptionInfo?.availableSubscriptions.isNotEmpty ?? @@ -103,6 +117,33 @@ class SubscriptionManagementController extends State { void _onSubscriptionUpdate() => setState(() {}); void _onSubscribe() => showSubscribedSnackbar(context); + Future _refreshSubscription() async { + if (!kIsWeb) return; + + // if the user previously clicked cancel, check if the subscription end date has changed + final prevEndDate = SubscriptionManagementRepo.getSubscriptionEndDate(); + final clickedCancel = + SubscriptionManagementRepo.getClickedCancelSubscription(); + if (clickedCancel == null) return; + + await subscriptionController.reinitialize(); + final newEndDate = + subscriptionController.currentSubscriptionInfo?.subscriptionEndDate; + + if (prevEndDate != newEndDate) { + SubscriptionManagementRepo.removeClickedCancelSubscription(); + SubscriptionManagementRepo.setSubscriptionEndDate(newEndDate); + if (mounted) setState(() {}); + return; + } + + // if more than 10 minutes have passed since the user clicked cancel, remove the click flag + if (DateTime.now().difference(clickedCancel).inMinutes >= 10) { + SubscriptionManagementRepo.removeClickedCancelSubscription(); + if (mounted) setState(() {}); + } + } + Future submitChange( SubscriptionDetails subscription, { bool isPromo = false, @@ -130,6 +171,9 @@ class SubscriptionManagementController extends State { Future onClickCancelSubscription() async { await SubscriptionManagementRepo.setClickedCancelSubscription(); + await SubscriptionManagementRepo.setSubscriptionEndDate( + subscriptionEndDate, + ); await launchMangementUrl(ManagementOption.cancel); if (mounted) setState(() {}); } diff --git a/lib/pangea/subscription/pages/settings_subscription_view.dart b/lib/pangea/subscription/pages/settings_subscription_view.dart index c5b3bb506..b48ab2fcf 100644 --- a/lib/pangea/subscription/pages/settings_subscription_view.dart +++ b/lib/pangea/subscription/pages/settings_subscription_view.dart @@ -16,6 +16,8 @@ class SettingsSubscriptionView extends StatelessWidget { @override Widget build(BuildContext context) { + final clickedCancelDate = + SubscriptionManagementRepo.getClickedCancelSubscription(); final List managementButtons = [ if (controller.currentSubscriptionAvailable) ListTile( @@ -70,7 +72,8 @@ class SettingsSubscriptionView extends StatelessWidget { ), ), ), - if (SubscriptionManagementRepo.getClickedCancelSubscription()) + if (clickedCancelDate != null && + DateTime.now().difference(clickedCancelDate).inMinutes < 10) Padding( padding: const EdgeInsets.all(16.0), child: Row( diff --git a/lib/pangea/subscription/repo/subscription_management_repo.dart b/lib/pangea/subscription/repo/subscription_management_repo.dart index f0b96a678..673a1103b 100644 --- a/lib/pangea/subscription/repo/subscription_management_repo.dart +++ b/lib/pangea/subscription/repo/subscription_management_repo.dart @@ -77,14 +77,26 @@ class SubscriptionManagementRepo { ); } - static bool getClickedCancelSubscription() { + static DateTime? getClickedCancelSubscription() { final entry = _cache.read(PLocalKey.clickedCancelSubscription); - if (entry == null) return false; - final val = DateTime.tryParse(entry); - return val != null && DateTime.now().difference(val).inSeconds < 60; + if (entry == null) return null; + return DateTime.tryParse(entry); } static Future removeClickedCancelSubscription() async { await _cache.remove(PLocalKey.clickedCancelSubscription); } + + static Future setSubscriptionEndDate(DateTime? date) async { + await _cache.write( + PLocalKey.subscriptionEndDate, + date?.toIso8601String(), + ); + } + + static DateTime? getSubscriptionEndDate() { + final entry = _cache.read(PLocalKey.subscriptionEndDate); + if (entry == null) return null; + return DateTime.tryParse(entry); + } } diff --git a/lib/utils/localized_exception_extension.dart b/lib/utils/localized_exception_extension.dart index 17df8cf58..0b1989b46 100644 --- a/lib/utils/localized_exception_extension.dart +++ b/lib/utils/localized_exception_extension.dart @@ -8,6 +8,7 @@ import 'package:matrix/encryption.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/recording_dialog.dart'; import 'package:fluffychat/pangea/analytics_practice/analytics_practice_session_repo.dart'; import 'package:fluffychat/pangea/common/network/requests.dart'; import 'package:fluffychat/utils/other_party_can_receive.dart'; @@ -39,6 +40,10 @@ extension LocalizedExceptionExtension on Object { if (this is InsufficientDataException) { return L10n.of(context).notEnoughToPractice; } + + if (this is EmptyAudioException) { + return L10n.of(context).emptyAudioError; + } // Pangea# if (this is FileTooBigMatrixException) { final exception = this as FileTooBigMatrixException; diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 78544c300..2f28d54f5 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -24,7 +24,6 @@ import 'package:fluffychat/pangea/analytics_data/analytics_data_service.dart'; import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/common/utils/any_state_holder.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; -import 'package:fluffychat/pangea/join_codes/space_code_controller.dart'; import 'package:fluffychat/pangea/languages/locale_provider.dart'; import 'package:fluffychat/pangea/user/style_settings_repo.dart'; import 'package:fluffychat/utils/client_manager.dart'; @@ -680,8 +679,14 @@ class MatrixState extends State with WidgetsBindingObserver { // #Pangea Future _processIncomingUris(Uri? uri) async { - if (uri == null) return; - await SpaceCodeController.onOpenAppViaUrl(uri); + if (uri == null || uri.fragment.isEmpty) return; + + final path = + uri.fragment.startsWith('/') ? uri.fragment : '/${uri.fragment}'; + + WidgetsBinding.instance.addPostFrameCallback((_) { + FluffyChatApp.router.go(path); + }); } // Pangea# } diff --git a/pubspec.yaml b/pubspec.yaml index 6dfb452fe..cfc708560 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 4.1.16+5 +version: 4.1.16+6 environment: sdk: ">=3.0.0 <4.0.0"