Browse Source

fix(i18n): Swedish placeholders in sv_SE

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