Browse Source

优化多语言

weicu
liwei1dao 6 months ago
parent
commit
a300171290
  1. 38
      lib/core/translations/language/ar_sa.dart
  2. 38
      lib/core/translations/language/bg_bg.dart
  3. 38
      lib/core/translations/language/cs_cz.dart
  4. 38
      lib/core/translations/language/da_dk.dart
  5. 38
      lib/core/translations/language/de_de.dart
  6. 38
      lib/core/translations/language/el_gr.dart
  7. 38
      lib/core/translations/language/en_us.dart
  8. 38
      lib/core/translations/language/es_es.dart
  9. 38
      lib/core/translations/language/et_ee.dart
  10. 38
      lib/core/translations/language/fa_ir.dart
  11. 38
      lib/core/translations/language/fi_fi.dart
  12. 38
      lib/core/translations/language/fr_fr.dart
  13. 38
      lib/core/translations/language/hi_in.dart
  14. 38
      lib/core/translations/language/hr_hr.dart
  15. 38
      lib/core/translations/language/hu_hu.dart
  16. 38
      lib/core/translations/language/id_id.dart
  17. 38
      lib/core/translations/language/is_is.dart
  18. 38
      lib/core/translations/language/it_it.dart
  19. 38
      lib/core/translations/language/ja_jp.dart
  20. 38
      lib/core/translations/language/ko_kr.dart
  21. 38
      lib/core/translations/language/lt_lt.dart
  22. 38
      lib/core/translations/language/lv_lv.dart
  23. 38
      lib/core/translations/language/ms_my.dart
  24. 38
      lib/core/translations/language/nb_no.dart
  25. 38
      lib/core/translations/language/nl_nl.dart
  26. 38
      lib/core/translations/language/pl_pl.dart
  27. 38
      lib/core/translations/language/pt_pt.dart
  28. 38
      lib/core/translations/language/ro_ro.dart
  29. 38
      lib/core/translations/language/ru_ru.dart
  30. 38
      lib/core/translations/language/sk_sk.dart
  31. 38
      lib/core/translations/language/sl_si.dart
  32. 38
      lib/core/translations/language/sr_rs.dart
  33. 38
      lib/core/translations/language/sv_se.dart
  34. 38
      lib/core/translations/language/th_th.dart
  35. 38
      lib/core/translations/language/tl_ph.dart
  36. 41
      lib/core/translations/language/tr_tr.dart
  37. 38
      lib/core/translations/language/uk_ua.dart
  38. 38
      lib/core/translations/language/vi_vn.dart
  39. 38
      lib/core/translations/language/zh_cn.dart
  40. 38
      lib/core/translations/language/zh_hk.dart
  41. 38
      lib/core/translations/language/zh_tw.dart
  42. 2
      lib/data/models/appconfig_model.dart
  43. 12
      lib/data/models/appconfig_model.g.dart
  44. 6
      lib/data/models/channel_app_model.g.dart
  45. 17
      lib/modules/mobile_elf/controllers/mobile_elf_controller.dart
  46. 82
      lib/modules/mobile_elf/views/mobile_elf_view.dart
  47. 26
      lib/modules/settings/controllers/settings_controller.dart
  48. 59
      lib/modules/settings/views/settings_view.dart
  49. 89
      lib/modules/translation/controllers/translation_controller.dart

38
lib/core/translations/language/ar_sa.dart

@ -758,6 +758,9 @@ const Map<String, String> arSA = {
"languageSetting": "إعدادات اللغة",
"darkMode": "الوضع الداكن",
"darkModeInfo": "تبديل سمة التطبيق الفاتحة/الداكنة",
"voiceWakeup": "الاستيقاظ الصوتي",
"voiceWakeupDesc": "التحكم في وظيفة الاستيقاظ الصوتي لسماعة الرأس",
"deviceNotSupportFeature": "هذه الميزة غير مدعومة من الجهاز الحالي",
"backups": "النسخ الاحتياطي والاستعادة",
"backupsInfo": "إعدادات النسخ الاحتياطي وسجل تفاعل AI",
"lastBackup": "آخر نسخ احتياطي:",
@ -1666,4 +1669,39 @@ const Map<String, String> 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": "الأحد",
};

38
lib/core/translations/language/bg_bg.dart

