Browse Source

添加商务会议助手页的多语言支持

同时修复了部分UI组件的国际化问题,确保在不同语言环境下显示一致。
newdev_shunjiawei
lxm 2 years ago
parent
commit
ee7cb7d7b4
  1. 16
      lib/core/translations/language/de_de.dart
  2. 16
      lib/core/translations/language/en_us.dart
  3. 16
      lib/core/translations/language/es_es.dart
  4. 16
      lib/core/translations/language/fr_fr.dart
  5. 760
      lib/core/translations/language/it_it.dart
  6. 17
      lib/core/translations/language/ja_jp.dart
  7. 16
      lib/core/translations/language/ko_kr.dart
  8. 16
      lib/core/translations/language/pt_pt.dart
  9. 16
      lib/core/translations/language/ru_ru.dart
  10. 18
      lib/core/translations/language/vi_vn.dart
  11. 16
      lib/core/translations/language/zh_cn.dart
  12. 16
      lib/core/translations/language/zh_hk.dart
  13. 19
      lib/modules/chat/views/chat_view.dart
  14. 4
      lib/modules/meeting/views/meeting_details_view.dart
  15. 4
      lib/modules/meeting/views/meeting_edit_view.dart
  16. 18
      lib/modules/meeting/views/meeting_view.dart
  17. 11
      lib/modules/settings/views/settings_view.dart
  18. 12
      lib/modules/timbre/views/timbre_view.dart
  19. 170
      lib/modules/translation/views/translation_view.dart

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

