add swedish (sv-SE) locale — all three catalogues, wired in all four registration points

538 app.* + 541 panel.* + 43 ui.* = 1122 keys, full parity with en-GB. Registered in
catalogues.ts, locales.ts SHIPPED_LOCALES, and both workspace locales/index.ts —
the four-edit checklist docs/localization.md calls out, since a missed import is
what shipped es-ES/de-DE/fr-FR dead the first time.

files.menu.selected (officerdev) was number-invariant in English ("selected") but
needs one/other in Swedish ("vald"/"valda"), same class of bug as the "1
seleccionados" fix in es-ES — split it rather than copying the English shape.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 01:59:09 +00:00
co-authored by Claude Opus 5
parent 2a0f688e10
commit 1600a57b66
7 changed files with 1435 additions and 1 deletions
@@ -4,6 +4,7 @@ import enGB from './en-GB.json';
import esES from './es-ES.json';
import frFR from './fr-FR.json';
import ptPT from './pt-PT.json';
import svSE from './sv-SE.json';
/** Shared components' own catalog, per locale — merged into the app-wide map by `I18nBridge` under `ui.*`. */
export const uiCatalogs: TranslationMap = {
@@ -12,6 +13,7 @@ export const uiCatalogs: TranslationMap = {
'es-ES': esES,
'de-DE': deDE,
'fr-FR': frFR,
'sv-SE': svSE,
};
export { useTranslation } from './useTranslation';
@@ -0,0 +1,81 @@
{
"button": {
"cancel": "Avbryt",
"confirm": "Bekräfta",
"ok": "Ok",
"close": "Stäng"
},
"search": {
"placeholder": "Sök",
"open": "Öppna sökning",
"close": "Stäng sökning",
"clear": "Rensa sökning"
},
"select": {
"placeholder": "Välj..."
},
"tabs": {
"filterPlaceholder": "Filtrera"
},
"commandBlock": {
"run": "Kör i terminalen",
"copy": "Kopiera kommando"
},
"colorPicker": {
"placeholder": "Hexfärg"
},
"state": {
"loading": "Läser in…"
},
"dataTable": {
"empty": "Ingen data hittades.",
"pagination": {
"showingPage": "Visar sida {{current}} av {{total}}",
"showingPageShort": "s {{current}}/{{total}}",
"rowsPerPage": "Rader per sida",
"perPage": "{{size}} / sida",
"perPageShort": "{{size}}/s",
"first": "Första",
"prev": "Föreg.",
"next": "Nästa",
"last": "Sista"
}
},
"pagination": {
"label": "Sidnumrering",
"previous": "Föregående",
"next": "Nästa",
"morePages": "Fler sidor",
"goToPrevious": "Gå till föregående sida",
"goToNext": "Gå till nästa sida"
},
"carousel": {
"previous": "Föregående bild",
"next": "Nästa bild"
},
"breadcrumb": {
"more": "Mer"
},
"theme": {
"toggle": "Växla färgläge"
},
"error": {
"forbidden": {
"title": "Obehörig åtkomst",
"description": "Du har inte behörighet att utföra denna åtgärd.",
"hint": "Om du tror att detta är ett fel, kontakta din ansvariga person."
},
"unauthorized": {
"title": "Ogiltiga inloggningsuppgifter",
"description": "Din åtkomsttoken har gått ut",
"hint": "Logga in igen"
},
"server": {
"title": "Serverfel"
}
},
"logo": {
"icon": "Officer-ikon",
"logo": "Officer-logotyp"
}
}