diff --git a/.agent-artifacts/ui-evidence/yinka-signin-film/001-mobile-ios-sign-in-film.png b/.agent-artifacts/ui-evidence/yinka-signin-film/001-mobile-ios-sign-in-film.png new file mode 100644 index 00000000000..3e49fd2ccbb Binary files /dev/null and b/.agent-artifacts/ui-evidence/yinka-signin-film/001-mobile-ios-sign-in-film.png differ diff --git a/.agent-artifacts/ui-evidence/yinka-signin-film/002-mobile-ios-data-privacy-film.png b/.agent-artifacts/ui-evidence/yinka-signin-film/002-mobile-ios-data-privacy-film.png new file mode 100644 index 00000000000..bc5a9065201 Binary files /dev/null and b/.agent-artifacts/ui-evidence/yinka-signin-film/002-mobile-ios-data-privacy-film.png differ diff --git a/.agent-artifacts/ui-evidence/yinka-signin-film/evidence.json b/.agent-artifacts/ui-evidence/yinka-signin-film/evidence.json new file mode 100644 index 00000000000..9889b33d441 --- /dev/null +++ b/.agent-artifacts/ui-evidence/yinka-signin-film/evidence.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "images": [ + { + "file": "001-mobile-ios-sign-in-film.png", + "platform": "mobile-ios", + "description": "Sign-in over the launch film, no Get started page (iOS simulator, local test build: one local sign-in button where store builds show Apple/Google)", + "captured_by": "agent", + "source": "manual" + }, + { + "file": "002-mobile-ios-data-privacy-film.png", + "platform": "mobile-ios", + "description": "Data & Privacy over a frame of the launch film where a burned-in notification card sits behind the text; the stronger shade hides it. Agree & Continue and Use a Different Account. Rendered at iPhone size by a widget test, not the simulator", + "captured_by": "agent", + "source": "manual" + } + ] +} diff --git a/app/assets/images/onboarding.mp4 b/app/assets/images/onboarding.mp4 deleted file mode 100644 index 5a00d2f11d0..00000000000 Binary files a/app/assets/images/onboarding.mp4 and /dev/null differ diff --git a/app/assets/videos/onboarding_launch_loop.mp4 b/app/assets/videos/onboarding_launch_loop.mp4 new file mode 100644 index 00000000000..bf06a90049c Binary files /dev/null and b/app/assets/videos/onboarding_launch_loop.mp4 differ diff --git a/app/changelog/unreleased/20261015-signin-launch-film.json b/app/changelog/unreleased/20261015-signin-launch-film.json new file mode 100644 index 00000000000..b619b84009e --- /dev/null +++ b/app/changelog/unreleased/20261015-signin-launch-film.json @@ -0,0 +1,3 @@ +{ + "change": "Sign-in and Data & Privacy now play the Omi launch film, and new readers go straight to sign-in" +} diff --git a/app/contracts/addressability/unkeyed-baseline.json b/app/contracts/addressability/unkeyed-baseline.json index 4b617dd64fd..8b1bc0864e0 100644 --- a/app/contracts/addressability/unkeyed-baseline.json +++ b/app/contracts/addressability/unkeyed-baseline.json @@ -98,7 +98,6 @@ "app/lib/pages/onboarding/apple_watch_permission_page.dart": 9, "app/lib/pages/onboarding/auth.dart": 6, "app/lib/pages/onboarding/complete_screen.dart": 2, - "app/lib/pages/onboarding/device_selection.dart": 2, "app/lib/pages/onboarding/find_device/found_devices.dart": 1, "app/lib/pages/onboarding/find_device/page.dart": 2, "app/lib/pages/onboarding/found_omi/found_omi_widget.dart": 4, diff --git a/app/lib/gen/assets.gen.dart b/app/lib/gen/assets.gen.dart index 0bde56a9f1c..92a6959bdc5 100644 --- a/app/lib/gen/assets.gen.dart +++ b/app/lib/gen/assets.gen.dart @@ -505,6 +505,16 @@ class $AssetsTestGen { List get values => [ttsProgressiveProbe]; } +class $AssetsVideosGen { + const $AssetsVideosGen(); + + /// File path: assets/videos/onboarding_launch_loop.mp4 + String get onboardingLaunchLoop => 'assets/videos/onboarding_launch_loop.mp4'; + + /// List of all assets + List get values => [onboardingLaunchLoop]; +} + abstract final class Assets { static const $AssetsCompetitorLogosGen competitorLogos = $AssetsCompetitorLogosGen(); @@ -514,6 +524,7 @@ abstract final class Assets { $AssetsIntegrationAppLogosGen(); static const $AssetsModelsGen models = $AssetsModelsGen(); static const $AssetsTestGen test = $AssetsTestGen(); + static const $AssetsVideosGen videos = $AssetsVideosGen(); static const String shorebird = 'shorebird.yaml'; /// List of all assets diff --git a/app/lib/l10n/app_ar.arb b/app/lib/l10n/app_ar.arb index 9a0d33a7344..19c9cef863d 100644 --- a/app/lib/l10n/app_ar.arb +++ b/app/lib/l10n/app_ar.arb @@ -1515,7 +1515,6 @@ "additionalSampleIndex": "عينة إضافية {index}", "durationSeconds": "المدة: {seconds} ثانية", "additionalSpeechSampleRemoved": "تمت إزالة عينة الكلام الإضافية", - "consentDataMessage": "بالمتابعة، سيتم تخزين محادثاتك وتسجيلاتك ومعلوماتك الشخصية بشكل آمن على خوادمنا. تتم معالجة تسجيلاتك الصوتية ونصوصك بواسطة خدمات ذكاء اصطناعي تابعة لجهات خارجية (بما في ذلك Deepgram للنسخ و OpenAI للتحليل) لتزويدك برؤى مدعومة بالذكاء الاصطناعي وتمكين جميع ميزات التطبيق.", "tasksEmptyStateMessage": "ابدأ محادثة لإنشاء مهمة.", "clearChatAction": "مسح المحادثة", "enableApps": "تفعيل التطبيقات", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "تم بلوغ حد الملخصات", "summaryLimitBody": "لقد أعدت إنشاء عدة ملخصات خلال الساعة الماضية. حاول مرة أخرى لاحقًا.", "summaryFailedTitle": "تعذر التلخيص", - "summaryFailedBody": "حدث خطأ ما أثناء تلخيص هذه المحادثة." + "summaryFailedBody": "حدث خطأ ما أثناء تلخيص هذه المحادثة.", + "consentShortMessage": "يستخدم Omi الذكاء الاصطناعي لتحويل محادثاتك إلى ملاحظات. يمكنك حذفها في أي وقت.", + "consentAiProviders": "تتم المعالجة بواسطة {providers}." } diff --git a/app/lib/l10n/app_be.arb b/app/lib/l10n/app_be.arb index e3e18e750ef..195cb5bb68b 100644 --- a/app/lib/l10n/app_be.arb +++ b/app/lib/l10n/app_be.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Працягваючы, вашы размовы, запісы і асабістая інфармацыя будуць надзейна захоўвацца на нашых серверах. Вашы аўдыязапісы і транскрыпцыі апрацоўваюцца староннімі сэрвісамі ШІ (уключаючы Deepgram для транскрыпцыі і OpenAI для аналізу), каб забяспечыць вас аналітыкай на аснове ШІ і ўключыць усе функцыі праграмы.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Пачніце размову, каб стварыць задачу.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Дасягнуты ліміт падсумаванняў", "summaryLimitBody": "За апошнюю гадзіну вы некалькі разоў перастваралі падсумаванні. Паспрабуйце пазней.", "summaryFailedTitle": "Не ўдалося падсумаваць", - "summaryFailedBody": "Падчас падсумоўвання гэтай размовы нешта пайшло не так." + "summaryFailedBody": "Падчас падсумоўвання гэтай размовы нешта пайшло не так.", + "consentShortMessage": "Omi з дапамогай ШІ ператварае вашы размовы ў нататкі. Іх можна выдаліць у любы момант.", + "consentAiProviders": "Апрацоўка: {providers}." } diff --git a/app/lib/l10n/app_bg.arb b/app/lib/l10n/app_bg.arb index b68277dae45..f23db66abcf 100644 --- a/app/lib/l10n/app_bg.arb +++ b/app/lib/l10n/app_bg.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Допълнителна проба {index}", "durationSeconds": "Продължителност: {seconds} секунди", "additionalSpeechSampleRemoved": "Допълнителната гласова проба е премахната", - "consentDataMessage": "С продължаването вашите разговори, записи и лична информация ще бъдат сигурно съхранени на нашите сървъри. Вашите аудиозаписи и транскрипции се обработват от AI услуги на трети страни (включително Deepgram за транскрипция и OpenAI за анализ), за да ви предоставят прозрения, базирани на AI, и да активират всички функции на приложението.", "tasksEmptyStateMessage": "Започнете разговор, за да създадете задача.", "clearChatAction": "Изчисти чата", "enableApps": "Активиране на приложения", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Достигнат е лимитът за обобщения", "summaryLimitBody": "Генерирахте отново няколко обобщения през последния час. Опитайте отново по-късно.", "summaryFailedTitle": "Неуспешно обобщаване", - "summaryFailedBody": "Нещо се обърка при обобщаването на този разговор." + "summaryFailedBody": "Нещо се обърка при обобщаването на този разговор.", + "consentShortMessage": "Omi използва ИИ, за да превърне разговорите ви в бележки. Можете да ги изтриете по всяко време.", + "consentAiProviders": "Обработва се с {providers}." } diff --git a/app/lib/l10n/app_bn.arb b/app/lib/l10n/app_bn.arb index 2df6b2662e1..af7eb9bc186 100644 --- a/app/lib/l10n/app_bn.arb +++ b/app/lib/l10n/app_bn.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "চালিয়ে যাওয়ার মাধ্যমে, আপনার কথোপকথন, রেকর্ডিং এবং ব্যক্তিগত তথ্য আমাদের সার্ভারে নিরাপদে সংরক্ষণ করা হবে। আপনার অডিও রেকর্ডিং এবং ট্রান্সক্রিপ্ট তৃতীয় পক্ষের AI পরিষেবা দ্বারা প্রক্রিয়া করা হয় (ট্রান্সক্রিপশনের জন্য Deepgram এবং বিশ্লেষণের জন্য OpenAI সহ) যাতে আপনাকে AI-চালিত অন্তর্দৃষ্টি প্রদান করা যায় এবং সমস্ত অ্যাপ বৈশিষ্ট্য সক্ষম করা যায়।", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "একটি কাজ তৈরি করতে কথোপকথন শুরু করুন।", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "সারসংক্ষেপের সীমা পূর্ণ হয়েছে", "summaryLimitBody": "আপনি গত এক ঘণ্টায় একাধিক সারসংক্ষেপ পুনরায় তৈরি করেছেন। পরে আবার চেষ্টা করুন।", "summaryFailedTitle": "সারসংক্ষেপ করা যায়নি", - "summaryFailedBody": "এই কথোপকথনের সারসংক্ষেপ করার সময় কিছু ভুল হয়েছে।" + "summaryFailedBody": "এই কথোপকথনের সারসংক্ষেপ করার সময় কিছু ভুল হয়েছে।", + "consentShortMessage": "Omi AI ব্যবহার করে আপনার কথোপকথনকে নোটে পরিণত করে। যেকোনো সময় মুছে ফেলতে পারেন।", + "consentAiProviders": "{providers} দিয়ে প্রক্রিয়া করা হয়।" } diff --git a/app/lib/l10n/app_bs.arb b/app/lib/l10n/app_bs.arb index 6b7d5db62dc..f050b1a1b80 100644 --- a/app/lib/l10n/app_bs.arb +++ b/app/lib/l10n/app_bs.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Nastavljanjem, vaši razgovori, snimke i lični podaci bit će sigurno pohranjeni na našim serverima. Vaši audio zapisi i transkripti se obrađuju od strane AI usluga trećih strana (uključujući Deepgram za transkripciju i OpenAI za analizu) kako bi vam pružili uvide pokretane vještačkom inteligencijom i omogućili sve funkcije aplikacije.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Započnite razgovor da kreirate zadatak.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Dostignut je limit sažetaka", "summaryLimitBody": "U posljednjih sat vremena ste više puta ponovo generisali sažetke. Pokušajte ponovo kasnije.", "summaryFailedTitle": "Sažimanje nije uspjelo", - "summaryFailedBody": "Nešto je pošlo po zlu prilikom sažimanja ovog razgovora." + "summaryFailedBody": "Nešto je pošlo po zlu prilikom sažimanja ovog razgovora.", + "consentShortMessage": "Omi koristi AI da vaše razgovore pretvori u bilješke. Možete ih izbrisati bilo kada.", + "consentAiProviders": "Obrađuje se pomoću {providers}." } diff --git a/app/lib/l10n/app_ca.arb b/app/lib/l10n/app_ca.arb index 6a6d77eaf51..9621482b9da 100644 --- a/app/lib/l10n/app_ca.arb +++ b/app/lib/l10n/app_ca.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Mostra addicional {index}", "durationSeconds": "Durada: {seconds} segons", "additionalSpeechSampleRemoved": "S'ha eliminat la mostra de veu addicional", - "consentDataMessage": "Continuant, les vostres converses, enregistraments i informació personal s'emmagatzemaran de manera segura als nostres servidors. Els vostres enregistraments d'àudio i transcripcions són processats per serveis d'IA de tercers (incloent Deepgram per a la transcripció i OpenAI per a l'anàlisi) per proporcionar-vos informació impulsada per IA i habilitar totes les funcions de l'aplicació.", "tasksEmptyStateMessage": "Inicia una conversa per crear una tasca.", "clearChatAction": "Esborrar el xat", "enableApps": "Activar aplicacions", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "S'ha arribat al límit de resums", "summaryLimitBody": "Has tornat a generar diversos resums durant l'última hora. Torna-ho a provar més tard.", "summaryFailedTitle": "No s'ha pogut resumir", - "summaryFailedBody": "Alguna cosa ha anat malament en resumir aquesta conversa." + "summaryFailedBody": "Alguna cosa ha anat malament en resumir aquesta conversa.", + "consentShortMessage": "Omi fa servir la IA per convertir les teves converses en notes. Les pots esborrar quan vulguis.", + "consentAiProviders": "Processat amb {providers}." } diff --git a/app/lib/l10n/app_cs.arb b/app/lib/l10n/app_cs.arb index 462e4f34a82..b9e8ee0628a 100644 --- a/app/lib/l10n/app_cs.arb +++ b/app/lib/l10n/app_cs.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Další vzorek {index}", "durationSeconds": "Délka: {seconds} sekund", "additionalSpeechSampleRemoved": "Další hlasový vzorek byl odstraněn", - "consentDataMessage": "Pokračováním budou vaše konverzace, nahrávky a osobní údaje bezpečně uloženy na našich serverech. Vaše audio nahrávky a přepisy jsou zpracovávány AI službami třetích stran (včetně Deepgram pro přepis a OpenAI pro analýzu), aby vám poskytly poznatky založené na AI a umožnily všechny funkce aplikace.", "tasksEmptyStateMessage": "Začněte konverzaci a vytvořte úkol.", "clearChatAction": "Vymazat chat", "enableApps": "Povolit aplikace", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Dosažen limit shrnutí", "summaryLimitBody": "Za poslední hodinu jste několikrát znovu vygenerovali shrnutí. Zkuste to později.", "summaryFailedTitle": "Shrnutí se nezdařilo", - "summaryFailedBody": "Při shrnování této konverzace se něco pokazilo." + "summaryFailedBody": "Při shrnování této konverzace se něco pokazilo.", + "consentShortMessage": "Omi pomocí AI mění vaše konverzace v poznámky. Kdykoli je můžete smazat.", + "consentAiProviders": "Zpracovává {providers}." } diff --git a/app/lib/l10n/app_da.arb b/app/lib/l10n/app_da.arb index f6cb1d3b3df..81fb856aa34 100644 --- a/app/lib/l10n/app_da.arb +++ b/app/lib/l10n/app_da.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Yderligere prøve {index}", "durationSeconds": "Varighed: {seconds} sekunder", "additionalSpeechSampleRemoved": "Yderligere stemmeprøve fjernet", - "consentDataMessage": "Ved at fortsætte vil dine samtaler, optagelser og personlige oplysninger blive sikkert gemt på vores servere. Dine lydoptagelser og udskrifter behandles af tredjeparts AI-tjenester (herunder Deepgram til transskription og OpenAI til analyse) for at give dig AI-drevne indsigter og aktivere alle appfunktioner.", "tasksEmptyStateMessage": "Start en samtale for at oprette en opgave.", "clearChatAction": "Ryd chat", "enableApps": "Aktivér apps", @@ -4263,5 +4262,7 @@ "summaryLimitTitle": "Grænsen for opsummeringer er nået", "summaryLimitBody": "Du har genereret flere opsummeringer igen inden for den seneste time. Prøv igen senere.", "summaryFailedTitle": "Kunne ikke opsummere", - "summaryFailedBody": "Noget gik galt under opsummeringen af denne samtale." + "summaryFailedBody": "Noget gik galt under opsummeringen af denne samtale.", + "consentShortMessage": "Omi bruger AI til at gøre dine samtaler til noter. Du kan slette dem når som helst.", + "consentAiProviders": "Behandles med {providers}." } diff --git a/app/lib/l10n/app_de.arb b/app/lib/l10n/app_de.arb index c0c598abc73..36e801ab3c0 100644 --- a/app/lib/l10n/app_de.arb +++ b/app/lib/l10n/app_de.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Zusätzliche Probe {index}", "durationSeconds": "Dauer: {seconds} Sekunden", "additionalSpeechSampleRemoved": "Zusätzliche Sprachprobe entfernt", - "consentDataMessage": "Durch Fortfahren werden Ihre Gespräche, Aufnahmen und persönlichen Daten sicher auf unseren Servern gespeichert. Ihre Audioaufnahmen und Transkripte werden von KI-Diensten Dritter verarbeitet (einschließlich Deepgram für die Transkription und OpenAI für die Analyse), um Ihnen KI-gestützte Erkenntnisse zu liefern und alle App-Funktionen zu ermöglichen.", "tasksEmptyStateMessage": "Starte ein Gespräch, um eine Aufgabe zu erstellen.", "clearChatAction": "Chat löschen", "enableApps": "Apps aktivieren", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Limit für Zusammenfassungen erreicht", "summaryLimitBody": "Du hast in der letzten Stunde mehrere Zusammenfassungen neu erstellt. Versuche es später erneut.", "summaryFailedTitle": "Zusammenfassung fehlgeschlagen", - "summaryFailedBody": "Beim Zusammenfassen dieses Gesprächs ist ein Fehler aufgetreten." + "summaryFailedBody": "Beim Zusammenfassen dieses Gesprächs ist ein Fehler aufgetreten.", + "consentShortMessage": "Omi macht mit KI aus deinen Gesprächen Notizen. Du kannst sie jederzeit löschen.", + "consentAiProviders": "Verarbeitet mit {providers}." } diff --git a/app/lib/l10n/app_el.arb b/app/lib/l10n/app_el.arb index 45ba4f95849..852b2834e6f 100644 --- a/app/lib/l10n/app_el.arb +++ b/app/lib/l10n/app_el.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Πρόσθετο δείγμα {index}", "durationSeconds": "Διάρκεια: {seconds} δευτερόλεπτα", "additionalSpeechSampleRemoved": "Το πρόσθετο δείγμα ομιλίας αφαιρέθηκε", - "consentDataMessage": "Συνεχίζοντας, οι συνομιλίες, οι εγγραφές και τα προσωπικά σας στοιχεία θα αποθηκευτούν με ασφάλεια στους διακομιστές μας. Οι ηχογραφήσεις και τα μεταγραφές σας επεξεργάζονται από υπηρεσίες τεχνητής νοημοσύνης τρίτων (συμπεριλαμβανομένων των Deepgram για μεταγραφή και OpenAI για ανάλυση) για να σας παρέχουν γνώσεις βασισμένες σε AI και να ενεργοποιήσουν όλες τις λειτουργίες της εφαρμογής.", "tasksEmptyStateMessage": "Ξεκινήστε μια συνομιλία για να δημιουργήσετε μια εργασία.", "clearChatAction": "Διαγραφή συνομιλίας", "enableApps": "Ενεργοποίηση εφαρμογών", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Συμπληρώθηκε το όριο συνόψεων", "summaryLimitBody": "Δημιουργήσατε ξανά αρκετές συνόψεις την τελευταία ώρα. Δοκιμάστε ξανά αργότερα.", "summaryFailedTitle": "Δεν ήταν δυνατή η σύνοψη", - "summaryFailedBody": "Παρουσιάστηκε πρόβλημα κατά τη σύνοψη αυτής της συνομιλίας." + "summaryFailedBody": "Παρουσιάστηκε πρόβλημα κατά τη σύνοψη αυτής της συνομιλίας.", + "consentShortMessage": "Το Omi χρησιμοποιεί AI για να μετατρέπει τις συνομιλίες σου σε σημειώσεις. Μπορείς να τις διαγράψεις οποιαδήποτε στιγμή.", + "consentAiProviders": "Επεξεργασία μέσω {providers}." } diff --git a/app/lib/l10n/app_en.arb b/app/lib/l10n/app_en.arb index 4172b7d00e4..48591080a81 100644 --- a/app/lib/l10n/app_en.arb +++ b/app/lib/l10n/app_en.arb @@ -5867,10 +5867,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "By continuing, your conversations, recordings, and personal information will be securely stored on our servers. Your audio recordings and transcripts are processed by third-party AI services — Deepgram for transcription and OpenAI for analysis — to provide you with AI-powered insights and enable all app features.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Start a conversation to create a task.", "@tasksEmptyStateMessage": { "description": "Guidance on the empty Tasks tab: start a conversation to create a task." @@ -16665,5 +16661,19 @@ "summaryFailedBody": "Something went wrong while summarizing this conversation.", "@summaryFailedBody": { "description": "Body when summarizing the conversation failed for an unknown reason." + }, + "consentShortMessage": "Omi uses AI to turn your conversations into notes. You can delete them anytime.", + "@consentShortMessage": { + "description": "Onboarding data & privacy consent: one-line summary of storage and AI processing" + }, + "consentAiProviders": "Processed with {providers}.", + "@consentAiProviders": { + "description": "Onboarding consent: names the third-party AI providers (brand names, not translated)", + "placeholders": { + "providers": { + "type": "String", + "example": "Deepgram, OpenAI" + } + } } } diff --git a/app/lib/l10n/app_es.arb b/app/lib/l10n/app_es.arb index 14956efe8e9..a3c0c6adea6 100644 --- a/app/lib/l10n/app_es.arb +++ b/app/lib/l10n/app_es.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Muestra adicional {index}", "durationSeconds": "Duración: {seconds} segundos", "additionalSpeechSampleRemoved": "Muestra de voz adicional eliminada", - "consentDataMessage": "Al continuar, tus conversaciones, grabaciones e información personal se almacenarán de forma segura en nuestros servidores. Tus grabaciones de audio y transcripciones son procesadas por servicios de IA de terceros (incluyendo Deepgram para transcripción y OpenAI para análisis) para proporcionarte información impulsada por IA y habilitar todas las funciones de la aplicación.", "tasksEmptyStateMessage": "Inicia una conversación para crear una tarea.", "clearChatAction": "Borrar chat", "enableApps": "Habilitar apps", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Límite de resúmenes alcanzado", "summaryLimitBody": "Has regenerado varios resúmenes en la última hora. Inténtalo de nuevo más tarde.", "summaryFailedTitle": "No se pudo resumir", - "summaryFailedBody": "Algo salió mal al resumir esta conversación." + "summaryFailedBody": "Algo salió mal al resumir esta conversación.", + "consentShortMessage": "Omi usa IA para convertir tus conversaciones en notas. Puedes eliminarlas cuando quieras.", + "consentAiProviders": "Procesado con {providers}." } diff --git a/app/lib/l10n/app_et.arb b/app/lib/l10n/app_et.arb index 165464ec733..95b08bf51f6 100644 --- a/app/lib/l10n/app_et.arb +++ b/app/lib/l10n/app_et.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Lisanäidis {index}", "durationSeconds": "Kestus: {seconds} sekundit", "additionalSpeechSampleRemoved": "Lisakõnenäidis eemaldatud", - "consentDataMessage": "Jätkates salvestatakse teie vestlused, salvestised ja isikuandmed turvaliselt meie serverites. Teie helisalvestisi ja transkriptsioone töötlevad kolmandate osapoolte AI-teenused (sealhulgas Deepgram transkriptsiooni ja OpenAI analüüsi jaoks), et pakkuda teile AI-põhiseid ülevaateid ja võimaldada kõiki rakenduse funktsioone.", "tasksEmptyStateMessage": "Ülesande loomiseks alusta vestlust.", "clearChatAction": "Tühjenda vestlus", "enableApps": "Luba rakendused", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Kokkuvõtete limiit on täis", "summaryLimitBody": "Oled viimase tunni jooksul mitu kokkuvõtet uuesti loonud. Proovi hiljem uuesti.", "summaryFailedTitle": "Kokkuvõtet ei õnnestunud teha", - "summaryFailedBody": "Selle vestluse kokkuvõtte tegemisel läks midagi valesti." + "summaryFailedBody": "Selle vestluse kokkuvõtte tegemisel läks midagi valesti.", + "consentShortMessage": "Omi muudab tehisintellekti abil sinu vestlused märkmeteks. Saad need igal ajal kustutada.", + "consentAiProviders": "Töödeldakse teenustega {providers}." } diff --git a/app/lib/l10n/app_fa.arb b/app/lib/l10n/app_fa.arb index 733ee10d73b..e4979a9f1c8 100644 --- a/app/lib/l10n/app_fa.arb +++ b/app/lib/l10n/app_fa.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "با ادامه دادن، مکالمات، ضبط‌ها و اطلاعات شخصی شما به طور ایمن در سرورهای ما ذخیره می‌شود. ضبط‌های صوتی و رونوشت‌های شما توسط سرویس‌های هوش مصنوعی شخص ثالث (از جمله Deepgram برای رونویسی و OpenAI برای تحلیل) پردازش می‌شوند تا بینش‌های مبتنی بر هوش مصنوعی را به شما ارائه دهند و تمام ویژگی‌های برنامه را فعال کنند.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "برای ایجاد یک کار، گفتگو را شروع کنید.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "به سقف خلاصه‌ها رسیدید", "summaryLimitBody": "در یک ساعت گذشته چندین خلاصه را دوباره ایجاد کرده‌اید. بعداً دوباره امتحان کنید.", "summaryFailedTitle": "خلاصه‌سازی انجام نشد", - "summaryFailedBody": "هنگام خلاصه‌سازی این گفتگو مشکلی پیش آمد." + "summaryFailedBody": "هنگام خلاصه‌سازی این گفتگو مشکلی پیش آمد.", + "consentShortMessage": "Omi با هوش مصنوعی گفتگوهای شما را به یادداشت تبدیل می‌کند. هر زمان بخواهید می‌توانید آن‌ها را حذف کنید.", + "consentAiProviders": "پردازش با {providers}." } diff --git a/app/lib/l10n/app_fi.arb b/app/lib/l10n/app_fi.arb index fbcc3d57a1c..538bfb00f3c 100644 --- a/app/lib/l10n/app_fi.arb +++ b/app/lib/l10n/app_fi.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Lisänäyte {index}", "durationSeconds": "Kesto: {seconds} sekuntia", "additionalSpeechSampleRemoved": "Lisäpuhenäyte poistettu", - "consentDataMessage": "Jatkamalla keskustelusi, tallenteet ja henkilötietosi tallennetaan turvallisesti palvelimillemme. Äänitallenteitasi ja transkriptioitasi käsittelevät kolmannen osapuolen tekoälypalvelut (mukaan lukien Deepgram transkriptiota ja OpenAI analyysiä varten) tarjotaksemme sinulle tekoälypohjaisia oivalluksia ja mahdollistaaksemme kaikki sovelluksen ominaisuudet.", "tasksEmptyStateMessage": "Aloita keskustelu luodaksesi tehtävän.", "clearChatAction": "Tyhjennä keskustelu", "enableApps": "Ota sovellukset käyttöön", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Tiivistelmien raja saavutettu", "summaryLimitBody": "Olet luonut useita tiivistelmiä uudelleen viimeisen tunnin aikana. Yritä myöhemmin uudelleen.", "summaryFailedTitle": "Tiivistäminen epäonnistui", - "summaryFailedBody": "Jokin meni vikaan tätä keskustelua tiivistettäessä." + "summaryFailedBody": "Jokin meni vikaan tätä keskustelua tiivistettäessä.", + "consentShortMessage": "Omi tekee keskusteluistasi muistiinpanoja tekoälyn avulla. Voit poistaa ne milloin tahansa.", + "consentAiProviders": "Käsittely: {providers}." } diff --git a/app/lib/l10n/app_fr.arb b/app/lib/l10n/app_fr.arb index b824e0baed2..54f3f11eefd 100644 --- a/app/lib/l10n/app_fr.arb +++ b/app/lib/l10n/app_fr.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Échantillon supplémentaire {index}", "durationSeconds": "Durée : {seconds} secondes", "additionalSpeechSampleRemoved": "Échantillon vocal supplémentaire supprimé", - "consentDataMessage": "En continuant, vos conversations, enregistrements et informations personnelles seront stockés en toute sécurité sur nos serveurs. Vos enregistrements audio et transcriptions sont traités par des services d'IA tiers (notamment Deepgram pour la transcription et OpenAI pour l'analyse) afin de vous fournir des informations alimentées par l'IA et d'activer toutes les fonctionnalités de l'application.", "tasksEmptyStateMessage": "Démarrez une conversation pour créer une tâche.", "clearChatAction": "Effacer le chat", "enableApps": "Activer les applications", @@ -4256,5 +4255,7 @@ "summaryLimitTitle": "Limite de résumés atteinte", "summaryLimitBody": "Vous avez régénéré plusieurs résumés au cours de la dernière heure. Réessayez plus tard.", "summaryFailedTitle": "Impossible de résumer", - "summaryFailedBody": "Un problème est survenu lors du résumé de cette conversation." + "summaryFailedBody": "Un problème est survenu lors du résumé de cette conversation.", + "consentShortMessage": "Omi utilise l'IA pour transformer vos conversations en notes. Vous pouvez les supprimer à tout moment.", + "consentAiProviders": "Traité avec {providers}." } diff --git a/app/lib/l10n/app_he.arb b/app/lib/l10n/app_he.arb index d3a868df93a..d473bc3d36d 100644 --- a/app/lib/l10n/app_he.arb +++ b/app/lib/l10n/app_he.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "בהמשך, השיחות, ההקלטות והמידע האישי שלך יאוחסנו בצורה מאובטחת בשרתים שלנו. הקלטות האודיו והתמלולים שלך מעובדים על ידי שירותי AI של צד שלישי (כולל Deepgram לתמלול ו-OpenAI לניתוח) כדי לספק לך תובנות מבוססות AI ולאפשר את כל תכונות האפליקציה.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "התחילו שיחה כדי ליצור משימה.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "הגעת למגבלת הסיכומים", "summaryLimitBody": "יצרת מחדש כמה סיכומים בשעה האחרונה. אפשר לנסות שוב מאוחר יותר.", "summaryFailedTitle": "לא ניתן היה לסכם", - "summaryFailedBody": "משהו השתבש בעת סיכום השיחה הזו." + "summaryFailedBody": "משהו השתבש בעת סיכום השיחה הזו.", + "consentShortMessage": "Omi משתמש בבינה מלאכותית כדי להפוך את השיחות שלך להערות. אפשר למחוק אותן בכל עת.", + "consentAiProviders": "מעובד באמצעות {providers}." } diff --git a/app/lib/l10n/app_hi.arb b/app/lib/l10n/app_hi.arb index 9a60ebd91e9..01dd9082297 100644 --- a/app/lib/l10n/app_hi.arb +++ b/app/lib/l10n/app_hi.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "अतिरिक्त नमूना {index}", "durationSeconds": "अवधि: {seconds} सेकंड", "additionalSpeechSampleRemoved": "अतिरिक्त भाषण नमूना हटाया गया", - "consentDataMessage": "जारी रखने पर, आपकी बातचीत, रिकॉर्डिंग और व्यक्तिगत जानकारी हमारे सर्वर पर सुरक्षित रूप से संग्रहीत की जाएगी। आपकी ऑडियो रिकॉर्डिंग और ट्रांसक्रिप्ट तीसरे पक्ष की AI सेवाओं (ट्रांसक्रिप्शन के लिए Deepgram और विश्लेषण के लिए OpenAI सहित) द्वारा संसाधित किए जाते हैं ताकि आपको AI-संचालित अंतर्दृष्टि प्रदान की जा सके और सभी ऐप सुविधाएँ सक्षम की जा सकें।", "tasksEmptyStateMessage": "टास्क बनाने के लिए बातचीत शुरू करें।", "clearChatAction": "चैट साफ़ करें", "enableApps": "ऐप्स सक्षम करें", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "सारांश की सीमा पूरी हो गई", "summaryLimitBody": "आपने पिछले एक घंटे में कई सारांश दोबारा बनाए हैं। बाद में फिर से कोशिश करें।", "summaryFailedTitle": "सारांश नहीं बन सका", - "summaryFailedBody": "इस बातचीत का सारांश बनाते समय कुछ गलत हो गया।" + "summaryFailedBody": "इस बातचीत का सारांश बनाते समय कुछ गलत हो गया।", + "consentShortMessage": "Omi AI की मदद से आपकी बातचीत को नोट्स में बदलता है। आप उन्हें कभी भी हटा सकते हैं।", + "consentAiProviders": "{providers} के साथ प्रोसेस किया जाता है।" } diff --git a/app/lib/l10n/app_hr.arb b/app/lib/l10n/app_hr.arb index 96061bf6e9f..aab5e9fd6f4 100644 --- a/app/lib/l10n/app_hr.arb +++ b/app/lib/l10n/app_hr.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Nastavljanjem, vaši razgovori, snimke i osobni podaci bit će sigurno pohranjeni na našim poslužiteljima. Vaši audio zapisi i transkripti obrađuju se od strane AI usluga trećih strana (uključujući Deepgram za transkripciju i OpenAI za analizu) kako bi vam pružili uvide pokretane umjetnom inteligencijom i omogućili sve značajke aplikacije.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Započnite razgovor da biste stvorili zadatak.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Dosegnuto je ograničenje sažetaka", "summaryLimitBody": "U posljednjih sat vremena više ste puta ponovno generirali sažetke. Pokušajte ponovno kasnije.", "summaryFailedTitle": "Sažimanje nije uspjelo", - "summaryFailedBody": "Došlo je do pogreške pri sažimanju ovog razgovora." + "summaryFailedBody": "Došlo je do pogreške pri sažimanju ovog razgovora.", + "consentShortMessage": "Omi koristi AI kako bi vaše razgovore pretvorio u bilješke. Možete ih izbrisati bilo kada.", + "consentAiProviders": "Obrađuje se pomoću {providers}." } diff --git a/app/lib/l10n/app_hu.arb b/app/lib/l10n/app_hu.arb index 531d82d2e75..0847b09c50d 100644 --- a/app/lib/l10n/app_hu.arb +++ b/app/lib/l10n/app_hu.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "További minta {index}", "durationSeconds": "Időtartam: {seconds} másodperc", "additionalSpeechSampleRemoved": "További hangminta eltávolítva", - "consentDataMessage": "A folytatással beszélgetéseit, felvételeit és személyes adatait biztonságosan tároljuk szervereinken. Hangfelvételeit és átiratait harmadik féltől származó AI szolgáltatások dolgozzák fel (beleértve a Deepgramot az átíráshoz és az OpenAI-t az elemzéshez), hogy AI-alapú betekintéseket nyújtsunk Önnek és az alkalmazás összes funkcióját biztosítsuk.", "tasksEmptyStateMessage": "Feladat létrehozásához kezdj beszélgetést.", "clearChatAction": "Chat törlése", "enableApps": "Alkalmazások engedélyezése", @@ -4317,5 +4316,7 @@ "summaryLimitTitle": "Elérted az összefoglalók korlátját", "summaryLimitBody": "Az elmúlt órában több összefoglalót is újrageneráltál. Próbáld újra később.", "summaryFailedTitle": "Nem sikerült összefoglalni", - "summaryFailedBody": "Hiba történt a beszélgetés összefoglalása közben." + "summaryFailedBody": "Hiba történt a beszélgetés összefoglalása közben.", + "consentShortMessage": "Az Omi mesterséges intelligenciával jegyzetekké alakítja a beszélgetéseidet. Bármikor törölheted őket.", + "consentAiProviders": "Feldolgozás: {providers}." } diff --git a/app/lib/l10n/app_id.arb b/app/lib/l10n/app_id.arb index f1b62031783..8270cf04032 100644 --- a/app/lib/l10n/app_id.arb +++ b/app/lib/l10n/app_id.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Sampel tambahan {index}", "durationSeconds": "Durasi: {seconds} detik", "additionalSpeechSampleRemoved": "Sampel suara tambahan dihapus", - "consentDataMessage": "Dengan melanjutkan, percakapan, rekaman, dan informasi pribadi Anda akan disimpan dengan aman di server kami. Rekaman audio dan transkrip Anda diproses oleh layanan AI pihak ketiga (termasuk Deepgram untuk transkripsi dan OpenAI untuk analisis) untuk memberikan Anda wawasan berbasis AI dan mengaktifkan semua fitur aplikasi.", "tasksEmptyStateMessage": "Mulai percakapan untuk membuat tugas.", "clearChatAction": "Hapus obrolan", "enableApps": "Aktifkan aplikasi", @@ -4256,5 +4255,7 @@ "summaryLimitTitle": "Batas ringkasan tercapai", "summaryLimitBody": "Anda telah membuat ulang beberapa ringkasan dalam satu jam terakhir. Coba lagi nanti.", "summaryFailedTitle": "Tidak dapat meringkas", - "summaryFailedBody": "Terjadi kesalahan saat meringkas percakapan ini." + "summaryFailedBody": "Terjadi kesalahan saat meringkas percakapan ini.", + "consentShortMessage": "Omi menggunakan AI untuk mengubah percakapanmu menjadi catatan. Kamu bisa menghapusnya kapan saja.", + "consentAiProviders": "Diproses dengan {providers}." } diff --git a/app/lib/l10n/app_it.arb b/app/lib/l10n/app_it.arb index 9615c49d5f5..52f654c44a3 100644 --- a/app/lib/l10n/app_it.arb +++ b/app/lib/l10n/app_it.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Campione aggiuntivo {index}", "durationSeconds": "Durata: {seconds} secondi", "additionalSpeechSampleRemoved": "Campione vocale aggiuntivo rimosso", - "consentDataMessage": "Continuando, le tue conversazioni, registrazioni e informazioni personali saranno archiviate in modo sicuro sui nostri server. Le tue registrazioni audio e trascrizioni vengono elaborate da servizi AI di terze parti (inclusi Deepgram per la trascrizione e OpenAI per l'analisi) per fornirti approfondimenti basati sull'AI e abilitare tutte le funzionalità dell'app.", "tasksEmptyStateMessage": "Avvia una conversazione per creare un'attività.", "clearChatAction": "Cancella chat", "enableApps": "Abilita app", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Limite di riassunti raggiunto", "summaryLimitBody": "Hai rigenerato diversi riassunti nell'ultima ora. Riprova più tardi.", "summaryFailedTitle": "Impossibile riassumere", - "summaryFailedBody": "Si è verificato un problema durante il riassunto di questa conversazione." + "summaryFailedBody": "Si è verificato un problema durante il riassunto di questa conversazione.", + "consentShortMessage": "Omi usa l'IA per trasformare le tue conversazioni in note. Puoi eliminarle quando vuoi.", + "consentAiProviders": "Elaborato con {providers}." } diff --git a/app/lib/l10n/app_ja.arb b/app/lib/l10n/app_ja.arb index 290d833be9a..1107b009860 100644 --- a/app/lib/l10n/app_ja.arb +++ b/app/lib/l10n/app_ja.arb @@ -1505,7 +1505,6 @@ "additionalSampleIndex": "追加サンプル {index}", "durationSeconds": "長さ: {seconds} 秒", "additionalSpeechSampleRemoved": "追加の音声サンプルを削除しました", - "consentDataMessage": "続行することで、会話、録音、個人情報は安全に当社のサーバーに保存されます。音声録音と文字起こしは、サードパーティのAIサービス(文字起こし用のDeepgramと分析用のOpenAIを含む)によって処理され、AI駆動のインサイトを提供し、すべてのアプリ機能を有効にします。", "tasksEmptyStateMessage": "会話を始めてタスクを作成しましょう。", "clearChatAction": "チャットを消去", "enableApps": "アプリを有効化", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "要約の上限に達しました", "summaryLimitBody": "過去 1 時間に何度も要約を再生成しました。しばらくしてからもう一度お試しください。", "summaryFailedTitle": "要約できませんでした", - "summaryFailedBody": "この会話の要約中に問題が発生しました。" + "summaryFailedBody": "この会話の要約中に問題が発生しました。", + "consentShortMessage": "OmiはAIで会話をメモにまとめます。メモはいつでも削除できます。", + "consentAiProviders": "{providers} で処理されます。" } diff --git a/app/lib/l10n/app_kn.arb b/app/lib/l10n/app_kn.arb index ce862f1e7b9..d17f5594896 100644 --- a/app/lib/l10n/app_kn.arb +++ b/app/lib/l10n/app_kn.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "ಮುಂದುವರಿಯುವ ಮೂಲಕ, ನಿಮ್ಮ ಸಂಭಾಷಣೆಗಳು, ರೆಕಾರ್ಡಿಂಗ್‌ಗಳು ಮತ್ತು ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ನಮ್ಮ ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಆಡಿಯೋ ರೆಕಾರ್ಡಿಂಗ್‌ಗಳು ಮತ್ತು ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಮೂರನೇ ವ್ಯಕ್ತಿಯ AI ಸೇವೆಗಳಿಂದ ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ (ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಷನ್‌ಗಾಗಿ Deepgram ಮತ್ತು ವಿಶ್ಲೇಷಣೆಗಾಗಿ OpenAI ಸೇರಿದಂತೆ) AI-ಚಾಲಿತ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸಲು ಮತ್ತು ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "ಕಾರ್ಯವನ್ನು ರಚಿಸಲು ಸಂಭಾಷಣೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "ಸಾರಾಂಶ ಮಿತಿ ತಲುಪಿದೆ", "summaryLimitBody": "ಕಳೆದ ಒಂದು ಗಂಟೆಯಲ್ಲಿ ನೀವು ಹಲವು ಸಾರಾಂಶಗಳನ್ನು ಮರುರಚಿಸಿದ್ದೀರಿ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", "summaryFailedTitle": "ಸಾರಾಂಶ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ", - "summaryFailedBody": "ಈ ಸಂಭಾಷಣೆಯ ಸಾರಾಂಶ ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ." + "summaryFailedBody": "ಈ ಸಂಭಾಷಣೆಯ ಸಾರಾಂಶ ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ.", + "consentShortMessage": "Omi AI ಬಳಸಿ ನಿಮ್ಮ ಸಂಭಾಷಣೆಗಳನ್ನು ಟಿಪ್ಪಣಿಗಳಾಗಿ ಮಾಡುತ್ತದೆ. ಯಾವಾಗ ಬೇಕಾದರೂ ಅಳಿಸಬಹುದು.", + "consentAiProviders": "{providers} ಮೂಲಕ ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ." } diff --git a/app/lib/l10n/app_ko.arb b/app/lib/l10n/app_ko.arb index 04582dbc9b7..15252990b46 100644 --- a/app/lib/l10n/app_ko.arb +++ b/app/lib/l10n/app_ko.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "추가 샘플 {index}", "durationSeconds": "길이: {seconds}초", "additionalSpeechSampleRemoved": "추가 음성 샘플이 삭제되었습니다", - "consentDataMessage": "계속하면 대화, 녹음 및 개인 정보가 서버에 안전하게 저장됩니다. 오디오 녹음 및 텍스트 변환은 제3자 AI 서비스(전사를 위한 Deepgram 및 분석을 위한 OpenAI 포함)에 의해 처리되어 AI 기반 인사이트를 제공하고 모든 앱 기능을 활성화합니다.", "tasksEmptyStateMessage": "대화를 시작하여 할 일을 만드세요.", "clearChatAction": "채팅 삭제", "enableApps": "앱 활성화", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "요약 한도 도달", "summaryLimitBody": "지난 1시간 동안 요약을 여러 번 다시 생성했습니다. 나중에 다시 시도해 주세요.", "summaryFailedTitle": "요약하지 못함", - "summaryFailedBody": "이 대화를 요약하는 중 문제가 발생했습니다." + "summaryFailedBody": "이 대화를 요약하는 중 문제가 발생했습니다.", + "consentShortMessage": "Omi는 AI로 대화를 메모로 정리합니다. 언제든지 삭제할 수 있습니다.", + "consentAiProviders": "{providers}(으)로 처리됩니다." } diff --git a/app/lib/l10n/app_localizations.dart b/app/lib/l10n/app_localizations.dart index ab3270f79ae..7b40f2acb09 100644 --- a/app/lib/l10n/app_localizations.dart +++ b/app/lib/l10n/app_localizations.dart @@ -9321,12 +9321,6 @@ abstract class AppLocalizations { /// **'Additional Speech Sample Removed'** String get additionalSpeechSampleRemoved; - /// Consent message explaining how user data will be stored and used - /// - /// In en, this message translates to: - /// **'By continuing, your conversations, recordings, and personal information will be securely stored on our servers. Your audio recordings and transcripts are processed by third-party AI services — Deepgram for transcription and OpenAI for analysis — to provide you with AI-powered insights and enable all app features.'** - String get consentDataMessage; - /// Guidance on the empty Tasks tab: start a conversation to create a task. /// /// In en, this message translates to: @@ -24518,6 +24512,18 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Something went wrong while summarizing this conversation.'** String get summaryFailedBody; + + /// Onboarding data & privacy consent: one-line summary of storage and AI processing + /// + /// In en, this message translates to: + /// **'Omi uses AI to turn your conversations into notes. You can delete them anytime.'** + String get consentShortMessage; + + /// Onboarding consent: names the third-party AI providers (brand names, not translated) + /// + /// In en, this message translates to: + /// **'Processed with {providers}.'** + String consentAiProviders(String providers); } class _AppLocalizationsDelegate extends LocalizationsDelegate { diff --git a/app/lib/l10n/app_localizations_ar.dart b/app/lib/l10n/app_localizations_ar.dart index 6afda2074f5..4a8ba98d8e8 100644 --- a/app/lib/l10n/app_localizations_ar.dart +++ b/app/lib/l10n/app_localizations_ar.dart @@ -4868,10 +4868,6 @@ class AppLocalizationsAr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'تمت إزالة عينة الكلام الإضافية'; - @override - String get consentDataMessage => - 'بالمتابعة، سيتم تخزين محادثاتك وتسجيلاتك ومعلوماتك الشخصية بشكل آمن على خوادمنا. تتم معالجة تسجيلاتك الصوتية ونصوصك بواسطة خدمات ذكاء اصطناعي تابعة لجهات خارجية (بما في ذلك Deepgram للنسخ و OpenAI للتحليل) لتزويدك برؤى مدعومة بالذكاء الاصطناعي وتمكين جميع ميزات التطبيق.'; - @override String get tasksEmptyStateMessage => 'ابدأ محادثة لإنشاء مهمة.'; @@ -13699,4 +13695,12 @@ class AppLocalizationsAr extends AppLocalizations { @override String get summaryFailedBody => 'حدث خطأ ما أثناء تلخيص هذه المحادثة.'; + + @override + String get consentShortMessage => 'يستخدم Omi الذكاء الاصطناعي لتحويل محادثاتك إلى ملاحظات. يمكنك حذفها في أي وقت.'; + + @override + String consentAiProviders(String providers) { + return 'تتم المعالجة بواسطة $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_be.dart b/app/lib/l10n/app_localizations_be.dart index 1f3eff5e3d3..797c3099b84 100644 --- a/app/lib/l10n/app_localizations_be.dart +++ b/app/lib/l10n/app_localizations_be.dart @@ -4918,10 +4918,6 @@ class AppLocalizationsBe extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Дадатковы Ўзор Мовы Выдалены'; - @override - String get consentDataMessage => - 'Працягваючы, вашы размовы, запісы і асабістая інфармацыя будуць надзейна захоўвацца на нашых серверах. Вашы аўдыязапісы і транскрыпцыі апрацоўваюцца староннімі сэрвісамі ШІ (уключаючы Deepgram для транскрыпцыі і OpenAI для аналізу), каб забяспечыць вас аналітыкай на аснове ШІ і ўключыць усе функцыі праграмы.'; - @override String get tasksEmptyStateMessage => 'Пачніце размову, каб стварыць задачу.'; @@ -13808,4 +13804,13 @@ class AppLocalizationsBe extends AppLocalizations { @override String get summaryFailedBody => 'Падчас падсумоўвання гэтай размовы нешта пайшло не так.'; + + @override + String get consentShortMessage => + 'Omi з дапамогай ШІ ператварае вашы размовы ў нататкі. Іх можна выдаліць у любы момант.'; + + @override + String consentAiProviders(String providers) { + return 'Апрацоўка: $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_bg.dart b/app/lib/l10n/app_localizations_bg.dart index e65697ffded..d6d9afef937 100644 --- a/app/lib/l10n/app_localizations_bg.dart +++ b/app/lib/l10n/app_localizations_bg.dart @@ -4923,10 +4923,6 @@ class AppLocalizationsBg extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Допълнителната гласова проба е премахната'; - @override - String get consentDataMessage => - 'С продължаването вашите разговори, записи и лична информация ще бъдат сигурно съхранени на нашите сървъри. Вашите аудиозаписи и транскрипции се обработват от AI услуги на трети страни (включително Deepgram за транскрипция и OpenAI за анализ), за да ви предоставят прозрения, базирани на AI, и да активират всички функции на приложението.'; - @override String get tasksEmptyStateMessage => 'Започнете разговор, за да създадете задача.'; @@ -13822,4 +13818,13 @@ class AppLocalizationsBg extends AppLocalizations { @override String get summaryFailedBody => 'Нещо се обърка при обобщаването на този разговор.'; + + @override + String get consentShortMessage => + 'Omi използва ИИ, за да превърне разговорите ви в бележки. Можете да ги изтриете по всяко време.'; + + @override + String consentAiProviders(String providers) { + return 'Обработва се с $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_bn.dart b/app/lib/l10n/app_localizations_bn.dart index a99ff764227..2251ce46066 100644 --- a/app/lib/l10n/app_localizations_bn.dart +++ b/app/lib/l10n/app_localizations_bn.dart @@ -4912,10 +4912,6 @@ class AppLocalizationsBn extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'অতিরিক্ত বক্তৃতা নমুনা সরানো হয়েছে'; - @override - String get consentDataMessage => - 'চালিয়ে যাওয়ার মাধ্যমে, আপনার কথোপকথন, রেকর্ডিং এবং ব্যক্তিগত তথ্য আমাদের সার্ভারে নিরাপদে সংরক্ষণ করা হবে। আপনার অডিও রেকর্ডিং এবং ট্রান্সক্রিপ্ট তৃতীয় পক্ষের AI পরিষেবা দ্বারা প্রক্রিয়া করা হয় (ট্রান্সক্রিপশনের জন্য Deepgram এবং বিশ্লেষণের জন্য OpenAI সহ) যাতে আপনাকে AI-চালিত অন্তর্দৃষ্টি প্রদান করা যায় এবং সমস্ত অ্যাপ বৈশিষ্ট্য সক্ষম করা যায়।'; - @override String get tasksEmptyStateMessage => 'একটি কাজ তৈরি করতে কথোপকথন শুরু করুন।'; @@ -13771,4 +13767,12 @@ class AppLocalizationsBn extends AppLocalizations { @override String get summaryFailedBody => 'এই কথোপকথনের সারসংক্ষেপ করার সময় কিছু ভুল হয়েছে।'; + + @override + String get consentShortMessage => 'Omi AI ব্যবহার করে আপনার কথোপকথনকে নোটে পরিণত করে। যেকোনো সময় মুছে ফেলতে পারেন।'; + + @override + String consentAiProviders(String providers) { + return '$providers দিয়ে প্রক্রিয়া করা হয়।'; + } } diff --git a/app/lib/l10n/app_localizations_bs.dart b/app/lib/l10n/app_localizations_bs.dart index 91c5118dc4a..d4f13f83b43 100644 --- a/app/lib/l10n/app_localizations_bs.dart +++ b/app/lib/l10n/app_localizations_bs.dart @@ -4914,10 +4914,6 @@ class AppLocalizationsBs extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Dodatni uzorak govora je uklonjen'; - @override - String get consentDataMessage => - 'Nastavljanjem, vaši razgovori, snimke i lični podaci bit će sigurno pohranjeni na našim serverima. Vaši audio zapisi i transkripti se obrađuju od strane AI usluga trećih strana (uključujući Deepgram za transkripciju i OpenAI za analizu) kako bi vam pružili uvide pokretane vještačkom inteligencijom i omogućili sve funkcije aplikacije.'; - @override String get tasksEmptyStateMessage => 'Započnite razgovor da kreirate zadatak.'; @@ -13804,4 +13800,13 @@ class AppLocalizationsBs extends AppLocalizations { @override String get summaryFailedBody => 'Nešto je pošlo po zlu prilikom sažimanja ovog razgovora.'; + + @override + String get consentShortMessage => + 'Omi koristi AI da vaše razgovore pretvori u bilješke. Možete ih izbrisati bilo kada.'; + + @override + String consentAiProviders(String providers) { + return 'Obrađuje se pomoću $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_ca.dart b/app/lib/l10n/app_localizations_ca.dart index c96b8668871..e7153a73f9e 100644 --- a/app/lib/l10n/app_localizations_ca.dart +++ b/app/lib/l10n/app_localizations_ca.dart @@ -4935,10 +4935,6 @@ class AppLocalizationsCa extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'S\'ha eliminat la mostra de veu addicional'; - @override - String get consentDataMessage => - 'Continuant, les vostres converses, enregistraments i informació personal s\'emmagatzemaran de manera segura als nostres servidors. Els vostres enregistraments d\'àudio i transcripcions són processats per serveis d\'IA de tercers (incloent Deepgram per a la transcripció i OpenAI per a l\'anàlisi) per proporcionar-vos informació impulsada per IA i habilitar totes les funcions de l\'aplicació.'; - @override String get tasksEmptyStateMessage => 'Inicia una conversa per crear una tasca.'; @@ -13845,4 +13841,13 @@ class AppLocalizationsCa extends AppLocalizations { @override String get summaryFailedBody => 'Alguna cosa ha anat malament en resumir aquesta conversa.'; + + @override + String get consentShortMessage => + 'Omi fa servir la IA per convertir les teves converses en notes. Les pots esborrar quan vulguis.'; + + @override + String consentAiProviders(String providers) { + return 'Processat amb $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_cs.dart b/app/lib/l10n/app_localizations_cs.dart index 710a204c2b0..5f2f84147f7 100644 --- a/app/lib/l10n/app_localizations_cs.dart +++ b/app/lib/l10n/app_localizations_cs.dart @@ -4898,10 +4898,6 @@ class AppLocalizationsCs extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Další hlasový vzorek byl odstraněn'; - @override - String get consentDataMessage => - 'Pokračováním budou vaše konverzace, nahrávky a osobní údaje bezpečně uloženy na našich serverech. Vaše audio nahrávky a přepisy jsou zpracovávány AI službami třetích stran (včetně Deepgram pro přepis a OpenAI pro analýzu), aby vám poskytly poznatky založené na AI a umožnily všechny funkce aplikace.'; - @override String get tasksEmptyStateMessage => 'Začněte konverzaci a vytvořte úkol.'; @@ -13776,4 +13772,12 @@ class AppLocalizationsCs extends AppLocalizations { @override String get summaryFailedBody => 'Při shrnování této konverzace se něco pokazilo.'; + + @override + String get consentShortMessage => 'Omi pomocí AI mění vaše konverzace v poznámky. Kdykoli je můžete smazat.'; + + @override + String consentAiProviders(String providers) { + return 'Zpracovává $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_da.dart b/app/lib/l10n/app_localizations_da.dart index ce82340599c..47b4d750436 100644 --- a/app/lib/l10n/app_localizations_da.dart +++ b/app/lib/l10n/app_localizations_da.dart @@ -4893,10 +4893,6 @@ class AppLocalizationsDa extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Yderligere stemmeprøve fjernet'; - @override - String get consentDataMessage => - 'Ved at fortsætte vil dine samtaler, optagelser og personlige oplysninger blive sikkert gemt på vores servere. Dine lydoptagelser og udskrifter behandles af tredjeparts AI-tjenester (herunder Deepgram til transskription og OpenAI til analyse) for at give dig AI-drevne indsigter og aktivere alle appfunktioner.'; - @override String get tasksEmptyStateMessage => 'Start en samtale for at oprette en opgave.'; @@ -13763,4 +13759,13 @@ class AppLocalizationsDa extends AppLocalizations { @override String get summaryFailedBody => 'Noget gik galt under opsummeringen af denne samtale.'; + + @override + String get consentShortMessage => + 'Omi bruger AI til at gøre dine samtaler til noter. Du kan slette dem når som helst.'; + + @override + String consentAiProviders(String providers) { + return 'Behandles med $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_de.dart b/app/lib/l10n/app_localizations_de.dart index 4cad2aca476..28115bd9cc8 100644 --- a/app/lib/l10n/app_localizations_de.dart +++ b/app/lib/l10n/app_localizations_de.dart @@ -4944,10 +4944,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Zusätzliche Sprachprobe entfernt'; - @override - String get consentDataMessage => - 'Durch Fortfahren werden Ihre Gespräche, Aufnahmen und persönlichen Daten sicher auf unseren Servern gespeichert. Ihre Audioaufnahmen und Transkripte werden von KI-Diensten Dritter verarbeitet (einschließlich Deepgram für die Transkription und OpenAI für die Analyse), um Ihnen KI-gestützte Erkenntnisse zu liefern und alle App-Funktionen zu ermöglichen.'; - @override String get tasksEmptyStateMessage => 'Starte ein Gespräch, um eine Aufgabe zu erstellen.'; @@ -13879,4 +13875,12 @@ class AppLocalizationsDe extends AppLocalizations { @override String get summaryFailedBody => 'Beim Zusammenfassen dieses Gesprächs ist ein Fehler aufgetreten.'; + + @override + String get consentShortMessage => 'Omi macht mit KI aus deinen Gesprächen Notizen. Du kannst sie jederzeit löschen.'; + + @override + String consentAiProviders(String providers) { + return 'Verarbeitet mit $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_el.dart b/app/lib/l10n/app_localizations_el.dart index cc513207113..47eae8eb3cf 100644 --- a/app/lib/l10n/app_localizations_el.dart +++ b/app/lib/l10n/app_localizations_el.dart @@ -4945,10 +4945,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Το πρόσθετο δείγμα ομιλίας αφαιρέθηκε'; - @override - String get consentDataMessage => - 'Συνεχίζοντας, οι συνομιλίες, οι εγγραφές και τα προσωπικά σας στοιχεία θα αποθηκευτούν με ασφάλεια στους διακομιστές μας. Οι ηχογραφήσεις και τα μεταγραφές σας επεξεργάζονται από υπηρεσίες τεχνητής νοημοσύνης τρίτων (συμπεριλαμβανομένων των Deepgram για μεταγραφή και OpenAI για ανάλυση) για να σας παρέχουν γνώσεις βασισμένες σε AI και να ενεργοποιήσουν όλες τις λειτουργίες της εφαρμογής.'; - @override String get tasksEmptyStateMessage => 'Ξεκινήστε μια συνομιλία για να δημιουργήσετε μια εργασία.'; @@ -13864,4 +13860,13 @@ class AppLocalizationsEl extends AppLocalizations { @override String get summaryFailedBody => 'Παρουσιάστηκε πρόβλημα κατά τη σύνοψη αυτής της συνομιλίας.'; + + @override + String get consentShortMessage => + 'Το Omi χρησιμοποιεί AI για να μετατρέπει τις συνομιλίες σου σε σημειώσεις. Μπορείς να τις διαγράψεις οποιαδήποτε στιγμή.'; + + @override + String consentAiProviders(String providers) { + return 'Επεξεργασία μέσω $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_en.dart b/app/lib/l10n/app_localizations_en.dart index 89ab44d08d6..b6d81d63b2c 100644 --- a/app/lib/l10n/app_localizations_en.dart +++ b/app/lib/l10n/app_localizations_en.dart @@ -4904,10 +4904,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Additional Speech Sample Removed'; - @override - String get consentDataMessage => - 'By continuing, your conversations, recordings, and personal information will be securely stored on our servers. Your audio recordings and transcripts are processed by third-party AI services — Deepgram for transcription and OpenAI for analysis — to provide you with AI-powered insights and enable all app features.'; - @override String get tasksEmptyStateMessage => 'Start a conversation to create a task.'; @@ -13760,4 +13756,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get summaryFailedBody => 'Something went wrong while summarizing this conversation.'; + + @override + String get consentShortMessage => 'Omi uses AI to turn your conversations into notes. You can delete them anytime.'; + + @override + String consentAiProviders(String providers) { + return 'Processed with $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_es.dart b/app/lib/l10n/app_localizations_es.dart index fa9506985d6..e2c0fdb0534 100644 --- a/app/lib/l10n/app_localizations_es.dart +++ b/app/lib/l10n/app_localizations_es.dart @@ -4910,10 +4910,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Muestra de voz adicional eliminada'; - @override - String get consentDataMessage => - 'Al continuar, tus conversaciones, grabaciones e información personal se almacenarán de forma segura en nuestros servidores. Tus grabaciones de audio y transcripciones son procesadas por servicios de IA de terceros (incluyendo Deepgram para transcripción y OpenAI para análisis) para proporcionarte información impulsada por IA y habilitar todas las funciones de la aplicación.'; - @override String get tasksEmptyStateMessage => 'Inicia una conversación para crear una tarea.'; @@ -13816,4 +13812,13 @@ class AppLocalizationsEs extends AppLocalizations { @override String get summaryFailedBody => 'Algo salió mal al resumir esta conversación.'; + + @override + String get consentShortMessage => + 'Omi usa IA para convertir tus conversaciones en notas. Puedes eliminarlas cuando quieras.'; + + @override + String consentAiProviders(String providers) { + return 'Procesado con $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_et.dart b/app/lib/l10n/app_localizations_et.dart index 507db54ed4a..d3b20957b52 100644 --- a/app/lib/l10n/app_localizations_et.dart +++ b/app/lib/l10n/app_localizations_et.dart @@ -4902,10 +4902,6 @@ class AppLocalizationsEt extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Lisakõnenäidis eemaldatud'; - @override - String get consentDataMessage => - 'Jätkates salvestatakse teie vestlused, salvestised ja isikuandmed turvaliselt meie serverites. Teie helisalvestisi ja transkriptsioone töötlevad kolmandate osapoolte AI-teenused (sealhulgas Deepgram transkriptsiooni ja OpenAI analüüsi jaoks), et pakkuda teile AI-põhiseid ülevaateid ja võimaldada kõiki rakenduse funktsioone.'; - @override String get tasksEmptyStateMessage => 'Ülesande loomiseks alusta vestlust.'; @@ -13767,4 +13763,13 @@ class AppLocalizationsEt extends AppLocalizations { @override String get summaryFailedBody => 'Selle vestluse kokkuvõtte tegemisel läks midagi valesti.'; + + @override + String get consentShortMessage => + 'Omi muudab tehisintellekti abil sinu vestlused märkmeteks. Saad need igal ajal kustutada.'; + + @override + String consentAiProviders(String providers) { + return 'Töödeldakse teenustega $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_fa.dart b/app/lib/l10n/app_localizations_fa.dart index d2b233d2e27..00ce7e71f94 100644 --- a/app/lib/l10n/app_localizations_fa.dart +++ b/app/lib/l10n/app_localizations_fa.dart @@ -4905,10 +4905,6 @@ class AppLocalizationsFa extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'نمونه صوتی اضافی حذف‌شد'; - @override - String get consentDataMessage => - 'با ادامه دادن، مکالمات، ضبط‌ها و اطلاعات شخصی شما به طور ایمن در سرورهای ما ذخیره می‌شود. ضبط‌های صوتی و رونوشت‌های شما توسط سرویس‌های هوش مصنوعی شخص ثالث (از جمله Deepgram برای رونویسی و OpenAI برای تحلیل) پردازش می‌شوند تا بینش‌های مبتنی بر هوش مصنوعی را به شما ارائه دهند و تمام ویژگی‌های برنامه را فعال کنند.'; - @override String get tasksEmptyStateMessage => 'برای ایجاد یک کار، گفتگو را شروع کنید.'; @@ -13771,4 +13767,13 @@ class AppLocalizationsFa extends AppLocalizations { @override String get summaryFailedBody => 'هنگام خلاصه‌سازی این گفتگو مشکلی پیش آمد.'; + + @override + String get consentShortMessage => + 'Omi با هوش مصنوعی گفتگوهای شما را به یادداشت تبدیل می‌کند. هر زمان بخواهید می‌توانید آن‌ها را حذف کنید.'; + + @override + String consentAiProviders(String providers) { + return 'پردازش با $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_fi.dart b/app/lib/l10n/app_localizations_fi.dart index 4ea5303c6e7..cfd8a877a61 100644 --- a/app/lib/l10n/app_localizations_fi.dart +++ b/app/lib/l10n/app_localizations_fi.dart @@ -4907,10 +4907,6 @@ class AppLocalizationsFi extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Lisäpuhenäyte poistettu'; - @override - String get consentDataMessage => - 'Jatkamalla keskustelusi, tallenteet ja henkilötietosi tallennetaan turvallisesti palvelimillemme. Äänitallenteitasi ja transkriptioitasi käsittelevät kolmannen osapuolen tekoälypalvelut (mukaan lukien Deepgram transkriptiota ja OpenAI analyysiä varten) tarjotaksemme sinulle tekoälypohjaisia oivalluksia ja mahdollistaaksemme kaikki sovelluksen ominaisuudet.'; - @override String get tasksEmptyStateMessage => 'Aloita keskustelu luodaksesi tehtävän.'; @@ -13780,4 +13776,13 @@ class AppLocalizationsFi extends AppLocalizations { @override String get summaryFailedBody => 'Jokin meni vikaan tätä keskustelua tiivistettäessä.'; + + @override + String get consentShortMessage => + 'Omi tekee keskusteluistasi muistiinpanoja tekoälyn avulla. Voit poistaa ne milloin tahansa.'; + + @override + String consentAiProviders(String providers) { + return 'Käsittely: $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_fr.dart b/app/lib/l10n/app_localizations_fr.dart index 654dbe55bb9..603c2d19aad 100644 --- a/app/lib/l10n/app_localizations_fr.dart +++ b/app/lib/l10n/app_localizations_fr.dart @@ -4955,10 +4955,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Échantillon vocal supplémentaire supprimé'; - @override - String get consentDataMessage => - 'En continuant, vos conversations, enregistrements et informations personnelles seront stockés en toute sécurité sur nos serveurs. Vos enregistrements audio et transcriptions sont traités par des services d\'IA tiers (notamment Deepgram pour la transcription et OpenAI pour l\'analyse) afin de vous fournir des informations alimentées par l\'IA et d\'activer toutes les fonctionnalités de l\'application.'; - @override String get tasksEmptyStateMessage => 'Démarrez une conversation pour créer une tâche.'; @@ -13883,4 +13879,13 @@ class AppLocalizationsFr extends AppLocalizations { @override String get summaryFailedBody => 'Un problème est survenu lors du résumé de cette conversation.'; + + @override + String get consentShortMessage => + 'Omi utilise l\'IA pour transformer vos conversations en notes. Vous pouvez les supprimer à tout moment.'; + + @override + String consentAiProviders(String providers) { + return 'Traité avec $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_he.dart b/app/lib/l10n/app_localizations_he.dart index d0a4ba4247b..46db6ba58f0 100644 --- a/app/lib/l10n/app_localizations_he.dart +++ b/app/lib/l10n/app_localizations_he.dart @@ -4867,10 +4867,6 @@ class AppLocalizationsHe extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'דוגמה דיבור נוספת הוסרה'; - @override - String get consentDataMessage => - 'בהמשך, השיחות, ההקלטות והמידע האישי שלך יאוחסנו בצורה מאובטחת בשרתים שלנו. הקלטות האודיו והתמלולים שלך מעובדים על ידי שירותי AI של צד שלישי (כולל Deepgram לתמלול ו-OpenAI לניתוח) כדי לספק לך תובנות מבוססות AI ולאפשר את כל תכונות האפליקציה.'; - @override String get tasksEmptyStateMessage => 'התחילו שיחה כדי ליצור משימה.'; @@ -13679,4 +13675,12 @@ class AppLocalizationsHe extends AppLocalizations { @override String get summaryFailedBody => 'משהו השתבש בעת סיכום השיחה הזו.'; + + @override + String get consentShortMessage => 'Omi משתמש בבינה מלאכותית כדי להפוך את השיחות שלך להערות. אפשר למחוק אותן בכל עת.'; + + @override + String consentAiProviders(String providers) { + return 'מעובד באמצעות $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_hi.dart b/app/lib/l10n/app_localizations_hi.dart index 2cdf8f49ee1..030a844d8bd 100644 --- a/app/lib/l10n/app_localizations_hi.dart +++ b/app/lib/l10n/app_localizations_hi.dart @@ -4882,10 +4882,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'अतिरिक्त भाषण नमूना हटाया गया'; - @override - String get consentDataMessage => - 'जारी रखने पर, आपकी बातचीत, रिकॉर्डिंग और व्यक्तिगत जानकारी हमारे सर्वर पर सुरक्षित रूप से संग्रहीत की जाएगी। आपकी ऑडियो रिकॉर्डिंग और ट्रांसक्रिप्ट तीसरे पक्ष की AI सेवाओं (ट्रांसक्रिप्शन के लिए Deepgram और विश्लेषण के लिए OpenAI सहित) द्वारा संसाधित किए जाते हैं ताकि आपको AI-संचालित अंतर्दृष्टि प्रदान की जा सके और सभी ऐप सुविधाएँ सक्षम की जा सकें।'; - @override String get tasksEmptyStateMessage => 'टास्क बनाने के लिए बातचीत शुरू करें।'; @@ -13755,4 +13751,13 @@ class AppLocalizationsHi extends AppLocalizations { @override String get summaryFailedBody => 'इस बातचीत का सारांश बनाते समय कुछ गलत हो गया।'; + + @override + String get consentShortMessage => + 'Omi AI की मदद से आपकी बातचीत को नोट्स में बदलता है। आप उन्हें कभी भी हटा सकते हैं।'; + + @override + String consentAiProviders(String providers) { + return '$providers के साथ प्रोसेस किया जाता है।'; + } } diff --git a/app/lib/l10n/app_localizations_hr.dart b/app/lib/l10n/app_localizations_hr.dart index a682065dba1..fb33e1eee47 100644 --- a/app/lib/l10n/app_localizations_hr.dart +++ b/app/lib/l10n/app_localizations_hr.dart @@ -4923,10 +4923,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Dodatni uzorak govora je uklonjen'; - @override - String get consentDataMessage => - 'Nastavljanjem, vaši razgovori, snimke i osobni podaci bit će sigurno pohranjeni na našim poslužiteljima. Vaši audio zapisi i transkripti obrađuju se od strane AI usluga trećih strana (uključujući Deepgram za transkripciju i OpenAI za analizu) kako bi vam pružili uvide pokretane umjetnom inteligencijom i omogućili sve značajke aplikacije.'; - @override String get tasksEmptyStateMessage => 'Započnite razgovor da biste stvorili zadatak.'; @@ -13809,4 +13805,13 @@ class AppLocalizationsHr extends AppLocalizations { @override String get summaryFailedBody => 'Došlo je do pogreške pri sažimanju ovog razgovora.'; + + @override + String get consentShortMessage => + 'Omi koristi AI kako bi vaše razgovore pretvorio u bilješke. Možete ih izbrisati bilo kada.'; + + @override + String consentAiProviders(String providers) { + return 'Obrađuje se pomoću $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_hu.dart b/app/lib/l10n/app_localizations_hu.dart index 12f594017e4..6fd03713de1 100644 --- a/app/lib/l10n/app_localizations_hu.dart +++ b/app/lib/l10n/app_localizations_hu.dart @@ -4932,10 +4932,6 @@ class AppLocalizationsHu extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'További hangminta eltávolítva'; - @override - String get consentDataMessage => - 'A folytatással beszélgetéseit, felvételeit és személyes adatait biztonságosan tároljuk szervereinken. Hangfelvételeit és átiratait harmadik féltől származó AI szolgáltatások dolgozzák fel (beleértve a Deepgramot az átíráshoz és az OpenAI-t az elemzéshez), hogy AI-alapú betekintéseket nyújtsunk Önnek és az alkalmazás összes funkcióját biztosítsuk.'; - @override String get tasksEmptyStateMessage => 'Feladat létrehozásához kezdj beszélgetést.'; @@ -13830,4 +13826,13 @@ class AppLocalizationsHu extends AppLocalizations { @override String get summaryFailedBody => 'Hiba történt a beszélgetés összefoglalása közben.'; + + @override + String get consentShortMessage => + 'Az Omi mesterséges intelligenciával jegyzetekké alakítja a beszélgetéseidet. Bármikor törölheted őket.'; + + @override + String consentAiProviders(String providers) { + return 'Feldolgozás: $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_id.dart b/app/lib/l10n/app_localizations_id.dart index 4981fa361a2..916e1de4c64 100644 --- a/app/lib/l10n/app_localizations_id.dart +++ b/app/lib/l10n/app_localizations_id.dart @@ -4912,10 +4912,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Sampel suara tambahan dihapus'; - @override - String get consentDataMessage => - 'Dengan melanjutkan, percakapan, rekaman, dan informasi pribadi Anda akan disimpan dengan aman di server kami. Rekaman audio dan transkrip Anda diproses oleh layanan AI pihak ketiga (termasuk Deepgram untuk transkripsi dan OpenAI untuk analisis) untuk memberikan Anda wawasan berbasis AI dan mengaktifkan semua fitur aplikasi.'; - @override String get tasksEmptyStateMessage => 'Mulai percakapan untuk membuat tugas.'; @@ -13788,4 +13784,13 @@ class AppLocalizationsId extends AppLocalizations { @override String get summaryFailedBody => 'Terjadi kesalahan saat meringkas percakapan ini.'; + + @override + String get consentShortMessage => + 'Omi menggunakan AI untuk mengubah percakapanmu menjadi catatan. Kamu bisa menghapusnya kapan saja.'; + + @override + String consentAiProviders(String providers) { + return 'Diproses dengan $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_it.dart b/app/lib/l10n/app_localizations_it.dart index 1e3eea7196e..2542f6dfcc4 100644 --- a/app/lib/l10n/app_localizations_it.dart +++ b/app/lib/l10n/app_localizations_it.dart @@ -4935,10 +4935,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Campione vocale aggiuntivo rimosso'; - @override - String get consentDataMessage => - 'Continuando, le tue conversazioni, registrazioni e informazioni personali saranno archiviate in modo sicuro sui nostri server. Le tue registrazioni audio e trascrizioni vengono elaborate da servizi AI di terze parti (inclusi Deepgram per la trascrizione e OpenAI per l\'analisi) per fornirti approfondimenti basati sull\'AI e abilitare tutte le funzionalità dell\'app.'; - @override String get tasksEmptyStateMessage => 'Avvia una conversazione per creare un\'attività.'; @@ -13848,4 +13844,13 @@ class AppLocalizationsIt extends AppLocalizations { @override String get summaryFailedBody => 'Si è verificato un problema durante il riassunto di questa conversazione.'; + + @override + String get consentShortMessage => + 'Omi usa l\'IA per trasformare le tue conversazioni in note. Puoi eliminarle quando vuoi.'; + + @override + String consentAiProviders(String providers) { + return 'Elaborato con $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_ja.dart b/app/lib/l10n/app_localizations_ja.dart index 1c819e23ef7..f73400a5d76 100644 --- a/app/lib/l10n/app_localizations_ja.dart +++ b/app/lib/l10n/app_localizations_ja.dart @@ -4826,10 +4826,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get additionalSpeechSampleRemoved => '追加の音声サンプルを削除しました'; - @override - String get consentDataMessage => - '続行することで、会話、録音、個人情報は安全に当社のサーバーに保存されます。音声録音と文字起こしは、サードパーティのAIサービス(文字起こし用のDeepgramと分析用のOpenAIを含む)によって処理され、AI駆動のインサイトを提供し、すべてのアプリ機能を有効にします。'; - @override String get tasksEmptyStateMessage => '会話を始めてタスクを作成しましょう。'; @@ -13582,4 +13578,12 @@ class AppLocalizationsJa extends AppLocalizations { @override String get summaryFailedBody => 'この会話の要約中に問題が発生しました。'; + + @override + String get consentShortMessage => 'OmiはAIで会話をメモにまとめます。メモはいつでも削除できます。'; + + @override + String consentAiProviders(String providers) { + return '$providers で処理されます。'; + } } diff --git a/app/lib/l10n/app_localizations_kn.dart b/app/lib/l10n/app_localizations_kn.dart index 769b4953b15..01bd6650b4f 100644 --- a/app/lib/l10n/app_localizations_kn.dart +++ b/app/lib/l10n/app_localizations_kn.dart @@ -4926,10 +4926,6 @@ class AppLocalizationsKn extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'ಹೆಚ್ಚುವರಿ ಭಾಷಣ ಮಾದರಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ'; - @override - String get consentDataMessage => - 'ಮುಂದುವರಿಯುವ ಮೂಲಕ, ನಿಮ್ಮ ಸಂಭಾಷಣೆಗಳು, ರೆಕಾರ್ಡಿಂಗ್‌ಗಳು ಮತ್ತು ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ನಮ್ಮ ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಆಡಿಯೋ ರೆಕಾರ್ಡಿಂಗ್‌ಗಳು ಮತ್ತು ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಮೂರನೇ ವ್ಯಕ್ತಿಯ AI ಸೇವೆಗಳಿಂದ ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ (ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಷನ್‌ಗಾಗಿ Deepgram ಮತ್ತು ವಿಶ್ಲೇಷಣೆಗಾಗಿ OpenAI ಸೇರಿದಂತೆ) AI-ಚಾಲಿತ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸಲು ಮತ್ತು ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು.'; - @override String get tasksEmptyStateMessage => 'ಕಾರ್ಯವನ್ನು ರಚಿಸಲು ಸಂಭಾಷಣೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ.'; @@ -13816,4 +13812,12 @@ class AppLocalizationsKn extends AppLocalizations { @override String get summaryFailedBody => 'ಈ ಸಂಭಾಷಣೆಯ ಸಾರಾಂಶ ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ.'; + + @override + String get consentShortMessage => 'Omi AI ಬಳಸಿ ನಿಮ್ಮ ಸಂಭಾಷಣೆಗಳನ್ನು ಟಿಪ್ಪಣಿಗಳಾಗಿ ಮಾಡುತ್ತದೆ. ಯಾವಾಗ ಬೇಕಾದರೂ ಅಳಿಸಬಹುದು.'; + + @override + String consentAiProviders(String providers) { + return '$providers ಮೂಲಕ ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ.'; + } } diff --git a/app/lib/l10n/app_localizations_ko.dart b/app/lib/l10n/app_localizations_ko.dart index 7053d3b9352..64aec194f2d 100644 --- a/app/lib/l10n/app_localizations_ko.dart +++ b/app/lib/l10n/app_localizations_ko.dart @@ -4827,10 +4827,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get additionalSpeechSampleRemoved => '추가 음성 샘플이 삭제되었습니다'; - @override - String get consentDataMessage => - '계속하면 대화, 녹음 및 개인 정보가 서버에 안전하게 저장됩니다. 오디오 녹음 및 텍스트 변환은 제3자 AI 서비스(전사를 위한 Deepgram 및 분석을 위한 OpenAI 포함)에 의해 처리되어 AI 기반 인사이트를 제공하고 모든 앱 기능을 활성화합니다.'; - @override String get tasksEmptyStateMessage => '대화를 시작하여 할 일을 만드세요.'; @@ -13588,4 +13584,12 @@ class AppLocalizationsKo extends AppLocalizations { @override String get summaryFailedBody => '이 대화를 요약하는 중 문제가 발생했습니다.'; + + @override + String get consentShortMessage => 'Omi는 AI로 대화를 메모로 정리합니다. 언제든지 삭제할 수 있습니다.'; + + @override + String consentAiProviders(String providers) { + return '$providers(으)로 처리됩니다.'; + } } diff --git a/app/lib/l10n/app_localizations_lt.dart b/app/lib/l10n/app_localizations_lt.dart index 24e17c246a1..7f7065f29fb 100644 --- a/app/lib/l10n/app_localizations_lt.dart +++ b/app/lib/l10n/app_localizations_lt.dart @@ -4906,10 +4906,6 @@ class AppLocalizationsLt extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Papildomas balso pavyzdys pašalintas'; - @override - String get consentDataMessage => - 'Tęsdami, jūsų pokalbiai, įrašai ir asmeninė informacija bus saugiai saugomi mūsų serveriuose. Jūsų garso įrašai ir transkripcijos apdorojami trečiųjų šalių AI paslaugų (įskaitant Deepgram transkripcijai ir OpenAI analizei), kad suteiktų jums AI paremtas įžvalgas ir įgalintų visas programėlės funkcijas.'; - @override String get tasksEmptyStateMessage => 'Pradėkite pokalbį, kad sukurtumėte užduotį.'; @@ -13800,4 +13796,13 @@ class AppLocalizationsLt extends AppLocalizations { @override String get summaryFailedBody => 'Apibendrinant šį pokalbį kažkas nutiko.'; + + @override + String get consentShortMessage => + 'Omi naudoja DI, kad jūsų pokalbius paverstų užrašais. Juos galite ištrinti bet kada.'; + + @override + String consentAiProviders(String providers) { + return 'Apdorojama su $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_lv.dart b/app/lib/l10n/app_localizations_lv.dart index 878a1b0376e..fc4548e0bd5 100644 --- a/app/lib/l10n/app_localizations_lv.dart +++ b/app/lib/l10n/app_localizations_lv.dart @@ -4913,10 +4913,6 @@ class AppLocalizationsLv extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Papildu balss paraugs noņemts'; - @override - String get consentDataMessage => - 'Turpinot, jūsu sarunas, ieraksti un personiskā informācija tiks droši glabāta mūsu serveros. Jūsu audio ieraksti un transkripcijas tiek apstrādātas ar trešo pušu AI pakalpojumiem (ieskaitot Deepgram transkripcijai un OpenAI analīzei), lai sniegtu jums AI vadītus ieskatus un iespējotu visas lietotnes funkcijas.'; - @override String get tasksEmptyStateMessage => 'Sāciet sarunu, lai izveidotu uzdevumu.'; @@ -13805,4 +13801,12 @@ class AppLocalizationsLv extends AppLocalizations { @override String get summaryFailedBody => 'Apkopojot šo sarunu, radās kļūda.'; + + @override + String get consentShortMessage => 'Omi ar MI palīdzību pārvērš jūsu sarunas piezīmēs. Tās var izdzēst jebkurā laikā.'; + + @override + String consentAiProviders(String providers) { + return 'Apstrādā $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_mk.dart b/app/lib/l10n/app_localizations_mk.dart index 5d408264224..3714cbba27a 100644 --- a/app/lib/l10n/app_localizations_mk.dart +++ b/app/lib/l10n/app_localizations_mk.dart @@ -4929,10 +4929,6 @@ class AppLocalizationsMk extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Дополнителен примерок на говор отстранет'; - @override - String get consentDataMessage => - 'Со продолжување, вашите разговори, снимки и лични информации ќе бидат безбедно зачувани на нашите сервери. Вашите аудио снимки и транскрипти се обработуваат од AI услуги на трети страни (вклучувајќи Deepgram за транскрипција и OpenAI за анализа) за да ви обезбедат увиди базирани на AI и да ги овозможат сите функции на апликацијата.'; - @override String get tasksEmptyStateMessage => 'Започнете разговор за да создадете задача.'; @@ -13837,4 +13833,13 @@ class AppLocalizationsMk extends AppLocalizations { @override String get summaryFailedBody => 'Нешто тргна наопаку при сумирањето на овој разговор.'; + + @override + String get consentShortMessage => + 'Omi користи вештачка интелигенција за да ги претвори вашите разговори во белешки. Можете да ги избришете во секое време.'; + + @override + String consentAiProviders(String providers) { + return 'Се обработува со $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_mr.dart b/app/lib/l10n/app_localizations_mr.dart index 0c25852fc14..115e31481dc 100644 --- a/app/lib/l10n/app_localizations_mr.dart +++ b/app/lib/l10n/app_localizations_mr.dart @@ -4916,10 +4916,6 @@ class AppLocalizationsMr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'अतिरिक्त भाषण नमुना काढून टाकला'; - @override - String get consentDataMessage => - 'पुढे चालू ठेवल्यास, तुमच्या संभाषणा, रेकॉर्डिंग आणि वैयक्तिक माहिती आमच्या सर्व्हरवर सुरक्षितपणे साठवली जाईल. तुमच्या ऑडिओ रेकॉर्डिंग आणि ट्रान्सक्रिप्ट तृतीय-पक्ष AI सेवांद्वारे प्रक्रिया केली जातात (ट्रान्सक्रिप्शनसाठी Deepgram आणि विश्लेषणासाठी OpenAI सह) तुम्हाला AI-चालित अंतर्दृष्टी प्रदान करण्यासाठी आणि सर्व अॅप वैशिष्ट्ये सक्षम करण्यासाठी.'; - @override String get tasksEmptyStateMessage => 'कार्य तयार करण्यासाठी संभाषण सुरू करा.'; @@ -13783,4 +13779,12 @@ class AppLocalizationsMr extends AppLocalizations { @override String get summaryFailedBody => 'हे संभाषण सारांशित करताना काहीतरी चूक झाली.'; + + @override + String get consentShortMessage => 'Omi AI वापरून तुमच्या संभाषणांच्या नोट्स बनवते. तुम्ही त्या कधीही हटवू शकता.'; + + @override + String consentAiProviders(String providers) { + return '$providers द्वारे प्रक्रिया केली जाते.'; + } } diff --git a/app/lib/l10n/app_localizations_ms.dart b/app/lib/l10n/app_localizations_ms.dart index f6b16f819b9..097269a4da7 100644 --- a/app/lib/l10n/app_localizations_ms.dart +++ b/app/lib/l10n/app_localizations_ms.dart @@ -4921,10 +4921,6 @@ class AppLocalizationsMs extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Sampel suara tambahan dibuang'; - @override - String get consentDataMessage => - 'Dengan meneruskan, perbualan, rakaman dan maklumat peribadi anda akan disimpan dengan selamat di pelayan kami. Rakaman audio dan transkrip anda diproses oleh perkhidmatan AI pihak ketiga (termasuk Deepgram untuk transkripsi dan OpenAI untuk analisis) untuk memberikan anda pandangan dikuasakan AI dan membolehkan semua ciri aplikasi.'; - @override String get tasksEmptyStateMessage => 'Mulakan perbualan untuk mencipta tugasan.'; @@ -13807,4 +13803,13 @@ class AppLocalizationsMs extends AppLocalizations { @override String get summaryFailedBody => 'Sesuatu tidak kena semasa meringkaskan perbualan ini.'; + + @override + String get consentShortMessage => + 'Omi menggunakan AI untuk menukar perbualan anda kepada nota. Anda boleh memadamkannya bila-bila masa.'; + + @override + String consentAiProviders(String providers) { + return 'Diproses dengan $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_nl.dart b/app/lib/l10n/app_localizations_nl.dart index fe17a52a6a7..1fe9735330a 100644 --- a/app/lib/l10n/app_localizations_nl.dart +++ b/app/lib/l10n/app_localizations_nl.dart @@ -4917,10 +4917,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Extra spraakvoorbeeld verwijderd'; - @override - String get consentDataMessage => - 'Door verder te gaan worden uw gesprekken, opnames en persoonlijke informatie veilig opgeslagen op onze servers. Uw audio-opnames en transcripties worden verwerkt door AI-diensten van derden (waaronder Deepgram voor transcriptie en OpenAI voor analyse) om u AI-gestuurde inzichten te bieden en alle app-functies mogelijk te maken.'; - @override String get tasksEmptyStateMessage => 'Begin een gesprek om een taak aan te maken.'; @@ -13810,4 +13806,12 @@ class AppLocalizationsNl extends AppLocalizations { @override String get summaryFailedBody => 'Er ging iets mis bij het samenvatten van dit gesprek.'; + + @override + String get consentShortMessage => 'Omi maakt met AI notities van je gesprekken. Je kunt ze altijd verwijderen.'; + + @override + String consentAiProviders(String providers) { + return 'Verwerkt met $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_no.dart b/app/lib/l10n/app_localizations_no.dart index cc47276bea2..03b92b618dd 100644 --- a/app/lib/l10n/app_localizations_no.dart +++ b/app/lib/l10n/app_localizations_no.dart @@ -4907,10 +4907,6 @@ class AppLocalizationsNo extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Ekstra taleprøve fjernet'; - @override - String get consentDataMessage => - 'Ved å fortsette vil samtalene, opptakene og den personlige informasjonen din bli lagret sikkert på våre servere. Lydopptakene og transkripsjonene dine behandles av tredjeparts AI-tjenester (inkludert Deepgram for transkripsjon og OpenAI for analyse) for å gi deg AI-drevne innsikter og aktivere alle appfunksjoner.'; - @override String get tasksEmptyStateMessage => 'Start en samtale for å opprette en oppgave.'; @@ -13777,4 +13773,13 @@ class AppLocalizationsNo extends AppLocalizations { @override String get summaryFailedBody => 'Noe gikk galt under oppsummeringen av denne samtalen.'; + + @override + String get consentShortMessage => + 'Omi bruker KI til å gjøre samtalene dine om til notater. Du kan slette dem når som helst.'; + + @override + String consentAiProviders(String providers) { + return 'Behandles med $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_pl.dart b/app/lib/l10n/app_localizations_pl.dart index 2357948d5d9..d1132e259f3 100644 --- a/app/lib/l10n/app_localizations_pl.dart +++ b/app/lib/l10n/app_localizations_pl.dart @@ -4915,10 +4915,6 @@ class AppLocalizationsPl extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Dodatkowa próbka głosowa usunięta'; - @override - String get consentDataMessage => - 'Kontynuując, Twoje rozmowy, nagrania i dane osobowe będą bezpiecznie przechowywane na naszych serwerach. Twoje nagrania audio i transkrypcje są przetwarzane przez zewnętrzne usługi AI (w tym Deepgram do transkrypcji i OpenAI do analizy), aby dostarczyć Ci wglądy oparte na AI i umożliwić wszystkie funkcje aplikacji.'; - @override String get tasksEmptyStateMessage => 'Rozpocznij rozmowę, aby utworzyć zadanie.'; @@ -13815,4 +13811,13 @@ class AppLocalizationsPl extends AppLocalizations { @override String get summaryFailedBody => 'Coś poszło nie tak podczas podsumowywania tej rozmowy.'; + + @override + String get consentShortMessage => + 'Omi za pomocą AI zamienia Twoje rozmowy w notatki. Możesz je usunąć w każdej chwili.'; + + @override + String consentAiProviders(String providers) { + return 'Przetwarzane przez $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_pt.dart b/app/lib/l10n/app_localizations_pt.dart index 8a6abdf14f3..9e48cd9a883 100644 --- a/app/lib/l10n/app_localizations_pt.dart +++ b/app/lib/l10n/app_localizations_pt.dart @@ -4902,10 +4902,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Amostra de voz adicional removida'; - @override - String get consentDataMessage => - 'Ao continuar, suas conversas, gravações e informações pessoais serão armazenadas com segurança em nossos servidores. Suas gravações de áudio e transcrições são processadas por serviços de IA de terceiros (incluindo Deepgram para transcrição e OpenAI para análise) para fornecer insights baseados em IA e habilitar todos os recursos do aplicativo.'; - @override String get tasksEmptyStateMessage => 'Inicie uma conversa para criar uma tarefa.'; @@ -13799,4 +13795,13 @@ class AppLocalizationsPt extends AppLocalizations { @override String get summaryFailedBody => 'Algo deu errado ao resumir esta conversa.'; + + @override + String get consentShortMessage => + 'O Omi usa IA para transformar suas conversas em notas. Você pode excluí-las quando quiser.'; + + @override + String consentAiProviders(String providers) { + return 'Processado com $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_ro.dart b/app/lib/l10n/app_localizations_ro.dart index 6381040da3b..3429bc139ad 100644 --- a/app/lib/l10n/app_localizations_ro.dart +++ b/app/lib/l10n/app_localizations_ro.dart @@ -4930,10 +4930,6 @@ class AppLocalizationsRo extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Mostră vocală suplimentară eliminată'; - @override - String get consentDataMessage => - 'Continuând, conversațiile, înregistrările și informațiile dvs. personale vor fi stocate în siguranță pe serverele noastre. Înregistrările audio și transcrierile dvs. sunt procesate de servicii AI terțe (inclusiv Deepgram pentru transcriere și OpenAI pentru analiză) pentru a vă oferi informații bazate pe AI și a activa toate funcțiile aplicației.'; - @override String get tasksEmptyStateMessage => 'Începe o conversație pentru a crea o sarcină.'; @@ -13833,4 +13829,13 @@ class AppLocalizationsRo extends AppLocalizations { @override String get summaryFailedBody => 'A apărut o problemă la rezumarea acestei conversații.'; + + @override + String get consentShortMessage => + 'Omi folosește AI pentru a transforma conversațiile tale în notițe. Le poți șterge oricând.'; + + @override + String consentAiProviders(String providers) { + return 'Procesat cu $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_ru.dart b/app/lib/l10n/app_localizations_ru.dart index 3f1eb627e60..e202fecd1d0 100644 --- a/app/lib/l10n/app_localizations_ru.dart +++ b/app/lib/l10n/app_localizations_ru.dart @@ -4918,10 +4918,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Дополнительный образец голоса удален'; - @override - String get consentDataMessage => - 'Продолжая, ваши разговоры, записи и личная информация будут надежно храниться на наших серверах. Ваши аудиозаписи и транскрипции обрабатываются сторонними AI-сервисами (включая Deepgram для транскрипции и OpenAI для анализа), чтобы предоставить вам аналитику на основе ИИ и обеспечить работу всех функций приложения.'; - @override String get tasksEmptyStateMessage => 'Начните разговор, чтобы создать задачу.'; @@ -13821,4 +13817,13 @@ class AppLocalizationsRu extends AppLocalizations { @override String get summaryFailedBody => 'При обобщении этого разговора что-то пошло не так.'; + + @override + String get consentShortMessage => + 'Omi с помощью ИИ превращает ваши разговоры в заметки. Их можно удалить в любой момент.'; + + @override + String consentAiProviders(String providers) { + return 'Обработка: $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_sk.dart b/app/lib/l10n/app_localizations_sk.dart index 23454e1e21d..05d47f79950 100644 --- a/app/lib/l10n/app_localizations_sk.dart +++ b/app/lib/l10n/app_localizations_sk.dart @@ -4902,10 +4902,6 @@ class AppLocalizationsSk extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Ďalšia hlasová vzorka odstránená'; - @override - String get consentDataMessage => - 'Pokračovaním budú vaše konverzácie, nahrávky a osobné údaje bezpečne uložené na našich serveroch. Vaše audio nahrávky a prepisy sú spracovávané AI službami tretích strán (vrátane Deepgram na prepis a OpenAI na analýzu), aby vám poskytli poznatky založené na AI a umožnili všetky funkcie aplikácie.'; - @override String get tasksEmptyStateMessage => 'Začnite konverzáciu a vytvorte úlohu.'; @@ -13770,4 +13766,12 @@ class AppLocalizationsSk extends AppLocalizations { @override String get summaryFailedBody => 'Pri zhrnutí tohto rozhovoru sa niečo pokazilo.'; + + @override + String get consentShortMessage => 'Omi pomocou AI mení vaše konverzácie na poznámky. Kedykoľvek ich môžete vymazať.'; + + @override + String consentAiProviders(String providers) { + return 'Spracúva $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_sl.dart b/app/lib/l10n/app_localizations_sl.dart index bc975c17fbf..f24e827a9e4 100644 --- a/app/lib/l10n/app_localizations_sl.dart +++ b/app/lib/l10n/app_localizations_sl.dart @@ -4915,10 +4915,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Dodatni govori vzorec je bil odstranjen'; - @override - String get consentDataMessage => - 'Z nadaljevanjem bodo vaši pogovori, posnetki in osebni podatki varno shranjeni na naših strežnikih. Vaši zvočni posnetki in prepisi se obdelujejo s storitvami umetne inteligence tretjih oseb (vključno z Deepgram za prepis in OpenAI za analizo), da vam zagotovimo vpoglede, ki jih poganja umetna inteligenca, in omogočimo vse funkcije aplikacije.'; - @override String get tasksEmptyStateMessage => 'Začnite pogovor, da ustvarite nalogo.'; @@ -13804,4 +13800,13 @@ class AppLocalizationsSl extends AppLocalizations { @override String get summaryFailedBody => 'Pri povzemanju tega pogovora je prišlo do napake.'; + + @override + String get consentShortMessage => + 'Omi z umetno inteligenco spremeni vaše pogovore v zapiske. Kadar koli jih lahko izbrišete.'; + + @override + String consentAiProviders(String providers) { + return 'Obdelano z $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_sr.dart b/app/lib/l10n/app_localizations_sr.dart index 3f84f32a99d..fbe27318729 100644 --- a/app/lib/l10n/app_localizations_sr.dart +++ b/app/lib/l10n/app_localizations_sr.dart @@ -4907,10 +4907,6 @@ class AppLocalizationsSr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Додатни узорак говора је уклоњен'; - @override - String get consentDataMessage => - 'Настављањем, ваши разговори, снимци и лични подаци биће безбедно ускладиштени на нашим серверима. Ваши аудио снимци и транскрипти се обрађују од стране AI сервиса трећих страна (укључујући Deepgram за транскрипцију и OpenAI за анализу) како би вам пружили увиде засноване на вештачкој интелигенцији и омогућили све функције апликације.'; - @override String get tasksEmptyStateMessage => 'Започните разговор да бисте направили задатак.'; @@ -13783,4 +13779,13 @@ class AppLocalizationsSr extends AppLocalizations { @override String get summaryFailedBody => 'Дошло је до грешке приликом сажимања овог разговора.'; + + @override + String get consentShortMessage => + 'Omi користи AI да ваше разговоре претвори у белешке. Можете их обрисати у било ком тренутку.'; + + @override + String consentAiProviders(String providers) { + return 'Обрађује се помоћу $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_sv.dart b/app/lib/l10n/app_localizations_sv.dart index 3a3c8303ef7..f8d00d7c7e6 100644 --- a/app/lib/l10n/app_localizations_sv.dart +++ b/app/lib/l10n/app_localizations_sv.dart @@ -4908,10 +4908,6 @@ class AppLocalizationsSv extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Ytterligare röstprov borttaget'; - @override - String get consentDataMessage => - 'Genom att fortsätta kommer dina konversationer, inspelningar och personlig information att lagras säkert på våra servrar. Dina ljudinspelningar och transkriptioner behandlas av AI-tjänster från tredje part (inklusive Deepgram för transkription och OpenAI för analys) för att ge dig AI-drivna insikter och aktivera alla appfunktioner.'; - @override String get tasksEmptyStateMessage => 'Starta ett samtal för att skapa en uppgift.'; @@ -13780,4 +13776,13 @@ class AppLocalizationsSv extends AppLocalizations { @override String get summaryFailedBody => 'Något gick fel när det här samtalet skulle sammanfattas.'; + + @override + String get consentShortMessage => + 'Omi använder AI för att göra dina samtal till anteckningar. Du kan radera dem när som helst.'; + + @override + String consentAiProviders(String providers) { + return 'Bearbetas med $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_ta.dart b/app/lib/l10n/app_localizations_ta.dart index e201443fa11..956be19bb45 100644 --- a/app/lib/l10n/app_localizations_ta.dart +++ b/app/lib/l10n/app_localizations_ta.dart @@ -4946,10 +4946,6 @@ class AppLocalizationsTa extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'கூடுதல் பேச்சு மாதிரி அகற்றப்பட்டது'; - @override - String get consentDataMessage => - 'தொடர்வதன் மூலம், உங்கள் உரையாடல்கள், பதிவுகள் மற்றும் தனிப்பட்ட தகவல்கள் எங்கள் சேவையகங்களில் பாதுகாப்பாக சேமிக்கப்படும். உங்கள் ஆடியோ பதிவுகள் மற்றும் படியெடுப்புகள் மூன்றாம் தரப்பு AI சேவைகளால் செயலாக்கப்படுகின்றன (படியெடுப்பிற்கு Deepgram மற்றும் பகுப்பாய்விற்கு OpenAI உட்பட) AI இயக்கும் நுண்ணறிவுகளை உங்களுக்கு வழங்கவும் அனைத்து பயன்பாட்டு அம்சங்களையும் இயக்கவும்.'; - @override String get tasksEmptyStateMessage => 'ஒரு பணியை உருவாக்க உரையாடலைத் தொடங்குங்கள்.'; @@ -13872,4 +13868,13 @@ class AppLocalizationsTa extends AppLocalizations { @override String get summaryFailedBody => 'இந்த உரையாடலைச் சுருக்கும்போது ஏதோ தவறு நடந்தது.'; + + @override + String get consentShortMessage => + 'Omi AI மூலம் உங்கள் உரையாடல்களைக் குறிப்புகளாக மாற்றுகிறது. எப்போது வேண்டுமானாலும் நீக்கலாம்.'; + + @override + String consentAiProviders(String providers) { + return '$providers மூலம் செயலாக்கப்படுகிறது.'; + } } diff --git a/app/lib/l10n/app_localizations_te.dart b/app/lib/l10n/app_localizations_te.dart index a4a66f37b05..82b71d331ff 100644 --- a/app/lib/l10n/app_localizations_te.dart +++ b/app/lib/l10n/app_localizations_te.dart @@ -4934,10 +4934,6 @@ class AppLocalizationsTe extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'అదనపు ప్రసంగ నమూనా తీసివేయబడింది'; - @override - String get consentDataMessage => - 'కొనసాగించడం ద్వారా, మీ సంభాషణలు, రికార్డింగ్‌లు మరియు వ్యక్తిగత సమాచారం మా సర్వర్‌లలో సురక్షితంగా నిల్వ చేయబడతాయి. మీ ఆడియో రికార్డింగ్‌లు మరియు ట్రాన్‌స్క్రిప్ట్‌లు థర్డ్-పార్టీ AI సేవల ద్వారా ప్రాసెస్ చేయబడతాయి (ట్రాన్‌స్క్రిప్షన్ కోసం Deepgram మరియు విశ్లేషణ కోసం OpenAI సహా) AI-ఆధారిత అంతర్దృష్టులను అందించడానికి మరియు అన్ని యాప్ ఫీచర్‌లను ప్రారంభించడానికి.'; - @override String get tasksEmptyStateMessage => 'పనిని సృష్టించడానికి సంభాషణను ప్రారంభించండి.'; @@ -13828,4 +13824,12 @@ class AppLocalizationsTe extends AppLocalizations { @override String get summaryFailedBody => 'ఈ సంభాషణను సారాంశం చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది.'; + + @override + String get consentShortMessage => 'Omi AI సహాయంతో మీ సంభాషణలను నోట్స్‌గా మారుస్తుంది. వాటిని ఎప్పుడైనా తొలగించవచ్చు.'; + + @override + String consentAiProviders(String providers) { + return '$providers ద్వారా ప్రాసెస్ చేయబడుతుంది.'; + } } diff --git a/app/lib/l10n/app_localizations_th.dart b/app/lib/l10n/app_localizations_th.dart index e45e781659a..a0f61a51998 100644 --- a/app/lib/l10n/app_localizations_th.dart +++ b/app/lib/l10n/app_localizations_th.dart @@ -4878,10 +4878,6 @@ class AppLocalizationsTh extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'ลบตัวอย่างเสียงเพิ่มเติมแล้ว'; - @override - String get consentDataMessage => - 'เมื่อดำเนินการต่อ การสนทนา การบันทึก และข้อมูลส่วนบุคคลของคุณจะถูกจัดเก็บอย่างปลอดภัยบนเซิร์ฟเวอร์ของเรา การบันทึกเสียงและการถอดความของคุณจะถูกประมวลผลโดยบริการ AI ของบุคคลที่สาม (รวมถึง Deepgram สำหรับการถอดความ และ OpenAI สำหรับการวิเคราะห์) เพื่อมอบข้อมูลเชิงลึกที่ขับเคลื่อนด้วย AI และเปิดใช้งานคุณสมบัติทั้งหมดของแอป'; - @override String get tasksEmptyStateMessage => 'เริ่มการสนทนาเพื่อสร้างงาน'; @@ -13707,4 +13703,12 @@ class AppLocalizationsTh extends AppLocalizations { @override String get summaryFailedBody => 'เกิดข้อผิดพลาดขณะสรุปบทสนทนานี้'; + + @override + String get consentShortMessage => 'Omi ใช้ AI เปลี่ยนบทสนทนาของคุณเป็นโน้ต คุณลบได้ทุกเมื่อ'; + + @override + String consentAiProviders(String providers) { + return 'ประมวลผลด้วย $providers'; + } } diff --git a/app/lib/l10n/app_localizations_tl.dart b/app/lib/l10n/app_localizations_tl.dart index c6f07091add..6dddcfb446f 100644 --- a/app/lib/l10n/app_localizations_tl.dart +++ b/app/lib/l10n/app_localizations_tl.dart @@ -4947,10 +4947,6 @@ class AppLocalizationsTl extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Additional Speech Sample Removed'; - @override - String get consentDataMessage => - 'Sa pagpapatuloy, ang iyong mga pag-uusap, recording, at personal na impormasyon ay ligtas na maiimbak sa aming mga server. Ang iyong mga audio recording at transcript ay pinoproseso ng third-party na mga serbisyo ng AI (kabilang ang Deepgram para sa transcription at OpenAI para sa analysis) upang mabigyan ka ng AI-powered na mga insight at ma-enable ang lahat ng feature ng app.'; - @override String get tasksEmptyStateMessage => 'Magsimula ng pag-uusap para gumawa ng gawain.'; @@ -13882,4 +13878,13 @@ class AppLocalizationsTl extends AppLocalizations { @override String get summaryFailedBody => 'Nagkaproblema habang ini-summarize ang usapang ito.'; + + @override + String get consentShortMessage => + 'Ginagamit ng Omi ang AI para gawing notes ang iyong mga usapan. Puwede mo itong burahin anumang oras.'; + + @override + String consentAiProviders(String providers) { + return 'Pinoproseso gamit ang $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_tr.dart b/app/lib/l10n/app_localizations_tr.dart index 25f4cfca936..08a10634c6a 100644 --- a/app/lib/l10n/app_localizations_tr.dart +++ b/app/lib/l10n/app_localizations_tr.dart @@ -4914,10 +4914,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Ek ses örneği kaldırıldı'; - @override - String get consentDataMessage => - 'Devam ederek, konuşmalarınız, kayıtlarınız ve kişisel bilgileriniz sunucularımızda güvenli bir şekilde saklanacaktır. Ses kayıtlarınız ve transkriptleriniz, size yapay zeka destekli içgörüler sağlamak ve tüm uygulama özelliklerini etkinleştirmek için üçüncü taraf yapay zeka hizmetleri (transkripsiyon için Deepgram ve analiz için OpenAI dahil) tarafından işlenir.'; - @override String get tasksEmptyStateMessage => 'Görev oluşturmak için bir konuşma başlatın.'; @@ -13786,4 +13782,13 @@ class AppLocalizationsTr extends AppLocalizations { @override String get summaryFailedBody => 'Bu konuşma özetlenirken bir sorun oluştu.'; + + @override + String get consentShortMessage => + 'Omi, konuşmalarını yapay zekâ ile notlara dönüştürür. İstediğin zaman silebilirsin.'; + + @override + String consentAiProviders(String providers) { + return '$providers ile işlenir.'; + } } diff --git a/app/lib/l10n/app_localizations_uk.dart b/app/lib/l10n/app_localizations_uk.dart index 2f511786828..78c1f7cca36 100644 --- a/app/lib/l10n/app_localizations_uk.dart +++ b/app/lib/l10n/app_localizations_uk.dart @@ -4912,10 +4912,6 @@ class AppLocalizationsUk extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Додатковий зразок голосу видалено'; - @override - String get consentDataMessage => - 'Продовжуючи, ваші розмови, записи та особиста інформація будуть надійно зберігатися на наших серверах. Ваші аудіозаписи та транскрипції обробляються сторонніми AI-сервісами (включаючи Deepgram для транскрипції та OpenAI для аналізу), щоб надати вам аналітику на основі ШІ та увімкнути всі функції додатку.'; - @override String get tasksEmptyStateMessage => 'Почніть розмову, щоб створити завдання.'; @@ -13804,4 +13800,13 @@ class AppLocalizationsUk extends AppLocalizations { @override String get summaryFailedBody => 'Під час підсумовування цієї розмови сталася помилка.'; + + @override + String get consentShortMessage => + 'Omi за допомогою ШІ перетворює ваші розмови на нотатки. Їх можна видалити будь-коли.'; + + @override + String consentAiProviders(String providers) { + return 'Обробка: $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_ur.dart b/app/lib/l10n/app_localizations_ur.dart index 44bbafc6404..06d786e7218 100644 --- a/app/lib/l10n/app_localizations_ur.dart +++ b/app/lib/l10n/app_localizations_ur.dart @@ -4914,10 +4914,6 @@ class AppLocalizationsUr extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'اضافی صوتی نمونہ ہٹایا گیا'; - @override - String get consentDataMessage => - 'جاری رکھ کر، آپ کی بات چیت، ریکارڈنگز اور ذاتی معلومات ہمارے سرورز پر محفوظ طریقے سے ذخیرہ کی جائیں گی۔ آپ کی آڈیو ریکارڈنگز اور ٹرانسکرپٹس تھرڈ پارٹی AI سروسز کے ذریعے پراسیس کی جاتی ہیں (بشمول ٹرانسکرپشن کے لیے Deepgram اور تجزیے کے لیے OpenAI) تاکہ آپ کو AI سے چلنے والی بصیرتیں فراہم کی جا سکیں اور ایپ کی تمام خصوصیات کو فعال کیا جا سکے۔'; - @override String get tasksEmptyStateMessage => 'ٹاسک بنانے کے لیے گفتگو شروع کریں۔'; @@ -13788,4 +13784,13 @@ class AppLocalizationsUr extends AppLocalizations { @override String get summaryFailedBody => 'اس گفتگو کا خلاصہ کرتے وقت کچھ غلط ہو گیا۔'; + + @override + String get consentShortMessage => + 'Omi AI کی مدد سے آپ کی گفتگو کو نوٹس میں بدلتا ہے۔ آپ انہیں کسی بھی وقت حذف کر سکتے ہیں۔'; + + @override + String consentAiProviders(String providers) { + return '$providers کے ذریعے پروسیس کیا جاتا ہے۔'; + } } diff --git a/app/lib/l10n/app_localizations_vi.dart b/app/lib/l10n/app_localizations_vi.dart index 2736d0364cb..ff2edda86fe 100644 --- a/app/lib/l10n/app_localizations_vi.dart +++ b/app/lib/l10n/app_localizations_vi.dart @@ -4916,10 +4916,6 @@ class AppLocalizationsVi extends AppLocalizations { @override String get additionalSpeechSampleRemoved => 'Đã xóa mẫu giọng nói bổ sung'; - @override - String get consentDataMessage => - 'Bằng cách tiếp tục, các cuộc trò chuyện, bản ghi âm và thông tin cá nhân của bạn sẽ được lưu trữ an toàn trên máy chủ của chúng tôi. Bản ghi âm và bản phiên âm của bạn được xử lý bởi các dịch vụ AI bên thứ ba (bao gồm Deepgram cho phiên âm và OpenAI cho phân tích) để cung cấp cho bạn thông tin chi tiết được hỗ trợ bởi AI và kích hoạt tất cả các tính năng ứng dụng.'; - @override String get tasksEmptyStateMessage => 'Bắt đầu cuộc trò chuyện để tạo nhiệm vụ.'; @@ -13775,4 +13771,13 @@ class AppLocalizationsVi extends AppLocalizations { @override String get summaryFailedBody => 'Đã xảy ra lỗi khi tóm tắt cuộc trò chuyện này.'; + + @override + String get consentShortMessage => + 'Omi dùng AI để biến các cuộc trò chuyện của bạn thành ghi chú. Bạn có thể xóa chúng bất cứ lúc nào.'; + + @override + String consentAiProviders(String providers) { + return 'Được xử lý bằng $providers.'; + } } diff --git a/app/lib/l10n/app_localizations_zh.dart b/app/lib/l10n/app_localizations_zh.dart index 037eec43e8a..a85cf3f4314 100644 --- a/app/lib/l10n/app_localizations_zh.dart +++ b/app/lib/l10n/app_localizations_zh.dart @@ -4822,10 +4822,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get additionalSpeechSampleRemoved => '已删除附加语音样本'; - @override - String get consentDataMessage => - '继续即表示您的对话、录音和个人信息将安全存储在我们的服务器上。您的音频录音和转录由第三方AI服务处理(包括用于转录的Deepgram和用于分析的OpenAI),以为您提供AI驱动的洞察并启用所有应用功能。'; - @override String get tasksEmptyStateMessage => '开始对话以创建任务。'; @@ -13562,4 +13558,12 @@ class AppLocalizationsZh extends AppLocalizations { @override String get summaryFailedBody => '总结此对话时出了点问题。'; + + @override + String get consentShortMessage => 'Omi 用 AI 把你的对话整理成笔记。你可以随时删除。'; + + @override + String consentAiProviders(String providers) { + return '由 $providers 处理。'; + } } diff --git a/app/lib/l10n/app_lt.arb b/app/lib/l10n/app_lt.arb index 8913f31e7cb..847d8e53f6c 100644 --- a/app/lib/l10n/app_lt.arb +++ b/app/lib/l10n/app_lt.arb @@ -462,7 +462,6 @@ "connectionLostDesc": "Ryšys buvo nutrauktas. Patikrinkite interneto ryšį ir bandykite dar kartą.", "connectionLostDescription": "Ryšys nutrūko. Patikrinkite savo interneto ryšį ir bandykite dar kartą.", "connectionNeeded": "🌐 Reikalingas ryšys", - "consentDataMessage": "Tęsdami, jūsų pokalbiai, įrašai ir asmeninė informacija bus saugiai saugomi mūsų serveriuose. Jūsų garso įrašai ir transkripcijos apdorojami trečiųjų šalių AI paslaugų (įskaitant Deepgram transkripcijai ir OpenAI analizei), kad suteiktų jums AI paremtas įžvalgas ir įgalintų visas programėlės funkcijas.", "considerOmiCloud": "Apsvarstykite Omi Cloud naudojimą geresniam veikimui.", "contactSupport": "Susisiekti su palaikymu?", "contactsPermissionRequired": "Reikalingas kontaktų leidimas", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Pasiektas santraukų limitas", "summaryLimitBody": "Per pastarąją valandą kelis kartus iš naujo sugeneravote santraukas. Bandykite vėliau.", "summaryFailedTitle": "Nepavyko apibendrinti", - "summaryFailedBody": "Apibendrinant šį pokalbį kažkas nutiko." + "summaryFailedBody": "Apibendrinant šį pokalbį kažkas nutiko.", + "consentShortMessage": "Omi naudoja DI, kad jūsų pokalbius paverstų užrašais. Juos galite ištrinti bet kada.", + "consentAiProviders": "Apdorojama su {providers}." } diff --git a/app/lib/l10n/app_lv.arb b/app/lib/l10n/app_lv.arb index 83543700659..851c50fa8a5 100644 --- a/app/lib/l10n/app_lv.arb +++ b/app/lib/l10n/app_lv.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Papildu paraugs {index}", "durationSeconds": "Ilgums: {seconds} sekundes", "additionalSpeechSampleRemoved": "Papildu balss paraugs noņemts", - "consentDataMessage": "Turpinot, jūsu sarunas, ieraksti un personiskā informācija tiks droši glabāta mūsu serveros. Jūsu audio ieraksti un transkripcijas tiek apstrādātas ar trešo pušu AI pakalpojumiem (ieskaitot Deepgram transkripcijai un OpenAI analīzei), lai sniegtu jums AI vadītus ieskatus un iespējotu visas lietotnes funkcijas.", "tasksEmptyStateMessage": "Sāciet sarunu, lai izveidotu uzdevumu.", "clearChatAction": "Notīrīt tērzēšanu", "enableApps": "Iespējot lietotnes", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Sasniegts kopsavilkumu limits", "summaryLimitBody": "Pēdējās stundas laikā jūs vairākkārt atkārtoti ģenerējāt kopsavilkumus. Mēģiniet vēlāk vēlreiz.", "summaryFailedTitle": "Neizdevās apkopot", - "summaryFailedBody": "Apkopojot šo sarunu, radās kļūda." + "summaryFailedBody": "Apkopojot šo sarunu, radās kļūda.", + "consentShortMessage": "Omi ar MI palīdzību pārvērš jūsu sarunas piezīmēs. Tās var izdzēst jebkurā laikā.", + "consentAiProviders": "Apstrādā {providers}." } diff --git a/app/lib/l10n/app_mk.arb b/app/lib/l10n/app_mk.arb index c42b9cb627d..6562cb117ba 100644 --- a/app/lib/l10n/app_mk.arb +++ b/app/lib/l10n/app_mk.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Со продолжување, вашите разговори, снимки и лични информации ќе бидат безбедно зачувани на нашите сервери. Вашите аудио снимки и транскрипти се обработуваат од AI услуги на трети страни (вклучувајќи Deepgram за транскрипција и OpenAI за анализа) за да ви обезбедат увиди базирани на AI и да ги овозможат сите функции на апликацијата.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Започнете разговор за да создадете задача.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Достигнато е ограничувањето за резимеа", "summaryLimitBody": "Во последниот час повеќе пати повторно генериравте резимеа. Обидете се повторно подоцна.", "summaryFailedTitle": "Не може да се сумира", - "summaryFailedBody": "Нешто тргна наопаку при сумирањето на овој разговор." + "summaryFailedBody": "Нешто тргна наопаку при сумирањето на овој разговор.", + "consentShortMessage": "Omi користи вештачка интелигенција за да ги претвори вашите разговори во белешки. Можете да ги избришете во секое време.", + "consentAiProviders": "Се обработува со {providers}." } diff --git a/app/lib/l10n/app_mr.arb b/app/lib/l10n/app_mr.arb index 44fec8dbc9d..4bb07757cda 100644 --- a/app/lib/l10n/app_mr.arb +++ b/app/lib/l10n/app_mr.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "पुढे चालू ठेवल्यास, तुमच्या संभाषणा, रेकॉर्डिंग आणि वैयक्तिक माहिती आमच्या सर्व्हरवर सुरक्षितपणे साठवली जाईल. तुमच्या ऑडिओ रेकॉर्डिंग आणि ट्रान्सक्रिप्ट तृतीय-पक्ष AI सेवांद्वारे प्रक्रिया केली जातात (ट्रान्सक्रिप्शनसाठी Deepgram आणि विश्लेषणासाठी OpenAI सह) तुम्हाला AI-चालित अंतर्दृष्टी प्रदान करण्यासाठी आणि सर्व अॅप वैशिष्ट्ये सक्षम करण्यासाठी.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "कार्य तयार करण्यासाठी संभाषण सुरू करा.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "सारांश मर्यादा गाठली", "summaryLimitBody": "तुम्ही गेल्या तासात अनेक सारांश पुन्हा तयार केले आहेत. नंतर पुन्हा प्रयत्न करा.", "summaryFailedTitle": "सारांश करता आला नाही", - "summaryFailedBody": "हे संभाषण सारांशित करताना काहीतरी चूक झाली." + "summaryFailedBody": "हे संभाषण सारांशित करताना काहीतरी चूक झाली.", + "consentShortMessage": "Omi AI वापरून तुमच्या संभाषणांच्या नोट्स बनवते. तुम्ही त्या कधीही हटवू शकता.", + "consentAiProviders": "{providers} द्वारे प्रक्रिया केली जाते." } diff --git a/app/lib/l10n/app_ms.arb b/app/lib/l10n/app_ms.arb index 21c5850fc98..80b825bf070 100644 --- a/app/lib/l10n/app_ms.arb +++ b/app/lib/l10n/app_ms.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Sampel tambahan {index}", "durationSeconds": "Tempoh: {seconds} saat", "additionalSpeechSampleRemoved": "Sampel suara tambahan dibuang", - "consentDataMessage": "Dengan meneruskan, perbualan, rakaman dan maklumat peribadi anda akan disimpan dengan selamat di pelayan kami. Rakaman audio dan transkrip anda diproses oleh perkhidmatan AI pihak ketiga (termasuk Deepgram untuk transkripsi dan OpenAI untuk analisis) untuk memberikan anda pandangan dikuasakan AI dan membolehkan semua ciri aplikasi.", "tasksEmptyStateMessage": "Mulakan perbualan untuk mencipta tugasan.", "clearChatAction": "Kosongkan sembang", "enableApps": "Dayakan aplikasi", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Had ringkasan dicapai", "summaryLimitBody": "Anda telah menjana semula beberapa ringkasan dalam sejam yang lalu. Cuba lagi nanti.", "summaryFailedTitle": "Tidak dapat meringkaskan", - "summaryFailedBody": "Sesuatu tidak kena semasa meringkaskan perbualan ini." + "summaryFailedBody": "Sesuatu tidak kena semasa meringkaskan perbualan ini.", + "consentShortMessage": "Omi menggunakan AI untuk menukar perbualan anda kepada nota. Anda boleh memadamkannya bila-bila masa.", + "consentAiProviders": "Diproses dengan {providers}." } diff --git a/app/lib/l10n/app_nl.arb b/app/lib/l10n/app_nl.arb index 76623bc4745..5a097ae908d 100644 --- a/app/lib/l10n/app_nl.arb +++ b/app/lib/l10n/app_nl.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Extra voorbeeld {index}", "durationSeconds": "Duur: {seconds} seconden", "additionalSpeechSampleRemoved": "Extra spraakvoorbeeld verwijderd", - "consentDataMessage": "Door verder te gaan worden uw gesprekken, opnames en persoonlijke informatie veilig opgeslagen op onze servers. Uw audio-opnames en transcripties worden verwerkt door AI-diensten van derden (waaronder Deepgram voor transcriptie en OpenAI voor analyse) om u AI-gestuurde inzichten te bieden en alle app-functies mogelijk te maken.", "tasksEmptyStateMessage": "Begin een gesprek om een taak aan te maken.", "clearChatAction": "Chat wissen", "enableApps": "Apps inschakelen", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Limiet voor samenvattingen bereikt", "summaryLimitBody": "Je hebt het afgelopen uur meerdere samenvattingen opnieuw gegenereerd. Probeer het later opnieuw.", "summaryFailedTitle": "Samenvatten mislukt", - "summaryFailedBody": "Er ging iets mis bij het samenvatten van dit gesprek." + "summaryFailedBody": "Er ging iets mis bij het samenvatten van dit gesprek.", + "consentShortMessage": "Omi maakt met AI notities van je gesprekken. Je kunt ze altijd verwijderen.", + "consentAiProviders": "Verwerkt met {providers}." } diff --git a/app/lib/l10n/app_no.arb b/app/lib/l10n/app_no.arb index 68584ce8f81..67317f2b55b 100644 --- a/app/lib/l10n/app_no.arb +++ b/app/lib/l10n/app_no.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Ekstra prøve {index}", "durationSeconds": "Varighet: {seconds} sekunder", "additionalSpeechSampleRemoved": "Ekstra taleprøve fjernet", - "consentDataMessage": "Ved å fortsette vil samtalene, opptakene og den personlige informasjonen din bli lagret sikkert på våre servere. Lydopptakene og transkripsjonene dine behandles av tredjeparts AI-tjenester (inkludert Deepgram for transkripsjon og OpenAI for analyse) for å gi deg AI-drevne innsikter og aktivere alle appfunksjoner.", "tasksEmptyStateMessage": "Start en samtale for å opprette en oppgave.", "clearChatAction": "Tøm chat", "enableApps": "Aktiver apper", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Grensen for oppsummeringer er nådd", "summaryLimitBody": "Du har generert flere oppsummeringer på nytt den siste timen. Prøv igjen senere.", "summaryFailedTitle": "Kunne ikke oppsummere", - "summaryFailedBody": "Noe gikk galt under oppsummeringen av denne samtalen." + "summaryFailedBody": "Noe gikk galt under oppsummeringen av denne samtalen.", + "consentShortMessage": "Omi bruker KI til å gjøre samtalene dine om til notater. Du kan slette dem når som helst.", + "consentAiProviders": "Behandles med {providers}." } diff --git a/app/lib/l10n/app_pl.arb b/app/lib/l10n/app_pl.arb index 023cbecb27c..173f894100a 100644 --- a/app/lib/l10n/app_pl.arb +++ b/app/lib/l10n/app_pl.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Dodatkowa próbka {index}", "durationSeconds": "Czas trwania: {seconds} sekund", "additionalSpeechSampleRemoved": "Dodatkowa próbka głosowa usunięta", - "consentDataMessage": "Kontynuując, Twoje rozmowy, nagrania i dane osobowe będą bezpiecznie przechowywane na naszych serwerach. Twoje nagrania audio i transkrypcje są przetwarzane przez zewnętrzne usługi AI (w tym Deepgram do transkrypcji i OpenAI do analizy), aby dostarczyć Ci wglądy oparte na AI i umożliwić wszystkie funkcje aplikacji.", "tasksEmptyStateMessage": "Rozpocznij rozmowę, aby utworzyć zadanie.", "clearChatAction": "Wyczyść czat", "enableApps": "Włącz aplikacje", @@ -4256,5 +4255,7 @@ "summaryLimitTitle": "Osiągnięto limit podsumowań", "summaryLimitBody": "W ciągu ostatniej godziny kilkakrotnie wygenerowano ponownie podsumowania. Spróbuj ponownie później.", "summaryFailedTitle": "Nie udało się podsumować", - "summaryFailedBody": "Coś poszło nie tak podczas podsumowywania tej rozmowy." + "summaryFailedBody": "Coś poszło nie tak podczas podsumowywania tej rozmowy.", + "consentShortMessage": "Omi za pomocą AI zamienia Twoje rozmowy w notatki. Możesz je usunąć w każdej chwili.", + "consentAiProviders": "Przetwarzane przez {providers}." } diff --git a/app/lib/l10n/app_pt.arb b/app/lib/l10n/app_pt.arb index 0c0ae5964bc..758bd3e97e9 100644 --- a/app/lib/l10n/app_pt.arb +++ b/app/lib/l10n/app_pt.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Amostra adicional {index}", "durationSeconds": "Duração: {seconds} segundos", "additionalSpeechSampleRemoved": "Amostra de voz adicional removida", - "consentDataMessage": "Ao continuar, suas conversas, gravações e informações pessoais serão armazenadas com segurança em nossos servidores. Suas gravações de áudio e transcrições são processadas por serviços de IA de terceiros (incluindo Deepgram para transcrição e OpenAI para análise) para fornecer insights baseados em IA e habilitar todos os recursos do aplicativo.", "tasksEmptyStateMessage": "Inicie uma conversa para criar uma tarefa.", "clearChatAction": "Limpar conversa", "enableApps": "Ativar aplicativos", @@ -4256,5 +4255,7 @@ "summaryLimitTitle": "Limite de resumos atingido", "summaryLimitBody": "Você gerou novamente vários resumos na última hora. Tente novamente mais tarde.", "summaryFailedTitle": "Não foi possível resumir", - "summaryFailedBody": "Algo deu errado ao resumir esta conversa." + "summaryFailedBody": "Algo deu errado ao resumir esta conversa.", + "consentShortMessage": "O Omi usa IA para transformar suas conversas em notas. Você pode excluí-las quando quiser.", + "consentAiProviders": "Processado com {providers}." } diff --git a/app/lib/l10n/app_ro.arb b/app/lib/l10n/app_ro.arb index 2c3422d16b7..573762ddffa 100644 --- a/app/lib/l10n/app_ro.arb +++ b/app/lib/l10n/app_ro.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Mostră suplimentară {index}", "durationSeconds": "Durată: {seconds} secunde", "additionalSpeechSampleRemoved": "Mostră vocală suplimentară eliminată", - "consentDataMessage": "Continuând, conversațiile, înregistrările și informațiile dvs. personale vor fi stocate în siguranță pe serverele noastre. Înregistrările audio și transcrierile dvs. sunt procesate de servicii AI terțe (inclusiv Deepgram pentru transcriere și OpenAI pentru analiză) pentru a vă oferi informații bazate pe AI și a activa toate funcțiile aplicației.", "tasksEmptyStateMessage": "Începe o conversație pentru a crea o sarcină.", "clearChatAction": "Șterge conversația", "enableApps": "Activează aplicațiile", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Limita de rezumate a fost atinsă", "summaryLimitBody": "Ai regenerat mai multe rezumate în ultima oră. Încearcă din nou mai târziu.", "summaryFailedTitle": "Nu s-a putut rezuma", - "summaryFailedBody": "A apărut o problemă la rezumarea acestei conversații." + "summaryFailedBody": "A apărut o problemă la rezumarea acestei conversații.", + "consentShortMessage": "Omi folosește AI pentru a transforma conversațiile tale în notițe. Le poți șterge oricând.", + "consentAiProviders": "Procesat cu {providers}." } diff --git a/app/lib/l10n/app_ru.arb b/app/lib/l10n/app_ru.arb index d195cb135bf..b4f7f89a1bc 100644 --- a/app/lib/l10n/app_ru.arb +++ b/app/lib/l10n/app_ru.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Дополнительный образец {index}", "durationSeconds": "Длительность: {seconds} секунд", "additionalSpeechSampleRemoved": "Дополнительный образец голоса удален", - "consentDataMessage": "Продолжая, ваши разговоры, записи и личная информация будут надежно храниться на наших серверах. Ваши аудиозаписи и транскрипции обрабатываются сторонними AI-сервисами (включая Deepgram для транскрипции и OpenAI для анализа), чтобы предоставить вам аналитику на основе ИИ и обеспечить работу всех функций приложения.", "tasksEmptyStateMessage": "Начните разговор, чтобы создать задачу.", "clearChatAction": "Очистить чат", "enableApps": "Включить приложения", @@ -4256,5 +4255,7 @@ "summaryLimitTitle": "Достигнут лимит сводок", "summaryLimitBody": "За последний час вы несколько раз пересоздали сводки. Повторите попытку позже.", "summaryFailedTitle": "Не удалось обобщить", - "summaryFailedBody": "При обобщении этого разговора что-то пошло не так." + "summaryFailedBody": "При обобщении этого разговора что-то пошло не так.", + "consentShortMessage": "Omi с помощью ИИ превращает ваши разговоры в заметки. Их можно удалить в любой момент.", + "consentAiProviders": "Обработка: {providers}." } diff --git a/app/lib/l10n/app_sk.arb b/app/lib/l10n/app_sk.arb index c255eedf9cf..f13d61ba311 100644 --- a/app/lib/l10n/app_sk.arb +++ b/app/lib/l10n/app_sk.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Ďalšia vzorka {index}", "durationSeconds": "Trvanie: {seconds} sekúnd", "additionalSpeechSampleRemoved": "Ďalšia hlasová vzorka odstránená", - "consentDataMessage": "Pokračovaním budú vaše konverzácie, nahrávky a osobné údaje bezpečne uložené na našich serveroch. Vaše audio nahrávky a prepisy sú spracovávané AI službami tretích strán (vrátane Deepgram na prepis a OpenAI na analýzu), aby vám poskytli poznatky založené na AI a umožnili všetky funkcie aplikácie.", "tasksEmptyStateMessage": "Začnite konverzáciu a vytvorte úlohu.", "clearChatAction": "Vymazať chat", "enableApps": "Povoliť aplikácie", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Dosiahnutý limit zhrnutí", "summaryLimitBody": "Za poslednú hodinu ste niekoľkokrát znova vygenerovali zhrnutia. Skúste to neskôr.", "summaryFailedTitle": "Zhrnutie sa nepodarilo", - "summaryFailedBody": "Pri zhrnutí tohto rozhovoru sa niečo pokazilo." + "summaryFailedBody": "Pri zhrnutí tohto rozhovoru sa niečo pokazilo.", + "consentShortMessage": "Omi pomocou AI mení vaše konverzácie na poznámky. Kedykoľvek ich môžete vymazať.", + "consentAiProviders": "Spracúva {providers}." } diff --git a/app/lib/l10n/app_sl.arb b/app/lib/l10n/app_sl.arb index b6f540e2661..e3daba5d8c1 100644 --- a/app/lib/l10n/app_sl.arb +++ b/app/lib/l10n/app_sl.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Z nadaljevanjem bodo vaši pogovori, posnetki in osebni podatki varno shranjeni na naših strežnikih. Vaši zvočni posnetki in prepisi se obdelujejo s storitvami umetne inteligence tretjih oseb (vključno z Deepgram za prepis in OpenAI za analizo), da vam zagotovimo vpoglede, ki jih poganja umetna inteligenca, in omogočimo vse funkcije aplikacije.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Začnite pogovor, da ustvarite nalogo.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Dosežena omejitev povzetkov", "summaryLimitBody": "V zadnji uri ste večkrat znova ustvarili povzetke. Poskusite znova pozneje.", "summaryFailedTitle": "Povzemanje ni uspelo", - "summaryFailedBody": "Pri povzemanju tega pogovora je prišlo do napake." + "summaryFailedBody": "Pri povzemanju tega pogovora je prišlo do napake.", + "consentShortMessage": "Omi z umetno inteligenco spremeni vaše pogovore v zapiske. Kadar koli jih lahko izbrišete.", + "consentAiProviders": "Obdelano z {providers}." } diff --git a/app/lib/l10n/app_sr.arb b/app/lib/l10n/app_sr.arb index 367a446670a..09378e59bd7 100644 --- a/app/lib/l10n/app_sr.arb +++ b/app/lib/l10n/app_sr.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Настављањем, ваши разговори, снимци и лични подаци биће безбедно ускладиштени на нашим серверима. Ваши аудио снимци и транскрипти се обрађују од стране AI сервиса трећих страна (укључујући Deepgram за транскрипцију и OpenAI за анализу) како би вам пружили увиде засноване на вештачкој интелигенцији и омогућили све функције апликације.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Започните разговор да бисте направили задатак.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Достигнуто је ограничење сажетака", "summaryLimitBody": "У последњих сат времена сте више пута поново генерисали сажетке. Покушајте поново касније.", "summaryFailedTitle": "Сажимање није успело", - "summaryFailedBody": "Дошло је до грешке приликом сажимања овог разговора." + "summaryFailedBody": "Дошло је до грешке приликом сажимања овог разговора.", + "consentShortMessage": "Omi користи AI да ваше разговоре претвори у белешке. Можете их обрисати у било ком тренутку.", + "consentAiProviders": "Обрађује се помоћу {providers}." } diff --git a/app/lib/l10n/app_sv.arb b/app/lib/l10n/app_sv.arb index 57b2df35f59..533fdd05e78 100644 --- a/app/lib/l10n/app_sv.arb +++ b/app/lib/l10n/app_sv.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Ytterligare prov {index}", "durationSeconds": "Längd: {seconds} sekunder", "additionalSpeechSampleRemoved": "Ytterligare röstprov borttaget", - "consentDataMessage": "Genom att fortsätta kommer dina konversationer, inspelningar och personlig information att lagras säkert på våra servrar. Dina ljudinspelningar och transkriptioner behandlas av AI-tjänster från tredje part (inklusive Deepgram för transkription och OpenAI för analys) för att ge dig AI-drivna insikter och aktivera alla appfunktioner.", "tasksEmptyStateMessage": "Starta ett samtal för att skapa en uppgift.", "clearChatAction": "Rensa chatt", "enableApps": "Aktivera appar", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Gränsen för sammanfattningar har nåtts", "summaryLimitBody": "Du har skapat om flera sammanfattningar under den senaste timmen. Försök igen senare.", "summaryFailedTitle": "Det gick inte att sammanfatta", - "summaryFailedBody": "Något gick fel när det här samtalet skulle sammanfattas." + "summaryFailedBody": "Något gick fel när det här samtalet skulle sammanfattas.", + "consentShortMessage": "Omi använder AI för att göra dina samtal till anteckningar. Du kan radera dem när som helst.", + "consentAiProviders": "Bearbetas med {providers}." } diff --git a/app/lib/l10n/app_ta.arb b/app/lib/l10n/app_ta.arb index bd2d357f147..0273b6e785c 100644 --- a/app/lib/l10n/app_ta.arb +++ b/app/lib/l10n/app_ta.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "தொடர்வதன் மூலம், உங்கள் உரையாடல்கள், பதிவுகள் மற்றும் தனிப்பட்ட தகவல்கள் எங்கள் சேவையகங்களில் பாதுகாப்பாக சேமிக்கப்படும். உங்கள் ஆடியோ பதிவுகள் மற்றும் படியெடுப்புகள் மூன்றாம் தரப்பு AI சேவைகளால் செயலாக்கப்படுகின்றன (படியெடுப்பிற்கு Deepgram மற்றும் பகுப்பாய்விற்கு OpenAI உட்பட) AI இயக்கும் நுண்ணறிவுகளை உங்களுக்கு வழங்கவும் அனைத்து பயன்பாட்டு அம்சங்களையும் இயக்கவும்.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "ஒரு பணியை உருவாக்க உரையாடலைத் தொடங்குங்கள்.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "சுருக்க வரம்பை அடைந்துவிட்டீர்கள்", "summaryLimitBody": "கடந்த ஒரு மணிநேரத்தில் பல சுருக்கங்களை மீண்டும் உருவாக்கியுள்ளீர்கள். பிறகு மீண்டும் முயலவும்.", "summaryFailedTitle": "சுருக்க முடியவில்லை", - "summaryFailedBody": "இந்த உரையாடலைச் சுருக்கும்போது ஏதோ தவறு நடந்தது." + "summaryFailedBody": "இந்த உரையாடலைச் சுருக்கும்போது ஏதோ தவறு நடந்தது.", + "consentShortMessage": "Omi AI மூலம் உங்கள் உரையாடல்களைக் குறிப்புகளாக மாற்றுகிறது. எப்போது வேண்டுமானாலும் நீக்கலாம்.", + "consentAiProviders": "{providers} மூலம் செயலாக்கப்படுகிறது." } diff --git a/app/lib/l10n/app_te.arb b/app/lib/l10n/app_te.arb index 32ffef207e0..58410375424 100644 --- a/app/lib/l10n/app_te.arb +++ b/app/lib/l10n/app_te.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "కొనసాగించడం ద్వారా, మీ సంభాషణలు, రికార్డింగ్‌లు మరియు వ్యక్తిగత సమాచారం మా సర్వర్‌లలో సురక్షితంగా నిల్వ చేయబడతాయి. మీ ఆడియో రికార్డింగ్‌లు మరియు ట్రాన్‌స్క్రిప్ట్‌లు థర్డ్-పార్టీ AI సేవల ద్వారా ప్రాసెస్ చేయబడతాయి (ట్రాన్‌స్క్రిప్షన్ కోసం Deepgram మరియు విశ్లేషణ కోసం OpenAI సహా) AI-ఆధారిత అంతర్దృష్టులను అందించడానికి మరియు అన్ని యాప్ ఫీచర్‌లను ప్రారంభించడానికి.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "పనిని సృష్టించడానికి సంభాషణను ప్రారంభించండి.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "సారాంశ పరిమితిని చేరుకున్నారు", "summaryLimitBody": "గత గంటలో మీరు అనేక సారాంశాలను మళ్లీ రూపొందించారు. తర్వాత మళ్లీ ప్రయత్నించండి.", "summaryFailedTitle": "సారాంశం చేయలేకపోయాము", - "summaryFailedBody": "ఈ సంభాషణను సారాంశం చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది." + "summaryFailedBody": "ఈ సంభాషణను సారాంశం చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది.", + "consentShortMessage": "Omi AI సహాయంతో మీ సంభాషణలను నోట్స్‌గా మారుస్తుంది. వాటిని ఎప్పుడైనా తొలగించవచ్చు.", + "consentAiProviders": "{providers} ద్వారా ప్రాసెస్ చేయబడుతుంది." } diff --git a/app/lib/l10n/app_th.arb b/app/lib/l10n/app_th.arb index e9ba51f92ee..3238bf55870 100644 --- a/app/lib/l10n/app_th.arb +++ b/app/lib/l10n/app_th.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "ตัวอย่างเพิ่มเติม {index}", "durationSeconds": "ระยะเวลา: {seconds} วินาที", "additionalSpeechSampleRemoved": "ลบตัวอย่างเสียงเพิ่มเติมแล้ว", - "consentDataMessage": "เมื่อดำเนินการต่อ การสนทนา การบันทึก และข้อมูลส่วนบุคคลของคุณจะถูกจัดเก็บอย่างปลอดภัยบนเซิร์ฟเวอร์ของเรา การบันทึกเสียงและการถอดความของคุณจะถูกประมวลผลโดยบริการ AI ของบุคคลที่สาม (รวมถึง Deepgram สำหรับการถอดความ และ OpenAI สำหรับการวิเคราะห์) เพื่อมอบข้อมูลเชิงลึกที่ขับเคลื่อนด้วย AI และเปิดใช้งานคุณสมบัติทั้งหมดของแอป", "tasksEmptyStateMessage": "เริ่มการสนทนาเพื่อสร้างงาน", "clearChatAction": "ล้างแชท", "enableApps": "เปิดใช้งานแอป", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "ถึงขีดจำกัดการสรุปแล้ว", "summaryLimitBody": "คุณสร้างสรุปใหม่หลายครั้งในชั่วโมงที่ผ่านมา โปรดลองอีกครั้งในภายหลัง", "summaryFailedTitle": "สรุปไม่ได้", - "summaryFailedBody": "เกิดข้อผิดพลาดขณะสรุปบทสนทนานี้" + "summaryFailedBody": "เกิดข้อผิดพลาดขณะสรุปบทสนทนานี้", + "consentShortMessage": "Omi ใช้ AI เปลี่ยนบทสนทนาของคุณเป็นโน้ต คุณลบได้ทุกเมื่อ", + "consentAiProviders": "ประมวลผลด้วย {providers}" } diff --git a/app/lib/l10n/app_tl.arb b/app/lib/l10n/app_tl.arb index f94c8079b48..3cc15974f37 100644 --- a/app/lib/l10n/app_tl.arb +++ b/app/lib/l10n/app_tl.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "Sa pagpapatuloy, ang iyong mga pag-uusap, recording, at personal na impormasyon ay ligtas na maiimbak sa aming mga server. Ang iyong mga audio recording at transcript ay pinoproseso ng third-party na mga serbisyo ng AI (kabilang ang Deepgram para sa transcription at OpenAI para sa analysis) upang mabigyan ka ng AI-powered na mga insight at ma-enable ang lahat ng feature ng app.", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "Magsimula ng pag-uusap para gumawa ng gawain.", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "Naabot na ang limitasyon ng buod", "summaryLimitBody": "Ilang beses ka nang gumawa muli ng buod sa nakaraang oras. Subukan muli mamaya.", "summaryFailedTitle": "Hindi ma-summarize", - "summaryFailedBody": "Nagkaproblema habang ini-summarize ang usapang ito." + "summaryFailedBody": "Nagkaproblema habang ini-summarize ang usapang ito.", + "consentShortMessage": "Ginagamit ng Omi ang AI para gawing notes ang iyong mga usapan. Puwede mo itong burahin anumang oras.", + "consentAiProviders": "Pinoproseso gamit ang {providers}." } diff --git a/app/lib/l10n/app_tr.arb b/app/lib/l10n/app_tr.arb index be74e3e137d..04b706f0eed 100644 --- a/app/lib/l10n/app_tr.arb +++ b/app/lib/l10n/app_tr.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Ek örnek {index}", "durationSeconds": "Süre: {seconds} saniye", "additionalSpeechSampleRemoved": "Ek ses örneği kaldırıldı", - "consentDataMessage": "Devam ederek, konuşmalarınız, kayıtlarınız ve kişisel bilgileriniz sunucularımızda güvenli bir şekilde saklanacaktır. Ses kayıtlarınız ve transkriptleriniz, size yapay zeka destekli içgörüler sağlamak ve tüm uygulama özelliklerini etkinleştirmek için üçüncü taraf yapay zeka hizmetleri (transkripsiyon için Deepgram ve analiz için OpenAI dahil) tarafından işlenir.", "tasksEmptyStateMessage": "Görev oluşturmak için bir konuşma başlatın.", "clearChatAction": "Sohbeti temizle", "enableApps": "Uygulamaları etkinleştir", @@ -4256,5 +4255,7 @@ "summaryLimitTitle": "Özet sınırına ulaşıldı", "summaryLimitBody": "Son bir saat içinde birkaç özeti yeniden oluşturdunuz. Daha sonra tekrar deneyin.", "summaryFailedTitle": "Özetlenemedi", - "summaryFailedBody": "Bu konuşma özetlenirken bir sorun oluştu." + "summaryFailedBody": "Bu konuşma özetlenirken bir sorun oluştu.", + "consentShortMessage": "Omi, konuşmalarını yapay zekâ ile notlara dönüştürür. İstediğin zaman silebilirsin.", + "consentAiProviders": "{providers} ile işlenir." } diff --git a/app/lib/l10n/app_uk.arb b/app/lib/l10n/app_uk.arb index 6fad892db70..1d43bf91641 100644 --- a/app/lib/l10n/app_uk.arb +++ b/app/lib/l10n/app_uk.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Додатковий зразок {index}", "durationSeconds": "Тривалість: {seconds} секунд", "additionalSpeechSampleRemoved": "Додатковий зразок голосу видалено", - "consentDataMessage": "Продовжуючи, ваші розмови, записи та особиста інформація будуть надійно зберігатися на наших серверах. Ваші аудіозаписи та транскрипції обробляються сторонніми AI-сервісами (включаючи Deepgram для транскрипції та OpenAI для аналізу), щоб надати вам аналітику на основі ШІ та увімкнути всі функції додатку.", "tasksEmptyStateMessage": "Почніть розмову, щоб створити завдання.", "clearChatAction": "Очистити чат", "enableApps": "Увімкнути додатки", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Досягнуто ліміту підсумків", "summaryLimitBody": "За останню годину ви кілька разів повторно створили підсумки. Спробуйте пізніше.", "summaryFailedTitle": "Не вдалося підсумувати", - "summaryFailedBody": "Під час підсумовування цієї розмови сталася помилка." + "summaryFailedBody": "Під час підсумовування цієї розмови сталася помилка.", + "consentShortMessage": "Omi за допомогою ШІ перетворює ваші розмови на нотатки. Їх можна видалити будь-коли.", + "consentAiProviders": "Обробка: {providers}." } diff --git a/app/lib/l10n/app_ur.arb b/app/lib/l10n/app_ur.arb index 0cc162e914c..8ec73e5239d 100644 --- a/app/lib/l10n/app_ur.arb +++ b/app/lib/l10n/app_ur.arb @@ -5782,10 +5782,6 @@ "@additionalSpeechSampleRemoved": { "description": "Confirmation message when an additional speech sample is deleted" }, - "consentDataMessage": "جاری رکھ کر، آپ کی بات چیت، ریکارڈنگز اور ذاتی معلومات ہمارے سرورز پر محفوظ طریقے سے ذخیرہ کی جائیں گی۔ آپ کی آڈیو ریکارڈنگز اور ٹرانسکرپٹس تھرڈ پارٹی AI سروسز کے ذریعے پراسیس کی جاتی ہیں (بشمول ٹرانسکرپشن کے لیے Deepgram اور تجزیے کے لیے OpenAI) تاکہ آپ کو AI سے چلنے والی بصیرتیں فراہم کی جا سکیں اور ایپ کی تمام خصوصیات کو فعال کیا جا سکے۔", - "@consentDataMessage": { - "description": "Consent message explaining how user data will be stored and used" - }, "tasksEmptyStateMessage": "ٹاسک بنانے کے لیے گفتگو شروع کریں۔", "@tasksEmptyStateMessage": { "description": "Empty state message shown when there are no tasks, with instruction to tap + button" @@ -11644,5 +11640,7 @@ "summaryLimitTitle": "خلاصے کی حد پوری ہو گئی", "summaryLimitBody": "آپ نے پچھلے ایک گھنٹے میں کئی خلاصے دوبارہ بنائے ہیں۔ بعد میں دوبارہ کوشش کریں۔", "summaryFailedTitle": "خلاصہ نہیں ہو سکا", - "summaryFailedBody": "اس گفتگو کا خلاصہ کرتے وقت کچھ غلط ہو گیا۔" + "summaryFailedBody": "اس گفتگو کا خلاصہ کرتے وقت کچھ غلط ہو گیا۔", + "consentShortMessage": "Omi AI کی مدد سے آپ کی گفتگو کو نوٹس میں بدلتا ہے۔ آپ انہیں کسی بھی وقت حذف کر سکتے ہیں۔", + "consentAiProviders": "{providers} کے ذریعے پروسیس کیا جاتا ہے۔" } diff --git a/app/lib/l10n/app_vi.arb b/app/lib/l10n/app_vi.arb index 579017ba0ff..8297fe2a943 100644 --- a/app/lib/l10n/app_vi.arb +++ b/app/lib/l10n/app_vi.arb @@ -1504,7 +1504,6 @@ "additionalSampleIndex": "Mẫu bổ sung {index}", "durationSeconds": "Thời lượng: {seconds} giây", "additionalSpeechSampleRemoved": "Đã xóa mẫu giọng nói bổ sung", - "consentDataMessage": "Bằng cách tiếp tục, các cuộc trò chuyện, bản ghi âm và thông tin cá nhân của bạn sẽ được lưu trữ an toàn trên máy chủ của chúng tôi. Bản ghi âm và bản phiên âm của bạn được xử lý bởi các dịch vụ AI bên thứ ba (bao gồm Deepgram cho phiên âm và OpenAI cho phân tích) để cung cấp cho bạn thông tin chi tiết được hỗ trợ bởi AI và kích hoạt tất cả các tính năng ứng dụng.", "tasksEmptyStateMessage": "Bắt đầu cuộc trò chuyện để tạo nhiệm vụ.", "clearChatAction": "Xóa cuộc trò chuyện", "enableApps": "Kích hoạt ứng dụng", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "Đã đạt giới hạn tóm tắt", "summaryLimitBody": "Bạn đã tạo lại nhiều bản tóm tắt trong giờ qua. Hãy thử lại sau.", "summaryFailedTitle": "Không thể tóm tắt", - "summaryFailedBody": "Đã xảy ra lỗi khi tóm tắt cuộc trò chuyện này." + "summaryFailedBody": "Đã xảy ra lỗi khi tóm tắt cuộc trò chuyện này.", + "consentShortMessage": "Omi dùng AI để biến các cuộc trò chuyện của bạn thành ghi chú. Bạn có thể xóa chúng bất cứ lúc nào.", + "consentAiProviders": "Được xử lý bằng {providers}." } diff --git a/app/lib/l10n/app_zh.arb b/app/lib/l10n/app_zh.arb index 28815048367..172946cc87a 100644 --- a/app/lib/l10n/app_zh.arb +++ b/app/lib/l10n/app_zh.arb @@ -1507,7 +1507,6 @@ "additionalSampleIndex": "附加样本 {index}", "durationSeconds": "时长: {seconds} 秒", "additionalSpeechSampleRemoved": "已删除附加语音样本", - "consentDataMessage": "继续即表示您的对话、录音和个人信息将安全存储在我们的服务器上。您的音频录音和转录由第三方AI服务处理(包括用于转录的Deepgram和用于分析的OpenAI),以为您提供AI驱动的洞察并启用所有应用功能。", "tasksEmptyStateMessage": "开始对话以创建任务。", "clearChatAction": "清除聊天", "enableApps": "启用应用", @@ -4221,5 +4220,7 @@ "summaryLimitTitle": "已达到摘要次数上限", "summaryLimitBody": "你在过去一小时内多次重新生成了摘要。请稍后再试。", "summaryFailedTitle": "无法生成摘要", - "summaryFailedBody": "总结此对话时出了点问题。" + "summaryFailedBody": "总结此对话时出了点问题。", + "consentShortMessage": "Omi 用 AI 把你的对话整理成笔记。你可以随时删除。", + "consentAiProviders": "由 {providers} 处理。" } diff --git a/app/lib/mobile/mobile_app.dart b/app/lib/mobile/mobile_app.dart index 33e210dfdd9..370b2efce2c 100644 --- a/app/lib/mobile/mobile_app.dart +++ b/app/lib/mobile/mobile_app.dart @@ -4,7 +4,6 @@ import 'package:provider/provider.dart'; import 'package:omi/backend/preferences.dart'; import 'package:omi/pages/home/page.dart'; -import 'package:omi/pages/onboarding/device_selection.dart'; import 'package:omi/pages/onboarding/permissions/permissions_checker.dart'; import 'package:omi/pages/onboarding/wrapper.dart'; import 'package:omi/providers/auth_provider.dart'; @@ -72,7 +71,8 @@ class _MobileAppState extends State { }, ); } else { - return const DeviceSelectionPage(); + // Signed out: straight to sign-in, the first onboarding step. + return const OnboardingWrapper(); } }, ); diff --git a/app/lib/pages/onboarding/ai_consent_widget.dart b/app/lib/pages/onboarding/ai_consent_widget.dart index ab542ef98cf..b671886d2f1 100644 --- a/app/lib/pages/onboarding/ai_consent_widget.dart +++ b/app/lib/pages/onboarding/ai_consent_widget.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:omi/pages/onboarding/widgets/onboarding_card.dart'; +import 'package:omi/pages/onboarding/variants/yinka/widgets/onboarding_card.dart'; import 'package:omi/providers/auth_provider.dart'; import 'package:omi/ui/ui.dart'; import 'package:omi/utils/l10n_extensions.dart'; @@ -41,49 +41,85 @@ class _AiConsentWidgetState extends State { super.dispose(); } + /// The third-party AI services that receive audio and transcripts. Brand names, not translated. + /// Keep in step with the privacy policy and the serving configuration (Apple 5.1.2(i): name who + /// receives the data). + static const _aiProviders = 'Deepgram & OpenAI'; + @override Widget build(BuildContext context) { - final linkStyle = OmiType.footnote.copyWith(color: OmiColors.textPrimary, decoration: TextDecoration.underline); - return OnboardingStep( - card: OnboardingCard( - crossAxisAlignment: CrossAxisAlignment.start, - content: [ - Semantics(header: true, child: Text(context.l10n.dataAndPrivacy, style: OmiType.title1)), - const SizedBox(height: OmiSpacing.md), - Text(context.l10n.consentDataMessage, style: OmiType.subhead.copyWith(height: 1.5)), - const SizedBox(height: OmiSpacing.md), - RichText( - text: TextSpan( - style: OmiType.footnote.copyWith(color: OmiColors.textSecondary, height: 1.4), - children: [ - TextSpan(text: context.l10n.yourDataIsProtected), - TextSpan(text: context.l10n.privacyPolicy, style: linkStyle, recognizer: _privacyRecognizer), - TextSpan(text: context.l10n.and), - TextSpan(text: context.l10n.termsOfService, style: linkStyle, recognizer: _termsRecognizer), - const TextSpan(text: '.'), - ], + final l10n = context.l10n; + final p = OnboardingHero.palette; + final body = OmiType.callout.copyWith(color: p.textSecondary, height: 1.45); + final fine = OmiType.caption.copyWith(color: p.textTertiary, height: 1.3); + final link = fine.copyWith(color: p.textSecondary, decoration: TextDecoration.underline); + return OnboardingHeroStep( + headline: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Semantics( + header: true, + child: Text( + l10n.dataAndPrivacy, + style: OmiType.title1.copyWith(color: p.textPrimary), + textAlign: TextAlign.center, ), ), - ], - footer: [ - const SizedBox(height: OmiSpacing.xl), - OmiButton( - key: const Key('ai_consent_agree'), - label: context.l10n.agreeAndContinue, - expand: true, - onPressed: () { - OmiHaptics.selection(); - widget.onAgree(); - }, + const SizedBox(height: OmiSpacing.xs), + ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 320), + child: Text(l10n.consentShortMessage, style: body, textAlign: TextAlign.center), ), - const SizedBox(height: OmiSpacing.xxs), - OmiButton.tertiary( + const SizedBox(height: OmiSpacing.xs), + Text( + l10n.consentAiProviders(_aiProviders), + key: const Key('ai_consent_providers'), + style: OmiType.footnote.copyWith(color: p.textTertiary), + textAlign: TextAlign.center, + ), + ], + ), + buttons: [ + OnboardingHeroButton( + key: const Key('ai_consent_agree'), + label: l10n.agreeAndContinue, + onPressed: () { + OmiHaptics.selection(); + widget.onAgree(); + }, + ), + // Signed in with the wrong account: back to sign-in without agreeing first. A plain TextButton: + // OmiButton paints its label in the app theme's colour, which is near-black in light mode and + // would vanish on the film. + SizedBox( + height: 48, + child: TextButton( key: const Key('ai_consent_use_different_account'), - label: context.l10n.useDifferentAccount, - expand: true, onPressed: widget.onUseDifferentAccount, + style: TextButton.styleFrom( + foregroundColor: p.textSecondary, + shape: const RoundedRectangleBorder(borderRadius: OmiRadius.mdAll), + ), + child: Text( + l10n.useDifferentAccount, + style: OmiType.callout.copyWith(color: p.textSecondary, fontWeight: FontWeight.w600), + ), ), - ], + ), + ], + // One quiet line where it fits; long translations wrap to a second line. + legal: Text.rich( + TextSpan( + style: fine, + children: [ + TextSpan(text: l10n.byContinuingYouAgree), + TextSpan(text: l10n.termsOfUse, style: link, recognizer: _termsRecognizer), + TextSpan(text: l10n.and), + TextSpan(text: l10n.privacyPolicy, style: link, recognizer: _privacyRecognizer), + const TextSpan(text: '.'), + ], + ), + textAlign: TextAlign.center, ), ); } diff --git a/app/lib/pages/onboarding/auth.dart b/app/lib/pages/onboarding/auth.dart index 30818162a41..23ed83d3b67 100644 --- a/app/lib/pages/onboarding/auth.dart +++ b/app/lib/pages/onboarding/auth.dart @@ -6,7 +6,10 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; -import 'package:omi/pages/onboarding/widgets/onboarding_card.dart'; +import 'package:omi/utils/platform/platform_manager.dart'; + +import 'package:omi/gen/assets.gen.dart'; +import 'package:omi/pages/onboarding/variants/yinka/widgets/onboarding_card.dart'; import 'package:omi/providers/auth_provider.dart'; import 'package:omi/ui/ui.dart'; import 'package:omi/utils/l10n_extensions.dart'; @@ -21,156 +24,101 @@ class AuthComponent extends StatefulWidget { } class _AuthComponentState extends State { + @override + void initState() { + super.initState(); + // Sign-in is the first onboarding screen now (the Get started page is gone): the funnel's + // welcome step starts here. + PlatformManager.instance.analytics.onboardingWelcomeShown(); + } + @override Widget build(BuildContext context) { return Consumer( builder: (context, provider, child) { - return OnboardingStep( - card: OnboardingCard( - padding: const EdgeInsets.fromLTRB(OmiSpacing.xxl, 26, OmiSpacing.xxl, OmiSpacing.xs), - content: [ - // Loading indicator or spacing - SizedBox( - height: 20, - child: provider.loading ? const Center(child: OmiSpinner(size: OmiSpinnerSize.small)) : null, + final p = OnboardingHero.palette; + final legalStyle = OmiType.caption.copyWith(color: p.textTertiary, height: 1.3); + return OnboardingHeroStep( + headline: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // The omi wordmark is the headline; the promise sits under it, quieter. + Semantics( + header: true, + label: 'Omi', + child: Assets.images.logoTextWhite.image( + key: const Key('onboarding_wordmark'), + height: 56, + color: p.textPrimary, + ), ), - - // Title text + const SizedBox(height: OmiSpacing.sm), Text( context.l10n.speakTranscribeSummarize, - style: TextStyle( - color: OmiColors.textPrimary, - fontSize: 32, - fontWeight: FontWeight.bold, - height: 1.2, - fontFamily: 'Manrope', - ), + style: OmiType.title3.copyWith(color: p.textSecondary, fontWeight: FontWeight.w500), textAlign: TextAlign.center, ), - - const SizedBox(height: 32), - - // Sign in buttons - if (!provider.isLocalDevProfile && (Platform.isIOS || Platform.isAndroid)) ...[ - SizedBox( - width: double.infinity, - height: 56, - child: ElevatedButton( - onPressed: () { - OmiHaptics.selection(); - provider.onAppleSignIn(widget.onSignIn); - }, - style: ElevatedButton.styleFrom( - backgroundColor: OmiColors.accent, - foregroundColor: OmiColors.onAccent, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(28)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const FaIcon(FontAwesomeIcons.apple, size: 24), - const SizedBox(width: 8), - Text( - context.l10n.signInWithApple, - style: const TextStyle( - fontSize: 18, - fontWeight: FontWeight.w600, - fontFamily: 'Manrope', - ), - ), - ], - ), - ), - ), - const SizedBox(height: 16), - ], - - // Google sign in button - if (!provider.isLocalDevProfile) - SizedBox( - width: double.infinity, - height: 56, - child: ElevatedButton( - onPressed: () { - OmiHaptics.selection(); - provider.onGoogleSignIn(widget.onSignIn); - }, - style: ElevatedButton.styleFrom( - backgroundColor: OmiColors.accent, - foregroundColor: OmiColors.onAccent, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(28)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const FaIcon(FontAwesomeIcons.google, size: 20), - const SizedBox(width: 8), - Text( - context.l10n.signInWithGoogle, - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, fontFamily: 'Manrope'), - ), - ], - ), - ), + SizedBox( + height: 28, + child: provider.loading ? const Center(child: OmiSpinner(size: OmiSpinnerSize.small)) : null, + ), + ], + ), + buttons: [ + if (!provider.isLocalDevProfile && (Platform.isIOS || Platform.isAndroid)) ...[ + OnboardingHeroButton( + label: context.l10n.signInWithApple, + icon: const FaIcon(FontAwesomeIcons.apple), + onPressed: () { + OmiHaptics.selection(); + provider.onAppleSignIn(widget.onSignIn); + }, + ), + const SizedBox(height: OmiSpacing.sm), + ], + if (!provider.isLocalDevProfile) + OnboardingHeroButton( + label: context.l10n.signInWithGoogle, + icon: const FaIcon(FontAwesomeIcons.google), + onPressed: () { + OmiHaptics.selection(); + provider.onGoogleSignIn(widget.onSignIn); + }, + ), + // Local development sign-in. Only rendered for a local_dev build: community builds cannot + // complete a real OAuth flow, because provider OAuth clients are bound to the official + // bundle id and a community build is signed with a suffixed one. Never shown in a + // production-family build. + if (provider.isLocalDevProfile) + OnboardingHeroButton( + label: 'Sign in (local dev)', // omi-ux-allow: hardcoded-text -- local_dev builds only + outlined: true, + onPressed: () { + OmiHaptics.selection(); + provider.onLocalDevSignIn(widget.onSignIn); + }, + ), + ], + legal: Text.rich( + TextSpan( + style: legalStyle, + children: [ + TextSpan(text: context.l10n.byContinuingAgree), + TextSpan( + text: context.l10n.privacyPolicy, + style: legalStyle.copyWith(color: p.textSecondary, decoration: TextDecoration.underline), + recognizer: TapGestureRecognizer()..onTap = provider.openPrivacyPolicy, ), - - // Local development sign-in. Only rendered for a local_dev - // build: community builds cannot complete a real OAuth flow, - // because provider OAuth clients are bound to the official - // bundle id and a community build is signed with a suffixed - // one. Never shown in a production-family build. - if (provider.isLocalDevProfile) ...[ - const SizedBox(height: 12), - SizedBox( - width: double.infinity, - height: 56, - child: OutlinedButton( - onPressed: () { - OmiHaptics.selection(); - provider.onLocalDevSignIn(widget.onSignIn); - }, - style: OutlinedButton.styleFrom( - foregroundColor: OmiColors.textPrimary, - side: BorderSide(color: OmiColors.textPrimary.withValues(alpha: 0.4)), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(28)), - ), - child: const Text( - 'Sign in (local dev)', - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, fontFamily: 'Manrope'), - ), - ), + const TextSpan(text: ' & '), + TextSpan( + text: context.l10n.termsOfUse, + style: legalStyle.copyWith(color: p.textSecondary, decoration: TextDecoration.underline), + recognizer: TapGestureRecognizer()..onTap = provider.openTermsOfService, ), + const TextSpan(text: '.'), ], - - const SizedBox(height: 24), - - // Privacy policy text (same as welcome page) - RichText( - textAlign: TextAlign.center, - text: TextSpan( - style: TextStyle( - color: OmiColors.textPrimary.withValues(alpha: 0.6), - fontSize: 11, - fontFamily: 'Manrope', - ), - children: [ - TextSpan(text: context.l10n.byContinuingAgree), - TextSpan( - text: context.l10n.privacyPolicy, - style: const TextStyle(decoration: TextDecoration.underline), - recognizer: TapGestureRecognizer()..onTap = provider.openPrivacyPolicy, - ), - const TextSpan(text: ' & '), - TextSpan( - text: context.l10n.termsOfUse, - style: const TextStyle(decoration: TextDecoration.underline), - recognizer: TapGestureRecognizer()..onTap = provider.openTermsOfService, - ), - const TextSpan(text: '.'), - ], - ), - ), - ], + ), + textAlign: TextAlign.center, ), ); }, diff --git a/app/lib/pages/onboarding/device_selection.dart b/app/lib/pages/onboarding/device_selection.dart deleted file mode 100644 index 86fabe9d01a..00000000000 --- a/app/lib/pages/onboarding/device_selection.dart +++ /dev/null @@ -1,214 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:video_player/video_player.dart'; - -import 'package:omi/pages/onboarding/wrapper.dart'; -import 'package:omi/ui/omi_tokens.dart'; -import 'package:omi/utils/platform/platform_manager.dart'; -import 'package:omi/utils/l10n_extensions.dart'; -import 'package:omi/utils/logger.dart'; -import 'package:omi/utils/other/temp.dart'; - -class DeviceSelectionPage extends StatefulWidget { - const DeviceSelectionPage({super.key}); - - @override - State createState() => _DeviceSelectionPageState(); -} - -class _DeviceSelectionPageState extends State with SingleTickerProviderStateMixin { - late final AnimationController _controller; - late Animation _arrowAnimation; - late VideoPlayerController _videoController; - bool _isVideoInitialized = false; - double _videoProgress = 0.0; - - @override - void initState() { - super.initState(); - _controller = AnimationController(duration: const Duration(milliseconds: 600), vsync: this)..repeat(reverse: true); - - _arrowAnimation = Tween( - begin: 0, - end: 4, - ).animate(CurvedAnimation(parent: _controller, curve: Curves.easeInOut)); - - _initializeVideo(); - PlatformManager.instance.analytics.onboardingWelcomeShown(); - } - - void _initializeVideo() async { - _videoController = VideoPlayerController.asset('assets/images/onboarding.mp4'); - try { - await _videoController.initialize(); - setState(() { - _isVideoInitialized = true; - }); - _videoController.setLooping(true); - _videoController.play(); - - // Listen to video progress - _videoController.addListener(_updateVideoProgress); - } catch (e) { - Logger.debug('Error initializing video: $e'); - } - } - - void _updateVideoProgress() { - if (_videoController.value.isInitialized) { - final position = _videoController.value.position; - final duration = _videoController.value.duration; - if (duration.inMilliseconds > 0) { - setState(() { - _videoProgress = position.inMilliseconds / duration.inMilliseconds; - }); - } - } - } - - @override - void dispose() { - _controller.dispose(); - _videoController.removeListener(_updateVideoProgress); - _videoController.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Material( - child: Scaffold( - backgroundColor: Colors.white, - body: Stack( - children: [ - // Main content - Column( - children: [ - // Video background area - constrained to available space - Expanded( - child: Container( - width: double.infinity, - margin: const EdgeInsets.only(top: 60, bottom: 20), - child: _isVideoInitialized - ? FittedBox( - fit: BoxFit.cover, - child: SizedBox( - width: _videoController.value.size.width, - height: _videoController.value.size.height, - child: VideoPlayer(_videoController), - ), - ) - : Container(color: Colors.white), - ), - ), - - // Bottom drawer card - wraps content - Container( - width: double.infinity, - padding: const EdgeInsets.fromLTRB(32, 24, 32, 20), - decoration: const BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only(topLeft: Radius.circular(40), topRight: Radius.circular(40)), - ), - child: SafeArea( - top: false, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - // Title and subtitle - Text( - context.l10n.omiYourAiCompanion, - style: const TextStyle( - color: Colors.black, - fontSize: 34, - fontWeight: FontWeight.bold, - height: 1.2, - fontFamily: 'Manrope', - ), - textAlign: TextAlign.center, - ), - const SizedBox(height: 12), - Text( - context.l10n.captureEveryMoment, - style: TextStyle( - color: Colors.black.withValues(alpha: 0.7), - fontSize: 16, - height: 1.4, - fontFamily: 'Manrope', - ), - textAlign: TextAlign.center, - ), - - const SizedBox(height: 20), - - // Continue button - SizedBox( - width: double.infinity, - height: 56, - child: ElevatedButton( - onPressed: () async { - OmiHaptics.selection(); - PlatformManager.instance.analytics.onboardingGetStartedTapped(); - if (mounted) { - routeToPage(context, const OnboardingWrapper()); - } - }, - style: ElevatedButton.styleFrom( - backgroundColor: Colors.black, - foregroundColor: Colors.white, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(28)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - context.l10n.getStarted, - style: const TextStyle( - fontSize: 18, - fontWeight: FontWeight.w600, - fontFamily: 'Manrope', - ), - ), - const SizedBox(width: 8), - AnimatedBuilder( - animation: _arrowAnimation, - builder: (context, child) { - return Transform.translate( - offset: Offset(_arrowAnimation.value, 0), - child: const Icon(Icons.arrow_forward, size: 20), - ); - }, - ), - ], - ), - ), - ), - ], - ), - ), - ), - ], - ), - - // Video progress indicator in top right - if (_isVideoInitialized) - Positioned( - top: 60, - right: 20, - child: SizedBox( - width: 18, - height: 18, - child: CircularProgressIndicator( - value: _videoProgress, - strokeWidth: 2, - backgroundColor: Colors.grey.withValues(alpha: 0.3), - valueColor: AlwaysStoppedAnimation(Colors.grey[700]!), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/app/lib/pages/onboarding/variants/yinka/widgets/onboarding_card.dart b/app/lib/pages/onboarding/variants/yinka/widgets/onboarding_card.dart index d3551cd2cc6..216366e96dc 100644 --- a/app/lib/pages/onboarding/variants/yinka/widgets/onboarding_card.dart +++ b/app/lib/pages/onboarding/variants/yinka/widgets/onboarding_card.dart @@ -1,8 +1,5 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:omi/env/env.dart'; -import 'package:omi/env/environment_profile.dart'; import 'package:omi/ui/omi_tokens.dart'; import 'package:omi/ui/ui.dart'; @@ -90,16 +87,12 @@ class OnboardingStep extends StatelessWidget { } } -/// How sign-in and the data & privacy step look: the Omi pendant on the light onboarding surface -/// (default), or the launch film full-screen under white type. The film is a design comparison for -/// now: `--dart-define=OMI_ONBOARDING_HERO=video`, honoured in debug and local_dev builds only. +/// How sign-in and the data & privacy step look: the launch film full-screen under white type. abstract final class OnboardingHero { - static const _flag = String.fromEnvironment('OMI_ONBOARDING_HERO'); + static const bool video = true; - static bool get video => (kDebugMode || Env.profile == AppEnvironmentProfile.localDev) && _flag == 'video'; - - /// Type and buttons: white over the film, the theme's own over the pendant. - static OmiPalette get palette => video ? OmiPalette.dark : OmiColors.active; + /// Type and buttons: white over the film. + static OmiPalette get palette => OmiPalette.dark; } /// Sign-in and data & privacy: the hero (pendant or film) above, [headline] centred in the space diff --git a/app/lib/pages/onboarding/widgets/onboarding_hero_film.dart b/app/lib/pages/onboarding/widgets/onboarding_hero_film.dart new file mode 100644 index 00000000000..56504e89a19 --- /dev/null +++ b/app/lib/pages/onboarding/widgets/onboarding_hero_film.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:video_player/video_player.dart'; + +import 'package:omi/gen/assets.gen.dart'; +import 'package:omi/ui/ui.dart'; + +/// The launch film behind sign-in and data & privacy ([OnboardingHero.video]): full-screen, muted, +/// looping, darkened toward the bottom so the white type and buttons read. Under Reduce Motion it +/// holds its first frame. +class OnboardingHeroFilm extends StatefulWidget { + const OnboardingHeroFilm({super.key}); + + @override + State createState() => _OnboardingHeroFilmState(); +} + +class _OnboardingHeroFilmState extends State { + late final VideoPlayerController _film = VideoPlayerController.asset( + Assets.videos.onboardingLaunchLoop, + videoPlayerOptions: VideoPlayerOptions(mixWithOthers: true), + ); + bool _ready = false; + + @override + void initState() { + super.initState(); + _film.initialize().then((_) async { + if (!mounted) return; + await _film.setVolume(0); + await _film.setLooping(true); + if (!mounted) return; + if (!MediaQuery.disableAnimationsOf(context)) await _film.play(); + if (mounted) setState(() => _ready = true); + }).catchError((Object _) {}); + } + + @override + void dispose() { + _film.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final ink = OmiPalette.light.textPrimary; + return AnnotatedRegion( + value: SystemUiOverlayStyle.light, + child: ColoredBox( + color: ink, + child: Stack( + fit: StackFit.expand, + children: [ + AnimatedOpacity( + opacity: _ready ? 1 : 0, + duration: const Duration(milliseconds: 600), + child: _ready + ? FittedBox( + fit: BoxFit.cover, + clipBehavior: Clip.hardEdge, + child: SizedBox( + width: _film.value.size.width, + height: _film.value.size.height, + child: VideoPlayer(_film), + ), + ) + : const SizedBox.shrink(), + ), + // A little shade under the status bar, and a deep one where the type and buttons sit: the + // film has captions burned in near the bottom, so the shade is near-solid behind the text. + DecoratedBox( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + ink.withValues(alpha: 0.35), + ink.withValues(alpha: 0.0), + ink.withValues(alpha: 0.0), + ink.withValues(alpha: 0.85), + ink.withValues(alpha: 0.97), + ink.withValues(alpha: 0.98), + ], + stops: const [0.0, 0.18, 0.36, 0.58, 0.72, 1.0], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/app/lib/pages/onboarding/wrapper.dart b/app/lib/pages/onboarding/wrapper.dart index 68db725cf33..99d259a88a2 100644 --- a/app/lib/pages/onboarding/wrapper.dart +++ b/app/lib/pages/onboarding/wrapper.dart @@ -22,6 +22,7 @@ import 'package:omi/pages/onboarding/primary_language/primary_language_widget.da import 'package:omi/pages/onboarding/complete_screen.dart'; import 'package:omi/pages/onboarding/variants/yinka/yinka_onboarding_flow.dart'; import 'package:omi/pages/onboarding/web_onboarding_page.dart'; +import 'package:omi/pages/onboarding/widgets/onboarding_hero_film.dart'; import 'package:omi/pages/paywall/paywall_router.dart'; import 'package:omi/services/experiments/onboarding_variant_gate.dart'; import 'package:omi/services/experiments/paywall_experiment.dart'; @@ -675,7 +676,11 @@ class _OnboardingWrapperState extends State with TickerProvid backgroundColor: OmiColors.surface0, body: Stack( children: [ - if (index == kAuthPage || showBackground) _background(), + // Sign-in and consent (before any onboarding arm): the launch film behind white type. + if (index == kAuthPage || index == kAiConsentPage) + const OnboardingHeroFilm() + else if (showBackground) + _background(), OnboardingStepLayout( reserveHeader: index == kSpeechProfilePage, onBack: previous == null ? null : _goBack, diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 2c45189431b..c353fb29276 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -212,6 +212,7 @@ flutter: - assets/models/silero_vad.onnx - assets/images/stars.png - assets/images/herologo.png + - assets/videos/onboarding_launch_loop.mp4 - assets/fonts/ - assets/images/ - assets/test/tts_progressive_probe.mp3 diff --git a/app/test/widgets/ai_consent_use_different_account_test.dart b/app/test/widgets/ai_consent_use_different_account_test.dart new file mode 100644 index 00000000000..6b755d7007a --- /dev/null +++ b/app/test/widgets/ai_consent_use_different_account_test.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:provider/provider.dart'; + +import 'package:omi/l10n/app_localizations.dart'; +import 'package:omi/pages/onboarding/ai_consent_widget.dart'; +import 'package:omi/providers/auth_provider.dart'; +import 'package:omi/ui/ui.dart'; + +class _Auth extends ChangeNotifier implements AuthenticationProvider { + @override + void openPrivacyPolicy() {} + @override + void openTermsOfService() {} + @override + dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); +} + +void main() { + testWidgets('data & privacy asks to agree and keeps a way back to a different account', (tester) async { + var agreed = 0; + var switched = 0; + await tester.pumpWidget(ChangeNotifierProvider.value( + value: _Auth(), + child: MaterialApp( + theme: buildOmiTheme(), + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: const [Locale('en')], + home: Scaffold(body: AiConsentWidget(onAgree: () => agreed++, onUseDifferentAccount: () => switched++)), + ), + )); + await tester.pump(); + final en = lookupAppLocalizations(const Locale('en')); + expect(find.text(en.agreeAndContinue), findsOneWidget); + await tester.tap(find.byKey(const Key('ai_consent_use_different_account'))); + await tester.pump(); + expect(switched, 1); + expect(agreed, 0); + + await tester.tap(find.byKey(const Key('ai_consent_agree'))); + await tester.pump(); + expect(agreed, 1); + }); +} diff --git a/app/test/widgets/signed_out_entry_test.dart b/app/test/widgets/signed_out_entry_test.dart new file mode 100644 index 00000000000..d1daadae08f --- /dev/null +++ b/app/test/widgets/signed_out_entry_test.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:provider/provider.dart'; + +import 'package:omi/app_globals.dart'; +import 'package:omi/l10n/app_localizations.dart'; +import 'package:omi/mobile/mobile_app.dart'; +import 'package:omi/pages/home/page.dart'; +import 'package:omi/pages/onboarding/auth.dart'; +import 'package:omi/pages/onboarding/widgets/onboarding_hero_film.dart'; +import 'package:omi/pages/onboarding/wrapper.dart'; +import 'package:omi/providers/auth_provider.dart'; +import 'package:omi/services/auth/auth_token_result.dart'; +import 'package:omi/services/auth_service.dart'; + +class _SignedOutAuthenticationProvider extends AuthenticationProvider { + _SignedOutAuthenticationProvider() : super(initializeListeners: false); + + @override + bool get requiresReauthentication => false; + + @override + bool isSignedIn() => false; +} + +/// No Firebase user: the signed-out state, without a Firebase app in the test. +class _NoUserGateway implements AuthTokenGateway { + @override + AuthUserSnapshot? get currentUser => null; + @override + Future forceRefresh() async => null; + @override + Future signOut() async {} +} + +void main() { + setUpAll(() => AuthService.installLocalHarnessTokenGateway(_NoUserGateway())); + + testWidgets('signed out opens on sign-in with the launch film behind it, no Get started page', (tester) async { + final authProvider = _SignedOutAuthenticationProvider(); + addTearDown(authProvider.dispose); + + await tester.pumpWidget(ChangeNotifierProvider.value( + value: authProvider, + child: MaterialApp( + navigatorKey: globalNavigatorKey, + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + supportedLocales: AppLocalizations.supportedLocales, + home: const MobileApp(), + ), + )); + await tester.pump(); + + expect(find.byType(OnboardingWrapper), findsOneWidget); + expect(find.byType(AuthComponent), findsOneWidget); + expect(find.byType(OnboardingHeroFilm), findsOneWidget); + expect(find.byType(HomePageWrapper), findsNothing); + + await tester.pumpAndSettle(); + }); +}