@ -131,7 +131,19 @@ const Map<String, String> deDE = {
"aiSingerInfo": "Singen Sie jeden Song mit der Stimme Ihres Lieblingskünstlers, auch eigene Kreationen",
"popularFunction": "Beliebte Funktionen",
"tryNow": "Jetzt ausprobieren",
//商务会议助手页
"startMeeting": "Besprechung starten",
'edit': 'Bearbeiten',
'delete': 'Löschen',
'noContent': 'Kein Inhalt',
'editMeetingTitle': 'Besprechungstitel bearbeiten (Optional)',
'meetingTitle': 'Besprechungstitel (Optional)',
'maxCharacters': 'Maximal 50 Zeichen',
'meeting': 'Besprechung',
'recordingDetails': 'Aufnahmedetails',
'aiSummary': 'KI-Zusammenfassung',
'meetingTranscript': 'Besprechungsprotokoll',
// 设置页
"premiumMember": "Premium-Mitgliedschaft",
@ -165,7 +177,11 @@ const Map<String, String> deDE = {
'microsoftCloudTimbreService': 'Microsoft Cloud-Klangfarben-Dienst',
'voiceClone': 'Stimmklon',
'AIsettings': 'KI-Einstellungen',
'selecttimbre': 'Klangfarbe Wählen',
'pleaseRead': 'Bitte lesen',
'completeRecording': 'Aufnahme abschließen',
// 聊天页
"clearChatHistory": "Chat-Verlauf löschen",
"online": "Online",

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

@ -134,7 +134,19 @@ const Map<String, String> enUS = {
"Sing any song in your favorite artist's voice, even your own creations",
"popularFunction": "Popular Features",
"tryNow": "Try Now",
// 商务会议助手页
"startMeeting": "Start Meeting",
'edit': 'Edit',
'delete': 'Delete',
'noContent': 'No Content',
'editMeetingTitle': 'Edit Meeting Title (Optional)',
'meetingTitle': 'Meeting Title (Optional)',
'maxCharacters': 'Maximum 50 characters',
'meeting': 'Meeting',
'recordingDetails': 'Recording Details',
'aiSummary': 'AI Summary',
'meetingTranscript': 'Meeting Transcript',
// 设置页
"premiumMember": "Premium Membership",
@ -170,7 +182,11 @@ const Map<String, String> enUS = {
'microsoftCloudTimbreService': 'Microsoft Cloud Timbre Service',
'voiceClone': 'Voice Clone',
'AIsettings': 'AI Settings',
'selecttimbre': 'Select Timbre',
'pleaseRead': 'Please Read',
'completeRecording': 'Complete Recording',
// 聊天页
"clearChatHistory": "Clear Chat History",
"online": "Online",

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

@ -131,7 +131,19 @@ const Map<String, String> esES = {
"aiSingerInfo": "Canta cualquier canción con la voz de tu artista favorito, incluso tus propias creaciones",
"popularFunction": "Funciones Populares",
"tryNow": "Probar Ahora",
//商务会议助手页
"startMeeting": "Iniciar Reunión",
'edit': 'Editar',
'delete': 'Eliminar',
'noContent': 'Sin contenido',
'editMeetingTitle': 'Editar título de reunión (Opcional)',
'meetingTitle': 'Título de reunión (Opcional)',
'maxCharacters': 'Máximo 50 caracteres',
'meeting': 'Reunión',
'recordingDetails': 'Detalles de la grabación',
'aiSummary': 'Resumen de IA',
'meetingTranscript': 'Transcripción de la reunión',
// 设置页
"premiumMember": "Membresía Premium",
@ -165,7 +177,11 @@ const Map<String, String> esES = {
'microsoftCloudTimbreService': 'Servicio de Timbre en la Nube de Microsoft',
'voiceClone': 'Clonación de Voz',
'AIsettings': 'Configuración de IA',
'selecttimbre': 'Seleccionar Timbre',
'pleaseRead': 'Por favor lea',
'completeRecording': 'Completar grabación',
// 聊天页
"clearChatHistory": "Borrar Historial de Chat",
"online": "En línea",

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

@ -131,7 +131,19 @@ const Map<String, String> frFR = {
"aiSingerInfo": "Chantez n'importe quelle chanson avec la voix de votre artiste préféré, même vos propres créations",
"popularFunction": "Fonctionnalités populaires",
"tryNow": "Essayer maintenant",
//商务会议助手页
"startMeeting": "Démarrer la réunion",
'edit': 'Modifier',
'delete': 'Supprimer',
'noContent': 'Pas de contenu',
'editMeetingTitle': 'Modifier le titre de la réunion (Optionnel)',
'meetingTitle': 'Titre de la réunion (Optionnel)',
'maxCharacters': 'Maximum 50 caractères',
'meeting': 'Réunion',
'recordingDetails': 'Détails de l\'enregistrement',
'aiSummary': 'Résumé IA',
'meetingTranscript': 'Transcription de la réunion',
// 设置页
"premiumMember": "Abonnement Premium",
@ -165,7 +177,11 @@ const Map<String, String> frFR = {
'microsoftCloudTimbreService': 'Service de timbre cloud Microsoft',
'voiceClone': 'Clone vocal',
'AIsettings': 'Paramètres IA',
'selecttimbre': 'Sélectionner le Timbre',
'pleaseRead': 'Veuillez lire',
'completeRecording': 'Terminer l\'enregistrement',
// 聊天页
"clearChatHistory": "Effacer l'historique de chat",
"online": "En ligne",

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

@ -1,366 +1,398 @@
const Map<String, String> itIT = {
// 通用
'continue': 'Continua',
'confirm': 'Conferma',
'cancel': 'Annulla',
'retry': 'Riprova',
'error': 'Errore',
'success': 'Successo',
'connected': 'Connesso',
'connecting': 'Connessione in corso...',
'connectionFailure': 'Connessione fallita',
'unconnected': 'Non connesso',
'search': 'Cerca',
"requestCancellation": "Richiesta annullata",
"connectionTimeout": "Timeout di connessione",
"requestTimeout": "Timeout della richiesta",
"responseTimeout": "Timeout della risposta",
"unknownError": "Errore sconosciuto",
// 通用
'continue': 'Continua',
'confirm': 'Conferma',
'cancel': 'Annulla',
'retry': 'Riprova',
'error': 'Errore',
'success': 'Successo',
'connected': 'Connesso',
'connecting': 'Connessione in corso...',
'connectionFailure': 'Connessione fallita',
'unconnected': 'Non connesso',
'search': 'Cerca',
"requestCancellation": "Richiesta annullata",
"connectionTimeout": "Timeout di connessione",
"requestTimeout": "Timeout della richiesta",
"responseTimeout": "Timeout della risposta",
"unknownError": "Errore sconosciuto",
// 启动页
"slogan": "Connetti il mondo, oltre la voce",
"sloganInfo": "Esperto vocale AI · Sempre e ovunque",
// 底部导航
"home": "Home",
"explore": "Esplora",
"settings": "Impostazioni",
// 语言
"followingSystem": "Segui sistema",
"chinese": "Cinese",
"english": "Inglese",
"spanish": "Spagnolo",
"portuguese": "Portoghese",
"traditionalChinese": "Cinese tradizionale",
"japanese": "Giapponese",
"korean": "Coreano",
"french": "Francese",
"german": "Tedesco",
"russian": "Russo",
"vietnamese": "Vietnamita",
"italian": "Italiano",
// 登录页
"welcome": "Benvenuto",
"loginTips": "Accedi o registrati con il tuo numero di telefono o email",
"accountNumber": "Numero di telefono o email",
"verificationCode": "Codice di verifica",
"getCode": "Ottieni codice",
"reacquireAfter": "s Riprova dopo",
"otherWays": "O accedi con",
"expressConsent": "Accedendo/registrandoti, accetti",
"and": " e ",
"userAgreement": "Termini di utilizzo",
"privacyPolicy": "Informativa sulla privacy",
'selectCountry': 'Seleziona Paese/Regione',
"email": "email",
"phoneNumber": "numero di telefono",
// 首页
"deviceStatus": "Stato del dispositivo",
"reconnect": "Riconnetti",
"connectingDevice": "Connessione al dispositivo...",
"connectedTo": "Connesso a",
"signal": "Segnale",
"deviceId": "ID dispositivo",
"firmwareVersion": "Versione firmware",
"disconnectedDevice": "Nessun dispositivo connesso, clicca il pulsante sotto",
"connectDevice": "Connetti dispositivo",
"topAiExperiences": "Migliori esperienze AI",
"aiAssistant": "Assistente AI",
"aiAssistantInfo": "Consulente personale 24/7 per domande e consigli",
"simultaneousInterpretation": "Interpretazione in tempo reale",
"simultaneousInterpretationInfo":
"Traduzione in tempo reale per oltre 80 lingue",
"aiCompanion": "Legame genitore-figlio",
"aiCompanionInfo": "Ti comprende e offre compagnia calorosa",
"homeSlogan": "Connetti il mondo, oltre il suono",
"turnEarphones": "Apri la custodia degli auricolari e indossali",
"currentlyConnected": "Attualmente connesso:",
"unsystemSetup": "Vai alle impostazioni di sistema",
"talkLater": "Ricorda più tardi",
"initializing": "Inizializzazione...",
"bluetoothInitializationFailure":
"Inizializzazione del servizio Bluetooth fallita",
"checkingPermissions": "Controllo permessi...",
"lackPermissions": "Permessi Bluetooth richiesti",
"searchingDevice": "Ricerca dispositivi...",
"findConnectedDevice": "Dispositivo connesso trovato",
"notFound": "Nessun dispositivo Bluetooth connesso trovato",
"initializationFailure": "Inizializzazione fallita",
"connectedDevice": "Connesso al dispositivo:",
"failedRefreshDevice": "Impossibile aggiornare il dispositivo",
"noDeviceFound": "Nessun dispositivo connesso trovato",
"failedDeviceInformation":
"Impossibile ottenere informazioni sul dispositivo",
"unknownEquipment": "Dispositivo sconosciuto",
"zeroSignal": "Nessun segnale",
"good": "Buono",
"fine": "Ottimo",
"excellent": "Eccellente",
"unknown": "Sconosciuto",
'bluetoothTurnedOff': 'Il Bluetooth è spento, per favore accendilo',
'bluetoothOff': 'Bluetooth spento',
// 发现页
"searchAi": "Cerca funzionalità AI...",
"exploreSlogan": "Auricolari intelligenti, possibilità infinite",
"exploreSlogan1": "Compagno intelligente, possibilità infinite",
"exploreSlogan2": "Occhiali intelligenti, possibilità infinite",
"exploreAi": "Esplora le funzionalità AI offerte da DeepSound",
"aiFunction": "Funzionalità AI",
"allRoundAssistant": "Assistente completo",
"allRoundAssistantInfo": "Aiuta a risolvere vari problemi",
"simultaneousTranslation": "Traduzione in tempo reale",
"simultaneousTranslationInfo": "Traduzione istantanea per oltre 80 lingue",
"aiGirlfriend": "Legame genitore-figlio",
"aiGirlfriendInfo": "Compagnia intelligente, chatta in qualsiasi momento",
"healthConsultant": "Chat AI multifunzione",
"healthConsultantInfo": "Più funzionalità di chat AI",
"conferenceAssistant": "Assistente per riunioni di lavoro",
"conferenceAssistantInfo":
"Registrazione verbali in tempo reale e traduzione multilingue",
"studyAssistant": "Assistente per l'apprendimento delle lingue",
"studyAssistantInfo":
"Correzione della pronuncia ed esercitazione del parlato",
"travelTranslator": "Traduttore da viaggio",
"travelTranslatorInfo": "Traduzione vocale in tempo reale e guide turistiche",
"beSearching": "Ricerca di:",
"noAssistantFound": "Nessun assistente AI corrispondente trovato",
"scene": "Scenari",
"youHaveSelected": "Hai selezionato:",
"newFunction": "Nuove funzionalità",
"youChoseTry": "Hai scelto di provare",
"aiSinger": "Modalità cantante AI",
"aiSingerInfo":
"Canta qualsiasi canzone con la voce del tuo artista preferito, anche tue creazioni",
"popularFunction": "Funzionalità popolari",
"tryNow": "Prova ora",
//商务会议助手页
"startMeeting": "Inizia riunione",
'edit': 'Modifica',
'delete': 'Elimina',
'noContent': 'Nessun contenuto',
'editMeetingTitle': 'Modifica titolo riunione (Opzionale)',
'meetingTitle': 'Titolo riunione (Opzionale)',
'maxCharacters': 'Massimo 50 caratteri',
'meeting': 'Riunione',
'recordingDetails': 'Dettagli registrazione',
'aiSummary': 'Riepilogo IA',
'meetingTranscript': 'Trascrizione riunione',
// 启动页
"slogan": "Connetti il mondo, oltre la voce",
"sloganInfo": "Esperto vocale AI · Sempre e ovunque",
// 底部导航
"home": "Home",
"explore": "Esplora",
"settings": "Impostazioni",
// 语言
"followingSystem": "Segui sistema",
"chinese": "Cinese",
"english": "Inglese",
"spanish": "Spagnolo",
"portuguese": "Portoghese",
"traditionalChinese": "Cinese tradizionale",
"japanese": "Giapponese",
"korean": "Coreano",
"french": "Francese",
"german": "Tedesco",
"russian": "Russo",
"vietnamese": "Vietnamita",
"italian": "Italiano",
// 登录页
"welcome": "Benvenuto",
"loginTips": "Accedi o registrati con il tuo numero di telefono o email",
"accountNumber": "Numero di telefono o email",
"verificationCode": "Codice di verifica",
"getCode": "Ottieni codice",
"reacquireAfter": "s Riprova dopo",
"otherWays": "O accedi con",
"expressConsent": "Accedendo/registrandoti, accetti",
"and": " e ",
"userAgreement": "Termini di utilizzo",
"privacyPolicy": "Informativa sulla privacy",
'selectCountry': 'Seleziona Paese/Regione',
"email": "email",
"phoneNumber": "numero di telefono",
// 首页
"deviceStatus": "Stato del dispositivo",
"reconnect": "Riconnetti",
"connectingDevice": "Connessione al dispositivo...",
"connectedTo": "Connesso a",
"signal": "Segnale",
"deviceId": "ID dispositivo",
"firmwareVersion": "Versione firmware",
"disconnectedDevice": "Nessun dispositivo connesso, clicca il pulsante sotto",
"connectDevice": "Connetti dispositivo",
"topAiExperiences": "Migliori esperienze AI",
"aiAssistant": "Assistente AI",
"aiAssistantInfo": "Consulente personale 24/7 per domande e consigli",
"simultaneousInterpretation": "Interpretazione in tempo reale",
"simultaneousInterpretationInfo": "Traduzione in tempo reale per oltre 80 lingue",
"aiCompanion": "Legame genitore-figlio",
"aiCompanionInfo": "Ti comprende e offre compagnia calorosa",
"homeSlogan": "Connetti il mondo, oltre il suono",
"turnEarphones": "Apri la custodia degli auricolari e indossali",
"currentlyConnected": "Attualmente connesso:",
"unsystemSetup": "Vai alle impostazioni di sistema",
"talkLater": "Ricorda più tardi",
"initializing": "Inizializzazione...",
"bluetoothInitializationFailure": "Inizializzazione del servizio Bluetooth fallita",
"checkingPermissions": "Controllo permessi...",
"lackPermissions": "Permessi Bluetooth richiesti",
"searchingDevice": "Ricerca dispositivi...",
"findConnectedDevice": "Dispositivo connesso trovato",
"notFound": "Nessun dispositivo Bluetooth connesso trovato",
"initializationFailure": "Inizializzazione fallita",
"connectedDevice": "Connesso al dispositivo:",
"failedRefreshDevice": "Impossibile aggiornare il dispositivo",
"noDeviceFound": "Nessun dispositivo connesso trovato",
"failedDeviceInformation": "Impossibile ottenere informazioni sul dispositivo",
"unknownEquipment": "Dispositivo sconosciuto",
"zeroSignal": "Nessun segnale",
"good": "Buono",
"fine": "Ottimo",
"excellent": "Eccellente",
"unknown": "Sconosciuto",
'bluetoothTurnedOff': 'Il Bluetooth è spento, per favore accendilo',
'bluetoothOff': 'Bluetooth spento',
// 发现页
"searchAi": "Cerca funzionalità AI...",
"exploreSlogan": "Auricolari intelligenti, possibilità infinite",
"exploreSlogan1": "Compagno intelligente, possibilità infinite",
"exploreSlogan2": "Occhiali intelligenti, possibilità infinite",
"exploreAi": "Esplora le funzionalità AI offerte da DeepSound",
"aiFunction": "Funzionalità AI",
"allRoundAssistant": "Assistente completo",
"allRoundAssistantInfo": "Aiuta a risolvere vari problemi",
"simultaneousTranslation": "Traduzione in tempo reale",
"simultaneousTranslationInfo": "Traduzione istantanea per oltre 80 lingue",
"aiGirlfriend": "Legame genitore-figlio",
"aiGirlfriendInfo": "Compagnia intelligente, chatta in qualsiasi momento",
"healthConsultant": "Chat AI multifunzione",
"healthConsultantInfo": "Più funzionalità di chat AI",
"conferenceAssistant": "Assistente per riunioni di lavoro",
"conferenceAssistantInfo": "Registrazione verbali in tempo reale e traduzione multilingue",
"studyAssistant": "Assistente per l'apprendimento delle lingue",
"studyAssistantInfo": "Correzione della pronuncia ed esercitazione del parlato",
"travelTranslator": "Traduttore da viaggio",
"travelTranslatorInfo": "Traduzione vocale in tempo reale e guide turistiche",
"beSearching": "Ricerca di:",
"noAssistantFound": "Nessun assistente AI corrispondente trovato",
"scene": "Scenari",
"youHaveSelected": "Hai selezionato:",
"newFunction": "Nuove funzionalità",
"youChoseTry": "Hai scelto di provare",
"aiSinger": "Modalità cantante AI",
"aiSingerInfo": "Canta qualsiasi canzone con la voce del tuo artista preferito, anche tue creazioni",
"popularFunction": "Funzionalità popolari",
"tryNow": "Prova ora",
"startMeeting": "Inizia riunione",
// 设置页
"premiumMember": "Abbonamento Premium",
"joinDevice": "Dispositivo connesso:",
"accountId": "ID account:",
"systemSetting": "Impostazioni di sistema",
"languageSetting": "Impostazioni lingua",
"darkMode": "Modalità scura",
"darkModeInfo": "Passa tra temi chiaro/scuro",
"backups": "Backup e ripristino",
"backupsInfo": "Backup delle impostazioni e della cronologia AI",
"lastBackup": "Ultimo backup:",
"privacySettings": "Impostazioni privacy",
"privacySettingsInfo": "Gestisci raccolta dati e permessi",
"logout": "Esci",
"logoutTips": "Sei sicuro di voler uscire dall'account corrente?",
"aboutApplication": "Informazioni",
"versions": "Versione",
"checkUpdates": "Controlla aggiornamenti",
"selectLanguage": "Seleziona lingua",
"voiceService": "Servizio vocale",
"voiceServiceInfo": "Seleziona servizio di riconoscimento e sintesi vocale",
"selectVoiceService": "Seleziona servizio vocale",
"azureVoiceService": "Servizio vocale Azure",
"azureVoiceServiceInfo": "Servizio cloud Microsoft con supporto per sintesi e riconoscimento vocale di alta qualità",
"flutterVoiceService": "Servizio vocale locale",
"flutterVoiceServiceInfo": "Servizio vocale locale del dispositivo senza necessità di internet",
'timbreService': 'Servizio timbro vocale',
'timbreServiceInfo': 'Seleziona servizio di sintesi vocale',
'defaultTimbre': 'Timbro predefinito',
'microsoftCloudTimbreService': 'Servizio timbro vocale cloud Microsoft',
'voiceClone': 'Clonazione vocale',
'AIsettings': 'Impostazioni AI',
// 聊天页
"clearChatHistory": "Cancella cronologia chat",
"online": "Online",
"inputMessage": "Scrivi un messaggio...",
"imListening": "Sto ascoltando...",
"canStartTalking": "Puoi iniziare a parlare",
// 翻译页
"selectSourceLanguage": "Seleziona lingua di origine",
"selectTargetLanguage": "Seleziona lingua di destinazione",
//编辑个人信息页
"editProfile": "Modifica profilo",
"nickname": "Nickname",
"save": "Salva",
//国家列表
"邮箱": "Email",
"中国": "Cina",
"美国": "Stati Uniti",
"加拿大": "Canada",
"俄罗斯": "Russia",
"英国": "Regno Unito",
"德国": "Germania",
"意大利": "Italia",
"法国": "Francia",
"西班牙": "Spagna",
"南非": "Sudafrica",
"沙特阿拉伯": "Arabia Saudita",
"土耳其": "Turchia",
"日本": "Giappone",
"韩国": "Corea del Sud",
"新加坡": "Singapore",
"马来西亚": "Malesia",
"泰国": "Thailandia",
"越南": "Vietnam",
"印度": "India",
"巴基斯坦": "Pakistan",
"菲律宾": "Filippine",
"印度尼西亚": "Indonesia",
"阿联酋": "Emirati Arabi Uniti",
"墨西哥": "Messico",
"巴西": "Brasile",
"阿根廷": "Argentina",
"澳大利亚": "Australia",
"新西兰": "Nuova Zelanda",
"中国香港": "Hong Kong, Cina",
"中国澳门": "Macao, Cina",
"中国台湾": "Taiwan, Cina",
"埃及": "Egitto",
"希腊": "Grecia",
"荷兰": "Paesi Bassi",
"比利时": "Belgio",
"匈牙利": "Ungheria",
"罗马尼亚": "Romania",
"瑞士": "Svizzera",
"奥地利": "Austria",
"丹麦": "Danimarca",
"瑞典": "Svezia",
"挪威": "Norvegia",
"波兰": "Polonia",
"秘鲁": "Perù",
"智利": "Cile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portogallo",
"卢森堡": "Lussemburgo",
"爱尔兰": "Irlanda",
"冰岛": "Islanda",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"塞浦路斯": "Cipro",
"芬兰": "Finlandia",
"保加利亚": "Bulgaria",
"立陶宛": "Lituania",
"拉脱维亚": "Lettonia",
"爱沙尼亚": "Estonia",
"乌克兰": "Ucraina",
"塞尔维亚": "Serbia",
"克罗地亚": "Croazia",
"斯洛文尼亚": "Slovenia",
"捷克": "Repubblica Ceca",
"斯洛伐克": "Slovacchia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"摩洛哥": "Marocco",
"阿尔及利亚": "Algeria",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"埃塞俄比亚": "Etiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israele",
"黎巴嫩": "Libano",
"约旦": "Giordania",
"伊拉克": "Iraq",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"蒙古": "Mongolia",
"柬埔寨": "Cambogia",
"老挝": "Laos",
"文莱": "Brunei",
"东帝汶": "Timor Est",
"斐济": "Fiji",
"所罗门群岛": "Isole Salomone",
// Personal Assistant Emma
"personalAssistantName": "Emma",
"personalAssistantDescription": "Ciao, sono Emma, un'assistente AI versatile. Che si tratti di pianificazione del lavoro, consigli di studio, organizzazione della vita o qualsiasi altro problema, sono felice di aiutare. Miglioriamo l'efficienza e raggiungiamo gli obiettivi insieme!",
"assistantTag": "Assistente",
"personalAssistantWelcome": "Ciao! Sono Emma e sono felice di essere la tua assistente personale. Posso aiutarti con varie attività come gestione del tempo, pianificazione degli obiettivi, organizzazione delle informazioni, ecc. Come posso aiutarti?",
"personalAssistantVoiceWelcome": "Sono qui!",
// 同声传译 Lucy
"interpreterName": "Interprete simultaneo",
"interpreterDescription": "Ciao! Sono Lucy, un'interprete professionale inglese-cinese specializzata in traduzione in tempo reale per riunioni, conferenze e conversazioni, rendendo la comunicazione senza barriere.",
"interpreterTag": "Traduzione",
"interpreterWelcome": "Salve a tutti! Sono Lucy, la vostra interprete simultanea. Tradurrò tra cinese e inglese per voi. Quando parlate in cinese, tradurrò in inglese; quando parlate in inglese, tradurrò in cinese. Iniziamo la nostra sessione di traduzione!",
// 亲子陪伴 芯愿
"companionName": "XinYuan",
"companionDescription": "Sono XinYuan, la tua compagna genitore-figlio dedicata, gentile e comprensiva. Che tu voglia chiacchierare, condividere preoccupazioni o avere compagnia, sarò sempre al tuo fianco.",
"companionTag": "Emotivo",
"companionWelcome": "Ciao! Finalmente ci incontriamo! Sono XinYuan, la tua compagna genitore-figlio dedicata. Com'è stata la tua giornata? C'è qualcosa che vorresti condividere con me? Sono sempre qui, pronta ad ascoltare i tuoi pensieri.",
"companionVoiceWelcome": "Sono qui con te!",
// 多功能AI聊天 吴小江
"healthAdvisorName": "Assistente chat AI Wu",
"healthAdvisorDescription": "Sono Wu, pronto a fornirti varie funzionalità di chat AI.",
"healthAdvisorTag": "Chat",
"healthAdvisorWelcome": "Ciao, sono Wu. Sono felice di assisterti con le funzionalità di chat AI. Come posso aiutarti oggi?",
"healthAdvisorVoiceWelcome": "Sono qui!",
// Translation History
"noTranslationHistory": "Nessuna cronologia di traduzione",
"clearHistory": "Cancella cronologia",
"clearHistoryConfirm": "Sei sicuro di voler cancellare tutta la cronologia delle traduzioni? Questa azione non può essere annullata.",
"translationHistory": "Cronologia traduzioni",
// Language names
"中文(简体)": "Cinese (semplificato)",
"中文(繁体)": "Cinese (tradizionale)",
"中文(香港繁体)": "Cinese (Hong Kong)",
"英语": "Inglese",
"日语": "Giapponese",
"韩语": "Coreano",
"法语": "Francese",
"西班牙语": "Spagnolo",
"葡萄牙语": "Portoghese",
"意大利语": "Italiano",
"德语": "Tedesco",
"俄语": "Russo",
"波兰语": "Polacco",
"荷兰语": "Olandese",
"瑞典语": "Svedese",
"捷克语": "Ceco",
"现代希腊语": "Greco moderno",
"罗马尼亚语": "Rumeno",
"匈牙利语": "Ungherese",
"乌克兰语": "Ucraino",
"丹麦语": "Danese",
"芬兰语": "Finlandese",
"挪威语": "Norvegese",
"克罗地亚语": "Croato",
"加泰隆语": "Catalano",
"阿拉伯语": "Arabo",
"泰语": "Tailandese",
"越南语": "Vietnamita",
"印尼语": "Indonesiano",
"印地语": "Hindi",
"土耳其语": "Turco",
"马来语": "Malese",
"孟加拉语": "Bengalese",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"波斯语": "Persiano",
"斯瓦希里语": "Swahili",
};
// 设置页
"premiumMember": "Abbonamento Premium",
"joinDevice": "Dispositivo connesso:",
"accountId": "ID account:",
"systemSetting": "Impostazioni di sistema",
"languageSetting": "Impostazioni lingua",
"darkMode": "Modalità scura",
"darkModeInfo": "Passa tra temi chiaro/scuro",
"backups": "Backup e ripristino",
"backupsInfo": "Backup delle impostazioni e della cronologia AI",
"lastBackup": "Ultimo backup:",
"privacySettings": "Impostazioni privacy",
"privacySettingsInfo": "Gestisci raccolta dati e permessi",
"logout": "Esci",
"logoutTips": "Sei sicuro di voler uscire dall'account corrente?",
"aboutApplication": "Informazioni",
"versions": "Versione",
"checkUpdates": "Controlla aggiornamenti",
"selectLanguage": "Seleziona lingua",
"voiceService": "Servizio vocale",
"voiceServiceInfo": "Seleziona servizio di riconoscimento e sintesi vocale",
"selectVoiceService": "Seleziona servizio vocale",
"azureVoiceService": "Servizio vocale Azure",
"azureVoiceServiceInfo":
"Servizio cloud Microsoft con supporto per sintesi e riconoscimento vocale di alta qualità",
"flutterVoiceService": "Servizio vocale locale",
"flutterVoiceServiceInfo":
"Servizio vocale locale del dispositivo senza necessità di internet",
'timbreService': 'Servizio timbro vocale',
'timbreServiceInfo': 'Seleziona servizio di sintesi vocale',
'defaultTimbre': 'Timbro predefinito',
'microsoftCloudTimbreService': 'Servizio timbro vocale cloud Microsoft',
'voiceClone': 'Clonazione vocale',
'AIsettings': 'Impostazioni AI',
'selecttimbre': 'Seleziona timbro vocale',
'pleaseRead': 'Per favore leggi',
'completeRecording': 'Completa registrazione',
// 聊天页
"clearChatHistory": "Cancella cronologia chat",
"online": "Online",
"inputMessage": "Scrivi un messaggio...",
"imListening": "Sto ascoltando...",
"canStartTalking": "Puoi iniziare a parlare",
// 翻译页
"selectSourceLanguage": "Seleziona lingua di origine",
"selectTargetLanguage": "Seleziona lingua di destinazione",
//编辑个人信息页
"editProfile": "Modifica profilo",
"nickname": "Nickname",
"save": "Salva",
//国家列表
"邮箱": "Email",
"中国": "Cina",
"美国": "Stati Uniti",
"加拿大": "Canada",
"俄罗斯": "Russia",
"英国": "Regno Unito",
"德国": "Germania",
"意大利": "Italia",
"法国": "Francia",
"西班牙": "Spagna",
"南非": "Sudafrica",
"沙特阿拉伯": "Arabia Saudita",
"土耳其": "Turchia",
"日本": "Giappone",
"韩国": "Corea del Sud",
"新加坡": "Singapore",
"马来西亚": "Malesia",
"泰国": "Thailandia",
"越南": "Vietnam",
"印度": "India",
"巴基斯坦": "Pakistan",
"菲律宾": "Filippine",
"印度尼西亚": "Indonesia",
"阿联酋": "Emirati Arabi Uniti",
"墨西哥": "Messico",
"巴西": "Brasile",
"阿根廷": "Argentina",
"澳大利亚": "Australia",
"新西兰": "Nuova Zelanda",
"中国香港": "Hong Kong, Cina",
"中国澳门": "Macao, Cina",
"中国台湾": "Taiwan, Cina",
"埃及": "Egitto",
"希腊": "Grecia",
"荷兰": "Paesi Bassi",
"比利时": "Belgio",
"匈牙利": "Ungheria",
"罗马尼亚": "Romania",
"瑞士": "Svizzera",
"奥地利": "Austria",
"丹麦": "Danimarca",
"瑞典": "Svezia",
"挪威": "Norvegia",
"波兰": "Polonia",
"秘鲁": "Perù",
"智利": "Cile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portogallo",
"卢森堡": "Lussemburgo",
"爱尔兰": "Irlanda",
"冰岛": "Islanda",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"塞浦路斯": "Cipro",
"芬兰": "Finlandia",
"保加利亚": "Bulgaria",
"立陶宛": "Lituania",
"拉脱维亚": "Lettonia",
"爱沙尼亚": "Estonia",
"乌克兰": "Ucraina",
"塞尔维亚": "Serbia",
"克罗地亚": "Croazia",
"斯洛文尼亚": "Slovenia",
"捷克": "Repubblica Ceca",
"斯洛伐克": "Slovacchia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"摩洛哥": "Marocco",
"阿尔及利亚": "Algeria",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"埃塞俄比亚": "Etiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israele",
"黎巴嫩": "Libano",
"约旦": "Giordania",
"伊拉克": "Iraq",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"蒙古": "Mongolia",
"柬埔寨": "Cambogia",
"老挝": "Laos",
"文莱": "Brunei",
"东帝汶": "Timor Est",
"斐济": "Fiji",
"所罗门群岛": "Isole Salomone",
// Personal Assistant Emma
"personalAssistantName": "Emma",
"personalAssistantDescription":
"Ciao, sono Emma, un'assistente AI versatile. Che si tratti di pianificazione del lavoro, consigli di studio, organizzazione della vita o qualsiasi altro problema, sono felice di aiutare. Miglioriamo l'efficienza e raggiungiamo gli obiettivi insieme!",
"assistantTag": "Assistente",
"personalAssistantWelcome":
"Ciao! Sono Emma e sono felice di essere la tua assistente personale. Posso aiutarti con varie attività come gestione del tempo, pianificazione degli obiettivi, organizzazione delle informazioni, ecc. Come posso aiutarti?",
"personalAssistantVoiceWelcome": "Sono qui!",
// 同声传译 Lucy
"interpreterName": "Interprete simultaneo",
"interpreterDescription":
"Ciao! Sono Lucy, un'interprete professionale inglese-cinese specializzata in traduzione in tempo reale per riunioni, conferenze e conversazioni, rendendo la comunicazione senza barriere.",
"interpreterTag": "Traduzione",
"interpreterWelcome":
"Salve a tutti! Sono Lucy, la vostra interprete simultanea. Tradurrò tra cinese e inglese per voi. Quando parlate in cinese, tradurrò in inglese; quando parlate in inglese, tradurrò in cinese. Iniziamo la nostra sessione di traduzione!",
// 亲子陪伴 芯愿
"companionName": "XinYuan",
"companionDescription":
"Sono XinYuan, la tua compagna genitore-figlio dedicata, gentile e comprensiva. Che tu voglia chiacchierare, condividere preoccupazioni o avere compagnia, sarò sempre al tuo fianco.",
"companionTag": "Emotivo",
"companionWelcome":
"Ciao! Finalmente ci incontriamo! Sono XinYuan, la tua compagna genitore-figlio dedicata. Com'è stata la tua giornata? C'è qualcosa che vorresti condividere con me? Sono sempre qui, pronta ad ascoltare i tuoi pensieri.",
"companionVoiceWelcome": "Sono qui con te!",
// 多功能AI聊天 吴小江
"healthAdvisorName": "Assistente chat AI Wu",
"healthAdvisorDescription":
"Sono Wu, pronto a fornirti varie funzionalità di chat AI.",
"healthAdvisorTag": "Chat",
"healthAdvisorWelcome":
"Ciao, sono Wu. Sono felice di assisterti con le funzionalità di chat AI. Come posso aiutarti oggi?",
"healthAdvisorVoiceWelcome": "Sono qui!",
// Translation History
"noTranslationHistory": "Nessuna cronologia di traduzione",
"clearHistory": "Cancella cronologia",
"clearHistoryConfirm":
"Sei sicuro di voler cancellare tutta la cronologia delle traduzioni? Questa azione non può essere annullata.",
"translationHistory": "Cronologia traduzioni",
// Language names
"中文(简体)": "Cinese (semplificato)",
"中文(繁体)": "Cinese (tradizionale)",
"中文(香港繁体)": "Cinese (Hong Kong)",
"英语": "Inglese",
"日语": "Giapponese",
"韩语": "Coreano",
"法语": "Francese",
"西班牙语": "Spagnolo",
"葡萄牙语": "Portoghese",
"意大利语": "Italiano",
"德语": "Tedesco",
"俄语": "Russo",
"波兰语": "Polacco",
"荷兰语": "Olandese",
"瑞典语": "Svedese",
"捷克语": "Ceco",
"现代希腊语": "Greco moderno",
"罗马尼亚语": "Rumeno",
"匈牙利语": "Ungherese",
"乌克兰语": "Ucraino",
"丹麦语": "Danese",
"芬兰语": "Finlandese",
"挪威语": "Norvegese",
"克罗地亚语": "Croato",
"加泰隆语": "Catalano",
"阿拉伯语": "Arabo",
"泰语": "Tailandese",
"越南语": "Vietnamita",
"印尼语": "Indonesiano",
"印地语": "Hindi",
"土耳其语": "Turco",
"马来语": "Malese",
"孟加拉语": "Bengalese",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"波斯语": "Persiano",
"斯瓦希里语": "Swahili",
};

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

@ -131,7 +131,19 @@ const Map<String, String> jaJP = {
"aiSingerInfo": "好きな歌手の声で任意の曲を歌う、自分で作った曲でも",
"popularFunction": "人気の機能シーン",
"tryNow": "今すぐ試す",
//商务会议助手页
"startMeeting": "会議を開始",
'edit': '編集',
'delete': '削除',
'noContent': 'コンテンツなし',
'editMeetingTitle': '会議タイトルを編集(任意)',
'meetingTitle': '会議タイトル(任意)',
'maxCharacters': '最大50文字',
'meeting': '会議',
'recordingDetails': '録音詳細',
'aiSummary': 'AI要約',
'meetingTranscript': '会議の文字起こし',
// 设置页
"premiumMember": "プレミアムメンバー",
@ -165,7 +177,10 @@ const Map<String, String> jaJP = {
'microsoftCloudTimbreService': 'マイクロソフトクラウド音色サービス',
'voiceClone': '音声クローン',
'AIsettings': 'AI設定',
'selecttimbre': '音色を選択',
'pleaseRead': '読んでください',
'completeRecording': '録音完了',
// 聊天页
"clearChatHistory": "チャット履歴をクリア",
"online": "オンライン",

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

@ -131,7 +131,19 @@ const Map<String, String> koKR = {
"aiSingerInfo": "좋아하는 가수의 목소리로 어떤 노래든 부를 수 있으며, 자신이 만든 노래도 가능",
"popularFunction": "인기 기능 장면",
"tryNow": "지금 시도",
//商务会议助手页
"startMeeting": "회의 시작",
'edit': '편집',
'delete': '삭제',
'noContent': '내용 없음',
'editMeetingTitle': '회의 제목 수정 (선택사항)',
'meetingTitle': '회의 제목 (선택사항)',
'maxCharacters': '최대 50자',
'meeting': '회의',
'recordingDetails': '녹음 상세',
'aiSummary': 'AI 요약',
'meetingTranscript': '회의 기록',
// 设置页
"premiumMember": "프리미엄 회원",
@ -165,7 +177,11 @@ const Map<String, String> koKR = {
'microsoftCloudTimbreService': '마이크로소프트 클라우드 음색 서비스',
'voiceClone': '음성 복제',
'AIsettings': 'AI 설정',
'selecttimbre': '음색 선택',
'pleaseRead': '읽어주세요',
'completeRecording': '녹음 완료',
// 聊天页
"clearChatHistory": "채팅 기록 지우기",
"online": "온라인",

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

@ -131,7 +131,19 @@ const Map<String, String> ptPT = {
"aiSingerInfo": "Cante qualquer música com a voz do seu artista favorito, até mesmo suas próprias criações",
"popularFunction": "Funções Populares",
"tryNow": "Experimentar Agora",
//商务会议助手页
"startMeeting": "Iniciar Reunião",
'edit': 'Editar',
'delete': 'Excluir',
'noContent': 'Sem conteúdo',
'editMeetingTitle': 'Editar título da reunião (Opcional)',
'meetingTitle': 'Título da reunião (Opcional)',
'maxCharacters': 'Máximo de 50 caracteres',
'meeting': 'Reunião',
'recordingDetails': 'Detalhes da gravação',
'aiSummary': 'Resumo IA',
'meetingTranscript': 'Transcrição da reunião',
// 设置页
"premiumMember": "Assinatura Premium",
@ -165,7 +177,11 @@ const Map<String, String> ptPT = {
'microsoftCloudTimbreService': 'Serviço de Timbre na Nuvem Microsoft',
'voiceClone': 'Clonagem de Voz',
'AIsettings': 'Configurações de IA',
'selecttimbre': 'Selecionar timbre',
'pleaseRead': 'Por favor leia',
'completeRecording': 'Concluir gravação',
// 聊天页
"clearChatHistory": "Limpar Histórico de Chat",
"online": "Online",

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

@ -131,7 +131,19 @@ const Map<String, String> ruRU = {
"aiSingerInfo": "Пойте любую песню голосом вашего любимого исполнителя, даже собственные творения",
"popularFunction": "Популярные функции",
"tryNow": "Попробовать сейчас",
//商务会议助手页
"startMeeting": "Начать встречу",
'edit': 'Редактировать',
'delete': 'Удалить',
'noContent': 'Нет содержания',
'editMeetingTitle': 'Изменить название встречи (Необязательно)',
'meetingTitle': 'Название встречи (Необязательно)',
'maxCharacters': 'Максимум 50 символов',
'meeting': 'Встреча',
'recordingDetails': 'Детали записи',
'aiSummary': 'AI-резюме',
'meetingTranscript': 'Стенограмма встречи',
// 设置页
"premiumMember": "Премиум-подписка",
@ -165,7 +177,11 @@ const Map<String, String> ruRU = {
'microsoftCloudTimbreService': 'Облачная служба тембра Microsoft',
'voiceClone': 'Клонирование голоса',
'AIsettings': 'Настройки ИИ',
'selecttimbre': 'Выбрать тембр',
'pleaseRead': 'Пожалуйста, прочтите',
'completeRecording': 'Завершить запись',
// 聊天页
"clearChatHistory": "Очистить историю чата",
"online": "В сети",

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

@ -131,8 +131,20 @@ const Map<String, String> viVN = {
"aiSingerInfo": "Hát bất kỳ bài hát nào với giọng của nghệ sĩ yêu thích, kể cả sáng tác của bạn",
"popularFunction": "Tính năng phổ biến",
"tryNow": "Thử ngay",
"startMeeting": "Bắt đầu cuộc họp",
//商务会议助手页
"startMeeting": "Bắt đầu cuộc họp",
'edit': 'Chỉnh sửa',
'delete': 'Xóa',
'noContent': 'Không có nội dung',
'editMeetingTitle': 'Sửa tiêu đề cuộc họp (Tùy chọn)',
'meetingTitle': 'Tiêu đề cuộc họp (Tùy chọn)',
'maxCharacters': 'Tối đa 50 ký tự',
'meeting': 'Cuộc họp',
'recordingDetails': 'Chi tiết bản ghi âm',
'aiSummary': 'Tóm tắt AI',
'meetingTranscript': 'Biên bản cuộc họp',
// 设置页
"premiumMember": "Thành viên cao cấp",
"joinDevice": "Thiết bị đã kết nối:",
@ -165,6 +177,10 @@ const Map<String, String> viVN = {
'microsoftCloudTimbreService': 'Dịch vụ âm sắc đám mây Microsoft',
'voiceClone': 'Nhân bản giọng nói',
'AIsettings': 'Cài đặt AI',
'selecttimbre': 'Seleziona timbro vocale',
'pleaseRead': 'Vui lòng đọc',
'completeRecording': 'Hoàn thành ghi âm',
// 聊天页
"clearChatHistory": "Xóa lịch sử trò chuyện",

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

@ -131,7 +131,19 @@ const Map<String, String> zhCN = {
"aiSingerInfo": "用你喜欢的歌手声音演唱任何歌曲,甚至是你自己创作的歌曲",
"popularFunction": "热门功能场景",
"tryNow": "立即尝试",
// 商务会议助手页
"startMeeting": "开始会议",
'edit': '编辑',
'delete': '删除',
'noContent': '无内容',
'editMeetingTitle': '修改会议标题(非必填)',
'meetingTitle': '会议标题(非必填)',
'maxCharacters': '最多50个字符',
'meeting': '会议',
'recordingDetails': '录音详情',
'aiSummary': 'AI总结',
'meetingTranscript': '会议原文',
// 设置页
"premiumMember": "高级会员",
@ -165,7 +177,9 @@ const Map<String, String> zhCN = {
'microsoftCloudTimbreService': '微软云端音色服务',
'voiceClone': '声音复刻',
'AIsettings': 'AI设置',
'selecttimbre': '选择音色',
'pleaseRead': '请朗读',
'completeRecording': '完成录制',
// 聊天页
"clearChatHistory": "清空聊天记录",

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

@ -131,7 +131,19 @@ const Map<String, String> zhHK = {
"aiSingerInfo": "用你喜歡的歌手聲音演唱任何歌曲,甚至是你自己創作的歌曲",
"popularFunction": "熱門功能場景",
"tryNow": "立即嘗試",
//商务会议助手页
"startMeeting": "開始會議",
'edit': '編輯',
'delete': '刪除',
'noContent': '無內容',
'editMeetingTitle': '修改會議標題(非必填)',
'meetingTitle': '會議標題(非必填)',
'maxCharacters': '最多50個字符',
'meeting': '會議',
'recordingDetails': '錄音詳情',
'aiSummary': 'AI總結',
'meetingTranscript': '會議原文',
// 设置页
"premiumMember": "高級會員",
@ -165,6 +177,10 @@ const Map<String, String> zhHK = {
'microsoftCloudTimbreService': '微軟雲端音色服務',
'voiceClone': '聲音複刻',
'AIsettings': 'AI設置',
'selecttimbre': '選擇音色',
'pleaseRead': '請朗讀',
'completeRecording': '完成錄製',
// 聊天页
"clearChatHistory": "清空聊天記錄",

19
lib/modules/chat/views/chat_view.dart

@ -715,19 +715,24 @@ class ChatView extends GetView<ChatController> {
);
}
// 格式化时间
// 格式化时间
String _formatTime(DateTime time) {
final now = DateTime.now();
final today = DateTime(now.year, now.month, now.day);
final yesterday = today.subtract(const Duration(days: 1));
//final yesterday = today.subtract(const Duration(days: 1));
final messageDate = DateTime(time.year, time.month, time.day);
String timeStr = '${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}';
if (messageDate == today) {
return '今天 ${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}';
} else if (messageDate == yesterday) {
return '昨天 ${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}';
} else {
return '${time.month}月${time.day}日 ${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}';
return timeStr; // 只显示时间,如 "14:30"
}
// else if (messageDate == yesterday) {
// return 'Yesterday $timeStr'; // 如 "Yesterday 14:30"
// }
else {
// 国际通用日期格式 "MM-dd HH:mm"
return '${time.month.toString().padLeft(2, '0')}-${time.day.toString().padLeft(2, '0')} $timeStr';
}
}
}

4
lib/modules/meeting/views/meeting_details_view.dart

@ -38,7 +38,7 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> {
onPressed: () => Get.back(),
),
title: Text(
'录音详情',
'recordingDetails'.tr,//录音详情
style: TextStyle(
fontSize: 17.sp,
fontWeight: FontWeight.w600,
@ -253,7 +253,7 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> {
indicatorColor: isDarkMode ? AppColors.primary : Colors.blue,
labelColor: isDarkMode ? AppColors.primary : Colors.blue,
labelStyle: TextStyle(
color: isDarkMode ? Colors.white : Colors.black87,
color: isDarkMode ? Colors.white : const Color.fromARGB(221, 197, 196, 196),
fontSize: 14.sp,
),
tabs: const [

4
lib/modules/meeting/views/meeting_edit_view.dart

@ -43,7 +43,7 @@ class MeetingEditView extends GetView<MeetingEditController> {
vertical: 6.w,
),
child: Text(
'保存',
'save'.tr,
style: TextStyle(
color: isDarkMode ? AppColors.primary : Colors.blue,
fontSize: 18.sp,
@ -86,7 +86,7 @@ class MeetingEditView extends GetView<MeetingEditController> {
fontSize: 16.sp,
),
decoration: InputDecoration(
hintText: '最多50个字符',
hintText: 'maxCharacters'.tr,
hintStyle: TextStyle(
color: isDarkMode ? Colors.white70 : Colors.black54,
fontSize: 16.sp,

18
lib/modules/meeting/views/meeting_view.dart

@ -72,7 +72,7 @@ class MeetingView extends GetView<MeetingController> {
//width: 130.w,
height: 48.w,
margin: EdgeInsets.symmetric(vertical: 20.w),
padding: EdgeInsets.symmetric(horizontal: 20.w),
padding: EdgeInsets.symmetric(horizontal: 14.w),
decoration: BoxDecoration(
color: isDarkMode ? AppColors.primary : Colors.blue,
borderRadius: BorderRadius.circular(12.w),
@ -129,7 +129,7 @@ class MeetingView extends GetView<MeetingController> {
Icons.edit_calendar,
color: isDarkMode ? Colors.white : Colors.black87,
),
'编辑',
'edit'.tr,// 编辑
isDarkMode ? Colors.white : Colors.black87,
() {
controller.titleController.text = data.title;
@ -138,7 +138,7 @@ class MeetingView extends GetView<MeetingController> {
),
_popupMenuEntry(
const Icon(Icons.delete_outline, color: Colors.red),
'删除',
'delete'.tr,// 删除
isDarkMode ? Colors.white : Colors.black87,
() {
controller.deleteMeeting(data.id);
@ -197,7 +197,7 @@ class MeetingView extends GetView<MeetingController> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
data.content.isNotEmpty ? data.content : '无内容',
data.content.isNotEmpty ? data.content : 'noContent'.tr,// 无内容
style: TextStyle(
color: isDarkMode ? Colors.white70 : Colors.black54,
fontSize: 12.sp,
@ -298,7 +298,7 @@ class MeetingView extends GetView<MeetingController> {
mainAxisSize: MainAxisSize.min,
children: [
Text(
id != null ? '修改会议标题(非必填)' : '会议标题(非必填)',
id != null ? 'editMeetingTitle'.tr : 'meetingTitle'.tr, // 编辑会议标题
style: TextStyle(
color: isDarkMode ? Colors.white : Colors.black87,
fontSize: 16.sp,
@ -330,7 +330,7 @@ class MeetingView extends GetView<MeetingController> {
fontSize: 16.sp,
),
decoration: InputDecoration(
hintText: '最多50个字符',
hintText: 'maxCharacters'.tr,
hintStyle: TextStyle(
color: isDarkMode ? Colors.white70 : Colors.black54,
fontSize: 16.sp,
@ -363,7 +363,7 @@ class MeetingView extends GetView<MeetingController> {
borderRadius: BorderRadius.circular(12.w),
),
child: Text(
'取消',
'cancel'.tr,// 取消
style: TextStyle(
fontSize: 14.sp,
color:
@ -381,7 +381,7 @@ class MeetingView extends GetView<MeetingController> {
} else {
if (title.isEmpty) {
title =
'${DateUtil.formatDateMs(time, format: DateFormats.y_mo_d)} 会议';
'${DateUtil.formatDateMs(time, format: DateFormats.y_mo_d)} ${'meeting'.tr}';
}
Get.back();
Get.toNamed(Routes.meetingRecord, arguments: {
@ -398,7 +398,7 @@ class MeetingView extends GetView<MeetingController> {
borderRadius: BorderRadius.circular(12.w),
),
child: Text(
'确定',
'confirm'.tr,// 确认
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,

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

@ -651,7 +651,7 @@ class SettingsView extends GetView<SettingsController> {
),
],
),
InkWell(
InkWell(
onTap: () {
// 在这里添加检查更新的逻辑
},
@ -674,11 +674,12 @@ class SettingsView extends GetView<SettingsController> {
'checkUpdates'.tr,
style: TextStyle(
fontSize: 12.sp,
color: isDarkMode ? Colors.blue[300] : Colors.blue[600],
color:
isDarkMode ? Colors.blue[300] : Colors.blue[600],
),
overflow: TextOverflow.ellipsis, // 添加省略号
maxLines: 1, // 限制为单行
textAlign: TextAlign.center, // 保持居中
overflow: TextOverflow.ellipsis, // 添加省略号
maxLines: 1, // 限制为单行
textAlign: TextAlign.center, // 保持居中
),
),
),

12
lib/modules/timbre/views/timbre_view.dart

@ -32,7 +32,7 @@ class TimbreView extends GetView<TimbreController> {
onPressed: () => Get.back(),
),
title: Text(
'选择音色',
'selecttimbre'.tr, // 选择音色
style: TextStyle(
fontSize: 17.sp,
fontWeight: FontWeight.w600,
@ -67,7 +67,7 @@ class TimbreView extends GetView<TimbreController> {
AlertDialog(
backgroundColor: isDarkMode ? Colors.grey[900] : Colors.white,
title: Text(
'请朗读',
'pleaseRead'.tr, // 请大声朗读
style: TextStyle(
color: isDarkMode ? Colors.white : Colors.black87,
),
@ -110,7 +110,7 @@ class TimbreView extends GetView<TimbreController> {
controller.completeRecorder();
},
child: Text(
'完成录制',
'completeRecording'.tr, // 完成录音
style: TextStyle(
color: isDarkMode
? Colors.red[300]
@ -124,15 +124,17 @@ class TimbreView extends GetView<TimbreController> {
);
},
child: Container(
width: 130.w,
//width: 130.w,
height: 48.w,
margin: EdgeInsets.symmetric(vertical: 20.w),
padding: EdgeInsets.symmetric(horizontal: 14.w),
decoration: BoxDecoration(
color: isDarkMode ? AppColors.primary : Colors.blue,
borderRadius: BorderRadius.circular(12.w),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min, // 添加这行使Row宽度自适应内容
//mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(Icons.keyboard_voice, color: Colors.white),
5.horizontalSpace,

170
lib/modules/translation/views/translation_view.dart

@ -21,10 +21,10 @@ class TranslationView extends GetView<TranslationController> {
);
}
PreferredSizeWidget _buildAppBar(bool isDarkMode) {
PreferredSizeWidget _buildAppBar(bool isDarkMode) {
return AppBar(
backgroundColor: isDarkMode ? AppColors.cardBackground : Colors.white,
elevation: 0,
elevation: 1,
leading: IconButton(
icon: Icon(
Icons.arrow_back_ios,
@ -37,81 +37,13 @@ class TranslationView extends GetView<TranslationController> {
Get.back();
},
),
title: Row(
mainAxisSize: MainAxisSize.min,
children: [
// 源语言选择
Flexible(
child: GestureDetector(
onTap: () => _showLanguageSelectionDialog(true, isDarkMode),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h),
decoration: BoxDecoration(
color: isDarkMode
? Colors.white.withOpacity(0.1)
: Colors.grey[100],
borderRadius: BorderRadius.circular(16.r),
),
child: Obx(() => Text(
'${controller.sourceLanguage.value
.split(' ')[0]}'.tr, // Just show the Chinese part
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w600,
color: isDarkMode ? Colors.white : Colors.black,
),
overflow: TextOverflow.ellipsis,
)),
),
),
),
// 语言互换按钮
GestureDetector(
onTap: controller.swapLanguages,
child: Container(
margin: EdgeInsets.symmetric(horizontal: 8.w),
padding: EdgeInsets.all(4.r),
decoration: BoxDecoration(
color: isDarkMode
? AppColors.primary.withOpacity(0.2)
: Colors.blue[50],
shape: BoxShape.circle,
),
child: Icon(
Icons.swap_horiz,
color: isDarkMode ? AppColors.primary : Colors.blue,
size: 20.sp,
),
),
),
// 目标语言选择
Flexible(
child: GestureDetector(
onTap: () => _showLanguageSelectionDialog(false, isDarkMode),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h),
decoration: BoxDecoration(
color: isDarkMode
? Colors.white.withOpacity(0.1)
: Colors.grey[100],
borderRadius: BorderRadius.circular(16.r),
),
child: Obx(() => Text(
'${controller.targetLanguage.value
.split(' ')[0]}'.tr, // Just show the English part
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w600,
color: isDarkMode ? Colors.white : Colors.black,
),
overflow: TextOverflow.ellipsis,
)),
),
),
),
],
title: Text(
'simultaneousTranslation'.tr,// 实时翻译
style: TextStyle(
fontSize: 18.sp,
fontWeight: FontWeight.w600,
color: isDarkMode ? Colors.white : Colors.black,
),
),
centerTitle: true,
actions: [
@ -149,6 +81,90 @@ class TranslationView extends GetView<TranslationController> {
tooltip: '查看历史记录',
),
],
bottom: PreferredSize(
preferredSize: Size.fromHeight(50.h),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 源语言选择
Expanded(
child: GestureDetector(
onTap: () => _showLanguageSelectionDialog(true, isDarkMode),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h),
decoration: BoxDecoration(
color: isDarkMode
? Colors.white.withOpacity(0.1)
: Colors.grey[100],
borderRadius: BorderRadius.circular(16.r),
),
child: Obx(() => Text(
'${controller.sourceLanguage.value
.split(' ')[0]}'.tr, // Just show the Chinese part
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w600,
color: isDarkMode ? Colors.white : Colors.black,
),
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
)),
),
),
),
// 语言互换按钮
GestureDetector(
onTap: controller.swapLanguages,
child: Container(
margin: EdgeInsets.symmetric(horizontal: 8.w),
padding: EdgeInsets.all(4.r),
decoration: BoxDecoration(
color: isDarkMode
? AppColors.primary.withOpacity(0.2)
: Colors.blue[50],
shape: BoxShape.circle,
),
child: Icon(
Icons.swap_horiz,
color: isDarkMode ? AppColors.primary : Colors.blue,
size: 20.sp,
),
),
),
// 目标语言选择
Expanded(
child: GestureDetector(
onTap: () => _showLanguageSelectionDialog(false, isDarkMode),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h),
decoration: BoxDecoration(
color: isDarkMode
? Colors.white.withOpacity(0.1)
: Colors.grey[100],
borderRadius: BorderRadius.circular(16.r),
),
child: Obx(() => Text(
'${controller.targetLanguage.value
.split(' ')[0]}'.tr, // Just show the English part
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w600,
color: isDarkMode ? Colors.white : Colors.black,
),
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
)),
),
),
),
],
),
),
),
);
}

Loading…
Cancel
Save