Split i18n catalogues into per-domain modules
sv.ts/en.ts were single 602-line files that every feature had to edit,
making concurrent work on unrelated screens collide constantly. Split
both into per-domain modules (common, auth, calendar, dashboard,
settings, plan, wishEditor, tips) composed by an index that preserves
the existing `import { sv } from './sv'` specifier, so no consumer
changes.
Typing still catches drift in both directions: each en module is checked
against TranslationKey, and the composed catalogue must satisfy
Record<TranslationKey, string>.
All 433 keys and their values are byte-identical to the originals,
verified by diffing the parsed catalogues against the pre-split files.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RXMhc9nT6sNz1SL4j8dznL
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
export const settings = {
|
||||
'childBirthdayInput.birthDateLabel': 'Date of birth',
|
||||
'childBirthdayInput.defaultLabel': 'Child\'s birth date',
|
||||
'childBirthdayInput.preschoolStartLabel': 'Preschool start (optional)',
|
||||
'dayOverridesInput.addButton': 'Add exception',
|
||||
'dayOverridesInput.addSectionTitle': 'Add exception',
|
||||
'dayOverridesInput.addingButton': 'Adding...',
|
||||
'dayOverridesInput.charCount': '{count}/280',
|
||||
'dayOverridesInput.dateLabel': 'Date',
|
||||
'dayOverridesInput.empty': 'You have no calendar exceptions yet.',
|
||||
'dayOverridesInput.noteFieldLabel': 'Note (optional)',
|
||||
'dayOverridesInput.noteLabel': 'Note: {note}',
|
||||
'dayOverridesInput.notePlaceholder': 'E.g. Worked on Christmas Day',
|
||||
'dayOverridesInput.offStatus': 'I\'m off this day',
|
||||
'dayOverridesInput.statusLegend': 'Status',
|
||||
'dayOverridesInput.workingStatus': 'I\'m working this day',
|
||||
'manualFetchModal.cancelButton': 'Cancel',
|
||||
'manualFetchModal.closeAria': 'Close',
|
||||
'manualFetchModal.daysRemaining': 'Days remaining:',
|
||||
'manualFetchModal.daysUsedLabel': 'Days used',
|
||||
'manualFetchModal.description': 'Enter your parental leave information from Försäkringskassan manually if automatic fetching is unavailable.',
|
||||
'manualFetchModal.dubbeldagarLabel': 'Dubbeldagar left (0-60)',
|
||||
'manualFetchModal.lagstaUsedLabel': 'Lägstanivå (minimum-rate, 90-day tier) used',
|
||||
'manualFetchModal.remainingBreakdownTitle': 'Remaining Days Breakdown',
|
||||
'manualFetchModal.reservedDaysLabel': 'Reserved days left',
|
||||
'manualFetchModal.saveButton': 'Save',
|
||||
'manualFetchModal.saveError': 'Failed to save manual data',
|
||||
'manualFetchModal.savingButton': 'Saving…',
|
||||
'manualFetchModal.sjukpenningUsedLabel': 'Sjukpenningnivå (income-based, 390-day tier) used',
|
||||
'manualFetchModal.tierBreakdownTitle': 'Tier Breakdown',
|
||||
'manualFetchModal.title': 'Enter Parental Leave Data',
|
||||
'manualFetchModal.totalDaysLabel': 'Total days (0-480)',
|
||||
'manualFetchModal.totalDaysSectionTitle': 'Total Days',
|
||||
'manualFetchModal.transferableDaysLabel': 'Transferable days left',
|
||||
'parentProfileInput.employed': 'Employed',
|
||||
'parentProfileInput.employmentStatusLabel': 'Employment status',
|
||||
'parentProfileInput.hourly': 'Hourly wage',
|
||||
'parentProfileInput.jobseeking': 'Job seeking',
|
||||
'parentProfileInput.monthly': 'Monthly salary',
|
||||
'parentProfileInput.none': 'None',
|
||||
'parentProfileInput.salaryTypeLabel': 'Salary type',
|
||||
'parentProfileInput.selectEmploymentStatus': 'Select employment status',
|
||||
'parentProfileInput.selectSalaryType': 'Select salary type',
|
||||
'qrModal.authenticating': 'Authenticating…',
|
||||
'qrModal.cancelButton': 'Cancel',
|
||||
'qrModal.cancelled': 'The session was cancelled.',
|
||||
'qrModal.closeAria': 'Close modal',
|
||||
'qrModal.closeButton': 'Close',
|
||||
'qrModal.errorLabel': 'Error:',
|
||||
'qrModal.fetching': 'Fetching data from FK…',
|
||||
'qrModal.qrAlt': 'BankID QR code',
|
||||
'qrModal.qrInstruction': 'Open the BankID app and scan the QR code:',
|
||||
'qrModal.statusLabel': 'Status:',
|
||||
'qrModal.success': 'Done! Data fetched from Försäkringskassan.',
|
||||
'qrModal.title': 'Fetch from Försäkringskassan',
|
||||
'settings.addPartnerButton': 'Add partner',
|
||||
'settings.addPartnerError': 'Could not add partner',
|
||||
'settings.addPartnerSuccess': 'Partner added!',
|
||||
'settings.addingPartner': 'Adding...',
|
||||
'settings.calendarSectionTitle': 'Calendar',
|
||||
'settings.cancelButton': 'Cancel',
|
||||
'settings.childBirthDateLabel': 'Child\'s birth date',
|
||||
'settings.childSectionTitle': 'Child',
|
||||
'settings.dayOverridesHelp': 'The planner is based on the Swedish calendar (public holidays, bridge days, Christmas Eve, Midsummer Eve and Whitsun Eve are normally days off). Here you can enter exceptions for your workplace — if you have to work on Christmas Day, or are off on days that are otherwise working days.',
|
||||
'settings.dayOverridesSectionTitle': 'Calendar exceptions',
|
||||
'settings.languageAutoOption': 'Automatic (browser language)',
|
||||
'settings.languageEnglishOption': 'English',
|
||||
'settings.languageLabel': 'Välj språk / Select language',
|
||||
'settings.languageSectionTitle': 'Språk / Language',
|
||||
'settings.languageSwedishOption': 'Svenska',
|
||||
'settings.loading': 'Loading settings...',
|
||||
'settings.membersLoading': 'Loading members…',
|
||||
'settings.noChildSelected': 'No child selected yet.',
|
||||
'settings.partnerActionErrorNotFound': 'Could not find the partner. Reload the page and try again.',
|
||||
'settings.partnerIntro': 'Add a partner to plan parental leave together.',
|
||||
'settings.partnerLinkedIntro': 'Your partner is linked to this workspace.',
|
||||
'settings.partnerNameInvalid': 'The partner\'s name is invalid.',
|
||||
'settings.partnerNamePlaceholder': 'Partner\'s name',
|
||||
'settings.partnerNameRequired': 'Enter a name for the partner',
|
||||
'settings.partnerSectionTitle': 'Partner',
|
||||
'settings.planningHelp': 'Your planning goal, and whether you plan alone or together with a partner, control how the planner suggests distributing days.',
|
||||
'settings.planningSectionTitle': 'Planning',
|
||||
'settings.preschoolHelp': 'Preschools usually close for about 6 days a year for planning. Enter how many days your preschool has, so they are reserved in the plan.',
|
||||
'settings.preschoolPlanningDaysLabel': 'Preschool planning days per year',
|
||||
'settings.profileHelp': 'Your salary type and employment status are used to estimate your SGI and plan your leave.',
|
||||
'settings.profileSectionTitle': 'Your profile',
|
||||
'settings.redDaysHelp': 'A list of public holidays under the Swedish calendar, together with your own exceptions — four years at a time.',
|
||||
'settings.redDaysSectionTitle': 'Public holidays',
|
||||
'settings.removeBlockerLeaveWishes': 'leave wishes',
|
||||
'settings.removeBlockerParentalLeave': 'recorded parental leave',
|
||||
'settings.removeBlockerPlannedLeave': 'planned leave days',
|
||||
'settings.removeBlockerVacationDays': 'recorded vacation days',
|
||||
'settings.removeConfirmButton': 'Yes, remove',
|
||||
'settings.removeConfirmPrompt': 'Remove {name} from the workspace?',
|
||||
'settings.removePartnerButton': 'Remove',
|
||||
'settings.removePartnerError': 'Could not remove the partner',
|
||||
'settings.removePartnerErrorHasDependentData': 'Can\'t remove — there is recorded: {blockers}. Remove or move this first.',
|
||||
'settings.removePartnerErrorHasLogin': 'Can\'t remove — this person has their own account and login.',
|
||||
'settings.removePartnerErrorSelf': 'You can\'t remove yourself from the workspace.',
|
||||
'settings.renameButton': 'Rename',
|
||||
'settings.renamePartnerError': 'Could not rename',
|
||||
'settings.saveChildButton': 'Save child\'s details',
|
||||
'settings.saveChildError': 'Could not save the child\'s details',
|
||||
'settings.saveChildSuccess': 'Child\'s details saved!',
|
||||
'settings.savePlanningButton': 'Save planning',
|
||||
'settings.savePlanningError': 'Could not save planning settings',
|
||||
'settings.savePlanningSuccess': 'Planning settings saved!',
|
||||
'settings.saveProfileButton': 'Save your profile',
|
||||
'settings.saveProfileError': 'Could not save your profile',
|
||||
'settings.saveProfileSuccess': 'Your profile was saved!',
|
||||
'settings.saveRenameButton': 'Save name',
|
||||
'settings.saveVacationError': 'Could not save vacation days',
|
||||
'settings.saveVacationSuccess': 'Vacation days for {year} saved!',
|
||||
'settings.selectedChildLabel': 'Selected child:',
|
||||
'settings.showWeekNumbers': 'Show week numbers',
|
||||
'settings.title': 'Settings',
|
||||
'settings.vacationHelp': 'Enter vacation days per year. In the first year you are usually home more and have fewer days to spend on vacation, while later years have your full annual allotment. This controls how much time the planner has to work with.',
|
||||
'settings.vacationSectionTitle': 'Vacation days',
|
||||
'settings.youBadge': '(You)',
|
||||
'vacationDaysList.empty': 'No vacation days registered.',
|
||||
'vacationDaysList.itemDays': '{count} days',
|
||||
'vacationDaysList.loading': 'Loading vacation days…',
|
||||
'vacationDaysList.savedSuffix': '(+{count} saved)',
|
||||
'vacationDaysTable.assumedBadge': 'Assumed',
|
||||
'vacationDaysTable.assumedPrompt': 'No value is recorded for this year — the statutory 25 days has been assumed. Confirm or edit below.',
|
||||
'vacationDaysTable.empty': 'No years to show yet.',
|
||||
'vacationDaysTable.saveButton': 'Save',
|
||||
'vacationDaysTable.savedDaysHeader': 'Saved days carried in',
|
||||
'vacationDaysTable.vacationDaysHeader': 'Vacation days',
|
||||
'vacationDaysTable.yearHeader': 'Year',
|
||||
} as const
|
||||
Reference in New Issue
Block a user