feat(i18n): complete message parity across all 25 locales
Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Successful in 37s
CI / tests-unit (push) Successful in 1m49s
CI / tests-integration (push) Successful in 1m50s
CI / tests-ui (push) Successful in 2m29s
CI / preflight (push) Skipped
CI / deploy (push) Failing after 1m37s
Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Successful in 37s
CI / tests-unit (push) Successful in 1m49s
CI / tests-integration (push) Successful in 1m50s
CI / tests-ui (push) Successful in 2m29s
CI / preflight (push) Skipped
CI / deploy (push) Failing after 1m37s
The admin.studio.nitroCleanup section (102 keys) only existed in en and nl, so 23 locales fell back to English for the entire Nitro Cleanup panel. The referrals and dailyRewards keys were missing from the same 23 locales, and en itself was missing 6 keys that nl had. Add the missing keys to every locale with translations, so all 25 locales now carry the same 6063 keys.
This commit is contained in:
1 parent
944527e078
commit
bc00ecf08c
24 files changed
+4483
-182
No files matched your search
+196
-9
@@ -817,10 +817,10 @@
|
||||
"enable": "Aktivera 2FA",
|
||||
"rateLimit": "Too many attempts. Please wait before trying again."
|
||||
},
|
||||
"title": "Anslutna konton",
|
||||
"subtitle": "Länka ett socialt konto så att du kan logga in med ett klick",
|
||||
"connected": "Ansluten",
|
||||
"unavailable": "Ej tillgänglig",
|
||||
"title": "Länkade konton",
|
||||
"subtitle": "Länka ett socialt konto för att logga in med ett klick",
|
||||
"connected": "Länkad",
|
||||
"unavailable": "Otillgänglig",
|
||||
"login": {
|
||||
"title": "Logga in",
|
||||
"subtitle": "Välkommen tillbaka — logga in för att komma in på hotellet.",
|
||||
@@ -882,7 +882,9 @@
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens"
|
||||
"newestCitizens": "Newest citizens",
|
||||
"ageVerified": "Jag är 18+ och godkänner ålderskravet.",
|
||||
"invitedBy": "Inbjuden av {username}"
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Återställ lösenord",
|
||||
@@ -1048,7 +1050,9 @@
|
||||
"cmsErrors": "CMS errors",
|
||||
"themeBuilder": "Theme builder",
|
||||
"openSidebar": "Open menu",
|
||||
"closeSidebar": "Close menu"
|
||||
"closeSidebar": "Close menu",
|
||||
"referrals": "Rekommendationer",
|
||||
"dailyRewards": "Dagliga belöningar"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Instrumentbräda",
|
||||
@@ -4336,7 +4340,9 @@
|
||||
"importAudit": "Audit",
|
||||
"themeBuilder": "Theme Builder",
|
||||
"studio": "Studio",
|
||||
"cmsErrors": "CMS errors"
|
||||
"cmsErrors": "CMS errors",
|
||||
"referrals": "Rekommendationer",
|
||||
"dailyRewards": "Dagliga belöningar"
|
||||
},
|
||||
"events": "Events",
|
||||
"eventsSubtitle": "Hotel events and event types",
|
||||
@@ -5843,6 +5849,64 @@
|
||||
"NoscopescreatedyetAddonebelow": "No scopes created yet. Add one below.",
|
||||
"Rename": "Rename"
|
||||
}
|
||||
},
|
||||
"referrals": {
|
||||
"title": "Rekommendationer",
|
||||
"subtitle": "Inbjudningssystem",
|
||||
"referralsToday": "Rekommendationer idag",
|
||||
"referralsTotal": "Rekommendationer totalt",
|
||||
"invitedTotal": "Inbjudningar räknade",
|
||||
"claims": "Belöningar hämtade",
|
||||
"settings": "Belönningsinställningar",
|
||||
"needed": "Nödvändiga rekommendationer",
|
||||
"rewardAmount": "Belöningsbelopp",
|
||||
"rewardCurrency": "Belöningsvaluta",
|
||||
"blockSameIp": "Avslå rekommendationer som delar inbjudarens nuvarande IP",
|
||||
"save": "Spara inställningar",
|
||||
"saving": "Sparar…",
|
||||
"saved": "Rekommendationsinställningar sparade.",
|
||||
"saveError": "Rekommendationsinställningar kunde inte sparas.",
|
||||
"recent": "Senaste rekommendationer",
|
||||
"unavailable": "Rekommendationsdata är tillfälligt otillgänglig.",
|
||||
"empty": "Inga rekommendationer ännu.",
|
||||
"inviter": "Inbjudare",
|
||||
"invitee": "Inbjuden användare",
|
||||
"ip": "IP",
|
||||
"date": "Datum"
|
||||
},
|
||||
"dailyRewards": {
|
||||
"title": "Dagliga inloggningsbelöningar",
|
||||
"subtitle": "Daglig inloggningsbelöningsschema",
|
||||
"enabled": "Funktionsstatus",
|
||||
"yes": "Aktiverad",
|
||||
"no": "Inaktiverad",
|
||||
"scheduleDays": "Schemats dagar",
|
||||
"claimsToday": "Hämtningar idag",
|
||||
"claimsTotal": "Hämtningar totalt",
|
||||
"status": "Funktionsstatus",
|
||||
"statusHint": "När inaktiverad döljs belöningskortet och nya hämtningar avslås.",
|
||||
"disable": "Inaktivera",
|
||||
"enable": "Aktivera",
|
||||
"schedule": "Belöningsschema",
|
||||
"day": "Dag {day}",
|
||||
"reward": "Belöning",
|
||||
"amount": "Belopp",
|
||||
"actions": "Åtgärder",
|
||||
"addDay": "Dag",
|
||||
"add": "Lägg till dag",
|
||||
"save": "Spara",
|
||||
"saving": "Sparar…",
|
||||
"saved": "Belöningsschema sparat.",
|
||||
"cancel": "Avbryt",
|
||||
"edit": "Redigera",
|
||||
"delete": "Ta bort",
|
||||
"created": "Belöningsdag tillagd.",
|
||||
"updated": "Belöningsdag uppdaterad.",
|
||||
"deleted": "Belöningsdag borttagen.",
|
||||
"saveError": "Belöningsdag kunde inte sparas.",
|
||||
"deleteError": "Belöningsdag kunde inte tas bort.",
|
||||
"confirmDeleteTitle": "Ta bort belöningsdag",
|
||||
"confirmDeleteBody": "Denna belöningsdag kommer inte längre att ges. Tidigare hämtningar förblir registrerade."
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
@@ -6223,8 +6287,27 @@
|
||||
"empty": "You're all caught up. No actions waiting.",
|
||||
"unavailable": "Some actions could not be checked. Available actions are shown above.",
|
||||
"retry": "Try again",
|
||||
"rewardUnavailable": "Referral progress is temporarily unavailable. Please try again."
|
||||
}
|
||||
"rewardUnavailable": "Referral progress is temporarily unavailable. Please try again.",
|
||||
"dailyReward": "Din dagliga belöning är redo att hämtas"
|
||||
},
|
||||
"dailyClaimed": "Daglig belöning hämtad — ses imorgon!",
|
||||
"dailyErrors": {
|
||||
"already_claimed": "Du har redan hämtat dagens dagliga belöning.",
|
||||
"disabled": "Dagliga belöningar är inaktiverade just nu.",
|
||||
"bad_config": "Det dagliga belöningsschemat är inte korrekt konfigurerat. Kontakta personalen.",
|
||||
"ratelimit": "För många försök. Vänta en stund och försök igen.",
|
||||
"error": "Den dagliga belöningen kunde inte hämtas. Försök igen."
|
||||
},
|
||||
"dailyRewardTitle": "Dagliga belöningar",
|
||||
"dailyRewardHint": "Logga in varje dag och hämta din belöning — serier växer in till de stora dagarna.",
|
||||
"dailyRewardDay": "Dag {day}",
|
||||
"dailyRewardStreak": "{count, plural, one {Serie: # dag} other {Serie: # dagar}}",
|
||||
"dailyRewardNextClaim": "Nästa hämtning: {amount} {currency}",
|
||||
"dailyRewardTomorrow": "Imorgon: {amount} {currency}",
|
||||
"dailyRewardClaim": "Hämta daglig belöning",
|
||||
"dailyRewardClaimedToday": "Hämtad idag — kom tillbaka imorgon för nästa belöning.",
|
||||
"dailyRewardDisabled": "Dagliga belöningar är inaktiverade just nu. Du kan utforska hotellet.",
|
||||
"dailyRewardUnavailable": "Det dagliga belöningsschemat kunde inte laddas. Försök igen."
|
||||
},
|
||||
"housekeeping": {
|
||||
"preview": {
|
||||
@@ -6502,6 +6585,110 @@
|
||||
},
|
||||
"admin": {
|
||||
"studio": {
|
||||
"nitroCleanup": {
|
||||
"alreadyRunning": "En skanning pågår redan — ansluten till den.",
|
||||
"ageUnknown": "ålder okänd",
|
||||
"ageBelow": "< 1d",
|
||||
"scanButton": "Skanna möbelresurser",
|
||||
"scanningAssets": "Skannar resurser…",
|
||||
"cancelButton": "Avbryt",
|
||||
"deleteSelected": "Ta bort valda ({count})",
|
||||
"deleting": "Tar bort…",
|
||||
"redownloadBroken": "Ladda ner skadade igen",
|
||||
"redownloading": "Laddar ner igen…",
|
||||
"autoClean": "Rensa gamla falska automatiskt",
|
||||
"cleaning": "Rensar…",
|
||||
"exportManifest": "Exportera manifest",
|
||||
"exporting": "Exporterar…",
|
||||
"phaseStems": "Laddar möbelstammar…",
|
||||
"phaseReaddir": "Läser resurskataloger…",
|
||||
"phaseValidate": "Validerar .nitro-paket…",
|
||||
"phaseScanning": "Skannar…",
|
||||
"scanProgressFiles": "{count} filer",
|
||||
"repairProgress": "ok {ok}, misslyckades {failed}",
|
||||
"attachedNotice": "Skanningen fortsätter i bakgrunden — resultaten visas när den är klar.",
|
||||
"sessionCancelled": "Skanningen avbruten.",
|
||||
"onlyOldLabel": "Visa endast filer äldre än",
|
||||
"onlyOldAgeLabel": "Minimiålder i dagar för visning",
|
||||
"onlyOldToggle": "Dölj nyliga filer",
|
||||
"daysLabel": "dagar",
|
||||
"autoAgeLabel": "Minimiålder i dagar för automatisk rengöring",
|
||||
"loadingResult": "Laddar skanningsresultat…",
|
||||
"scannedStat": "resursfiler skannade",
|
||||
"cachedNotice": "(cachad — katalogerna är oförändrade)",
|
||||
"fakeStat": "Falska nitro (ingen matchande artikel)",
|
||||
"brokenStat": "Skadade nitro (oläsbara)",
|
||||
"groupEmpty": "Inget hittades",
|
||||
"selectedCount": "{count} valda",
|
||||
"copiesBadge": "{count} kopior",
|
||||
"groupFakeLabel": "Falska nitro",
|
||||
"groupFakeDescription": "Dessa filer matchar ingen artikel i items_base — kvarlevor från borttagna eller omdöpta möbler.",
|
||||
"groupBrokenLabel": "Skadade nitro",
|
||||
"groupBrokenDescription": "Dessa filer tillhör en artikel men kan inte läsas som ett giltigt Nitro-paket.",
|
||||
"groupSwfLabel": "Föräldralösa SWF-filer",
|
||||
"groupSwfDescription": ".swf-filer som matchar ingen artikel i items_base.",
|
||||
"groupIconLabel": "Föräldralösa ikoner",
|
||||
"groupIconDescription": "Ikonfiler som matchar ingen artikel i items_base.",
|
||||
"warningText": "Att ta bort en skadad .nitro lämnar artikeln i databasen utan paket — föredra att ladda ner den igen, eller låt kataloggranskningen skaffa den senare. Databasrader tas aldrig bort av detta verktyg.",
|
||||
"onlyAssetsTouched": "Endast resursfiler påverkas — FurnitureData.json och databasrader förblir intakta.",
|
||||
"emptyHint": "Skanna varje möbelresurskatalog för att hitta falska och skadade nitro-paket samt föräldralösa SWF-filer och ikoner. Ta bort dem, ladda ner de skadade igen eller rensa gamla kvarlevor automatiskt.",
|
||||
"noResult": "Inget skanningsresultat ännu — kör en möbelresursskanning först.",
|
||||
"scanFailed": "Skanningen misslyckades.",
|
||||
"confirmDeleteTitle": "Ta bort {count} resursfil(er)?",
|
||||
"confirmDeleteDescription": "Filerna tas bort från alla kataloger (public + speglade gamedata). Databasrader påverkas aldrig.",
|
||||
"confirmDeleteLabel": "Ta bort",
|
||||
"confirmRepairTitle": "Ladda ner {count} skadad(e) .nitro-paket igen?",
|
||||
"confirmRepairDescription": "Paketen hämtas igen från de konfigurerade nitro-källarna och skrivs över alla kataloger (public + speglade gamedata).",
|
||||
"confirmRepairLabel": "Ladda ner igen",
|
||||
"confirmAutoCleanTitle": "Rensa falska nitro äldre än {days} dag(ar) automatiskt?",
|
||||
"confirmAutoCleanDescription": "Endast falska .nitro-filer (ingen matchande artikel) äldre än tröskeln tas bort. Skadade paket och nyliga filer påverkas aldrig.",
|
||||
"confirmAutoCleanLabel": "Rensa automatiskt",
|
||||
"toastDeletePartial": "Tog bort {copies} kopior, men vissa filer kunde inte tas bort",
|
||||
"toastDeleteDone": "Tog bort {copies} filkopior ({deleted} filer)",
|
||||
"toastRepairDone": "Reparerade {count} .nitro-paket",
|
||||
"toastRepairFailed": "Kunde inte skaffa något paket ({failed} misslyckades)",
|
||||
"toastRepairCancelled": "Reparation avbruten",
|
||||
"toastAutoCleanDone": "Rensade {deleted} gamla falska .nitro-filer ({copies} kopior). Hoppade över {recent} nyliga + {broken} skadade.",
|
||||
"toastAutoCleanNothing": "Inenting gammalt nog att ta bort (hoppade över {recent} nyliga, {broken} skadade)",
|
||||
"toastManifestDownload": "Skanningsmanifest nedladdat",
|
||||
"gamedataTitle": "Rensning av speldata",
|
||||
"gamedataHint": "Förhandsvisa först: detta skriver över FurnitureData.json, FigureMap.json och FigureData.json. Till skillnad från resursverktygen ovan tar det bort rader som inte refererar till något — granska siffrorna innan du kör det.",
|
||||
"gamedataScan": "Förhandsvisa speldata",
|
||||
"gamedataScanning": "Skannar…",
|
||||
"gamedataRun": "Kör valda",
|
||||
"gamedataRunning": "Rensar…",
|
||||
"gamedataNoResult": "Ingen förhandsvisning ännu — skanna speldata-JSON-filerna först.",
|
||||
"gamedataCount_duplicates": "FurnitureData-dubletter",
|
||||
"gamedataCount_orphans": "FurnitureData-föräldralösa",
|
||||
"gamedataCount_figureMap": "FigureMap-problem",
|
||||
"gamedataCount_figureData": "Oanvänt FigureData",
|
||||
"gamedataPass_dedupeFurnitureData": "Avduplicera FurnitureData",
|
||||
"gamedataPassDesc_dedupeFurnitureData": "Tar bort upprepade classnames inom en sektion och behåller posten med högsta revision.",
|
||||
"gamedataPass_cleanFurnitureData": "Rensa FurnitureData",
|
||||
"gamedataPassDesc_cleanFurnitureData": "Tar bort poster där .nitro-paketet saknas i alla kataloger.",
|
||||
"gamedataPass_cleanFigureMap": "Rensa FigureMap",
|
||||
"gamedataPassDesc_cleanFigureMap": "Tar bort delar som pekar på en saknad uppsättning i FigureData, plus exakta dubletter.",
|
||||
"gamedataPass_cleanFigureData": "Rensa FigureData",
|
||||
"gamedataPassDesc_cleanFigureData": "Tar bort uppsättningar som ingen FigureMap-del refererar till, sedan paletter som ingen uppsättningstyp använder. Måste köras efter Rensa FigureMap.",
|
||||
"gamedataNothingSelected": "Välj minst ett rengöringssteg",
|
||||
"gamedataConfirmTitle": "Skriv över speldata-JSON-filer?",
|
||||
"gamedataConfirmDescription": "{passes} steg körs mot {duplicates} dublettgrupper, {orphans} föräldralösa rader, {figureMap} FigureMap-problem och {figureData} oanvända FigureData-poster. Rader tas bort utan säkerhetskopia — detta kan inte ångras.",
|
||||
"gamedataConfirmLabel": "Skriv över filer",
|
||||
"gamedataDifferingWarning": "Minst en dublett är inte en exakt kopia av posten som behålls, så den borttagna raden innehöll data som den överlevande inte har.",
|
||||
"gamedataCrossSectionNote": "{count} classnames finns i både roomitemtypes och wallitemtypes. Dessa rapporteras endast — att ta bort en skulle ändra en artikels typ.",
|
||||
"gamedataToastDone": "Rensning av speldata tog bort {removed} rader",
|
||||
"gamedataToastNothing": "Speldata var redan rent",
|
||||
"gamedataMaxRemovalsLabel": "Max. rader per steg",
|
||||
"gamedataMaxRemovalsHint": "0 använder standardvärdet 500. Ett steg som skulle ta bort mer stannar och frågar istället för att skriva.",
|
||||
"gamedataLimitTitle": "{pass} skulle ta bort {wouldRemove} rader, över gränsen {maxRemovals}.",
|
||||
"gamedataLimitDescription": "Detta steg skrev ingenting, så filerna är oförändrade. Kontrollera resurssökvägarna först — en felaktig katalog får varje rad att se föräldralös ut. Att höja gränsen är en separat, avsiktlig körning.",
|
||||
"gamedataLimitOverride": "Ta bort {wouldRemove} rader ändå",
|
||||
"historyTitle": "Historik för automatisk rengöring",
|
||||
"historyScheduled": "schemalagt",
|
||||
"historyManual": "manuellt",
|
||||
"historyEntry": "Tog bort {deleted} ({copies} kopior); hoppade över {recent} nyliga och {broken} skadade",
|
||||
"historyErrors": "{count} fel"
|
||||
},
|
||||
"importDiagnostics": {
|
||||
"attempts": "Fildiagnostik",
|
||||
"preliminary": "Förhandskontroll av adresser; innehållet valideras vid import.",
|
||||
|
||||
Reference in new issue
Block a user