@ -778,6 +778,9 @@ const Map<String, String> bgBG = {
"languageSetting": "Езикови настройки",
"darkMode": "Тъмен режим",
"darkModeInfo": "Превключване между светла/тъмна тема",
"voiceWakeup": "Гласово събуждане",
"voiceWakeupDesc": "Контрол на функцията за гласов�� събуждане на слушалките",
"deviceNotSupportFeature": "Тази функция не се поддържа от текущото устройство",
"backups": "Резервно копие и възстановяване",
"backupsInfo": "Резервно копие на настройки и AI история",
"lastBackup": "Последно резервно копие:",
@ -1725,4 +1728,39 @@ const Map<String, String> 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",
};

38
lib/core/translations/language/cs_cz.dart

@ -768,6 +768,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/da_dk.dart

@ -770,6 +770,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/de_de.dart

@ -786,6 +786,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/el_gr.dart

@ -788,6 +788,9 @@ const Map<String, String> elGR = {
"languageSetting": "Ρυθμίσεις γλώσσας",
"darkMode": "Σκοτεινή λειτουργία",
"darkModeInfo": "Εναλλαγή μεταξύ φωτεινού/σκοτεινού θέματος",
"voiceWakeup": "Φωνητική αφύπνιση",
"voiceWakeupDesc": "Έλεγχος της λειτουργίας φωνητικής αφύπνισης των ακουστικών",
"deviceNotSupportFeature": "Αυτή η λειτουργία δεν υποστηρίζεται από την τρέχουσα συσκευή",
"backups": "Αντίγραφα ασφαλείας και επαναφορά",
"backupsInfo": "Αντίγραφα ασφαλείας ρυθμίσεων και ιστορικού AI",
"lastBackup": "Τελευταίο αντίγραφο ασφαλείας:",
@ -1728,4 +1731,39 @@ const Map<String, String> 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",
};

38
lib/core/translations/language/en_us.dart

@ -771,6 +771,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/es_es.dart

@ -784,6 +784,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/et_ee.dart

@ -774,6 +774,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/fa_ir.dart

@ -762,6 +762,9 @@ const Map<String, String> faIR = {
"languageSetting": "تنظیمات زبان",
"darkMode": "حالت تاریک",
"darkModeInfo": "تغییر بین پوسته‌های روشن/تاریک",
"voiceWakeup": "بیداری صوتی",
"voiceWakeupDesc": "کنترل عملکرد بیداری صوتی هدست",
"deviceNotSupportFeature": "این ویژگی توسط دستگاه فعلی پشتیبانی نمی‌شود",
"backups": "پشتیبان‌گیری و بازیابی",
"backupsInfo": "پشتیبان‌گیری از تنظیمات و تاریخچه هوش مصنوعی",
"lastBackup": "آخرین پشتیبان‌گیری:",
@ -1681,4 +1684,39 @@ const Map<String, String> 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",
};

38
lib/core/translations/language/fi_fi.dart

@ -769,6 +769,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/fr_fr.dart

@ -791,6 +791,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/hi_in.dart

@ -769,6 +769,9 @@ const Map<String, String> hiIN = {
"languageSetting": "भाषा सेटिंग",
"darkMode": "डार्क मोड",
"darkModeInfo": "ऐप की हल्की और गहरी थीम के बीच स्विच करें",
"voiceWakeup": "वॉइस वेकअप",
"voiceWakeupDesc": "हेडसेट की वॉइस वेकअप सुविधा को नियंत्रित करें",
"deviceNotSupportFeature": "यह सुविधा वर्तमान डिवाइस द्वारा समर्थित नहीं है",
"backups": "बैकअप और पुनर्स्थापना",
"backupsInfo": "सेटिंग्स और एआई इंटरैक्शन इतिहास का बैकअप लें",
"lastBackup": "अंतिम बैकअप:",
@ -1702,4 +1705,39 @@ const Map<String, String> 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": "रविवार",
};

38
lib/core/translations/language/hr_hr.dart

@ -780,6 +780,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/hu_hu.dart

@ -782,6 +782,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/id_id.dart

@ -768,6 +768,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/is_is.dart

@ -772,6 +772,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/it_it.dart

@ -782,6 +782,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/ja_jp.dart

@ -719,6 +719,9 @@ const Map<String, String> jaJP = {
"languageSetting": "言語設定",
"darkMode": "ダークモード",
"darkModeInfo": "ライト/ダークテーマの切り替え",
"voiceWakeup": "音声ウェイクアップ",
"voiceWakeupDesc": "ヘッドセットの音声ウェイクアップ機能を制御",
"deviceNotSupportFeature": "この機能は現在のデバイスではサポートされていません",
"backups": "バックアップと復元",
"backupsInfo": "設定とAI履歴をバックアップ",
"lastBackup": "最後のバックアップ:",
@ -1556,4 +1559,39 @@ const Map<String, String> 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": "日曜日",
};

