feat(i18n): localise application workspace

This commit is contained in:
cesnimda
2026-08-28 20:04:11 +02:00
parent cc01540446
commit a57b2fe58c
5 changed files with 372 additions and 124 deletions
+216
View File
@@ -131,6 +131,114 @@ export const translations = {
interviewFollowUpOpenTasks: "{count} open follow-up tasks on the checklist.",
interviewFollowUpDate: "Follow up on",
interviewFollowUpEmpty: "No follow-up scheduled. Applications without one can go quiet.",
intelligenceMilestones: "Milestones",
intelligenceTimeline: "Timeline",
intelligenceTimelineSubtitle: "Everything recorded for this application, newest first.",
intelligenceTimelineEmpty: "Nothing has happened yet. Activity appears here as the application moves forward.",
intelligenceTimelineFilter: "Filter timeline by category",
intelligenceAllEvents: "All events",
intelligenceAll: "All",
intelligenceNoCategoryEvents: "No events in this category.",
intelligenceMilestone: "Milestone",
intelligenceCategoryLifecycle: "Lifecycle",
intelligenceCategoryStage: "Stage",
intelligenceCategoryFollowUp: "Follow-up",
intelligenceCategoryCommunication: "Communication",
intelligenceCategoryAi: "AI",
intelligenceRole: "Role",
intelligenceEmploymentType: "Employment type",
intelligenceSeniority: "Seniority",
intelligenceAnalysisSubtitle: "Derived directly from the current advert — no repeated AI call when the page opens.",
intelligenceNoAdvert: "No advert text saved yet. Add it to detect requirements, technologies and likely interview topics.",
intelligenceTechnologies: "Technologies",
intelligenceSkills: "Skills",
intelligenceRequirements: "Important requirements",
intelligenceResponsibilities: "Responsibilities",
intelligenceInterviewTopics: "Likely interview topics",
intelligenceNotStated: "Not stated in the advert",
intelligenceCvProfileEmpty: "The linked CV cannot be matched until its career profile contains content.",
intelligenceMatchScore: "Career match score",
intelligenceAdvertTooShort: "The advert is too short to score reliably. Add the full text for a meaningful match.",
intelligenceMatched: "Matched",
intelligenceMissing: "Missing",
intelligenceRelevantExperience: "Relevant experience",
intelligenceRelevantProjects: "Relevant projects",
intelligenceSuggestions: "Suggestions",
assetsCvSubtitle: "The CV variant used for this application. Variants tailor the master career profile without duplicating it.",
assetsNoCvVariants: "No CV variants yet. Build one in the CV builder; it starts from the master career profile, so your history stays reusable.",
assetsAttachedCv: "Attached CV variant",
assetsAttachedCvHelp: "Changing this only changes which CV the application uses. The CV itself is untouched.",
assetsNone: "None",
assetsThemeVersion: "Theme {theme} · version {version}",
assetsPublic: "public",
assetsEditPreviewExport: "Edit, preview and export",
assetsDuplicateForJob: "Duplicate for this job",
assetsNoCvAttached: "No CV is attached to this application yet.",
assetsLegacyCvText: "This application also contains legacy tailored CV text. An attached CV variant takes precedence.",
assetsTailoring: "Tailoring",
assetsTailoringSubtitle: "What to emphasise for this advert. Suggestions never edit the profile or CV.",
assetsBuildProfile: "Build your career profile to get experience and project suggestions.",
assetsAddAdvert: "Add the advert text to get keyword and requirement suggestions.",
assetsNoSuggestions: "Nothing to suggest yet.",
assetsCoverSubtitle: "Every save creates a version, so manually edited text is never overwritten without review.",
assetsCoverPlaceholder: "Write it yourself, start from the template, or generate a tailored draft.",
assetsDiscardChanges: "Discard changes",
assetsStartTemplate: "Start from template",
assetsUnsavedChanges: "Unsaved changes",
assetsVersionHistory: "Version history",
assetsNoVersions: "No versions yet. The first save starts the history.",
assetsCurrent: "Current",
assetsCharacterCount: "{count} characters",
assetsRestoreVersion: "Restore this version",
assetsRestoreVersionNumber: "Restore version {version}",
coverAiAction: "Action",
coverAiTone: "Tone",
coverActionGenerate: "Generate",
coverActionRegenerate: "Fresh alternative",
coverActionImprove: "Improve",
coverActionShorten: "Shorten",
coverActionExpand: "Add detail",
coverActionProfessional: "More professional",
coverActionNatural: "More natural",
coverActionGrammar: "Fix grammar",
coverActionTailor: "Tailor more closely",
coverToneProfessional: "Professional",
coverToneFriendly: "Friendly",
coverToneShort: "Short",
coverToneDetailed: "Detailed",
coverToneModern: "Modern",
coverToneTraditional: "Traditional",
coverAiInstructionsPlaceholder: "For example: Focus on my .NET experience and keep it concise.",
coverAiNoDraft: "No current draft",
assetsApplicationDrafts: "Application answers and recruiter message",
assetsApplicationDraftsSubtitle: "Keep reusable application-form answers and a recruiter note with this application. Ordinary notes remain separate.",
assetsApplicationAnswer: "Application answer",
assetsApplicationAnswerPlaceholder: "Draft an answer about motivation, suitability, or another application-form question.",
assetsRecruiterMessage: "Recruiter message",
assetsRecruiterMessagePlaceholder: "Draft a concise message to the recruiter or hiring manager.",
assetsSaveDrafts: "Save application drafts",
workspaceTailoredText: "Tailored text",
workspaceNotPrepared: "Not prepared",
workspaceReady: "Ready",
workspaceNotWritten: "Not written",
workspaceAttachedCount: "{count} attached",
workspaceAiSuggestions: "AI suggestions",
workspaceSavedCount: "{count} saved",
workspaceNoneYet: "None yet",
workspaceDoneCount: "{completed}/{total} done",
workspaceCountry: "Country",
workspaceSource: "Source",
workspaceDiscovered: "Discovered",
workspaceApplied: "Applied",
workspaceNotScheduled: "Not scheduled",
workspaceApplicationInfo: "Application information",
workspaceEdit: "Edit",
workspaceNotes: "Notes",
workspaceJobDescription: "Job description",
workspaceAddAdvert: "Add advert",
workspaceNoJobDescription: "No advert text is saved. Analysis and matching need the job description.",
workspaceTranslatedAdvert: "Translated advert",
workspaceOriginalAdvert: "Original advert",
notFoundTitle: "Page not found",
notFoundBody: "The page you were looking for does not exist or may have moved.",
appErrorTitle: "Something went wrong",
@@ -1398,6 +1506,114 @@ export const translations = {
interviewFollowUpOpenTasks: "{count} åpne oppfølgingsoppgaver i sjekklisten.",
interviewFollowUpDate: "Følg opp den",
interviewFollowUpEmpty: "Ingen oppfølging er planlagt. Søknader uten oppfølging kan bli stille.",
intelligenceMilestones: "Milepæler",
intelligenceTimeline: "Tidslinje",
intelligenceTimelineSubtitle: "Alt som er registrert for søknaden, nyeste først.",
intelligenceTimelineEmpty: "Ingenting har skjedd ennå. Aktivitet vises her når søknaden går videre.",
intelligenceTimelineFilter: "Filtrer tidslinjen etter kategori",
intelligenceAllEvents: "Alle hendelser",
intelligenceAll: "Alle",
intelligenceNoCategoryEvents: "Ingen hendelser i denne kategorien.",
intelligenceMilestone: "Milepæl",
intelligenceCategoryLifecycle: "Livssyklus",
intelligenceCategoryStage: "Stadium",
intelligenceCategoryFollowUp: "Oppfølging",
intelligenceCategoryCommunication: "Kommunikasjon",
intelligenceCategoryAi: "AI",
intelligenceRole: "Rolle",
intelligenceEmploymentType: "Ansettelsesform",
intelligenceSeniority: "Erfaringsnivå",
intelligenceAnalysisSubtitle: "Utledet direkte fra gjeldende annonse — ingen gjentatt AI-kall når siden åpnes.",
intelligenceNoAdvert: "Ingen annonsetekst er lagret ennå. Legg den til for å finne krav, teknologier og sannsynlige intervjutemaer.",
intelligenceTechnologies: "Teknologier",
intelligenceSkills: "Ferdigheter",
intelligenceRequirements: "Viktige krav",
intelligenceResponsibilities: "Arbeidsoppgaver",
intelligenceInterviewTopics: "Sannsynlige intervjutemaer",
intelligenceNotStated: "Ikke oppgitt i annonsen",
intelligenceCvProfileEmpty: "Den tilknyttede CV-en kan ikke sammenlignes før karriereprofilen inneholder data.",
intelligenceMatchScore: "Samsvar mellom CV og jobb",
intelligenceAdvertTooShort: "Annonsen er for kort til å gi en pålitelig vurdering. Legg til hele teksten for et meningsfylt samsvar.",
intelligenceMatched: "Samsvarer",
intelligenceMissing: "Mangler",
intelligenceRelevantExperience: "Relevant erfaring",
intelligenceRelevantProjects: "Relevante prosjekter",
intelligenceSuggestions: "Forslag",
assetsCvSubtitle: "CV-varianten som brukes for denne søknaden. Varianter tilpasser karriereprofilen uten å duplisere den.",
assetsNoCvVariants: "Ingen CV-varianter ennå. Bygg en i CV-byggeren; den starter fra karriereprofilen, slik at historikken kan gjenbrukes.",
assetsAttachedCv: "Tilknyttet CV-variant",
assetsAttachedCvHelp: "Dette endrer bare hvilken CV søknaden bruker. Selve CV-en forblir urørt.",
assetsNone: "Ingen",
assetsThemeVersion: "Tema {theme} · versjon {version}",
assetsPublic: "offentlig",
assetsEditPreviewExport: "Rediger, forhåndsvis og eksporter",
assetsDuplicateForJob: "Dupliser for denne jobben",
assetsNoCvAttached: "Ingen CV er tilknyttet søknaden ennå.",
assetsLegacyCvText: "Søknaden inneholder også eldre tilpasset CV-tekst. En tilknyttet CV-variant har prioritet.",
assetsTailoring: "Tilpasning",
assetsTailoringSubtitle: "Hva som bør fremheves for annonsen. Forslag redigerer aldri profilen eller CV-en.",
assetsBuildProfile: "Bygg karriereprofilen for å få forslag til erfaring og prosjekter.",
assetsAddAdvert: "Legg til annonseteksten for å få forslag til nøkkelord og krav.",
assetsNoSuggestions: "Ingen forslag ennå.",
assetsCoverSubtitle: "Hver lagring oppretter en versjon, slik at manuelt redigert tekst aldri overskrives uten gjennomgang.",
assetsCoverPlaceholder: "Skriv selv, start fra malen eller generer et tilpasset utkast.",
assetsDiscardChanges: "Forkast endringer",
assetsStartTemplate: "Start fra mal",
assetsUnsavedChanges: "Ulagrede endringer",
assetsVersionHistory: "Versjonshistorikk",
assetsNoVersions: "Ingen versjoner ennå. Første lagring starter historikken.",
assetsCurrent: "Gjeldende",
assetsCharacterCount: "{count} tegn",
assetsRestoreVersion: "Gjenopprett denne versjonen",
assetsRestoreVersionNumber: "Gjenopprett versjon {version}",
coverAiAction: "Handling",
coverAiTone: "Tone",
coverActionGenerate: "Generer",
coverActionRegenerate: "Nytt alternativ",
coverActionImprove: "Forbedre",
coverActionShorten: "Gjør kortere",
coverActionExpand: "Legg til detaljer",
coverActionProfessional: "Mer profesjonell",
coverActionNatural: "Mer naturlig",
coverActionGrammar: "Rett grammatikk",
coverActionTailor: "Tilpass tettere",
coverToneProfessional: "Profesjonell",
coverToneFriendly: "Vennlig",
coverToneShort: "Kort",
coverToneDetailed: "Detaljert",
coverToneModern: "Moderne",
coverToneTraditional: "Tradisjonell",
coverAiInstructionsPlaceholder: "For eksempel: Fokuser på .NET-erfaringen min og hold brevet kort.",
coverAiNoDraft: "Ingen gjeldende kladd",
assetsApplicationDrafts: "Søknadssvar og melding til rekrutterer",
assetsApplicationDraftsSubtitle: "Lagre gjenbrukbare søknadssvar og en rekrutterermelding med søknaden. Vanlige notater forblir separate.",
assetsApplicationAnswer: "Søknadssvar",
assetsApplicationAnswerPlaceholder: "Skriv et svar om motivasjon, egnethet eller et annet spørsmål i søknadsskjemaet.",
assetsRecruiterMessage: "Melding til rekrutterer",
assetsRecruiterMessagePlaceholder: "Skriv en kort melding til rekruttereren eller ansettelsesansvarlig.",
assetsSaveDrafts: "Lagre søknadsutkast",
workspaceTailoredText: "Tilpasset tekst",
workspaceNotPrepared: "Ikke forberedt",
workspaceReady: "Klar",
workspaceNotWritten: "Ikke skrevet",
workspaceAttachedCount: "{count} vedlagt",
workspaceAiSuggestions: "AI-forslag",
workspaceSavedCount: "{count} lagret",
workspaceNoneYet: "Ingen ennå",
workspaceDoneCount: "{completed}/{total} ferdig",
workspaceCountry: "Land",
workspaceSource: "Kilde",
workspaceDiscovered: "Oppdaget",
workspaceApplied: "Søkt",
workspaceNotScheduled: "Ikke planlagt",
workspaceApplicationInfo: "Søknadsinformasjon",
workspaceEdit: "Rediger",
workspaceNotes: "Notater",
workspaceJobDescription: "Stillingsbeskrivelse",
workspaceAddAdvert: "Legg til annonse",
workspaceNoJobDescription: "Ingen annonsetekst er lagret. Analyse og samsvar trenger stillingsbeskrivelsen.",
workspaceTranslatedAdvert: "Oversatt annonse",
workspaceOriginalAdvert: "Original annonse",
notFoundTitle: "Siden ble ikke funnet",
notFoundBody: "Siden du lette etter finnes ikke eller kan ha blitt flyttet.",
appErrorTitle: "Noe gikk galt",