Browse Source

fix(i18n): Swedish placeholders in sv_SE

newdev_shunjiawei
lxm 7 months ago
parent
commit
7ce552f1cb
  1. 360
      lib/core/translations/language/sv_se.dart
  2. 22
      test/sv_se_translations_test.dart

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

@ -19,11 +19,11 @@ const Map<String, String> svSE = {
"unknownError": "Okänt fel", "unknownError": "Okänt fel",
"asrConnectionFailed": "asrConnectionFailed":
"Anslutning till tjänsten för röstigenkänning misslyckades. Kontrollera nätverket eller försök igen senare.", "Anslutning till tjänsten för röstigenkänning misslyckades. Kontrollera nätverket eller försök igen senare.",
"justNow": "Just now", "justNow": "Just nu",
"minutesAgo": "@minutes minutes ago", "minutesAgo": "@minutes minuter sedan",
"yesterday": "Yesterday", "yesterday": "Igår",
"daysAgo": "@days days ago", "daysAgo": "@days dagar sedan",
"hoursAgo": "@hours hours ago", "hoursAgo": "@hours timmar sedan",
// 启动页 // 启动页
"slogan": "Anslut världen, bortom ljudet", "slogan": "Anslut världen, bortom ljudet",
@ -257,10 +257,10 @@ const Map<String, String> svSE = {
"loadFailed": "Kunde inte läsa in", "loadFailed": "Kunde inte läsa in",
"statsLoadFailedTryLater": "statsLoadFailedTryLater":
"Kunde inte läsa in statistik. Försök igen senare.", "Kunde inte läsa in statistik. Försök igen senare.",
"cleanupComplete": "Cleanup Complete", "cleanupComplete": "Rensning klar",
"cleanedOldData": "Cleaned data older than 90 days", "cleanedOldData": "Rensade data äldre än 90 dagar",
"exportFeature": "Export Feature", "exportFeature": "Exportfunktion",
"exportInDevelopment": "Data export is under development", "exportInDevelopment": "Dataexport är under utveckling",
// 商品模块 - 通用 // 商品模块 - 通用
'availablePackages': 'Tillgängliga paket', 'availablePackages': 'Tillgängliga paket',
@ -333,101 +333,105 @@ const Map<String, String> svSE = {
"AI-medlemskapet har gått ut, gå till medlemskapets påfyllningssida för att förnya.", "AI-medlemskapet har gått ut, gå till medlemskapets påfyllningssida för att förnya.",
// 商品模块 - AI商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation', 'musicAndRecommendation': 'Musik & Rekommendationer',
'navigationAndRoutes': 'Navigation & Routes', 'navigationAndRoutes': 'Navigation & Rutter',
'nearbySearch': 'Nearby Search', 'nearbySearch': 'Sökning i närheten',
'newsInformation': 'News', 'newsInformation': 'Nyheter',
'communicationAssistant': 'Communication Assistant', 'communicationAssistant': 'Kommunikationsassistent',
'aiHeaderDesc1': 'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.', 'Längre konversationskvot, fler verktygsamtal, utökad kontextlängd.',
'aiHeaderDesc2': 'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.', 'Lämplig för agent-Q&A, sammanfattning, analys och uppgiftsutförande.',
'musicSearchPlaybackControl': 'Music library search and playback control', 'musicSearchPlaybackControl':
'Musikbibliotekssökning och uppspelningskontroll',
'smartPlaylistAndSimilarRecommendations': 'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations', 'Smart spellista och liknande låtrekommendationer',
'routePlanningAndCongestionAvoidance': 'routePlanningAndCongestionAvoidance': 'Ruttplanering och undvikande av köer',
'Route planning and congestion avoidance', 'voiceBroadcastAndWaypoints': 'Röstmeddelanden och vägpunkter',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', 'realTimeWeatherForecast': 'Realtidsväder och prognos',
'realTimeWeatherForecast': 'Real-time weather and forecast', 'clothingAdviceAndTravelReminders': 'Klädråd och resereminder',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', 'poiSearchFoodGasParking': 'POI-sökning: mat / bensin / parkering',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking', 'ratingsHoursAndDirectRoutes': 'Betyg, öppettider och direktruttning',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', 'hotNewsAndTopicOverview': 'Heta nyheter och ämnesöversikt',
'hotNewsAndTopicOverview': 'Hot news and topic overview', 'longArticleSummariesAndKeyPoints':
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', 'Sammanfattningar och nyckelpoäng av långa artiklar',
'helpCallAndSMS': 'Help with calls and SMS', 'helpCallAndSMS': 'Hjälp med samtal och SMS',
'templatedMessagesAndScheduleReminders': 'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders', 'Mallmeddelanden och schemapåminnelser',
'aiDisclaimer': 'aiDisclaimer':
'Funktioner beror på enhetens behörigheter, tjänstens tillgänglighet och nätverksförhållanden.', 'Funktioner beror på enhetens behörigheter, tjänstens tillgänglighet och nätverksförhållanden.',
// 商品模块 - 翻译商品页 // 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription', 'realtimeTranscription': 'Realtidstranskribering',
'sceneLexicon': 'Scenario Glossary', 'sceneLexicon': 'Scenarioordlista',
'subtitleDisplay': 'Subtitles', 'subtitleDisplay': 'Undertexter',
'transHeaderDesc1': 'transHeaderDesc1':
'Simultantolkning i realtid och textöversättning med låg latens.', 'Simultantolkning i realtid och textöversättning med låg latens.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', 'transHeaderDesc2': 'Lämplig för resor, affärer, tal och undervisning.',
'translateZhEn': 'Kinesisk–engelsk översättning', 'translateZhEn': 'Kinesisk–engelsk översättning',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', 'lowLatencyVoiceBroadcast': 'Röstmeddelanden med låg latens',
'multiLangTextTranslation': 'Flerspråkig textöversättning', 'multiLangTextTranslation': 'Flerspråkig textöversättning',
'termOptimizationContextPreserve': 'termOptimizationContextPreserve':
'Terminology optimization and context preservation', 'Terminologioptimering och kontextbevarelse',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', 'lexiconTourBusinessLife': 'Resor/Affärer/Liv-ordlistor',
'personalVocabularyMemory': 'Personal vocabulary memory', 'personalVocabularyMemory': 'Personligt ordförrådsminne',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'conversationSubtitleLargeText': 'Konversationsundertexter / Stor text-läge',
'colorHighContrast': 'High color contrast', 'colorHighContrast': 'Hög färgkontrast',
'transDisclaimer': 'transDisclaimer':
'Översättningens prestanda beror på mikrofon, nätverkslatens och bakgrundsljud.', 'Översättningens prestanda beror på mikrofon, nätverkslatens och bakgrundsljud.',
// 商品模块 - 会议商品页 // 商品模块 - 会议商品页
'meetingRecording': 'Mötesinspelning', 'meetingRecording': 'Mötesinspelning',
'transcriptionAndSummary': 'Transcription & Summary', 'transcriptionAndSummary': 'Transkribering & Sammanfattning',
'keywordSearch': 'Keyword Search', 'keywordSearch': 'Nyckelordssökning',
'collaborationSharing': 'Collaboration & Sharing', 'collaborationSharing': 'Samarbete & Delning',
'meetingHeaderDesc1': 'meetingHeaderDesc1':
'Ljudinspelning, transkribering, nyckelordssökning och automatisk sammanfattning för att öka möteseffektiviteten.', 'Ljudinspelning, transkribering, nyckelordssökning och automatisk sammanfattning för att öka möteseffektiviteten.',
'meetingHeaderDesc2': 'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.', 'Lämplig för affärsmöten, lektionsanteckningar och intervjuprotokoll.',
'meetingAutoRecording': 'Automatisk inspelning och segmentering', 'meetingAutoRecording': 'Automatisk inspelning och segmentering',
'meetingSpeakerTagging': 'Speaker labeling', 'meetingSpeakerTagging': 'Talaridentifiering',
'meetingLongAudioTranscription': 'Long audio transcription', 'meetingLongAudioTranscription': 'Transkribering av långa ljud',
'meetingKeyPointSummary': 'Key point extraction', 'meetingKeyPointSummary': 'Extraktion av nyckelpoäng',
'meetingTopicNameSearch': 'Search by topic/name', 'meetingTopicNameSearch': 'Sök efter ämne/namn',
'meetingTimelineJump': 'Timeline jump', 'meetingTimelineJump': 'Tidslinjebyte',
'meetingExportSummary': 'Export minutes', 'meetingExportSummary': 'Exportera protokoll',
'meetingMultiPlatformShare': 'Share across platforms', 'meetingMultiPlatformShare': 'Dela på flera plattformar',
'meetingDisclaimer': 'meetingDisclaimer':
'Använd i tysta miljöer; prestanda beror på mikrofon och nätverk.', 'Använd i tysta miljöer; prestanda beror på mikrofon och nätverk.',
// 商品模块 - VIP会员页 // 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview', 'benefitsOverview': 'Förmånsöversikt',
'higherQuota': 'Higher usage quota', 'higherQuota': 'Högre användningskvot',
'lowerUnitPrice': 'Lower unit price', 'lowerUnitPrice': 'Lägre enhetspris',
'priorityService': 'Priority service', 'priorityService': 'Prioriterad service',
'exclusiveSupportChannel': 'Dedicated support channel', 'exclusiveSupportChannel': 'Dedikerad supportkanal',
'fastResponse': 'Fast issue response', 'fastResponse': 'Snabb problemlösning',
'eventsAndDiscounts': 'Events and discounts', 'eventsAndDiscounts': 'Evenemang och rabatter',
'memberExclusiveEvents': 'Member-exclusive events', 'memberExclusiveEvents': 'Exklusiva medlemsevenemang',
'longTermDiscountPlan': 'Long-term discount plan', 'longTermDiscountPlan': 'Långtidsrabattplan',
'generalPrivileges': 'General privileges', 'generalPrivileges': 'Allmänna privilegier',
'earlyAccessNewFeatures': 'Early access to new features', 'earlyAccessNewFeatures': 'Tidig tillgång till nya funktioner',
'crossDeviceSync': 'Synkronisering mellan enheter', 'crossDeviceSync': 'Synkronisering mellan enheter',
'vipDisclaimer': 'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.', 'Faktiska förmåner beror på paketdetaljerna och kan ändras med versioner.',
// 商品模块 - 商品名称与描述 // 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100', 'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500', 'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000', 'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100', 'meet_001_name': 'Möte Bas 100',
'meet_002_name': 'Meeting Basic 500', 'meet_002_name': 'Möte Bas 500',
'meet_003_name': 'Meeting Basic 1000', 'meet_003_name': 'Möte Bas 1000',
'trans_001_name': 'Översättning Bas 100', 'trans_001_name': 'Översättning Bas 100',
'trans_002_name': 'Översättning Bas 500', 'trans_002_name': 'Översättning Bas 500',
'trans_003_name': 'Översättning Bas 1000', 'trans_003_name': 'Översättning Bas 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.', 'ai_001_desc':
'ai_002_desc': 'Includes 500 uses. Access core AI features.', 'Inkluderar 100 användningar. Tillgång till kärn-AI-funktioner.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.', 'ai_002_desc':
'Inkluderar 500 användningar. Tillgång till kärn-AI-funktioner.',
'ai_003_desc':
'Inkluderar 1000 användningar. Tillgång till kärn-AI-funktioner.',
'meet_001_desc': 'Inkluderar 100 mötesinspelningar/transkriptioner.', 'meet_001_desc': 'Inkluderar 100 mötesinspelningar/transkriptioner.',
'meet_002_desc': 'Inkluderar 500 mötesinspelningar/transkriptioner.', 'meet_002_desc': 'Inkluderar 500 mötesinspelningar/transkriptioner.',
'meet_003_desc': 'Inkluderar 1000 mötesinspelningar/transkriptioner.', 'meet_003_desc': 'Inkluderar 1000 mötesinspelningar/transkriptioner.',
@ -442,40 +446,41 @@ const Map<String, String> svSE = {
// 新手引导 // 新手引导
'skip': 'Hoppa över', 'skip': 'Hoppa över',
'next': 'Next', 'next': 'Nästa',
'sayLilyHint': 'Say "Lily Lily" to the mic', 'sayLilyHint': 'Säg Lily Lily till mikrofonen',
'imHere': 'I’m here~', 'imHere': 'Jag är här~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', 'guideWelcomeWakeAI': 'Välkommen till Voitrans! Väck först din AI Lily.',
'aiReplyCompleted': 'Lily has finished the reply!', 'aiReplyCompleted': 'Lily har avslutat svaret!',
'aiThinking': 'Lily is thinking…', 'aiThinking': 'Lily tänker...',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'guideAwakenSuccess': 'Bra! Lily är vaken - be om hjälp.',
'confirmInput': 'Confirm Input', 'confirmInput': 'Bekräfta inmatning',
'guideClickSendPrefix': 'Tap send, ', 'guideClickSendPrefix': 'Tryck på skicka, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherStart': 'Säg till Lily: Hur är vädret idag?',
'guideWeatherInput': 'What’s the weather today?', 'guideWeatherInput': 'Hur är vädret idag?',
'guideWeatherSend': 'Lily will report the weather in real time', 'guideWeatherSend': 'Lily rapporterar vädret i realtid',
'guideWeatherEnd': 'Lily can report weather live—try other commands', 'guideWeatherEnd': 'Lily kan rapportera väder live - prova andra kommandon',
'guideMusicStart': 'Tell Lily: “Play some rock music”', 'guideMusicStart': 'Säg till Lily: Spela lite rockmusik',
'guideMusicInput': 'Play some rock music', 'guideMusicInput': 'Spela lite rockmusik',
'guideMusicSend': 'Lily will find music for you', 'guideMusicSend': 'Lily hittar musik åt dig',
'guideMusicEnd': 'Lily found music—try other commands', 'guideMusicEnd': 'Lily hittade musik - prova andra kommandon',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', 'guideNavStart': 'Säg till Lily: Navigera till Shenzhen Airport',
'guideNavInput': 'Navigate to Shenzhen Airport', 'guideNavInput': 'Navigera till Shenzhen Airport',
'guideNavSend': 'Lily will plan the route', 'guideNavSend': 'Lily planerar rutten',
'guideNavEnd': 'Navigation set—try other commands', 'guideNavEnd': 'Navigering inställd - prova andra kommandon',
'guideMeetingStart': 'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', 'Säg till Lily: Skapa en mötespåminnelse för imorgon kl. 15',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', 'guideMeetingInput': 'Skapa en mötespåminnelse för imorgon kl. 15',
'guideMeetingSend': 'Lily will create a meeting reminder', 'guideMeetingSend': 'Lily skapar en mötespåminnelse',
'guideMeetingEnd': 'Reminder created—try other commands', 'guideMeetingEnd': 'Påminnelse skapad - prova andra kommandon',
'guidePhoneStart': 'Tell Lily: “Call Mom”', 'guidePhoneStart': 'Säg till Lily: Ring mamma',
'guidePhoneInput': 'Call Mom', 'guidePhoneInput': 'Ring mamma',
'guidePhoneSend': 'Lily will make the call', 'guidePhoneSend': 'Lily ringer samtalet',
'guidePhoneEnd': 'Call placed—try other commands', 'guidePhoneEnd': 'Samtal kopplat - prova andra kommandon',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', 'guideSmsStart':
'guideSmsInput': 'Text Dad: I’ll be home for dinner', 'Säg till Lily: Skicka ett SMS till pappa: Jag kommer hem till middag',
'guideSmsSend': 'Lily will send the message', 'guideSmsInput': 'SMS till pappa: Jag kommer hem till middag',
'guideSmsEnd': 'Message sent—voice control is convenient', 'guideSmsSend': 'Lily skickar meddelandet',
'guideSmsEnd': 'Meddelande skickat - röststyrning är bekvämt',
// Meeting模块 - 首页与导航 // Meeting模块 - 首页与导航
"startMeeting": "Starta möte", "startMeeting": "Starta möte",
@ -505,9 +510,9 @@ const Map<String, String> svSE = {
'aiPenNotFound': 'AI PEN-enhet hittades inte', 'aiPenNotFound': 'AI PEN-enhet hittades inte',
'connectedToAiPen': 'Ansluten till AI PEN-enhet', 'connectedToAiPen': 'Ansluten till AI PEN-enhet',
'checkingNewFiles': 'Söker efter nya filer att importera', 'checkingNewFiles': 'Söker efter nya filer att importera',
'startingWifi': 'Starting Wi-Fi...', 'startingWifi': 'Startar Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import', 'newFilesDetected': 'Nya filer hittades, förbereder import',
'noNewFiles': 'No new files to import', 'noNewFiles': 'Inga nya filer att importera',
'connectingWifi': 'Ansluter till Wi‑Fi...', 'connectingWifi': 'Ansluter till Wi‑Fi...',
'wifiConnected': 'Wi‑Fi anslutet', 'wifiConnected': 'Wi‑Fi anslutet',
'downloadingFiles': 'Laddar ner filer...', 'downloadingFiles': 'Laddar ner filer...',
@ -521,7 +526,7 @@ const Map<String, String> svSE = {
'liveRecording': 'Liveinspelning', 'liveRecording': 'Liveinspelning',
'audioVideoRecording': 'Ljud-/videoinspelning', 'audioVideoRecording': 'Ljud-/videoinspelning',
'callRecording': 'Samtalsinspelning', 'callRecording': 'Samtalsinspelning',
'importAudio': 'Import Audio', 'importAudio': 'Importera ljud',
'meetingRecordExitTitle': 'Avsluta inspelning', // 退出录音 'meetingRecordExitTitle': 'Avsluta inspelning', // 退出录音
'meetingRecordExitMessage': 'Välj en åtgärd efter att ha lämnat', // 请选择离开后的操作 'meetingRecordExitMessage': 'Välj en åtgärd efter att ha lämnat', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Avsluta och spara', // 结束录音并保存 'meetingRecordEndAndSave': 'Avsluta och spara', // 结束录音并保存
@ -544,30 +549,30 @@ const Map<String, String> svSE = {
'För att visa den flytande inspelningsraden (timer/paus/fortsätt) under inspelning behöver vi behörigheten för flytande fönster.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'För att visa den flytande inspelningsraden (timer/paus/fortsätt) under inspelning behöver vi behörigheten för flytande fönster.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed': 'overlayPermissionOpenSettingsFailed':
'Det gick inte att öppna systeminställningarna automatiskt. Öppna Inställningar och aktivera behörigheten för flytande fönster manuellt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'Det gick inte att öppna systeminställningarna automatiskt. Öppna Inställningar och aktivera behörigheten för flytande fönster manuellt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transkriberar...',
'summarizing': 'Summarizing...', 'summarizing': 'Sammanfattar...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyserar...',
'summaryComplete': 'Summary Complete', 'summaryComplete': 'Sammanfattning klar',
'generate': 'Generate', 'generate': 'Generera',
'overview': 'Overview', 'overview': 'Översikt',
'transcription': 'Transcription', 'transcription': 'Transkription',
'summary': 'Summary', 'summary': 'Sammanfattning',
'mindMap': 'Mind Map', 'mindMap': 'Tankekarta',
'editSpeaker': 'Edit', 'editSpeaker': 'Redigera',
'nameSpeaker': 'Name Speaker', 'nameSpeaker': 'Namnge talare',
// Meeting模块 - 转写与总结 // Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize', 'reSummarize': 'Sammanfatta på nytt',
'dateAndTime': 'Date & Time', 'dateAndTime': 'Datum och tid',
'location': 'Location', 'location': 'Plats',
'attendees': 'Attendees', 'attendees': 'Deltagare',
'inputLocation': 'Enter Location', 'inputLocation': 'Ange plats',
'inputAttendees': 'Enter Attendees', 'inputAttendees': 'Ange deltagare',
// Meeting模块 - 模版与生成 // Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Välj sammanfattningsmall',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Använd den här mallen',
'lastUsed': 'Last Used', 'lastUsed': 'Senast använd',
'create': 'Skapa', 'create': 'Skapa',
'templateDetails': 'Malldetaljer', 'templateDetails': 'Malldetaljer',
'tag': 'Tagg', 'tag': 'Tagg',
@ -586,7 +591,7 @@ const Map<String, String> svSE = {
'pleaseEnter': 'Vänligen ange', 'pleaseEnter': 'Vänligen ange',
'viewAll': 'Visa alla', 'viewAll': 'Visa alla',
'recordingLanguage': 'Inspelningsspråk', 'recordingLanguage': 'Inspelningsspråk',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Kinesiska mandarin (förenklad)',
'meetingGenerateNow': 'Generera nu', 'meetingGenerateNow': 'Generera nu',
'keyEventsAnalyzed': 'Analyserade {count} nyckelhändelser.', 'keyEventsAnalyzed': 'Analyserade {count} nyckelhändelser.',
'aiAnalysisDesc': 'aiAnalysisDesc':
@ -600,8 +605,8 @@ const Map<String, String> svSE = {
'importSuccess': 'Importerade {count} lokala inspelningar', 'importSuccess': 'Importerade {count} lokala inspelningar',
'importError': 'Import misslyckades: {error}', 'importError': 'Import misslyckades: {error}',
'pleaseSelectAudioFile': 'Välj en ljudfil', 'pleaseSelectAudioFile': 'Välj en ljudfil',
'shareAudio': 'Share Meeting Audio', 'shareAudio': 'Dela mötesljud',
'shareComplete': 'Share complete!', 'shareComplete': 'Delning klar!',
'shareFailed': 'Delning misslyckades: {error}', 'shareFailed': 'Delning misslyckades: {error}',
'fileProcessingFailed': 'fileProcessingFailed':
'Filbearbetning misslyckades: {filePath}, fel: {error}', 'Filbearbetning misslyckades: {filePath}, fel: {error}',
@ -658,88 +663,89 @@ const Map<String, String> svSE = {
'enabled': 'Aktiverad', 'enabled': 'Aktiverad',
'disabled': 'Inaktiverad', 'disabled': 'Inaktiverad',
'myVoitransDevice': 'Min VOITRANS-enhet', 'myVoitransDevice': 'Min VOITRANS-enhet',
'helpAndFeedback': 'Help & Feedback', 'helpAndFeedback': 'Hjälp och feedback',
'aboutVoitrans': 'About VOITRANS', 'aboutVoitrans': 'Om VOITRANS',
'meetingDays': 'Dagar', 'meetingDays': 'Dagar',
'meetingHours': 'Timmar', 'meetingHours': 'Timmar',
'voitransAiMember': 'Voitrans AI Member', 'voitransAiMember': 'Voitrans AI-medlem',
'unlockStarterMember': 'Unlock Starter Member', 'unlockStarterMember': 'Lås upp Starter-medlemskap',
'bindDeviceToActivate': 'bindDeviceToActivate':
'Koppla Voitrans-enhet för att aktivera Starter-medlemskap', 'Koppla Voitrans-enhet för att aktivera Starter-medlemskap',
'unlockNow': 'Lås upp nu', 'unlockNow': 'Lås upp nu',
// Meeting模块 - 会员与升级 // Meeting模块 - 会员与升级
'comparison': 'Comparison', 'comparison': 'Jämförelse',
'detailedInfo': 'Detailed Information', 'detailedInfo': 'Detaljerad information',
'monthlyTranscriptionTime': 'Monthly Transcription Time', 'monthlyTranscriptionTime': 'Månatlig transkriptionstid',
'unlimited': 'Unlimited', 'unlimited': 'Obegränsat',
'professionalTemplates': 'Professional Templates', 'professionalTemplates': 'Professionella mallar',
'limited': 'Limited', 'limited': 'Limited',
'fullTemplates': 'Full Templates', 'fullTemplates': 'Alla mallar',
'professionalTerms': 'Professional Terms', 'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates', 'customTemplates': 'Anpassade mallar',
'visualMindMap': 'Visual Mind Map', 'visualMindMap': 'Visuell tankekarta',
'speakerIdentification': 'Speaker Identification', 'speakerIdentification': 'Talarigenkänning',
'aiVoiceEnhancement': 'AI Voice Enhancement', 'aiVoiceEnhancement': 'AI‑röstförbättring',
'audioImport': 'Audio Import', 'audioImport': 'Ljudimport',
'multipleExportFormats': 'Multiple Export Formats', 'multipleExportFormats': 'Flera exportformat',
'professionalSummaryTemplates': 'Professional Summary Templates', 'professionalSummaryTemplates': 'Professionella sammanfattningsmallar',
'professionalTemplateDesc': 'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.', 'Professionella mallar som ökar arbetseffektiviteten. Anpassade efter branschens behov.',
'customTemplateDesc': 'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc': 'askAiDesc':
'Extraherar intelligent djupare information från inspelningar och skapar med ett klick datatabeller, viktiga diskussionsslutsatser, att-göra-listor, rapportmejl och annat formaterat innehåll.', 'Extraherar intelligent djupare information från inspelningar och skapar med ett klick datatabeller, viktiga diskussionsslutsatser, att-göra-listor, rapportmejl och annat formaterat innehåll.',
'visualMindMapDesc': 'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'Mer än sammanfattningar: organisera och visualisera nyckelpunkter med tankekartor för bättre förståelse av hela texten.',
'templateCommunityDesc': 'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.', 'Upptäck, dela och få inspiration från mallbiblioteket som skapats av användare.',
'speakerIdentificationDesc': 'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.', 'Ljudtranskription kommer att stödja talarigenkänning för att mer intuitivt återskapa innehåll från möten eller telefonsamtal. Samtidigt blir sammanfattningen mer träffsäker.',
'privateCloudSyncDesc': 'privateCloudSyncDesc':
'Dina inspelningar och transkriptioner lagras säkert på dedikerade molnservrar, med full kryptering vid uppladdning och nedladdning för att säkerställa integritet och säkerhet.', 'Dina inspelningar och transkriptioner lagras säkert på dedikerade molnservrar, med full kryptering vid uppladdning och nedladdning för att säkerställa integritet och säkerhet.',
'aiVoiceEnhancementDesc': 'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'AI‑röstförbättring stöder flera inställningar för brusreducering, eliminerar bakgrundsljud intelligent, förbättrar rösttydlighet och höjer ljuduppspelningskvaliteten.',
'audioImportDesc': 'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'Importera enkelt ljudfiler från lokala eller tredjepartsappar, till exempel röstanteckningar, Google Drive osv.',
'multipleExportFormatsDesc': 'multipleExportFormatsDesc':
'Exportera dina ljudinspelningar, transkript och sammanfattningar i olika format (TXT, PDF, JPEG) efter behov.', 'Exportera dina ljudinspelningar, transkript och sammanfattningar i olika format (TXT, PDF, JPEG) efter behov.',
'upgradeMembership': 'Upgrade Your Membership', 'upgradeMembership': 'Uppgradera medlemskapet',
'yearlySubscription': 'Yearly Subscription', 'yearlySubscription': 'Årsabonnemang',
'monthlySubscription': 'Monthly Subscription', 'monthlySubscription': 'Månadsabonnemang',
'proMonthly': 'Pro ¥60/month', 'proMonthly': 'Pro ¥60/månad',
'proMonthlyDesc': 'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.', '7 dagars gratis provperiod, därefter ¥800/år. Avsluta när som helst innan provperioden slutar.',
'sevenDayTrial': '7-day Free Trial', 'sevenDayTrial': '7 dagars gratis provperiod',
'unlimitedMonthly': 'Unlimited ¥120/month', 'unlimitedMonthly': 'Obegränsat ¥120/månad',
'unlimitedMonthlyDesc': 'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', '7 dagars gratis provperiod, därefter ¥1600/år. Avsluta när som helst innan provperioden slutar.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', 'trialNote':
'*Gratis provperiod i 7 dagar, därefter debitering årligen. Avsluta när som helst.',
'proPrice': 'Pro ¥120', 'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month', 'proMonthlyPrice': '¥120/månad',
'subscribe': 'Subscribe', 'subscribe': 'Prenumerera',
'unlimitedPrice': 'Unlimited ¥198', 'unlimitedPrice': 'Obegränsat ¥198',
'unlimitedMonthlyPrice': '¥198/month', 'unlimitedMonthlyPrice': '¥198/månad',
'upgradeNote': 'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account', '*Efter uppgradering av prenumerationen beräknas återstående dagar av den ursprungliga prenumerationen automatiskt och återbetalas till ditt betalningskonto',
'buyMoreTranscriptionTime': 'Buy More Transcription Time', 'buyMoreTranscriptionTime': 'Köp mer transkriptionstid',
'sixThousandMinutes': '6,000 minutes', 'sixThousandMinutes': '6 000 minuter',
'threeThousandMinutes': '3,000 minutes', 'threeThousandMinutes': '3 000 minuter',
'sixHundredMinutes': '600 minutes', 'sixHundredMinutes': '600 minuter',
'oneHundredTwentyMinutes': '120 minutes', 'oneHundredTwentyMinutes': '120 minuter',
'validityPeriod': '*Validity Period: ', 'validityPeriod': '*Giltighetsperiod: ',
'validityNote': 'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.', 'Aktiveras omedelbart efter köp och är giltig i 2 år efter aktivering.',
'purchase': 'Purchase', 'purchase': 'Köp',
// Meeting模块 - 录音语言 // Meeting模块 - 录音语言
'recordLanguage': 'Inspelningsspråk', 'recordLanguage': 'Inspelningsspråk',
'cantonese': 'Cantonese', 'cantonese': 'Kantonesiska',
'sichuan': 'Sichuan Dialect', 'sichuan': 'Sichuan-dialekt',
'shanghai': 'Shanghai Dialect', 'shanghai': 'Shanghai-dialekt',
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Okänt språk',
'analysisFailed': 'Analysen misslyckades, försök igen senare', 'analysisFailed': 'Analysen misslyckades, försök igen senare',
'transcriptionFailed': 'Transkribering misslyckades, försök igen senare', 'transcriptionFailed': 'Transkribering misslyckades, försök igen senare',
'summaryFailed': 'Sammanfattning misslyckades, försök igen senare', 'summaryFailed': 'Sammanfattning misslyckades, försök igen senare',

22
test/sv_se_translations_test.dart

@ -0,0 +1,22 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:voitrans/core/translations/language/en_us.dart';
import 'package:voitrans/core/translations/language/sv_se.dart';
void main() {
test('svSE can be imported and accessed', () {
expect(svSE, isNotEmpty);
expect(svSE['continue'], isNotNull);
});
test('svSE has the same translation keys as enUS', () {
expect(svSE.keys.toSet(), equals(enUS.keys.toSet()));
});
test('svSE has no empty values', () {
final emptyKeys = svSE.entries
.where((entry) => entry.value.trim().isEmpty)
.map((entry) => entry.key)
.toList(growable: false);
expect(emptyKeys, isEmpty);
});
}
Loading…
Cancel
Save