38
lib/core/translations/language/ko_kr.dart

@ -717,6 +717,9 @@ const Map<String, String> koKR = {
"languageSetting": "언어 설정",
"darkMode": "다크 모드",
"darkModeInfo": "앱의 밝고 어두운 테마 전환",
"voiceWakeup": "음성 깨우기",
"voiceWakeupDesc": "헤드셋의 음성 깨우기 기능 제어",
"deviceNotSupportFeature": "현재 기기에서 이 기능을 지원하지 않습니다",
"backups": "백업 및 복원",
"backupsInfo": "설정 및 AI 상호작용 기록 백업",
"lastBackup": "마지막 백업:",
@ -1547,4 +1550,39 @@ const Map<String, String> 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": "일요일",
};

38
lib/core/translations/language/lt_lt.dart

@ -776,6 +776,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/lv_lv.dart

@ -780,6 +780,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/ms_my.dart

@ -769,6 +769,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/nb_no.dart

@ -774,6 +774,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/nl_nl.dart

@ -655,6 +655,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/pl_pl.dart

@ -781,6 +781,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/pt_pt.dart

@ -789,6 +789,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/ro_ro.dart

@ -777,6 +777,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/ru_ru.dart

@ -778,6 +778,9 @@ const Map<String, String> ruRU = {
"languageSetting": "Настройки языка",
"darkMode": "Темный режим",
"darkModeInfo": "Переключение между светлой и темной темами приложения",
"voiceWakeup": "Голосовое пробуждение",
"voiceWakeupDesc": "Управление функцией голосового пробуждения гарнитуры",
"deviceNotSupportFeature": "Эта функция не поддерживается текущим устройством",
"backups": "Резервное копирование и восстановление",
"backupsInfo": "Резервное копирование настроек и истории взаимодействия с AI",
"lastBackup": "Последнее резервное копирование:",
@ -1714,4 +1717,39 @@ const Map<String, String> 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": "Воскресенье",
};

38
lib/core/translations/language/sk_sk.dart

@ -771,6 +771,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/sl_si.dart

@ -777,6 +777,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/sr_rs.dart

@ -774,6 +774,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/sv_se.dart

@ -776,6 +776,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/th_th.dart

@ -752,6 +752,9 @@ const Map<String, String> thTH = {
"languageSetting": "การตั้งค่าภาษา",
"darkMode": "โหมดมืด",
"darkModeInfo": "สลับธีมสว่างและมืดของแอปพลิเคชัน",
"voiceWakeup": "ปลุกด้วยเสียง",
"voiceWakeupDesc": "ควบคุมฟังก์ชันปลุกด้วยเสียงของหูฟัง",
"deviceNotSupportFeature": "คุณสมบัตินี้ไม่รองรับอุปกรณ์ปัจจุบัน",
"backups": "สำรองและกู้คืน",
"backupsInfo": "สำรองการตั้งค่าและประวัติการโต้ตอบกับ AI",
"lastBackup": "การสำรองข้อมูลล่าสุด:",
@ -1661,4 +1664,39 @@ const Map<String, String> 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": "วันอาทิตย์",
};

38
lib/core/translations/language/tl_ph.dart

@ -791,6 +791,9 @@ const Map<String, String> 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<String, String> 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",
};

41
lib/core/translations/language/tr_tr.dart

@ -771,8 +771,10 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/uk_ua.dart

@ -779,6 +779,9 @@ const Map<String, String> ukUA = {
"languageSetting": "Налаштування мови",
"darkMode": "Темний режим",
"darkModeInfo": "Перемикання між світлою та темною темами програми",
"voiceWakeup": "Голосове пробудження",
"voiceWakeupDesc": "Керування функцією голосового пробудження гарнітури",
"deviceNotSupportFeature": "Ця функція не підтримується поточним пристроєм",
"backups": "Резервне копіювання та відновлення",
"backupsInfo": "Резервне копіювання налаштувань та історії взаємодії з AI",
"lastBackup": "Останнє резервне копіювання:",
@ -1714,4 +1717,39 @@ const Map<String, String> 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",
};

38
lib/core/translations/language/vi_vn.dart

@ -765,6 +765,9 @@ const Map<String, String> 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<String, String> 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",
};

38
lib/core/translations/language/zh_cn.dart

