mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
d50c9c444d
* refactor(settings): extract reusable SettingsGroup component
Pull the boxed sub-section pattern (bordered panel + accent uppercase
header) introduced for the Audio tab into a reusable <SettingsGroup
title desc> component, and migrate NormalizationBlock and
PlaybackBehaviorBlock onto it. No visual change.
* feat(settings): box the System behavior section into groups
Split the System -> App Behavior card (which bundled tray toggles, Linux
rendering tweaks and the clock format) into titled SettingsGroup panels
(Tray / Linux rendering / Clock) for a clearer, consistent boxed look.
Adds the group titles across all 9 locales.
* feat(settings): box Appearance visual options; optional SettingsGroup title
Split the Appearance -> Visual options card into a Display group and a
Window group (Linux custom titlebar controls). SettingsGroup now allows an
optional/omitted title for plain boxed panels. Group titles added across
all 9 locales.
* feat(settings): box Discord cover source and templates
Group the Discord cover-source toggles and the activity templates into
separate SettingsGroup panels (templates reuse their existing title/desc),
dropping the manual indent and inline header. No new strings.
* feat(settings): box the Music Network section
Give the scrobble-master toggle, the enrichment-primary picker and the
provider list each a boxed SettingsGroup with an accent header, and switch
the add-a-service provider rows to the boxed panel style for consistent
contrast with the rest of settings.
* feat(settings): titled boxes for Integrations sections + cover source label
Wrap the Discord enable toggle, the Discord cover-source picker (now with a
"Cover art source" title and explainer), Bandsintown and Show-in-Now-Playing
in titled SettingsGroup panels so each single-item section gets the same
accent-headed boxed look. New cover-source strings across all 9 locales.
* feat(settings): box Lyrics tab sections
Wrap the lyrics-sources customizer and the sidebar-style picker in titled
SettingsGroup panels (reusing the existing section titles).
* refactor(settings): consistent content inset in SettingsGroup
Add a body wrapper with a small left inset so every boxed section indents its
controls uniformly (title stays flush at the box edge). Defined once in the
component instead of per section.
* feat(settings): box Storage tab sections incl. cover art cache
Wrap media directory, cover art cache strategy, next-track buffering and
downloads in titled SettingsGroup panels (reusing existing section titles);
align the cover-cache table's first column flush with the new content inset.
* feat(settings): box Library tab, relocate Lucky Mix, add SettingsToggle
- Add a reusable SettingsToggle component for the repeated label/desc/switch row.
- Box the Random Mix blacklist (grouping built-in keywords with the custom
filter), Ratings and the Analytics strategy section.
- Move the "Show Lucky Mix in menu" toggle out of the blacklist and up next to
split-mix navigation and now-playing-at-top in the sidebar customizer.
* feat(settings): box remaining Appearance sections
Wrap library grid, UI scale, font and seekbar style in titled SettingsGroup
panels (reusing the existing section titles).
* feat(settings): box System language, logging and backup sections
Wrap language and logging in titled SettingsGroup panels, and rework the
backup section to drop its redundant inline header (the subsection already
provides it) and box its content. About / Contributors / Licenses stay as
free display content.
* feat(settings): box remaining Audio sections
Wrap Hi-Res, equalizer, playback speed, audio output device and track
previews in titled SettingsGroup panels (reusing the existing section titles).
* feat(settings): box Input tab keybinding sections
Wrap the in-app and global shortcut lists in titled SettingsGroup panels.
* feat(settings): box the Personalisation tab
Convert every customizer (sidebar, home, artist, queue toolbar, playlist,
player bar) to plain inner containers and wrap each in a titled SettingsGroup,
so the boxed look is consistent without nested cards. Box the queue display
mode picker too.
* feat(settings): box the Themes sections above the store
Add a boxed option to the flat Themes sections and apply it to Your Themes,
Auto-Switch Theme and Import (the theme store stays unboxed). Drop the inner
settings-card from InstalledThemes, ThemeImportSection and the scheduler so
the SettingsGroup is the only frame.
* fix(settings): give the Themes boxes a card carrier and accent header
The flat Themes sections had no settings-card behind them, so the bg-app
SettingsGroup had no contrast against the page. Box each above-store section
as settings-card > titled SettingsGroup (accent header) like the rest.
* fix(settings): clean up the server library sync status line
Collapse the offline status to a single icon + phrase ("Server offline —
sync deferred") instead of a redundant "Deferred" badge alongside it, and
drop the now-unused string across all 9 locales.
* fix(queue): keep toolbar toggle buttons coloured active while hovered
The generic .queue-round-btn:hover rule outweighed .active in specificity, so
an active button kept the hover colour until the pointer left — the toggle
only looked on after moving the mouse away. Add an explicit active-hover rule
(mirroring the mini player) so active wins immediately on click.
* fix(settings): fix Lyrics triple title, drop dead Discord cover keys
- Remove LyricsSourcesCustomizer's own section header (the subsection already
titles it) and make its inner cards plain; the Lyrics boxes are now title-less.
- Drop the dead discordCoverSource/discordCoverSourceDesc i18n keys (superseded
by discordCoverTitle/Desc) and un-jam the libraryIndexServer status line in
all 9 locales.
* refactor(settings): drop redundant group titles and double frames
Single-group sections duplicated the subsection title in the group header — make
those groups title-less so the subsection header is the only title. A card whose
sole child is one group now collapses via CSS so single-group sections render a
single frame (matching the card-less Lyrics layout) instead of a card-in-group
double border. Multi-group cards keep their frame as the grouping container.
* fix(settings): keep the flat Themes cards framed when collapsing single-group cards
The single-group card collapse also flattened the Themes section cards, which —
not being inside an accordion — are themselves the contrast surface. Exclude
.themes-section descendants from the collapse.
* refactor(settings): use SettingsToggle for Appearance and System toggle rows
Replace the hand-rolled toggle-row markup in the Appearance visual options and
System tray/Linux/changelog rows with the shared SettingsToggle component, and
extend it with a searchText prop and ReactNode descriptions for the remaining
call sites.
* refactor(settings): roll SettingsToggle out to Integrations, Audio and Storage
Replace hand-rolled toggle rows in the Discord/Bandsintown/Now-Playing,
Hi-Res, hot cache and playback behaviour/rate sections with SettingsToggle.
Make its label optional (desc-only rows whose title is the group header) and
add searchText/id pass-throughs.
* refactor(settings): use SettingsToggle for the remaining standard toggle rows
Track previews master, sidebar lyrics style, YouLyPlus/static-only, queue
display mode and the sidebar split-nav/now-playing/lucky-mix rows now use the
shared component. Genuinely custom rows (drag lists, the skip-star threshold,
the AudioMuse row with its inline link, the fine-step advanced badge) stay
hand-rolled.
* fix(settings): drop duplicate titles on Hi-Res/Bandsintown/Now-Playing, un-jam locale line
These single-toggle sections kept a group title identical to their subsection
header; once the single-group card collapses the title rendered twice stacked.
Make them title-less (the subsection header is the label). Also split the
discordCoverTitle locale entry onto its own line in all 9 locales.
* feat(settings): restore section icons in boxed Themes headers
SettingsGroup gained an optional accent icon slot rendered before the
title; ThemesTab forwards the Palette/Clock/Upload icons the boxed
sections lost when they moved off the bespoke <h2> header.
* style(settings): re-indent SettingsGroup children to nesting level
Pure whitespace: children wrapped in SettingsGroup were left at their
pre-wrap indent. No content change (git diff -w is empty).
* fix(settings): clarify Native Hi-Res Playback description
The old copy led with the disabled-state behaviour ("forces 44.1 kHz"),
which read as if the toggle itself locked output to 44.1 kHz. Describe
what enabling actually does: play each track at its native sample rate
(reconfiguring the output device to match) instead of resampling to
44.1 kHz. Updated across all 9 locales.
* docs: changelog + what's-new for the settings layout refactor (#1126)
709 lines
44 KiB
TypeScript
709 lines
44 KiB
TypeScript
export const settings = {
|
||
title: 'Innstillinger',
|
||
language: 'Språk',
|
||
languageEn: 'English',
|
||
languageDe: 'Deutsch',
|
||
languageEs: 'Español',
|
||
languageFr: 'Français',
|
||
languageNl: 'Nederlands',
|
||
languageNb: 'Norsk',
|
||
languageRu: 'Русский',
|
||
languageZh: '中文',
|
||
languageRo: 'Română',
|
||
font: 'Skrifttype',
|
||
fontHintOpenDyslexic: 'Dyslexivennlig · ingen kinesisk støtte',
|
||
theme: 'Tema',
|
||
appearance: 'Utseende',
|
||
servers: 'Tjenere',
|
||
serverName: 'Tjenernavn',
|
||
serverUrl: 'Tjener-URL',
|
||
serverUrlPlaceholder: '192.168.1.100:4533 eller https://musikk.eksempel.com',
|
||
serverAlternateUrl: 'Andre adresse (valgfritt)',
|
||
serverAlternateUrlPlaceholderPublic: 'https://music.example.com',
|
||
serverAlternateUrlPlaceholderLocal: '192.168.1.100:4533',
|
||
serverAlternateUrlHintAddPublic: 'Du kan legge til en offentlig adresse for tilgang utenfor hjemmenettverket.',
|
||
serverAlternateUrlHintAddLocal: 'Du kan legge til en lokal adresse for raskere tilkobling hjemme.',
|
||
serverBothLanError: 'Begge adressene er lokale — behold én eller legg til en offentlig adresse.',
|
||
dualAddressVerifying: 'Sjekker at begge adressene peker til samme tjener…',
|
||
dualAddressMismatch: 'De to adressene peker til ulike tjenere. Sjekk skrivemåten og prøv igjen.',
|
||
dualAddressInsufficient: 'Kunne ikke bekrefte at begge adressene er samme tjener. Fjern én adresse for å fortsette.',
|
||
dualAddressUnreachable: 'Kunne ikke nå {{host}}. Sjekk adressen og nettverket, og prøv igjen.',
|
||
urlRemigrationTitle: 'Flytte biblioteksdataene?',
|
||
urlRemigrationMessage: 'Å endre adressen vil flytte alle biblioteks-, analyse- og omslags-buffer-data fra {{oldKey}} til {{newKey}}. Dette kan ikke angres.',
|
||
urlRemigrationConfirm: 'Flytt data',
|
||
urlRemigrationProgress: 'Flytter biblioteksdata…',
|
||
urlRemigrationFailureInspect: 'Kunne ikke sjekke hva som ville bli flyttet. Prøv igjen eller åpne feilsøkingsloggen.',
|
||
urlRemigrationFailureRun: 'Flyttingen av biblioteksdataene mislyktes. Lagrede data er uendret — prøv igjen.',
|
||
urlRemigrationFailureCoverRename: 'Biblioteksdataene ble flyttet, men omslagsfilene kunne ikke endre navn. Omslag bygges opp igjen ved neste tilgang.',
|
||
shareUsesLocalUrl: 'Bruk lokal adresse i delingslenker',
|
||
shareUsesLocalUrlDesc: 'Påvirker Orbit-invitasjoner og biblioteksdeling. Standard: offentlig adresse.',
|
||
serverUsername: 'Brukernavn',
|
||
serverPassword: 'Passord',
|
||
addServer: 'Legg til tjener',
|
||
addServerTitle: 'Legg til ny tjener',
|
||
editServer: 'Rediger',
|
||
editServerTitle: 'Rediger tjener',
|
||
useServer: 'Bruk',
|
||
deleteServer: 'Slett',
|
||
noServers: 'Ingen tjenere lagret.',
|
||
serverActive: 'Aktiv',
|
||
serverVersionUnknown: 'Serverversjon ukjent',
|
||
confirmDeleteServer: 'Slett tjener "{{name}}"?',
|
||
serverConnecting: 'Kobler til…',
|
||
serverConnected: 'Tilkoblet!',
|
||
serverFailed: 'Tilkobling mislyktes.',
|
||
testBtn: 'Test tilkobling',
|
||
testingBtn: 'Tester…',
|
||
serverCompatible: 'Laget for Navidrome. Andre Subsonic-kompatible servere (Gonic, Airsonic, …) kan fungere med begrenset funksjonalitet, fordi Psysonic bruker mange Navidrome-spesifikke API-endepunkter.',
|
||
userMgmtTitle: 'Brukeradministrasjon',
|
||
userMgmtDesc: 'Administrer brukere på denne serveren. Krever admin-rettigheter.',
|
||
userMgmtNoAdmin: 'Du trenger admin-rettigheter for å administrere brukere på denne serveren.',
|
||
userMgmtLoadError: 'Kunne ikke laste brukere.',
|
||
userMgmtLoadFriendly: 'Serveren svarte ikke — som regel en engangsfeil.',
|
||
userMgmtRetry: 'Prøv igjen',
|
||
userMgmtEmpty: 'Ingen brukere funnet.',
|
||
userMgmtYouBadge: 'Deg',
|
||
userMgmtAdminBadge: 'Admin',
|
||
userMgmtAddUser: 'Legg til bruker',
|
||
userMgmtAddUserTitle: 'Ny bruker',
|
||
userMgmtEditUserTitle: 'Rediger bruker',
|
||
userMgmtUsername: 'Brukernavn',
|
||
userMgmtName: 'Visningsnavn',
|
||
userMgmtEmail: 'E-post',
|
||
userMgmtPassword: 'Passord',
|
||
userMgmtPasswordEditHint: 'Skriv inn et nytt passord for å oppdatere det.',
|
||
userMgmtRoleAdmin: 'Admin',
|
||
userMgmtLibraries: 'Biblioteker',
|
||
userMgmtLibrariesAdminHint: 'Administratorbrukere har automatisk tilgang til alle biblioteker.',
|
||
userMgmtLibrariesEmpty: 'Ingen biblioteker tilgjengelig på denne serveren.',
|
||
userMgmtLibrariesValidation: 'Velg minst ett bibliotek.',
|
||
userMgmtLibrariesUpdateError: 'Brukeren ble lagret, men bibliotekstilordning mislyktes',
|
||
userMgmtNoLibraries: 'Ingen biblioteker tilordnet',
|
||
userMgmtNeverSeen: 'Aldri',
|
||
userMgmtSave: 'Lagre',
|
||
userMgmtCancel: 'Avbryt',
|
||
userMgmtDelete: 'Slett',
|
||
userMgmtEdit: 'Rediger',
|
||
userMgmtConfirmDelete: 'Slett brukeren «{{username}}»? Dette kan ikke angres.',
|
||
userMgmtCreateError: 'Kunne ikke opprette bruker.',
|
||
userMgmtUpdateError: 'Kunne ikke oppdatere bruker.',
|
||
userMgmtDeleteError: 'Kunne ikke slette bruker.',
|
||
userMgmtCreated: 'Bruker opprettet.',
|
||
userMgmtUpdated: 'Bruker oppdatert.',
|
||
userMgmtDeleted: 'Bruker slettet.',
|
||
userMgmtValidationMissing: 'Brukernavn, visningsnavn og passord er påkrevd.',
|
||
userMgmtValidationMissingIdentity: 'Brukernavn og visningsnavn er påkrevd.',
|
||
userMgmtMagicStringGenerate: 'Generer magic string',
|
||
userMgmtSaveAndMagicString: 'Lagre og hent magic string',
|
||
userMgmtMagicStringPasswordNavHint:
|
||
'Navidrome lagrer dette passordet for brukeren. Hvis det avviker fra det nåværende, oppdateres innloggingspassordet på serveren.',
|
||
userMgmtMagicStringPlaintextWarning:
|
||
'Del magic string med varsomhet: den inneholder passordet i klartekst (koding er ikke kryptering). Den som har hele strengen, kan logge inn som denne brukeren.',
|
||
userMgmtMagicStringCopied: 'Magic string er kopiert til utklippstavlen.',
|
||
userMgmtMagicStringCopyFailed: 'Klarte ikke å kopiere til utklippstavlen.',
|
||
userMgmtMagicStringLoginFailed: 'Passordsjekk mislyktes — påloggingsdetaljene kunne ikke verifiseres.',
|
||
userMgmtMagicStringModalTitle: 'Generer magic string',
|
||
userMgmtMagicStringModalDesc: 'Skriv inn Subsonic-passordet for «{{username}}». Det tas med i den kopierte magic string-en.',
|
||
userMgmtMagicStringModalConfirm: 'Kopier streng',
|
||
audiomuseTitle: 'AudioMuse-AI (Navidrome)',
|
||
audiomuseBadge: 'AudioMuse-AI',
|
||
audiomuseStatusActive: 'Aktiv',
|
||
audiomuseStatusChecking: 'Sjekker…',
|
||
audiomuseStatusNotDetected: 'Ikke oppdaget',
|
||
audiomuseStatusProbeFailed: 'Sjekk mislyktes',
|
||
audiomuseDesc:
|
||
'Slå på hvis denne serveren bruker <pluginLink>AudioMuse-AI Navidrome-plugin</pluginLink>. Aktiverer Instant Mix fra spor og henter lignende artister fra serveren i stedet for Last.fm på artistsider.',
|
||
audiomuseIssueHint:
|
||
'Instant Mix feilet nylig — sjekk Navidrome-plugin og AudioMuse API. Lignende artister hentes fra Last.fm hvis serveren ikke returnerer noe.',
|
||
connected: 'Tilkoblet',
|
||
failed: 'Mislyktes',
|
||
eqTitle: 'Jevnstiller',
|
||
eqEnabled: 'Aktiver jevnstiller',
|
||
eqPreset: 'Forhåndsinnstilling',
|
||
eqPresetCustom: 'Egendefinert',
|
||
eqPresetBuiltin: 'Innebygde forhåndsinnstillinger',
|
||
eqPresetCustomGroup: 'Mine forhåndsinnstillinger',
|
||
eqSavePreset: 'Lagre som forhåndsinnstilling',
|
||
eqPresetName: 'Navn på forhåndsinnstilling…',
|
||
eqDeletePreset: 'Slett forhåndsinnstilling',
|
||
eqResetBands: 'Tilbakestill til standard',
|
||
eqPreGain: 'Forforsterkning',
|
||
eqResetPreGain: 'Tilbakestill forforsterkning',
|
||
eqAutoEqTitle: 'AutoEQ hodetelefonoppslag',
|
||
eqAutoEqPlaceholder: 'Søk etter hodetelefon- / IEM-modell…',
|
||
eqAutoEqSearching: 'Søker…',
|
||
eqAutoEqNoResults: 'Ingen resultater funnet',
|
||
eqAutoEqError: 'Søk mislyktes',
|
||
eqAutoEqRateLimit: 'GitHub-hastighetsgrense nådd - prøv igjen om ett minutt',
|
||
eqAutoEqFetchError: 'Kunne ikke hente EQ-profil',
|
||
behavior: 'App-oppførsel',
|
||
groupTray: 'Systemkurv',
|
||
groupLinuxRendering: 'Linux-gjengivelse',
|
||
groupClock: 'Klokke',
|
||
groupDisplay: 'Visning',
|
||
groupWindow: 'Vindu',
|
||
cacheTitle: 'Maks. lagringsstørrelse',
|
||
cacheDesc: 'Nettlesercache for plateomslag og artistbilder (IndexedDB). Når den er full, fjernes de eldste oppføringene automatisk.',
|
||
cacheUsed: 'Brukt: {{images}} bilder · {{offline}} frakoblede spor',
|
||
cacheUsedImages: 'Bilder:',
|
||
cacheUsedOffline: 'Frakoblede spor:',
|
||
cacheUsedHot: 'Plass brukt:',
|
||
hotCacheTrackCount: 'Spor i buffer:',
|
||
cacheMaxLabel: 'Maks størrelse',
|
||
imageCacheScopeLabel: 'Omfang',
|
||
imageCacheSubTitle: 'Forhåndsvisninger i nettleseren',
|
||
coverDiskCacheSubTitle: 'Plateomslag-cache på disk',
|
||
coverCacheStrategyTitle: 'Cache for plateomslag',
|
||
coverCacheStrategyDesc: 'Du kan velge en strategi for hver tjener: Lazy - last inn omslag ved behov; Aggressive - last inn ved behov pluss ekstra forhåndsinnlasting i bakgrunnen.',
|
||
coverCacheStrategyLabel: 'Strategi',
|
||
coverCacheStrategyServerLabel: 'Tjener',
|
||
coverCacheStrategyProgressLabel: 'Cache',
|
||
coverCacheStrategyActionsLabel: 'Handlinger',
|
||
coverCacheStrategyLazy: 'Lazy',
|
||
coverCacheStrategyLazyDesc: 'Laster inn omslag bare når de trengs.',
|
||
coverCacheStrategyAggressive: 'Aggressive',
|
||
coverCacheStrategyAggressiveDesc: 'Lazy-oppførsel pluss ekstra forhåndsinnlasting i bakgrunnen.',
|
||
coverCacheStrategyDiskUsage: 'På disk: {{size}}',
|
||
coverCacheStrategyProgressValue: '{{percent}}% ({{done}}/{{total}}) · {{size}}',
|
||
coverCacheStrategyClearAction: 'Tøm omslag-cache',
|
||
coverCacheStrategyClearTitle: 'Tøm omslag-cache?',
|
||
coverCacheStrategyClearDesc: 'Fjern alle bufrede plateomslag for {{server}}. De lastes ned igjen ved behov.',
|
||
coverCacheStrategyClearConfirm: 'Tøm',
|
||
coverCacheStrategyClearCancel: 'Avbryt',
|
||
coverCacheStrategyClearSuccess: 'Omslag-cache tømt for denne tjeneren.',
|
||
coverCacheStrategyClearError: 'Kunne ikke tømme omslag-cache.',
|
||
coverCacheStrategyServerRemoved: 'fjernet tjener',
|
||
cacheClearBtn: 'Tøm hurtigbuffer',
|
||
cacheClearWarning: 'Sletter alle bufrede omslag og artistbilder. De lastes ned igjen ved behov.',
|
||
cacheClearConfirm: 'Tøm bildecache',
|
||
cacheClearCancel: 'Avbryt',
|
||
mediaDirTitle: 'Mediemappe',
|
||
mediaDirDesc: 'Rotmappe for lokal avspilling. Frakoblet bibliotek: library/; købuffer: cache/.',
|
||
mediaDirDefault: 'Standard (App-data)',
|
||
mediaDirChange: 'Endre mappe',
|
||
mediaDirClear: 'Tilbakestill til standard',
|
||
mediaDirHint: 'Nye nedlastinger bruker denne plasseringen. Eksisterende filer blir på sin opprinnelige sti til du fjerner dem.',
|
||
offlineStorageTitle: 'Frakoblet lagring',
|
||
offlineDirTitle: 'Frakoblet bibliotek (In-App)',
|
||
offlineDirDesc: 'Lagringsplassering for spor som du gjør tilgjengelige som frakoblet i Psysonic.',
|
||
offlineDirDefault: 'Standard (App-data)',
|
||
offlineDirChange: 'Endre katalog',
|
||
offlineDirClear: 'Tilbakestill til standard',
|
||
offlineDirHint: 'Nye nedlastinger vil bruke denne plasseringen. Eksisterende nedlastinger forblir på sin opprinnelige lokasjon.',
|
||
hotCacheTitle: 'Varm avspillingsbuffer',
|
||
hotCacheDisclaimer: 'Forhåndshenter neste spor i køen og beholder tidligere. Når aktivert: diskplass og nettverk.',
|
||
hotCacheDirDefault: 'Standard (App-data)',
|
||
hotCacheDirChange: 'Endre mappe',
|
||
hotCacheDirClear: 'Tilbakestill til standard',
|
||
hotCacheDirHint: 'Bytte mappe nullstiller indeksen i appen; gamle filer blir liggende til du sletter dem.',
|
||
hotCacheEnabled: 'Aktiver varm avspillingsbuffer',
|
||
hotCacheMaxMb: 'Maks bufferstørrelse',
|
||
hotCacheDebounce: 'Utsettelse ved køendring',
|
||
hotCacheDebounceImmediate: 'Umiddelbart',
|
||
hotCacheDebounceSeconds: '{{n}} sek',
|
||
hotCacheClearBtn: 'Tøm varm buffer',
|
||
audioOutputDevice: 'Lydutgangsenhet',
|
||
audioOutputDeviceDesc: 'Velg hvilken lydenhet Psysonic spiller gjennom. Endringer trer i kraft umiddelbart og starter gjeldende spor på nytt.',
|
||
audioOutputDeviceDefault: 'Systemstandard',
|
||
audioOutputDeviceRefresh: 'Oppdater enhetsliste',
|
||
audioOutputDeviceOsDefaultNow: 'gjeldende systemutgang',
|
||
audioOutputDeviceListError: 'Kunne ikke laste listen over lydenheter.',
|
||
audioOutputDeviceNotInCurrentList: 'ikke i gjeldende liste',
|
||
audioOutputDeviceMacNotice: 'På macOS følger avspillingen av tekniske årsaker alltid systemets lydutgang. Endre målet via Systeminnstillinger → Lyd eller høyttalerikonet i menylinjen. Bakgrunn: CoreAudio utløser en mikrofontillatelsesdialog når en ikke-standard strøm åpnes — vi unngår det ved alltid å bruke systemets standardutgang.',
|
||
hiResTitle: 'Innebygd hi-res-avspilling',
|
||
hiResEnabled: 'Aktiver innebygd hi-res-avspilling',
|
||
hiResDesc: "Spiller hvert spor med sin opprinnelige samplingsrate i stedet for å nedsample alt til 44,1 kHz, og stiller utdataenheten etter filen (88,2 kHz og høyere). Aktiver kun hvis maskinvare og nettverk håndterer høye samplingsrater pålitelig.",
|
||
showArtistImages: 'Vis artistbilder',
|
||
showArtistImagesDesc: 'Last inn og vis artistbilder i artistoversikten. Denne er deaktivert som standard, for å redusere disk-I/O og nettverksbelastningen på store biblioteker.',
|
||
showOrbitTrigger: 'Vis «Orbit» i toppen',
|
||
showOrbitTriggerDesc: 'Knappen i toppen for å starte eller bli med i en delt lytteøkt. Skjul den hvis du ikke bruker Orbit — du kan slå den på igjen her.',
|
||
minimizeToTray: 'Minimer til oppgavelinjen',
|
||
minimizeToTrayDesc: 'Når vinduet lukkes, vil Psysonic bli kjørende i oppgavelinjen fremfor å bli avsluttet.',
|
||
clockFormat: 'Klokkeformat',
|
||
clockFormatDesc: 'Klokkevisning brukt av kø-ETA og forhåndsvisningen av hviletimeren.',
|
||
clockFormatAuto: 'Automatisk (systemspråk)',
|
||
clockFormatTwentyFour: '24-timers',
|
||
clockFormatTwelve: '12-timers (AM/PM)',
|
||
preloadMiniPlayer: 'Forhåndslast miniavspiller',
|
||
preloadMiniPlayerDesc: 'Bygger miniavspiller-vinduet i bakgrunnen ved appstart slik at det viser innhold umiddelbart ved første åpning. Bruker litt mer minne.',
|
||
linuxWebkitSmoothScroll: 'Mykt musehjul (Linux)',
|
||
linuxWebkitSmoothScrollDesc: 'På: treg rull med etterslep. Av: trinnvis som i GTK.',
|
||
linuxWebkitInputForceRepaint: 'Tegne om tekstfelt ved fokus (Linux)',
|
||
linuxWebkitInputForceRepaintDesc: 'Omgår WebKitGTK 2.50.x der tekstfelt fryser ved klikk. Søkeikoner blinker kort ved fokus.',
|
||
linuxWaylandTextRender: 'Wayland-tekstgjengivelse (Linux)',
|
||
linuxWaylandTextRenderDesc:
|
||
'Utjevning i grensesnittet skjer med én gang. WebKit-maskinvareakselerasjon (skarp/GPU) lagres og brukes ved neste appstart — live bytte kan fryse WebKitGTK.',
|
||
linuxWaylandTextRenderBalanced: 'Balansert',
|
||
linuxWaylandTextRenderSharp: 'Skarpt (CPU-vennlig)',
|
||
linuxWaylandTextRenderGpu: 'GPU først',
|
||
linuxWaylandTextRenderMinimal: 'Minimum (standard CSS-utjevning)',
|
||
discordRichPresence: 'Discord Rich Presence',
|
||
discordRichPresenceDesc: 'Vis sporet som spilles i din Discord-profil. Krever at Discord kjører.',
|
||
discordRichPresenceNotice: 'Merk: dette er den innebygde Discord Rich Presence i Psysonic. Vil du heller bruke det offisielle Navidrome Discord Rich Presence-tillegget, la denne funksjonen være av og aktiver i stedet «Vis i "Nå spiller"» lenger ned på denne siden.',
|
||
discordCoverTitle: 'Omslagskilde',
|
||
discordCoverDesc: 'Hvor albumomslaget på Discord-profilen din kommer fra.',
|
||
discordCoverNone: 'Ingen (kun app-ikon)',
|
||
discordCoverServer: 'Server (via albuminfo)',
|
||
discordCoverApple: 'Apple Music',
|
||
discordOptions: 'Avanserte Discord-alternativer',
|
||
discordTemplates: 'Egendefinerte tekstmaler',
|
||
discordTemplatesDesc: 'Tilpass hvilken informasjon som vises på Discord-profilen din. Variabler: {title}, {artist}, {album}',
|
||
discordTemplateDetails: 'Primær linje (details)',
|
||
discordTemplateState: 'Sekundær linje (state)',
|
||
discordTemplateLargeText: 'Album-verktøytips (largeText)',
|
||
discordTemplateName: 'Brukerliste-linje (name)',
|
||
nowPlayingEnabled: 'Vis i "Nå spiller"',
|
||
nowPlayingEnabledDesc: 'Send sporet som spilles av til tjenerens live-lyttervisning. Deaktiver for å stoppe sending av avspillingsdata.',
|
||
nowPlayingPluginNote: 'Nødvendig ved bruk av det offisielle Navidrome Discord Rich Presence-tillegget.',
|
||
enableBandsintown: 'Bandsintown-turnédatoer',
|
||
enableBandsintownDesc: 'Vis kommende konserter for gjeldende artist i Info-fanen. Data hentes fra det offentlige Bandsintown-API-et.',
|
||
lyricsServerFirst: 'Foretrekk server-sangtekst',
|
||
lyricsServerFirstDesc: 'Sjekk tjenerlevererte sangtekster (innebygde tagger, sidecar-filer) før LRCLIB. Deaktiver for å bruke LRCLIB først.',
|
||
enableNeteaselyrics: 'Netease Cloud Music sangtekster',
|
||
enableNeteaselyricsDesc: 'Bruk Netease Cloud Music som siste utvei når server og LRCLIB ikke finner noe. Best dekning for asiatisk og internasjonal musikk.',
|
||
lyricsSourcesTitle: 'Sangtekstkilder',
|
||
lyricsSourcesDesc: 'Velg hvilke kilder som skal brukes og i hvilken rekkefølge. Dra for å sortere. Deaktiverte kilder hoppes over.',
|
||
lyricsSourceServer: 'Tjener',
|
||
lyricsSourceLrclib: 'LRCLIB',
|
||
lyricsSourceNetease: 'Netease Cloud Music',
|
||
lyricsYouLyPlus: 'YouLyPlus (Karaoke)',
|
||
lyricsYouLyPlusDesc: 'Ord-for-ord-synkronisering fra en fellesskapsbackend (Apple Music, Spotify, Musixmatch, QQ). Prøves først; de aktiverte kildene under fungerer som reserve.',
|
||
lyricsSourcesFallbackHint: 'Brukes som reserve når YouLyPlus ikke finner noe. Dra for å endre rekkefølge.',
|
||
lyricsSourcesPrimaryHint: 'Prøves i rekkefølge. Dra for å endre rekkefølge. Alt av = tekster deaktivert.',
|
||
lyricsStaticOnly: 'Vis sangtekst som statisk tekst',
|
||
lyricsStaticOnlyDesc: 'Viser synkroniserte tekster uten auto-scroll og uten ord-utheving.',
|
||
downloadsTitle: 'ZIP Eksport & Arkivering',
|
||
downloadsFolderDesc: 'Målmappe for album du laster ned som en ZIP-fil til datamaskinen din.',
|
||
downloadsDefault: 'Standard nedlastingsmappe',
|
||
pickFolder: 'Velg',
|
||
pickFolderTitle: 'Velg nedlastingsmappe',
|
||
clearFolder: 'Tøm nedlastingsmappe',
|
||
logout: 'Logg ut',
|
||
aboutTitle: 'Om Psysonic',
|
||
aboutDesc: 'En moderne musikkspiller laget for Navidrome. Bruker Subsonic-API-en pluss Navidrome-spesifikke utvidelser. Bygget på Tauri v2 med en innebygd Rust-lydmotor — lett og rask, men fullpakket med funksjoner: bølgeform-søkelinje, synkroniserte sangtekster, Last.fm-integrasjon, 10-bånds jevnstiller, crossfade, gapless-avspilling, Replay Gain, sjangerlesing og et stort bibliotek med temaer.',
|
||
aboutLicense: 'Lisens',
|
||
aboutLicenseText: 'GNU GPL v3 - gratis å bruke, endre og distribuere under samme lisens.',
|
||
aboutRepo: 'Kildekode på GitHub',
|
||
aboutVersion: 'Versjon',
|
||
aboutBuiltWith: 'Bygget med Tauri · React · TypeScript · Rust/rodio',
|
||
aboutReleaseNotesLabel: 'Versjonsnotater',
|
||
aboutReleaseNotesLink: 'Åpne nyhetene for denne versjonen',
|
||
aboutContributorsLabel: 'Bidragsytere',
|
||
showChangelogOnUpdate: "Vis 'Hva er nytt' ved oppdatering til ny versjon",
|
||
showChangelogOnUpdateDesc: "Viser et diskret changelog-banner over Now Playing etter en oppdatering. Klikk åpner versjonsnotatene; X skjuler det.",
|
||
libraryGridMaxColumnsTitle: 'Kortrutenett i biblioteket',
|
||
libraryGridMaxColumnsPerfHint: 'Flere kolonner gir flere fliser per rad og kan øke layout- og tegnearbeid — merkbart på veldig store biblioteker eller tregere maskiner.',
|
||
libraryGridMaxColumnsRangeLabel: 'Maksimalt antall kolonner ({{min}}–{{max}})',
|
||
libraryGridMaxColumnsDesc: 'Gjelder album-, artist-, spilleliste-, radio-, offline- og andre kortbaserte bibliotekvisninger. Færre kolonner = større fliser og vanligvis mindre CPU-belastning.',
|
||
libraryIndexTitle: 'Lokalt biblioteksindeks (forhåndsvisning)',
|
||
libraryIndexDesc: 'Holder en lokal kopi av hver servers spordatabase slik at blaing og søk forblir raskt og fungerer offline. Første synkronisering kjører for alle konfigurerte servere; offline servere prøves automatisk på nytt.',
|
||
libraryIndexDeltaHint: 'Delta-synkronisering i bakgrunnen sjekker tilknyttede servere hvert 30. sekund og kjører når det er på tide — vanligvis hvert 5.–45. minutt avhengig av biblioteksstørrelse og belastning.',
|
||
libraryIndexEnable: 'Aktiver lokalt biblioteksindeks',
|
||
libraryIndexEnableAllDesc: 'Indekser og synkroniser alle konfigurerte servere i bakgrunnen.',
|
||
libraryIndexNoServer: 'Legg til en server først.',
|
||
libraryIndexServerListTitle: 'Indekserte servere',
|
||
libraryIndexAllExcluded: 'Alle servere er ekskludert fra synkronisering. Aktiver indeksen igjen eller legg til en server.',
|
||
libraryIndexServerOffline: 'Server offline — synkronisering utsatt',
|
||
libraryIndexServerSyncing: 'Synkroniserer…',
|
||
libraryIndexFullResync: 'Full resynkronisering',
|
||
libraryIndexDeltaSync: 'Delta-synkronisering',
|
||
libraryIndexExcludeServer: 'Ekskluder fra synkronisering',
|
||
libraryIndexExcludingServer: 'Ekskluderer…',
|
||
libraryIndexExcludedTitle: 'Ekskludert fra synkronisering',
|
||
libraryIndexIncludeServer: 'Inkluder igjen',
|
||
libraryIndexIncludingServer: 'Inkluderer…',
|
||
libraryIndexStatus: 'Status',
|
||
libraryIndexStatusIdle: 'Inaktiv',
|
||
libraryIndexStatusProbing: 'Sjekker server…',
|
||
libraryIndexStatusInitial: 'Første synkronisering…',
|
||
libraryIndexStatusReady: 'Klar ({{count}} spor)',
|
||
libraryIndexStatusError: 'Feil — se logger',
|
||
libraryIndexProgressIngest: '{{count}} spor indeksert…',
|
||
libraryIndexProgressVerify: '{{checked}} verifisert ({{deleted}} fjernet)',
|
||
libraryIndexSyncNow: 'Synkroniser nå',
|
||
libraryIndexVerify: 'Verifiser bibliotekets integritet',
|
||
libraryIndexCancel: 'Avbryt',
|
||
libraryIndexAutoReconcile: 'Auto-avstemming ved fall i antall',
|
||
libraryIndexAutoReconcileDesc: 'Sjekker automatisk etter fjernede spor når serveren rapporterer færre enn forventet.',
|
||
libraryIndexSyncError: 'Biblioteksynkronisering mislyktes: {{error}}',
|
||
libraryIndexBindError: 'Kunne ikke aktivere indeks: {{error}}',
|
||
randomMixTitle: 'Svarteliste for tilfeldig miks',
|
||
luckyMixMenuTitle: 'Vis Lykkemiks i menyen',
|
||
luckyMixMenuDesc: 'Aktiverer Lykkemiks i "Lag en miks" og som eget menypunkt når delt navigasjon er aktiv. Vises bare når AudioMuse er aktiv på gjeldende server.',
|
||
randomMixBlacklistTitle: 'Egendefinerte filternøkkelord',
|
||
randomMixBlacklistDesc: 'Sanger ekskluderes når et nøkkelord samsvarer med sjanger, tittel, album eller artist (aktiv når avkrysningsboksen ovenfor er på).',
|
||
randomMixBlacklistPlaceholder: 'Legg til nøkkelord…',
|
||
randomMixBlacklistAdd: 'Legg til',
|
||
randomMixBlacklistEmpty: 'Ingen egendefinerte nøkkelord lagt til ennå.',
|
||
randomMixHardcodedTitle: 'Innebygde nøkkelord (aktiv når avkrysningsboksen er på)',
|
||
tabPlayback: 'Avspilling',
|
||
tabLibrary: 'Bibliotek',
|
||
tabServers: 'Servere',
|
||
tabLyrics: 'Sangtekster',
|
||
tabPersonalisation: 'Personalisering',
|
||
tabIntegrations: 'Integrasjoner',
|
||
tabAppearance: 'Utseende',
|
||
tabThemes: 'Temaer',
|
||
themesYourThemesTitle: 'Dine temaer',
|
||
themesCvdTooltip: 'Fargeblind-sikker – deuteranopi, protanopi, tritanopi',
|
||
themeAnimationWarning: 'Dette temaet bruker animasjoner som kan øke CPU-bruken på oppsettet ditt (Nvidia/Linux eller compositing av).',
|
||
themeStoreTitle: 'Temabutikk',
|
||
themeStoreSubmitText: 'Laget ditt eget tema? Del det med fellesskapet — mer info i tema-repoet.',
|
||
themeStoreSubmitLink: 'Åpne tema-repoet',
|
||
themeStoreNetworkNotice: 'Theme Store laster katalogen og forhåndsvisninger fra GitHub. Ingen personopplysninger sendes.',
|
||
themeStoreStatsNotice: 'Sist endret-datoene oppdateres én gang om dagen (rundt 04:17 UTC).',
|
||
themeStoreSearchPlaceholder: 'Søk i temaer…',
|
||
themeStoreFilterMode: 'Filtrer etter modus',
|
||
themeStoreModeAll: 'Alle',
|
||
themeStoreModeDark: 'Mørk',
|
||
themeStoreModeLight: 'Lys',
|
||
themeStoreRefresh: 'Oppdater',
|
||
themeStoreLoading: 'Laster temaer…',
|
||
themeStoreError: 'Kunne ikke laste temabutikken. Sjekk tilkoblingen din.',
|
||
themeStoreRetry: 'Prøv igjen',
|
||
themeStoreOfflineTitle: 'Theme Store er frakoblet',
|
||
themeStoreEmpty: 'Ingen temaer samsvarer med filtrene dine.',
|
||
themeStoreActive: 'Aktiv',
|
||
themeStoreEnlarge: 'Forstørr forhåndsvisning',
|
||
themeStoreSortNewest: 'Nyeste',
|
||
themeStoreSortName: 'Alfabetisk',
|
||
themeStoreAnimAll: 'Alle',
|
||
themeStoreAnimAnimated: 'Animerte',
|
||
themeStoreAnimStatic: 'Statiske',
|
||
themeStoreByAuthor: 'av {{author}}',
|
||
themeStoreLastChanged: 'Sist endret',
|
||
themeMigrationNoticeTitle: 'Temaet er flyttet til butikken',
|
||
themeMigrationNoticeBody: '{{themes}} følger ikke lenger med appen. Du kan installere det på nytt fra temabutikken (Innstillinger → Temaer), eller velge et annet tema.',
|
||
themeMigrationNoticeOpen: 'Åpne temabutikken',
|
||
themeStoreOffline: 'Viser den sist bufrede katalogen — du ser ut til å være frakoblet.',
|
||
themeStoreInstall: 'Installer',
|
||
themeStoreInstalling: 'Installerer…',
|
||
themeStoreApply: 'Bruk',
|
||
themeStoreUpdate: 'Oppdater',
|
||
themeStoreUpdating: 'Oppdaterer…',
|
||
themeStoreUninstall: 'Avinstaller',
|
||
themeStoreInstallFailed: 'Installasjonen mislyktes',
|
||
themeStorePagePrev: 'Forrige side',
|
||
themeStorePageNext: 'Neste side',
|
||
themeStorePageStatus: 'Side {{page}} av {{total}}',
|
||
themeImportTitle: 'Importer et tema',
|
||
themeImportButton: 'Importer tema…',
|
||
themeImporting: 'Importerer…',
|
||
themeImportHint: 'Laster inn et tema pakket som .zip (manifest.json + theme.css).',
|
||
themeImportSuccess: '«{{name}}» importert.',
|
||
themeImportErrorTitle: 'Dette temaet kunne ikke importeres',
|
||
themeImportErrorBody: 'Det samsvarer ikke med Psysonic-temaformatet. Det kan være laget for en annen versjon, eller filen er ufullstendig — sjekk at du valgte riktig .zip, eller spør temaets forfatter.',
|
||
themeImportErrorDetails: 'Tekniske detaljer',
|
||
themeImportConfirmTitle: 'Installere tema?',
|
||
themeImportConfirmBody: 'Installere «{{name}}» av {{author}}?',
|
||
themeImportConfirmRisk: 'Importerte temaer blir ikke gjennomgått — installer bare temaer du stoler på.',
|
||
tabStorage: 'Frakoblet & Cache',
|
||
inputKeybindingsTitle: 'Tastatursnarveier',
|
||
aboutContributorsCount_one: '{{count}} bidrag',
|
||
aboutContributorsCount_other: '{{count}} bidrag',
|
||
searchPlaceholder: 'Søk i innstillinger…',
|
||
searchNoResults: 'Ingen innstillinger samsvarer med søket ditt.',
|
||
aboutMaintainersLabel: 'Ansvarlige',
|
||
integrationsPrivacyTitle: 'Personvern-merknad',
|
||
integrationsPrivacyBody: 'Alle integrasjoner på denne fanen er <strong>frivillige</strong> og sender, når aktivert, data til eksterne tjenester eller til Navidrome-serveren din. Last.fm mottar lyttehistorikken din, Discord viser gjeldende spor i profilen din, Bandsintown spørres per artist for turnédatoer, og "Spilles nå"-delingen publiserer gjeldende spor til andre brukere av Navidrome-serveren din. Hvis du ikke ønsker noe av dette, la den aktuelle seksjonen stå deaktivert.',
|
||
homeCustomizerTitle: 'Hovedscene',
|
||
queueModeTitle: 'Visningsmodus for kø',
|
||
queueModeQueueSub: 'Viser bare kommende spor. Det gjeldende sporet blir i toppen og forsvinner fra listen når det er spilt.',
|
||
queueModePlaylistSub: 'Beholder hele køen i listen med gjeldende spor uthevet øverst; avspilte spor blir værende.',
|
||
queueModeTimelineSub: 'Sentrer gjeldende spor, med avspilt historikk over og kommende spor (i shuffle-rekkefølge) under.',
|
||
queueToolbarTitle: 'Kø-verktøylinje',
|
||
queueToolbarReset: 'Tilbakestill til standard',
|
||
queueToolbarSeparator: 'Skilje',
|
||
sidebarTitle: 'Sidefelt',
|
||
sidebarReset: 'Tilbakestill til standard',
|
||
artistLayoutTitle: 'Artistsidens seksjoner',
|
||
artistLayoutDesc: 'Dra for å omorganisere, veksle for å skjule individuelle seksjoner av artistsiden. Seksjoner uten data hoppes over automatisk.',
|
||
artistLayoutReset: 'Tilbakestill til standard',
|
||
artistLayoutBio: 'Artistbiografi',
|
||
artistLayoutTopTracks: 'Toppspor',
|
||
artistLayoutSimilar: 'Lignende artister',
|
||
artistLayoutAlbums: 'Album',
|
||
artistLayoutFeatured: 'Også med på',
|
||
playlistLayoutTitle: 'Sideoppsett for spilleliste',
|
||
playlistLayoutDesc: 'Vis eller skjul individuelle elementer på spillelistesiden.',
|
||
playlistLayoutReset: 'Tilbakestill til standard',
|
||
playerBarTitle: 'Spillerlinje',
|
||
playerBarReset: 'Tilbakestill til standard',
|
||
playerBarStarRating: 'Stjernevurdering',
|
||
playerBarFavorite: 'Favoritt (hjerte)',
|
||
playerBarLastfmLove: 'Lik-knapp',
|
||
playerBarPlaybackRate: 'Avspillingshastighet',
|
||
playerBarEqualizer: 'Equalizer',
|
||
playerBarMiniPlayer: 'Miniavspiller',
|
||
playbackRateTitle: 'Avspillingshastighet',
|
||
playbackRateEnabled: 'Aktiver avspillingshastighet',
|
||
playbackRateEnabledDesc: 'Global hastighet for alle spor. Gjelder ikke radio og forhåndsvisninger.',
|
||
playbackRateStrategy: 'Strategi',
|
||
playbackRateStrategySpeed: 'Hastighet',
|
||
playbackRateStrategyVarispeed: 'Med tone',
|
||
playbackRateStrategyVarispeedSemitones: 'Halvtoner',
|
||
playbackRateStrategyPreserve: 'Tonehøyde',
|
||
playbackRateStrategySpeedTip: 'Endrer tempoet; tonehøyden korrigeres automatisk.',
|
||
playbackRateStrategyVarispeedTip: 'Hastighet og tonehøyde endres sammen, som på bånd. Tonehøyde fra hastighet: 12 × log2(hastighet).',
|
||
playbackRateStrategyVarispeedSemitonesTip: 'Som « Med tone », men stilt inn direkte i halvtoner. Hastighet = 2^(ht/12).',
|
||
playbackRateStrategyPreserveTip: 'Justerbart tempo pluss en manuell tonehøydeforskyvning (±12 ht).',
|
||
playbackRateSpeed: 'Hastighet',
|
||
playbackRatePitch: 'Tonehøyde',
|
||
playbackRateDerivedPitch: 'Tonehøydeforskyvning fra hastighet: {{value}}',
|
||
playbackRateDerivedSpeed: 'Hastighet fra halvtoner: {{value}}',
|
||
playbackRateFineStep: 'Finjustering',
|
||
playbackRateFineStepDesc: 'Mindre glidebryter-steg: 0,01× for hastighet og 0,01 ht for tonehøyde.',
|
||
playbackRateAutoPitch: 'Tonehøyden korrigeres automatisk.',
|
||
playbackRateHint: '« Hastighet » beholder naturlig tonehøyde. « Med tone » endrer tonehøyden med hastigheten. « Med tone (halvtoner) » stiller denne endringen direkte i halvtoner. « Tonehøyde » legger til manuell forskyvning. Mer CPU enn « Med tone ». Ikke for radio, forhåndsvisninger eller Orbit.',
|
||
playbackRateNeutral: 'Ved 1,0× og uten toneforskyvning er avspilling normal.',
|
||
playbackRateOrbitPaused: 'Ikke aktiv under Orbit-økter — avspilling forblir 1,0× for synk.',
|
||
playbackRateOrbitPausedShort: 'Orbit: 1,0× for synk.',
|
||
advancedMode: 'Avansert',
|
||
advancedModeTooltip: 'Vis avanserte alternativer i alle innstillinger-faner. Bidrag fra fellesskapet som ikke nødvendigvis gjenspeiler design-filosofien til Psysonic-vedlikeholderne.',
|
||
advancedBadge: 'Avansert',
|
||
sidebarDrag: 'Dra for å endre rekkefølge',
|
||
sidebarFixed: 'Alltid synlig',
|
||
nowPlayingTopTitle: '"Spilles nå" øverst',
|
||
nowPlayingTopDesc: 'Fest "Spilles nå" øverst i sidefeltet i stedet for nederst.',
|
||
randomNavSplitTitle: 'Del Mix-navigasjon',
|
||
randomNavSplitDesc: 'Vis "Tilfeldig miks", "Tilfeldige album" og "Lykkemiks" som separate sidefeltsoppføringer i stedet for "Lag en miks"-huben.',
|
||
tabShortcuts: 'Snarveier',
|
||
tabUsers: 'Brukere',
|
||
tabSystem: 'System',
|
||
loggingTitle: 'Loggføring',
|
||
loggingModeDesc: 'Styrer hvor detaljert backend-loggene i terminalen er.',
|
||
loggingModeOff: 'Av',
|
||
loggingModeNormal: 'Normal',
|
||
loggingModeDebug: 'Debug',
|
||
loggingExport: 'Eksporter logger',
|
||
loggingExportSuccess: 'Logger eksportert ({{count}} linjer).',
|
||
loggingExportError: 'Kunne ikke eksportere logger.',
|
||
ratingsSectionTitle: 'Vurderinger',
|
||
ratingsSkipStarTitle: 'Hopp for 1 stjerne',
|
||
ratingsSkipStarDesc:
|
||
'Etter flere hopp på rad: sett sporet til 1 stjerne. Bare for spor som ikke var vurdert før.',
|
||
ratingsSkipStarThresholdLabel: 'Hopp',
|
||
ratingsMixFilterTitle: 'Filtrering etter vurdering',
|
||
ratingsMixFilterDesc:
|
||
'Filtrer innhold med lav vurdering i {{mix}} og {{albums}}. Klikk på den valgte stjerna igjen for å slå av terskelen.',
|
||
ratingsMixMinSong: 'Spor',
|
||
ratingsMixMinAlbum: 'Album',
|
||
ratingsMixMinArtist: 'Artister',
|
||
ratingsMixMinThresholdAria: 'Minimum stjerner: {{label}}',
|
||
backupTitle: 'Sikkerhetskopiering og gjenoppretting',
|
||
backupExport: 'Eksporter innstillinger',
|
||
backupExportDesc: 'Lagrer alle innstillinger, tjenerprofiler, Last.fm-konfigurasjon, tema, jevnstiller og tastebindinger til en .psybkp-fil. Passordet lagres i klartekst – hold filen sikker.',
|
||
backupImport: 'Importer innstillinger',
|
||
backupImportDesc: 'Gjenoppretter innstillinger fra en .psybkp-fil. Applikasjonen starter på nytt etter import.',
|
||
backupImportConfirm: 'Dette vil overskrive alle gjeldende innstillinger. Vil du fortsette?',
|
||
backupSuccess: 'Sikkerhetskopiering lagret',
|
||
backupImportSuccess: 'Innstillinger gjenopprettet – laster inn data på nytt…',
|
||
backupImportError: 'Ugyldig eller ødelagt fil for sikkerhetskopi.',
|
||
shortcutsReset: 'Tilbakestill til standardinnstillinger',
|
||
shortcutListening: 'Trykk på en tast…',
|
||
shortcutUnbound: '-',
|
||
globalShortcutsTitle: 'Globale snarveier',
|
||
globalShortcutsNote: 'Arbeid systemomfattende selv når Psysonic er i bakgrunnen. Krever Ctrl, Alt eller Super som modifikator.',
|
||
shortcutClear: 'Fjern',
|
||
shortcutPlayPause: 'Spill av / Pause',
|
||
shortcutNext: 'Neste spor',
|
||
shortcutPrev: 'Forrige spor',
|
||
shortcutVolumeUp: 'Volum opp',
|
||
shortcutVolumeDown: 'Volum ned',
|
||
shortcutSeekForward: 'Søk fremover 10 sekunder',
|
||
shortcutSeekBackward: 'Søk bakover 10 sekunder',
|
||
shortcutToggleQueue: 'Veksle kø',
|
||
shortcutOpenFolderBrowser: 'Åpne {{folderBrowser}}',
|
||
shortcutFullscreenPlayer: 'Fullskjermsspiller',
|
||
shortcutNativeFullscreen: 'Naturlig fullskjerm',
|
||
shortcutOpenMiniPlayer: 'Åpne minispiller',
|
||
shortcutStartSearch: 'Start et søk',
|
||
shortcutStartAdvancedSearch: 'Start et avansert søk',
|
||
shortcutToggleSidebar: 'Veksle sidefelt',
|
||
shortcutMuteSound: 'Demp lyd',
|
||
shortcutToggleEqualizer: 'Åpne / veksle Equalizer',
|
||
shortcutToggleRepeat: 'Veksle gjenta',
|
||
shortcutOpenNowPlaying: 'Åpne "Spilles nå"',
|
||
shortcutShowLyrics: 'Vis sangtekst',
|
||
shortcutFavoriteCurrentTrack: 'Legg gjeldende spor til favoritter',
|
||
shortcutOpenHelp: 'Hjelp',
|
||
playbackTitle: 'Avspilling',
|
||
replayGain: 'Replay Gain',
|
||
replayGainDesc: 'Normaliser sporvolumet ved hjelp av ReplayGain-metadata',
|
||
replayGainMode: 'Modus',
|
||
replayGainAuto: 'Auto',
|
||
replayGainAutoDesc: 'Bruker albumforsterkning når nabospor i køen er fra samme album, ellers sporforsterkning.',
|
||
replayGainTrack: 'Spor',
|
||
replayGainAlbum: 'Album',
|
||
replayGainPreGain: 'Pre-Gain (taggede filer)',
|
||
replayGainPreGainDesc: 'Universelt løft som legges på hver ReplayGain-beregning. Nyttig hvis biblioteket ditt totalt sett virker for stille.',
|
||
replayGainFallback: 'Reserveverdi (uten tagger / radio)',
|
||
replayGainFallbackDesc: 'Brukes for spor (og radiostrømmer) uten ReplayGain-tagger, slik at utagget innhold ikke spretter høyere enn resten.',
|
||
normalization: 'Normalisering',
|
||
normalizationDesc: 'Jevn ut opplevd loudness mellom spor, album og radio.',
|
||
normalizationOff: 'Av',
|
||
normalizationReplayGain: 'ReplayGain',
|
||
normalizationLufs: 'LUFS',
|
||
loudnessTargetLufs: 'Mål-LUFS',
|
||
loudnessTargetLufsDesc: 'Referanse-loudness alle spor matches mot. Lavere tall = høyere utgang. Strømmetjenester ligger vanligvis rundt -14 LUFS.',
|
||
loudnessPreAnalysisAttenuation: 'Demping før måling',
|
||
loudnessPreAnalysisAttenuationDesc:
|
||
'Ekstra demping til loudness for sporet er lagret. Streaming bruker deretter grove anslag, ikke full måling. 0 dB = av; lavere = roligere. Til høyre vises effektiv dB for valgt mål.',
|
||
loudnessPreAnalysisAttenuationRef: 'Effektivt {{eff}} dB med mål {{tgt}} LUFS.',
|
||
loudnessPreAnalysisAttenuationReset: 'Standard',
|
||
loudnessFirstPlayNote:
|
||
'Første avspilling av et helt nytt spor kan drive litt i volum mens målingen skjer. Neste gang brukes den lagrede målingen, og alt blir stabilt. Kommende spor i køen blir vanligvis pre-analysert mens det forrige spilles, så dette skjer sjelden i praksis.',
|
||
crossfade: 'Crossfade',
|
||
crossfadeSecs: '{{n}}s',
|
||
autoDj: 'AutoDJ',
|
||
autoDjDesc: 'Ingen fast varighet — AutoDJ følger selve lyden og overlapper ekte inn-/uttoninger i stedet for et fast antall sekunder. For pålitelige resultater bør du aktivere Varm avspillingsbuffer.',
|
||
gapless: 'Gapless avspilling',
|
||
transitionsTitle: 'Overganger mellom spor',
|
||
transitionsDesc: 'Hvordan etterfølgende spor går over i hverandre. Bare én modus kan være aktiv om gangen.',
|
||
transitionOff: 'Av',
|
||
queueBehaviourTitle: 'Køoppførsel',
|
||
preservePlayNextOrder: 'Behold "Spill neste"-rekkefølge',
|
||
preservePlayNextOrderDesc: 'Nye "Spill neste"-elementer havner bak de eksisterende i stedet for å snike seg foran.',
|
||
trackPreviewsTitle: 'Sporforhåndsvisning',
|
||
trackPreviewsToggle: 'Aktiver sporforhåndsvisning',
|
||
trackPreviewsDesc: 'Vis innebygde Spill- og Forhåndsvisning-knapper i sporlister for en kort smakebit fra midten av sangen.',
|
||
trackPreviewStart: 'Startposisjon',
|
||
trackPreviewStartDesc: 'Hvor langt inn i sporet forhåndsvisningen starter (% av lengden).',
|
||
trackPreviewDuration: 'Varighet',
|
||
trackPreviewDurationDesc: 'Hvor lenge hver forhåndsvisning spiller før den stopper.',
|
||
trackPreviewDurationSecs: '{{n}} s',
|
||
trackPreviewLocationsTitle: 'Hvor forhåndsvisninger vises',
|
||
trackPreviewLocationsDesc: 'Velg hvilke lister som viser forhåndsvisningsknapper.',
|
||
trackPreviewLocation_suggestions: 'I spillelisteforslag',
|
||
trackPreviewLocation_albums: 'I albumsporlister',
|
||
trackPreviewLocation_playlists: 'I spillelister',
|
||
trackPreviewLocation_favorites: 'I favoritter',
|
||
trackPreviewLocation_artist: 'I artistens toppspor',
|
||
trackPreviewLocation_randomMix: 'I Random Mix',
|
||
infiniteQueue: 'Uendelig kø',
|
||
infiniteQueueDesc: 'Legg automatisk til tilfeldige spor når køen går tom',
|
||
experimental: 'Eksperimentell',
|
||
nextTrackBufferingTitle: 'Bufring',
|
||
sidebarLyricsStyle: 'Rullestil for tekst',
|
||
sidebarLyricsStyleClassic: 'Klassisk',
|
||
sidebarLyricsStyleClassicDesc: 'Aktiv linje sentreres.',
|
||
sidebarLyricsStyleApple: 'Apple Music-like',
|
||
sidebarLyricsStyleAppleDesc: 'Aktiv linje forankres øverst med jevn animasjon.',
|
||
seekbarStyle: 'Søkefelt-stil',
|
||
seekbarStyleDesc: 'Velg utseendet på avspillingssøkefeltet',
|
||
seekbarTruewave: 'Ekte bølgeform',
|
||
seekbarPseudowave: 'Pseudo-bølgeform',
|
||
seekbarLinedot: 'Linje & punkt',
|
||
seekbarBar: 'Linje',
|
||
seekbarThick: 'Tykk linje',
|
||
seekbarSegmented: 'Segmentert',
|
||
seekbarNeon: 'Neon',
|
||
seekbarPulsewave: 'Pulsbølge',
|
||
seekbarParticletrail: 'Partikkelspor',
|
||
seekbarLiquidfill: 'Væskerør',
|
||
seekbarRetrotape: 'Retrotape',
|
||
themeSchedulerTitle: 'Tidsplanlagt tema',
|
||
themeSchedulerEnable: 'Aktiver temaplanlegger',
|
||
themeSchedulerEnableSub: 'Bytter automatisk mellom to temaer basert på tidspunkt',
|
||
themeSchedulerDayTheme: 'Dagtema',
|
||
themeSchedulerDayStart: 'Dag starter kl.',
|
||
themeSchedulerNightTheme: 'Natttema',
|
||
themeSchedulerNightStart: 'Natt starter kl.',
|
||
themeSchedulerActiveHint: 'Temaplanlegger er aktiv - temaer byttes automatisk.',
|
||
visualOptionsTitle: 'Visuelle Alternativer',
|
||
coverArtBackground: 'Cover-bakgrunn',
|
||
coverArtBackgroundSub: 'Vis uskarpt cover som bakgrunn i album/playlist-overskrifter',
|
||
playlistCoverPhoto: 'Playlist-coverfoto',
|
||
playlistCoverPhotoSub: 'Vis coverfoto-rutenett i playlist-detailedvisning',
|
||
showBitrate: 'Vis Bitrate',
|
||
showBitrateSub: 'Vis audio-bitrate i sporlister',
|
||
floatingPlayerBar: 'Flytende Spillerlinje',
|
||
floatingPlayerBarSub: 'Hold spillerlinjen flytende over innholdet',
|
||
uiScaleTitle: 'Grensesnittskala',
|
||
uiScaleLabel: 'Zoom',
|
||
confirmDeleteServerLibrary: 'Vil du også slette denne serverens lokale bibliotekindeks? Klikk Avbryt for å beholde den bufrede kopien for offline bruk.',
|
||
waveformCacheClearBtn: 'Tøm waveform-cache',
|
||
waveformCacheCleared: 'Waveform-cache tømt ({{count}} rader).',
|
||
waveformCacheClearFailed: 'Kunne ikke tømme waveform-cache.',
|
||
showTrayIcon: 'Vis systemstatusikon',
|
||
showTrayIconDesc: 'Vis Psysonic-ikonet i systemstatusfeltet / menylinjen.',
|
||
useCustomTitlebar: 'Tilpasset tittellinje',
|
||
useCustomTitlebarDesc: 'Erstatt systemets tittellinje med en innebygd som matcher app-temaet. Slå av for å bruke den native GNOME/GTK-tittellinjen.',
|
||
windowButtonStyle: 'Vindusknapper',
|
||
windowButtonStyleDesc: 'Velg utseendet på knappene for minimer, maksimer og lukk.',
|
||
windowButtonsDots: 'Prikker',
|
||
windowButtonsDotsGlyph: 'Prikker + ikoner',
|
||
windowButtonsFlat: 'Flat',
|
||
windowButtonsPill: 'Pille',
|
||
windowButtonsOutline: 'Omriss',
|
||
windowButtonsGlyph: 'Minimal',
|
||
showMinimizeButton: 'Vis minimer-knapp',
|
||
showMinimizeButtonDesc: 'Slå av for å vise bare maksimer og lukk.',
|
||
analyticsStrategyTitle: 'Analysestrategier',
|
||
analyticsStrategyDesc: 'Velg analysestil for biblioteket.',
|
||
analyticsStrategyLabel: 'Strategi',
|
||
analyticsStrategyLazy: 'Lat',
|
||
analyticsStrategyLazyDesc: 'Analyserer bare når spor spiller eller går inn i hot/offline-cache — minimalt CPU- og nettverksbruk.',
|
||
analyticsStrategyAdvanced: 'Aggressiv',
|
||
analyticsStrategyAdvancedDesc: 'Mer aggressiv bakgrunnsskanning. Når den er ferdig får du BPM for alle spor samt umiddelbar lasting av loudness og waveform.',
|
||
analyticsStrategyPriorityTitle: 'Analyseprioritet (alltid aktiv)',
|
||
analyticsStrategyPriorityHigh: '1 — Spiller nå: last ned og analyser først (avspillingsbytes, loudness-backfill eller HTTP ved behov).',
|
||
analyticsStrategyPriorityMiddle: '2 — Neste opp: de neste ~5 køsporene og hot-cache-naboer — analyser fra cache/nedlastede bytes når mulig; HTTP-backfill kun ved bom.',
|
||
analyticsStrategyPriorityLow: '3 — Bibliotekbatch (kun Aggressiv): automatisk bakgrunnskø bakerst; fylles på ved watermark (~3× workers) uten å vente på tom kø.',
|
||
analyticsStrategyServerLabel: 'Server',
|
||
analyticsStrategyProgressLabel: 'Analysefremdrift:',
|
||
analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})',
|
||
analyticsStrategyActionsLabel: 'Handlinger',
|
||
analyticsStrategyParallelismLabel: 'Parallelle workers',
|
||
analyticsStrategyParallelismValue: '{{n}} tråder',
|
||
analyticsStrategyParallelismDesc: 'Hvor mange spor som lastes ned og analyseres samtidig (HTTP + CPU). Høyere verdi gjør bibliotekinnhentingen raskere, men bruker mer nettverk og CPU.',
|
||
analyticsStrategyAdvancedWarning: 'Aggressiv bruker mer CPU og nettverksbåndbredde mens bibliotekbatchen kjører i bakgrunnen.',
|
||
analyticsStrategyServerRemoved: 'Fjernet server',
|
||
analyticsStrategyClearAction: 'Tøm analyse',
|
||
analyticsStrategyClearTitle: 'Tøm analyse?',
|
||
analyticsStrategyClearDesc: 'Å tømme analyse for {{server}} fjerner bufrede waveforms og loudness. Å legge til serveren igjen senere kan kreve lang reindeksering.',
|
||
analyticsStrategyClearCancel: 'Avbryt',
|
||
analyticsStrategyClearConfirm: 'Tøm analyse',
|
||
analyticsStrategyClearSuccess: 'Analyse tømt for den fjernede serveren.',
|
||
analyticsStrategyClearError: 'Kunne ikke tømme analyse for den fjernede serveren.',
|
||
analyticsStrategyProgressEmptyAfterFailed: '100% (0/0, blokkert av feilede spor)',
|
||
analyticsFailedTracksOpenTitle: 'Feilede spor: {{count}}',
|
||
analyticsFailedTracksTitle: 'Feilede analysespor — {{server}}',
|
||
analyticsFailedTracksDesc: 'Disse sporene feilet gjentatte ganger i decode/enrichment og er ekskludert fra automatisk bakgrunnsanalyse.',
|
||
analyticsFailedTracksLoading: 'Laster liste over feilede spor…',
|
||
analyticsFailedTracksEmpty: 'Ingen feilede spor for denne serveren.',
|
||
analyticsFailedTracksClose: 'Lukk',
|
||
analyticsFailedTracksExport: 'Eksporter liste',
|
||
analyticsFailedTracksExportSuccess: 'Liste over feilede spor eksportert ({{count}}).',
|
||
analyticsFailedTracksExportError: 'Kunne ikke eksportere liste over feilede spor.',
|
||
analyticsFailedTracksRescan: 'Skann feilede spor på nytt',
|
||
analyticsFailedTracksRescanSuccess: 'Ny skanning planlagt for {{count}} feilede spor.',
|
||
analyticsFailedTracksRescanError: 'Kunne ikke skanne feilede spor på nytt.',
|
||
analyticsFailedTracksLoadError: 'Kunne ikke laste feilede spor.',
|
||
tabAudio: 'Lyd',
|
||
tabInput: 'Inndata',
|
||
backupImportAny: 'Importer sikkerhetskopi',
|
||
backupImportAnyConfirm: 'Importer valgt sikkerhetskopifil og bruk innholdet (innstillinger, bibliotekdatabaser eller full). Fortsette?',
|
||
backupModeFull: 'Full',
|
||
backupModeLibrary: 'Bibliotekdatabaser',
|
||
backupModeConfig: 'Konfig',
|
||
backupFullDesc: 'Arkiverer innstillinger og bibliotekdatabaser i én sikkerhetskopifil.',
|
||
backupFullExport: 'Eksporter full sikkerhetskopi',
|
||
backupFullImport: 'Importer full sikkerhetskopi',
|
||
backupFullImportConfirm: 'Dette vil overskrive innstillinger, erstatte nåværende bibliotekdatabaser og flytte dem til .bak. Fortsette?',
|
||
backupFullExportSuccess: 'Full sikkerhetskopi eksportert.',
|
||
backupFullImportSuccess: 'Full sikkerhetskopi importert — laster inn på nytt…',
|
||
backupFullImportError: 'Kunne ikke importere full sikkerhetskopi.',
|
||
backupLibraryExport: 'Eksporter databaser',
|
||
backupLibraryExportDesc: 'Lager et komprimert arkiv med rene SQLite-øyeblikksbilder av bibliotekdatabaser.',
|
||
backupLibraryImport: 'Importer databaser',
|
||
backupLibraryImportDesc: 'Gjenoppretter bibliotekdatabaser fra en arkivfil. Nåværende databaser flyttes til .bak før bytte.',
|
||
backupLibraryImportConfirm: 'Dette vil erstatte nåværende bibliotekdatabaser og flytte dem til .bak. Fortsette?',
|
||
backupLibraryExportSuccess: 'Databasesikkerhetskopi eksportert.',
|
||
backupLibraryImportSuccess: 'Databasesikkerhetskopi importert.',
|
||
backupLibraryImportError: 'Kunne ikke importere databasesikkerhetskopi.',
|
||
backupOverlayExportTitle: 'Oppretter sikkerhetskopi…',
|
||
backupOverlayImportTitle: 'Gjenoppretter sikkerhetskopi…',
|
||
backupOverlayHint: 'Du kan holde vinduet åpent mens vi behandler filer. Inndata er midlertidig låst.',
|
||
};
|