From a300171290be9668857df87863ad6bbd5a29c557 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Sat, 11 Apr 2026 20:36:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=9A=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/translations/language/ar_sa.dart | 38 ++++++++ lib/core/translations/language/bg_bg.dart | 38 ++++++++ lib/core/translations/language/cs_cz.dart | 38 ++++++++ lib/core/translations/language/da_dk.dart | 38 ++++++++ lib/core/translations/language/de_de.dart | 38 ++++++++ lib/core/translations/language/el_gr.dart | 38 ++++++++ lib/core/translations/language/en_us.dart | 38 ++++++++ lib/core/translations/language/es_es.dart | 38 ++++++++ lib/core/translations/language/et_ee.dart | 38 ++++++++ lib/core/translations/language/fa_ir.dart | 38 ++++++++ lib/core/translations/language/fi_fi.dart | 38 ++++++++ lib/core/translations/language/fr_fr.dart | 38 ++++++++ lib/core/translations/language/hi_in.dart | 38 ++++++++ lib/core/translations/language/hr_hr.dart | 38 ++++++++ lib/core/translations/language/hu_hu.dart | 38 ++++++++ lib/core/translations/language/id_id.dart | 38 ++++++++ lib/core/translations/language/is_is.dart | 38 ++++++++ lib/core/translations/language/it_it.dart | 38 ++++++++ lib/core/translations/language/ja_jp.dart | 38 ++++++++ lib/core/translations/language/ko_kr.dart | 38 ++++++++ lib/core/translations/language/lt_lt.dart | 38 ++++++++ lib/core/translations/language/lv_lv.dart | 38 ++++++++ lib/core/translations/language/ms_my.dart | 38 ++++++++ lib/core/translations/language/nb_no.dart | 38 ++++++++ lib/core/translations/language/nl_nl.dart | 38 ++++++++ lib/core/translations/language/pl_pl.dart | 38 ++++++++ lib/core/translations/language/pt_pt.dart | 38 ++++++++ lib/core/translations/language/ro_ro.dart | 38 ++++++++ lib/core/translations/language/ru_ru.dart | 38 ++++++++ lib/core/translations/language/sk_sk.dart | 38 ++++++++ lib/core/translations/language/sl_si.dart | 38 ++++++++ lib/core/translations/language/sr_rs.dart | 38 ++++++++ lib/core/translations/language/sv_se.dart | 38 ++++++++ lib/core/translations/language/th_th.dart | 38 ++++++++ lib/core/translations/language/tl_ph.dart | 38 ++++++++ lib/core/translations/language/tr_tr.dart | 41 ++++++++- lib/core/translations/language/uk_ua.dart | 38 ++++++++ lib/core/translations/language/vi_vn.dart | 38 ++++++++ lib/core/translations/language/zh_cn.dart | 38 ++++++++ lib/core/translations/language/zh_hk.dart | 38 ++++++++ lib/core/translations/language/zh_tw.dart | 38 ++++++++ lib/data/models/appconfig_model.dart | 2 + lib/data/models/appconfig_model.g.dart | 12 +-- lib/data/models/channel_app_model.g.dart | 6 +- .../controllers/mobile_elf_controller.dart | 17 ++-- .../mobile_elf/views/mobile_elf_view.dart | 82 ++++++++--------- .../controllers/settings_controller.dart | 26 ++++++ lib/modules/settings/views/settings_view.dart | 59 ++++++------ .../controllers/translation_controller.dart | 89 ++++++++++++++++--- 49 files changed, 1757 insertions(+), 97 deletions(-) diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart index 452bf34b4..5ed352147 100644 --- a/lib/core/translations/language/ar_sa.dart +++ b/lib/core/translations/language/ar_sa.dart @@ -758,6 +758,9 @@ const Map arSA = { "languageSetting": "إعدادات اللغة", "darkMode": "الوضع الداكن", "darkModeInfo": "تبديل سمة التطبيق الفاتحة/الداكنة", + "voiceWakeup": "الاستيقاظ الصوتي", + "voiceWakeupDesc": "التحكم في وظيفة الاستيقاظ الصوتي لسماعة الرأس", + "deviceNotSupportFeature": "هذه الميزة غير مدعومة من الجهاز الحالي", "backups": "النسخ الاحتياطي والاستعادة", "backupsInfo": "إعدادات النسخ الاحتياطي وسجل تفاعل AI", "lastBackup": "آخر نسخ احتياطي:", @@ -1666,4 +1669,39 @@ const Map arSA = { "巴哈马": "جزر البهاما", "巴布亚新几内亚": "بابوا غينيا الجديدة", "萨摩亚": "ساموا", + + // Mobile Elf module + "mobileElf": "إلف المحمول", + "mobileElfAvatar": "E", + "mobileElfName": "إلف", + "closeBroadcast": "كتم الصوت", + "openBroadcast": "تشغيل الصوت", + "confirmClearChat": "هل أنت متأكد من حذف كل سجل المحادثات؟", + "authFailed": "فشل المصادقة", + "statusConnecting": "جارٍ الاتصال…", + "statusListening": "يستمع", + "statusProcessing": "جارٍ المعالجة", + "statusSpeaking": "يقرأ", + "statusError": "خطأ", + "statusInCall": "في مكالمة", + "statusIdle": "خامل", + "tapToChat": "اضغط الزر أسفل اليمين للدردشة", + "aiSpeaking": "إلف يتحدث...", + "interrupt": "× مقاطعة", + "listeningHint": "يستمع...", + "connectingHint": "جارٍ الاتصال...", + "elfAiThinking": "الذكاء الاصطناعي يفكر...", + "holdToTalk": "اضغط مع الاستمرار للتحدث", + "releaseToSend": "أفلت للإرسال", + "deviceNotAuth": "الجهاز غير مصادق", + "microphoneName": "الميكروفون", + "mobileElfMicPermission": "يحتاج إلف إلى إذن الميكروفون للدردشة الصوتية", + "micPermissionSettings": "يرجى تمكين إذن الميكروفون في الإعدادات", + "weekdayMon": "الاثنين", + "weekdayTue": "الثلاثاء", + "weekdayWed": "الأربعاء", + "weekdayThu": "الخميس", + "weekdayFri": "الجمعة", + "weekdaySat": "السبت", + "weekdaySun": "الأحد", }; diff --git a/lib/core/translations/language/bg_bg.dart b/lib/core/translations/language/bg_bg.dart index e618cd8ff..453256dc4 100644 --- a/lib/core/translations/language/bg_bg.dart +++ b/lib/core/translations/language/bg_bg.dart @@ -778,6 +778,9 @@ const Map bgBG = { "languageSetting": "Езикови настройки", "darkMode": "Тъмен режим", "darkModeInfo": "Превключване между светла/тъмна тема", + "voiceWakeup": "Гласово събуждане", + "voiceWakeupDesc": "Контрол на функцията за гласов�� събуждане на слушалките", + "deviceNotSupportFeature": "Тази функция не се поддържа от текущото устройство", "backups": "Резервно копие и възстановяване", "backupsInfo": "Резервно копие на настройки и AI история", "lastBackup": "Последно резервно копие:", @@ -1725,4 +1728,39 @@ const Map bgBG = { "巴哈马": "Бахами", "巴布亚新几内亚": "Папуа Нова Гвинея", "萨摩亚": "Самоа", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/cs_cz.dart b/lib/core/translations/language/cs_cz.dart index e3ffd3700..dbfbf60bb 100644 --- a/lib/core/translations/language/cs_cz.dart +++ b/lib/core/translations/language/cs_cz.dart @@ -768,6 +768,9 @@ const Map csCZ = { "languageSetting": "Jazyková nastavení", "darkMode": "Tmavý režim", "darkModeInfo": "Přepínání mezi světlým/tmavým motivem", + "voiceWakeup": "Hlasové probuzení", + "voiceWakeupDesc": "Ovládání funkce hlasového probuzení sluchátek", + "deviceNotSupportFeature": "Tato funkce není aktuálním zařízením podporována", "backups": "Zálohování a obnovení", "backupsInfo": "Zálohování nastavení a AI historie", "lastBackup": "Poslední záloha:", @@ -1696,4 +1699,39 @@ const Map csCZ = { "巴哈马": "Bahamy", "巴布亚新几内亚": "Papua Nová Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/da_dk.dart b/lib/core/translations/language/da_dk.dart index 17bb55dd2..ce66531bf 100644 --- a/lib/core/translations/language/da_dk.dart +++ b/lib/core/translations/language/da_dk.dart @@ -770,6 +770,9 @@ const Map daDK = { "languageSetting": "Sprogindstillinger", "darkMode": "Mørk tilstand", "darkModeInfo": "Skift mellem lys/mørk tema", + "voiceWakeup": "Stemmeaktivering", + "voiceWakeupDesc": "Styr headsetets stemmeaktiveringsfunktion", + "deviceNotSupportFeature": "Denne funktion understøttes ikke af den aktuelle enhed", "backups": "Backup og gendannelse", "backupsInfo": "Backup indstillinger og AI historik", "lastBackup": "Sidste backup:", @@ -1695,4 +1698,39 @@ const Map daDK = { "巴哈马": 'Bahamas', "巴布亚新几内亚": "Papua Ny Guinea", "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/de_de.dart b/lib/core/translations/language/de_de.dart index bd475c8b9..576587bc3 100644 --- a/lib/core/translations/language/de_de.dart +++ b/lib/core/translations/language/de_de.dart @@ -786,6 +786,9 @@ const Map deDE = { "languageSetting": "Spracheinstellungen", "darkMode": "Dunkler Modus", "darkModeInfo": "Zwischen hellen/dunklen Themen wechseln", + "voiceWakeup": "Sprachaktivierung", + "voiceWakeupDesc": "Steuerung der Sprachaktivierungsfunktion des Headsets", + "deviceNotSupportFeature": "Diese Funktion wird vom aktuellen Gerät nicht unterstützt", "backups": "Sicherung & Wiederherstellung", "backupsInfo": "Einstellungen und KI-Verlauf sichern", "lastBackup": "Letzte Sicherung:", @@ -1738,4 +1741,39 @@ const Map deDE = { "巴哈马": 'Bahamas', "巴布亚新几内亚": "Papua-Neuguinea", "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Stummschalten", + "openBroadcast": "Ton aktivieren", + "confirmClearChat": "Sind Sie sicher, dass Sie den gesamten Chatverlauf löschen möchten?", + "authFailed": "Authentifizierung fehlgeschlagen", + "statusConnecting": "Verbinden…", + "statusListening": "Zuhören", + "statusProcessing": "Verarbeitung", + "statusSpeaking": "Vorlesen", + "statusError": "Fehler", + "statusInCall": "Im Anruf", + "statusIdle": "Inaktiv", + "tapToChat": "Tippen Sie auf die Schaltfläche unten rechts, um mit Elf zu chatten", + "aiSpeaking": "Elf spricht...", + "interrupt": "× Unterbrechen", + "listeningHint": "Zuhören...", + "connectingHint": "Verbinden...", + "elfAiThinking": "KI denkt nach...", + "holdToTalk": "Gedrückt halten zum Sprechen", + "releaseToSend": "Loslassen zum Senden", + "deviceNotAuth": "Gerät nicht authentifiziert", + "microphoneName": "Mikrofon", + "mobileElfMicPermission": "Mobile Elf benötigt Mikrofonberechtigung für Sprachchat", + "micPermissionSettings": "Bitte aktivieren Sie die Mikrofonberechtigung in den Einstellungen", + "weekdayMon": "Montag", + "weekdayTue": "Dienstag", + "weekdayWed": "Mittwoch", + "weekdayThu": "Donnerstag", + "weekdayFri": "Freitag", + "weekdaySat": "Samstag", + "weekdaySun": "Sonntag", }; diff --git a/lib/core/translations/language/el_gr.dart b/lib/core/translations/language/el_gr.dart index 097235916..050cc4fc4 100644 --- a/lib/core/translations/language/el_gr.dart +++ b/lib/core/translations/language/el_gr.dart @@ -788,6 +788,9 @@ const Map elGR = { "languageSetting": "Ρυθμίσεις γλώσσας", "darkMode": "Σκοτεινή λειτουργία", "darkModeInfo": "Εναλλαγή μεταξύ φωτεινού/σκοτεινού θέματος", + "voiceWakeup": "Φωνητική αφύπνιση", + "voiceWakeupDesc": "Έλεγχος της λειτουργίας φωνητικής αφύπνισης των ακουστικών", + "deviceNotSupportFeature": "Αυτή η λειτουργία δεν υποστηρίζεται από την τρέχουσα συσκευή", "backups": "Αντίγραφα ασφαλείας και επαναφορά", "backupsInfo": "Αντίγραφα ασφαλείας ρυθμίσεων και ιστορικού AI", "lastBackup": "Τελευταίο αντίγραφο ασφαλείας:", @@ -1728,4 +1731,39 @@ const Map elGR = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/en_us.dart b/lib/core/translations/language/en_us.dart index d6f4500cc..78be4ed9b 100644 --- a/lib/core/translations/language/en_us.dart +++ b/lib/core/translations/language/en_us.dart @@ -771,6 +771,9 @@ const Map enUS = { "languageSetting": "Language Settings", "darkMode": "Dark Mode", "darkModeInfo": "Switch between light/dark themes", + "voiceWakeup": "Voice Wakeup", + "voiceWakeupDesc": "Control the voice wake-up function of the headset", + "deviceNotSupportFeature": "This feature is not supported by current device", "backups": "Backup & Restore", "backupsInfo": "Backup settings and AI history", "lastBackup": "Last backup:", @@ -1691,4 +1694,39 @@ const Map enUS = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/es_es.dart b/lib/core/translations/language/es_es.dart index bb1262cac..511518066 100644 --- a/lib/core/translations/language/es_es.dart +++ b/lib/core/translations/language/es_es.dart @@ -784,6 +784,9 @@ const Map esES = { "languageSetting": "Configuración de idioma", "darkMode": "Modo oscuro", "darkModeInfo": "Cambiar entre tema claro/oscuro", + "voiceWakeup": "Activación por voz", + "voiceWakeupDesc": "Controlar la función de activación por voz de los auriculares", + "deviceNotSupportFeature": "Esta función no es compatible con el dispositivo actual", "backups": "Respaldo y restauración", "backupsInfo": "Respaldar configuraciones e historial de IA", "lastBackup": "Último respaldo:", @@ -1728,4 +1731,39 @@ const Map esES = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Elfo Móvil", + "mobileElfAvatar": "E", + "mobileElfName": "Elfo", + "closeBroadcast": "Silenciar", + "openBroadcast": "Activar voz", + "confirmClearChat": "¿Estás seguro de que quieres borrar todo el historial de chat?", + "authFailed": "Autenticación fallida", + "statusConnecting": "Conectando…", + "statusListening": "Escuchando", + "statusProcessing": "Procesando", + "statusSpeaking": "Hablando", + "statusError": "Error", + "statusInCall": "En llamada", + "statusIdle": "Inactivo", + "tapToChat": "Toca el botón inferior derecho para chatear con Elfo", + "aiSpeaking": "Elfo está hablando...", + "interrupt": "× Interrumpir", + "listeningHint": "Escuchando...", + "connectingHint": "Conectando...", + "elfAiThinking": "IA pensando...", + "holdToTalk": "Mantén para hablar", + "releaseToSend": "Suelta para enviar", + "deviceNotAuth": "Dispositivo no autenticado", + "microphoneName": "Micrófono", + "mobileElfMicPermission": "Elfo Móvil necesita permiso de micrófono para chat de voz", + "micPermissionSettings": "Por favor habilita el permiso de micrófono en Configuración", + "weekdayMon": "Lunes", + "weekdayTue": "Martes", + "weekdayWed": "Miércoles", + "weekdayThu": "Jueves", + "weekdayFri": "Viernes", + "weekdaySat": "Sábado", + "weekdaySun": "Domingo", }; diff --git a/lib/core/translations/language/et_ee.dart b/lib/core/translations/language/et_ee.dart index b6d8f7b72..13fadebf1 100644 --- a/lib/core/translations/language/et_ee.dart +++ b/lib/core/translations/language/et_ee.dart @@ -774,6 +774,9 @@ const Map etEE = { "languageSetting": "Keele seaded", "darkMode": "Tume režiim", "darkModeInfo": "Vaheta hele/tumeda teema vahel", + "voiceWakeup": "Häälega äratamine", + "voiceWakeupDesc": "Peakomplekti häälega äratamise funktsiooni juhtimine", + "deviceNotSupportFeature": "See funktsioon ei ole praeguse seadmega toetatud", "backups": "Varundus ja taastamine", "backupsInfo": "Varunda seaded ja AI ajalugu", "lastBackup": "Viimane varundus:", @@ -1691,4 +1694,39 @@ const Map etEE = { "巴哈马": "Bahama", "巴布亚新几内亚": "Paapua Uus-Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/fa_ir.dart b/lib/core/translations/language/fa_ir.dart index a84af5f27..1d463a1ec 100644 --- a/lib/core/translations/language/fa_ir.dart +++ b/lib/core/translations/language/fa_ir.dart @@ -762,6 +762,9 @@ const Map faIR = { "languageSetting": "تنظیمات زبان", "darkMode": "حالت تاریک", "darkModeInfo": "تغییر بین پوسته‌های روشن/تاریک", + "voiceWakeup": "بیداری صوتی", + "voiceWakeupDesc": "کنترل عملکرد بیداری صوتی هدست", + "deviceNotSupportFeature": "این ویژگی توسط دستگاه فعلی پشتیبانی نمی‌شود", "backups": "پشتیبان‌گیری و بازیابی", "backupsInfo": "پشتیبان‌گیری از تنظیمات و تاریخچه هوش مصنوعی", "lastBackup": "آخرین پشتیبان‌گیری:", @@ -1681,4 +1684,39 @@ const Map faIR = { "巴哈马": "باهاما", "巴布亚新几内亚": "پاپوآ گینه نو", "萨摩亚": "ساموآ", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/fi_fi.dart b/lib/core/translations/language/fi_fi.dart index c3736a95b..424ae247e 100644 --- a/lib/core/translations/language/fi_fi.dart +++ b/lib/core/translations/language/fi_fi.dart @@ -769,6 +769,9 @@ const Map fiFI = { "languageSetting": "Kieliasetukset", "darkMode": "Tumma tila", "darkModeInfo": "Vaihda sovelluksen vaalean ja tumman teeman välillä", + "voiceWakeup": "Ääniherätys", + "voiceWakeupDesc": "Hallitse kuulokkeiden ääniherätystoimintoa", + "deviceNotSupportFeature": "Tätä ominaisuutta ei tueta nykyisellä laitteella", "backups": "Varmuuskopiointi ja palautus", "backupsInfo": "Varmuuskopioi asetukset ja AI-vuorovaikutushistoria", "lastBackup": "Viimeisin varmuuskopio:", @@ -1698,4 +1701,39 @@ const Map fiFI = { "巴哈马": "Bahama", "巴布亚新几内亚": "Papua-Uusi-Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/fr_fr.dart b/lib/core/translations/language/fr_fr.dart index 85fdbf736..6fe697d40 100644 --- a/lib/core/translations/language/fr_fr.dart +++ b/lib/core/translations/language/fr_fr.dart @@ -791,6 +791,9 @@ const Map frFR = { "languageSetting": "Paramètres de langue", "darkMode": "Mode sombre", "darkModeInfo": "Basculer entre les thèmes clair/sombre", + "voiceWakeup": "Réveil vocal", + "voiceWakeupDesc": "Contrôler la fonction de réveil vocal du casque", + "deviceNotSupportFeature": "Cette fonctionnalité n'est pas prise en charge par l'appareil actuel", "backups": "Sauvegarde et restauration", "backupsInfo": "Sauvegarder les paramètres et l'historique IA", "lastBackup": "Dernière sauvegarde :", @@ -1746,4 +1749,39 @@ const Map frFR = { "巴哈马": 'Bahamas', "巴布亚新几内亚": 'Papouasie-Nouvelle-Guinée', "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Elfe Mobile", + "mobileElfAvatar": "E", + "mobileElfName": "Elfe", + "closeBroadcast": "Couper le son", + "openBroadcast": "Activer le son", + "confirmClearChat": "Êtes-vous sûr de vouloir effacer tout l\'historique de chat ?", + "authFailed": "Échec d\'authentification", + "statusConnecting": "Connexion…", + "statusListening": "Écoute en cours", + "statusProcessing": "Traitement", + "statusSpeaking": "Lecture", + "statusError": "Erreur", + "statusInCall": "En appel", + "statusIdle": "Inactif", + "tapToChat": "Appuyez sur le bouton en bas à droite pour discuter avec Elfe", + "aiSpeaking": "Elfe parle...", + "interrupt": "× Interrompre", + "listeningHint": "Écoute en cours...", + "connectingHint": "Connexion...", + "elfAiThinking": "IA en réflexion...", + "holdToTalk": "Maintenir pour parler", + "releaseToSend": "Relâcher pour envoyer", + "deviceNotAuth": "Appareil non authentifié", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Elfe Mobile a besoin de l\'accès au microphone pour le chat vocal", + "micPermissionSettings": "Veuillez activer l\'autorisation du microphone dans les Paramètres", + "weekdayMon": "Lundi", + "weekdayTue": "Mardi", + "weekdayWed": "Mercredi", + "weekdayThu": "Jeudi", + "weekdayFri": "Vendredi", + "weekdaySat": "Samedi", + "weekdaySun": "Dimanche", }; diff --git a/lib/core/translations/language/hi_in.dart b/lib/core/translations/language/hi_in.dart index b824f6a67..c2b3b9ac0 100644 --- a/lib/core/translations/language/hi_in.dart +++ b/lib/core/translations/language/hi_in.dart @@ -769,6 +769,9 @@ const Map hiIN = { "languageSetting": "भाषा सेटिंग", "darkMode": "डार्क मोड", "darkModeInfo": "ऐप की हल्की और गहरी थीम के बीच स्विच करें", + "voiceWakeup": "वॉइस वेकअप", + "voiceWakeupDesc": "हेडसेट की वॉइस वेकअप सुविधा को नियंत्रित करें", + "deviceNotSupportFeature": "यह सुविधा वर्तमान डिवाइस द्वारा समर्थित नहीं है", "backups": "बैकअप और पुनर्स्थापना", "backupsInfo": "सेटिंग्स और एआई इंटरैक्शन इतिहास का बैकअप लें", "lastBackup": "अंतिम बैकअप:", @@ -1702,4 +1705,39 @@ const Map hiIN = { "巴哈马": "बहामा", // Bahamas "巴布亚新几内亚": "पेपुआ न्यू गिनी", // Papua New Guinea "萨摩亚": "सामोा", // Samoa + + // Mobile Elf module + "mobileElf": "मोबाइल एल्फ", + "mobileElfAvatar": "E", + "mobileElfName": "एल्फ", + "closeBroadcast": "आवाज़ बंद", + "openBroadcast": "आवाज़ चालू", + "confirmClearChat": "क्या आप सभी चैट इतिहास को साफ़ करना चाहते हैं?", + "authFailed": "प्रमाणीकरण विफल", + "statusConnecting": "कनेक्ट हो रहा है…", + "statusListening": "सुन रहा है", + "statusProcessing": "प्रोसेसिंग", + "statusSpeaking": "बोल रहा है", + "statusError": "त्रुटि", + "statusInCall": "कॉल पर", + "statusIdle": "निष्क्रिय", + "tapToChat": "चैट शुरू करने के लिए नीचे दाएं बटन पर टैप करें", + "aiSpeaking": "एल्फ बोल रहा है...", + "interrupt": "× रोकें", + "listeningHint": "सुन रहा है...", + "connectingHint": "कनेक्ट हो रहा है...", + "elfAiThinking": "AI सोच रहा है...", + "holdToTalk": "बोलने के लिए दबाएं", + "releaseToSend": "भेजने के लिए छोड़ें", + "deviceNotAuth": "डिवाइस प्रमाणित नहीं", + "microphoneName": "माइक्रोफ़ोन", + "mobileElfMicPermission": "वॉइस चैट के लिए माइक्रोफ़ोन अनुमति चाहिए", + "micPermissionSettings": "कृपया सेटिंग्स में माइक्रोफ़ोन अनुमति सक्षम करें", + "weekdayMon": "सोमवार", + "weekdayTue": "मंगलवार", + "weekdayWed": "बुधवार", + "weekdayThu": "गुरुवार", + "weekdayFri": "शुक्रवार", + "weekdaySat": "शनिवार", + "weekdaySun": "रविवार", }; diff --git a/lib/core/translations/language/hr_hr.dart b/lib/core/translations/language/hr_hr.dart index e5ce2bd16..b8f28d16a 100644 --- a/lib/core/translations/language/hr_hr.dart +++ b/lib/core/translations/language/hr_hr.dart @@ -780,6 +780,9 @@ const Map hrHR = { "languageSetting": "Postavke jezika", "darkMode": "Tamni način rada", "darkModeInfo": "Prebacivanje između svijetle i tamne teme aplikacije", + "voiceWakeup": "Glasovno buđenje", + "voiceWakeupDesc": "Upravljanje funkcijom glasovnog buđenja slušalica", + "deviceNotSupportFeature": "Ova značajka nije podržana na trenutnom uređaju", "backups": "Sigurnosna kopija i vraćanje", "backupsInfo": "Sigurnosna kopija postavki i povijesti interakcije s AI", "lastBackup": "Posljednja sigurnosna kopija:", @@ -1716,4 +1719,39 @@ const Map hrHR = { "巴哈马": "Bahami", "巴布亚新几内亚": "Papua Nova Gvineja", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/hu_hu.dart b/lib/core/translations/language/hu_hu.dart index 84a6b152c..b99c0b1b4 100644 --- a/lib/core/translations/language/hu_hu.dart +++ b/lib/core/translations/language/hu_hu.dart @@ -782,6 +782,9 @@ const Map huHU = { "languageSetting": "Nyelvi beállítás", "darkMode": "Sötét mód", "darkModeInfo": "Váltás a világos és sötét téma között", + "voiceWakeup": "Hangos ébresztés", + "voiceWakeupDesc": "A headset hangos ébresztési funkciójának vezérlése", + "deviceNotSupportFeature": "Ez a funkció nem támogatott az aktuális eszközön", "backups": "Biztonsági mentés és visszaállítás", "backupsInfo": "Beállítások és AI interakciós előzmények biztonsági mentése", "lastBackup": "Utolsó mentés:", @@ -1719,4 +1722,39 @@ const Map huHU = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/id_id.dart b/lib/core/translations/language/id_id.dart index 0b4d507ab..6d29c2c5c 100644 --- a/lib/core/translations/language/id_id.dart +++ b/lib/core/translations/language/id_id.dart @@ -768,6 +768,9 @@ const Map idID = { "languageSetting": "Pengaturan Bahasa", "darkMode": "Mode Gelap", "darkModeInfo": "Beralih antara tema terang dan gelap aplikasi", + "voiceWakeup": "Bangun Suara", + "voiceWakeupDesc": "Mengontrol fungsi bangun suara headset", + "deviceNotSupportFeature": "Fitur ini tidak didukung oleh perangkat saat ini", "backups": "Cadangkan & Pulihkan", "backupsInfo": "Cadangkan pengaturan dan riwayat interaksi AI", "lastBackup": "Cadangan terakhir:", @@ -1696,4 +1699,39 @@ const Map idID = { "巴哈马": "Bahama", "巴布亚新几内亚": "Papua Nugini", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Elf Seluler", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Bisukan", + "openBroadcast": "Bunyikan", + "confirmClearChat": "Apakah Anda yakin ingin menghapus semua riwayat obrolan?", + "authFailed": "Autentikasi gagal", + "statusConnecting": "Menghubungkan…", + "statusListening": "Mendengarkan", + "statusProcessing": "Memproses", + "statusSpeaking": "Membacakan", + "statusError": "Error", + "statusInCall": "Dalam panggilan", + "statusIdle": "Siaga", + "tapToChat": "Ketuk tombol kanan bawah untuk mengobrol", + "aiSpeaking": "Elf sedang berbicara...", + "interrupt": "× Interupsi", + "listeningHint": "Mendengarkan...", + "connectingHint": "Menghubungkan...", + "elfAiThinking": "AI sedang berpikir...", + "holdToTalk": "Tekan untuk bicara", + "releaseToSend": "Lepas untuk kirim", + "deviceNotAuth": "Perangkat belum terautentikasi", + "microphoneName": "Mikrofon", + "mobileElfMicPermission": "Elf Seluler membutuhkan izin mikrofon untuk obrolan suara", + "micPermissionSettings": "Silakan aktifkan izin mikrofon di Pengaturan", + "weekdayMon": "Senin", + "weekdayTue": "Selasa", + "weekdayWed": "Rabu", + "weekdayThu": "Kamis", + "weekdayFri": "Jumat", + "weekdaySat": "Sabtu", + "weekdaySun": "Minggu", }; diff --git a/lib/core/translations/language/is_is.dart b/lib/core/translations/language/is_is.dart index e5f98b408..38b3ba54d 100644 --- a/lib/core/translations/language/is_is.dart +++ b/lib/core/translations/language/is_is.dart @@ -772,6 +772,9 @@ const Map isIS = { "languageSetting": "Tungumálastillingar", "darkMode": "Myrkurhamur", "darkModeInfo": "Skipta á milli ljóss og dökkra þema forritsins", + "voiceWakeup": "Raddvekja", + "voiceWakeupDesc": "Stjórna raddvöknun heyrnartólsins", + "deviceNotSupportFeature": "Þessi eiginleiki er ekki studdur af núverandi tæki", "backups": "Afritun og endurheimt", "backupsInfo": "Afrita stillingar og gervigreindar samskiptasögu", "lastBackup": "Síðasta afritun:", @@ -1696,4 +1699,39 @@ const Map isIS = { "巴哈马": 'Bahamaeyjar', "巴布亚新几内亚": 'Papúa Njá Gínea', "萨摩亚": 'Samóa', + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/it_it.dart b/lib/core/translations/language/it_it.dart index 7dbcf9d8f..d894e4b33 100644 --- a/lib/core/translations/language/it_it.dart +++ b/lib/core/translations/language/it_it.dart @@ -782,6 +782,9 @@ const Map itIT = { "languageSetting": "Impostazioni lingua", "darkMode": "Modalità scura", "darkModeInfo": "Passa tra i temi chiaro e scuro dell'app", + "voiceWakeup": "Risveglio vocale", + "voiceWakeupDesc": "Controlla la funzione di risveglio vocale delle cuffie", + "deviceNotSupportFeature": "Questa funzione non è supportata dal dispositivo attuale", "backups": "Backup e ripristino", "backupsInfo": "Backup delle impostazioni e della cronologia delle interazioni AI", @@ -1732,4 +1735,39 @@ const Map itIT = { "巴哈马": 'Bahamas', "巴布亚新几内亚": 'Papua Nuova Guinea', "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Elfo Mobile", + "mobileElfAvatar": "E", + "mobileElfName": "Elfo", + "closeBroadcast": "Disattiva audio", + "openBroadcast": "Attiva audio", + "confirmClearChat": "Sei sicuro di voler cancellare tutta la cronologia della chat?", + "authFailed": "Autenticazione fallita", + "statusConnecting": "Connessione…", + "statusListening": "In ascolto", + "statusProcessing": "Elaborazione", + "statusSpeaking": "Lettura", + "statusError": "Errore", + "statusInCall": "In chiamata", + "statusIdle": "Inattivo", + "tapToChat": "Tocca il pulsante in basso a destra per chattare con Elfo", + "aiSpeaking": "Elfo sta parlando...", + "interrupt": "× Interrompi", + "listeningHint": "In ascolto...", + "connectingHint": "Connessione...", + "elfAiThinking": "IA sta pensando...", + "holdToTalk": "Tieni premuto per parlare", + "releaseToSend": "Rilascia per inviare", + "deviceNotAuth": "Dispositivo non autenticato", + "microphoneName": "Microfono", + "mobileElfMicPermission": "Elfo Mobile necessita del permesso microfono per la chat vocale", + "micPermissionSettings": "Abilita il permesso del microfono nelle Impostazioni", + "weekdayMon": "Lunedì", + "weekdayTue": "Martedì", + "weekdayWed": "Mercoledì", + "weekdayThu": "Giovedì", + "weekdayFri": "Venerdì", + "weekdaySat": "Sabato", + "weekdaySun": "Domenica", }; diff --git a/lib/core/translations/language/ja_jp.dart b/lib/core/translations/language/ja_jp.dart index 638b91421..93f5799ee 100644 --- a/lib/core/translations/language/ja_jp.dart +++ b/lib/core/translations/language/ja_jp.dart @@ -719,6 +719,9 @@ const Map jaJP = { "languageSetting": "言語設定", "darkMode": "ダークモード", "darkModeInfo": "ライト/ダークテーマの切り替え", + "voiceWakeup": "音声ウェイクアップ", + "voiceWakeupDesc": "ヘッドセットの音声ウェイクアップ機能を制御", + "deviceNotSupportFeature": "この機能は現在のデバイスではサポートされていません", "backups": "バックアップと復元", "backupsInfo": "設定とAI履歴をバックアップ", "lastBackup": "最後のバックアップ:", @@ -1556,4 +1559,39 @@ const Map jaJP = { "巴哈马": "バーナーーサ", "巴布亚新几内亚": "パピュアニューギニア", "萨摩亚": "サモア", + + // Mobile Elf module + "mobileElf": "モバイルエルフ", + "mobileElfAvatar": "E", + "mobileElfName": "エルフ", + "closeBroadcast": "読み上げオフ", + "openBroadcast": "読み上げオン", + "confirmClearChat": "すべてのチャット履歴を削除しますか?", + "authFailed": "認証失敗", + "statusConnecting": "接続中…", + "statusListening": "聞き取り中", + "statusProcessing": "処理中", + "statusSpeaking": "読み上げ中", + "statusError": "エラー", + "statusInCall": "通話中", + "statusIdle": "待機中", + "tapToChat": "右下のボタンをタップして会話を始めましょう", + "aiSpeaking": "エルフが読み上げ中...", + "interrupt": "× 中断", + "listeningHint": "聞き取り中...", + "connectingHint": "接続中...", + "elfAiThinking": "AI 思考中...", + "holdToTalk": "長押しで話す", + "releaseToSend": "離して送信", + "deviceNotAuth": "デバイス未認証", + "microphoneName": "マイク", + "mobileElfMicPermission": "音声チャットにはマイクの許可が必要です", + "micPermissionSettings": "設定でマイクの許可を有効にしてください", + "weekdayMon": "月曜日", + "weekdayTue": "火曜日", + "weekdayWed": "水曜日", + "weekdayThu": "木曜日", + "weekdayFri": "金曜日", + "weekdaySat": "土曜日", + "weekdaySun": "日曜日", }; diff --git a/lib/core/translations/language/ko_kr.dart b/lib/core/translations/language/ko_kr.dart index 3473ec6a8..2f219e59c 100644 --- a/lib/core/translations/language/ko_kr.dart +++ b/lib/core/translations/language/ko_kr.dart @@ -717,6 +717,9 @@ const Map koKR = { "languageSetting": "언어 설정", "darkMode": "다크 모드", "darkModeInfo": "앱의 밝고 어두운 테마 전환", + "voiceWakeup": "음성 깨우기", + "voiceWakeupDesc": "헤드셋의 음성 깨우기 기능 제어", + "deviceNotSupportFeature": "현재 기기에서 이 기능을 지원하지 않습니다", "backups": "백업 및 복원", "backupsInfo": "설정 및 AI 상호작용 기록 백업", "lastBackup": "마지막 백업:", @@ -1547,4 +1550,39 @@ const Map koKR = { "巴哈马": "바하마", "巴布亚新几内亚": "파푸아뉴기니", "萨摩亚": "사모아", + + // Mobile Elf module + "mobileElf": "모바일 엘프", + "mobileElfAvatar": "E", + "mobileElfName": "엘프", + "closeBroadcast": "음성 끄기", + "openBroadcast": "음성 켜기", + "confirmClearChat": "모든 채팅 기록을 삭제하시겠습니까?", + "authFailed": "인증 실패", + "statusConnecting": "연결 중…", + "statusListening": "듣는 중", + "statusProcessing": "처리 중", + "statusSpeaking": "읽는 중", + "statusError": "오류", + "statusInCall": "통화 중", + "statusIdle": "대기 중", + "tapToChat": "오른쪽 하단 버튼을 눌러 대화를 시작하세요", + "aiSpeaking": "엘프가 읽고 있습니다...", + "interrupt": "× 중단", + "listeningHint": "듣는 중...", + "connectingHint": "연결 중...", + "elfAiThinking": "AI 생각 중...", + "holdToTalk": "길게 눌러 말하기", + "releaseToSend": "놓으면 전송", + "deviceNotAuth": "기기 미인증", + "microphoneName": "마이크", + "mobileElfMicPermission": "음성 채팅을 위해 마이크 권한이 필요합니다", + "micPermissionSettings": "설정에서 마이크 권한을 활성화하세요", + "weekdayMon": "월요일", + "weekdayTue": "화요일", + "weekdayWed": "수요일", + "weekdayThu": "목요일", + "weekdayFri": "금요일", + "weekdaySat": "토요일", + "weekdaySun": "일요일", }; diff --git a/lib/core/translations/language/lt_lt.dart b/lib/core/translations/language/lt_lt.dart index 76ff339a5..b5ff9629e 100644 --- a/lib/core/translations/language/lt_lt.dart +++ b/lib/core/translations/language/lt_lt.dart @@ -776,6 +776,9 @@ const Map ltLT = { "languageSetting": "Kalbos nustatymas", "darkMode": "Tamsusis režimas", "darkModeInfo": "Perjungti tarp šviesios ir tamsios programos temos", + "voiceWakeup": "Balso žadinimas", + "voiceWakeupDesc": "Valdyti ausinių balso žadinimo funkciją", + "deviceNotSupportFeature": "Ši funkcija nepalaikoma dabartiniu įrenginiu", "backups": "Atsarginė kopija ir atkūrimas", "backupsInfo": "Atsarginė nustatymų ir AI sąveikos istorijos kopija", "lastBackup": "Paskutinė atsarginė kopija:", @@ -1713,4 +1716,39 @@ const Map ltLT = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/lv_lv.dart b/lib/core/translations/language/lv_lv.dart index eda3e581a..2c51ca991 100644 --- a/lib/core/translations/language/lv_lv.dart +++ b/lib/core/translations/language/lv_lv.dart @@ -780,6 +780,9 @@ const Map lvLV = { "languageSetting": "Valodas iestatījumi", "darkMode": "Tumšais režīms", "darkModeInfo": "Pārslēgties starp lietotnes gaišo un tumšo tēmu", + "voiceWakeup": "Balss modināšana", + "voiceWakeupDesc": "Kontrolēt austiņu balss modināšanas funkciju", + "deviceNotSupportFeature": "Šo funkciju pašreizējā ierīce neatbalsta", "backups": "Dublēšana un atjaunošana", "backupsInfo": "Dublēt iestatījumus un AI mijiedarbības vēsturi", "lastBackup": "Pēdējā dublēšana:", @@ -1718,4 +1721,39 @@ const Map lvLV = { "巴哈马": "Bahamu salas", "巴布亚新几内亚": "Papua Jaungvineja", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/ms_my.dart b/lib/core/translations/language/ms_my.dart index 3240b96a3..c3e7f21c2 100644 --- a/lib/core/translations/language/ms_my.dart +++ b/lib/core/translations/language/ms_my.dart @@ -769,6 +769,9 @@ const Map msMY = { "languageSetting": "Tetapan Bahasa", "darkMode": "Mod Gelap", "darkModeInfo": "Tukar antara tema terang dan gelap aplikasi", + "voiceWakeup": "Bangun Suara", + "voiceWakeupDesc": "Kawal fungsi bangun suara set kepala", + "deviceNotSupportFeature": "Ciri ini tidak disokong oleh peranti semasa", "backups": "Sandaran & Pemulihan", "backupsInfo": "Sandarkan tetapan dan sejarah interaksi AI", "lastBackup": "Sandaran terakhir:", @@ -1696,4 +1699,39 @@ const Map msMY = { "巴哈马": 'Bahamas', "巴布亚新几内亚": 'Papua New Guinea', "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Elf Mudah Alih", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Senyap", + "openBroadcast": "Nyahsenyap", + "confirmClearChat": "Adakah anda pasti mahu memadam semua sejarah sembang?", + "authFailed": "Pengesahan gagal", + "statusConnecting": "Menyambung…", + "statusListening": "Mendengar", + "statusProcessing": "Memproses", + "statusSpeaking": "Membaca", + "statusError": "Ralat", + "statusInCall": "Dalam panggilan", + "statusIdle": "Siap sedia", + "tapToChat": "Ketik butang kanan bawah untuk mula sembang", + "aiSpeaking": "Elf sedang bercakap...", + "interrupt": "× Ganggu", + "listeningHint": "Mendengar...", + "connectingHint": "Menyambung...", + "elfAiThinking": "AI sedang berfikir...", + "holdToTalk": "Tekan untuk bercakap", + "releaseToSend": "Lepas untuk hantar", + "deviceNotAuth": "Peranti tidak disahkan", + "microphoneName": "Mikrofon", + "mobileElfMicPermission": "Elf memerlukan kebenaran mikrofon untuk sembang suara", + "micPermissionSettings": "Sila dayakan kebenaran mikrofon dalam Tetapan", + "weekdayMon": "Isnin", + "weekdayTue": "Selasa", + "weekdayWed": "Rabu", + "weekdayThu": "Khamis", + "weekdayFri": "Jumaat", + "weekdaySat": "Sabtu", + "weekdaySun": "Ahad", }; diff --git a/lib/core/translations/language/nb_no.dart b/lib/core/translations/language/nb_no.dart index 4ae1b49a6..955bc680e 100644 --- a/lib/core/translations/language/nb_no.dart +++ b/lib/core/translations/language/nb_no.dart @@ -774,6 +774,9 @@ const Map nbNO = { "languageSetting": "Språkinnstillinger", "darkMode": "Mørk modus", "darkModeInfo": "Bytt mellom appens lyse og mørke temaer", + "voiceWakeup": "Stemmeaktivering", + "voiceWakeupDesc": "Kontroller headsetets stemmeaktiveringsfunksjon", + "deviceNotSupportFeature": "Denne funksjonen støttes ikke av gjeldende enhet", "backups": "Sikkerhetskopiering og gjenoppretting", "backupsInfo": "Sikkerhetskopier innstillinger og AI-interaksjonshistorikk", "lastBackup": "Siste sikkerhetskopi:", @@ -1698,4 +1701,39 @@ const Map nbNO = { "巴哈马": 'Bahamas', "巴布亚新几内亚": 'Papua Ny-Guinea', "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/nl_nl.dart b/lib/core/translations/language/nl_nl.dart index be4a29637..6ddd7a059 100644 --- a/lib/core/translations/language/nl_nl.dart +++ b/lib/core/translations/language/nl_nl.dart @@ -655,6 +655,9 @@ const Map nlNL = { "languageSetting": "Taalinstellingen", "darkMode": "Donkere modus", "darkModeInfo": "Schakel tussen lichte en donkere thema's van de app", + "voiceWakeup": "Spraakactivering", + "voiceWakeupDesc": "Bedien de spraakactiveringsfunctie van de headset", + "deviceNotSupportFeature": "Deze functie wordt niet ondersteund door het huidige apparaat", "backups": "Back-up & Herstel", "backupsInfo": "Back-up van instellingen en AI-interactiegeschiedenis", "lastBackup": "Laatste back-up:", @@ -1591,4 +1594,39 @@ const Map nlNL = { "\u5df4\u54c8\u9a6c": "Bahama's", "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a": "Papoea-Nieuw-Guinea", "\u8428\u6469\u4e9a": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/pl_pl.dart b/lib/core/translations/language/pl_pl.dart index abe98079d..5a44f94b6 100644 --- a/lib/core/translations/language/pl_pl.dart +++ b/lib/core/translations/language/pl_pl.dart @@ -781,6 +781,9 @@ const Map plPL = { "languageSetting": "Ustawienia języka", "darkMode": "Tryb ciemny", "darkModeInfo": "Przełączanie między jasnym i ciemnym motywem aplikacji", + "voiceWakeup": "Budzenie głosem", + "voiceWakeupDesc": "Sterowanie funkcją budzenia głosem słuchawek", + "deviceNotSupportFeature": "Ta funkcja nie jest obsługiwana przez bieżące urządzenie", "backups": "Kopia zapasowa i przywracanie", "backupsInfo": "Kopia zapasowa ustawień i historii interakcji z AI", "lastBackup": "Ostatnia kopia zapasowa:", @@ -1725,4 +1728,39 @@ const Map plPL = { "巴哈马": "Bahamy", "巴布亚新几内亚": "Papua Nowa Gwinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobilny Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Wycisz", + "openBroadcast": "Włącz dźwięk", + "confirmClearChat": "Czy na pewno chcesz usunąć całą historię czatu?", + "authFailed": "Uwierzytelnianie nie powiodło się", + "statusConnecting": "Łączenie…", + "statusListening": "Słucham", + "statusProcessing": "Przetwarzanie", + "statusSpeaking": "Czyta", + "statusError": "Błąd", + "statusInCall": "W rozmowie", + "statusIdle": "Bezczynny", + "tapToChat": "Dotknij przycisku w prawym dolnym rogu, aby rozpocząć czat", + "aiSpeaking": "Elf mówi...", + "interrupt": "× Przerwij", + "listeningHint": "Słucham...", + "connectingHint": "Łączenie...", + "elfAiThinking": "AI myśli...", + "holdToTalk": "Przytrzymaj, aby mówić", + "releaseToSend": "Puść, aby wysłać", + "deviceNotAuth": "Urządzenie nieuwierzytelnione", + "microphoneName": "Mikrofon", + "mobileElfMicPermission": "Elf potrzebuje dostępu do mikrofonu dla czatu głosowego", + "micPermissionSettings": "Włącz uprawnienie mikrofonu w Ustawieniach", + "weekdayMon": "Poniedziałek", + "weekdayTue": "Wtorek", + "weekdayWed": "Środa", + "weekdayThu": "Czwartek", + "weekdayFri": "Piątek", + "weekdaySat": "Sobota", + "weekdaySun": "Niedziela", }; diff --git a/lib/core/translations/language/pt_pt.dart b/lib/core/translations/language/pt_pt.dart index 742179335..45c6eb9ed 100644 --- a/lib/core/translations/language/pt_pt.dart +++ b/lib/core/translations/language/pt_pt.dart @@ -789,6 +789,9 @@ const Map ptPT = { "languageSetting": "Definição de Idioma", "darkMode": "Modo Escuro", "darkModeInfo": "Alternar entre os temas claro e escuro da aplicação", + "voiceWakeup": "Ativação por voz", + "voiceWakeupDesc": "Controlar a função de ativação por voz do fone de ouvido", + "deviceNotSupportFeature": "Este recurso não é suportado pelo dispositivo atual", "backups": "Cópia de Segurança e Restauro", "backupsInfo": "Cópia de segurança das definições e histórico de interação com IA", @@ -1734,4 +1737,39 @@ const Map ptPT = { "巴哈马": 'Bahamas', "巴布亚新几内亚": 'Papua Nova Guiné', "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Elfo Móvel", + "mobileElfAvatar": "E", + "mobileElfName": "Elfo", + "closeBroadcast": "Silenciar", + "openBroadcast": "Ativar som", + "confirmClearChat": "Tem certeza de que deseja limpar todo o histórico de chat?", + "authFailed": "Falha na autenticação", + "statusConnecting": "Conectando…", + "statusListening": "Ouvindo", + "statusProcessing": "Processando", + "statusSpeaking": "Falando", + "statusError": "Erro", + "statusInCall": "Em chamada", + "statusIdle": "Inativo", + "tapToChat": "Toque no botão inferior direito para conversar com Elfo", + "aiSpeaking": "Elfo está falando...", + "interrupt": "× Interromper", + "listeningHint": "Ouvindo...", + "connectingHint": "Conectando...", + "elfAiThinking": "IA pensando...", + "holdToTalk": "Segure para falar", + "releaseToSend": "Solte para enviar", + "deviceNotAuth": "Dispositivo não autenticado", + "microphoneName": "Microfone", + "mobileElfMicPermission": "Elfo Móvel precisa de permissão de microfone para chat de voz", + "micPermissionSettings": "Por favor, ative a permissão do microfone nas Configurações", + "weekdayMon": "Segunda-feira", + "weekdayTue": "Terça-feira", + "weekdayWed": "Quarta-feira", + "weekdayThu": "Quinta-feira", + "weekdayFri": "Sexta-feira", + "weekdaySat": "Sábado", + "weekdaySun": "Domingo", }; diff --git a/lib/core/translations/language/ro_ro.dart b/lib/core/translations/language/ro_ro.dart index ec5c99af0..69286b58c 100644 --- a/lib/core/translations/language/ro_ro.dart +++ b/lib/core/translations/language/ro_ro.dart @@ -777,6 +777,9 @@ const Map roRO = { "languageSetting": "Setări de limbă", "darkMode": "Mod întunecat", "darkModeInfo": "Comutare între temele deschise și întunecate ale aplicației", + "voiceWakeup": "Trezire vocală", + "voiceWakeupDesc": "Controlați funcția de trezire vocală a căștilor", + "deviceNotSupportFeature": "Această funcție nu este acceptată de dispozitivul curent", "backups": "Backup și restaurare", "backupsInfo": "Backup setări și istoric interacțiuni AI", "lastBackup": "Ultimul backup:", @@ -1722,4 +1725,39 @@ const Map roRO = { "巴哈马": 'Bahamas', "巴布亚新几内亚": "Papua Noua Guinee", "萨摩亚": 'Samoa', + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index ee53bee9d..e04ca156a 100644 --- a/lib/core/translations/language/ru_ru.dart +++ b/lib/core/translations/language/ru_ru.dart @@ -778,6 +778,9 @@ const Map ruRU = { "languageSetting": "Настройки языка", "darkMode": "Темный режим", "darkModeInfo": "Переключение между светлой и темной темами приложения", + "voiceWakeup": "Голосовое пробуждение", + "voiceWakeupDesc": "Управление функцией голосового пробуждения гарнитуры", + "deviceNotSupportFeature": "Эта функция не поддерживается текущим устройством", "backups": "Резервное копирование и восстановление", "backupsInfo": "Резервное копирование настроек и истории взаимодействия с AI", "lastBackup": "Последнее резервное копирование:", @@ -1714,4 +1717,39 @@ const Map ruRU = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Мобильный Эльф", + "mobileElfAvatar": "E", + "mobileElfName": "Эльф", + "closeBroadcast": "Выключить звук", + "openBroadcast": "Включить звук", + "confirmClearChat": "Вы уверены, что хотите очистить всю историю чата?", + "authFailed": "Ошибка аутентификации", + "statusConnecting": "Подключение…", + "statusListening": "Слушаю", + "statusProcessing": "Обработка", + "statusSpeaking": "Озвучивание", + "statusError": "Ошибка", + "statusInCall": "В звонке", + "statusIdle": "Ожидание", + "tapToChat": "Нажмите кнопку внизу справа, чтобы начать чат с Эльфом", + "aiSpeaking": "Эльф говорит...", + "interrupt": "× Прервать", + "listeningHint": "Слушаю...", + "connectingHint": "Подключение...", + "elfAiThinking": "ИИ думает...", + "holdToTalk": "Удерживайте для речи", + "releaseToSend": "Отпустите для отправки", + "deviceNotAuth": "Устройство не аутентифицировано", + "microphoneName": "Микрофон", + "mobileElfMicPermission": "Для голосового чата требуется разрешение на использование микрофона", + "micPermissionSettings": "Пожалуйста, включите разрешение на микрофон в Настройках", + "weekdayMon": "Понедельник", + "weekdayTue": "Вторник", + "weekdayWed": "Среда", + "weekdayThu": "Четверг", + "weekdayFri": "Пятница", + "weekdaySat": "Суббота", + "weekdaySun": "Воскресенье", }; diff --git a/lib/core/translations/language/sk_sk.dart b/lib/core/translations/language/sk_sk.dart index 089b9d552..4e08705ce 100644 --- a/lib/core/translations/language/sk_sk.dart +++ b/lib/core/translations/language/sk_sk.dart @@ -771,6 +771,9 @@ const Map skSK = { "languageSetting": "Nastavenie jazyka", "darkMode": "Tmavý režim", "darkModeInfo": "Prepínanie medzi svetlou a tmavou témou aplikácie", + "voiceWakeup": "Hlasové prebudenie", + "voiceWakeupDesc": "Ovládanie funkcie hlasového prebudenia slúchadiel", + "deviceNotSupportFeature": "Táto funkcia nie je aktuálnym zariadením podporovaná", "backups": "Zálohovanie a obnovenie", "backupsInfo": "Zálohovanie nastavení a histórie interakcií s AI", "lastBackup": "Posledná záloha:", @@ -1703,4 +1706,39 @@ const Map skSK = { "巴哈马": "Bahamy", "巴布亚新几内亚": "Papua-Nová Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/sl_si.dart b/lib/core/translations/language/sl_si.dart index 091e8009c..150a47493 100644 --- a/lib/core/translations/language/sl_si.dart +++ b/lib/core/translations/language/sl_si.dart @@ -777,6 +777,9 @@ const Map slSI = { "languageSetting": "Nastavitev jezika", "darkMode": "Temni način", "darkModeInfo": "Preklapljanje med svetlo in temno temo aplikacije", + "voiceWakeup": "Glasovna prebuja", + "voiceWakeupDesc": "Nadzor funkcije glasovne prebuje slušalk", + "deviceNotSupportFeature": "Ta funkcija ni podprta na trenutni napravi", "backups": "Varnostno kopiranje in obnavljanje", "backupsInfo": "Varnostno kopiranje nastavitev in zgodovine interakcij z AI", "lastBackup": "Zadnja varnostna kopija:", @@ -1712,4 +1715,39 @@ const Map slSI = { "巴哈马": "Bahami", "巴布亚新几内亚": "Papua Nova Gvineja", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/sr_rs.dart b/lib/core/translations/language/sr_rs.dart index b764bae87..7f6ae1088 100644 --- a/lib/core/translations/language/sr_rs.dart +++ b/lib/core/translations/language/sr_rs.dart @@ -774,6 +774,9 @@ const Map srRS = { "languageSetting": "Podešavanje jezika", "darkMode": "Tamni režim", "darkModeInfo": "Prebacivanje između svetle i tamne teme aplikacije", + "voiceWakeup": "Гласовно буђење", + "voiceWakeupDesc": "Контрола функције гласовног буђења слушалица", + "deviceNotSupportFeature": "Ова функција није подржана на тренутном уређају", "backups": "Rezervna kopija i vraćanje", "backupsInfo": "Rezervna kopija podešavanja i istorije interakcije sa AI", "lastBackup": "Poslednja rezervna kopija:", @@ -1707,4 +1710,39 @@ const Map srRS = { "巴哈马": "Bahami", "巴布亚新几内亚": "Papua Nova Gvineja", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/sv_se.dart b/lib/core/translations/language/sv_se.dart index ace86112e..0ecbcaa02 100644 --- a/lib/core/translations/language/sv_se.dart +++ b/lib/core/translations/language/sv_se.dart @@ -776,6 +776,9 @@ const Map svSE = { "languageSetting": "Språkinställning", "darkMode": "Mörkt läge", "darkModeInfo": "Växla mellan appens ljusa och mörka tema", + "voiceWakeup": "Röstväckning", + "voiceWakeupDesc": "Styr headsetets röstväckningsfunktion", + "deviceNotSupportFeature": "Den här funktionen stöds inte av den aktuella enheten", "backups": "Säkerhetskopiering och återställning", "backupsInfo": "Säkerhetskopiera inställningar och AI-interaktionshistorik", "lastBackup": "Senaste säkerhetskopia:", @@ -1702,4 +1705,39 @@ const Map svSE = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/th_th.dart b/lib/core/translations/language/th_th.dart index ef0a1ca58..2eb5d6ed0 100644 --- a/lib/core/translations/language/th_th.dart +++ b/lib/core/translations/language/th_th.dart @@ -752,6 +752,9 @@ const Map thTH = { "languageSetting": "การตั้งค่าภาษา", "darkMode": "โหมดมืด", "darkModeInfo": "สลับธีมสว่างและมืดของแอปพลิเคชัน", + "voiceWakeup": "ปลุกด้วยเสียง", + "voiceWakeupDesc": "ควบคุมฟังก์ชันปลุกด้วยเสียงของหูฟัง", + "deviceNotSupportFeature": "คุณสมบัตินี้ไม่รองรับอุปกรณ์ปัจจุบัน", "backups": "สำรองและกู้คืน", "backupsInfo": "สำรองการตั้งค่าและประวัติการโต้ตอบกับ AI", "lastBackup": "การสำรองข้อมูลล่าสุด:", @@ -1661,4 +1664,39 @@ const Map thTH = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "เอลฟ์มือถือ", + "mobileElfAvatar": "E", + "mobileElfName": "เอลฟ์", + "closeBroadcast": "ปิดเสียง", + "openBroadcast": "เปิดเสียง", + "confirmClearChat": "คุณแน่ใจหรือไม่ว่าต้องการลบประวัติแชททั้งหมด?", + "authFailed": "การยืนยันตัวตนล้มเหลว", + "statusConnecting": "กำลังเชื่อมต่อ…", + "statusListening": "กำลังฟัง", + "statusProcessing": "กำลังประมวลผล", + "statusSpeaking": "กำลังอ่าน", + "statusError": "ข้อผิดพลาด", + "statusInCall": "อยู่ในสาย", + "statusIdle": "ว่าง", + "tapToChat": "แตะปุ่มขวาล่างเพื่อเริ่มแชท", + "aiSpeaking": "เอลฟ์กำลังพูด...", + "interrupt": "× ขัดจังหวะ", + "listeningHint": "กำลังฟัง...", + "connectingHint": "กำลังเชื่อมต่อ...", + "elfAiThinking": "AI กำลังคิด...", + "holdToTalk": "กดค้างเพื่อพูด", + "releaseToSend": "ปล่อยเพื่อส่ง", + "deviceNotAuth": "อุปกรณ์ไม่ได้รับการยืนยัน", + "microphoneName": "ไมโครโฟน", + "mobileElfMicPermission": "ต้องการสิทธิ์ไมโครโฟนสำหรับแชทเสียง", + "micPermissionSettings": "กรุณาเปิดสิทธิ์ไมโครโฟนในการตั้งค่า", + "weekdayMon": "วันจันทร์", + "weekdayTue": "วันอังคาร", + "weekdayWed": "วันพุธ", + "weekdayThu": "วันพฤหัสบดี", + "weekdayFri": "วันศุกร์", + "weekdaySat": "วันเสาร์", + "weekdaySun": "วันอาทิตย์", }; diff --git a/lib/core/translations/language/tl_ph.dart b/lib/core/translations/language/tl_ph.dart index 59b1fe44b..a323a024f 100644 --- a/lib/core/translations/language/tl_ph.dart +++ b/lib/core/translations/language/tl_ph.dart @@ -791,6 +791,9 @@ const Map tlPH = { "languageSetting": "Setting ng Wika", "darkMode": "Dark Mode", "darkModeInfo": "Magpalit sa pagitan ng maliwanag at madilim na tema ng app", + "voiceWakeup": "Voice Wakeup", + "voiceWakeupDesc": "Kontrolin ang voice wakeup function ng headset", + "deviceNotSupportFeature": "Ang feature na ito ay hindi sinusuportahan ng kasalukuyang device", "backups": "Backup at Restore", "backupsInfo": "I-backup ang mga setting at kasaysayan ng interaksyon sa AI", "lastBackup": "Huling backup:", @@ -1740,4 +1743,39 @@ const Map tlPH = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index 2220c4634..3d3d9b157 100644 --- a/lib/core/translations/language/tr_tr.dart +++ b/lib/core/translations/language/tr_tr.dart @@ -771,8 +771,10 @@ const Map trTR = { "systemSetting": "Sistem Ayarları", "languageSetting": "Dil Ayarları", "darkMode": "Karanlık Mod", - "darkModeInfo": - "Uygulamanın aydınlık ve karanlık temaları arasında geçiş yapın", + "darkModeInfo": "Uygulamanın aydınlık ve karanlık temaları arasında geçiş yapın", + "voiceWakeup": "Sesle Uyandırma", + "voiceWakeupDesc": "Kulaklığın sesle uyandırma işlevini kontrol edin", + "deviceNotSupportFeature": "Bu özellik mevcut cihaz tarafından desteklenmiyor", "backups": "Yedekle ve Geri Yükle", "backupsInfo": "Ayarları ve yapay zeka etkileşim geçmişini yedekleyin", "lastBackup": "Son yedekleme:", @@ -1696,4 +1698,39 @@ const Map trTR = { "巴哈马": "Bahamalar", "巴布亚新几内亚": "Papua Yeni Gine", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobil Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Sesi kapat", + "openBroadcast": "Sesi aç", + "confirmClearChat": "Tüm sohbet geçmişini silmek istediğinizden emin misiniz?", + "authFailed": "Kimlik doğrulama başarısız", + "statusConnecting": "Bağlanıyor…", + "statusListening": "Dinliyor", + "statusProcessing": "İşleniyor", + "statusSpeaking": "Okuyor", + "statusError": "Hata", + "statusInCall": "Aramada", + "statusIdle": "Boşta", + "tapToChat": "Sohbet başlatmak için sağ alttaki düğmeye dokunun", + "aiSpeaking": "Elf konuşuyor...", + "interrupt": "× Kes", + "listeningHint": "Dinliyor...", + "connectingHint": "Bağlanıyor...", + "elfAiThinking": "AI düşünüyor...", + "holdToTalk": "Konuşmak için basılı tut", + "releaseToSend": "Göndermek için bırak", + "deviceNotAuth": "Cihaz doğrulanmamış", + "microphoneName": "Mikrofon", + "mobileElfMicPermission": "Sesli sohbet için mikrofon izni gerekli", + "micPermissionSettings": "Lütfen Ayarlar\'da mikrofon iznini etkinleştirin", + "weekdayMon": "Pazartesi", + "weekdayTue": "Salı", + "weekdayWed": "Çarşamba", + "weekdayThu": "Perşembe", + "weekdayFri": "Cuma", + "weekdaySat": "Cumartesi", + "weekdaySun": "Pazar", }; diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index ee7afdfa9..75d72fcb0 100644 --- a/lib/core/translations/language/uk_ua.dart +++ b/lib/core/translations/language/uk_ua.dart @@ -779,6 +779,9 @@ const Map ukUA = { "languageSetting": "Налаштування мови", "darkMode": "Темний режим", "darkModeInfo": "Перемикання між світлою та темною темами програми", + "voiceWakeup": "Голосове пробудження", + "voiceWakeupDesc": "Керування функцією голосового пробудження гарнітури", + "deviceNotSupportFeature": "Ця функція не підтримується поточним пристроєм", "backups": "Резервне копіювання та відновлення", "backupsInfo": "Резервне копіювання налаштувань та історії взаємодії з AI", "lastBackup": "Останнє резервне копіювання:", @@ -1714,4 +1717,39 @@ const Map ukUA = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", + + // Mobile Elf module + "mobileElf": "Mobile Elf", + "mobileElfAvatar": "E", + "mobileElfName": "Elf", + "closeBroadcast": "Mute", + "openBroadcast": "Unmute", + "confirmClearChat": "Are you sure you want to clear all chat history?", + "authFailed": "Auth Failed", + "statusConnecting": "Connecting…", + "statusListening": "Listening", + "statusProcessing": "Processing", + "statusSpeaking": "Speaking", + "statusError": "Error", + "statusInCall": "In Call", + "statusIdle": "Idle", + "tapToChat": "Tap the bottom-right button to chat with Elf", + "aiSpeaking": "Elf is speaking...", + "interrupt": "× Interrupt", + "listeningHint": "Listening...", + "connectingHint": "Connecting...", + "elfAiThinking": "AI thinking...", + "holdToTalk": "Hold to Talk", + "releaseToSend": "Release to Send", + "deviceNotAuth": "Device not authenticated", + "microphoneName": "Microphone", + "mobileElfMicPermission": "Mobile Elf needs microphone permission for voice chat", + "micPermissionSettings": "Please enable microphone permission in Settings to use voice features", + "weekdayMon": "Monday", + "weekdayTue": "Tuesday", + "weekdayWed": "Wednesday", + "weekdayThu": "Thursday", + "weekdayFri": "Friday", + "weekdaySat": "Saturday", + "weekdaySun": "Sunday", }; diff --git a/lib/core/translations/language/vi_vn.dart b/lib/core/translations/language/vi_vn.dart index c9570f02b..961cbbbcb 100644 --- a/lib/core/translations/language/vi_vn.dart +++ b/lib/core/translations/language/vi_vn.dart @@ -765,6 +765,9 @@ const Map viVN = { "languageSetting": "Cài đặt ngôn ngữ", "darkMode": "Chế độ tối", "darkModeInfo": "Chuyển đổi chủ đề sáng và tối của ứng dụng", + "voiceWakeup": "Đánh thức bằng giọng nói", + "voiceWakeupDesc": "Điều khiển chức năng đánh thức bằng giọng nói của tai nghe", + "deviceNotSupportFeature": "Tính năng này không được hỗ trợ bởi thiết bị hiện tại", "backups": "Sao lưu & Phục hồi", "backupsInfo": "Sao lưu cài đặt và lịch sử tương tác AI", "lastBackup": "Lần sao lưu cuối:", @@ -1677,4 +1680,39 @@ const Map viVN = { "巴哈马": "Ba-ha-ma", "巴布亚新几内亚": "Pa-pua Niu Ghi-nê", "萨摩亚": "Sa-moa", + + // Mobile Elf module + "mobileElf": "Tiểu Tiên", + "mobileElfAvatar": "E", + "mobileElfName": "Tiểu Tiên", + "closeBroadcast": "Tắt phát", + "openBroadcast": "Bật phát", + "confirmClearChat": "Bạn có chắc chắn muốn xóa tất cả lịch sử trò chuyện?", + "authFailed": "Xác thực thất bại", + "statusConnecting": "Đang kết nối…", + "statusListening": "Đang nghe", + "statusProcessing": "Đang xử lý", + "statusSpeaking": "Đang đọc", + "statusError": "Lỗi", + "statusInCall": "Đang gọi", + "statusIdle": "Rảnh", + "tapToChat": "Nhấn nút góc dưới bên phải để trò chuyện", + "aiSpeaking": "Đang đọc...", + "interrupt": "× Ngắt", + "listeningHint": "Đang nghe...", + "connectingHint": "Đang kết nối...", + "elfAiThinking": "AI đang suy nghĩ...", + "holdToTalk": "Giữ để nói", + "releaseToSend": "Thả để gửi", + "deviceNotAuth": "Thiết bị chưa xác thực", + "microphoneName": "Micro", + "mobileElfMicPermission": "Cần quyền micro để trò chuyện bằng giọng nói", + "micPermissionSettings": "Vui lòng bật quyền micro trong Cài đặt", + "weekdayMon": "Thứ Hai", + "weekdayTue": "Thứ Ba", + "weekdayWed": "Thứ Tư", + "weekdayThu": "Thứ Năm", + "weekdayFri": "Thứ Sáu", + "weekdaySat": "Thứ Bảy", + "weekdaySun": "Chủ Nhật", }; diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index 725dc266b..b15441d91 100644 --- a/lib/core/translations/language/zh_cn.dart +++ b/lib/core/translations/language/zh_cn.dart @@ -711,6 +711,9 @@ const Map zhCN = { "languageSetting": "语言设置", "darkMode": "暗黑模式", "darkModeInfo": "切换应用的明暗主题", + "voiceWakeup": "语音唤醒", + "voiceWakeupDesc": "控制耳机语音唤醒功能的开关", + "deviceNotSupportFeature": "当前设备不支持此功能", "backups": "备份与恢复", "backupsInfo": "备份设置和AI互动历史", "lastBackup": "上次备份:", @@ -1530,4 +1533,39 @@ const Map zhCN = { "巴哈马": "巴哈马", "巴布亚新几内亚": "巴布亚新几内亚", "萨摩亚": "萨摩亚", + + // 移动精灵模块 + "mobileElf": "移动精灵", + "mobileElfAvatar": "晓", + "mobileElfName": "晓晓", + "closeBroadcast": "关闭播报", + "openBroadcast": "开启播报", + "confirmClearChat": "确定清空所有聊天记录吗?", + "authFailed": "认证失败", + "statusConnecting": "连接中…", + "statusListening": "聆听中", + "statusProcessing": "处理中", + "statusSpeaking": "朗读中", + "statusError": "错误", + "statusInCall": "通话中", + "statusIdle": "空闲", + "tapToChat": "点击右下角按钮,即可与晓晓对话", + "aiSpeaking": "晓晓正在朗读...", + "interrupt": "× 打断", + "listeningHint": "聆听中...", + "connectingHint": "正在连接...", + "elfAiThinking": "AI 思考中...", + "holdToTalk": "按住 说话", + "releaseToSend": "松开发送", + "deviceNotAuth": "设备未认证", + "microphoneName": "麦克风", + "mobileElfMicPermission": "移动精灵需要麦克风权限才能进行语音对话", + "micPermissionSettings": "请在设置中开启麦克风权限以使用语音功能", + "weekdayMon": "星期一", + "weekdayTue": "星期二", + "weekdayWed": "星期三", + "weekdayThu": "星期四", + "weekdayFri": "星期五", + "weekdaySat": "星期六", + "weekdaySun": "星期日", }; diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index 9332d4c0e..3257774fb 100644 --- a/lib/core/translations/language/zh_hk.dart +++ b/lib/core/translations/language/zh_hk.dart @@ -713,6 +713,9 @@ const Map zhHK = { "languageSetting": "語言設定", "darkMode": "深色模式", "darkModeInfo": "切換應用的明暗主題", + "voiceWakeup": "語音喚醒", + "voiceWakeupDesc": "控制耳機語音喚醒功能的開關", + "deviceNotSupportFeature": "當前設備不支持此功能", "backups": "備份與還原", "backupsInfo": "備份設定和AI互動歷史", "lastBackup": "上次備份:", @@ -1529,4 +1532,39 @@ const Map zhHK = { "巴哈马": '巴哈馬', "巴布亚新几内亚": '巴布亞新幾內亞', "萨摩亚": '薩摩亞', + + // Mobile Elf module + "mobileElf": "移動精靈", + "mobileElfAvatar": "曉", + "mobileElfName": "曉曉", + "closeBroadcast": "關閉播報", + "openBroadcast": "開啟播報", + "confirmClearChat": "確定清空所有聊天記錄嗎?", + "authFailed": "認證失敗", + "statusConnecting": "連接中…", + "statusListening": "聆聽中", + "statusProcessing": "處理中", + "statusSpeaking": "朗讀中", + "statusError": "錯誤", + "statusInCall": "通話中", + "statusIdle": "空閒", + "tapToChat": "點擊右下角按鈕,即可與曉曉對話", + "aiSpeaking": "曉曉正在朗讀...", + "interrupt": "× 打斷", + "listeningHint": "聆聽中...", + "connectingHint": "正在連接...", + "elfAiThinking": "AI 思考中...", + "holdToTalk": "按住 說話", + "releaseToSend": "鬆開發送", + "deviceNotAuth": "設備未認證", + "microphoneName": "麥克風", + "mobileElfMicPermission": "移動精靈需要麥克風權限才能進行語音對話", + "micPermissionSettings": "請在設定中開啟麥克風權限以使用語音功能", + "weekdayMon": "星期一", + "weekdayTue": "星期二", + "weekdayWed": "星期三", + "weekdayThu": "星期四", + "weekdayFri": "星期五", + "weekdaySat": "星期六", + "weekdaySun": "星期日", }; diff --git a/lib/core/translations/language/zh_tw.dart b/lib/core/translations/language/zh_tw.dart index 943fbc140..5713c3074 100644 --- a/lib/core/translations/language/zh_tw.dart +++ b/lib/core/translations/language/zh_tw.dart @@ -713,6 +713,9 @@ const Map zhTW = { "languageSetting": "語言設定", "darkMode": "深色模式", "darkModeInfo": "切換應用的明暗主題", + "voiceWakeup": "語音喚醒", + "voiceWakeupDesc": "控制耳機語音喚醒功能的開關", + "deviceNotSupportFeature": "目前裝置不支援此功能", "backups": "備份與還原", "backupsInfo": "備份設定和AI互動歷史", "lastBackup": "上次備份:", @@ -1529,4 +1532,39 @@ const Map zhTW = { "巴哈马": '巴哈馬', "巴布亚新几内亚": '巴布亞新幾內亞', "萨摩亚": '薩摩亞', + + // Mobile Elf module + "mobileElf": "移動精靈", + "mobileElfAvatar": "曉", + "mobileElfName": "曉曉", + "closeBroadcast": "關閉播報", + "openBroadcast": "開啟播報", + "confirmClearChat": "確定清空所有聊天記錄嗎?", + "authFailed": "認證失敗", + "statusConnecting": "連線中…", + "statusListening": "聆聽中", + "statusProcessing": "處理中", + "statusSpeaking": "朗讀中", + "statusError": "錯誤", + "statusInCall": "通話中", + "statusIdle": "閒置", + "tapToChat": "點擊右下角按鈕,即可與曉曉對話", + "aiSpeaking": "曉曉正在朗讀...", + "interrupt": "× 打斷", + "listeningHint": "聆聽中...", + "connectingHint": "正在連線...", + "elfAiThinking": "AI 思考中...", + "holdToTalk": "按住 說話", + "releaseToSend": "鬆開傳送", + "deviceNotAuth": "裝置未認證", + "microphoneName": "麥克風", + "mobileElfMicPermission": "移動精靈需要麥克風權限才能進行語音對話", + "micPermissionSettings": "請在設定中開啟麥克風權限以使用語音功能", + "weekdayMon": "星期一", + "weekdayTue": "星期二", + "weekdayWed": "星期三", + "weekdayThu": "星期四", + "weekdayFri": "星期五", + "weekdaySat": "星期六", + "weekdaySun": "星期日", }; diff --git a/lib/data/models/appconfig_model.dart b/lib/data/models/appconfig_model.dart index ec566e102..9487db683 100644 --- a/lib/data/models/appconfig_model.dart +++ b/lib/data/models/appconfig_model.dart @@ -83,6 +83,7 @@ class DBProduct { final String? version; bool? isforceupdate; final bool? iscontinuouschat; + final bool? wakeupenable; //该产品是否拥有唤醒开关控制 final String? updatedescription; final String? updatepackageaddress; @@ -96,6 +97,7 @@ class DBProduct { required this.version, required this.isforceupdate, //该产品固件版本是否强制更新 required this.iscontinuouschat, + required this.wakeupenable, required this.updatedescription, required this.updatepackageaddress, }); diff --git a/lib/data/models/appconfig_model.g.dart b/lib/data/models/appconfig_model.g.dart index 4c8be2f92..d369dc7a5 100644 --- a/lib/data/models/appconfig_model.g.dart +++ b/lib/data/models/appconfig_model.g.dart @@ -61,8 +61,8 @@ Map _$DBAgentToJson(DBAgent instance) => { DBMCPServer _$DBMCPServerFromJson(Map json) => DBMCPServer( servername: json['servername'] as String, url: json['url'] as String, - type: json['type'] as int, - tools: json['tools'] as String? ?? '', + type: (json['type'] as num).toInt(), + tools: json['tools'] as String, ); Map _$DBMCPServerToJson(DBMCPServer instance) => @@ -74,15 +74,16 @@ Map _$DBMCPServerToJson(DBMCPServer instance) => }; DBProduct _$DBProductFromJson(Map json) => DBProduct( - id: json['id'] as int, + id: (json['id'] as num).toInt(), factoryid: (json['factoryid'] as num).toInt(), + devicetype: (json['devicetype'] as num).toInt(), devicename: json['devicename'] as String, - devicetype: json['devicetype'] as int, productimage: json['productimage'] as String?, scanuuid: json['scanuuid'] as String, version: json['version'] as String?, isforceupdate: json['isforceupdate'] as bool?, iscontinuouschat: json['iscontinuouschat'] as bool?, + wakeupenable: json['wakeupenable'] as bool?, updatedescription: json['updatedescription'] as String?, updatepackageaddress: json['updatepackageaddress'] as String?, ); @@ -91,12 +92,13 @@ Map _$DBProductToJson(DBProduct instance) => { 'id': instance.id, 'factoryid': instance.factoryid, 'devicetype': instance.devicetype, + 'devicename': instance.devicename, 'productimage': instance.productimage, 'scanuuid': instance.scanuuid, 'version': instance.version, 'isforceupdate': instance.isforceupdate, 'iscontinuouschat': instance.iscontinuouschat, - 'devicename': instance.devicename, + 'wakeupenable': instance.wakeupenable, 'updatedescription': instance.updatedescription, 'updatepackageaddress': instance.updatepackageaddress, }; diff --git a/lib/data/models/channel_app_model.g.dart b/lib/data/models/channel_app_model.g.dart index 720e9cc33..b55e2e413 100644 --- a/lib/data/models/channel_app_model.g.dart +++ b/lib/data/models/channel_app_model.g.dart @@ -39,7 +39,7 @@ AppInfo _$AppInfoFromJson(Map json) => AppInfo( version: json['version'] as String, tourists: json['tourists'] as bool? ?? false, allowskipdevicebinding: json['allowskipdevicebinding'] as bool? ?? false, - paychannels: json['paychannels'] as String?, + paychannels: json['Paychannels'] as String?, ); Map _$AppInfoToJson(AppInfo instance) => { @@ -48,6 +48,6 @@ Map _$AppInfoToJson(AppInfo instance) => { 'description': instance.description, 'version': instance.version, 'tourists': instance.tourists, - 'allowskipsevicebinding': instance.allowskipdevicebinding, - 'paychannels': instance.paychannels, + 'allowskipdevicebinding': instance.allowskipdevicebinding, + 'Paychannels': instance.paychannels, }; diff --git a/lib/modules/mobile_elf/controllers/mobile_elf_controller.dart b/lib/modules/mobile_elf/controllers/mobile_elf_controller.dart index 356b0f726..cc121a08c 100644 --- a/lib/modules/mobile_elf/controllers/mobile_elf_controller.dart +++ b/lib/modules/mobile_elf/controllers/mobile_elf_controller.dart @@ -5,6 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:permission_handler/permission_handler.dart'; + import '../../../data/models/appconfig.dart'; import '../../../core/utils/logger.dart'; import '../../../core/utils/permission_util.dart'; @@ -210,7 +211,7 @@ class MobileElfController extends GetxController { _pttResultPending = false; _pttSafetyTimer?.cancel(); _endBleWakeup(); - final msg = event.data['message']?.toString() ?? '未知错误'; + final msg = event.data['message']?.toString() ?? 'unknownError'.tr; status.value = MobileElfStatus.error; errorMsg.value = msg; Logger.error('$_tag error: $msg'); @@ -229,7 +230,7 @@ class MobileElfController extends GetxController { break; case AgentServiceEventType.credentialFailed: - final reason = event.data['reason']?.toString() ?? '设备未认证'; + final reason = event.data['reason']?.toString() ?? 'deviceNotAuth'.tr; Logger.error('$_tag 设备认证失败: $reason'); credentialFailed.value = true; credentialFailedReason.value = reason; @@ -267,9 +268,9 @@ class MobileElfController extends GetxController { final granted = await PermissionUtil.instance.requestPermission( permissionType: Permission.microphone, - permissionName: '麦克风', - explanationText: '移动精灵需要麦克风权限才能进行语音对话', - permanentDenialText: '请在设置中开启麦克风权限以使用语音功能', + permissionName: 'microphoneName'.tr, + explanationText: 'mobileElfMicPermission'.tr, + permanentDenialText: 'micPermissionSettings'.tr, ); if (!granted || inCall.value) return; // 权限等待期间可能已被挂断或重复调用 _inCallMode = true; @@ -331,9 +332,9 @@ class MobileElfController extends GetxController { } final granted = await PermissionUtil.instance.requestPermission( permissionType: Permission.microphone, - permissionName: '麦克风', - explanationText: '移动精灵需要麦克风权限才能进行语音对话', - permanentDenialText: '请在设置中开启麦克风权限以使用语音功能', + permissionName: 'microphoneName'.tr, + explanationText: 'mobileElfMicPermission'.tr, + permanentDenialText: 'micPermissionSettings'.tr, ); // 权限等待期间用户已松手(stopPtt 将 _pttStarting 置 false),直接放弃 if (!granted || !_pttStarting) { diff --git a/lib/modules/mobile_elf/views/mobile_elf_view.dart b/lib/modules/mobile_elf/views/mobile_elf_view.dart index dad19841f..a42b8da67 100644 --- a/lib/modules/mobile_elf/views/mobile_elf_view.dart +++ b/lib/modules/mobile_elf/views/mobile_elf_view.dart @@ -21,8 +21,9 @@ class MobileElfView extends GetView { static const _border = Color(0xFFEAECF0); // 渐变复用 + // 中国移动品牌色:蓝→绿 static const _avatarGradient = LinearGradient( - colors: [Color(0xFF667EEA), Color(0xFF764BA2)], + colors: [Color(0xFF0077D9), Color(0xFF00A651)], begin: Alignment.topLeft, end: Alignment.bottomRight, ); @@ -77,9 +78,9 @@ class MobileElfView extends GetView { title: Row( mainAxisSize: MainAxisSize.min, children: [ - _gradientCircle(32.w, '晓', 13.sp), + _gradientCircle(32.w, 'mobileElfAvatar'.tr, 13.sp), SizedBox(width: 10.w), - Text('移动精灵', + Text('mobileElf'.tr, style: TextStyle( fontSize: 16.sp, fontWeight: FontWeight.w600, @@ -101,7 +102,7 @@ class MobileElfView extends GetView { : (isDark ? Colors.grey[500] : _textSecondary), ), onPressed: () => controller.ttsEnabled.toggle(), - tooltip: controller.ttsEnabled.value ? '关闭播报' : '开启播报', + tooltip: controller.ttsEnabled.value ? 'closeBroadcast'.tr : 'openBroadcast'.tr, )), PopupMenuButton( icon: Icon(Icons.more_vert, @@ -110,16 +111,16 @@ class MobileElfView extends GetView { if (value == 'clear') { Get.dialog( AlertDialog( - title: Text('clearChatHistory'.tr.isNotEmpty ? 'clearChatHistory'.tr : '清空记录'), - content: Text('confirmClearChat'.tr.isNotEmpty ? 'confirmClearChat'.tr : '确定清空所有聊天记录吗?'), + title: Text('clearChatHistory'.tr), + content: Text('confirmClearChat'.tr), actions: [ - TextButton(onPressed: () => Get.back(), child: Text('cancel'.tr.isNotEmpty ? 'cancel'.tr : '取消')), + TextButton(onPressed: () => Get.back(), child: Text('cancel'.tr)), TextButton( onPressed: () { controller.clearMessages(); Get.back(); }, - child: Text('confirm'.tr.isNotEmpty ? 'confirm'.tr : '确定', style: const TextStyle(color: Colors.red)), + child: Text('confirm'.tr, style: const TextStyle(color: Colors.red)), ), ], ), @@ -132,7 +133,7 @@ class MobileElfView extends GetView { child: Row(children: [ Icon(Icons.delete_outline, size: 18.sp, color: Colors.red), SizedBox(width: 8.w), - Text('清空记录', style: TextStyle(fontSize: 14.sp, color: Colors.red)), + Text('clearChatHistory'.tr, style: TextStyle(fontSize: 14.sp, color: Colors.red)), ]), ), ], @@ -150,7 +151,7 @@ class MobileElfView extends GetView { child: Row(mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.lock_outline_rounded, size: 11.sp, color: _red), SizedBox(width: 4.w), - Text('认证失败', style: TextStyle(fontSize: 11.sp, color: _red, fontWeight: FontWeight.w500)), + Text('authFailed'.tr, style: TextStyle(fontSize: 11.sp, color: _red, fontWeight: FontWeight.w500)), ]), ); } @@ -190,19 +191,19 @@ class MobileElfView extends GetView { _PillCfg _pillConfig(MobileElfStatus s, bool inCall) { switch (s) { case MobileElfStatus.connecting: - return const _PillCfg(Color(0xFFFFFAEB), Color(0xFFB54708), '连接中…'); + return _PillCfg(const Color(0xFFFFFAEB), const Color(0xFFB54708), 'statusConnecting'.tr); case MobileElfStatus.recording: - return const _PillCfg(Color(0xFFECFDF3), _greenDark, '聆听中'); + return _PillCfg(const Color(0xFFECFDF3), _greenDark, 'statusListening'.tr); case MobileElfStatus.thinking: - return const _PillCfg(Color(0xFFEFF8FF), Color(0xFF175CD3), '处理中'); + return _PillCfg(const Color(0xFFEFF8FF), const Color(0xFF175CD3), 'statusProcessing'.tr); case MobileElfStatus.speaking: - return const _PillCfg(Color(0xFFECFDF3), _greenDark, '朗读中'); + return _PillCfg(const Color(0xFFECFDF3), _greenDark, 'statusSpeaking'.tr); case MobileElfStatus.error: - return const _PillCfg(Color(0xFFFEF2F2), _red, '错误'); + return _PillCfg(const Color(0xFFFEF2F2), _red, 'statusError'.tr); case MobileElfStatus.idle: return inCall - ? const _PillCfg(Color(0xFFECFDF3), _greenDark, '通话中') - : const _PillCfg(Color(0xFFF2F4F7), _textSecondary, '空闲'); + ? _PillCfg(const Color(0xFFECFDF3), _greenDark, 'statusInCall'.tr) + : _PillCfg(const Color(0xFFF2F4F7), _textSecondary, 'statusIdle'.tr); } } @@ -226,7 +227,7 @@ class MobileElfView extends GetView { ElevatedButton.icon( onPressed: controller.retryCredentials, icon: const Icon(Icons.refresh), - label: const Text('重试'), + label: Text('retry'.tr), ), ], ), @@ -260,15 +261,15 @@ class MobileElfView extends GetView { child: Column( mainAxisSize: MainAxisSize.min, children: [ - _gradientCircle(80.w, '晓', 32.sp), + _gradientCircle(80.w, 'mobileElfAvatar'.tr, 32.sp), SizedBox(height: 20.h), - Text('移动精灵', + Text('mobileElf'.tr, style: TextStyle( fontSize: 20.sp, fontWeight: FontWeight.bold, color: isDark ? Colors.white : _textPrimary)), SizedBox(height: 8.h), - Text('点击右下角按钮,即可与晓晓对话', + Text('tapToChat'.tr, style: TextStyle( fontSize: 13.sp, color: isDark ? Colors.grey[500] : _textSecondary)), @@ -290,9 +291,9 @@ class MobileElfView extends GetView { // AI 头像 + 名字 if (!isUser) ...[ Row(children: [ - _gradientCircle(28.w, '晓', 11.sp), + _gradientCircle(28.w, 'mobileElfAvatar'.tr, 11.sp), SizedBox(width: 6.w), - Text('晓晓', + Text('mobileElfName'.tr, style: TextStyle(fontSize: 11.sp, color: _textSecondary)), ]), SizedBox(height: 4.h), @@ -352,7 +353,7 @@ class MobileElfView extends GetView { fontSize: 10.sp, color: isDark ? Colors.grey[500] : const Color(0xFFD0D5DD))), if (!isUser) ...[ SizedBox(width: 8.w), - Text('generatedByAi'.tr.isNotEmpty ? 'generatedByAi'.tr : '由AI生成', + Text('generatedByAi'.tr, style: TextStyle( fontSize: 10.sp, color: Colors.blue[600], @@ -385,14 +386,14 @@ class MobileElfView extends GetView { PopupMenuItem( onTap: () { Clipboard.setData(ClipboardData(text: msg.text)); - Get.snackbar('success'.tr.isNotEmpty ? 'success'.tr : '成功', - 'copySuccess'.tr.isNotEmpty ? 'copySuccess'.tr : '已复制', + Get.snackbar('success'.tr, + 'copySuccess'.tr, backgroundColor: Colors.blue.withValues(alpha: 0.8), colorText: Colors.white); }, child: Row(children: [ Icon(Icons.copy, size: 18.sp, color: isDark ? Colors.white : Colors.black87), SizedBox(width: 8.w), - Text('copy'.tr.isNotEmpty ? 'copy'.tr : '复制', + Text('copy'.tr, style: TextStyle(fontSize: 14.sp, color: isDark ? Colors.white : Colors.black87)), ]), ), @@ -407,15 +408,14 @@ class MobileElfView extends GetView { final today = DateTime(now.year, now.month, now.day); final msgDate = DateTime(t.year, t.month, t.day); - if (diff.inMinutes < 1) return 'justNow'.tr.isNotEmpty ? 'justNow'.tr : '刚刚'; + if (diff.inMinutes < 1) return 'justNow'.tr; if (diff.inHours < 1) { final m = diff.inMinutes.toString(); - final text = 'minutesAgo'.trParams({'minutes': m}); - return text.isNotEmpty && text != 'minutesAgo' ? text : '$m分钟前'; + return 'minutesAgo'.trParams({'minutes': m}); } if (msgDate == today) return DateFormat('HH:mm').format(t); if (msgDate == today.subtract(const Duration(days: 1))) { - return '${('yesterday'.tr.isNotEmpty ? 'yesterday'.tr : '昨天')} ${DateFormat('HH:mm').format(t)}'; + return '${'yesterday'.tr} ${DateFormat('HH:mm').format(t)}'; } if (diff.inDays < 7) { return '${_weekdayName(t.weekday)} ${DateFormat('HH:mm').format(t)}'; @@ -425,7 +425,7 @@ class MobileElfView extends GetView { } String _weekdayName(int w) { - const names = ['', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']; + final names = ['', 'weekdayMon'.tr, 'weekdayTue'.tr, 'weekdayWed'.tr, 'weekdayThu'.tr, 'weekdayFri'.tr, 'weekdaySat'.tr, 'weekdaySun'.tr]; return names[w]; } @@ -512,14 +512,14 @@ class MobileElfView extends GetView { children: [ _MiniWave(color: _greenDark), SizedBox(width: 8.w), - Expanded(child: Text('晓晓正在朗读...', style: TextStyle(fontSize: 13.sp, color: _greenDark, fontWeight: FontWeight.w500))), + Expanded(child: Text('aiSpeaking'.tr, style: TextStyle(fontSize: 13.sp, color: _greenDark, fontWeight: FontWeight.w500))), Container( padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 4.h), decoration: BoxDecoration( border: Border.all(color: _red), borderRadius: BorderRadius.circular(16.r), ), - child: Text('× 打断', style: TextStyle(fontSize: 12.sp, color: _red, fontWeight: FontWeight.w500)), + child: Text('interrupt'.tr, style: TextStyle(fontSize: 12.sp, color: _red, fontWeight: FontWeight.w500)), ), ], ), @@ -536,7 +536,7 @@ class MobileElfView extends GetView { SizedBox(width: 8.w), Expanded(child: Obx(() { final rt = controller.realtimeText.value; - return Text(rt.isNotEmpty ? rt : '聆听中...', style: TextStyle(fontSize: 13.sp, color: _greenDark), maxLines: 1, overflow: TextOverflow.ellipsis); + return Text(rt.isNotEmpty ? rt : 'listeningHint'.tr, style: TextStyle(fontSize: 13.sp, color: _greenDark), maxLines: 1, overflow: TextOverflow.ellipsis); })), ], ), @@ -550,7 +550,7 @@ class MobileElfView extends GetView { children: [ SizedBox(width: 14.w, height: 14.w, child: CircularProgressIndicator(strokeWidth: 2, color: _orange)), SizedBox(width: 8.w), - Text('正在连接...', style: TextStyle(fontSize: 13.sp, color: const Color(0xFFB54708))), + Text('connectingHint'.tr, style: TextStyle(fontSize: 13.sp, color: const Color(0xFFB54708))), ], ), ); @@ -563,7 +563,7 @@ class MobileElfView extends GetView { children: [ SizedBox(width: 14.w, height: 14.w, child: CircularProgressIndicator(strokeWidth: 2, color: const Color(0xFF175CD3))), SizedBox(width: 8.w), - Text('AI 思考中...', style: TextStyle(fontSize: 13.sp, color: const Color(0xFF175CD3))), + Text('elfAiThinking'.tr, style: TextStyle(fontSize: 13.sp, color: const Color(0xFF175CD3))), ], ), ); @@ -593,7 +593,7 @@ class MobileElfView extends GetView { decoration: BoxDecoration(shape: BoxShape.circle, color: idle ? _green : _orange), ), SizedBox(width: 6.w), - Text('通话中', style: TextStyle(fontSize: 13.sp, color: isDark ? Colors.white70 : _textSecondary)), + Text('statusInCall'.tr, style: TextStyle(fontSize: 13.sp, color: isDark ? Colors.white70 : _textSecondary)), SizedBox(width: 4.w), Obx(() => Text(_fmtDuration(controller.callSeconds.value), style: TextStyle(fontSize: 13.sp, color: isDark ? Colors.white70 : _textSecondary))), @@ -726,7 +726,7 @@ class MobileElfView extends GetView { border: Border.all(color: isDark ? const Color(0xFF444444) : const Color(0xFFD0D5DD), width: 1), ), child: Center( - child: Text('按住 说话', + child: Text('holdToTalk'.tr, style: TextStyle( fontSize: 15.sp, color: isDark ? Colors.white70 : _textPrimary, @@ -761,7 +761,7 @@ class MobileElfView extends GetView { SizedBox(width: 14.w, height: 14.w, child: CircularProgressIndicator(strokeWidth: 2, color: isDark ? Colors.white70 : _textSecondary)), SizedBox(width: 8.w), - Text('连接中...', style: TextStyle(fontSize: 14.sp, color: isDark ? Colors.white70 : _textSecondary, fontWeight: FontWeight.w500)), + Text('connectingHint'.tr, style: TextStyle(fontSize: 14.sp, color: isDark ? Colors.white70 : _textSecondary, fontWeight: FontWeight.w500)), ], ), ); @@ -783,7 +783,7 @@ class MobileElfView extends GetView { children: [ Obx(() => _RmsBars(rms: controller.micRms.value, color: Colors.white)), SizedBox(width: 8.w), - Obx(() => Text('松开发送 · ${controller.pttSeconds.value}s', + Obx(() => Text('${'releaseToSend'.tr} · ${controller.pttSeconds.value}s', style: TextStyle(fontSize: 14.sp, color: Colors.white, fontWeight: FontWeight.w500))), ], ), diff --git a/lib/modules/settings/controllers/settings_controller.dart b/lib/modules/settings/controllers/settings_controller.dart index cccd2cc82..9766a8956 100644 --- a/lib/modules/settings/controllers/settings_controller.dart +++ b/lib/modules/settings/controllers/settings_controller.dart @@ -51,6 +51,7 @@ class SettingsController extends GetxController { final RxBool isVoiceWakeupEnabled = true.obs; final RxBool isBleConnected = false.obs; final RxBool isVoiceWakeupSupported = false.obs; + final RxBool isWakeupEnableByProduct = false.obs; // 产品配置是否支持唤醒开关 @override void onInit() { @@ -81,6 +82,11 @@ class SettingsController extends GetxController { isVoiceWakeupSupported.value = _bleManager.voiceWakeupSupported; isVoiceWakeupEnabled.value = _bleManager.voiceWakeupEnabled; + // 如果当前已连接,检查产品配置 + if (_bleManager.isConnected) { + _checkProductWakeupEnable(); + } + // 监听BLE连接状态变化 // 注意:ever 回调同步触发,此时 _isConnected 可能尚未更新, // 因此直接用 state 参数判断连接状态 @@ -88,12 +94,16 @@ class SettingsController extends GetxController { final connected = state == BleConnectionState.connected; isBleConnected.value = connected; if (connected) { + // 连接后检查产品配置 + _checkProductWakeupEnable(); // 连接后延迟查询唤醒状态 Future.delayed(const Duration(milliseconds: 500), () { if (_bleManager.isConnected) { _queryVoiceWakeupStatus(); } }); + } else { + isWakeupEnableByProduct.value = false; } }); @@ -122,6 +132,22 @@ class SettingsController extends GetxController { } } + /// 检查当前连接设备的产品配置是否支持唤醒开关 + void _checkProductWakeupEnable() { + try { + final deviceName = _bleManager.getDeviceName(); + if (deviceName.isEmpty || !AppConfig.isInitialized()) { + isWakeupEnableByProduct.value = false; + return; + } + final product = AppConfig.getproduct(deviceName); + isWakeupEnableByProduct.value = product?.wakeupenable ?? false; + } catch (e) { + Logger().e('检查产品唤醒配置失败: $e'); + isWakeupEnableByProduct.value = false; + } + } + /// 切换语音唤醒状态 Future toggleVoiceWakeup(bool enabled) async { try { diff --git a/lib/modules/settings/views/settings_view.dart b/lib/modules/settings/views/settings_view.dart index b42ff5012..e2a3cc56a 100644 --- a/lib/modules/settings/views/settings_view.dart +++ b/lib/modules/settings/views/settings_view.dart @@ -437,38 +437,47 @@ class SettingsView extends GetView { ? const Color(0xFF2C2C2C) : Colors.grey[200]), - // 语音唤醒开关 + // 语音唤醒开关 - 仅在连接设备且产品配置支持时显示 Obx( () { final connected = controller.isBleConnected.value; + final wakeupEnable = + controller.isWakeupEnableByProduct.value; + // 未连接设备或产品不支持唤醒开关时隐藏 + if (!connected || !wakeupEnable) { + return const SizedBox.shrink(); + } final supported = controller.isVoiceWakeupSupported.value; - final canToggle = connected && supported; - return _buildToggleSetting( - title: '语音唤醒', - subtitle: !connected - ? '请先连接耳机' - : !supported - ? '当前设备不支持此功能' - : '控制耳机语音唤醒功能的开关', - icon: Icons.mic, - iconBgColor: isDarkMode - ? Colors.teal[900]!.withValues(alpha: 0.3) - : Colors.teal[100]!, - iconColor: - isDarkMode ? Colors.teal[300]! : Colors.teal[600]!, - value: controller.isVoiceWakeupEnabled.value, - onChanged: canToggle - ? (enabled) => controller.toggleVoiceWakeup(enabled) - : null, - isDarkMode: isDarkMode, + return Column( + children: [ + _buildToggleSetting( + title: 'voiceWakeup'.tr, + subtitle: !supported + ? 'deviceNotSupportFeature'.tr + : 'voiceWakeupDesc'.tr, + icon: Icons.mic, + iconBgColor: isDarkMode + ? Colors.teal[900]!.withValues(alpha: 0.3) + : Colors.teal[100]!, + iconColor: isDarkMode + ? Colors.teal[300]! + : Colors.teal[600]!, + value: controller.isVoiceWakeupEnabled.value, + onChanged: supported + ? (enabled) => + controller.toggleVoiceWakeup(enabled) + : null, + isDarkMode: isDarkMode, + ), + Divider( + height: 1, + color: isDarkMode + ? const Color(0xFF2C2C2C) + : Colors.grey[200]), + ], ); }, ), - Divider( - height: 1, - color: isDarkMode - ? const Color(0xFF2C2C2C) - : Colors.grey[200]), // 用户反馈 _buildSimpleNavigationSetting( diff --git a/lib/modules/translation/controllers/translation_controller.dart b/lib/modules/translation/controllers/translation_controller.dart index 29f267ecf..4ae405b7c 100644 --- a/lib/modules/translation/controllers/translation_controller.dart +++ b/lib/modules/translation/controllers/translation_controller.dart @@ -149,6 +149,9 @@ class TranslationController extends GetxController with WidgetsBindingObserver { StreamSubscription? _voiceInteractionSubscription; Timer? _translationDebounceTimer; + // ==================== 重新初始化守卫 ==================== + bool _isReinitializing = false; // 语言切换重新初始化期间为 true,抑制旧会话的错误事件 + // 播放防重复机制 String? _lastPlayedItemKey; // 最后播放的项目标识 int _lastPlayTime = 0; // 最后播放时间 @@ -1407,12 +1410,22 @@ class TranslationController extends GetxController with WidgetsBindingObserver { case ASTEventType.error: Logger.error('AST 错误: ${event.error}'); - isRecognizing.value = false; + // 重新初始化期间的错误来自旧会话,忽略 + if (_isReinitializing) { + Logger.info('[STS] 正在重新初始化,忽略旧会话错误'); + break; + } + // 非重新初始化期间的错误:终止通话服务并还原状态 + _terminateCallOnError('AST 错误: ${event.error}'); break; case ASTEventType.canceled: Logger.error('AST 取消: ${event.error}'); - isRecognizing.value = false; + if (_isReinitializing) { + Logger.info('[STS] 正在重新初始化,忽略旧会话取消'); + break; + } + _terminateCallOnError('AST 取消: ${event.error}'); break; default: @@ -1824,6 +1837,28 @@ class TranslationController extends GetxController with WidgetsBindingObserver { } } + /// 通话模式发生错误时终止服务并还原状态 + Future _terminateCallOnError(String reason) async { + Logger.error('[STS] 通话错误,终止服务: $reason'); + try { + _astEventSubscription?.cancel(); + _astEventSubscription = null; + try { + await _astService.stopContinuousTranslation(); + } catch (_) {} + isRecognizing.value = false; + isPreparing.value = false; + _stopAsrActiveTracking(); + _translationDebounceTimer?.cancel(); + await _ttsService.stop(); + if (currentMode.value == "call" || currentMode.value == "audioVideo") { + bleManager.closeCodec(); + } + } catch (e) { + Logger.error('[STS] 终止通话服务失败: $e'); + } + } + /// 播放特定翻译项 /// [item] 翻译项 Future playTranslationItem(TranslationItem item) async { @@ -1944,8 +1979,9 @@ class TranslationController extends GetxController with WidgetsBindingObserver { double get bottomBarHeight => _bottomBarHeight; /// 切换源语言和目标语言 - void swapLanguages() { - stopAll(); + Future swapLanguages() async { + final wasRecognizing = isRecognizing.value; + await stopAll(); final tempName = sourceLanguage.value; sourceLanguage.value = targetLanguage.value; @@ -1957,14 +1993,15 @@ class TranslationController extends GetxController with WidgetsBindingObserver { _saveSourceLanguageSetting(isUserSet: true); _saveTargetLanguageSetting(); - _reinitializeAsrService(); + await _reinitializeAsrService(restartRecognition: wasRecognizing); } /// 设置源语言 /// [language] 语言名称 - void setSourceLanguage(String language) { + Future setSourceLanguage(String language) async { if (sourceLanguage.value != language) { - stopAll(); + final wasRecognizing = isRecognizing.value; + await stopAll(); sourceLanguage.value = language; @@ -1974,15 +2011,16 @@ class TranslationController extends GetxController with WidgetsBindingObserver { } _saveSourceLanguageSetting(isUserSet: true); - _reinitializeAsrService(); + await _reinitializeAsrService(restartRecognition: wasRecognizing); } } /// 设置目标语言 /// [language] 语言名称 - void setTargetLanguage(String language) { + Future setTargetLanguage(String language) async { if (targetLanguage.value != language) { - stopAll(); + final wasRecognizing = isRecognizing.value; + await stopAll(); targetLanguage.value = language; @@ -1992,15 +2030,32 @@ class TranslationController extends GetxController with WidgetsBindingObserver { } _saveTargetLanguageSetting(); - _reinitializeAsrService(); + await _reinitializeAsrService(restartRecognition: wasRecognizing); } } /// 重新初始化ASR服务 - Future _reinitializeAsrService() async { + /// [restartRecognition] 初始化完成后是否自动重新开始识别 + Future _reinitializeAsrService({bool restartRecognition = false}) async { + _isReinitializing = true; try { + // 通话模式:无论 isRecognizing 状态如何,都强制停止 AST 服务 + // 防止旧会话未完全关闭就创建新会话(Socket 1011 / Session 1012) + if (currentMode.value == "call") { + _astEventSubscription?.cancel(); + _astEventSubscription = null; + try { + await _astService.stopContinuousTranslation(); + } catch (e) { + Logger.info('[STS] 停止旧AST服务(忽略): $e'); + } + } + //1.统一先停止旧识别 - await stopRecognition(); + if (isRecognizing.value) { + await stopRecognition(); + } + isRecognizing.value = false; late final List asrSupportedLanguages; @@ -2026,8 +2081,16 @@ class TranslationController extends GetxController with WidgetsBindingObserver { recognitionStream.listen(_handleRecognitionEvent); } Logger.info('ASR服务重新初始化成功'); + + // 切换语言前正在识别,自动恢复识别状态 + if (restartRecognition) { + Logger.info('[STS] 语言切换完成,自动恢复识别'); + await startRecognition(); + } } catch (e) { Logger.error('重新初始化ASR服务失败: ${e.toString()}'); + } finally { + _isReinitializing = false; } }