@ -711,6 +711,9 @@ const Map<String, String> zhCN = {
"languageSetting": "语言设置",
"darkMode": "暗黑模式",
"darkModeInfo": "切换应用的明暗主题",
"voiceWakeup": "语音唤醒",
"voiceWakeupDesc": "控制耳机语音唤醒功能的开关",
"deviceNotSupportFeature": "当前设备不支持此功能",
"backups": "备份与恢复",
"backupsInfo": "备份设置和AI互动历史",
"lastBackup": "上次备份:",
@ -1530,4 +1533,39 @@ const Map<String, String> 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": "星期日",
};

38
lib/core/translations/language/zh_hk.dart

@ -713,6 +713,9 @@ const Map<String, String> zhHK = {
"languageSetting": "語言設定",
"darkMode": "深色模式",
"darkModeInfo": "切換應用的明暗主題",
"voiceWakeup": "語音喚醒",
"voiceWakeupDesc": "控制耳機語音喚醒功能的開關",
"deviceNotSupportFeature": "當前設備不支持此功能",
"backups": "備份與還原",
"backupsInfo": "備份設定和AI互動歷史",
"lastBackup": "上次備份:",
@ -1529,4 +1532,39 @@ const Map<String, String> 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": "星期日",
};

38
lib/core/translations/language/zh_tw.dart

@ -713,6 +713,9 @@ const Map<String, String> zhTW = {
"languageSetting": "語言設定",
"darkMode": "深色模式",
"darkModeInfo": "切換應用的明暗主題",
"voiceWakeup": "語音喚醒",
"voiceWakeupDesc": "控制耳機語音喚醒功能的開關",
"deviceNotSupportFeature": "目前裝置不支援此功能",
"backups": "備份與還原",
"backupsInfo": "備份設定和AI互動歷史",
"lastBackup": "上次備份:",
@ -1529,4 +1532,39 @@ const Map<String, String> 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": "星期日",
};

2
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,
});

12
lib/data/models/appconfig_model.g.dart

@ -61,8 +61,8 @@ Map<String, dynamic> _$DBAgentToJson(DBAgent instance) => <String, dynamic>{
DBMCPServer _$DBMCPServerFromJson(Map<String, dynamic> 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<String, dynamic> _$DBMCPServerToJson(DBMCPServer instance) =>
@ -74,15 +74,16 @@ Map<String, dynamic> _$DBMCPServerToJson(DBMCPServer instance) =>
};
DBProduct _$DBProductFromJson(Map<String, dynamic> 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<String, dynamic> _$DBProductToJson(DBProduct instance) => <String, dynamic>{
'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,
};

6
lib/data/models/channel_app_model.g.dart

@ -39,7 +39,7 @@ AppInfo _$AppInfoFromJson(Map<String, dynamic> 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<String, dynamic> _$AppInfoToJson(AppInfo instance) => <String, dynamic>{
@ -48,6 +48,6 @@ Map<String, dynamic> _$AppInfoToJson(AppInfo instance) => <String, dynamic>{
'description': instance.description,
'version': instance.version,
'tourists': instance.tourists,
'allowskipsevicebinding': instance.allowskipdevicebinding,
'paychannels': instance.paychannels,
'allowskipdevicebinding': instance.allowskipdevicebinding,
'Paychannels': instance.paychannels,
};

17
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) {

82
lib/modules/mobile_elf/views/mobile_elf_view.dart

@ -21,8 +21,9 @@ class MobileElfView extends GetView<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
: (isDark ? Colors.grey[500] : _textSecondary),
),
onPressed: () => controller.ttsEnabled.toggle(),
tooltip: controller.ttsEnabled.value ? '关闭播报' : '开启播报',
tooltip: controller.ttsEnabled.value ? 'closeBroadcast'.tr : 'openBroadcast'.tr,
)),
PopupMenuButton<String>(
icon: Icon(Icons.more_vert,
@ -110,16 +111,16 @@ class MobileElfView extends GetView<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
_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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
// 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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
}
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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<MobileElfController> {
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))),
],
),

26
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<void> toggleVoiceWakeup(bool enabled) async {
try {

59
lib/modules/settings/views/settings_view.dart

@ -437,38 +437,47 @@ class SettingsView extends GetView<SettingsController> {
? 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(

89
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<void> _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<void> playTranslationItem(TranslationItem item) async {
@ -1944,8 +1979,9 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
double get bottomBarHeight => _bottomBarHeight;
/// 切换源语言和目标语言
void swapLanguages() {
stopAll();
Future<void> 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<void> 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<void> 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<void> _reinitializeAsrService() async {
/// [restartRecognition] 初始化完成后是否自动重新开始识别
Future<void> _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<String> 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;
}
}

Loading…
Cancel
Save