Merge origin/main into improvement-dashboard-customization

Resolve sv.json conflict: take Swedish subcategory translations from
main and loan keys from PR branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ulas Kalayci
2026-05-01 17:42:23 +02:00
18 changed files with 666 additions and 185 deletions
+131 -95
View File
@@ -199,7 +199,8 @@
"archivedToast": "Uppgiften arkiverades.",
"kanbanArchived": "Arkiverad",
"reminderNeedsDueDate": "Ange ett förfallodatum för att aktivera påminnelser för uppgiften.",
"emptyAction": "Skapa uppgift"
"emptyAction": "Skapa uppgift",
"navLabelOverdue": "Uppgifter, {{count}} försenade"
},
"shopping": {
"title": "Shopping",
@@ -295,7 +296,7 @@
"savedRecipePlaceholder": "Välj recept",
"saveAsRecipe": "Spara som recept",
"recipeScaleLabel": "Skala ingredienser",
"deletedToast": "Meal deleted"
"deletedToast": "Måltid borttagen"
},
"calendar": {
"title": "Kalender",
@@ -372,13 +373,23 @@
"reset": "Återställ till original",
"resetToast": "Ändringar återställda."
},
"iconLabel": "Icon",
"invalidDate": "Use a valid date in the selected date format.",
"attachmentLabel": "Attachment",
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
"attachmentFallback": "Attachment",
"attachmentReadError": "The attachment could not be read.",
"attachmentTooLarge": "Attachment may be at most 5 MB."
"iconLabel": "Ikon",
"invalidDate": "Använd ett giltigt datum i det valda datumformatet.",
"attachmentLabel": "Fastsättning",
"attachmentHint": "Bifoga en lokal bild, PDF eller dokument. Bilder kommer att visas i evenemangets popup.",
"attachmentFallback": "Fastsättning",
"attachmentReadError": "Bilagan kunde inte läsas.",
"attachmentTooLarge": "Bilaga får vara högst 5 MB.",
"colorBlue": "Blå",
"colorGreen": "Grön",
"colorOrange": "Orange",
"colorRed": "Röd",
"colorPurple": "Lila",
"colorCoral": "Korall",
"colorSkyBlue": "Himmelsblå",
"colorYellow": "Gul",
"colorGray": "Grå",
"colorCyan": "Cyan"
},
"notes": {
"title": "Anteckningar",
@@ -417,7 +428,15 @@
"formatCode": "Kod",
"formatQuote": "Citationstecken",
"formatDivider": "Delare",
"emptyAction": "Skapa anteckning"
"emptyAction": "Skapa anteckning",
"colorYellow": "Gul",
"colorAmber": "Amber",
"colorGreen": "Grön",
"colorTeal": "Teal",
"colorBlue": "Blå",
"colorPurple": "Lila",
"colorOrange": "Orange",
"colorWhite": "Vit"
},
"contacts": {
"title": "Kontakter",
@@ -524,53 +543,53 @@
"catGovernmentBenefits": "Socialförmåner",
"catOtherIncome": "Övrig inkomst",
"loadingIndicator": "Laddar…",
"subcategoryLabel": "Subcategory",
"catHousing": "Housing / Home",
"subcategoryLabel": "Underkategori",
"catHousing": "Bostad / Hem",
"catTransport": "Transport",
"catPersonalHealth": "Personal Care / Health",
"catShoppingClothing": "Shopping and Clothing",
"catFinancialOther": "Financial Services and Other",
"subcatRentMortgage": "Rent / Mortgage",
"subcatCondominium": "Condominium fees",
"subcatUtilities": "Electricity / Water / Gas",
"subcatInternetTvPhone": "Internet / TV / Phone",
"subcatRenovationMaintenance": "Renovation / Maintenance",
"subcatCleaning": "Cleaning",
"subcatGroceries": "Groceries",
"subcatRestaurantsBars": "Restaurants / Bars",
"subcatSnacksFastFood": "Snacks / Fast Food",
"subcatBakery": "Bakery",
"subcatFuel": "Fuel",
"subcatParkingTolls": "Parking / Tolls",
"subcatPublicTransport": "Public transport",
"subcatAppsTaxi": "Apps / Taxi",
"subcatMaintenanceInsurance": "Maintenance / Insurance",
"subcatPharmacy": "Pharmacy",
"subcatHealthInsurance": "Health insurance",
"subcatGymSports": "Gym / Sports",
"subcatBeautyCosmetics": "Beauty / Cosmetics",
"subcatTravel": "Travel",
"catPersonalHealth": "Personlig vård / Hälsa",
"catShoppingClothing": "Shopping och kläder",
"catFinancialOther": "Finansiella tjänster och annat",
"subcatRentMortgage": "Hyra / inteckning",
"subcatCondominium": "Bostadsrättsavgifter",
"subcatUtilities": "El / vatten / gas",
"subcatInternetTvPhone": "Internet / TV / Telefon",
"subcatRenovationMaintenance": "Renovering/underhåll",
"subcatCleaning": "Rengöring",
"subcatGroceries": "Specerier",
"subcatRestaurantsBars": "Restauranger/barer",
"subcatSnacksFastFood": "Snacks / Snabbmat",
"subcatBakery": "Bageri",
"subcatFuel": "Bränsle",
"subcatParkingTolls": "Parkering / vägtullar",
"subcatPublicTransport": "Kollektivtrafik",
"subcatAppsTaxi": "Appar / Taxi",
"subcatMaintenanceInsurance": "Underhåll / Försäkring",
"subcatPharmacy": "Apotek",
"subcatHealthInsurance": "Sjukförsäkring",
"subcatGymSports": "Gym / Sport",
"subcatBeautyCosmetics": "Skönhet / Kosmetika",
"subcatTravel": "Resa",
"subcatStreaming": "Streaming",
"subcatEvents": "Events",
"subcatHobbies": "Hobbies",
"subcatClothesShoes": "Clothes / Shoes",
"subcatElectronics": "Electronics",
"subcatGifts": "Gifts",
"subcatCoursesCollege": "Courses / College",
"subcatSchoolSupplies": "School supplies",
"subcatLanguages": "Languages",
"subcatEvents": "Händelser",
"subcatHobbies": "Hobbyer",
"subcatClothesShoes": "Kläder / skor",
"subcatElectronics": "Elektronik",
"subcatGifts": "Gåvor",
"subcatCoursesCollege": "Kurser / College",
"subcatSchoolSupplies": "Skolmaterial",
"subcatLanguages": "Språk",
"subcatLoansInterest": "Lån / Ränta",
"subcatBankFees": "Bank fees",
"subcatInsuranceOther": "Insurance",
"subcatInvestments": "Investments",
"subcatTaxes": "Taxes",
"metaLoadError": "Budget categories could not be loaded.",
"addCategory": "+ category",
"addSubcategory": "+ subcategory",
"newCategoryPrompt": "Name of the new category:",
"newSubcategoryPrompt": "Name of the new subcategory:",
"categoryAddedToast": "Category added.",
"subcategoryAddedToast": "Subcategory added.",
"subcatBankFees": "Bankavgifter",
"subcatInsuranceOther": "Försäkring",
"subcatInvestments": "Investeringar",
"subcatTaxes": "Skatter",
"metaLoadError": "Budgetkategorier kunde inte läsas in.",
"addCategory": "+ kategori",
"addSubcategory": "+ underkategori",
"newCategoryPrompt": "Namn på den nya kategorin:",
"newSubcategoryPrompt": "Namn på den nya underkategorin:",
"categoryAddedToast": "Kategori tillagd.",
"subcategoryAddedToast": "Underkategori har lagts till.",
"emptyAction": "Lägg till post",
"loansTitle": "Lån",
"loansSummary": "{{count}} aktiva · {{amount}} kvar",
@@ -765,28 +784,28 @@
"currencyLabel": "Valuta",
"currencyHint": "Ställer in valutan som används i hela budgetavsnittet.",
"currencySaved": "Valuta sparad.",
"apiTokensTitle": "API Tokens",
"apiTokensTitle": "API-tokens",
"apiTokensCardTitle": "Access Tokens",
"apiTokensHint": "Create API tokens for external integrations. The full token is shown only once after creation.",
"apiTokenNameLabel": "Token name",
"apiTokenExpiresLabel": "Expiration date",
"apiTokenExpiresHint": "Leave empty to create a token without expiration.",
"apiTokenCreatedLabel": "New API token",
"apiTokenCreatedHint": "Store this token securely. It cannot be shown again.",
"apiTokenCreate": "Create token",
"apiTokenInvalidExpiration": "Please enter a valid expiration date.",
"apiTokenCreatedToast": "API token created.",
"apiTokenRevokedToast": "API token revoked.",
"apiTokenRevokeConfirm": "Revoke API token \"{{name}}\"?",
"apiTokenRevoke": "Revoke token",
"apiTokenRevoked": "Revoked",
"apiTokenExpired": "Expired",
"apiTokenActive": "Active",
"apiTokensHint": "Skapa API-tokens för externa integrationer. Den fullständiga token visas endast en gång efter skapandet.",
"apiTokenNameLabel": "Tokennamn",
"apiTokenExpiresLabel": "Utgångsdatum",
"apiTokenExpiresHint": "Lämna tomt för att skapa en token utan utgång.",
"apiTokenCreatedLabel": "Ny API-token",
"apiTokenCreatedHint": "Förvara denna token säkert. Den kan inte visas igen.",
"apiTokenCreate": "Skapa token",
"apiTokenInvalidExpiration": "Ange ett giltigt utgångsdatum.",
"apiTokenCreatedToast": "API-token skapad.",
"apiTokenRevokedToast": "API-token har återkallats.",
"apiTokenRevokeConfirm": "Återkalla API-token \"{{name}}\"?",
"apiTokenRevoke": "Återkalla token",
"apiTokenRevoked": "Återkallad",
"apiTokenExpired": "Utgått",
"apiTokenActive": "Aktiv",
"apiTokenPrefix": "Prefix",
"apiTokenExpires": "Expires",
"apiTokenNeverExpires": "No expiration",
"apiTokenLastUsed": "Last used",
"apiTokenNeverUsed": "Never used",
"apiTokenExpires": "Upphör att gälla",
"apiTokenNeverExpires": "Inget utgångsdatum",
"apiTokenLastUsed": "Senast använd",
"apiTokenNeverUsed": "Aldrig använd",
"ics": {
"title": "ICS-prenumerationer",
"add": "Lägg till prenumeration",
@@ -842,7 +861,7 @@
"backupRestoring": "Återställer...",
"backupRestoredToast": "Databasen återställd. Laddar om...",
"backupCliTitle": "CLI / Docker Compose-återställning",
"backupCliHint": "For operational restores, stop the app, mount the backup in a temporary container and replace the database file.",
"backupCliHint": "För driftåterställningar, stoppa appen, montera säkerhetskopian i en tillfällig container och byt ut databasfilen.",
"backupCliBackupHint": "Du kan också skapa en backup direkt med Docker Compose:"
},
"login": {
@@ -951,7 +970,8 @@
"deleteConfirm": "Ta bort födelsedagen för \"{{name}}\"?",
"ageNoteToday": "Fyller {{age}} år idag.",
"ageNoteTomorrow": "Fyller {{age}} år i morgon.",
"ageNoteDays": "Fyller {{age}} år om {{days}} dagar."
"ageNoteDays": "Fyller {{age}} år om {{days}} dagar.",
"photoOptional": "Valfritt: Du kan spara utan profilbild."
},
"reminders": {
"sectionTitle": "Påminnelse",
@@ -973,33 +993,41 @@
"notificationEnabled": "Notiser aktiva",
"notificationDenied": "Notiser blockerade",
"notificationHint": "Få notiser även när appen är öppen.",
"offset2days": "2 days before",
"offset1week": "1 week before",
"offset2weeks": "2 weeks before",
"offsetCustom": "Custom...",
"customAmountLabel": "Number",
"customUnitLabel": "Unit",
"customMinutes": "Minutes",
"customHours": "Hours",
"customDays": "Days",
"customWeeks": "Weeks"
"offset2days": "2 dagar innan",
"offset1week": "1 vecka innan",
"offset2weeks": "2 veckor innan",
"offsetCustom": "Anpassad...",
"customAmountLabel": "Antal",
"customUnitLabel": "Enhet",
"customMinutes": "Minuter",
"customHours": "Timmar",
"customDays": "dagar",
"customWeeks": "Veckor"
},
"onboarding": {
"step1Title": "Welcome to Oikos",
"step1Body": "Your personal family planner. Tasks, calendar, shopping and more all in one place.",
"step1Title": "Välkommen till Oikos",
"step1Body": "Din personliga familjeplanerare. Uppgifter, kalender, shopping och mer allt på ett ställe.",
"step2Title": "Navigering och moduler",
"step2Body": "Nere på skärmen når du direkt Dashboard och Kalender. Med ···-knappen öppnar du fler moduler som Kök, Anteckningar och Kontakter.",
"step2Body": "Nere på skärmen når du direkt Översikt och Kalender. Med ···-knappen öppnar du fler moduler som Kök, Anteckningar och Kontakter.",
"step3Title": "Kom igång snabbt",
"step3Body": "Med +-knappen skapar du nya poster var som helst. Svep listobjekt åt vänster eller höger för snabbåtgärder.",
"next": "Next",
"done": "Get started",
"skip": "Skip"
"next": "Nästa",
"done": "Kom igång",
"skip": "Skippa"
},
"offline": {
"banner": "Offline reconnecting…"
"banner": "Offline återansluter…"
},
"emptyHint": {
"recipes": "Skapa recept och koppla dem till din måltidsplanering."
"recipes": "Skapa recept och koppla dem till din måltidsplanering.",
"tasks": "Tryck på + för att skapa din första uppgift. Svep ett kort åt vänster för att ta bort.",
"calendar": "Koppla Google Kalender under Inställningar → Integrationer för automatisk synkronisering.",
"shopping": "Lägg till artiklar och svep för att markera eller ta bort.",
"notes": "Tryck på + för en ny anteckning. Anteckningar söks i fulltext.",
"contacts": "Lägg till viktiga kontakter — läkare, skola, nödfall — för snabb åtkomst.",
"budget": "Skapa kategorier och registrera inkomster och utgifter.",
"meals": "Planera måltider för veckan och koppla recept.",
"birthdays": "Lägg in födelsedagar — du får en påminnelse i tid."
},
"documents": {
"title": "Dokument",
@@ -1063,6 +1091,14 @@
"selectedFileLabel": "Vald: {{name}}"
},
"shortcuts": {
"goKitchen": "Kök"
"goKitchen": "Kök",
"search": "Öppna sökning",
"new": "Skapa ny post",
"help": "Tangentbordsgenvägar",
"goDash": "Översikt",
"goTasks": "Uppgifter",
"goCal": "Kalender",
"goShop": "Inköpslista",
"goNotes": "Anteckningar"
}
}