From 3c1ac602fb053d2711824033657f38085a0e7f53 Mon Sep 17 00:00:00 2001 From: fabiodalez-dev Date: Wed, 22 Jul 2026 10:54:13 +0200 Subject: [PATCH 1/7] feat(#279): add Danish (da_DK) language support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Danish as a full, selectable language, from HansUwe52's translation. UI strings — locale/da_DK.json (6579 keys, exact parity + order with it_IT): - Repaired Uwe's file: 10 keys had their KEY text corrupted by his translation tool (e.g. "questo"→"este", stripped ": "Koden vil blive indsat i et -tag i headeren. Inkluder ikke -tags", + "Il cron utilizza gli stessi permessi dell'utente di sistema che lo esegue": "Cron bruger de samme rettigheder som den systembruger, der kører det", + "Il database '%s' non è vuoto. Deve essere un database vuoto.": "Databasen '%s' er ikke tom. Det skal være en tom database.", + "Il database deve essere vuoto.": "Databasen skal være tom.", + "Il database è coerente e non sono stati rilevati problemi.": "Databasen er konsistent, og der er ikke fundet nogen problemer.", + "Il database è già ottimizzato!": "Databasen er allerede optimeret!", + "Il database è stato installato, ma mancano le librerie PHP necessarie per eseguire l'applicazione.": "Databasen er blevet installeret, men de nødvendige PHP-biblioteker til at køre applikationen mangler.", + "Il download dovrebbe iniziare automaticamente": "Downloadet bør starte automatisk", + "Il file": "Filen", + "Il file JSON deve contenere coppie chiave-valore:": "JSON-filen skal indeholde nøgle-værdi-par:", + "Il file JSON non è valido:": "JSON-filen er ugyldig:", + "Il file caricato non è un archivio ZIP valido": "Den uploadede fil er et ugyldigt ZIP-arkiv", + "Il file deve avere estensione .csv": "Filen skal have udvidelsen .csv", + "Il file deve avere estensione .tsv, .csv o .txt": "Filen skal have udvidelsen .tsv, .csv eller .txt", + "Il file deve contenere coppie chiave (italiano) - valore (traduzione).": "Filen skal indeholde nøgle (italiensk) - værdi (oversættelse) par.", + "Il file deve essere un JSON valido": "Filen skal være gyldig JSON", + "Il file deve essere un archivio ZIP": "Filen skal være et ZIP-arkiv", + "Il file generato si trova in": "Den genererede fil findes i", + "Il file generato si trova in public/sitemap.xml": "Den genererede fil findes under public/sitemap.xml", + "Il file non sembra essere in formato LibraryThing": "Filen ser ikke ud til at være i LibraryThing-format", + "Il file non sembra essere in formato LibraryThing. Colonne richieste: Book Id, Title, Primary Author, ISBNs": "Filen ser ikke ud til at være i LibraryThing-format. Krævede kolonner: Book Id, Title, Primary Author, ISBNs", + "Il file non soddisfa i requisiti": "Filen opfylder ikke kravene", + "Il file supera il limite di upload di PHP (%s). Aumenta upload_max_filesize e post_max_size nella configurazione PHP.": "Filen overskrider PHP's uploadgrænse (%s). Forøg upload_max_filesize og post_max_size i PHP-konfigurationen.", + "Il file supera la dimensione massima consentita": "Filen overskrider den maksimale tilladte størrelse", + "Il file supera la dimensione massima di %s MB": "Filen overskrider den maksimale størrelse på %s MB", + "Il file è stato caricato solo parzialmente. Riprova.": "Filen blev kun delvist uploadet. Prøv igen.", + "Il file è troppo grande (max 50MB)": "Filen er for stor (maks. 50 MB)", + "Il formato scelto verrà utilizzato per generare i PDF delle etichette con codice a barre.": "Det valgte format vil blive brugt til at generere stregkode-etiket-PDF'er.", + "Il formato selezionato verrà applicato a tutte le etichette generate dal sistema.": "Det valgte format vil blive anvendt på alle etiketter genereret af systemet.", + "Il libro non sarà eliminato, solo la relazione.": "Bogen vil ikke blive slettet, kun relationen.", + "Il libro selezionato è già in prestito. Seleziona un altro libro.": "Den valgte bog er allerede udlånt. Vælg en anden bog.", + "Il libro viene consegnato subito all'utente. Se deselezionato, il prestito rimarrà in stato 'Da ritirare' fino alla conferma del ritiro.": "Bogen udleveres med det samme til brugeren. Hvis den fravælges, forbliver udlånet i status 'Til afhentning', indtil afhentningen bekræftes.", + "Il link di verifica email è scaduto o non valido. Registrati nuovamente per ricevere un nuovo link.": "E-mail-bekræftelseslinket er udløbet eller ugyldigt. Registrer dig igen for at modtage et nyt link.", + "Il link di verifica non è valido. Assicurati di aver copiato l'intero link dall'email.": "Bekræftelseslinket er ugyldigt. Sørg for, at du har kopieret hele linket fra e-mailen.", + "Il logo verrà ridimensionato automaticamente": "Logoet vil blive ændret automatisk i størrelse", + "Il mio profilo": "Min profil", + "Il nome del genere è obbligatorio.": "Genrenavnet er påkrævet.", + "Il nome dell'": "Navnet på", + "Il nome dell'API key è obbligatorio.": "Navnet på API-nøglen er påkrævet.", + "Il nome dell'autore è obbligatorio.": "Forfatternavnet er påkrævet.", + "Il nome dell'editore è obbligatorio.": "Forlagsnavnet er påkrævet.", + "Il nome della rosa": "Rosens navn", + "Il nome deve avere almeno 2 caratteri.": "Navnet skal have mindst 2 tegn.", + "Il nome inglese è obbligatorio": "Det engelske navn er påkrævet", + "Il nome inglese è obbligatorio (es. Italian, English)": "Det engelske navn er påkrævet (f.eks. Italian, English)", + "Il nome nativo è obbligatorio": "Det oprindelige navn er påkrævet", + "Il nome nativo è obbligatorio (es. Italiano, English)": "Det oprindelige navn er påkrævet (f.eks. Italiano, English)", + "Il nostro team è stato notificato e sta lavorando per risolvere il problema.": "Vores team er blevet a jourført og arbejder på at løse problemet.", + "Il pacchetto contiene percorsi non validi.": "Pakken indeholder ugyldige stier.", + "Il pacchetto non contiene file validi.": "Pakken indeholder ikke gyldige filer.", + "Il plugin è attualmente installato e funzionante.": "Pluginnet er i øjeblikket installeret og fungerer.", + "Il prestito è stato approvato con successo.": "Udlånet er blevet godkendt.", + "Il prestito è stato chiuso con successo.": "Udlånet er blevet afsluttet.", + "Il prestito è stato rifiutato.": "Udlånet er blevet afvist.", + "Il server ha restituito una risposta non valida. Controlla i log per dettagli.": "Serveren returnerede et ugyldigt svar. Tjek logfilerne for detaljer.", + "Il sistema creerà automaticamente libri, autori ed editori": "Systemet opretter automatisk bøger, forfattere og forlag", + "Il sistema di aggiornamento è pronto.": "Opdateringssystemet er klar.", + "Il sistema include un cron job che gestisce automaticamente:": "Systemet indeholder et cron-job, der automatisk håndterer:", + "Il sistema invierà automaticamente una email di promemoria agli utenti prima della scadenza del prestito. Il valore predefinito è 3 giorni.": "Systemet sender automatisk en påmindelses-e-mail til brugere før udlånets udløb. Standardværdien er 3 dage.", + "Il sito web deve essere un URL valido (es. https://www.esempio.com).": "Webstedet skal være en gyldig URL (f.eks. [https://www.eksempel.dk](https://www.eksempel.dk)).", + "Il sito web deve essere un URL valido.": "Hjemmesiden skal være en gyldig URL.", + "Il termine per il ritiro è scaduto": "Afhentningsfristen er udløbet", + "Il termine per il ritiro è scaduto. Vuoi annullare questo prestito?": "Afhentningsfristen er udløbet. Vil du annullere dette udlån?", + "Il titolo del libro è obbligatorio.": "Bogens titel er påkrævet.", + "Il titolo principale della pagina": "Sidens hovedtitel", + "Il titolo verrà utilizzato anche per generare l'URL della pagina": "Titlen vil også blive brugt til at generere side-URL'en", + "Il titolo è obbligatorio.": "Titlen er påkrævet.", + "Il token di accesso personale non è obbligatorio, ma aumenta il limite di richieste da 25 a 60 al minuto.": "Det personlige adgangstoken er ikke påkrævet, men det øger anmodningsgrænsen fra 25 til 60 pr. minut.", + "Il tuo account è in attesa di approvazione. Riceverai un'email quando sarà attivato": "Din konto afventer godkendelse. Du modtager en e-mail, når den aktiveres", + "Il tuo account è stato sospeso. Contatta l'amministratore per maggiori informazioni": "Din konto er blevet suspensioner. Kontakt administratoren for yderligere oplysninger", + "Il tuo browser non supporta la riproduzione audio.": "Din browser understøtter ikke lydafspilning.", + "Il tuo sistema Pinakes per catalogare, gestire e condividere la tua collezione libraria.": "Dit Pinakes-system til at katalogisere, administrere og dele din bogsamling.", + "Il valore deve essere un intero non negativo.": "Værdien skal være et ikke-negativt heltal.", + "Illustratore": "Illustrator", + "Immagine": "Billede", + "Immagine / stampa / dipinto (hb)": "Billede / tryk / maleri (hb)", + "Immagine Caricata!": "Billede uploadet!", + "Immagine Open Graph": "Open Graph-billede", + "Immagine Twitter": "Twitter-billede", + "Immagine attuale": "Aktuelt billede", + "Immagine di copertina": "Forsidebillede", + "Immagine di copertina della pagina (opzionale)": "Sideforsidebillede (valgfrit)", + "Immagine di sfondo Hero": "Hero-baggrundsbillede", + "Immagine in Evidenza": "Fremhævet billede", + "Immagine mostrata quando condividi la pagina su social media (Facebook, Twitter, LinkedIn). Se vuoto, usa l'immagine hero di sfondo. Dimensioni consigliate: 1200x630px (rapporto 1.91:1).": "Billede vist, når du deler siden på sociale medier (Facebook, Twitter, LinkedIn). Hvis det er tomt, bruges hero-baggrundsbilledet. Anbefalede dimensioner: 1200x630px (forhold 1.91:1).", + "Immagine mostrata quando condividi su social. Dimensioni consigliate: 1200x630px (rapporto 1.91:1). Se vuoto, usa l'immagine hero di sfondo.": "Billede vist ved deling på sociale medier. Anbefalede dimensioner: 1200x630px (forhold 1.91:1). Hvis det er tomt, bruges hero-baggrundsbilledet.", + "Immagine non valida": "Ugyldigt billede", + "Immagine per Twitter/X. Dimensioni consigliate: 1200x675px o 1200x1200px. Se vuoto, usa l'immagine Open Graph.": "Billede til Twitter/X. Anbefalede dimensioner: 1200x675px eller 1200x1200px. Hvis det er tomt, bruges Open Graph-billedet.", + "Immagine troppo grande da processare.": "Billedet er for stort til at blive behandlet.", + "Immagini JPG, PNG o WebP (max 5MB)": "JPG-, PNG- eller WebP-billeder (maks. 5 MB)", + "Import": "Importér", + "Import CSV": "CSV-import", + "Import CSV Standard": "Standard CSV-import", + "Import Completato": "Import fuldført", + "Import LibraryThing": "LibraryThing-import", + "Import LibraryThing completato: %d libri nuovi, %d libri aggiornati, %d autori creati, %d editori creati": "LibraryThing-import fuldført: %d nye bøger, %d opdaterede bøger, %d oprettede forfattere, %d oprettede forlag", + "Import Libri da CSV": "Importér bøger fra CSV", + "Import Massivo Libri": "Masseimport af bøger", + "Import completato: %d libri nuovi, %d libri aggiornati, %d autori creati, %d editori creati": "Import fuldført: %d nye bøger, %d opdaterede bøger, %d oprettede forfattere, %d oprettede forlag", + "Import da LibraryThing": "Import fra LibraryThing", + "Import dati iniziali...": "Importerer startdata...", + "Import in corso...": "Import i gang...", + "Import massivo da CSV": "Masseimport fra CSV", + "Import schema in corso...": "Importerer skema...", + "Import trigger...": "Importerer udløsere...", + "Import/Export TSV": "Import/Eksport TSV", + "Importa": "Importér", + "Importa Dati": "Importér data", + "Importa Libri": "Importér bøger", + "Importa MARCXML": "Importér MARCXML", + "Importa da ISBN": "Importér fra ISBN", + "Importa da SBN": "Importér fra SBN", + "Importa da SBN (OPAC Nazionale), gestisci l'identificativo BID e i soggetti del Nuovo Soggettario BNCF, esporta in UNIMARC.": "Importér fra SBN (National OPAC), administrer BID-identifikatoren og emnerne fra Nuovo Soggettario BNCF, eksportér til UNIMARC.", + "Importa i tuoi libri esportati da LibraryThing.com (formato TSV)": "Importér dine bøger eksporteret fra LibraryThing.com (TSV-format)", + "Importante:": "Vigtigt:", + "Importati": "Importerede", + "Importati %d record su %d.": "Importerede %d poster ud af %d.", + "Importato": "Importeret", + "Importato con successo. %d voci totali.": "Importeret med succes. %d poster i alt.", + "Importazione completata con successo!": "Import fuldført med succes!", + "Importazione in corso...": "Import i gang...", + "Importazione in corso…": "Import i gang…", + "Importazione libro": "Importerer bog", + "Importazione...": "Importerer...", + "Impossibile acquisire il lock. Riprova tra qualche secondo.": "Kan ikke erhverve lås. Prøv igen om et øjeblik.", + "Impossibile aggiornare l'utente. Riprova più tardi.": "Kunne ikke opdatere brugeren. Prøv igen senere.", + "Impossibile aggiornare la chiave Google Books.": "Google Books-nøglen kunne ikke opdateres.", + "Impossibile aggiornare la posizione automatica": "Kan ikke opdatere den automatiske placering", + "Impossibile aggiornare le copie.": "Kunne ikke opdatere eksemplarerne.", + "Impossibile aggiornare lo stato della copia": "Kan ikke opdatere eksemplarstatus", + "Impossibile approvare la recensione": "Anmeldelsen kunne ikke godkendes", + "Impossibile aprire file di backup per scrittura": "Kunne ikke åbne backup-fil til skrivning", + "Impossibile aprire il file": "Kan ikke åbne filen", + "Impossibile aprire il file CSV": "CSV-filen kunne ikke åbnes", + "Impossibile aprire il file CSV salvato": "Den gemte CSV-fil kunne ikke åbnes", + "Impossibile aprire il file ZIP.": "ZIP-filen kunne ikke åbnes.", + "Impossibile aprire il pacchetto ZIP": "Kan ikke åbne ZIP-pakken", + "Impossibile archiviare il messaggio.": "Beskeden kunne ikke arkiveres.", + "Impossibile attivare la nuova versione del plugin: %s": "Kan ikke aktivere den nye version af pluginnet: %s", + "Impossibile backup version.json: %s": "Kunne ikke sikkerhedskopiere version.json: %s", + "Impossibile caricare configurazione database": "Kan ikke indlæse databaskonfiguration", + "Impossibile caricare gli editori. Controlla la console per i dettagli.": "Kunne ikke indlæse forlag. Tjek konsollen for detaljer.", + "Impossibile caricare i libri. Controlla la console per i dettagli.": "Kunne ikke indlæse bøger. Tjek konsollen for detaljer.", + "Impossibile cifrare il token GitHub": "Kunne ikke kryptere GitHub-tokenet", + "Impossibile cifrare il token GitHub: salvataggio annullato": "Kunne ikke kryptere GitHub-token: gemning annulleret", + "Impossibile completare l'operazione. Riprova più tardi.": "Handlingen kunne ikke fuldføres. Prøv igen senere.", + "Impossibile comunicare con il server. Riprova più tardi.": "Kan ikke kommunikere med serveren. Prøv igen senere.", + "Impossibile configurare autocomplete: elementi mancanti": "Kan ikke konfigurere autoudfyld: manglende elementer", + "Impossibile connettersi a GitHub": "Kunne ikke oprette forbindelse til GitHub", + "Impossibile contattare il servizio di scraping. Riprova più tardi.": "Kan ikke kontakte scraping-tjenesten. Prøv igen senere.", + "Impossibile creare directory di backup": "Kunne ikke oprette backup-mappe", + "Impossibile creare directory di backup applicazione": "Kunne ikke oprette backup-mappe til applikation", + "Impossibile creare directory di backup: %s": "Kunne ikke oprette backup-mappe: %s", + "Impossibile creare directory di estrazione": "Kunne ikke oprette udpakningsmappe", + "Impossibile creare directory temporanea": "Kunne ikke oprette midlertidig mappe", + "Impossibile creare directory temporanea per upload": "Kunne ikke oprette midlertidig mappe til upload", + "Impossibile creare directory: %s": "Kunne ikke oprette mappe: %s", + "Impossibile creare il backup del plugin: %s": "Kunne ikke oprette plugin-backup: %s", + "Impossibile creare il file .env. Verifica i permessi.": "Kunne ikke oprette .env-filen. Tjek tilladelserne.", + "Impossibile creare il file di lock per l'aggiornamento": "Kunne ikke oprette låsefil til opdatering", + "Impossibile creare la cartella di upload.": "Uploadmappen kunne ikke oprettes.", + "Impossibile creare la directory del plugin.": "Kunne ikke oprette plugin-mappen.", + "Impossibile creare la mensola. Riprova più tardi.": "Hylden kunne ikke oprettes. Prøv igen senere.", + "Impossibile creare la prenotazione": "Reservationen kunne ikke oprettes", + "Impossibile creare la struttura del plugin.": "Kunne ikke oprette plugin-strukturen.", + "Impossibile creare lo scaffale. Riprova più tardi.": "Reolen kunne ikke oprettes. Prøv igen senere.", + "Impossibile creare lock file": "Kunne ikke oprette låsefil", + "Impossibile determinare l'ID del plugin Open Library.": "Kunne ikke fastslå ID'et for Open Library-pluginnet.", + "Impossibile eliminare il backup": "Kunne ikke slette backup", + "Impossibile eliminare il file di manutenzione": "Vedligeholdelsesfilen kunne ikke slettes", + "Impossibile eliminare il libro: ci sono prestiti o prenotazioni attive. Termina prima i prestiti/prenotazioni.": "Kan ikke slette bogen: der er aktive udlån eller reservationer. Afslut udlånene/reservationerne først.", + "Impossibile eliminare il messaggio.": "Beskeden kunne ikke slettes.", + "Impossibile eliminare l'autore: sono presenti libri associati.": "Forfatteren kan ikke slettes: der er tilknyttede bøger.", + "Impossibile eliminare l'editore: sono presenti libri associati.": "Forlaget kan ikke slettes: der er tilknyttede bøger.", + "Impossibile eliminare l'installer:": "Kunne ikke slette installationsprogrammet:", + "Impossibile eliminare l'installer: devi prima installare le dipendenze PHP con": "Kunne ikke slette installationsprogrammet: du skal først installere PHP-afhængighederne med", + "Impossibile eliminare la notifica.": "Notifikationen kunne ikke slettes.", + "Impossibile eliminare la recensione": "Anmeldelsen kan ikke slettes", + "Impossibile eliminare una copia attualmente in prestito.": "Kan ikke slette et eksemplar, der i øjeblikket er udlånt.", + "Impossibile eliminare: alcuni editori hanno libri associati": "Kan ikke slette: nogle forlag har tilknyttede bøger", + "Impossibile eliminare: alcuni libri hanno prestiti attivi": "Kan ikke slette: nogle bøger har aktive udlån", + "Impossibile eliminare: la mensola contiene libri": "Kan ikke slette: hylden indeholder bøger", + "Impossibile eliminare: lo scaffale contiene libri": "Kan ikke slette: reolen indeholder bøger", + "Impossibile eliminare: lo scaffale contiene mensole": "Kan ikke slette: reolen indeholder hylder", + "Impossibile generare la risposta JSON.": "Kunne ikke generere JSON-svar.", + "Impossibile importare i dati per questo ISBN.": "Kunne ikke importere data for denne ISBN.", + "Impossibile inizializzare Uppy per i contenuti digitali.": "Kunne ikke initialisere Uppy til digitalt indhold.", + "Impossibile inviare la recensione": "Anmeldelsen kunne ikke sendes", + "Impossibile inviare la recensione.": "Anmeldelsen kunne ikke sendes.", + "Impossibile leggere i dati del modulo. Riprova.": "Kunne ikke læse formulardata. Prøv igen.", + "Impossibile leggere il file .env": "Kan ikke læse .env-filen", + "Impossibile leggere il file caricato": "Kunne ikke læse den uploadede fil", + "Impossibile leggere il file di backup": "Kunne ikke læse backup-fil", + "Impossibile leggere il file di log": "Kan ikke læse logfil", + "Impossibile modificare una copia attualmente in prestito. Prima termina il prestito o imposta lo stato su \"Disponibile\" per chiuderlo automaticamente.": "Kan ikke redigere et eksemplar, der i øjeblikket er udlånt. Afslut først udlånet eller indstil status til \"Verfügbar\" for at lukke det automatisk.", + "Impossibile notificare utente copia non disponibile": "Kan ikke give bruger besked om utilgængeligt eksemplar", + "Impossibile notificare utente: dati mancanti": "Kan ikke give bruger besked: manglende data", + "Impossibile processare l'immagine.": "Billedet kunne ikke behandles.", + "Impossibile recuperare i dati degli autori": "Kunne ikke hente forfatterdata", + "Impossibile recuperare i dati degli editori": "Kunne ikke hente forlagsdata", + "Impossibile recuperare informazioni sulla release": "Kunne ikke hente udgivelsesoplysninger", + "Impossibile revocare la sessione": "Kan ikke tilbagekalde sessionen", + "Impossibile riaprire il file ZIP": "Kan ikke genåbne ZIP-filen", + "Impossibile ricalcolare la disponibilità del libro.": "Bogtilgængelighed kan ikke genberegnes.", + "Impossibile ridurre le copie a %d. Ci sono %d copie non disponibili (in prestito, perse o danneggiate). Il numero minimo di copie totali è %d.": "Kan ikke reducere eksemplarerne til %d. Der er %d utilgængelige eksemplarer (udlånte, tabte eller beskadigede). Minimumsantallet af samlede eksemplarer er %d.", + "Impossibile rifiutare la recensione": "Anmeldelsen kunne ikke afvises", + "Impossibile rigenerare la sitemap.": "Sitemap kan ikke genereres igen.", + "Impossibile rigenerare la sitemap: %s": "Sitemap kunne ikke genereres igen: %s", + "Impossibile rimuovere directory: %s": "Kunne ikke fjerne mappe: %s", + "Impossibile rimuovere file: %s": "Kunne ikke fjerne fil: %s", + "Impossibile ripristinare il plugin precedente: %s": "Kunne ikke gendanne det forrige plugin: %s", + "Impossibile risolvere il percorso della directory plugins.": "Kunne ikke finde stien til plugins-mappen.", + "Impossibile salvare il file CSV caricato": "Kunne ikke gemme den uploadede CSV-fil", + "Impossibile salvare il file di aggiornamento": "Kunne ikke gemme opdateringsfil", + "Impossibile salvare il file.": "Kan ikke gemme filen.", + "Impossibile salvare il luogo. Riprovare.": "Stedet kunne ikke gemmes. Prøv igen.", + "Impossibile salvare l'attività. Riprovare.": "Aktiviteten kunne ikke gemmes. Prøv igen.", + "Impossibile salvare l'utente. Riprova più tardi.": "Brugeren kunne ikke gemmes. Prøv igen senere.", + "Impossibile salvare la password SMTP.": "SMTP-adgangskode kan ikke gemmes.", + "Impossibile salvare le impostazioni.": "Indstillinger kan ikke gemmes.", + "Impossibile scaricare (libro senza ISBN):": "Kan ikke downloade (bog uden ISBN):", + "Impossibile scaricare (senza ISBN/barcode):": "Kan ikke downloade (uden ISBN/stregkode):", + "Impossibile scrivere file di backup": "Kunne ikke skrive backup-fil", + "Impossibile scrivere il file su disco. Controlla i permessi della cartella temporanea.": "Kan ikke skrive filen til disk. Tjek tilladelserne for den midlertidige mappe.", + "Impossibile scrivere nel file .env": "Kan ikke skrive til .env-filen", + "Impossibile segnare come letta la notifica.": "Notifikationen kunne ikke markeres som læst.", + "Impossibile segnare tutte le notifiche come lette.": "Alle notifikationer kunne ikke markeres som læste.", + "Impossibile segnare tutti i messaggi come letti.": "Alle beskeder kunne ikke markeres som læste.", + "Impossibile spostare il file ZIP nel fallback: %s": "Kan ikke flytte ZIP-filen til fallback: %s", + "Impossibile: si creerebbe un ciclo.": "Umuligt: det ville skabe en cyklus.", + "Imposta come Predefinita": "Indstil som standard", + "Imposta come attiva o predefinita": "Indstil som aktiv eller standard", + "Imposta come lingua predefinita per nuovi utenti": "Indstil som standardsprog for nye brugere", + "Imposta il nome mostrato nel backend e il logo utilizzato nel layout.": "Indstil det navn, der vises i backend, og logoet, der bruges i layoutet.", + "Imposta nel file .env: APP_CANONICAL_URL=%s": "Indstil i .env-filen: APP_CANONICAL_URL=%s", + "Imposta password": "Indstil adgangskode", + "Impostare questa lingua come predefinita?\n\nQuesta diventerà la lingua dell'intera applicazione per tutti gli utenti.": "Vil du indstille dette sprog som standard?\n\nDette vil blive sproget for hele applikationen for alle brugere.", + "Impostare questa lingua come predefinita?\\n\\nQuesta diventerà la lingua dell'intera applicazione per tutti gli utenti.": "Angiv dette sprog som standard?\\n\\nDette bliver sproget for hele applikationen for alle brugere.", + "Impostazioni": "Indstillinger", + "Impostazioni API Book Scraper salvate correttamente.": "Book Scraper API-indstillinger blev gemt.", + "Impostazioni Applicazione": "Applikationsindstillinger", + "Impostazioni Date": "Datoindstillinger", + "Impostazioni Discogs salvate correttamente.": "Discogs-indstillinger gemt med succes.", + "Impostazioni GoodLib salvate correttamente.": "GoodLib-indstillinger gemt med succes.", + "Impostazioni SEO": "SEO-indstillinger", + "Impostazioni Z39.50 salvate correttamente.": "Z39.50-indstillinger gemt med succes.", + "Impostazioni avanzate aggiornate correttamente.": "Avancerede indstillinger opdateret med succes.", + "Impostazioni contatti aggiornate correttamente.": "Kontaktoplysninger opdateret med succes.", + "Impostazioni di condivisione aggiornate.": "Deleindstillinger opdateret.", + "Impostazioni email aggiornate correttamente.": "E-mail-indstillinger opdateret med succes.", + "Impostazioni eventi aggiornate.": "Begivenhedsindstillinger opdateret.", + "Impostazioni generali aggiornate correttamente.": "Generelle indstillinger opdateret med succes.", + "Impostazioni privacy aggiornate correttamente.": "Privatlivsindstillinger opdateret med succes.", + "Impostazioni salvate.": "Indstillinger gemt.", + "In Attesa": "Afventer", + "In Attesa di Approvazione": "Afventer godkendelse", + "In Corso": "I gang", + "In Riparazione": "Under reparation", + "In Ritardo": "For sen", + "In attesa": "Afventer", + "In attesa di approvazione": "Afventer godkendelse", + "In attesa di disponibilità": "Afventer tilgængelighed", + "In corso": "I gang", + "In corso di restituzione": "Under returnering", + "In corso...": "I gang...", + "In manutenzione": "Under vedligeholdelse", + "In prestito": "Udlånt", + "In prestito fino al": "Udlånt indtil", + "In questa pagina trovi tutti gli eventi, gli incontri e i laboratori organizzati dalla biblioteca.": "På denne side finder du alle begivenheder, møder og workshops organiseret af biblioteket.", + "In ritardo": "Forsinket", + "In scadenza": "Udløber snart", + "In sospeso": "Afventer", + "Inattivo": "Inaktiv", + "Incompleto": "Ufuldstændig", + "Indice %s creato su %s": "Indeks %s oprettet på %s", + "Indice ISBN": "ISBN-indeks", + "Indice completo degli URL": "Komplet URL-indeks", + "Indici creati con successo": "Indekser oprettet med succes", + "Indici creati:": "Oprettede indekser:", + "Indici di ottimizzazione creati OK": "Optimeringsindekser oprettet OK", + "Indietro": "Tilbage", + "Indirizzo": "Adresse", + "Indirizzo completo": "Fuld adresse", + "Indirizzo completo *": "Fuld adresse *", + "Indirizzo:": "Adresse:", + "Info": "Info", + "Info HSTS:": "HSTS-info:", + "Informativa sulla privacy": "Privatlivspolitik", + "Informazione": "Information", + "Informazioni": "Oplysninger", + "Informazioni Aggiuntive": "Yderligere oplysninger", + "Informazioni Base": "Grundlæggende oplysninger", + "Informazioni Evento": "Begivenhedsoplysninger", + "Informazioni Importanti": "Vigtige oplysninger", + "Informazioni LibraryThing": "LibraryThing-oplysninger", + "Informazioni Libro": "Bogoplysninger", + "Informazioni Personali": "Personlige oplysninger", + "Informazioni Plugin": "Plugin-oplysninger", + "Informazioni Prestito": "Udlånsoplysninger", + "Informazioni Report": "Rapportoplysninger", + "Informazioni di Contatto": "Kontaktoplysninger", + "Informazioni di contatto": "Kontaktoplysninger", + "Informazioni editore": "Forlagsoplysninger", + "Informazioni generali": "Generelle oplysninger", + "Informazioni personali": "Personlige oplysninger", + "Informazioni sulla biblioteca": "Om biblioteket", + "Informazioni sullo Storico Import": "Oplysninger om importhistorik", + "Informazioni tessera": "Kortoplysninger", + "Informazioni utili per il personale": "Nyttige oplysninger til personalet", + "Inizia Installazione": "Start installation", + "Inizia ad aggiungere libri al catalogo": "Begynd at tilføje bøger til kataloget", + "Inizia aggiungendo il primo libro alla collezione": "Start med at tilføje den første bog til samlingen", + "Inizia aggiungendo la prima lingua.": "Begynd med at tilføje det første sprog.", + "Inizia caricando il tuo primo plugin": "Start med at uploade dit første plugin", + "Inizia creando il primo genere letterario": "Start med at oprette den første litterære genre", + "Inizia la Tua Avventura Letteraria": "Start dit litterære eventyr", + "Inizializzazione...": "Initialiserer...", + "Inizio": "Start", + "Inizio installazione...": "Starter installation...", + "Inizio:": "Start:", + "Inserimento Manuale Dewey": "Manuel Dewey-indtastning", + "Inserisci $1": "Indtast $1", + "Inserisci almeno 2 caratteri per avviare la ricerca.": "Indtast mindst 2 tegn for at starte søgningen.", + "Inserisci codice locale (es. es_ES per Spagnolo)": "Indtast lokalkode (f.eks. es_ES for spansk)", + "Inserisci il codice Dewey completo (supporta fino a 4 decimali)": "Indtast den fulde Dewey-kode (understøtter op til 4 decimaler)", + "Inserisci il motivo del rifiuto...": "Indtast årsagen til afvisningen...", + "Inserisci il titolo": "Indtast tildeling", + "Inserisci la data di inizio (YYYY-MM-DD)": "Indtast startdato (ÅÅÅÅ-MM-DD)", + "Inserisci la password attuale": "Indtast nuværende adgangskode", + "Inserisci la tua email per ricevere il link di reset.": "Indtast din e-mail for at modtage nulstillingslinket.", + "Inserisci la tua email per ricevere un link di reset": "Indtast din e-mail for at modtage et nulstillingslink", + "Inserisci la tua nuova password": "Indtast din nye adgangskode", + "Inserisci le credenziali del tuo database MySQL. Assicurati che il database sia già stato creato e sia vuoto.": "Indtast dine MySQL-databaseoplysninger. Sørg for, at databasen allerede er oprettet og tom.", + "Inserisci le informazioni del nuovo evento": "Indtast oplysninger om den nye begivenhed", + "Inserisci parole chiave separate da virgole per facilitare la ricerca": "Indtast komma-separerede nøgleord for at lette søgningen", + "Inserisci qualsiasi codice Dewey (anche se non presente nell'elenco)": "Indtast en hvilken som helst Dewey-kode (selvom den ikke er på listen)", + "Inserisci solo script che NON tracciano utenti. Per analytics/marketing usa le sezioni dedicate.": "Indtast kun scripts, der IKKE sporer brugere. Til analytics/marketing bruges de dedikerede sektioner.", + "Inserisci un ISBN.": "Indtast venligst en ISBN.", + "Inserisci un codice Dewey": "Indtast en Dewey-kode", + "Inserisci un codice ISBN per continuare.": "Indtast en ISBN-kode for at fortsætte.", + "Inserisci un luogo geografico con eventuali coordinate e identificativi GeoNames / Wikidata / Getty TGN per il collegamento Linked Data.": "Indtast et geografisk sted med eventuelle koordinater og GeoNames- / Wikidata- / Getty TGN-identifikatorer til Linked Data-forbindelse.", + "Inserisci un nome": "Indtast et navn", + "Inserisci un numero valido di copie": "Indtast et gyldigt antal eksemplarer", + "Inserisci un token valido": "Indtast et gyldigt token", + "Inserisci un valore": "Indtast en værdi", + "Inserisci una breve biografia dell'autore...": "Indtast en kort biografi om forfatteren...", + "Instagram": "Instagram", + "Installa": "Installér", + "Installa Plugin": "Installér plugin", + "Installato": "Installeret", + "Installato:": "Installeret:", + "Installazione": "Installation", + "Installazione Completata": "Installation fuldført", + "Installazione Completata!": "Installation fuldført!", + "Installazione Cron Job": "Installation af Cron-job", + "Installazione Database": "Databaseinstallation", + "Installazione Guidata": "Guidet installation", + "Installazione completata": "Installation fuldført", + "Installazione database non completa. Tabelle mancanti: %s": "Databaseinstallation ikke fuldstændig. Manglende tabeller: %s", + "Installazione database non completa. Trovate %d tabelle, attese %d": "Databaseinstallation ikke fuldstændig. Fandt %d tabeller, forventede %d", + "Installazione delle tabelle del database e configurazione iniziale...": "Installation af databasetabeller og indledende konfiguration...", + "Installazione fallita": "Installation mislykket", + "Installazione file": "Filinstallation", + "Installazione file...": "Installerer filer...", + "Installazione in corso...": "Installation i gang...", + "Installazione italiana usa": "Italiensk installation bruger", + "Installazione plugin Open Library...": "Installerer Open Library-plugin...", + "Installazione...": "Installation...", + "Installer Pinakes": "Pinakes Installationsprogram", + "Installer eliminato con successo!": "Installationsprogram slettet med succes!", + "Insufficient privileges": "Utilstækkelig rettigheder", + "Insufficiente": "Utilstækkelig", + "Integrità dati": "Dataintegritet", + "Internal server error": "Intern serverfejl", + "International Standard Serial Number (per periodici)": "International Standard Serial Number (for tidsskrifter)", + "Interoperabilità bibliotecaria (MARCXML, Dublin Core)": "Biblioteksinteroperabilitet (MARCXML, Dublin Core)", + "Intervallo storico": "Historisk interval", + "Intervallo temporale": "Tidsinterval", + "Intestazione": "Overskrift", + "Intestazione sezione": "Sektionsoverskrift", + "Inventario": "Inventar", + "Invia Email": "Send e-mail", + "Invia Richiesta": "Send anmodning", + "Invia link": "Send link", + "Invia link di reset": "Send nulstillingslink", + "Invia messaggio": "Send besked", + "Invia per email": "Send via e-mail", + "Invia recensione": "Indsend anmeldelse", + "Invia via SMS": "Send via SMS", + "Inviaci un messaggio": "Send os en besked", + "Inviata agli amministratori quando viene ricevuta una nuova recensione da approvare.": "Sendes til administratorer, når der modtages en ny anmeldelse til godkendelse.", + "Inviata agli utenti quando un libro nella wishlist torna disponibile. Il libro rimane nella wishlist ma non riceverà altre notifiche per lo stesso libro.": "Sendes til brugere, når en bog på ønskelisten bliver tilgængelig igen. Bogen forbliver på ønskelisten, men modtager ikke flere notifikationer for den samme bog.", + "Inviata agli utenti quando un libro nella wishlist torna disponibile. Il libro viene automaticamente rimosso dalla wishlist dopo l'invio della notifica per evitare duplicati.": "Sendes til brugere, når en bog på ønskelisten bliver tilgængelig igen. Bogen fjernes automatisk fra ønskelisten, efter notifikationen er sendt, for at undgå dubletter.", + "Inviata ai nuovi utenti per impostare la password del loro account.": "Sendes til nye brugere for at indstille deres kontoadgangskode.", + "Inviata all'utente al termine della registrazione per confermare la ricezione e l'attesa di approvazione.": "Sendes til brugeren ved afslutningen af registreringen for at bekræfte modtagelsen og afventningen af godkendelse.", + "Inviata all'utente quando un amministratore approva l'account.": "Sendes til brugeren, når en administrator godkender kontoen.", + "Inviata all'utente quando un amministratore approva una richiesta di prestito.": "Sendes til brugeren, når en administrator godkender en låneanmodning.", + "Inviata all'utente quando un amministratore rifiuta una richiesta di prestito.": "Sendes til brugeren, når en administrator afviser en låneanmodning.", + "Inviata quando il tempo per ritirare un libro è scaduto e il prestito è stato annullato.": "Sendes, når tiden til at afhente en bog er udløbet, og udlånet er blevet annulleret.", + "Inviata quando un libro prenotato diventa disponibile e viene convertito in prestito pendente.": "Sendes, når en reserveret bog bliver tilgængelig og konverteres til et afventende udlån.", + "Inviata quando un prestito è stato approvato e il libro è pronto per il ritiro.": "Sendes, når et udlån er blevet godkendt, og bogen er klar til afhentning.", + "Inviata quando un ritiro viene annullato dall'amministratore.": "Sendes, når en afhentning annulleres af administratoren.", + "Inviata quando un utente viene invitato come amministratore.": "Sendes, når en bruger inviteres som administrator.", + "Inviato": "Sendt", + "Invio in corso...": "Sender...", + "Invio notifica prenotazione fallito": "Afsendelse af reservationsnotifikation mislykkedes", + "Invita gli utenti a registrarsi": "Inviter brugere til at registrere sig", + "Invito amministratore": "Administratorinvitation", + "Istituzione": "Institution", + "Istruzioni": "Instruktioner", + "Italiano (IT)": "Italiensk (IT)", + "JPEG, PNG o WebP. Max 8 MB.": "JPEG, PNG eller WebP. Maks. 8 MB.", + "JPG, PNG, GIF, WEBP - Max 5MB": "JPG, PNG, GIF, WEBP – Maks. 5 MB", + "JSON non valido.": "Ugyldig JSON.", + "JavaScript Analitici": "Analytisk JavaScript", + "JavaScript Essenziali": "Essentiel JavaScript", + "JavaScript Marketing": "Marketing JavaScript", + "L'API key può essere fornita in due modi:": "API-nøglen kan angives på to måder:", + "L'API key viene criptata con AES-256-GCM prima di essere salvata.": "API-nøglen krypteres med AES-256-GCM, før den gemmes.", + "L'API è limitata a 50 risultati per richiesta": "API'en er begrænset til 50 resultater pr. anmodning", + "L'ID primario deve essere presente nella lista degli autori da unire": "Det primære ID skal være tilstede i listen over forfattere, der skal flettes", + "L'ID primario deve essere presente nella lista degli editori da unire": "Det primære ID skal være tilstede i listen over forlag, der skal flettes", + "L'URL canonico non è valido. Deve iniziare con http:// o https://": "Den kanoniske URL er ugyldig. Den skal starte med http:// eller https://", + "L'URL del calendario è stato copiato negli appunti.": "Kalender-URL'en er kopieret til udklipsholderen.", + "L'URL fornito non è valido": "Den angivne URL er ugyldig", + "L'accesso alla cartella installer è automaticamente bloccato dopo l'installazione.": "Adgang til installationsmappen blokeres automatisk efter installationen.", + "L'aggiornamento può richiedere alcuni minuti. Non chiudere questa pagina.": "Opdateringen kan tage et par minutter. Luk ikke denne side.", + "L'applicazione NON può funzionare senza questo passaggio!": "Applikationen kan IKKE fungere uden dette trin!", + "L'applicazione risulta correttamente configurata.": "Applikationen er korrekt konfigureret.", + "L'applicazione è stata installata correttamente e tutte le verifiche sono andate a buon fine.": "Applikationen er blevet installeret korrekt, og alle kontroller bestod.", + "L'archivio ZIP è vuoto": "ZIP-arkivet er tomt", + "L'archivio non contiene ancora unità di primo livello.": "Arkivet indeholder endnu ikke enheder på første niveau.", + "L'email di attivazione è stata inviata. L'utente potrà verificare il proprio account cliccando il link ricevuto (valido 7 giorni).": "Aktiverings-e-mailen er sendt. Brugeren vil kunne bekræfte sin konto ved at klikke på det modtagne link (gyldigt i 7 dage).", + "L'immagine verrà scaricata al salvataggio": "Billedet vil blive downloadet ved gemning", + "L'immagine è troppo grande. Max 5MB.": "Billedet er for stort. Maks. 5 MB.", + "L'indirizzo email deve essere valido.": "E-mail-adressen skal være gyldig.", + "L'installazione del plugin aggiungerà 27 nuovi campi alla tabella 'libri' per supportare tutte le funzionalità di LibraryThing.": "Installation af pluginnet vil tilføje 27 nye felter til tabellen 'libri' for at understøtte alle LibraryThing-funktioner.", + "L'installazione non è completa o valida.": "Installation er ikke fuldstændig eller gyldig.", + "L'installazione sembra incompleta. Prova a disinstallare e reinstallare il plugin.": "Installation ser ud til at være ufuldstændig. Prøv at afinstallere og geninstallere pluginnet.", + "L'installazione è stata completata correttamente e tutte le verifiche sono andate a buon fine.": "Installation er fuldført korrekt, og alle kontroller bestod.", + "L'installazione è stata completata senza errori.": "Installation er fuldført uden fejl.", + "L'ora dell'evento deve essere nel formato corretto (HH:MM).": "Begivenhedens tidspunkt skal være i det korrekte format (TT:MM).", + "L'ora deve essere nel formato corretto (HH:MM).": "Klokkeslættet skal være i det korrekte format (TT:MM).", + "L'ultima sezione che invita all'azione": "Den sidste opfordring til handling", + "L'utente del database non ha i permessi per creare i TRIGGER. L'installazione è stata completata, ma per garantire la piena integrità dei dati è necessario installarli manualmente.": "Databasebrugeren har ikke tilladelse til at oprette TRIGGERES. Installationen er fuldført, men for at garantere fuld dataintegritet er det nødvendigt at installere dem manuelt.", + "L'utente ha ritirato il libro?": "Har brugeren afhentet bogen?", + "L'utente non è in stato sospeso. Solo gli utenti sospesi richiedono approvazione.": "Brugeren er ikke i suspenderet tilstand. Kun suspenderede brugere kræver godkendelse.", + "L'utente riceverà un'email con link di verifica (valido 7 giorni) e potrà attivare autonomamente l'account.": "Brugeren modtager en e-mail med et bekræftelseslink (gyldigt i 7 dage) og kan selv aktivere kontoen.", + "L'utente riceverà una notifica via email della prenotazione creata": "Brugeren modtager en e-mail-notifikation om den oprettede reservation", + "L'utente richiesto non esiste nel database.": "Den ønskede bruger findes ikke i databasen.", + "L'utente sarà attivato immediatamente e riceverà un'email di benvenuto. Potrà accedere subito.": "Brugeren aktiveres med det samme og modtager en velkomst-e-mail. De kan logge ind med det samme.", + "L'utente è stato attivato e può già effettuare il login. È stata inviata un'email di benvenuto.": "Brugeren er blevet aktiveret og kan allerede logge ind. Der er sendt en velkomst-e-mail.", + "L'utente è stato eliminato.": "Brugeren er blevet slettet.", + "LCCN": "LCCN", + "LP": "LP", + "L\\'utente riceverà una notifica via email della prenotazione creata": "Brugeren vil modtage en e-mail-notifikation om den oprettede reservation", + "La Tua Biblioteca Digitale": "Dit Digitale Bibliotek", + "La cartella vendor/ esiste e contiene le librerie necessarie.": "Mappen vendor/ findes og indeholder de nødvendige biblioteker.", + "La classificazione Dewey è utilizzata per organizzare i libri per argomento secondo standard internazionali": "Dewey-klassifikationen bruges til at organisere bøger efter emne i henhold til internationale standarder", + "La collocazione può essere assegnata automaticamente o inserita manualmente durante la creazione/modifica del libro": "Placeringen kan tildeles automatisk eller indtastes manuelt under oprettelse/redigering af bogen", + "La collocazione è l'indirizzo fisico che identifica dove si trova un libro nella biblioteca.": "Placeringen er den fysiske adresse, der angiver, hvor en bog findes på biblioteket.", + "La copertina verrà rimossa al salvataggio del libro": "Omslaget vil blive fjernet, når bogen gemmes", + "La copia assegnata è stata segnalata come persa o danneggiata": "Det tildelte eksemplar er blevet rapporteret som tabt eller beskadiget", + "La copia non è più disponibile": "Eksemplaret er ikke længere tilgængeligt", + "La cronologia degli aggiornamenti apparirà qui": "Opdateringshistorikken vises her", + "La data dell'evento è obbligatoria e deve essere nel formato corretto.": "Begivenhedsdatoen er påkrævet og skal være i det korrekte format.", + "La data dell'evento è obbligatoria.": "Begivenhedsdatoen er påkrævet.", + "La data di nascita deve essere precedente alla data di morte.": "Fødselsdatoen skal være før dødsdatoen.", + "La data non può essere nel passato.": "Datoen kan ikke være i fortiden.", + "La disinstallazione rimuoverà tutti i 27 campi LibraryThing dal database.": "Afinstallation vil fjerne alle 27 LibraryThing-felter fra databasen.", + "La lettera \"%s\" è già utilizzata da un altro scaffale. Usa un codice diverso.": "Bogstavet \"%s\" bruges allerede af en anden reol. Brug en anden kode.", + "La lingua contrassegnata come 'Predefinita' verrà usata in tutta l'applicazione per tutti gli utenti. Per cambiare la lingua dell'intera app, clicca sull'icona stella": "Sproget markeret som 'Standard' vil blive brugt i hele applikationen for alle brugere. For at ændre sproget for hele appen skal du klikke på stjerneikonet", + "La mappatura avviene automaticamente. Non è necessario rinominare i campi!": "Kortlægningen sker automatisk. Det er ikke nødvendigt at omdøbe felterne!", + "La mia bacheca": "Mit kontrolpanel", + "La modalità manutenzione non era attiva": "Vedligeholdelsestilstand var ikke aktiv", + "La pagina che stai cercando non esiste o è stata spostata.": "Den side, du leder efter, findes ikke eller er blevet flyttet.", + "La pagina che stai cercando non esiste.": "Den side, du leder efter, findes ikke.", + "La pagina verrà ricaricata automaticamente...": "Siden genindlæses automatisk...", + "La password attuale non è corretta.": "Den nuværende adgangskode er forkert.", + "La password deve contenere almeno 8 caratteri, lettere maiuscole, minuscole e numeri": "Adgangskoden skal indeholde mindst 8 tegn med store og små bogstaver samt tal", + "La password deve contenere almeno una lettera maiuscola, una minuscola e un numero": "Adgangskoden skal indeholde mindst ét stort bogstav, ét lille bogstav og ét tal", + "La password deve contenere almeno una lettera maiuscola, una minuscola e un numero.": "Adgangskoden skal indeholde mindst ét stort bogstav, ét lille bogstav og ét tal.", + "La password deve contenere maiuscole, minuscole e numeri.": "Adgangskoden skal indeholde store bogstaver, små bogstaver og tal.", + "La password deve essere lunga almeno 8 caratteri": "Adgangskoden skal være mindst 8 tegn lang", + "La password deve essere lunga almeno 8 caratteri!": "Adgangskoden skal være mindst 8 tegn lang!", + "La password deve essere lunga almeno 8 caratteri.": "Adgangskoden skal være mindst 8 tegn lang.", + "La password non può superare i 72 caratteri.": "Adgangskoden må ikke overstige 72 tegn.", + "La posizione fisica è indipendente dalla classificazione Dewey e indica dove si trova il libro sugli scaffali.": "Den fysiske placering er uafhængig af Dewey-klassifikationen og angiver, hvor bogen befinder sig på reolerne.", + "La posizione in coda sarà calcolata automaticamente in base alle prenotazioni esistenti": "Køpositionen beregnes automatisk baseret på eksisterende reservationer", + "La posizione viene assegnata automaticamente": "Placeringen tildeles automatisk", + "La prenotazione è scaduta": "Reservationen er udløbet", + "La query deve avere almeno 2 caratteri.": "Forespørgslen skal have mindst 2 tegn.", + "La recensione è stata approvata e pubblicata con successo.": "Anmeldelsen er blevet godkendt og offentliggjort.", + "La recensione è stata eliminata definitivamente.": "Anmeldelsen er blevet slettet permanent.", + "La recensione è stata rifiutata e non sarà pubblicata.": "Anmeldelsen er blevet afvist og vil ikke blive offentliggjort.", + "La richiesta ha impiegato troppo tempo. Riprova.": "Anmodningen tog for lang tid. Prøv igen.", + "La risposta include tutti i dati del libro:": "Svaret indeholder alle bogdata:", + "La route": "Ruten", + "La scadenza verrà estesa di 14 giorni": "Fristen forlænges med 14 dage", + "La sessione è scaduta. Aggiorna la pagina e riprova.": "Sessionen er udløbet. Genindlæs siden, og prøv igen.", + "La sezione principale che appare per prima sulla home": "Hovedafsnittet, der vises først på forsiden", + "La sitemap viene aggiornata automaticamente quando premi il pulsante oppure tramite lo script CLI": "Sitemap opdateres automatisk, når du trykker på knappen eller via CLI-scriptet", + "La sitemap viene aggiornata automaticamente quando premi il pulsante oppure tramite lo script CLI php scripts/generate-sitemap.php. Usa questa azione dopo aver importato un grande numero di libri o modifiche ai contenuti CMS.": "Sitemap opdateres automatisk, når du trykker på knappen eller via CLI-scriptet php scripts/generate-sitemap.php. Brug denne handling efter import af et stort antal bøger eller ændringer i CMS-indhold.", + "La tua biblioteca digitale...": "Dit digitale bibliotek...", + "La tua prenotazione per \"%s\" è stata messa in attesa. %s. Verrai notificato quando sarà disponibile una nuova copia.": "Din reservation af \"%s\" er sat i kø. %s. Du får besked, når et nyt eksemplar er tilgængeligt.", + "La tua recensione del libro...": "Din boganmeldelse...", + "La tua richiesta di prestito è stata inviata. Riceverai una notifica quando verrà approvata.": "Din låneanmodning er sendt. Du modtager en notifikation, når den godkendes.", + "La tua sessione è scaduta. Per motivi di sicurezza, effettua nuovamente l'accesso": "Din session er udløbet. Log venligst ind igen af sikkerhedsmæssige årsager", + "La tua sessione è scaduta. Per motivi di sicurezza, ricarica la pagina e riprova": "Din session er udløbet. Genindlæs siden, og prøv igen af sikkerhedsmæssige årsager", + "La tua sessione è scaduta. Per motivi di sicurezza, ricarica la pagina ed effettua nuovamente l'accesso.": "Din session er udløbet. Genindlæs siden, og log ind igen af sikkerhedsmæssige årsager.", + "La tua wishlist è vuota": "Din ønskeliste er tom", + "La validazione XSD usa lo schema MARC21 Slim v1.1 (Library of Congress). Molti export di sistemi archivistici non sono strict-compliant: usa questa opzione solo con file che sai essere conformi.": "XSD-validering bruger MARC21 Slim v1.1-skemaet (Library of Congress). Mange arkivsystemeksportører er ikke strengt overholdende: brug kun denne indstilling med filer, du ved er i overensstemmelse.", + "La versione %s è disponibile. Prima di aggiornare, verrà creato un backup automatico del database.": "Version %s er tilgængelig. Før opdatering oprettes der automatisk en databasebackup.", + "Language %s has been activated automatically": "Sprog %s er blevet aktiveret automatisk", + "Larghezza × Altezza (px)": "Bredde × Højde (px)", + "Lascia una recensione": "Skriv en anmeldelse", + "Lascia vuoto o usa \"Genera\" per assegnare automaticamente la prossima posizione disponibile.": "Lad stå tom eller brug \"Generér\" for automatisk at tildele den næste ledige placering.", + "Lascia vuoto o usa \\": "Lad stå tom eller brug \\", + "Lascia vuoto per 1 mese": "Lad stå tom i 1 måned", + "Lascia vuoto per auto-rilevamento. Necessario solo su macOS/Linux con socket personalizzati.": "Lad stå tom for automatisk registrering. Kun nødvendig på macOS/Linux med tilpassede sockets.", + "Lascia vuoto per generare automaticamente": "Lad stå tom for at generere automatisk", + "Lascia vuoto per inviare un link di impostazione": "Lad stå tom for at sende et opsætningslink", + "Lascia vuoto per mantenere il nome attuale": "Lad stå tom for at beholde det nuværende navn", + "Lascia vuoto per mantenere la chiave esistente. Inserisci un nuovo valore per aggiornarla.": "Lad stå tom for at beholde den eksisterende nøgle. Indtast en ny værdi for at opdatere den.", + "Lascia vuoto per nascondere il social dal footer": "Lad stå tom for at skjule det sociale medie fra sidefoden", + "Lascia vuoto per nascondere il titolo": "Lad stå tom for at skjule titlen", + "Lascia vuoto per non modificare": "Lad stå tom for ikke at ændre", + "Lascia vuoto se l'autore è vivente": "Lad stå tom, hvis forfatteren er i live", + "Lasciare vuoto per un record top-level (fondo). Per serie/fascicoli/unità: l'ID dell'unità padre.": "Lad stå tom for en post på topniveau (samling). For serier/filer/enheder: den overordnede enheds ID.", + "Latitudine": "Breddegrad", + "Layout immagine evento": "Billedlayout for begivenhed", + "Le API key disattivate restituiranno errore 401": "Deaktiverede API-nøgler vil returnere fejl 401", + "Le Mie Prenotazioni": "Mine Reservationer", + "Le Mie Recensioni": "Mine Anmeldelser", + "Le copie disponibili vengono calcolate automaticamente": "Tilgængelige eksemplarer beregnes automatisk", + "Le date rosse non sono disponibili. La richiesta verrà valutata da un amministratore.": "Røde datoer er ikke tilgængelige. Anmodningen vil blive vurderet af en administrator.", + "Le date rosse o arancioni non sono disponibili. La richiesta verrà valutata da un amministratore.": "Røde eller orangerøde datoer er ikke tilgængelige. Anmodningen vil blive vurderet af en administrator.", + "Le mie prenotazioni": "Mine reservationer", + "Le password non coincidono": "Adgangskorderne stemmer ikke overens", + "Le password non coincidono!": "Adgangskorderne stemmer ikke overens!", + "Le password non coincidono.": "Adgangskorderne stemmer ikke overens.", + "Le password non corrispondono": "Adgangskorderne stemmer ikke overens", + "Le posizioni si generano automaticamente": "Placeringer genereres automatisk", + "Le richieste API torneranno al limite di 60/ora.": "API-anmodninger vil vende tilbage til grænsen på 60/time.", + "Le route non possono contenere spazi": "Ruter må ikke indeholde mellemrum", + "Le route sono gli URL usati nell'applicazione. Traducendole, puoi avere URL in italiano o inglese in base alla lingua dell'installazione.": "Ruter er de URL'er, der bruges i applikationen. Ved at oversætte dem kan du have URL'er på italiensk eller engelsk afhængigt af installationssproget.", + "Le sessioni scadono automaticamente per proteggere i tuoi dati.": "Sessioner udløber automatisk for at beskytte dine data.", + "Le transazioni associate resteranno come orfane.": "Tilknyttede transaktioner forbliver forældreløse.", + "Le tue recensioni": "Dine anmeldelser", + "Leggi PDF": "Læs PDF", + "Lending Status & Patron": "Udlånsstatus & Låner", + "Lending status e patron tracking": "Udlånsstatus og lånersporing", + "Letta": "Læst", + "Letto": "Læst", + "Lettore": "Læser", + "Libero": "Ledig", + "Library Classifications (LCCN, LC, Dewey)": "Biblioteksklassifikationer (LCCN, LC, Dewey)", + "Library Management System": "Biblioteksadministrationssystem", + "Library of Congress Control Number": "Library of Congress Control Number", + "LibraryThing": "LibraryThing", + "LibraryThing TSV": "LibraryThing TSV", + "LibraryThing Work ID": "LibraryThing Work ID", + "LibraryThing esporta i dati in formato TSV (Tab-Separated Values). Pinakes riconosce automaticamente questi campi:": "LibraryThing eksporterer data i TSV-format (Tab-Separated Values). Pinakes genkender automatisk disse felter:", + "Librerie di upload non caricate. Ricarica la pagina.": "Upload-biblioteker er ikke indlæst. Genindlæs siden.", + "Libri": "Bøger", + "Libri Disponibili": "Tilgængelige Bøger", + "Libri Importati": "Importerede Bøger", + "Libri Prestati": "Udlånte Bøger", + "Libri Totali": "Bøger I Alt", + "Libri attualmente in prestito": "Bøger, der i øjeblikket er udlånt", + "Libri con ISBN": "Bøger med ISBN", + "Libri nelle collane": "Bøger i serier", + "Libri per Collocazione": "Bøger efter placering", + "Libri prenotati dagli utenti": "Bøger reserveret af brugere", + "Libro": "Bog", + "Libro '%s' (ID: %d) ha copie disponibili negative: %d": "Bogen '%s' (ID: %d) har negative tilgængelige eksemplarer: %d", + "Libro '%s' (ID: %d) ha più copie disponibili (%d) che totali (%d)": "Bogen '%s' (ID: %d) har flere tilgængelige eksemplarer (%d) end totalt (%d)", + "Libro '%s' (ID: %d) ha stato '%s' ma copie disponibili: %d": "Bogen '%s' (ID: %d) har status '%s', men tilgængelige eksemplarer: %d", + "Libro Esistente:": "Eksisterende bog:", + "Libro Già Esistente": "Bog findes allerede", + "Libro ID %d ha posizioni coda non sequenziali: %s": "Bog ID %d har ikke-sekventielle køpositioner: %s", + "Libro Restituito": "Bog afleveret", + "Libro aggiornato con successo!": "Bog opdateret med succes!", + "Libro aggiunto con successo!": "Bog tilføjet med succes!", + "Libro da prenotare": "Bog der skal reserveres", + "Libro disponibile per la prenotazione": "Bog tilgængelig til reservation", + "Libro e utente sono campi obbligatori.": "Bog og bruger er påkrævede felter.", + "Libro non disponibile": "Bog ikke tilgængelig", + "Libro non in collana": "Bog ikke i serie", + "Libro non trovato": "Bog ikke fundet", + "Libro non trovato nel database Open Library": "Bog ikke fundet i Open Library-databasen", + "Libro non trovato su Open Library.": "Bog ikke fundet på Open Library.", + "Libro non trovato.": "Bog ikke fundet.", + "Libro non valido o eliminato": "Ugyldig eller slettet bog", + "Libro prenotato disponibile": "Reserveret bog tilgængelig", + "Libro restituito con successo": "Bog afleveret med succes", + "Libro rimosso dalla serie": "Bog fjernet fra serien", + "Libro senza titolo": "Bog uden titel", + "Libro:": "Bog:", + "Licenza": "Licens", + "Limite massimo rinnovi raggiunto": "Maksimal grænse for fornyelser nået", + "Limite pagina: 500.": "Sidelimite: 500.", + "Limiti: massimo 50 libri con scraping attivo, timeout 5 minuti": "Grænser: maks. 50 bøger med aktiv scraping, timeout 5 minutter", + "Lingua": "Sprog", + "Lingua App": "App-sprog", + "Lingua Attiva": "Aktivt sprog", + "Lingua Predefinita": "Standardsprog", + "Lingua Predefinita:": "Standardsprog:", + "Lingua aggiornata con successo": "Sprog opdateret med succes", + "Lingua creata con successo": "Sprog oprettet med succes", + "Lingua del libro (ITA, ENG, etc.)": "Bogens sprog (ITA, ENG osv.)", + "Lingua e Provenienza": "Sprog og Oprindelse", + "Lingua eliminata con successo": "Sprog slettet med succes", + "Lingua non supportata": "Sprog ikke understøttet", + "Lingua non trovata": "Sprog ikke fundet", + "Lingua orig.": "Orig. sprog", + "Lingua originale": "Originalsprog", + "Lingua originale del libro": "Bogens originalsprog", + "Lingua predefinita impostata con successo": "Standardsprog indstillet med succes", + "Lingua, Numero Pagine": "Sprog, Sidetal", + "Lingue": "Sprog", + "Lingue Configurate": "Konfigurerede sprog", + "Lingue Originali": "Originalsprog", + "Lingue valide": "Gyldige sprog", + "Link": "Link", + "Link Cookie Statement": "Link til cookie-erklæring", + "Link Cookie Technologies": "Link til cookieteknologier", + "Link Social Media": "Sociale medier-links", + "Link al file digitale (se disponibile)": "Link til digital fil (hvis tilgængelig)", + "Link all'audiolibro (se disponibile)": "Link til lydbog (hvis tilgængelig)", + "Link copiato!": "Link kopieret!", + "Link di esempio": "Eksempellink", + "Link di reset non valido o scaduto": "Nulstillingslink ugyldigt eller udløbet", + "Link pulsante": "Knaplink", + "Linked Data:": "Linked Data:", + "LinkedIn": "LinkedIn", + "Lista": "Liste", + "Livello": "Niveau", + "Livello ${m.numero_livello}": "Niveau ${m.numero_livello}", + "Livello *": "Niveau *", + "Livello 1 (Classi)": "Niveau 1 (Klasser)", + "Livello 2 (Divisioni)": "Niveau 2 (Afdelinger)", + "Livello 3 (Specifiche)": "Niveau 3 (Specifikationer)", + "Livello di catalogazione": "Katalogiseringsniveau", + "Livello di descrizione": "Beskrivelsesniveau", + "Livello principale (es. Prosa, Poesia, Teatro)": "Hovedniveau (f.eks. Prosa, Poesi, Teater)", + "Lo script CLI utilizza il valore di": "CLI-scriptet bruger værdien af", + "Lo script CLI utilizza il valore di APP_CANONICAL_URL. Assicurati che sia configurato correttamente per evitare URL duplicati.": "CLI-scriptet bruger værdien af APP_CANONICAL_URL. Sørg for, at det er konfigureret korrekt for at undgå duplikerede URL'er.", + "Lo stato della prenotazione sarà impostato automaticamente come \"attiva\"": "Reservationsstatus indstilles automatisk til \"aktiv\"", + "Lo stato della prenotazione sarà impostato automaticamente come \\": "Reservationsstatus indstilles automatisk som \\", + "Loans": "Udlån", + "Locale": "Lokalt", + "Locale non supportato.": "Lokalitet ikke understøttet.", + "Località": "Sted", + "Lock file creato (installazione protetta)": "Låsefil oprettet (beskyttet installation)", + "Log": "Log", + "Log Sicurezza": "Sikkerhedslogfiler", + "Log Transazioni": "Transaktionslog", + "Log Transazioni NCIP": "NCIP-transaktionslog", + "Log di Sicurezza": "Sikkerhedslog", + "Login": "Log ind", + "Login Riuscito": "Login lykkedes", + "Logo": "Logo", + "Logo Applicazione (opzionale)": "Applikationslogo (valgfrit)", + "Logout effettuato con successo": "Logget ud med succes", + "Longitudine": "Længdegrad", + "Luoghi": "Steder", + "Luoghi (RiC-CM)": "Steder (RiC-CM)", + "Luogo": "Sted", + "Luogo padre": "Overordnet sted", + "MARCXML": "MARCXML", + "MD5 non valido (32 caratteri esadecimali).": "Ugyldig MD5 (32 hexadecimale tegn).", + "MP3, M4A o OGG, max 500 MB": "MP3, M4A eller OGG, maks. 500 MB", + "Mai generata": "Aldrig genereret", + "Mai utilizzata": "Aldrig brugt", + "MaintenanceService ICS non generato": "MaintenanceService ICS ikke genereret", + "MaintenanceService connessione database fallita": "MaintenanceService databaseforbindelse mislykkedes", + "MaintenanceService errore attivazione prestiti": "MaintenanceService fejl ved aktivering af udlån", + "MaintenanceService errore attivazione prestito": "MaintenanceService fejl ved aktivering af udlån", + "MaintenanceService errore conversione prenotazioni": "MaintenanceService fejl ved konvertering af reservationer", + "MaintenanceService errore durante hook login admin": "MaintenanceService fejl under admin-login-hook", + "MaintenanceService errore elaborazione prenotazione": "MaintenanceService fejl ved behandling af reservation", + "MaintenanceService errore generazione ICS": "MaintenanceService fejl ved generering af ICS", + "MaintenanceService errore notifiche": "MaintenanceService fejl ved notifikationer", + "MaintenanceService errore prenotazioni scadute": "MaintenanceService fejl ved udløbne reservationer", + "MaintenanceService errore prestiti in ritardo": "MaintenanceService fejl ved forsinkede udlån", + "MaintenanceService errore ritiri scaduti": "MaintenanceService fejl ved udløbne afhentninger", + "MaintenanceService errore scadenza prenotazione": "MaintenanceService fejl ved reservationsudløb", + "MaintenanceService errore scadenza ritiro": "MaintenanceService fejl ved udløb af afhentningsfrist", + "MaintenanceService eseguito al login admin": "MaintenanceService udført ved admin-login", + "MaintenanceService prenotazione convertita in prestito": "MaintenanceService reservation konverteret til udlån", + "MaintenanceService prenotazione scaduta": "MaintenanceService reservation udløbet", + "MaintenanceService ritiro scaduto": "MaintenanceService afhentningsfrist udløbet", + "Mancante": "Manglende", + "Mandati / fonti di autorità": "Mandater / autoritetskilder", + "Mandato": "Mandat", + "Mantieni in ritardo": "Behold som forsinket", + "Manuale": "Manuel", + "Manutenzione": "Vedligeholdelse", + "Manutenzione Completa": "Fuld vedligeholdelse", + "Manutenzione completata: %d record corretti": "Vedligeholdelse fuldført: %d poster rettet", + "Manutenzione disattivata": "Vedligeholdelse deaktiveret", + "Manutenzione giornaliera del database": "Daglig databasewebvedligeholdelse", + "Mappa / cartografia (hk)": "Kort / kartografi (hb)", + "Mappa Interattiva": "Interaktivt kort", + "Mappa del sito per i motori di ricerca": "Sitemap til søgemaskiner", + "Mappa non disponibile": "Kort ikke tilgængeligt", + "Mario": "Mogens", + "Marketing:": "Marketing:", + "Maschio": "Mand", + "Materiale archivistico (ISAD(G))": "Arkivmateriale (ISAD(G))", + "Materiale misto (zz)": "Blandet materiale (zz)", + "Materiale specifico (foto, poster, cartoline…)": "Specifikt materiale (fotos, plakater, postkort...)", + "Max 10.000 righe • Max 100 copie per libro": "Maks. 10.000 rækker • Maks. 100 eksemplarer pr. bog", + "Media": "Gennemsnit", + "Mediocre": "Mellem", + "Membro": "Medlem", + "Memory limit aumentato": "Hukommelsesgrænse forøget", + "Mensola": "Hylde", + "Mensola creata e %d posizioni generate.": "Hylde oprettet og %d positioner genereret.", + "Mensola creata.": "Hylde oprettet.", + "Mensola eliminata": "Hylde slettet", + "Mensole": "Hylder", + "Menu": "Menu", + "Menu \"Prestiti\" nell'admin sidebar": "Menuen \"Udlån\" i admin-sidepanelet", + "Menu Principale": "Hovedmenu", + "Merge - Aggiungi e aggiorna (mantiene dati esistenti)": "Flet - Tilføj og opdater (beholder eksisterende data)", + "Merge completato": "Fletning fuldført", + "Merge completato: %d aggiunti, %d aggiornati, %d invariati. Totale: %d voci.": "Fletning fuldført: %d tilføjet, %d opdateret, %d uændret. I alt: %d poster.", + "Mese": "Måned", + "Messaggi": "Beskeder", + "Messaggi di Contatto": "Kontaktbeskeder", + "Messaggio": "Besked", + "Messaggio inviato con successo! Ti risponderemo al più presto.": "Besked sendt med succes! Vi svarer hurtigst muligt.", + "Messaggio non trovato.": "Besked ikke fundet.", + "Metadati delle copie digitali usati nell'esportazione OAI-PMH formato MAG per ICCU/Internet Culturale.": "Metadata for digitale eksemplarer brugt i OAI-PMH-eksport i MAG-format til ICCU/Internet Culturale.", + "Metadati serie": "Seriemetadata", + "Metadati:": "Metadata:", + "Metodo di invio": "Forsendelsesmetode", + "Microforma (bm)": "Mikroform (bm)", + "Migrazione database": "Databasemigrering", + "Miniatura affiancata al testo (240px)": "Miniaturebillede ved siden af tekst (240px)", + "Minimo 8 caratteri": "Minimum 8 tegn", + "Minimo 8 caratteri, con lettere maiuscole, minuscole e numeri": "Minimum 8 tegn, med store og små bogstaver samt tal", + "Misto": "Blandet", + "Mittente": "Afsender", + "Mittente (email)": "Afsender (e-mail)", + "Mittente (nome)": "Afsender (navn)", + "Modalità Catalogo": "Katalogtilstand", + "Modalità Solo Catalogo": "Kun katalog-tilstand", + "Modalità colore": "Farvetilstand", + "Modalità di importazione": "Importtilstand", + "Modalità manutenzione disattivata": "Vedligeholdelsestilstand deaktiveret", + "Modalità manutenzione rimossa automaticamente (scaduta)": "Vedligeholdelsestilstand fjernet automatisk (udløbet)", + "Modello FRBR/LRM (Work)": "FRBR/LRM-model (Værk)", + "Moderatore": "Moderator", + "Modifica": "Redigér", + "Modifica %s": "Redigér %s", + "Modifica Autore": "Redigér forfatter", + "Modifica Autore:": "Redigér forfatter:", + "Modifica Chi Siamo": "Redigér Om os", + "Modifica Editore": "Redigér forlag", + "Modifica Evento": "Redigér begivenhed", + "Modifica Evento: %s": "Redigér begivenhed: %s", + "Modifica Homepage": "Redigér forside", + "Modifica Libro": "Redigér bog", + "Modifica Lingua:": "Redigér sprog:", + "Modifica Opera": "Redigér værk", + "Modifica Prenotazione": "Redigér reservation", + "Modifica Prenotazione #%s": "Redigér reservation #%s", + "Modifica Route": "Redigér rute", + "Modifica Route Tradotte": "Redigér oversatte ruter", + "Modifica Stato Copia": "Redigér eksemplarstatus", + "Modifica Utente": "Redigér bruger", + "Modifica attività": "Redigér aktivitet", + "Modifica authority record": "Redigér autoritetspost", + "Modifica i contenuti della homepage: hero, features, CTA e immagine di sfondo": "Redigér indholdet på forsiden: hero, features, CTA og baggrundsbillede", + "Modifica il contenuto e le impostazioni della pagina": "Redigér sidens indhold og indstillinger", + "Modifica le informazioni dell'evento": "Redigér begivenhedsoplysninger", + "Modifica le pagine statiche del sito": "Redigér websitets statiske sider", + "Modifica luogo": "Redigér sted", + "Modifica prestito": "Redigér udlån", + "Modifica prestito #%s": "Redigér udlån #%s", + "Modifica profilo": "Redigér profil", + "Modifica record": "Redigér post", + "Modifica record archivistico": "Redigér arkivpost", + "Modifica stato": "Redigér status", + "Modifica utente": "Redigér bruger", + "Modificabili nel form libro": "Kan redigeres i bogformularen", + "Modifiche non salvate": "Ikke-gemte ændringer", + "Modulo": "Modul", + "Molto Buono": "Meget god", + "Molto buono": "Meget god", + "Mondadori": "Mondadori", + "Monitora tentativi di login e eventi di sicurezza": "Overvåg login-forsøg og sikkerhedshændelser", + "Mostra": "Vis", + "Mostra API Key": "Vis API-nøgle", + "Mostra Cookie Analitici": "Vis analytiske cookies", + "Mostra Cookie di Marketing": "Vis marketing-cookies", + "Mostra _MENU_ libri": "Vis _MENU_ bøger", + "Mostra badge nell'area amministrazione": "Vis mærker i administrationsområdet", + "Mostra badge nella pagina dettaglio libro": "Vis mærke på bogdetaljesiden", + "Mostra categoria \\": "Vis kategori \\", + "Mostra filtri": "Vis filtre", + "Mostra gli ultimi libri aggiunti al catalogo": "Vis de seneste bøger tilføjet til kataloget", + "Mostra i badge nella pagina dettaglio libro del catalogo": "Vis mærker på katalogets bogdetaljeside", + "Mostra i badge nella scheda libro dell'area amministrazione": "Vis mærker på bogkortet i administrationsområdet", + "Mostra questa guida": "Vis denne vejledning", + "Mostra scorciatoie": "Vis genveje", + "Mostra tutto": "Vis alt", + "Mostra/nascondi token": "Vis/skjul token", + "Mostrati %d record archivistici su un massimo di %d per pagina.": "Viser %d arkivposter ud af maksimalt %d pr. side.", + "Mostrati %d record su un massimo di %d per pagina.": "Viser %d poster ud af maksimalt %d pr. side.", + "Mostrati primi 100 autori. Usa la ricerca type-ahead per liste più lunghe.": "Viser de første 100 forfattere. Brug type-ahead-søgning til længere lister.", + "Mostrati record:": "Viste poster:", + "Motivo del rifiuto (opzionale)": "Årsag til afvisning (valgfrit)", + "Motivo del rifiuto (opzionale):": "Årsag til afvisning (valgfrit):", + "N. Inventario": "Inventar-nr.", + "N. Libri": "Antal bøger", + "N/D": "U.A.", + "Narrativa": "Skønlitteratur", + "Nascita a": "Født til", + "Nascita da": "Født fra", + "Nascondi": "Skjul", + "Nascondi API Key": "Skjul API-nøgle", + "Nascondi filtri": "Skjul filtre", + "Nascondi se il sito non utilizza cookie di marketing o advertising": "Skjul, hvis websitet ikke bruger marketing- eller reklamecookies", + "Nascondi se il sito non utilizza strumenti di analytics (es. Google Analytics)": "Skjul, hvis websitet ikke bruger analyseredskaber (f.eks. Google Analytics)", + "Nascosto": "Skjult", + "Nato il %s": "Født den %s", + "Navigazione": "Navigation", + "Navigazione pagine": "Sidenavigation", + "Nazionalità": "Nationalitet", + "Nederlands (NL)": "Hollandsk (NL)", + "Nei Preferiti": "I Favoritter", + "Nella collezione": "I samlingen", + "Nella stessa collana": "I samme serie", + "Nessun Problema": "Ingen problemer", + "Nessun aggiornamento": "Ingen opdateringer", + "Nessun aggiornamento registrato": "Ingen registrerede opdateringer", + "Nessun authority record collegato. Aggiungine uno qui sotto.": "Ingen tilknyttede autoritetsposter. Tilføj en nedenfor.", + "Nessun authority record disponibile.": "Ingen autoritetsposter tilgængelige.", + "Nessun authority record.": "Ingen autoritetsposter.", + "Nessun autore di libreria collegato. Associa un autore qui sotto per unificare libri e archivi nella ricerca.": "Ingen tilknyttede biblioteksforfattere. Knyt en forfatter til nedenfor for at forene bøger og arkiver i søgningen.", + "Nessun autore selezionato": "Ingen forfattere valgt", + "Nessun autore trovato": "Ingen forfattere fundet", + "Nessun autore trovato, premi Invio per aggiungerne uno nuovo": "Ingen forfatter fundet, tryk på Enter for at tilføje en ny", + "Nessun backup disponibile": "Ingen backup tilgængelig", + "Nessun backup disponibile.": "Ingen backup tilgængelig.", + "Nessun dato": "Ingen data", + "Nessun dato trovato su LibreriaUniversitaria/Feltrinelli.": "Ingen data fundet på LibreriaUniversitaria/Feltrinelli.", + "Nessun dato.": "Ingen data.", + "Nessun documento caricato.": "Ingen dokumenter uploadet.", + "Nessun editore selezionato": "Ingen forlag valgt", + "Nessun editore trovato": "Ingen forlag fundet", + "Nessun editore trovato per": "Ingen forlag fundet for", + "Nessun editore trovato per \"${query}\" — premi Invio per crearne uno nuovo.": "Ingen forlag fundet for \"${query}\" — tryk på Enter for at oprette et nyt.", + "Nessun editore trovato, premi Invio per aggiungerne uno nuovo": "Ingen forlag fundet, tryk på Enter for at tilføje et nyt", + "Nessun elemento trovato": "Ingen elementer fundet", + "Nessun errore": "Ingen fejl", + "Nessun evento": "Ingen begivenheder", + "Nessun evento in programma": "Ingen planlagte begivenheder", + "Nessun file caricato": "Ingen fil uploadet", + "Nessun file caricato.": "Ingen fil uploadet.", + "Nessun file di traduzione caricato. Carica un file JSON per abilitare questa lingua.": "Ingen oversættelsesfil uploadet. Upload en JSON-fil for at aktivere dette sprog.", + "Nessun fondo pubblicato.": "Ingen offentliggjorte samlinger.", + "Nessun genere trovato": "Ingen genrer fundet", + "Nessun import in corso": "Ingen import i gang", + "Nessun import registrato": "Ingen registrerede importer", + "Nessun libro": "Ingen bøger", + "Nessun libro ancora inserito": "Ingen bøger tilføjet endnu", + "Nessun libro con collocazione trovato": "Ingen bøger med placering fundet", + "Nessun libro da arricchire": "Ingen bøger at berige", + "Nessun libro nel database": "Ingen bøger i databasen", + "Nessun libro nella collana": "Ingen bøger i serien", + "Nessun libro recente": "Ingen nye bøger", + "Nessun libro recente disponibile": "Ingen nye bøger tilgængelige", + "Nessun libro registrato": "Ingen registrerede bøger", + "Nessun libro selezionato": "Ingen bøger valgt", + "Nessun libro trovato": "Ingen bøger fundet", + "Nessun log disponibile": "Ingen logfiler tilgængelige", + "Nessun logo caricato": "Ingen logo uploadet", + "Nessun luogo registrato.": "Ingen sted registreret.", + "Nessun messaggio ricevuto": "Ingen modtagne beskeder", + "Nessun motivo specificato": "Ingen årsag angivet", + "Nessun padre (genere principale)": "Ingen overordnet (hovedgenre)", + "Nessun partner configurato.": "Ingen partnere konfigureret.", + "Nessun plugin installato": "Ingen plugins installeret", + "Nessun prestito attivo": "Ingen aktive lån", + "Nessun prestito disponibile per generare il grafico": "Ingen lån til rådighed til at generere diagrammet", + "Nessun prestito in attesa di ritiro": "Ingen lån afventer afhentning", + "Nessun prestito in corso": "Ingen løbende lån", + "Nessun prestito passato": "Ingen tidligere lån", + "Nessun prestito registrato": "Ingen lån registreret", + "Nessun prestito scaduto": "Ingen forfaldne lån", + "Nessun prestito trovato": "Ingen lån fundet", + "Nessun prestito trovato.": "Ingen lån fundet.", + "Nessun pulsante selezionato": "Ingen knapper valgt", + "Nessun record archivistico.": "Ingen arkivposter endnu.", + "Nessun record trovato su SBN.": "Ingen post fundet på SBN.", + "Nessun risultato": "Ingen resultater", + "Nessun risultato per": "Ingen resultater for", + "Nessun risultato trovato": "Ingen resultater fundet", + "Nessun risultato trovato con i filtri applicati": "Ingen resultater fundet med de anvendte filtre", + "Nessun risultato trovato per": "Ingen resultater fundet for", + "Nessun risultato trovato per la ricerca.": "Ingen resultater fundet for søgningen.", + "Nessun ritiro": "Ingen afhentninger", + "Nessun server configurato. Aggiungine uno per iniziare.": "Ingen servere konfigureret. Tilføj en for at komme i gang.", + "Nessun sottogenere": "Ingen undergenre", + "Nessun sottogenere definito": "Ingen undergenrer defineret", + "Nessun sottogenere.": "Ingen undergenrer.", + "Nessun suggerimento": "Ingen forslag", + "Nessun suggerimento disponibile": "Intet forslag til rådighed", + "Nessun titolo corrisponde al filtro corrente.": "Ingen titel matcher det aktuelle filter.", + "Nessuna": "Ingen", + "Nessuna API key configurata": "Ingen API-nøgle konfigureret", + "Nessuna alternativa disponibile": "Ingen alternativer til rådighed", + "Nessuna attività": "Ingen aktivitet", + "Nessuna attività registrata.": "Ingen aktivitet registreret.", + "Nessuna collana trovata. Aggiungi una collana a un libro per iniziare.": "Ingen serier fundet. Tilføj en serie til en bog for at komme i gang.", + "Nessuna collocazione trovata": "Ingen placeringer fundet", + "Nessuna copertina caricata": "Intet omslag uploadet", + "Nessuna copertina caricata.": "Intet omslag uploadet.", + "Nessuna copertina da scaricare": "Ingen omslag at downloade", + "Nessuna copia attualmente disponibile": "Ingen eksemplarer til rådighed i øjeblikket", + "Nessuna copia digitalizzata registrata.": "Ingen digitaliserede eksemplarer registreret.", + "Nessuna copia disponibile nelle date richieste": "Ingen eksemplarer til rådighed på de ønskede datoer", + "Nessuna copia disponibile per il periodo richiesto": "Ingen eksemplarer til rådighed i den anmodede periode", + "Nessuna copia disponibile per il periodo richiesto.": "Ingen eksemplarer til rådighed i den anmodede periode.", + "Nessuna copia disponibile per questo libro": "Ingen eksemplarer til rådighed for denne bog", + "Nessuna copia registrata": "Ingen eksemplarer registreret", + "Nessuna descrizione disponibile": "Ingen beskrivelse til rådighed", + "Nessuna descrizione disponibile per questo libro.": "Ingen beskrivelse til rådighed for denne bog.", + "Nessuna edizione collegata. Apri un libro e usa «Collega a Opera».": "Ingen udgaver tilknyttet. Åbn en bog og brug „Tilknyt til værk“.", + "Nessuna edizione disponibile per questa opera.": "Ingen udgaver til rådighed for dette værk.", + "Nessuna espressione registrata (traduzioni, revisioni, adattamenti).": "Ingen udtryk registreret (oversættelser, revisioner, bearbejdelser).", + "Nessuna fonte di scraping disponibile. Installa almeno un plugin di scraping (es. Open Library o Scraping Pro).": "Ingen scraping-kilde til rådighed. Installer mindst ét scraping-plugin (f.eks. Open Library eller Scraping Pro).", + "Nessuna forma trovata su SBN.": "Ingen form fundet på SBN.", + "Nessuna lingua configurata": "Ingen sprog konfigureret", + "Nessuna mensola per questo scaffale. Creane una!": "Ingen hylder til dette reol. Opret en!", + "Nessuna mensola. Creane una per iniziare!": "Ingen hylder. Opret en for at komme i gang!", + "Nessuna notifica": "Ingen notifikationer", + "Nessuna opera ancora. Raggruppa le edizioni dei tuoi libri creando la prima opera.": "Ingen værker endnu. Grupper udgaverne af dine bøger ved at oprette det første værk.", + "Nessuna prenotazione": "Ingen reservationer", + "Nessuna prenotazione attiva": "Ingen aktive reservationer", + "Nessuna recensione": "Ingen anmeldelser", + "Nessuna recensione approvata": "Ingen godkendte anmeldelser", + "Nessuna recensione in attesa": "Ingen afventende anmeldelser", + "Nessuna recensione rifiutata": "Ingen afviste anmeldelser", + "Nessuna relazione collegata.": "Ingen tilknyttede relationer.", + "Nessuna ricerca recente": "Ingen seneste søgninger", + "Nessuna richiesta": "Ingen anmodninger", + "Nessuna richiesta da approvare": "Ingen anmodninger at godkende", + "Nessuna richiesta in attesa": "Ingen afventende anmodninger", + "Nessuna richiesta in attesa di approvazione.": "Ingen anmodninger afventer godkendelse.", + "Nessuna selezione": "Intet valgt", + "Nessuna sessione attiva. Le sessioni vengono create quando accedi con 'Ricordami' selezionato.": "Ingen aktive sessioner. Sessioner oprettes, når du logger ind med 'Husk mig' valgt.", + "Nessuna transazione registrata.": "Ingen transaktioner registreret.", + "Nessuna unità archivistica collegata.": "Ingen arkivenhed tilknyttet.", + "Nessuna valutazione": "Ingen bedømmelse", + "Nessuno": "Ingen", + "Nessuno scaffale. Creane uno per iniziare!": "Ingen reoler. Opret en for at komme i gang!", + "Nessuno storico": "Ingen historik", + "No": "Nej", + "Nodo mancante di codice a profondità %d.": "Manglende knude med kode i dybde %d.", + "Nome": "Fornavn", + "Nome *": "Navn *", + "Nome Applicazione": "Applikationsnavn", + "Nome Categoria": "Kategorinavn", + "Nome Cognome": "For- og efternavn", + "Nome Database": "Databasenavn", + "Nome Editore": "Forlagets navn", + "Nome File": "Filnavn", + "Nome Indice": "Indeksnavn", + "Nome Inglese": "Engelsk navn", + "Nome Nativo": "Oprindeligt navn", + "Nome Partner": "Partnernavn", + "Nome Referente": "Kontaktpersons navn", + "Nome Server": "Servernavn", + "Nome applicazione": "Applikationsnavn", + "Nome autore": "Forfatternavn", + "Nome backup non specificato": "Backupnavn ikke angivet", + "Nome backup non valido": "Ugyldigt backupnavn", + "Nome categoria esistente": "Eksisterende kategorinavn", + "Nome collana di destinazione": "Målseriens navn", + "Nome collana non valido": "Ugyldigt serienavn", + "Nome completo": "Fulde navn", + "Nome cookie analitici": "Navn på analytiske cookies", + "Nome cookie essenziali": "Navn på essentielle cookies", + "Nome cookie marketing": "Navn på marketingcookies", + "Nome d'arte o pseudonimo": "Kunstnernavn eller pseudonym", + "Nome del curatore dell'opera (se applicabile)": "Navn på værkets kurator (hvis relevant)", + "Nome del prestatore": "Udlånerens navn", + "Nome del traduttore (se applicabile)": "Oversætterens navn (hvis relevant)", + "Nome dell'editore": "Forlagets navn", + "Nome dell'illustratore (se applicabile)": "Illustratorens navn (hvis relevant)", + "Nome della casa editrice": "Forlagets navn", + "Nome della classificazione": "Klassifikationsnavn", + "Nome della collana": "Seriens navn", + "Nome della lingua in inglese (es. Italian, English, Spanish)": "Sproglets navn på engelsk (f.eks. Italian, English, Spanish)", + "Nome della lingua nella lingua stessa (es. Italiano, English, Español)": "Sproglets navn på sproget selv (f.eks. Italiano, English, Español)", + "Nome e cognome del referente": "Kontaktpersonens for- og efternavn", + "Nome e cognome dell'autore": "Forfatterens for- og efternavn", + "Nome e cognome sono obbligatori.": "For- og efternavn er påkrævet.", + "Nome ed Endpoint URL sono obbligatori.": "Navn og Endpoint URL er påkrævet.", + "Nome editore": "Forlagets navn", + "Nome editore...": "Forlagets navn...", + "Nome file non valido.": "Ugyldigt filnavn.", + "Nome genere": "Genrenavn", + "Nome o cognome troppo lungo (massimo 100 caratteri)": "For- eller efternavn for langt (maksimalt 100 tegn)", + "Nome plugin non valido. Usa solo lettere, numeri, trattini o underscore.": "Ugyldigt plugin-navn. Brug kun bogstaver, tal, bindestreger eller underscores.", + "Nome sottogenere": "Undergenrenavn", + "Nome specifico della serie a cui appartiene il libro.": "Specifikt navn på den serie, bogen tilhører.", + "Nome, cognome, email...": "Navn, efternavn, e-mail...", + "Nome, pseudonimo, biografia...": "Navn, pseudonym, biografi...", + "Nome:": "Navn:", + "Non Disponibile": "Ikke tilgængelig", + "Non Disponibili": "Ikke tilgængelige", + "Non Installato": "Ikke installeret", + "Non ancora restituito": "Endnu ikke afleveret tilbage", + "Non assegnata": "Ikke tildelt", + "Non autenticato": "Ikke godkendt", + "Non autorizzato": "Ikke autoriseret", + "Non autorizzato.": "Ikke autoriseret.", + "Non chiudere questa finestra": "Luk ikke dette vindue", + "Non ci sono azioni urgenti da completare.": "Der er ingen uopsættelige handlinger, der skal fuldføres.", + "Non ci sono dati da esportare": "Der er ingen data at eksportere", + "Non ci sono nuovi arrivi al momento.": "Der er ingen nye ankomster i øjeblikket.", + "Non ci sono prestiti o prenotazioni attive al momento.": "Der er ingen aktive lån eller reservationer i øjeblikket.", + "Non ci sono recensioni in attesa di approvazione.": "Der er ingen anmeldelser, der afventer godkendelse.", + "Non ci sono richieste di prestito in attesa di approvazione.": "Der er ingen låneanmodninger, der afventer godkendelse.", + "Non configurato": "Ikke konfigureret", + "Non disponibile": "Ikke tilgængelig", + "Non disponibile nella data selezionata": "Ikke tilgængelig på den valgte dato", + "Non disponibile ora": "Ikke tilgængelig nu", + "Non eliminabile": "Kan ikke slettes", + "Non hai ancora creato nessun evento. Inizia creando il tuo primo evento.": "Du har ikke oprettet nogen begivenheder endnu. Start med at oprette din første begivenhed.", + "Non hai ancora lasciato recensioni": "Du har ikke skrevet nogen anmeldelser endnu", + "Non hai libri in prestito al momento": "Du har ingen lånte bøger i øjeblikket", + "Non hai prenotazioni attive al momento": "Du har ingen aktive reservationer i øjeblikket", + "Non hai prestiti in corso al momento.": "Du har ingen løbende lån i øjeblikket.", + "Non hai prestiti passati": "Du har ingen tidligere lån", + "Non hai un account?": "Har du ikke en konto?", + "Non in prestito": "Ikke udlånt", + "Non includere tag": "Inkluder ikke tags", + "Non includere tag ": "Inkluder ikke -tags", + "Non installato": "Ikke installeret", + "Non letto": "Ulæst", + "Non modifica funzionalità esistenti": "Ændrer ikke eksisterende funktionalitet", + "Non puoi eliminare l'installer finché non completi l'installazione delle dipendenze PHP.": "Du kan ikke slette installationsprogrammet, før du har fuldført installationen af PHP-afhængigheder.", + "Non puoi recensire questo libro (devi averlo preso in prestito e non averlo già recensito)": "Du kan ikke anmelde denne bog (du skal have lånt den og må ikke have anmeldt den allerede)", + "Non rinnovabile: prestito in ritardo": "Kan ikke fornyes: forsinket lån", + "Non scrivibile": "Ikke skrivbar", + "Non selezionato": "Ikke valgt", + "Non serve selezionare alcuno scope (il repository è pubblico)": "Det er ikke nødvendigt at vælge et scope (arkivet er offentligt)", + "Non sono stati trovati libri di questo autore.": "Der blev ikke fundet nogen bøger af denne forfatter.", + "Non sono stati trovati libri di questo editore.": "Der blev ikke fundet nogen bøger fra dette forlag.", + "Non sono stati trovati libri di questo genere.": "Der blev ikke fundet nogen bøger i denne genre.", + "Non specificata": "Ikke angivet", + "Non specificato": "Ikke angivet", + "Non trovati": "Ikke fundet", + "Non trovato": "Ikke fundet", + "Non usare spazi nelle route": "Brug ikke mellemrum i ruter", + "Non è possibile creare la directory: %s": "Kan ikke oprette biblioteket: %s", + "Non è stato possibile eliminare l'utente. Controlla la console.": "Det var ikke muligt at slette brugeren. Tjek konsollen.", + "Non è stato trovato alcun aggiornamento": "Der blev ikke fundet nogen opdatering", + "Nota Importante": "Vigtig bemærkning", + "Nota di versione": "Versionsnote", + "Nota:": "Bemærk:", + "Nota: Data acquisizione è nel campo nativo 'Data Acquisizione' sopra": "Bemærk: Erhvervelsesdato er i det oprindelige felt 'Erhvervelsesdato' ovenfor", + "Nota: Il prezzo di acquisto è nel campo 'Prezzo' della sezione 'Dati di Acquisizione'": "Bemærk: Købsprisen er i feltet 'Pris' under afsnittet 'Erhvervelsesdata'", + "Nota: Impostare come predefinita disattiverà lo status di predefinita per tutte le altre lingue.": "Bemærk: Angivelse som standard vil deaktivere standardstatus for alle andre sprog.", + "Nota: Peso e dimensioni sono nei campi nativi dell'app (sezione Dati Fisici)": "Bemærk: Vægt og dimensioner er i appens oprindelige felter (afsnit Fysiske data)", + "Nota: in produzione limita questa funzione agli amministratori.": "Bemærk: I produktion bør denne funktion begrænses til administratorer.", + "Note": "Noter", + "Note (opzionali)": "Noter (valgfrit)", + "Note Importanti": "Vigtige bemærkninger", + "Note Utente": "Brugernoter", + "Note Varie": "Diverse noter", + "Note aggiuntive o osservazioni particolari...": "Yderligere noter eller særlige bemærkninger...", + "Note importanti:": "Vigtige bemærkninger:", + "Note interne": "Interne noter", + "Note private...": "Private noter...", + "Note sul prestito": "Lånenoter", + "Note sulla restituzione": "Afleveringsnoter", + "Note tecniche": "Tekniske noter", + "Notifica agli amministratori quando viene inoltrata una nuova richiesta di prestito.": "Giv administratorer besked, når der indsendes en ny låneanmodning.", + "Notifica agli utenti quando il prestito è scaduto e deve essere restituito.": "Giv brugere besked, når lånet er udløbet og skal afleveres.", + "Notifica copia non disponibile creata": "Notifikation om utilgængeligt eksemplar oprettet", + "Notifica prenotazione disponibile inviata": "Notifikation om tilgængelig reservation sendt", + "Notifica prestito fallita": "Lånenotifikation mislykkedes", + "Notifica richiesta prestito fallita": "Notifikation om låneanmodning mislykkedes", + "Notifiche": "Notifikationer", + "Notifiche Automatiche": "Automatiske notifikationer", + "Notifiche Prestiti": "Lånenotifikationer", + "Notifiche disponibilità libri in wishlist": "Notifikationer om tilgængelighed af bøger på ønskelisten", + "Notifiche prestiti scaduti": "Notifikationer om overførte lån", + "Novità nelle versioni successive": "Nyheder i efterfølgende versioner", + "Numero Inventario": "Inventarnummer", + "Numero Libri": "Antal bøger", + "Numero Pagine": "Sidetal", + "Numero Serie": "Serienummer", + "Numero colonne non valido": "Ugyldigt antal kolonner", + "Numero di Pagine": "Antal sider", + "Numero di copie non valido.": "Ugyldigt antal eksemplarer.", + "Numero di libri": "Antal bøger", + "Numero inventario": "Inventarnummer", + "Numero massimo di righe superato (%d)": "Maksimalt antal rækker overskredet (%d)", + "Numero massimo di righe superato (%d). Dividi il file in parti più piccole.": "Maksimalt antal rækker overskredet (%d). Del filen op i mindre dele.", + "Numero o descrizione dell'edizione": "Udgave nummer eller beskrivelse", + "Numero prenotazioni attive": "Antal aktive reservationer", + "Numero serie": "Serienummer", + "Numero tessera": "Kortnummer", + "Numero volume": "Bindnummer", + "Nuova Collana": "Ny serie", + "Nuova Collocazione": "Ny placering", + "Nuova Opera": "Nyt værk", + "Nuova Password": "Ny adgangskode", + "Nuova attività": "Ny aktivitet", + "Nuova copia digitalizzata": "Nyt digitaliseret eksemplar", + "Nuova password": "Ny adgangskode", + "Nuova prenotazione": "Ny reservation", + "Nuova recensione (Admin)": "Ny anmeldelse (Admin)", + "Nuova recensione da approvare": "Ny anmeldelse til godkendelse", + "Nuova registrazione utente": "Ny brugerregistrering", + "Nuova ricerca": "Ny søgning", + "Nuova richiesta di prestito": "Ny låneanmodning", + "Nuovo": "Ny", + "Nuovo Autore": "Ny forfatter", + "Nuovo Editore": "Nyt forlag", + "Nuovo Evento": "Ny begivenhed", + "Nuovo Genere": "Ny genre", + "Nuovo Libro": "Ny bog", + "Nuovo Prestito": "Nyt lån", + "Nuovo Utente": "Ny bruger", + "Nuovo aggiornamento disponibile!": "Ny opdatering til rådighed!", + "Nuovo authority record": "Ny autoritetspost", + "Nuovo editore:": "Nyt forlag:", + "Nuovo libro": "Ny bog", + "Nuovo luogo": "Nyt sted", + "Nuovo messaggio di contatto": "Ny kontaktbesked", + "Nuovo nome (opzionale)": "Nyt navn (valgfrit)", + "Nuovo prestito creato": "Nyt lån oprettet", + "Nuovo record": "Ny post", + "Nuovo record archivistico": "Ny arkivpost", + "Nuovo utente": "Ny bruger", + "OAI-PMH": "OAI-PMH", + "OCLC": "OCLC", + "OCLC number": "OCLC-nummer", + "OFF": "Fra", + "OK": "OK", + "ON": "Til", + "Obbligatorio": "Obligatorisk", + "Obbligatorio per utenti non amministratori.": "Obligatorisk for ikke-administratorbrugere.", + "Obsoleto": "Foreldet", + "Occupato": "Optaget", + "Occupato (in ritardo)": "Optaget (for sen)", + "Occupato (prestito attivo)": "Optaget (aktivt lån)", + "Offline": "Offline", + "Oggetto": "Emne", + "Oggetto dell'email": "E-mailens emne", + "Oggetto tridimensionale / realia (ho)": "Tredimensionelt objekt / realia (ho)", + "Oggi": "I dag", + "Ogni 15 minuti nei giorni lavorativi (8:00-18:00)": "Hvert 15. minut på hverdage (8:00-18:00)", + "Ogni errore include: numero riga, titolo libro, tipo errore e messaggio dettagliato": "Hver fejl inkluderer: rækkenummer, bogtitel, fejltype og detaljeret besked", + "Ogni route deve iniziare con": "Hver rute skal starte med", + "Online": "Online", + "Open Graph (Facebook)": "Open Graph (Facebook)", + "Open Graph (Facebook, LinkedIn)": "Open Graph (Facebook, LinkedIn)", + "Opera": "Værk", + "Opera \"%s\" creata con %d volumi": "Værket \"%s\" oprettet med %d bind", + "Opera non trovata": "Værk ikke fundet", + "Operation completed": "Handlingen fuldført", + "Operation failed": "Handlingen mislykkedes", + "Operatore": "Operatør", + "Operazione annullata": "Handling annulleret", + "Operazione completata": "Handling fuldført", + "Operazione fallita": "Handling mislykkedes", + "Operazione non consentita": "Handling ikke tilladt", + "Operazione non riuscita": "Handling mislykkedes", + "Operazioni": "Handlinger", + "Opere": "Værker", + "Opere (FRBR/LRM)": "Værker (FRBR/LRM)", + "Oppure accedere a /installer/?force=1 per forzare una nuova procedura": "Eller gå til /installer/?force=1 for at gennemtvinge en ny procedure", + "Oppure copia e incolla questo link nel tuo browser:": "Eller kopier og indsæt dette link i din browser:", + "Oppure naviga per categorie": "Eller gennemse efter kategorier", + "Oppure naviga per categorie:": "Eller gennemse efter kategorier:", + "Oppure usa il terminale SSH del tuo hosting (cPanel, Plesk, etc.)": "Eller brug din hostings SSH-terminal (cPanel, Plesk osv.)", + "Ops, qualcosa è andato storto": "Ups, noget gik galt", + "Opzionale": "Valgfrit", + "Opzionale per amministratori": "Valgfrit for administratorer", + "Opzione 1:": "Mulighed 1:", + "Opzione 2:": "Mulighed 2:", + "Opzione 3:": "Mulighed 3:", + "Ora Evento": "Begivenhedstidspunkt", + "Ora puoi accedere con la tua nuova password.": "Du kan nu logge ind med din nye adgangskode.", + "Ora puoi ricaricare questa pagina - il warning sparirà se tutto è OK.": "Du kan nu genindlæse denne side – advarslen forsvinder, hvis alt er i orden.", + "Ordina Sezioni Homepage": "Sorter hjemmesidens sektioner", + "Ordina per": "Sorter efter", + "Ordinamento": "Sortering", + "Ordinamento libri": "Bogsortering", + "Ordine ciclo": "Cyklusrækkefølge", + "Ordine ciclo %d": "Cyklusrækkefølge %d", + "Ordine salvato con successo!": "Rækkefølge gemt med succes!", + "Ordine:": "Rækkefølge:", + "Organizza e gestisci i generi letterari della biblioteca": "Organiser og administrer bibliotekets litterære genrer", + "Organizza scaffali, mensole e posizioni per la biblioteca fisica": "Organiser reoler, hylder og placeringer for det fysiske bibliotek", + "Originale a tutta larghezza (grande)": "Original i fuld bredde (stor)", + "Ospite": "Gæst", + "Ottieni le chiavi da Google reCAPTCHA": "Få nøgler fra Google reCAPTCHA", + "Ottimizza l'evento per i motori di ricerca e i social media": "Optimer begivenheden til søgemaskiner og sociale medier", + "Ottimizzato": "Optimeret", + "Ottimizzazione": "Optimering", + "Ottimizzazione Indici Database": "Optimering af databasedekser", + "Ottimizzazione SEO (Meta Tags)": "SEO-optimering (metatags)", + "Ottimizzazione SEO e Social Media": "SEO- og sociale medier-optimering", + "Ottimo": "Fremragende", + "Output atteso: cartella vendor/ con sottocartelle (slim, monolog, etc.)": "Forventet output: vendor/-mappe med undermapper (slim, monolog osv.)", + "PDF": "PDF", + "PDF generato!": "PDF genereret!", + "PDF o ePub, max 100 MB": "PDF eller ePub, maks. 100 MB", + "PDF prestito non generato": "Låns-PDF ikke genereret", + "PDF, ePub, audio (mp3/m4a/ogg/wav), video (mp4/webm), immagini (tiff/jpg/png). Max 200 MB.": "PDF, ePub, lyd (mp3/m4a/ogg/wav), video (mp4/webm), billeder (tiff/jpg/png). Maks. 200 MB.", + "PHP mail()": "PHP mail()", + "PHP mail() - Predefinito": "PHP mail() - Standard", + "PHPMailer": "PHPMailer", + "PNG, SVG, JPG o WebP (max 2MB)": "PNG, SVG, JPG eller WebP (maks. 2 MB)", + "Pacchetto caricato con successo": "Pakke uploadet med succes", + "Pacchetto caricato non trovato": "Uploadet pakke ikke fundet", + "Pacchetto di aggiornamento non valido: manca %s": "Ugyldig opdateringspakke: %s mangler", + "Paese": "Land", + "Page navigation": "Sidenavigation", + "Pagina": "Side", + "Pagina %d di %d": "Side %d af %d", + "Pagina Cookie": "Cookiedataside", + "Pagina Cookie Policy": "Side med cookiepolitik", + "Pagina Non Trovata": "Side ikke fundet", + "Pagina \\": "Side \\", + "Pagina aggiornata con successo.": "Side opdateret med succes.", + "Pagina attiva (visibile sul sito)": "Aktiv side (synlig på websitet)", + "Pagina non trovata.": "Side ikke fundet.", + "Pagina precedente": "Forrige side", + "Pagina successiva": "Næste side", + "Paginazione eventi": "Sideningdeling af begivenheder", + "Pagine": "Sider", + "Pagine Principali": "Hovedsider", + "Pannello": "Panel", + "Panoramica completa di prestiti, ritiri e prenotazioni": "Komplet oversigt over lån, afhentninger og reservationer", + "Panoramica generale": "Generel oversigt", + "Panoramica generale di Pinakes": "Generel oversigt over Pinakes", + "Paragrafo": "Afsnit", + "Paragraph": "Afsnit", + "Parametri di Ricerca": "Søgeparametre", + "Parametri non validi": "Ugyldige parametre", + "Parametri non validi per l'unione": "Ugyldige parametre til fletning", + "Parametro ISBN mancante.": "Manglende ISBN-parameter.", + "Parametro category_id obbligatorio.": "Parametret category_id er obligatorisk.", + "Parametro code obbligatorio.": "Parametret code er obligatorisk.", + "Parametro cover_url mancante.": "Manglende cover_url-parameter.", + "Parametro division_id obbligatorio.": "Parametret division_id er obligatorisk.", + "Parametro q mancante.": "Manglende q-parameter.", + "Parola chiave": "Nøgleord", + "Parole Chiave": "Nøgleord", + "Parole Chiave SEO": "SEO-nøgleord", + "Parole chiave": "Nøgleord", + "Parole chiave SEO": "SEO-nøgleord", + "Parole chiave per i motori di ricerca (impatto SEO limitato). Separate da virgola.": "Nøgleord til søgemaskiner (begrænset SEO-indflydelse). Adskilt af komma.", + "Partner": "Partner", + "Partner Configurati": "Konfigurerede partnere", + "Partner aggiunto con successo.": "Partner tilføjet med succes.", + "Partner eliminato con successo.": "Partner slettet med succes.", + "Passo": "Trin", + "Password": "Adgangskode", + "Password aggiornata con successo.": "Adgangskode opdateret med succes.", + "Password attuale": "Nuværende adgangskode", + "Password dimenticata": "Glemt adgangskode", + "Password dimenticata?": "Glemt adgangskode?", + "Password iniziale": "Start-adgangskode", + "Password resettata con successo!": "Adgangskode nulstillet med succes!", + "Password troppo lunga (massimo 128 caratteri)": "Adgangskode for lang (maksimalt 128 tegn)", + "Path pacchetto non specificato": "Pakkenstien ikke angivet", + "Path pacchetto non valido": "Ugyldig pakkesti", + "Pattern URL": "URL-mønster", + "Payload JSON non valido": "Ugyldig JSON-payload", + "Pellicola cinematografica (lf)": "Spillefilm (lf)", + "Pendente": "Afventende", + "Pending": "Afventende", + "Per aggiornare automaticamente la sitemap ogni giorno:": "For at opdatere sitemap automatisk hver dag:", + "Per assistenza, contatta l'amministrazione della biblioteca.": "Kontakt bibliotekets administration for at få hjælp.", + "Per inserire il codice JavaScript Analytics (Google Analytics, Matomo, ecc.), vai su {{variabile}} per inserire dati dinamici.": "Tilpas indholdet af automatiske e-mails med TinyMCE-editoren. Brug pladsholderne {{variable}} til at indsætte dynamiske data.", + "Personalizza il contenuto delle mail automatiche con l'editor TinyMCE. Usa i segnaposto sospeso e richiede approvazione. Scegli un'opzione:": "Denne bruger er i status suspenderet og kræver godkendelse. Vælg en mulighed:", + "REICAT: distingue il record catalogato originalmente (95) da quello derivato (51).": "REICAT: skelner den oprindeligt katalogiserede post (95) fra den afledte (51).", + "Racchiudi il termine di ricerca tra virgolette CQL (es. BnF)": "Sæt søgetiden ind i CQL-anførselstegn (f.eks. BnF)", + "Radice": "Rod", + "Rallenta l'importazione": "Sænker importens hastighed", + "Rate limit exceeded. Please try again later.": "Forespørgselsgrænse overskredet. Prøv igen senere.", + "Recati in biblioteca durante gli orari di apertura per ritirare il libro.": "Mød op på biblioteket i åbningstiden for at afhente bogen.", + "Recensione": "Anmeldelse", + "Recensione (opzionale)": "Anmeldelse (valgfrit)", + "Recensione approvata": "Anmeldelse godkendt", + "Recensione del": "Anmeldelse af", + "Recensione e Valutazione": "Anmeldelse og bedømmelse", + "Recensione eliminata": "Anmeldelse slettet", + "Recensione inviata con successo!": "Anmeldelse sendt med succes!", + "Recensione inviata con successo! Sarà pubblicata dopo l'approvazione di un amministratore.": "Anmeldelse sendt med succes! Den vil blive offentliggjort efter godkendelse af en administrator.", + "Recensione inviata!": "Anmeldelse sendt!", + "Recensione per \"%s\" da %s - %s": "Anmeldelse af \"%s\" af %s - %s", + "Recensione rifiutata": "Anmeldelse afvist", + "Recensioni": "Anmeldelser", + "Recensioni Approvate": "Godkendte anmeldelser", + "Recensioni Rifiutate": "Afviste anmeldelser", + "Recensioni utenti": "Brugeranmeldelser", + "Recente": "Seneste", + "Record analizzati": "Analyserede poster", + "Record di autorità (persone, enti, famiglie) secondo lo standard ISAAR(CPF).": "Autoritetsposter (personer, institutioner, familier) i henhold til ISAAR(CPF)-standarden.", + "Recupera Password": "Gendan adgangskode", + "Recupera la tua password": "Gendan din adgangskode", + "Reference": "Signatur", + "Reference Code": "Signaturkode", + "Referente": "Kontaktperson", + "Regione": "Region", + "Registra Restituzione": "Registrer aflevering", + "Registra prestito": "Registrer lån", + "Registra restituzione": "Registrer aflevering", + "Registra restituzione prestito": "Registrer lånets aflevering", + "Registra una prenotazione per permettere ad un utente di riservare un libro specifico": "Registrer en reservation for at lade en bruger reservere en specifik bog", + "Registrati": "Registrer dig", + "Registrati Ora": "Registrer dig nu", + "Registrato da": "Registreret af", + "Registrato il": "Registreret den", + "Registrazione": "Registrering", + "Registrazione Completata": "Registrering fuldført", + "Registrazione audio (lm)": "Lydoptagelse (lm)", + "Registrazione completata": "Registrering fuldført", + "Registrazione completata! Effettua l'accesso": "Registrering fuldført! Log venligst ind", + "Registrazione nuovo utente": "Ny brugerregistrering", + "Registrazione ricevuta": "Registrering modtaget", + "Registro delle migrazioni database applicate": "Register over anvendte databasemigrationer", + "Reimposta password": "Nulstil adgangskode", + "Reindirizza automaticamente tutte le richieste HTTP a HTTPS": "Omdiriger automatisk alle HTTP-anmodninger til HTTPS", + "Reindirizzamento verso dominio non autorizzato bloccato.": "Omdirigering til uautoriseret domæne blokeret.", + "Reinstalla da Capo": "Geninstaller helt forfra", + "Relazione ciclica: questo libro è già opera padre del libro selezionato": "Cyklisk relation: denne bog er allerede overordnet værk for den valgte bog", + "Relazioni RiC-CM": "RiC-CM-relationer", + "Remoto": "Fjern", + "Rende disponibile /llms.txt e lo aggiunge a robots.txt": "Gør /llms.txt tilgængelig og tilføjer den til robots.txt", + "Report": "Rapport", + "Report Integrità Dati": "Rapport om dataintegritet", + "Report e analisi": "Rapporter og analyser", + "Requisiti": "Krav", + "Requisiti del plugin:": "Plugin-krav:", + "Requisiti di Sistema": "Systemkrav", + "Requisiti di sistema non soddisfatti": "Systemkrav ikke opfyldt", + "Requisiti:": "Krav:", + "Requisito '%s' non soddisfatto": "Kravet '%s' er ikke opfyldt", + "Reset": "Nulstil", + "Reset Filtri": "Nulstil filtre", + "Reset anni": "Nulstil år", + "Resetta Password": "Nulstil adgangskode", + "Restituisci": "Aflever tilbage", + "Restituito": "Afleveret tilbage", + "Restituito — copia in manutenzione": "Afleveret tilbage — eksemplar under vedligeholdelse", + "Restituito — copia in restauro": "Afleveret tilbage — eksemplar under restaurering", + "Restituito in ritardo": "Afleveret for sent", + "Restituito regolarmente": "Afleveret rettidigt", + "Restituzione": "Aflevering", + "Restituzione prestito": "Aflevering af lån", + "Restituzione prestito #%s": "Aflevering af lån #%s", + "Retention: 90 giorni": "Opbevaring: 90 dage", + "Retrocompatibile": "Bagudkompatibel", + "Review, Rating, Comments": "Anmeldelse, bedømmelse, kommentarer", + "Revocate %d sessioni": "%d sessioner tilbagekaldt", + "Riassegnazione copia fallita": "Gen-tildeling af eksemplar mislykkedes", + "Riassegnazione prenotazione nuova copia fallita": "Gen-tildeling af reservation til nyt eksemplar mislykkedes", + "Ricalcola Disponibilità": "Genberegn tilgængelighed", + "Ricarica Dewey (seed)": "Genindlæs Dewey (seed)", + "Ricarica Pagina": "Genindlæs side", + "Ricerca": "Søgning", + "Ricerca (titolo, reference code, descrizione)": "Søgning (titel, referencekode, beskrivelse)", + "Ricerca Libro": "Søg efter bog", + "Ricerca Utente": "Søg efter bruger", + "Ricerca cross-entity su archivi, authority records e autori di libreria riconciliati.": "Tvær-entitetssøgning på tværs af arkiver, autoritetsposter og afstemte biblioteksforfattere.", + "Ricerca in corso...": "Søger...", + "Ricerca rapida": "Hurtigsøgning", + "Ricerca su SBN…": "Søg på SBN…", + "Ricerca unificata": "Samlet søgning", + "Ricerche recenti": "Seneste søgninger", + "Riceverai un link di reset via email. Il link sarà valido per 2 ore.": "Du modtager et nulstillingslink via e-mail. Linket er gyldigt i 2 timer.", + "Riceverai un link di reset via email. Il link sarà valido per 24 ore.": "Du modtager et nulstillingslink via e-mail. Linket er gyldigt i 24 timer.", + "Riceverai una conferma via email appena la richiesta sarà approvata.": "Du modtager en bekræftelse via e-mail, så snart anmodningen er godkendt.", + "Ricevuta Prestito": "Lånekvittering", + "Ricevuta di Prestito": "Lånekvittering", + "Ricevuta di prestito bibliotecario": "Kvittering for bibliotekslån", + "Ricevuto": "Modtaget", + "Richiede App:": "Kræver app:", + "Richiede PHP:": "Kræver PHP:", + "Richiedi Prestito": "Anmod om lån", + "Richiedi approvazione admin dopo la conferma email": "Kræv admin-godkendelse efter e-mailbekræftelse", + "Richiedono attenzione immediata": "Kræver øjeblikkelig opmærksomhed", + "Richiesta Inviata!": "Anmodning sendt!", + "Richiesta Pendente": "Afventende anmodning", + "Richiesta Prestito": "Låneanmodning", + "Richiesta del %s": "Anmodning af %s", + "Richiesta di prestito dal %1$s al %2$s": "Låneanmodning fra %1$s til %2$s", + "Richiesta di prestito dal %s per 1 mese": "Låneanmodning fra %s i 1 måned", + "Richiesta di prestito inviata con successo": "Låneanmodning sendt med succes", + "Richiesta di prestito per \"%s\" da %s dal %s al %s": "Låneanmodning for \"%s\" af %s fra den %s til den %s", + "Richiesta di prestito per \\": "Låneanmodning for \\", + "Richiesta fallita:": "Anmodning mislykkedes:", + "Richiesta inviata con successo!": "Anmodning sendt med succes!", + "Richiesta inviata!": "Anmodning sendt!", + "Richiesta manuale": "Manuel anmodning", + "Richiesta prestito": "Låneanmodning", + "Richiesta rifiutata": "Anmodning afvist", + "Richiesta utente": "Brugeranmodning", + "Richieste Manuali": "Manuelle anmodninger", + "Richieste Pendenti": "Afventende anmodninger", + "Richieste di Prestito": "Låneanmodninger", + "Richieste di Prestito in Attesa": "Afventende låneanmodninger", + "Richieste in Attesa": "Afventende anmodninger", + "Richieste in Sospeso": "Afventende anmodninger", + "Richieste in sospeso": "Afventende anmodninger", + "Richieste pendenti": "Afventende anmodninger", + "Richiesto": "Påkrævet", + "Richiesto il": "Anmodet den", + "Richiesto il %s": "Anmodet den %s", + "Richiesto:": "Påkrævet:", + "Ricordami": "Husk mig", + "Ricordi la password?": "Kan du huske din adgangskode?", + "Riepilogo Installazione": "Installationsresumé", + "Riepilogo wishlist": "Resumé af ønskeliste", + "Riferimento normativo": "Lovmæssig reference", + "Riferimento normativo (mandato giuridico)": "Lovmæssig reference (juridisk mandat)", + "Rifiuta": "Afvis", + "Rifiuta Prestito?": "Afvis lån?", + "Rifiuta non essenziali": "Afvis ikke-essentielle", + "Rifiuta prestito": "Afvis lån", + "Rifiuta recensione": "Afvis anmeldelse", + "Rifiutata": "Afvist", + "Rifiutata il": "Afvist den", + "Rifiutato": "Afvist", + "Rifiuterai questa richiesta di prestito?": "Vil du afvise denne låneanmodning?", + "Riga %d (%s): %s": "Række %d (%s): %s", + "Riga %d: numero di colonne non corrispondente": "Række %d: antallet af kolonner matcher ikke", + "Rigenera Sitemap": "Gengenerer sitemap", + "Rigenera adesso": "Gengenerer nu", + "Rimosso": "Fjernet", + "Rimuove la collana da tutti i libri. I libri non verranno eliminati.": "Fjerner serien fra alle bøger. Bøgerne slettes ikke.", + "Rimuovere dalla wishlist?": "Vil du fjerne fra ønskelisten?", + "Rimuovere i libri associati prima di eliminare l'autore": "Fjern tilknyttede bøger, før forfatteren slettes", + "Rimuovere i libri dell'editore prima di eliminarlo": "Fjern forlagets bøger, før det slettes", + "Rimuovere il documento?": "Vil du fjerne dokumentet?", + "Rimuovere il token?": "Vil du fjerne tokent?", + "Rimuovere la copertina?": "Vil du fjerne omslaget?", + "Rimuovere questo collegamento?": "Vil du fjerne dette link?", + "Rimuovere questo file?": "Vil du fjerne denne fil?", + "Rimuovere questo libro dalla serie?": "Vil du fjerne denne bog fra serien?", + "Rimuovi": "Fjern", + "Rimuovi Token": "Fjern token", + "Rimuovi classificazione Dewey": "Fjern Dewey-klassifikation", + "Rimuovi copertina": "Fjern omslag", + "Rimuovi dai Preferiti": "Fjern fra foretrukne", + "Rimuovi dalla serie": "Fjern fra serie", + "Rimuovi dalla wishlist": "Fjern fra ønskeliste", + "Rimuovi documento": "Fjern dokument", + "Rimuovi editore": "Fjern forlag", + "Rimuovi filtro": "Fjern filter", + "Rimuovi immagine": "Fjern billede", + "Rimuovi immagine attuale": "Fjern nuværende billede", + "Rimuovi immagine di sfondo attuale": "Fjern nuværende baggrundsbillede", + "Rimuovi logo attuale": "Fjern nuværende logo", + "Rimuovi token GitHub": "Fjern GitHub-token", + "Rimuovi tutti i filtri": "Fjern alle filtre", + "Rimuovi volume?": "Fjern bind?", + "Rinnova": "Forny", + "Rinnova prestito (+14 giorni)": "Forny lån (+14 dage)", + "Rinnova prestito?": "Forny lån?", + "Rinnovare il prestito? La scadenza verrà estesa di 14 giorni.": "Vil du fornye lånet? Udløbsdatoen udvides med 14 dage.", + "Rinnovi": "Fornyelser", + "Rinnovi Effettuati:": "Gennemførte fornyelser:", + "Rinnovi effettuati": "Gennemførte fornyelser", + "Rinnovo prestito fallito": "Lånefornyelse mislykkedes", + "Rinomina": "Omdøb", + "Rinomina collana": "Omdøb serie", + "Riordina trascinando gli elementi": "Omorganiser ved at trække elementerne", + "Ripara automaticamente gli errori rilevati": "Reparer registrerede fejl automatisk", + "Ripeti la password": "Gentag adgangskode", + "Ripristina": "Gendan", + "Ripristina Default": "Gendan standard", + "Ripristinare i colori?": "Vil du gendanne farverne?", + "Ripristinare questo backup?": "Vil du gendanne denne backup?", + "Ripristinato": "Gendannet", + "Ripristino": "Gendannelse", + "Riprova": "Prøv igen", + "Riservato": "Reserveret", + "Risolvi i problemi indicati sopra e ricarica la pagina.": "Løs problemerne angivet ovenfor, og genindlæs siden.", + "Risorsa": "Ressource", + "Risorsa elettronica / nato-digitale (le)": "Elektronisk ressource / born-digital (le)", + "Risorse esterne": "Eksterne ressourcer", + "Rispettiamo il tuo diritto alla privacy. Puoi scegliere di non consentire alcuni tipi di cookie. Le tue preferenze si applicheranno all'intero sito web.": "Vi respekterer din ret til privatliv. Du kan vælge at fravælge visse typer af cookies. Dine præferencer vil gælde for hele webstedet.", + "Rispondi": "Svar", + "Risposta": "Svar", + "Risposta JSON": "JSON-svar", + "Risposta VIAF non valida.": "Ugyldigt VIAF-svar.", + "Risposta del server non valida": "Ugyldigt serversvar", + "Risposta non valida dal server (timeout o errore)": "Ugyldigt svar fra server (timeout eller fejl)", + "Risposta non valida dal servizio ISBN.": "Ugyldigt svar fra ISBN-tjenesten.", + "Risposta non valida. Controlla la console per dettagli.": "Ugyldigt svar. Tjek konsollen for detaljer.", + "Risultati": "Resultater", + "Risultati Ultimo Batch": "Resultater af seneste batch", + "Risultati per '%s' - Catalogo Biblioteca": "Resultater for '%s' – Bibliotekskatalog", + "Ritiri da Confermare": "Afhentninger der skal bekræftes", + "Ritiri scaduti elaborati": "Udløbne afhentninger behandlet", + "Ritiro annullato": "Afhentning annulleret", + "Ritiro annullato con successo": "Afhentning annulleret med succes", + "Ritiro confermato con successo": "Afhentning bekræftet med succes", + "Ritiro confermato!": "Afhentning bekræftet!", + "Ritiro confermato! Il prestito è ora in corso.": "Afhentning bekræftet! Lånet er nu aktivt.", + "Ritiro già confermato o modificato": "Afhentning allerede bekræftet eller ændret", + "Ritiro non effettuato": "Afhentning ikke gennemført", + "Ritiro non effettuato entro il termine previsto": "Afhentning ikke gennemført inden for den planlagte frist", + "Ritiro non effettuato entro la scadenza": "Afhentning ikke gennemført inden udløbsdatoen", + "Ritiro scaduto": "Afhentning udløbet", + "Ritiro scaduto il": "Afhentning udløbet den", + "Rossi": "Jensen", + "Route Comuni": "Almindelige ruter", + "Route Tradotte": "Oversatte ruter", + "Route aggiornate con successo": "Ruter opdateret med succes", + "Ruolo": "Rolle", + "Ruolo:": "Rolle:", + "SBN Italia - Integrato": "SBN Italien - Integreret", + "SDK": "SDK", + "SEO - Meta Description": "SEO - Metabeskrivelse", + "SEO Base": "Basis-SEO", + "SEO Base (Meta Tags)": "Basis-SEO (metatags)", + "SMTP (custom)": "SMTP (brugerdefineret)", + "SMTP Host": "SMTP-vært", + "SMTP Password": "SMTP-adgangskode", + "SMTP Personalizzato": "Brugerdefineret SMTP", + "SMTP Port": "SMTP-port", + "SMTP Username": "SMTP-brugernavn", + "SMTP personalizzato": "Brugerdefineret SMTP", + "SSL": "SSL", + "Saltato": "Springet over", + "Salva": "Gem", + "Salva API Key": "Gem API-nøgle", + "Salva Autore": "Gem forfatter", + "Salva Configurazione": "Gem konfiguration", + "Salva Contatti": "Gem kontakter", + "Salva Editore": "Gem forlag", + "Salva Identità": "Gem identitet", + "Salva Impostazioni": "Gem indstillinger", + "Salva Impostazioni Avanzate": "Gem avancerede indstillinger", + "Salva Libro": "Gem bog", + "Salva Lingua": "Gem sprog", + "Salva Modifiche": "Gem ændringer", + "Salva Privacy Policy": "Gem privatlivspolitik", + "Salva Route": "Gem ruter", + "Salva Template": "Gem skabelon", + "Salva Testi Cookie Banner": "Gem tekster til cookie-banner", + "Salva descrizione": "Gem beskrivelse", + "Salva filtri correnti": "Gem aktuelle filtre", + "Salva identità": "Gem identitet", + "Salva impostazioni condivisione": "Gem deleindstillinger", + "Salva impostazioni email": "Gem e-mailindstillinger", + "Salva impostazioni etichette": "Gem indstillinger for etiketter", + "Salva impostazioni eventi": "Gem indstillinger for arrangementer", + "Salva in UTF-8": "Gem i UTF-8", + "Salva la API key in un luogo sicuro. Non sarà possibile visualizzarla nuovamente dopo la creazione.": "Gem API-nøglen et sikkert sted. Den kan ikke vises igen efter oprettelsen.", + "Salva modifiche": "Gem ændringer", + "Salva modifiche Homepage": "Gem ændringer for startside", + "Salva su Pocket": "Gem på Pocket", + "Salva template": "Gem skabelon", + "Salva testi banner": "Gem bannertekster", + "Salva utente": "Gem bruger", + "Salvataggio in corso...": "Gemmer...", + "Salvataggio...": "Gemmer...", + "Salvato": "Gemt", + "Salvato con successo.": "Gemt med succes.", + "Sarà pubblicata dopo l'approvazione di un amministratore.": "Offentliggøres efter godkendelse af en administrator.", + "Sarà utilizzata per accedere al sistema": "Vil blive brugt til at logge ind på systemet", + "Sarà visualizzato nell'header e in tutto il sito": "Vises i headeren og på hele websitet", + "Scade": "Udløber", + "Scade tra %d giorni": "Udløber om %d dage", + "Scadenza": "Udløbsdato", + "Scadenza Mancante": "Manglende udløbsdato", + "Scadenza prenotazione": "Udløb af reservation", + "Scadenza ritiro": "Afhentningsfrist", + "Scadenza ritiro:": "Afhentningsfrist:", + "Scadenza tessera": "Kortudløb", + "Scadenza:": "Udløbsdato:", + "Scadenza: %s": "Udløb: %s", + "Scaduta": "Udløbet", + "Scaduta il": "Udløbet den", + "Scaduto": "Udløbet", + "Scaduto il:": "Udløbet den:", + "Scaduto:": "Udløbet:", + "Scaffale": "Reol", + "Scaffale *": "Reol *", + "Scaffale Narrativa": "Skønlitteraturreol", + "Scaffale creato": "Reol oprettet", + "Scaffale eliminato": "Reol slettet", + "Scaffale obbligatorio": "Reol påkrævet", + "Scaffali": "Reoler", + "Scaffali e mensole": "Reoler og hylder", + "Scarica": "Hent", + "Scarica Audiobook": "Hent lydbog", + "Scarica Errori": "Hent fejl", + "Scarica JSON": "Hent JSON", + "Scarica PDF": "Hent PDF", + "Scarica Ricevuta PDF": "Hent PDF-kvittering", + "Scarica Script SQL": "Hent SQL-script", + "Scarica automaticamente la ricevuta PDF dopo la creazione del prestito.": "Hent automatisk PDF-kvitteringen efter oprettelse af lånet.", + "Scarica copertine": "Hent omslag", + "Scarica documento": "Hent dokument", + "Scarica eBook": "Hent e-bog", + "Scarica esempio_import_libri.csv": "Hent beispiel_import_buecher.csv", + "Scarica esempio_librarything.tsv": "Hent beispiel_librarything.tsv", + "Scarica il CSV di esempio con 3 libri già compilati per capire il formato corretto e iniziare subito.": "Hent eksempel-CSV-filen med 3 udfyldte bøger for at forstå det korrekte format og komme i gang med det samme.", + "Scarica il file .tsv e caricalo qui sopra": "Hent .tsv-filen og upload den ovenfor", + "Scarica il file CSV di esempio": "Hent eksempel-CSV-fil", + "Scarica il pacchetto da GitHub": "Hent pakke fra GitHub", + "Scarica il report CSV per analizzare gli errori in dettaglio": "Hent CSV-rapporten for at analysere fejlene i detaljer", + "Scarica l'eBook in formato digitale": "Hent e-bogen i digitalt format", + "Scarica ricevuta PDF": "Hent PDF-kvittering", + "Scarica un file TSV di esempio con alcuni libri già compilati per capire il formato LibraryThing e iniziare subito.": "Hent en eksempel-TSV-fil med nogle udfyldte bøger for at forstå LibraryThing-formatet og komme i gang med det samme.", + "Scaricamento copertine...": "Henter omslag...", + "Scarso": "Dårlig", + "Scegli": "Vælg", + "Scegli Icona Font Awesome": "Vælg Font Awesome-ikon", + "Scegli come inviare le email dal sistema. Puoi usare la funzione PHP mail(), PHPMailer o un server SMTP esterno.": "Vælg, hvordan e-mails skal sendes fra systemet. Du kan bruge PHP-funktionen mail(), PHPMailer eller en ekstern SMTP-server.", + "Scegli come inviare le email dal sistema. Puoi usare la funzione PHP Tab-delimited text come formato": "Vælg Tab-delimited text som format", + "Seleziona Libro": "Vælg bog", + "Seleziona Template": "Vælg skabelon", + "Seleziona Utente": "Vælg bruger", + "Seleziona almeno 2 autori": "Vælg mindst 2 forfattere", + "Seleziona almeno 2 autori da unire": "Vælg mindst 2 forfattere, der skal flettes", + "Seleziona almeno 2 editori": "Vælg mindst 2 forlag", + "Seleziona almeno 2 editori da unire": "Vælg mindst 2 forlag, der skal flettes", + "Seleziona almeno uno stato": "Vælg mindst én status", + "Seleziona classe...": "Vælg klasse...", + "Seleziona data": "Vælg dato", + "Seleziona divisione...": "Vælg afdeling...", + "Seleziona file": "Vælg fil", + "Seleziona genere...": "Vælg genre...", + "Seleziona gli stati dei prestiti da esportare:": "Vælg de lånetatuser, der skal eksporteres:", + "Seleziona i pulsanti di condivisione da mostrare nella pagina del libro.": "Vælg de deleknapper, der skal vises på bogomslaget.", + "Seleziona il formato delle etichette da stampare per i libri.": "Vælg formatet på de etiketter, der skal udskrives til bøgerne.", + "Seleziona la valutazione": "Vælg bedømmelse", + "Seleziona le date per la tua prenotazione. La richiesta verrà inviata alla biblioteca per approvazione.": "Vælg datoer for din reservation. Anmodningen sendes til biblioteket til godkendelse.", + "Seleziona mensola...": "Vælg hylde...", + "Seleziona ora": "Vælg tid", + "Seleziona prima un genere": "Vælg en genre først", + "Seleziona prima un genere...": "Vælg en genre først...", + "Seleziona prima una radice...": "Vælg en rod først...", + "Seleziona prima uno scaffale...": "Vælg en reol først...", + "Seleziona quali campi LibraryThing mostrare nella pagina pubblica del libro": "Vælg hvilke LibraryThing-felter der skal vises på bogens offentlige side", + "Seleziona radice...": "Vælg rod...", + "Seleziona scaffale e mensola prima": "Vælg reol og hylde først", + "Seleziona scaffale...": "Vælg reol...", + "Seleziona sezione...": "Vælg afsnit...", + "Seleziona tutti": "Vælg alle", + "Seleziona un Genere prima del Sottogenere.": "Vælg en genre før undergenren.", + "Seleziona un authority record": "Vælg en autoritetspost", + "Seleziona un autore di libreria": "Vælg en biblioteksforfatter", + "Seleziona un file ZIP da caricare": "Vælg en ZIP-fil, der skal uploades", + "Seleziona un file ZIP del plugin.": "Vælg en plugin-ZIP-fil.", + "Seleziona un genere di destinazione.": "Vælg en målgenre.", + "Seleziona un libro": "Vælg en bog", + "Seleziona un libro dalla lista...": "Vælg en bog fra listen...", + "Seleziona un libro per vedere la disponibilità": "Vælg en bog for at se tilgængelighed", + "Seleziona un livello": "Vælg et niveau", + "Seleziona un tipo": "Vælg en type", + "Seleziona un utente dalla lista...": "Vælg en bruger fra listen...", + "Seleziona un'opzione": "Vælg en indstilling", + "Seleziona una Radice prima del Genere.": "Vælg en rod før genren.", + "Seleziona una data di inizio": "Vælg en startdato", + "Seleziona una modalità": "Vælg en tilstand", + "Seleziona una valutazione prima di inviare la recensione.": "Vælg venligst en bedømmelse, før du indsender anmeldelsen.", + "Seleziona uno scaffale dal filtro sopra per gestire le sue mensole": "Vælg en reol fra filteret ovenfor for at administrere dens hylder", + "Seleziona uno scaffale per vedere le sue mensole...": "Vælg en reol for at se dens hylder...", + "Seleziona uno scaffale per visualizzare e riordinare le sue mensole": "Vælg en reol for at få vist og ændre rækkefølgen på dens hylder", + "Seleziona...": "Vælg...", + "Selezionato": "Valgt", + "Selezione non valida": "Ugyldigt valg", + "Sempre Online": "Altid online", + "Senza copertina": "Uden omslag", + "Senza descrizione": "Uden beskrivelse", + "Senza titolo": "Uden titel", + "Senza token: 25 richieste/minuto. Con token: 60 richieste/minuto.": "Uden token: 25 forespørgsler/minut. Med token: 60 forespørgsler/minut.", + "Separale con virgole": "Adskil dem med kommaer", + "Serie": "Serie", + "Serie (raggruppamento per funzione/forma)": "Serie (gruppering efter funktion/form)", + "Serie e collana": "Serie og samling", + "Serie e collane di libri": "Serier og bogsamlinger", + "Serie padre": "Overordnet serie", + "Serie padre / universo": "Overordnet serie / univers", + "Serie principale": "Hovedserie", + "Serie superiore nella gerarchia (es. l'universo che contiene cicli e stagioni).": "Overordnet serie i hierarkiet (f.eks. universet, der indeholder cyklusser og sæsoner).", + "Server Esterni SRU": "Eksterne SRU-servere", + "Server SMTP": "SMTP-server", + "Server SRU aggiuntivi per Copy Cataloging. SBN Italia è già integrato (vedi sopra).": "Yderligere SRU-servere til copy cataloging. SBN Italien er allerede integreret (se ovenfor).", + "Server in manutenzione. Attendi il completamento dell'aggiornamento.": "Server under vedligeholdelse. Vent venligst på, at opdateringen fuldføres.", + "Servizio": "Tjeneste", + "Servizio VIAF non raggiungibile. Riprova più tardi.": "VIAF-tjenesten kan ikke nås. Prøv igen senere.", + "Sessione Scaduta": "Session udløbet", + "Sessione corrente": "Aktuel session", + "Sessione import non valida": "Ugyldig importsession", + "Sessione import scaduta o dati non validi": "Importsession udløbet eller ugyldige data", + "Sessione revocata": "Session tilbagekaldt", + "Sessione scaduta, ti preghiamo di rifare il login": "Sessionen er udløbet, log venligst ind igen", + "Sessioni attive": "Aktive sessioner", + "Sesso": "Køn", + "Settimana": "Uge", + "Sezione": "Afsnit", + "Sezione Caratteristiche": "Afsnit med funktioner", + "Sezione Carosello Generi": "Afsnit med genrekarrusel", + "Sezione Eventi abilitata! Il menu e le pagine sono ora visibili nel frontend.": "Arrangementsafsnit aktiveret! Menuen og siderne er nu synlige i frontend.", + "Sezione Eventi disabilitata. Il menu e le pagine sono ora nascosti nel frontend.": "Arrangementsafsnit deaktiveret. Menuen og siderne er nu skjult i frontend.", + "Sezione Hero (Testata principale)": "Hero-afsnit (hovedhoved)", + "Sezione Testo Libero": "Afsnit med fri tekst", + "Sezione Ultimi Libri": "Afsnit med seneste bøger", + "Sezione prestiti nel profilo utente": "Låneafsnit i brugerprofil", + "Sezione wishlist nel profilo utente": "Ønskelisteafsnit i brugerprofil", + "Sezioni": "Afsnit", + "Sfoglia Catalogo": "Gennemse katalog", + "Sfoglia e cerca la collezione completa": "Gennemse og søg i hele samlingen", + "Sfoglia il nostro catalogo completo di libri disponibili per il prestito. Filtra per categoria, autore, editore e anno di pubblicazione per trovare la tua prossima lettura.": "Gennemse vores komplette katalog af bøger, der er til rådighed for lån. Filtrer efter kategori, forfatter, forlag og udgivelsesår for at finde din næste læsning.", + "Si caricano sempre, indipendentemente dal consenso cookie": "Indlæses altid, uafhængigt af cookie-samtykke", + "Si caricano solo se l'utente accetta i cookie Analytics nel banner": "Indlæses kun, hvis brugeren accepterer analysecookies i banneret", + "Si caricano solo se l'utente accetta i cookie Marketing nel banner": "Indlæses kun, hvis brugeren accepterer marketingcookies i banneret", + "Si consiglia di effettuare un backup del database prima dell'installazione.": "Det anbefales at tage en backup af databasen før installationen.", + "Si è verificato un errore di rete.": "Der opstod en netværksfejl.", + "Si è verificato un errore durante il salvataggio della prenotazione.": "Der opstod en fejl under lagring af reservationen.", + "Si è verificato un errore durante il salvataggio.": "Der opstod en fejl under lagring.", + "Si è verificato un errore durante l'accesso. Riprova": "Der opstod en fejl under login. Prøv igen", + "Si è verificato un errore durante l'aggiornamento del prestito.": "Der opstod en fejl under opdatering af lånet.", + "Si è verificato un errore durante l'operazione. Riprova più tardi.": "Der opstod en fejl under handlingen. Prøv igen senere.", + "Si è verificato un errore durante la sincronizzazione": "Der opstod en fejl under synkronisering", + "Si è verificato un errore imprevisto sul server.": "Der opstod en uventet fejl på serveren.", + "Si è verificato un errore imprevisto.": "Der opstod en uventet fejl.", + "Si è verificato un errore nella rimozione. Riprova.": "Der opstod en fejl under fjernelse. Prøv igen.", + "Si è verificato un errore.": "Der opstod en fejl.", + "Si è verificato un errore. Riprova": "Der opstod en fejl. Prøv igen", + "Si è verificato un errore. Riprova.": "Der opstod en fejl. Prøv igen.", + "Si è verificato un errore: %s": "Der opstod en fejl: %s", + "Sicurezza": "Sikkerhed", + "Sicurezza Automatica": "Automatisk sikkerhed", + "Sicurezza Connessione": "Forbindelsessikkerhed", + "Sincronizza (ICS)": "Synkroniser (ICS)", + "Sincronizza Copertine": "Synkroniser omslag", + "Sincronizza copertine mancanti via scraping": "Synkroniser manglende omslag via scraping", + "Sincronizzare le copertine?": "Vil du synkronisere omslag?", + "Sincronizzazione completata!": "Synkronisering fuldført!", + "Sincronizzazione...": "Synkroniserer...", + "Sintassi": "Syntaks", + "Sistema": "System", + "Sistema Pinakes": "Pinakes-system", + "Sistema Pinakes - Installazione": "Pinakes-system – Installation", + "Sistema attivo": "System aktivt", + "Site Key": "Nøgle til websted", + "Sitemap XML": "XML-sitemap", + "Sitemap rigenerata con successo (%d URL).": "Sitemap gendannet med succes (%d URL'er).", + "Sito": "Websted", + "Sito Web": "Websted", + "Sito web": "Websted", + "Sito web ufficiale dell'autore (se disponibile)": "Forfatterens officielle websted (hvis tilgængeligt)", + "Sito web ufficiale dell'editore": "Forlagets officielle websted", + "Slovenčina (SK)": "Slovakisk (SK)", + "Slug plugin bundled non valido: %s": "Ugyldigt slug for bundlet plugin: %s", + "Socket MySQL (opzionale)": "MySQL-socket (valgfrit)", + "Soggetti (Nuovo Soggettario BNCF)": "Emneord (Nuovo Soggettario BNCF)", + "Soggetti produttori e associati": "Ophavsmænd og tilhørende enheder", + "Soggetto": "Emne", + "Soggetto Email": "E-mail-emne", + "Solo ${maxItemCount} autori possono essere aggiunti": "Kun ${maxItemCount} forfattere kan tilføjes", + "Solo %d autori possono essere aggiunti": "Kun %d forfattere kan tilføjes", + "Solo Catalogo": "Kun katalog", + "Solo file ZIP sono accettati.": "Kun ZIP-filer accepteres.", + "Solo sospesi": "Kun spærrede", + "Sono accettati anche domini personalizzati; se incolli un URL completo verrà salvato solo l'host.": "Brugerdefinerede domener accepteres også; hvis du indsætter en fuld URL, gemmes kun værten.", + "Sono stati rilevati problemi di integrità": "Der blev fundet integritetsproblemer", + "Sospeso": "Spærret", + "Sostituisci - Sovrascrivi tutto": "Erstat – Overskriv alt", + "Sostituisci /usr/bin/php con il percorso corretto di PHP sul tuo server": "Erstat /usr/bin/php med den korrekte PHP-sti på din server", + "Sottocategoria": "Underkategori", + "Sottodomini devono supportare HTTPS (se usati)": "Subdomæner skal understøtte HTTPS (hvis de bruges)", + "Sottogenere": "Undergenre", + "Sottogenere di": "Undergenre af", + "Sottogenere specifico (opzionale)": "Specifik undergenre (valgfrit)", + "Sottogeneri": "Undergenrer", + "Sottotitolo": "Undertitel", + "Sottotitolo CTA": "CTA-undertitel", + "Sottotitolo del libro (opzionale)": "Bogundertitel (valgfrit)", + "Sottotitolo sezione": "Afsnitsundertitel", + "Source & Acquisition Info": "Kilde- og erhvervelsesoplysninger", + "Spanish, French, German": "Spansk, fransk, tysk", + "Spazio libero": "Ledig plads", + "Spin-off": "Spin-off", + "Spin-off / sottoserie": "Spin-off / underserie", + "Sposta tutti i libri e sottogeneri di questo genere nel genere selezionato, poi elimina questo genere.": "Flyt alle bøger og undergenrer fra denne genre til den valgte genre, og slet derefter denne genre.", + "Staff": "Personale", + "Staff:": "Personale:", + "Stagione": "Sæson", + "Stai per aggiornare Pinakes alla versione": "Du er ved at opdatere Pinakes til version", + "Stai per eliminare": "Du er ved at slette", + "Stai per eliminare %d editori. Questa azione non può essere annullata.": "Du er ved at slette %d forlag. Denne handling kan ikke annulleres.", + "Stai per eliminare %d libri. Questa azione non può essere annullata.": "Du er ved at slette %d bøger. Denne handling kan ikke annulleres.", + "Stai per unire": "Du er ved at flette", + "Stai utilizzando l'ultima versione disponibile.": "Du bruger den seneste tilgængelige version.", + "Stai utilizzando l'ultima versione.": "Du bruger den seneste version.", + "Stampa": "Udskriv", + "Stampa etichetta": "Udskriv etiket", + "Standard": "Standard", + "Standard Tirrenia catalogazione": "Standard Tirrenia-katalogisering", + "Standard dorso libri (più comune)": "Standard bogryg (almindeligst)", + "Statistiche": "Statistik", + "Statistiche Prestiti": "Lånestatistik", + "Statistiche Rapide": "Hurtig statistik", + "Statistiche aggiornate per": "Statistik opdateret for", + "Statistiche:": "Statistik:", + "Stato": "Status", + "Stato API": "API-status", + "Stato API key aggiornato con successo.": "API-nøglestatus opdateret med succes.", + "Stato Copia Stale": "Udløbet eksemplarstatus", + "Stato Incongruente": "Statusafvigelse", + "Stato Plugin": "Plugin-status", + "Stato Prestito": "Lånestatus", + "Stato aggiornato per %d libri": "Status opdateret for %d bøger", + "Stato attuale:": "Aktuel status:", + "Stato dell'installazione:": "Installationsstatus:", + "Stato della copia": "Eksemplarstatus", + "Stato della copia aggiornato con successo.": "Eksemplarstatus opdateret med succes.", + "Stato e Gestione": "Status og administration", + "Stato non valido": "Ugyldig status", + "Stato non valido.": "Ugyldig status.", + "Stato prestito": "Lånestatus", + "Stato prestito corrente": "Aktuel lånestatus", + "Stato prestito non valido.": "Ugyldig lånestatus.", + "Stato sconosciuto": "Ukendt status", + "Stato:": "Status:", + "Status attuale di questa copia del libro": "Aktuel status for dette bogeneksemplar", + "Status giuridico": "Juridisk status", + "Step 1: Creazione backup": "Trin 1: Opret backup", + "Step 2: Download aggiornamento": "Trin 2: Hent opdatering", + "Step 3: Installazione aggiornamento": "Trin 3: Installer opdatering", + "Storia": "Historie", + "Storia archivistica": "Arkivhistorie", + "Storico Import": "Importeringshistorik", + "Storico Prestiti": "Lånehistorik", + "Struttura interna / genealogia": "Intern struktur / genealogi", + "Struttura pacchetto non valida": "Ugyldig pakkestruktur", + "Struttura pacchetto non valida: directory sorgente non trovata": "Ugyldig pakkestruktur: kildemappe ikke fundet", + "Successiva": "Næste", + "Successivo": "Næste", + "Successo": "Succes", + "Successo!": "Succes!", + "Suggerimenti": "Tips", + "Suggerimento": "Tip", + "Suggerimento:": "Tip:", + "Suggerimento: la ricerca usa MATCH…AGAINST (full-text MySQL). Parole di 3 caratteri o meno possono essere ignorate dal min-word-length di MySQL.": "Tip: Søgningen bruger MATCH…AGAINST (MySQL fuldtekst). Ord på 3 tegn eller derunder kan blive ignoreret af MySQL's min-word-length.", + "Suggerisci collocazione": "Foreslå placering", + "Suggerito scaffale #${data.scaffale_id}": "Foreslået reol #${data.scaffale_id}", + "Suggerito:": "Foreslået:", + "Summary (Immagine Piccola)": "Summary (lille billede)", + "Summary Large Image (Immagine Grande)": "Summary Large Image (stort billede)", + "Supporto": "Support", + "Supporto completo LibraryThing": "Fuld LibraryThing-understøttelse", + "Sì": "Ja", + "Sì, Aggiorna": "Ja, opdater", + "Sì, Annulla": "Ja, annuller", + "Sì, Salva": "Ja, gem", + "Sì, aggiorna": "Ja, opdater", + "Sì, applica": "Ja, anvend", + "Sì, approva": "Ja, godkend", + "Sì, attiva": "Ja, aktivér", + "Sì, correggi": "Ja, ret", + "Sì, crea indici": "Ja, opret indeks", + "Sì, crea tabelle": "Ja, opret tabeller", + "Sì, disattiva": "Ja, deaktivér", + "Sì, disinstalla": "Ja, afinstaller", + "Sì, elimina": "Ja, slet", + "Sì, elimina!": "Ja, slet!", + "Sì, esegui": "Ja, kør", + "Sì, rimuovi": "Ja, fjern", + "Sì, sincronizza": "Ja, synkroniser", + "TLS": "TLS", + "TUTTI I DATI IN QUESTI CAMPI VERRANNO ELIMINATI PERMANENTEMENTE!": "ALLE DATA I DISSE FELTER SLETTES PERMANENT!", + "Tab-delimited text da LibraryThing.com": "Tabulatorsepareret tekst fra LibraryThing.com", + "Tabella": "Tabel", + "Tabella %s creata": "Tabel %s oprettet", + "Tabelle create:": "Oprettede tabeller:", + "Tabelle di Sistema": "Systemtabeller", + "Tabelle richieste per l'aggiornamento": "Tabeller krævet til opdatering", + "Tag": "Tag", + "Tag e parole chiave": "Tags og nøgleord", + "Tags, Descrizione": "Tags, beskrivelse", + "Tassonomia: serie / universo / ciclo / stagione / spin-off / arco / collana editoriale.": "Taksonomi: serie / univers / cyklus / sæson / spin-off / bue / forlagsserie.", + "Telefono": "Telefon", + "Telefono *": "Telefon *", + "Telefono Referente": "Kontaktpersonens telefon", + "Telefono:": "Telefon:", + "Tema": "Tema", + "Tema Attivo": "Aktivt tema", + "Tema attivato con successo": "Tema aktiveret med succes", + "Tema non trovato": "Tema ikke fundet", + "Tema salvato con successo": "Tema gemt med succes", + "Temi": "Temaer", + "Temi Disponibili": "Tilgængelige temaer", + "Template": "Skabeloner", + "Template Email": "E-mail-skabeloner", + "Template aggiornato con successo!": "Skabelon opdateret med succes!", + "Template email": "E-mail-skabeloner", + "Termini": "Betingelser", + "Termini di Servizio": "Servicevilkår", + "Tessera biblioteca": "Bibliotekskort", + "Test": "Test", + "Test Connessione": "Forbindelsestest", + "Test Endpoint": "Test endpoint", + "Test del cron job:": "Cron-job-test:", + "Testi Banner": "Bannertekster", + "Testi Banner Cookie": "Cookie-banner-tekster", + "Testi Banner Iniziale": "Tekster til indledende banner", + "Testi Cookie Banner": "Cookie-banner-tekster", + "Testi Modale Preferenze": "Tekster til præferencedialog", + "Testi categorie cookie": "Tekster til cookiekategorier", + "Testo / manoscritto (bf)": "Tekst / manuskript (bf)", + "Testo Bottone": "Knaptekst", + "Testo Privacy": "Privatlivstekst", + "Testo che apparirà nel footer del sito": "Tekst, der vises i websitets fodnote", + "Testo checkbox": "Afkrydsningsfeltets tekst", + "Testo della checkbox privacy nel form": "Tekst til privatlivsafkrydsningsfelt i formular", + "Testo introduttivo": "Introduktionstekst", + "Testo principale mostrato nel banner. Puoi usare HTML.": "Hovedtekst vist i banneret. Du kan bruge HTML.", + "Testo pulsante": "Knaptekst", + "Testo pulsante \"Accetta tutti\"": "Knaptekst \"Accepter alle\"", + "Testo pulsante \"Preferenze\"": "Knaptekst \"Præferencer\"", + "Testo pulsante \"Rifiuta non essenziali\"": "Knaptekst \"Afvis ikke-væsentlige\"", + "Testo pulsante \"Salva selezionati\"": "Knaptekst \"Gem valgte\"", + "Ti abbiamo inviato un'email con il link per confermare l'indirizzo.": "Vi har sendt dig en e-mail med et link til at bekræfte adressen.", + "Timeout (secondi)": "Timeout (sekunder)", + "Timestamp": "Tidsstempel", + "Tipo": "Type", + "Tipo (ISDF)": "Type (ISDF)", + "Tipo Acquisizione": "Erhvervelsestype", + "Tipo Card": "Korttype", + "Tipo Contenuto": "Indholdstype", + "Tipo MIME non valido. Solo file CSV sono accettati.": "Ugyldig MIME-type. Kun CSV-filer accepteres.", + "Tipo Media": "Medietype", + "Tipo Messaggio": "Beskedtype", + "Tipo OG": "OG-type", + "Tipo Twitter Card": "Twitter Card-type", + "Tipo Utente": "Brugertype", + "Tipo acquisizione": "Erhvervelsestype", + "Tipo di contenuto per Open Graph. Scegli 'Website' per la homepage.": "Indholdstype for Open Graph. Vælg 'Website' til forsiden.", + "Tipo di entità": "Enhedstype", + "Tipo di file non consentito. Sono ammessi solo: %s": "Filtype ikke tilladt. Kun tilladt: %s", + "Tipo di file non supportato. Solo JPEG e PNG sono consentiti.": "Ikke-understøttet filtype. Kun JPEG og PNG er tilladt.", + "Tipo di file non valido.": "Ugyldig filtype.", + "Tipo di file non valido. Carica un'immagine reale.": "Ugyldig filtype. Upload venligst et rigtigt billede.", + "Tipo di issue non valido": "Ugyldig fejltype", + "Tipo di luogo": "Stedtype", + "Tipo di materiale": "Materialetype", + "Tipo entità": "Enhedstype", + "Tipo file": "Filtype", + "Tipo non valido": "Ugyldig type.", + "Tipo serie": "Serietype", + "Tipo utente": "Brugertype", + "Tipologia account": "Kontotype", + "Tipologia:": "Type:", + "Titolo": "Titel", + "Titolo (opzionale)": "Titel (valgfrit)", + "Titolo 1": "Overskrift 1", + "Titolo 2": "Overskrift 2", + "Titolo 3": "Overskrift 3", + "Titolo A-Z": "Titel A–Z", + "Titolo CTA": "CTA-titel", + "Titolo Evento": "Arrangementstitel", + "Titolo Modale": "Dialogtitel", + "Titolo OG": "OG-titel", + "Titolo Open Graph": "Open Graph-titel", + "Titolo Pagina": "Sideritel", + "Titolo SEO": "SEO-titel", + "Titolo Twitter": "Twitter-titel", + "Titolo Z-A": "Titel Z–A", + "Titolo attribuito": "Tildelt titel", + "Titolo del libro": "Bogtitel", + "Titolo dell'opera completa": "Titel på det samlede værk", + "Titolo della sezione e le 4 card con le caratteristiche": "Afsnitstitel og de 4 funktionstegn", + "Titolo e descrizione mostrati sopra i caroselli dei generi": "Titel og beskrivelse vist over genrekarrusellerne", + "Titolo formale": "Formel titel", + "Titolo formale:": "Formel titel:", + "Titolo libro": "Bogtitel", + "Titolo mancante": "Manglende titel", + "Titolo modale": "Modaltitel", + "Titolo mostrato quando condividi su Facebook/LinkedIn. Se vuoto, usa il titolo SEO o hero.": "Titel vist, når du deler på Facebook/LinkedIn. Hvis tom, bruges SEO- eller hero-titlen.", + "Titolo non disponibile": "Titel ikke tilgængelig", + "Titolo o ISBN...": "Titel eller ISBN...", + "Titolo obbligatorio mancante": "Obligatorisk felt titel mangler", + "Titolo originale": "Originaltitel", + "Titolo pagina": "Sidetitel", + "Titolo per Twitter/X. Se vuoto, usa il titolo Open Graph.": "Titel til Twitter/X. Hvis tom, bruges Open Graph-titlen.", + "Titolo principale (H1)": "Hovedtitel (H1)", + "Titolo principale del libro": "Bogens hovedtitel", + "Titolo sezione": "Afsnitstitel", + "Titolo troppo lungo (max 255 caratteri)": "Titel for lang (maks. 255 tegn)", + "Titolo uniforme": "Ensartet titel", + "Titolo, Sottotitolo": "Titel, undertitel", + "Titolo, nome, descrizione… (minimo 2 caratteri)": "Titel, navn, beskrivelse… (mindst 2 tegn)", + "Titolo, reference code, descrizione…": "Titel, referencecode, beskrivelse…", + "Titolo, sottotitolo, descrizione...": "Titel, undertitel, beskrivelse...", + "Titolo...": "Titel...", + "Titolo:": "Titel:", + "Toggle menu": "Skift menu", + "Toggle search": "Skift søgning", + "Token CSRF non valido": "Ugyldig CSRF-token.", + "Token CSRF non valido.": "Ugyldig CSRF-token.", + "Token CSRF non valido. Riprova.": "Ugyldig CSRF-token. Prøv igen.", + "Token Discogs rimosso correttamente.": "Discogs-token fjernet korrekt.", + "Token GitHub API": "GitHub API-token", + "Token GitHub non valido": "Ugyldig GitHub-token", + "Token GitHub non valido: contiene caratteri di controllo": "Ugyldig GitHub-token: indeholder kontroltegn", + "Token GitHub rimosso": "GitHub-token fjernet", + "Token GitHub salvato con successo": "GitHub-token gemt med succes", + "Token configurato": "Token konfigureret", + "Token configurato — lascia vuoto per mantenere": "Token konfigureret — lad stå tom for at beholde", + "Token di Accesso": "Adgangstoken", + "Token di sicurezza non valido. Riprova.": "Ugyldig sikkerhedstoken. Prøv igen.", + "Token opzionale:": "Valgfri token:", + "Too many requests": "For mange forespørgsler", + "Top 10 Lettori Più Attivi": "Top 10 mest aktive læsere", + "Top 10 Libri Più Prestati": "Top 10 mest udlånte bøger", + "Torna Indietro": "Tilbage", + "Torna agli Eventi": "Tilbage til arrangementer", + "Torna agli eventi": "Tilbage til arrangementer", + "Torna ai Libri": "Tilbage til bøger", + "Torna ai Plugin": "Tilbage til plugins", + "Torna ai Prestiti": "Tilbage til lån", + "Torna ai temi": "Tilbage til temaer", + "Torna al login": "Tilbage til login", + "Torna all'Applicazione": "Tilbage til applikationen", + "Torna all'elenco": "Tilbage til listen", + "Torna alla Configurazione Database": "Tilbage til databasekonfiguration", + "Torna alla Home": "Tilbage til startside", + "Torna alla categoria superiore": "Tilbage til overordnede kategori", + "Torna alla dashboard": "Tilbage til kontrolpanel", + "Torna alla lista": "Tilbage til listen", + "Torna alla panoramica eventi": "Tilbage til arrangementsoversigt", + "Torna alle Impostazioni": "Tilbage til indstillinger", + "Torna alle Impostazioni CMS": "Tilbage til CMS-indstillinger", + "Torna alle Lingue": "Tilbage til sprog", + "Torna alle Prenotazioni": "Tilbage til reservationer", + "Torna su": "Til toppen", + "Total users:": "Brugere i alt:", + "Totale": "I alt", + "Totale Autori": "Forfattere i alt", + "Totale Generi": "Genrer i alt", + "Totale Libri": "Bøger i alt", + "Totale Prestiti": "Lån i alt", + "Totale autori": "Forfattere i alt", + "Totale editori:": "Forlag i alt:", + "Totale libri": "Bøger i alt", + "Totale libri presenti": "Bøger i bestand i alt", + "Totale utenti:": "Brugere i alt:", + "Totale: %s righe": "I alt: %s rækker", + "Totali": "I alt", + "Tra %d giorni": "Om %d dage", + "Tracce": "Numre", + "Tracciamento Prestiti": "Lånesporing", + "Tracklist": "Sporliste", + "Traduttore": "Oversætter", + "Traduzioni e localizzazione": "Oversættelse og lokalisering", + "Transazione": "Transaktion", + "Trascina il file nell'area di upload o clicca per selezionarlo": "Træk filen til uploadområdet eller klik for at vælge den", + "Trascina le sezioni per riordinarle. L'ordine sarà salvato automaticamente e rispecchiato nella homepage.": "Træk afsnittene for at ændre rækkefølgen. Rækkefølgen gemmes automatisk og afspejles på forsiden.", + "Trascina per riordinare • Il codice deve essere univoco": "Træk for at ændre rækkefølge • Koden skal være unik", + "Trascina per riordinare • Ogni scaffale + livello deve essere univoco": "Træk for at ændre rækkefølge • Hver reol- og hyldekombination skal være unik", + "Trascina qui il file CSV o %{browse}": "Træk CSV-filen hertil eller %{browse}", + "Trascina qui il file TSV o %{browse}": "Træk TSV-filen hertil eller %{browse}", + "Trascina qui il file ZIP del plugin o %{browse}": "Træk plugin-ZIP-filen hertil eller %{browse}", + "Trascina qui il logo o %{browse}": "Træk logoet hertil eller %{browse}", + "Trascina qui l'immagine di sfondo o %{browse}": "Træk baggrundsbilledet hertil eller %{browse}", + "Trascina qui l'immagine o %{browse}": "Træk billedet hertil eller %{browse}", + "Trascina qui l'immagine, %{browse} o importa da": "Træk billedet hertil, %{browse} eller importer fra", + "Trascina qui la copertina del libro o %{browse}": "Træk bogomslaget hertil eller %{browse}", + "Trascina qui la copertina del libro o clicca per selezionare": "Træk bogomslaget hertil eller klik for at vælge", + "Trasforma Pinakes in un catalogo di sola consultazione": "Omdan Pinakes til et rent opslagskatalog", + "Trigger database configurati": "Databasetriggere konfigureret", + "Trigger database: azione manuale richiesta": "Databasetrigger: manuel handling påkrævet", + "Trigger importati OK": "Triggere importeret OK", + "Troppi errori durante l'import dei dati (%d errori). Primi errori:\n%s": "For mange fejl under dataimport (%d fejl). Første fejl:\n%s", + "Troppi errori durante l'import dello schema (%d errori). Primi errori:\n%s": "For mange fejl under skemaimport (%d fejl). Første fejl:\n%s", + "Troppi tentativi. Attendi qualche minuto prima di riprovare": "For mange forsøg. Vent et par minutter, før du prøver igen", + "Trovate tabelle da backuppare": "Tabeller, der skal sikkerhedskopieres, fundet", + "Trovato": "Fundet", + "Trovato anche nell'archivio:": "Også fundet i arkivet:", + "Tutorial": "Vejledning", + "Tutte le copie di questo libro hanno già un prestito attivo o prenotato. Attendi che una copia venga restituita.": "Alle eksemplarer af denne bog har allerede et aktivt lån eller er reserveret. Vent venligst på, at et eksemplar returneres.", + "Tutte le copie in prestito": "Alle eksemplarer udlånt", + "Tutte le copie prenotate": "Alle eksemplarer reserveret", + "Tutte le date sono in formato ISO 8601 (YYYY-MM-DD HH:MM:SS)": "Alle datoer er i ISO 8601-format (YYYY-MM-DD HH:MM:SS)", + "Tutte le mensole": "Alle hylder", + "Tutte le notifiche del sistema": "Alle systemmeddelelser", + "Tutte le richieste sono state gestite.": "Alle anmodninger er blevet behandlet.", + "Tutte le risorse del sito devono essere HTTPS": "Alle webstedsressourcer skal være HTTPS", + "Tutte le route devono iniziare con": "Alle ruter skal starte med", + "Tutte le serie": "Alle serier", + "Tutte le tabelle di sistema sono presenti!": "Alle systemtabeller er til stede!", + "Tutti": "Alle", + "Tutti gli anni": "Alle år", + "Tutti gli autori": "Alle forfattere", + "Tutti gli editori": "Alle forlag", + "Tutti gli eventi": "Alle arrangementer", + "Tutti gli indici di performance sono presenti.": "Alle præstationsindekser er til stede.", + "Tutti gli scaffali": "Alle reoler", + "Tutti gli stati": "Alle statusser", + "Tutti i controlli di integrità sono passati con successo!": "Alle integritetskontroller bestod med succes!", + "Tutti i diritti riservati.": "Alle rettigheder forbeholdes.", + "Tutti i filtri sono stati rimossi": "Alle filtre er blevet fjernet", + "Tutti i generi": "Alle genrer", + "Tutti i libri": "Alle bøger", + "Tutti i livelli": "Alle niveauer", + "Tutti i media": "Alle medier", + "Tutti i messaggi ricevuti tramite il form contatti": "Alle beskeder modtaget via kontaktformular", + "Tutti i requisiti sono soddisfatti! Puoi procedere con l'installazione.": "Alle krav er opfyldt! Du kan fortsætte med installationen.", + "Tutti i ruoli": "Alle roller", + "Tutti soddisfatti": "Alle opfyldt", + "Tutto": "Alt", + "Tutto aggiornato!": "Alt er opdateret!", + "Tutto sotto controllo!": "Alt er under kontrol!", + "Twitter": "Twitter", + "Twitter Card": "Twitter Card", + "Twitter Cards (X)": "Twitter Cards (X)", + "URI standard (RightsStatements.org o Creative Commons) incluso nel manifest IIIF come campo 'rights'.": "Standard-URI (RightsStatements.org eller Creative Commons) inkluderet i IIIF-manifestet som feltet 'rights'.", + "URL": "URL", + "URL Canonico": "Kanonisk URL", + "URL Canonico (opzionale)": "Kanonisk URL (valgfrit)", + "URL Canonico Mancante": "Manglende kanonisk URL", + "URL Canonico Non Valido": "Ugyldig kanonisk URL", + "URL Canonico Vuoto": "Tom kanonisk URL", + "URL Endpoint API": "API-endpoint-URL", + "URL Endpoint NCIP": "NCIP-slutpunkt-URL", + "URL Endpoint SRU": "SRU-slutpunkt-URL", + "URL Non Valido": "Ugyldig URL", + "URL OG": "OG-URL", + "URL completo del sito (es: https://biblioteca.example.com). Usato per link nelle email (verifica account, reset password). Se lasciato vuoto, verrà auto-rilevato.": "Fulstændig websteds-URL (f.eks. https://biblioteca.example.com). Bruges til links i e-mails (kontobekræftelse, nulstilling af adgangskode). Hvis den efterlades tom, registreres den automatisk.", + "URL completo della pagina (auto-generato se vuoto)": "Fuld side-URL (automatisk genereret, hvis tom)", + "URL del file o carica usando il pulsante": "Fil-URL eller upload ved hjælp af knappen", + "URL della pagina con la cookie policy": "URL til siden med cookiepolitik", + "URL della pagina con le tecnologie dei cookie": "URL til siden med cookieteknologier", + "URL di download non trovato": "Hentnings-URL ikke fundet", + "URL file": "Fil-URL", + "URL manifest IIIF (server esterno)": "IIIF-manifest-URL (ekstern server)", + "URL non sicuro": "Usikker URL", + "URL non valido o non permesso.": "Ugyldig eller ikke tilladt URL.", + "URL non valido.": "Ugyldig URL.", + "URL non valido. Deve essere un URL HTTPS valido.": "Ugyldig URL. Skal være en gyldig HTTPS-URL.", + "URL non valido. Deve essere un URL di Google Maps (https://www.google.com/maps/embed?...) o OpenStreetMap (https://www.openstreetmap.org/export/embed.html?...).": "Ugyldig URL. Skal være en Google Maps-URL (https://www.google.com/maps/embed?...) eller OpenStreetMap-URL (https://www.openstreetmap.org/export/embed.html?...).", + "URL obbligatorio.": "URL er påkrævet.", + "URL principale del sito. Se vuoto, usa l'URL corrente.": "Webstedets hoved-URL. Hvis tom, bruges den aktuelle URL.", + "URL pubblico:": "Offentlig URL:", + "URL sito web...": "Websteds-URL...", + "URL...": "URL...", + "Ultima": "Sidste", + "Ultima Versione": "Seneste version", + "Ultima generazione:": "Sidste generering:", + "Ultima modifica": "Senest ændret", + "Ultime aggiunte al catalogo (RSS 2.0)": "Seneste tilføjelser til kataloget (RSS 2.0)", + "Ultimi Arrivi": "Nye ankomster", + "Ultimi Libri Aggiunti": "Senest tilføjede bøger", + "Ultimi Libri Inseriti": "Senest indsatte bøger", + "Ultimi aggiunti (data creazione)": "Senest tilføjede (oprettelsesdato)", + "Ultimi modificati (data aggiornamento)": "Senest ændrede (opdateringsdato)", + "Ultimo": "Sidste", + "Ultimo Aggiornamento": "Seneste opdatering", + "Ultimo accesso": "Sidste login", + "Ultimo aggiornamento": "Seneste opdatering", + "Ultimo uso:": "Sidste brug:", + "Ultimo utilizzo": "Senest brugt", + "Umberto Eco": "Umberto Eco", + "Un altro aggiornamento è già in corso. Riprova più tardi.": "En anden opdatering er allerede i gang. Prøv igen senere.", + "Un backup viene creato automaticamente prima di salvare": "Der oprettes automatisk en backup før lagring", + "Un genere non può essere genitore di sé stesso.": "En genre kan ikke være sin egen forælder.", + "Un'esperienza di lettura moderna, intuitiva e sempre a portata di mano": "En moderne, intuitiv læseoplevelse – altid lige ved hånden", + "Una chiave è attualmente salvata e funzionante. Puoi aggiornarla inserendo un nuovo valore o lasciarla vuota per rimuoverla.": "En nøgle er i øjeblikket gemt og fungerer. Du kan opdatere den ved at indtaste en ny værdi eller lade den stå tom for at fjerne den.", + "Una chiave è già salvata. Inserisci un nuovo valore per aggiornarla oppure lascia vuoto per rimuoverla.": "En nøgle er allerede gemt. Indtast en ny værdi for at opdatere den, eller lad feltet stå tomt for at fjerne den.", + "Una descrizione completa aiuta gli utenti a conoscere meglio l'autore": "En fuldstændig beskrivelse hjælper brugerne med at lære forfatteren bedre at kende", + "Una mensola con livello %d esiste già in questo scaffale. Usa un livello diverso.": "En hylde med niveau %d findes allerede i denne reol. Brug et andet niveau.", + "Una panoramica dei libri che hai salvato per non perderli di vista.": "En oversigt over de bøger, du har gemt for ikke at miste dem af syne.", + "Una serie per riga": "Én serie pr. linje", + "Una serie per riga (le virgole sono trattate come parte del nome).": "Én serie pr. linje (kommaer behandles som en del af navnet).", + "Una serie per riga o separate da virgola": "Én serie pr. linje eller adskilt af komma", + "Unisci": "Flet", + "Unisci autori": "Flet forfattere", + "Unisci con altra collana": "Flet med anden serie", + "Unisci con altro genere": "Flet med anden genre", + "Unisci editori": "Flet forlag", + "Unisciti alla nostra community di lettori e scopri il piacere della lettura con la nostra piattaforma moderna.": "Bliv en del af vores læsefællesskab og opdag læseglæden med vores moderne platform.", + "Unità": "Enhed", + "Unità (lettera, nota, memo)": "Enhed (brev, note, memo)", + "Unità archivistica": "Arkivenhed", + "Unità archivistiche": "Arkivenheder", + "Unità archivistiche analizzate": "Analyserede arkivenheder", + "Unità archivistiche collegate": "Tilnyttede arkivenheder", + "Unità discendenti (%d)": "Underordnede enheder (%d)", + "Unità padre": "Overordnet enhed", + "Universo / macroserie": "Univers / makroserie", + "Updated At": "Opdateret den", + "Upload non valido": "Ugyldig upload", + "Uploader non disponibile": "Uploader ikke tilgængelig", + "Usa": "Brug", + "Usa 'localhost' (raccomandato, rileva automaticamente TCP/socket). Puoi forzare '127.0.0.1' per TCP.": "Brug 'localhost' (anbefalet, registrerer automatisk TCP/socket). Du kan tvinge '127.0.0.1' til TCP.", + "Usa codici semplici (A, B, C...)": "Brug enkle koder (A, B, C...)", + "Usa formato: 599 oppure 599.9 oppure 599.93": "Brug format: 599 eller 599.9 eller 599.93", + "Usa gli endpoint specifici per il formato legacy": "Brug de specifikke endpoints til legacy-formatet", + "Usa gli endpoint specifici per il formato legacy.": "Brug de specifikke endepunkter til det ældre format.", + "Usa i servizi online per precompilare automaticamente i dati del libro": "Brug onlinetjenester til automatisk at udfylde bogdata", + "Usa il controllo schermo intero del viewer o del browser": "Brug skærmfuldskontrol i visningsprogrammet eller browseren", + "Usa il pulsante \"Rigenera adesso\" per crearla": "Brug knappen \"Gendan nu\" for at oprette den", + "Usa il separatore %s": "Brug separatoren %s", + "Usa l'editor per formattare il testo, aggiungere link, immagini e altro": "Brug editoren til at formatering af tekst, tilføje links, billeder m.m.", + "Usa l'editor per formattare il testo, aggiungere link, immagini e altro.": "Brug editoren til at formaterer tekst, tilføje links, billeder og mere.", + "Usa la funzione di ricerca del browser per trovare testo nel documento": "Brug browserens søgefunktion til at finde tekst i dokumentet", + "Usa le frecce ← → per saltare": "Brug piletasterne ← → til at springe", + "Usa questa azione dopo aver importato un grande numero di libri o modifiche ai contenuti CMS.": "Brug denne handling efter import af et stort antal bøger eller ændringer i CMS-indhold.", + "Usa questa funzione solo se l'aggiornamento automatico non funziona a causa dei limiti di rate della GitHub API. Il pacchetto deve essere lo stesso generato per le release di GitHub.": "Brug kun denne funktion, hvis den automatiske opdatering ikke fungerer på grund af GitHub API-hastighedsgrænser. Pakken skal være den samme som den, der genereres til GitHub-releases.", + "Usa questo campo per personalizzare lo stile del sito senza modificare i file di tema.": "Brug dette felt til at tilpasse websitets stil uden at ændre temafilerne.", + "Usa {isbn} come placeholder. Es: https://api.example.com/books/{isbn}": "Brug {isbn} som pladsholder. Eks: https://api.example.com/books/{isbn}", + "Usata per login e comunicazioni.": "Bruges til login og kommunikation.", + "Username": "Brugernavn", + "Users": "Brugere", + "Utente": "Bruger", + "Utente %s (%s) si è registrato": "Bruger %s (%s) har registreret sig", + "Utente admin creato:": "Adminbruger oprettet:", + "Utente aggiornato con successo!": "Bruger opdateret med succes!", + "Utente approvato con successo!": "Bruger godkendt med succes!", + "Utente attivato direttamente!": "Bruger aktiveret direkte!", + "Utente creato con successo!": "Bruger oprettet med succes!", + "Utente eliminato con successo.": "Bruger slettet med succes.", + "Utente prenotante": "Reserverende bruger", + "Utente preselezionato": "Forudvalgt bruger", + "Utente sconosciuto": "Ukendt bruger", + "Utente senza nome": "Unavngiven bruger", + "Utente:": "Bruger:", + "Utenti": "Brugere", + "Utenti Attivi": "Aktive brugere", + "Utenti in Attesa di Approvazione": "Brugere der afventer godkendelse", + "Utenti registrati": "Registrerede brugere", + "Utilizza l'editor TinyMCE per formattare il testo e Uppy per caricare immagini di alta qualità. Le modifiche saranno immediatamente visibili nella pagina pubblica.": "Brug TinyMCE-editoren til at formatere tekst og Uppy til at uploade billeder i høj kvalitet. Ændringer vil straks være synlige på den offentlige side.", + "Utilizziamo i cookie per migliorare la tua esperienza. Continuando a visitare questo sito, accetti il nostro uso dei cookie.": "Vi bruger cookies til at forbedre din oplevelse. Ved at fortsætte med at besøge dette websted accepterer du vores brug af cookies.", + "VIAF ID non valido. Deve essere un numero.": "Ugyldigt VIAF-ID. Skal være et tal.", + "VIAF ID rimosso.": "VIAF-ID fjernet.", + "VIAF ID salvato.": "VIAF-ID gemt.", + "Vai": "Gå", + "Vai a Autori": "Gå til forfattere", + "Vai a Dashboard": "Gå til kontrolpanel", + "Vai a Editori": "Gå til forlag", + "Vai a Impostazioni": "Gå til indstillinger", + "Vai a Libri": "Gå til bøger", + "Vai a Prestiti": "Gå til lån", + "Vai a Utenti": "Gå til brugere", + "Vai ad Autori": "Til forfattere", + "Vai al Login": "Gå til login", + "Vai al login": "Gå til login", + "Vai all'Applicazione": "Gå til applikationen", + "Vai all'applicazione": "Gå til applikationen", + "Vai alla": "Gå til", + "Vai alla Home": "Gå til startside", + "Vai su": "Gå til", + "Vai su LibraryThing.com → Your Library": "Gå til LibraryThing.com → Your Library", + "Validazione XSD strict (rifiuta file non conformi a MARC21 Slim)": "Streng XSD-validering (afviser filer, der ikke overholder MARC21 Slim)", + "Validazione prestito fallita": "Lånevalidering mislykkedes", + "Validazione prestito fallita (post-creazione)": "Lånevalidering mislykkedes (efter oprettelse)", + "Valore Corrente": "Aktuel værdi", + "Valore Corrente Stimato": "Estimeret aktuel værdi", + "Valore applicato": "Værdi anvendt", + "Valore compreso tra 1 e 30 giorni. Consigliato: 3 giorni": "Værdi mellem 1 og 30 dage. Anbefalet: 3 dage", + "Valore di mercato attuale (diverso dal prezzo di acquisto)": "Aktuel markedsværdi (forskellig fra købsprisen)", + "Valore e Condizione": "Værdi og tilstand", + "Valore non valido": "Ugyldig værdi", + "Valutazione": "Bedømmelse", + "Valutazione *": "Bedømmelse *", + "Valutazione non valida (1-5 stelle)": "Ugyldig bedømmelse (1-5 stjerner)", + "Variabili disponibili:": "Tilgængelige variabler:", + "Vecchio": "Gammel", + "Vedi": "Se", + "Vedi Dettagli": "Se detaljer", + "Vedi alternative": "Se alternativer", + "Vedi dettagli": "Se detaljer", + "Vedi istruzioni sotto per correggere manualmente.": "Se vejledningen nedenfor for manuel korrektur.", + "Vedi pagina pubblica": "Se offentlig side", + "Vedi tutte le notifiche": "Se alle meddelelser", + "Vedi tutti": "Se alle", + "Vedi tutti gli eventi": "Se alle arrangementer", + "Vedi tutti i risultati": "Se alle resultater", + "Verifica Leggibilità": "Tjek læsbarhed", + "Verifica che il database sia accessibile e configurato correttamente nel file .env": "Kontroller, at databasen er tilgængelig og korrekt konfigureret i .env-filen", + "Verifica che le credenziali del database nel file .env siano corrette": "Kontroller, at databaselegitimationsoplysningerne i .env-filen er korrekte", + "Verifica coerenza e integrità del database": "Kontroller databasekonsistens og -integritet", + "Verifica completata OK": "Kontrol fuldført OK", + "Verifica i permessi di esecuzione: chmod +x cron/automatic-notifications.php": "Kontroller udførelsestilladelser: chmod +x cron/automatic-notifications.php", + "Verifica in corso...": "Kontrollerer...", + "Verifica installazione...": "Kontrollerer installation...", + "Verifica reCAPTCHA fallita. Riprova.": "reCAPTCHA-kontrol mislykkedes. Prøv igen.", + "Verifica versioni": "Kontroller versioner", + "Verificato": "Verificeret", + "Verrà creato automaticamente un backup prima dell'aggiornamento.": "Der oprettes automatisk en backup før opdatering.", + "Verrà creato automaticamente un backup prima dell'installazione": "Der oprettes automatisk en backup før installation", + "Verrà creato un backup completo del database.": "Der oprettes en komplet databasebackup.", + "Verrà installato il pacchetto:": "Følgende pakke installeres:", + "Versione": "Version", + "Versione Installata": "Installeret version", + "Versione Installer:": "Installer-version:", + "Versione SRU": "SRU-version", + "Versione non specificata": "Version ikke angivet", + "Versione non trovata": "Version ikke fundet", + "Versione:": "Version:", + "Via Roma 123, 00100 Roma RM, Italia": "Musterstraße 123, 10115 Berlin, Tyskland", + "Via, numero civico, città, CAP": "Vej, husnummer, by, postnummer", + "Via, numero...": "Gade, nummer...", + "Video": "Video", + "Video (vm)": "Video (vm)", + "Video tutorial": "Videovejledning", + "Vinile": "Vinyl", + "Visibile": "Synlig", + "Visibile pubblicamente sulla pagina contatti": "Offentligt synlig på kontaktsiden", + "Visibilita": "Synlighed", + "Visibilità": "Synlighed", + "Visibilità Sezione Eventi": "Synlighed for arrangementsafsnit", + "Visibilità aggiornata!": "Synlighed opdateret!", + "Visibilità nel Frontend": "Synlighed i frontend", + "Visita il sito ufficiale": "Besøg det officielle websted", + "Vista griglia": "Gittervisning", + "Vista tabella": "Tabelvisning", + "Visualizza": "Vis", + "Visualizza Libro": "Vis bog", + "Visualizza Tutte le Categorie": "Vis alle kategorier", + "Visualizza Tutto il Catalogo": "Vis hele kataloget", + "Visualizza dettagli": "Vis detaljer", + "Visualizza dettagli libro": "Vis bogdetaljer", + "Visualizza e esporta l'elenco dei libri per posizione fisica": "Vis og eksporter listen over bøger efter fysisk placering", + "Visualizza e gestisci tutti i prestiti della biblioteca": "Vis og administrer alle bibliotekets lån", + "Visualizza la cronologia degli import CSV e LibraryThing con report errori dettagliati": "Se historikken for CSV- og LibraryThing-importer med detaljerede fejlrapporter", + "Visualizza pagina live": "Vis liveside", + "Visualizzatore PDF": "PDF-visningsprogram", + "Visualizzazione da _START_ a _END_ di _TOTAL_ libri": "Viser _START_ til _END_ af _TOTAL_ bøger", + "Visualizzazione gerarchica di generi e sottogeneri": "Hierarkisk visning af genrer og undergenrer", + "Voci totali": "Poster i alt", + "Volume aggiunto": "Bind tilføjet", + "Volume rimosso": "Bind fjernet", + "Volumi": "Bind", + "Volumi di quest'opera": "Bind af dette værk", + "Vuoi aggiornare il libro \"${title}\"?": "Vil du opdatere bogen \"${title}\"?", + "Vuoi aggiornare il libro \"%s\"?": "Vil du opdatere bogen \"%s\"?", + "Vuoi aggiornare lo stato di questa copia?": "Vil du opdatere status for dette eksemplar?", + "Vuoi approvare questa recensione e renderla visibile sul sito?": "Vil du godkende denne anmeldelse og gøre den synlig på websitet?", + "Vuoi attivare questo plugin?": "Vil du aktivere dette plugin?", + "Vuoi aumentare il numero di copie di questo libro?": "Vil du øge antallet af eksemplarer af denne bog?", + "Vuoi correggere automaticamente i problemi di integrità rilevati?": "Vil du automatisk rette de registrerede integritetsproblemer?", + "Vuoi creare gli indici mancanti? Questa operazione migliorerà le performance del database.": "Vil du oprette de manglende indekser? Denne handling vil forbedre databasens ydeevne.", + "Vuoi creare le tabelle di sistema mancanti? Queste sono necessarie per il sistema di aggiornamento.": "Vil du oprette de manglende systemtabeller? Disse er nødvendige for opdateringssystemet.", + "Vuoi disattivare questo plugin?": "Vil du deaktivere dette plugin?", + "Vuoi disconnettere questo dispositivo?": "Vil du afbryde forbindelsen til denne enhed?", + "Vuoi disconnettere tutti i dispositivi? Dovrai effettuare nuovamente l'accesso su ogni dispositivo.": "Vil du afbryde forbindelsen til alle enheder? Du skal logge ind igen på hver enhed.", + "Vuoi eliminare": "Vil du slette", + "Vuoi eliminare definitivamente questa recensione? Questa azione non può essere annullata.": "Vil du slette denne anmeldelse permanent? Denne handling kan ikke annulleres.", + "Vuoi eliminare questo elemento?": "Vil du slette dette element?", + "Vuoi eseguire la manutenzione completa del sistema? Questa operazione potrebbe richiedere alcuni minuti.": "Vil du udføre fuld systemvedligeholdelse? Denne handling kan tage et par minutter.", + "Vuoi impostare APP_CANONICAL_URL a:": "Vil du indstille APP_CANONICAL_URL til:", + "Vuoi procedere?": "Vil du fortsætte?", + "Vuoi rifiutare questa recensione? L'utente verrà avvisato dell'esito.": "Vil du afvise denne anmeldelse? Brugeren vil blive underrettet om resultatet.", + "WCAG AA Conforme": "WCAG AA-kompatibel", + "Website (Sito Web)": "Websted", + "Wishlist": "Ønskeliste", + "Wishlist disponibile": "Ønskeliste tilgængelig", + "Working...": "Arbejder...", + "Yes, fix": "Ja, ret", + "Yes, run": "Ja, kør", + "Z-Library": "Z-Library", + "Zona Pericolosa": "Farezone", + "acquisto": "køb", + "admin@biblioteca.it": "admin@biblioteca.it", + "aggiornato": "opdateret", + "agosto": "august", + "al": "til", + "altamente consigliato": "stærkt anbefalet", + "aprile": "april", + "attivata": "aktiveret", + "autori": "forfattere", + "autori. Questa azione non può essere annullata.": "forfattere. Denne handling kan ikke annulleres.", + "autori. Tutti i libri verranno assegnati all'autore risultante.": "forfattere. Alle bøger tildeles den resulterende forfatter.", + "biblioteca, prestito libri, catalogo online, scopri libri, prenotazioni": "bibliotek, bølgeudlån, onlinekatalog, opdag bøger, reservationer", + "bottoni nelle card": "knapper i kort", + "bottoni principali": "hovedknapper", + "chiavi": "nøgler", + "chiavi tradotte": "oversatte nøgler", + "classe principale": "hovedklasse", + "come nuovo autore": "som ny forfatter", + "come nuovo editore": "som nyt forlag", + "completamento": "fuldførelse", + "con successo": "med succes", + "copi": "eksemplar(er)", + "copia": "eksemplar", + "copie": "eksemplarer", + "crontab -e": "crontab -e", + "dal": "fra", + "danneggiato": "beskadiget", + "della lingua desiderata.": "af det ønskede sprog.", + "descrive cosa è cambiato in questa revisione del record": "beskriver, hvad der har ændret sig i denne revision af posten", + "deve iniziare con": "skal starte med", + "di": "af", + "di %s": "af %s", + "dicembre": "december", + "directory": "mapper", + "disattivata": "deaktiveret", + "disponibile": "tilgængelig", + "disponibili ora": "tilgængelig nu", + "donazione": "donation", + "dopo aver completato l'installazione.": "efter afslutning af installationen.", + "duplicato (saltato)": "duplikat (sprunget over)", + "e altri": "og andre", + "e scarica il file": "og hent filen", + "eBook": "e-bog", + "eBook (PDF/ePub)": "e-bog (PDF/ePub)", + "eBook caricato!": "e-bog uploadet!", + "eBook disponibile": "e-bog tilgængelig", + "editori": "forlag", + "editori. Questa azione non può essere annullata.": "forlag. Denne handling kan ikke annulleres.", + "editori. Tutti i libri verranno assegnati all'editore risultante.": "forlag. Alle bøger tildeles det resulterende forlag.", + "elementi": "elementer", + "elemento": "element", + "elimina la cartella": "slet mappen", + "errore di comunicazione con il server": "kommunikationsfejl med serveren", + "errori": "fejl", + "es. \"15×10 cm\" o \"35mm\"": "f.eks. \"15×10 cm\" eller \"35mm\"", + "es. \"1888–1976\" o \"fl. 1920s\"": "f.eks. \"1888–1976\" eller \"fl. 1920'erne\"", + "es. 0.450": "f.eks. 0,450", + "es. 1234-5678": "f.eks. 1234-5678", + "es. 15": "f.eks. 15", + "es. 19.90": "f.eks. 19,90", + "es. 1900": "f.eks. 1900", + "es. 1923-1985": "f.eks. 1923-1985", + "es. 1950": "f.eks. 1950", + "es. 2020": "f.eks. 2020", + "es. 2024": "f.eks. 2024", + "es. 2025": "f.eks. 2025", + "es. 21x14 cm": "f.eks. 21x14 cm", + "es. 25.00": "f.eks. 25,00", + "es. 26 agosto 2025": "f.eks. 26. august 2025", + "es. 320": "f.eks. 320", + "es. 599.9, 004.6782, 641.5945": "f.eks. 599.9, 004.6782, 641.5945", + "es. 599.9, 004.6782, 641.5945, 599.1": "f.eks. 599.9, 004.6782, 641.5945, 599.1", + "es. 8842935786": "f.eks. 8842935786", + "es. 978-88-429-3578-0": "f.eks. 978-88-429-3578-0", + "es. 9788842935780": "f.eks. 9788842935780", + "es. 9788845292866": "f.eks. 9788845292866", + "es. Acquisto, Donazione, Prestito": "f.eks. Køb, donation, lån", + "es. Aggiornati i dati di estensione dopo inventario 2026": "f.eks. Omfangsdata opdateret efter 2026-inventar", + "es. Amazon, Libreria XYZ": "f.eks. Amazon, Boghandel XYZ", + "es. Biblioteca Civica": "f.eks. Folkebibliotek", + "es. Calvino, Italo": "f.eks. Calvino, Italo", + "es. Ciclo 1 - Aldebaran": "f.eks. Cyklus 1 - Aldebaran", + "es. Copertina rigida, Brossura": "f.eks. Hardcover, paperback", + "es. DK5": "f.eks. DK5", + "es. English, Italian": "f.eks. Engelsk, italiensk", + "es. Fairy Tail": "f.eks. Fairy Tail", + "es. Fairy Tail: 100 Years Quest": "f.eks. Fairy Tail: 100 Years Quest", + "es. Fantasy contemporaneo": "f.eks. Samtidsofantasy", + "es. Gianni De Conno": "f.eks. Gianni De Conno", + "es. Hardcover, 500 pages": "f.eks. Hardcover, 500 sider", + "es. Harry Potter": "f.eks. Harry Potter", + "es. History & geography > History of Asia > ...": "f.eks. Historie & geografi > Asiens historie > ...", + "es. I Classici": "f.eks. Klassikerne", + "es. I mondi di Aldebaran": "f.eks. Aldebarans verdener", + "es. INV-2024-001": "f.eks. INV-2024-001", + "es. IT-MI-001 o Fondo Rossi": "f.eks. IT-MI-001 eller Rossi-samlingen", + "es. Integrazione Sito Web": "f.eks. Hjemmeside-integration", + "es. Italiano, Inglese": "f.eks. Italiensk, Engelsk", + "es. La morale anarchica": "f.eks. Den anarkistiske moral", + "es. Mario Rossi": "f.eks. Jens Hansen", + "es. Noir mediterraneo": "f.eks. Middelhavs-noir", + "es. PS3566.A686": "f.eks. PS3566.A686", + "es. Prima edizione": "f.eks. Første udgave", + "es. RD 9 ottobre 1861 n. 250": "f.eks. RD 9. oktober 1861 nr. 250", + "es. RMB": "f.eks. RMB", + "es. RSSMRA80A01H501U": "f.eks. RSSMRA80A01H501U", + "es. SBN Nazionale": "f.eks. Nationale SBN", + "es. Umberto Eco": "f.eks. Umberto Eco", + "es. Urban fantasy": "f.eks. Urban fantasy", + "es. VIAF, ISNI, ORCID": "f.eks. VIAF, ISNI, ORCID", + "es. bath.isbn": "f.eks. bath.isbn", + "es. noreply@biblioteca.local": "f.eks. noreply@bibliotek.local", + "es. romanzo, fantasy, avventura (separare con virgole)": "f.eks. roman, fantasy, eventyr (adskilles med komma)", + "es. santo, papa, di Sassonia": "f.eks. helgen, pave, af Sachsen", + "eventi": "Arrangementer", + "eventi, biblioteca, cultura": "arrangementer, bibliotek, kultur", + "facoltativo (32 hex)": "valgfri (32 hex)", + "fallite.": "fejlet.", + "fas fa-users": "fas fa-users", + "febbraio": "februar", + "fino al": "indtil", + "gennaio": "januar", + "giorni prima della scadenza": "dage før udløb", + "giugno": "juni", + "https://bsky.app/profile/tuoprofilo": "https://bsky.app/profile/dinprofil", + "https://esempio.com/cookie-policy": "https://eksempel.dk/cookie-politik", + "https://esempio.com/tecnologie-cookie": "https://eksempel.dk/cookie-teknologier", + "https://facebook.com/tuapagina": "https://facebook.com/dinside", + "https://instagram.com/tuoprofilo": "https://instagram.com/dinprofil", + "https://linkedin.com/company/tuaazienda": "https://linkedin.com/company/dinvirksomhed", + "https://twitter.com/tuoprofilo": "https://twitter.com/dinprofil", + "https://www.editore.com": "https://www.forlag.dk", + "https://www.esempio.com": "https://www.eksempel.dk", + "icone disponibili": "tilgængelige ikoner", + "in attesa": "afventer", + "in corso": "i gang", + "in_corso": "i_gang", + "in_ritardo": "overskredet", + "info@biblioteca.it": "info@bibliotek.dk", + "info@editore.com": "info@forlag.dk", + "inserito": "indsat", + "installazione inglese usa": "engelsk installation anvendt", + "kg": "kg", + "lascia vuoto se non disponibile": "lad stå tom, hvis ikke tilgængelig", + "libri": "bøger", + "libri aggiornati": "bøger opdateret", + "libri eliminati": "bøger slettet", + "libri trovati": "bøger fundet", + "libri. Questa azione non può essere annullata.": "bøger. Denne handling kan ikke anulleres.", + "libro": "bog", + "libro trovato": "bog fundet", + "linea": "linje", + "lingue": "sprog", + "lingue. Errori:": "sprog. Fejl:", + "link, accenti": "links, accenter", + "livello": "niveau", + "luglio": "juli", + "maggio": "maj", + "manutenzione": "vedligeholdelse", + "mario.rossi@email.it": "jens.hansen@email.dk", + "marzo": "marts", + "minuti fa": "for minutter siden", + "modifica": "rediger", + "nell'header. Non includere i tag": "i headeren. Inkluder ikke tags", + "nella directory dell'applicazione.": "i applikationsmappen.", + "nella nostra biblioteca.": "i vores bibliotek.", + "nella root del progetto impedisce qualsiasi accesso non autorizzato.": "i projektets rodmappe forhindrer al uautoriseret adgang.", + "nessuna": "ingen", + "nessuno": "ingen", + "non può contenere spazi": "må ikke indeholde mellemrum", + "non può essere vuota": "må ikke være tom", + "novembre": "november", + "o multipli separati da |": "eller flere adskilt af |", + "o multipli: Engels;Marx": "eller flere: Engels;Marx", + "occorrenze": "forekomster", + "opzionale": "valgfri", + "opzionali": "valgfrie", + "ordine:": "rækkefølge:", + "ore fa": "for timer siden", + "ottobre": "oktober", + "pagina": "side", + "pagine": "sider", + "per": "for", + "per conformità GDPR.": "for GDPR-overholdelse.", + "per evitare blocchi (delay di 3 secondi tra ogni richiesta).": "for at undgå blokeringer (3 sekunders forsinkelse mellem hver forespørgsel).", + "per il giorno": "for dagen", + "per pagina": "pr. side", + "perso": "tabt", + "poi": "derefter", + "preferiti": "favoritter", + "premi Invio per crearne uno nuovo.": "tryk på Enter for at oprette en ny.", + "prenotato": "reserveret", + "prenotazione attiva": "aktiv reservation", + "prenotazioni": "reservationer", + "prenotazioni attive": "aktive reservationer", + "prestato": "udlånt", + "prestiti attivi": "aktive udlån", + "prestiti passati": "tidligere udlån", + "prestiti totali": "udlån i alt", + "prestito attivo": "aktivt udlån", + "prestito passato": "tidligere udlån", + "preview": "eksempel", + "prima di procedere.": "før du fortsætter.", + "pseudonimi, varianti storiche": "pseudonymer, historiske varianter", + "recensione": "anmeldelse", + "recensioni": "anmeldelser", + "referente@editore.com": "kontakt@forlag.dk", + "restituito": "afleveret", + "richiesta in sospeso": "afventende anmodning", + "richieste in sospeso": "afventende anmodninger", + "risultati": "resultater", + "risultati per": "resultater for", + "risultato": "resultat", + "ruolo:": "rolle:", + "saltato": "sprunget over", + "scollega": "afbryd", + "secondi (min: 5, max: 60)": "sekunder (min: 5, maks: 60)", + "seleziona": "gennemsøg", + "seleziona file": "vælg fil", + "selezionati": "valgte", + "sessioni attive": "aktive sessioner", + "settembre": "september", + "sfoglia": "gennemsøg", + "smtp.example.com": "smtp.example.com", + "sottogeneri": "undergenrer", + "sottogeneri spostati": "undergenrer flyttet", + "stella": "stjerne", + "stelle": "stjerner", + "sul server tramite SSH.": "på serveren via SSH.", + "titoli": "titler", + "trad.": "overs.", + "trovati %d record archivistici e %d authority record. Nessuna riga è stata inserita.": "fandt %d arkivposter og %d autoritetsposter. Ingen rækker blev indsat.", + "trovati %d record. Nessuna riga è stata inserita. Deseleziona 'Dry-run' e ripeti per procedere con l'insert.": "fandt %d poster. Ingen rækker blev indsat. Fjern markeringen i 'Testkørsel' og gentag for at fortsætte med indsættelsen.", + "utente@example.com": "bruger@eksempel.dk", + "utenti": "brugere", + "verranno automaticamente selezionati.": "vil automatisk blive valgt.", + "visualizzazione per copia": "visning efter eksemplar", + "volumi": "bind", + "È uno standard emergente (llmstxt.org) che fornisce ai motori AI un sommario strutturato del sito in formato Markdown. Quando attivo, il file viene generato dinamicamente con le statistiche della biblioteca, le pagine pubbliche e le informazioni API.": "Det er en kommende standard (llmstxt.org), der giver AI-motorer et struktureret resumé af websitet i Markdown-format. Når den er aktiv, genereres filen dynamisk med biblioteksstatistikker, offentlige sider og API-information.", + "Български (BG)": "Bulgarsk (BG)", + "עברית (HE)": "Hebraisk (HE)", + "– Nessuno –": "– Ingen –", + "— Nessuno (genere principale) —": "— Ingen (hovedgenre) —", + "— Nessuno —": "— Ingen —", + "— Seleziona —": "— Vælg —", + "••••••••": "••••••••", + "⚙️ Comportamento Automatico: Se inserisci codice in \"JavaScript Analitici\" o \"JavaScript Marketing\", i rispettivi toggle in Impostazioni Privacy verranno automaticamente selezionati.": "⚙️ Automatisk adfærd: Hvis du indsat kode i \"Analytics JavaScript\" eller \"Marketing JavaScript\", vil de respektive tilvalg i Privatlivsindstillinger automatisk blive markeret.", + "⚠️ AZIONE RICHIESTA: Installazione Dipendenze PHP": "⚠️ HANDLING PÅKRAVET: Installation af PHP-afhængigheder", + "⚠️ Privacy: Le mappe esterne vengono caricate solo se l'utente accetta i cookie Analytics.": "⚠️ Privatliv: Eksterne kort indlæses kun, hvis brugeren accepterer Analytics-cookies.", + "✅ Dipendenze PHP installate correttamente": "✅ PHP-afhængigheder installeret korrekt", + "✓ Aggiorna duplicati (ISBN)": "✓ Opdater dubletter (ISBN)", + "✓ Connessione riuscita! Database è vuoto e pronto per l'installazione.": "✓ Forbindelse lykkedes! Databasen er tom og klar til installation.", + "✓ Crea autori mancanti": "✓ Opret manglende forfattere", + "✓ Crea editori mancanti": "✓ Opret manglende forlag", + "✓ Mappatura automatica campi": "✓ Automatisk feltmapping", + "✓ Report errori": "✓ Fejlrapport", + "✓ Scraping copertine/dati": "✓ Scraping af omslag/data", + "✓ Validazione dati": "✓ Datavalidering", + "❌ Errore di comunicazione con il server": "Kommunikationsfejl med serveren", + "💡 Non hai accesso SSH?": "💡 Har du ikke SSH-adgang?", + "📋 Importante: Devi elencare manualmente i cookie tracciati da questi script nella Pagina Cookie per conformità GDPR.": "📋 Vigtigt: Du skal manuelt liste de cookies, der spores af disse scripts, på Cookie-siden for at overholde GDPR.", + "📋 Istruzioni SSH (Click per espandere/chiudere)": "📋 SSH-vejledning (Klik for at udvide/lukke)", + "🔒 Sicurezza Importante": "🔒 Vigtig sikkerhed", + "Rimuovi soggetto": "Fjern emne", + "Inserisci prima il nome dell'autore": "Indtast forfatternavnet først", + "es. 24604287": "f.eks. 24604287", + "VIAF Work ID": "VIAF Work ID", + "Wikidata ID": "Wikidata ID", + "Impossibile preparare il file LibraryThing": "Kan ikke klargøre LibraryThing-filen", + "Errore di sistema durante l'importazione": "Systemfejl under import", + "es. Q12345": "f.eks. Q12345", + "Durata sessione": "Sessionsvarighed", + "30 minuti": "30 minutter", + "1 ora": "1 time", + "2 ore": "2 timer", + "3 ore": "3 timer", + "6 ore": "6 timer", + "12 ore": "12 timer", + "24 ore": "24 timer", + "Tempo di inattività prima che la sessione scada. Aumentalo se durante catalogazioni lunghe ricevi l'errore «sessione scaduta» al salvataggio. Predefinito: 3 ore.": "Inaktivitetstid før sessionen udløber. Øg den, hvis du under langvarig katalogisering modtager fejlen \"session udløbet\" ved gemning. Standard: 3 timer.", + "Quando aumentarla:": "Hvornår den skal øges:", + "Predefinito:": "Standard:", + "Quanto tempo un utente resta connesso prima che la sessione scada per inattività.": "Hvor længe en bruger forbliver logget ind, før sessionen udløber på grund af inaktivitet.", + "Aumenta questo valore se durante catalogazioni lunghe (ad esempio digitando un indice esteso nelle note) ricevi l'errore «sessione scaduta» al salvataggio e perdi i dati inseriti. Il valore predefinito è 3 ore.": "Øg denne værdi, hvis du under langvarige katalogiseringssessioner (f.eks. ved indtastning af et omfattende indholdsfortegnelse i noterne) modtager fejlen \"session udløbet\" ved gemning og mister de indtastede data. Standardværdien er 3 timer.", + "Durata predefinita prestito": "Standard udlånsvarighed", + "Numero di giorni di default assegnati a ogni prestito quando la data di scadenza non viene specificata manualmente.": "Standardantal dage tildelt hvert udlån, når udløbsdatoen ikke angives manuelt.", + "Questo valore viene usato nelle richieste di prestito utente, nella creazione admin e nell'approvazione delle prenotazioni.": "Denne værdi bruges i brugerens udlånsforespørgsler, admin-oprettelse og godkendelse af reservationer.", + "Durata predefinita prestito (giorni)": "Standard udlånsvarighed (dage)", + "giorni": "dage", + "Valore compreso tra 1 e 365 giorni. Predefinito: 30 giorni": "Værdi mellem 1 og 365 dage. Standard: 30 dage", + "Giorni per il ritiro": "Afhentningsdage", + "Numero di giorni che l'utente ha a disposizione per ritirare un prestito approvato prima che scada automaticamente.": "Antal dage brugeren har til at afhente et godkendt udlån, før det automatisk udløber.", + "Giorni per il ritiro del prestito approvato": "Dage til afhentning af det godkendte udlån", + "Valore compreso tra 1 e 30 giorni. Predefinito: 3 giorni": "Værdi mellem 1 og 30 dage. Standard: 3 dage", + "Rinnovi massimi": "Maksimal fornyelse", + "Numero massimo di volte che un utente può rinnovare lo stesso prestito.": "Maksimalt antal gange en bruger kan forny det samme udlån.", + "Numero massimo di rinnovi per prestito": "Maksimalt antal fornyelser pr. udlån", + "rinnovi": "fornyelser", + "Inserisci 0 per disabilitare i rinnovi. Predefinito: 3": "Indtast 0 for at deaktivere fornyelser. Standard: 3", + "Limite prestiti attivi per utente": "Grænse for aktive udlån pr. bruger", + "Numero massimo di prestiti contemporaneamente attivi per ogni utente. Impostare 0 per nessun limite.": "Maksimalt antal samtidige aktive udlån pr. bruger. Sæt til 0 for ingen grænse.", + "Prestiti conteggiati:": "Medregnede udlån:", + "prenotato, da_ritirare, in_corso, in_ritardo.": "reserveret, til_afhentning, i_gang, overskredet.", + "Numero massimo di prestiti attivi per utente": "Maksimalt antal aktive udlån pr. bruger", + "prestiti (0 = nessun limite)": "udlån (0 = ingen grænse)", + "Predefinito: 0 (nessun limite)": "Standard: 0 (ingen grænse)", + "Salva impostazioni prestiti": "Gem udlånsindstillinger", + "Impostazioni prestiti aggiornate correttamente.": "Udlånsindstillinger opdateret korrekt.", + "Hai raggiunto il numero massimo di prestiti attivi consentiti": "Du har nået det maksimale antal tilladte aktive udlån", + "Capienza prenotazioni/prestiti superata": "Kapacitet for reservationer/udlån overskredet", + "Richiesta duplicata utente/libro": "Dubleret bruger-/boganmodning", + "Libro non trovato o non più disponibile.": "Bogen blev ikke fundet eller er ikke længere tilgængelig.", + "L'utente ha raggiunto il numero massimo di prestiti attivi consentiti. Restituisci un libro prima di crearne un altro.": "Brugeren har nået det maksimale antal aktive udlån. Aflever en bog, før du opretter en anden.", + "Il prestito non è più attivo.": "Udlånet er ikke længere aktivt.", + "Impossibile rinnovare: il prestito è in ritardo.": "Kan ikke forny: Udlånet er overskredet.", + "Impossibile rinnovare: il prestito non è ancora stato ritirato.": "Kan ikke forny: Udlånet er endnu ikke afhentet.", + "Numero massimo di rinnovi raggiunto per questo prestito.": "Maksimalt antal fornyelser nået for dette udlån.", + "Impossibile rinnovare: un altro prestito o prenotazione occupa il periodo richiesto.": "Kan ikke forny: Et andet udlån eller reservation optager den ønskede periode.", + "Operazione non riuscita. Riprova.": "Handling mislykkedes. Prøv igen.", + "Data di scadenza della prenotazione (default: +30 giorni)": "Udløbsdato for reservation (standard: +30 dage)", + "Modalità privata": "Privat tilstand", + "Limita l'accesso all'intero sito ai soli utenti registrati: i visitatori non autenticati vengono reindirizzati alla pagina di accesso": "Begrænser adgangen til hele websitet til kun registrerede brugere: ikke-godkendte besøgende omdirigeres til login-siden", + "Questo sito è riservato agli utenti registrati. Accedi per continuare.": "Dette website er forbeholdt registrerede brugere. Log ind for at fortsætte.", + "Accesso al sito": "Adgang til websitet", + "Controlla chi può consultare il sito pubblico": "Styr hvem der kan se det offentlige website", + "Con la modalità privata attiva, l'area amministrativa, l'accesso, la registrazione e gli asset restano sempre raggiungibili; tutto il resto richiede l'autenticazione.": "Når privat tilstand er aktiv, forbliver administrationsområdet, login, registrering og aktiver altid tilgængelige; alt andet kræver godkendelse.", + "Codice mancante": "Manglende kode", + "Inserisci un codice ISBN o EAN per continuare.": "Indtast en ISBN- eller EAN-kode for at fortsætte.", + "Prima di ogni aggiornamento viene creato automaticamente un backup.": "Før hver opdatering oprettes der automatisk en backup.", + "Includi i file caricati nel backup pre-aggiornamento": "Inkluder uploadede filer i pre-opdateringsbackup", + "Contenuto del backup": "Backup-indhold", + "Completo (database + file caricati)": "Komplet (database + uploadede filer)", + "Solo database": "Kun database", + "Ripristina da file": "Gendan fra fil", + "Carica e Ripristina": "Upload og Gendan", + "Il ripristino sovrascrive i dati attuali. Verrà creato un backup di sicurezza prima.": "Gendannelse overskriver de aktuelle data. Der oprettes en sikkerhedskopi først.", + "DB + file": "DB + filer", + "Ripristinare da questo file?": "Gendan fra denne fil?", + "I dati attuali (database e file) verranno sovrascritti. Un backup di sicurezza verrà creato prima del ripristino.": "De aktuelle data (database og filer) vil blive overskrevet. En sikkerhedskopi oprettes før gendannelse.", + "Nessun file selezionato": "Ingen fil valgt", + "Ripristino in corso...": "Gendannelse i gang...", + "L'operazione può richiedere alcuni minuti. Non chiudere la pagina.": "Handlingen kan tage et par minutter. Luk ikke siden.", + "Ripristino completato": "Gendannelse gennemført", + "Backup di sicurezza creato:": "Sikkerhedskopi oprettet:", + "Operazione riservata agli amministratori": "Handling forbeholdt administratorer", + "Estensione ZipArchive non disponibile": "ZipArchive-udvidelse ikke tilgængelig", + "Impossibile creare il file di backup": "Kan ikke oprette backup-fil", + "Errore nella scrittura del backup": "Fejl ved skrivning af backup", + "Backup non valido per il ripristino": "Ugyldig backup til gendannelse", + "File di backup troppo grande": "Backup-fil for stor", + "Archivio di backup non valido": "Ugyldigt backup-arkiv", + "Impossibile salvare il file caricato": "Kan ikke gemme den uploadede fil", + "Impossibile creare il backup di sicurezza pre-ripristino": "Kan ikke oprette sikkerhedskopi før gendannelse", + "Impossibile aprire l'archivio di backup": "Kan ikke åbne backup-arkivet", + "Database mancante nel backup": "Manglende database i backup", + "Dump del database vuoto o illeggibile": "Databasedump tomt eller ulæseligt", + "Errore durante il ripristino del database": "Fejl under gendannelse af database", + "connessione al database non riuscita": "databaseforbindelse mislykkedes", + "Errore durante il ripristino dei file": "Fejl under gendannelse af filer", + "Errore durante il ripristino": "Fejl under gendannelse", + "Impossibile salvare l'impostazione": "Kan ikke gemme indstillingen", + "Il backup è corrotto (checksum del database non valido)": "Backuppen er korrupt (ugyldig database-checksum)", + "Ripristino parziale": "Delvis gendannelse", + "Il database è stato ripristinato ma il ripristino dei file è fallito. NON riprovare il ripristino: ripristina il backup di sicurezza solo se necessario.": "Databasen blev gendannet, men filgendannelsen mislykkedes. Forsøg IKKE at gendanne igen: Gendan kun sikkerhedskopien om nødvendigt.", + "Sono accettati solo file .zip.": "Kun .zip-filer accepteres.", + "File troppo grande": "Filen er for stor", + "Il file supera il limite di 2 GB.": "Filen overskrider grænsen på 2 GB.", + "Sono accettati solo file .zip fino a 2 GB.": "Kun .zip-filer op til 2 GB accepteres.", + "Ricarica la pagina": "Genindlæs siden", + "Formato legacy": "Legacy-format", + "Sola lettura": "Skrivebeskyttet", + "Il ripristino non è supportato per i backup in formato cartella; scarica il file per un ripristino manuale.": "Gendannelse understøttes ikke for mapperformat-backups; download filen for manuel gendannelse.", + "Upload in corso...": "Uploader...", + "la destinazione è un link simbolico": "destinationen er et symbolsk link", + "Impossibile attivare la modalità manutenzione per il ripristino": "Kan ikke aktivere vedligeholdelsestilstand for gendannelse", + "Tempo trascorso": "Medgået tid", + "Il server non ha risposto correttamente: l'operazione potrebbe essere ancora in corso o interrotta a metà. Non avviare subito un nuovo ripristino. Verifica la lista backup (potrebbe esserci un backup di sicurezza pre-ripristino) e i log del server.": "Serveren svarede ikke korrekt: Handlingen er muligvis stadig i gang eller afbrudt midt i. Start ikke en ny gendannelse med det samme. Tjek backuplisten (der kan være en sikkerhedskopi før gendannelse) og serverloggene.", + "Ripristina solo archivi creati da questa istanza o di cui ti fidi completamente: il contenuto del database verrà sostituito con quello dell'archivio.": "Gendan kun arkiver oprettet af denne instans eller som du stoler fuldstændigt på: Databasedataene vil blive erstattet med arkivets.", + "Archivio di backup non valido: dimensione decompressa eccessiva": "Ugyldigt backup-arkiv: udpakket størrelse for stor", + "Un ripristino o aggiornamento è già in corso. Riprova tra poco.": "En gendannelse eller opdatering er allerede i gang. Prøv igen om lidt.", + "Ripristino in corso. Riprova tra qualche minuto.": "Gendannelse i gang. Prøv igen om nogle minutter.", + "Backup troppo grande per l'importazione PHP: installa il client mysql o aumenta memory_limit": "Backup for stor til PHP-import: Installer mysql-klienten eller øg memory_limit", + "Foto e Collegamenti": "Foto & Links", + "Foto dell'autore": "Forfatterfoto", + "Foto autore": "Forfatterfoto", + "Carica un'immagine (PNG/JPG/WEBP/GIF, max 5MB) oppure incolla un URL qui sotto.": "Upload et billede (PNG/JPG/WEBP/GIF, maks. 5MB) eller indsæt en URL nedenfor.", + "https://www.esempio.com/foto.jpg": "https://www.eksempel.dk/foto.jpg", + "Rimuovi la foto attuale": "Fjern nuværende foto", + "Collegamenti e fonti": "Links & kilder", + "Link a fonti, voci enciclopediche o siti rilevanti per l'autore.": "Links til kilder, opslagsværker eller relevante websites for forfatteren.", + "Etichetta (es. Wikipedia)": "Mærkat (f.eks. Wikipedia)", + "Aggiungi collegamento": "Tilføj link", + "Trascina qui la foto dell'autore o clicca per selezionare": "Træk forfatterfotoet hertil eller klik for at vælge", + "La foto supera la dimensione massima di 5 MB.": "Fotoet overskrider den maksimale størrelse på 5 MB.", + "Formato immagine non supportato. Usa PNG, JPG, WebP o GIF.": "Billedformat ikke understøttet. Brug PNG, JPG, WebP eller GIF.", + "Impossibile elaborare l'immagine caricata.": "Kan ikke behandle det uploadede billede.", + "Anteprima foto autore": "Eksempel på forfatterfoto", + "Nessuna disponibilità nel periodo": "Ingen tilgængelighed i perioden", + "Tutte le copie sono già impegnate (prestiti o prenotazioni) per il periodo richiesto. Scegli un altro periodo.": "Alle eksemplarer er allerede optaget (udlån eller reservationer) i den ønskede periode. Vælg en anden periode.", + "La copia assegnata non è prestabile. Riassegna la copia o annulla il ritiro.": "Det tildelte eksemplar kan ikke udlånes. Tildel eksemplaret igen eller annuller afhentningen.", + "Il prestito associato non è più chiudibile. Ricarica la pagina.": "Det tilknyttede udlån kan ikke længere afsluttes. Genindlæs siden.", + "Impossibile eliminare una copia attualmente impegnata in un prestito o una prenotazione.": "Kan ikke slette et eksemplar, der i øjeblikket er optaget af et udlån eller en reservation.", + "Impossibile modificare una copia attualmente impegnata in un prestito o una prenotazione. Prima liberala (chiudi o annulla il prestito) oppure impostala su \"Disponibile\".": "Kan ikke ændre et eksemplar, der i øjeblikket er optaget af et udlån eller en reservation. Frigiv det først (afslut eller annuller udlånet) eller indstil det til \"Tilgængelig\".", + "La release non contiene un pacchetto installabile verificabile (pinakes-*.zip). Aggiornamento annullato.": "Udgivelsen indeholder ikke en verficerbar installerbar pakke (pinakes-*.zip). Opdatering annulleret.", + "Verifica di integrità impossibile: la release non pubblica un digest sha256 valido. Installazione di un pacchetto non verificato rifiutata.": "Integritetskontrol umulig: Udgivelsen offentliggør ikke et gyldigt sha256-digest. Installation af en ikke-verificeret pakke afvist.", + "Patch post-installazione non verificabile.": "Post-installationspatch kan ikke verificeres.", + "Patch post-installazione presente ma non verificabile: patch non applicata, aggiornamento mantenuto.": "Post-installationspatch til stede, men kan ikke verificeres: Patch ikke anvendt, opdatering bevaret.", + "Patch pre-aggiornamento non verificabile.": "Pre-opdateringspatch kan ikke verificeres.", + "Patch pre-aggiornamento presente ma non verificabile: aggiornamento interrotto per sicurezza.": "Pre-opdateringspatch til stede, men kan ikke verificeres: Opdatering afbrudt af sikkerhedsmæssige årsager.", + "Risposta GitHub inattesa (redirect) su una richiesta autenticata.": "Uventet GitHub-svar (omdirigering) på en godkendt forespørgsel.", + "Verifica di integrità fallita: l'archivio scaricato non corrisponde al checksum atteso.": "Integritetskontrol mislykkedes: Det downloadede arkiv matcher ikke den forventede checksum.", + "Errore di Sicurezza": "Sikkerhedsfejl", + "La verifica di sicurezza del modulo non è riuscita. Ricarica la pagina e invia di nuovo: il tuo accesso è ancora valido, non devi rifare il login.": "Formularers sikkerhedskontrol mislykkedes. Genindlæs siden og indsend igen — din adgang er stadig gyldig, du behøver ikke logge ind igen.", + "Torna indietro e riprova": "Gå tilbage og prøv igen", + "Questo controllo protegge i tuoi moduli da invii non autorizzati.": "Denne kontrol beskytter dine formularer mod uautoriserede indsendelser.", + "Provider push non supportato.": "Push-udbyder ikke understøttet.", + "Endpoint UnifiedPush non valido (richiesto HTTPS verso un host pubblico).": "Ugyldig UnifiedPush-endpoint (kræver HTTPS til en offentlig vært).", + "Token di registrazione FCM mancante.": "Manglende FCM-registreringstoken.", + "Dispositivo registrato per le notifiche push.": "Enhed registreret til push-notifikationer.", + "Notifiche push disattivate per questo dispositivo.": "Push-notifikationer deaktiveret for denne enhed.", + "Preferenze non disponibili.": "Præferencer ikke tilgængelige.", + "Orario silenzioso non valido (formato HH:MM).": "Ugyldig stille time (HH:MM-format).", + "Preferenze aggiornate.": "Præferencer opdateret.", + "Libro di nuovo disponibile": "Bog tilgængelig igen", + "\"%s\" è di nuovo disponibile per il prestito.": "„%s“ kan lånes igen.", + "Notifiche push": "Push-notifikationer", + "Facoltative. Senza credenziali l'app riceve comunque le notifiche tramite il feed in-app (polling). Le notifiche push non bloccano mai il funzionamento.": "Valgfrit. Uden legitimationsoplysninger modtager appen stadig notifikationer via in-app-feedet (polling). Push-notifikationer blokerer aldrig driften.", + "Provider push": "Push-udbyder", + "UnifiedPush (consigliato, nessuna credenziale centrale)": "UnifiedPush (anbefalet, ingen centrale legitimationsoplysninger)", + "Firebase Cloud Messaging (sperimentale)": "Firebase Cloud Messaging (eksperimentel)", + "Soggetto VAPID (UnifiedPush, facoltativo)": "VAPID-emne (UnifiedPush, valgfri)", + "Credenziali FCM (JSON service-account, facoltative)": "FCM-legitimationsoplysninger (servicekonto-JSON, valgfri)", + "Lascia vuoto per usare solo UnifiedPush / feed in-app.": "Lad stå tom for kun at bruge UnifiedPush / in-app-feed.", + "Errore: plugin Mobile API non caricato correttamente.": "Fejl: Mobile API-plugin ikke indlæst korrekt.", + "Dispositivo revocato.": "Enhed tilbagekaldt.", + "Impossibile revocare il dispositivo.": "Kan ikke tilbagekalde enheden.", + "Impostazioni salvate correttamente.": "Indstillinger gemt korrekt.", + "Mobile API": "Mobil API", + "Abilita l'accesso dell'app mobile a questa biblioteca tramite l'API REST /api/v1.": "Aktiver mobilappens adgang til dette bibliotek via REST API /api/v1.", + "Accesso app mobile": "Mobilapp-adgang", + "Abilita accesso app mobile": "Aktiver mobilapp-adgang", + "Quando disattivato, l'app non può autenticarsi. L'endpoint /api/v1/health e la documentazione /api/v1/docs restano sempre raggiungibili.": "Når deaktiveret, kan appen ikke godkendes. Endpointet /api/v1/health og dokumentationen /api/v1/docs forbliver altid tilgængelige.", + "API attiva. Endpoint:": "API aktiv. Endpoint:", + "L'API richiede HTTPS (eccetto loopback in sviluppo).": "API'en kræver HTTPS (undtagen loopback under udvikling).", + "Salva impostazioni": "Gem indstillinger", + "Dispositivi": "Enheder", + "Dispositivi attivi": "Aktive enheder", + "I token revocati vengono invalidati immediatamente.": "Tilbagekaldte tokens ugyldiggøres med det samme.", + "Nessun dispositivo attivo.": "Ingen aktive enheder.", + "Dispositivo": "Enhed", + "Piattaforma": "Platform", + "Revoca": "Tilbagekald", + "Revocare dispositivo?": "Vil du tilbagekalde enheden?", + "L'app non potrà più usare questo token. L'utente dovrà effettuare di nuovo il login.": "Appen kan ikke længere bruge denne token. Brugeren skal logge ind igen.", + "Prestito in scadenza": "Udlån udløber snart", + "Il prestito di \"%s\" scade il %s.": "Udlånet af „%s“ udløber den %s.", + "Il prestito di \"%s\" è scaduto il %s.": "Udlånet af „%s“ udløb den %s.", + "Prenotazione pronta": "Reservation klar", + "\"%s\" è pronto per il ritiro.": "„%s“ er klar til afhentning.", + "L'accesso da app non è abilitato su questa istanza.": "App-adgang er ikke aktiveret på denne instans.", + "Token di autenticazione mancante o non valido.": "Manglende eller ugyldig godkendelsestoken.", + "Errore di autenticazione.": "Godkendelsesfejl.", + "Token non valido, revocato o scaduto.": "Token ugyldig, tilbagekaldt eller udløbet.", + "Account non disponibile.": "Konto ikke tilgængelig.", + "Hai superato il limite di richieste. Riprova più tardi.": "Du har overskredet forespørgselsgrænsen. Prøv igen senere.", + "Questa API richiede una connessione HTTPS.": "Denne API kræver en HTTPS-forbindelse.", + "Prestiti non disponibili.": "Udlån ikke tilgængelige.", + "Prenotazioni non disponibili.": "Reservationer ikke tilgængelige.", + "Identificativo libro non valido.": "Ugyldig bog-id.", + "Data richiesta non valida.": "Ugyldig anmodet dato.", + "La data richiesta è nel passato.": "Den anmodede dato er i fortiden.", + "Richiesta di prestito inviata. In attesa di approvazione.": "Udlånsforespørgsel sendt. Afventer godkendelse.", + "Prenotazione registrata.": "Reservation registreret.", + "Richiesta non disponibile.": "Anmodning ikke tilgængelig.", + "Prenotazione non trovata.": "Reservation ikke fundet.", + "Prenotazione annullata.": "Reservation annulleret.", + "Impossibile annullare la prenotazione.": "Kan ikke annullere reservationen.", + "Operazione non disponibile.": "Handling ikke tilgængelig.", + "Preferiti non disponibili.": "Favoritter ikke tilgængelige.", + "Aggiunto ai preferiti.": "Tilføjet til favoritter.", + "Elemento non trovato nei preferiti.": "Element ikke fundet i favoritter.", + "Rimosso dai preferiti.": "Fjernet fra favoritter.", + "Profilo non disponibile.": "Profil ikke tilgængelig.", + "Indirizzo email non valido.": "Ugyldig e-mailadresse.", + "Messaggio inviato. Ti risponderemo al più presto.": "Besked sendt. Vi svarer hurtigst muligt.", + "Invio messaggio non disponibile.": "Beskedsending ikke tilgængelig.", + "Notifiche non disponibili.": "Notifikationer ikke tilgængelige.", + "Non autenticato.": "Ikke godkendt.", + "Hai già una richiesta attiva per questo libro.": "Du har allerede en aktiv forespørgsel på denne bog.", + "Il libro non è disponibile per il periodo richiesto.": "Bogen er ikke tilgængelig i den ønskede periode.", + "Hai raggiunto il numero massimo di prestiti attivi.": "Du har nået det maksimale antal aktive udlån.", + "Richiesta non riuscita.": "Forespørgsel mislykkedes.", + "La password deve avere almeno 8 caratteri.": "Adgangskoden skal være på mindst 8 tegn.", + "Impossibile aggiornare la password.": "Kan ikke opdatere adgangskoden.", + "Devi accettare la privacy policy.": "Du skal acceptere privatlivspolitikken.", + "Verifica anti-spam non superata.": "Anti-spam-kontrol ikke bestået.", + "Invio messaggio non riuscito.": "Beskedsending mislykkedes.", + "Ricerca non disponibile.": "Søgning ikke tilgængelig.", + "Dettaglio non disponibile.": "Detaljer ikke tilgængelige.", + "Generi non disponibili.": "Genrer ikke tilgængelige.", + "Email o password non validi.": "Ugyldig e-mail eller adgangskode.", + "Errore del server.": "Serverfejl.", + "Devi confermare la tua email prima di accedere.": "Du skal bekræfte din e-mail, før du logger ind.", + "Il tuo account non è ancora attivo.": "Din konto er endnu ikke aktiv.", + "La registrazione non è abilitata su questa istanza.": "Registrering er ikke aktiveret på denne instans.", + "Nome o cognome troppo lunghi.": "For- eller efternavn for langt.", + "La password deve avere tra 8 e 72 caratteri.": "Adgangskoden skal være mellem 8 og 72 tegn.", + "Esiste già un account con questa email.": "Der findes allerede en konto med denne e-mail.", + "Errore durante la registrazione.": "Fejl under registrering.", + "Registrazione completata. Controlla la tua email per confermare l'account.": "Registrering fuldført. Tjek din e-mail for at bekræfte kontoen.", + "Se l'indirizzo è registrato, riceverai un'email con le istruzioni.": "Hvis adressen er registreret, modtager du en e-mail med instruktioner.", + "Troppe richieste. Riprova più tardi.": "For mange forespørgsler. Prøv igen senere.", + "Disconnesso.": "Logget ud.", + "Dispositivo non trovato.": "Enhed ikke fundet.", + "Impossibile recuperare lo stato del servizio.": "Kan ikke hente tjenestens status.", + "Il file caricato supera il limite di caricamento del server (post_max_size = %s). Aumenta post_max_size e upload_max_filesize nella configurazione PHP del server e riprova. Su hosting con php-fpm o CGI le direttive php_value in .htaccess vengono ignorate: modifica php.ini o la configurazione del pool php-fpm.": "Den uploadede fil overskrider serverens uploadgrænse (post_max_size = %s). Øg post_max_size og upload_max_filesize i serverens PHP-konfiguration og prøv igen. På hosting med php-fpm eller CGI ignoreres php_value-direktiver i .htaccess: Rediger php.ini eller php-fpm-pool-konfigurationen.", + "Il file caricato supera il limite di upload del server (upload_max_filesize = %s). Aumenta upload_max_filesize e post_max_size nella configurazione PHP del server e riprova. Su hosting con php-fpm o CGI le direttive php_value in .htaccess vengono ignorate: modifica php.ini o la configurazione del pool php-fpm.": "Den uploadede fil overskrider serverens uploadgrænse (upload_max_filesize = %s). Øg upload_max_filesize og post_max_size i serverens PHP-konfiguration og prøv igen. På hosting med php-fpm eller CGI ignoreres php_value-direktiver i .htaccess: Rediger php.ini eller php-fpm-pool-konfigurationen.", + "Digita almeno 2 lettere per cercare o creare": "Indtast mindst 2 bogstaver for at søge eller oprette", + "Invia questo URL a Google Search Console.": "Send denne URL til Google Search Console.", + "Percorso sul server (per cron/CLI) — non inviarlo a Google.": "Sti på serveren (til cron/CLI) — send den ikke til Google.", + "Utente non trovato": "Bruger ikke fundet", + "Utente sospeso: prestiti non consentiti": "Bruger suspenderet: udlån ikke tilladt", + "Tessera scaduta: rinnovala per richiedere prestiti": "Kort udløbet: Forny det for at anmode om udlån", + "Utente non idoneo al prestito": "Bruger ikke berettiget til udlån", + "Prenotazione annullata": "Reservation annulleret", + "Inviata all'utente quando una prenotazione viene annullata dall'amministrazione.": "Sendes til brugeren, når en reservation annulleres af administrationen.", + "\"%s\" prestato a %s scade fra %d giorni": "\"%s\" udlånt til %s udløber om %d dage", + "\"%s\" prestato a %s scade oggi": "\"%s\" udlånt til %s udløber i dag", + "MaintenanceService claim cooldown fallito": "MaintenanceService krav om nedkøling mislykkedes", + "MaintenanceService errore recupero notifiche prenotazione": "MaintenanceService fejl ved hentning af reservationsnotifikationer", + "La data di inizio non può essere nel passato": "Startdatoen kan ikke være i fortiden", + "La data di fine non può precedere la data di inizio": "Slutdatoen kan ikke ligge før startdatoen", + "Il periodo richiesto supera la durata massima consentita di %d giorni": "Den anmodede periode overskrider den maksimale tilladte varighed på %d dage", + "Annullare questa richiesta di prestito?": "Vil du annullere denne udlånsforespørgsel?", + "Annulla richiesta": "Annuller forespørgsel", + "Annullare questo prestito programmato?": "Vil du annullere dette planlagte udlån?", + "Annulla prestito": "Annuller udlån", + "La finestra del prestito è già trascorsa: annulla il ritiro o modifica le date": "Udlånsvinduet er allerede udløbet: Annuller afhentningen eller rediger datoerne", + "Annullata dalla biblioteca": "Annulleret af biblioteket", + "Impossibile eliminare la copia: ha uno storico prestiti. Puoi metterla fuori circolazione cambiandone lo stato.": "Kan ikke slette eksemplaret: Det har en udlånshistorik. Du kan tage det ud af cirkulation ved at ændre dets status.", + "Annullamento effettuato correttamente.": "Annullering gennemført korrekt.", + "Elemento non trovato o non più annullabile: lo stato potrebbe essere cambiato nel frattempo.": "Element ikke fundet eller kan ikke længere annulleres: Status kan have ændret sig i mellemtiden.", + "Errore: la data di scadenza non può essere precedente alla data di prestito.": "Fejl: Udløbsdatoen kan ikke ligge før udlånsdatoen.", + "Il prestito è già chiuso: la modifica non è stata salvata.": "Udlånet er allerede lukket: Ændringen blev ikke gemt.", + "Prenotazione aggiornata correttamente.": "Reservation opdateret korrekt.", + "Prestito non trovato o non chiudibile.": "Udlån ikke fundet eller kan ikke afsluttes.", + "Si è verificato un errore. Riprova più tardi.": "Der opstod en fejl. Prøv igen senere.", + "Non sei idoneo al prestito: account sospeso o tessera scaduta.": "Du er ikke berettiget til udlån: Konto suspenderet eller kort udløbet.", + "Aggiornamento annullato prima di ogni modifica: il processo PHP non può scrivere in questi percorsi: %s. Correggi i permessi (proprietario/scrittura per l'utente del web server) e riprova, oppure esegui l'aggiornamento da riga di comando come proprietario dei file: php scripts/manual-upgrade.php ": "Opdatering annulleret før ændringer: PHP-processen kan ikke skrive til disse stier: %s. Ret rettighederne (ejer/skrivetilgang for webserverbrugeren) og prøv igen, eller udfør opdateringen fra kommandolinjen som filejer: php scripts/manual-upgrade.php ", + "Cartella radice": "Rodmappe", + "Cartella backup": "Backup-mappe", + "Cartella storage": "Lagringsmappe", + "Accedi per partecipare": "Log ind for at deltage", + "Accesso solo su invito": "Adgang kun efter invitation", + "Accetta l'invito": "Accepter invitation", + "Aggiorna il mio voto": "Opdater min stemme", + "Aggiungi membro": "Tilføj medlem", + "Aggiungi stato": "Tilføj status", + "Ancora nessun libro: unisciti al club e proponi il primo!": "Ingen bøger endnu: Bliv medlem af klubben og foreslå den første!", + "Annulla incontro": "Aflys møde", + "Annullare questo incontro?": "Vil du aflyse dette møde?", + "Aperta": "Åben", + "Apri una nuova votazione": "Åbn en ny afstemning", + "Apri votazione": "Åbn afstemning", + "Attenzione: rinominare una chiave non migra i libri già in quello stato.": "Advarsel: Omdøbning af en nøgle migrerer ikke bøger i denne status.", + "Bandito": "Udelukket", + "Benvenuto nel club \"%s\"!": "Velkommen til klubben „%s“!", + "Benvenuto nel club!": "Velkommen til klubben!", + "Book Club": "Læseklub", + "Calendario iCal": "iCal-kalender", + "Cerca nel catalogo della biblioteca e racconta al club perché vale la pena leggerlo.": "Søg i bibliotekets katalog og fortæl klubben, hvorfor den er værd at læse.", + "Cerca per titolo o ISBN…": "Søg efter titel eller ISBN…", + "Chiudere la votazione adesso? Il libro più votato avanzerà nel workflow.": "Vil du lukke afstemningen nu? Den mest stemte bog rykker frem i workflowet.", + "Chiudi la votazione adesso": "Luk afstemningen nu", + "Chiusa": "Lukket", + "Club": "Klub", + "Club aggiornato.": "Klub opdateret.", + "Club attivo": "Aktiv klub", + "Club creato.": "Klub oprettet.", + "Club di lettura": "Læsekredse", + "Club eliminato.": "Klub slettet.", + "Collegati": "Deltag online", + "Concluso": "Afsluttet", + "Crea club": "Opret klub", + "Crea incontro": "Opret møde", + "Creazione del club non riuscita.": "Oprettelse af klub mislykkedes.", + "Discussione aperta": "Åben diskussion", + "Dove:": "Hvor:", + "Elimina club": "Slet klub", + "Eliminare questo club? I dati restano nel database ma il club non sarà più visibile.": "Vil du slette denne klub? Dataene forbliver i databasen, men klubben vil ikke længere være synlig.", + "Email non inviata. Condividi manualmente questo link di invito: %s": "E-mail ikke sendt. Del dette invitationslink manuelt: %s", + "Email utente registrato": "E-mail for registreret bruger", + "Esplora i club": "Udforsk klubber", + "Fine (facoltativa)": "Slut (valgfri)", + "Fondatore": "Grundlægger", + "Forse": "Måske", + "Gestione dei club di lettura": "Håndtering af læsekredse", + "Hai già %d proposte aperte: attendi che vengano votate.": "Du har allerede %d åbne forslag: Vent på, at der stemmes om dem.", + "Hai lasciato il club.": "Du har forladt klubben.", + "I libri del club": "Klubbens bøger", + "I libri in votazione sostano qui": "Bøger til afstemning opholder sig her", + "I miei club": "Mine klubber", + "I miei club di lettura": "Mine læsekredse", + "Ibrido": "Hybrid", + "Il club \"%s\" si incontra il %s.": "Klubben „%s“ mødes den %s.", + "Il club ha raggiunto il numero massimo di membri.": "Klubben har nået det maksimale antal medlemmer.", + "Il club ha scelto: %s": "Klubben har valgt: %s", + "Il club non è più disponibile.": "Klubben er ikke længere tilgængelig.", + "Il nome del club è obbligatorio.": "Klubbens navn er obligatorisk.", + "Il workflow deve avere almeno due stati.": "Workflowet skal have mindst to statusser.", + "In lettura": "Læses", + "In moderazione": "Til moderering", + "In presenza": "Fremmøde", + "In programma": "Planlagt", + "In votazione": "Til afstemning", + "Incontri": "Møder", + "Incontro aggiornato.": "Møde opdateret.", + "Incontro non creato, riprova.": "Møde ikke oprettet, prøv igen.", + "Incontro pianificato.": "Møde planlagt.", + "Invia invito": "Send invitation", + "Invia proposta": "Indsend forslag", + "Invita un lettore": "Inviter en læser", + "Invito al club di lettura \"%s\"": "Invitation til læsekredsen „%s“", + "Invito inviato a %s.": "Invitation sendt til %s.", + "Invito non creato, riprova.": "Invitation ikke oprettet, prøv igen.", + "Invito non valido o scaduto.": "Ugyldig eller udløbet invitation.", + "La votazione è chiusa.": "Afstemningen er lukket.", + "Lascia il club": "Forlad klubben", + "Le transizioni di stato si gestiscono dalla pagina pubblica del club (come moderatore).": "Statustransitioner håndteres fra klubbens offentlige side (som moderator).", + "Leggi insieme: proposte, votazioni e incontri.": "Læs sammen: forslag, afstemninger og møder.", + "Lettura corrente": "Nuværende læsning", + "Libri del club": "Klubbens bøger", + "Libro non trovato in catalogo.": "Bog ikke fundet i kataloget.", + "Link videoconferenza": "Videokonferencelink", + "Massimo proposte aperte per membro": "Maksimalt antal åbne forslag pr. medlem", + "Membri": "Medlemmer", + "Membro aggiornato.": "Medlem opdateret.", + "Membro aggiunto al club.": "Medlem tilføjet til klubben.", + "Membro approvato.": "Medlem godkendt.", + "Modera le proposte: un moderatore deve approvarle prima che diventino visibili": "Moderér forslag: En moderator skal godkende dem, før de bliver synlige", + "Modifica club": "Rediger klub", + "Mostrato come \"lettura corrente\" nella dashboard": "Vises som \"nuværende læsning\" på kontrolpanelet", + "Mostrato nella pagina del club, visibile a tutti i membri.": "Vises på klubbens side, synlig for alle medlemmer.", + "Nascosto — invisibile nelle liste": "Skjult — usynlig i lister", + "Nessun club ancora. Crea il primo!": "Ingen klubber endnu. Opret den første!", + "Nessun club di lettura attivo al momento.": "Ingen aktive læsekredse i øjeblikket.", + "Nessun incontro in programma.": "Ingen kommende møder.", + "Nessun incontro pianificato.": "Ingen planlagte møder.", + "Nessun incontro.": "Ingen møder.", + "Nessun libro collegato": "Ingen tilknyttet bog", + "Nessun libro in lettura.": "Ingen bog læses i øjeblikket.", + "Nessun libro in questo stato.": "Ingen bøger i denne status.", + "Nessun libro: le proposte dei membri appariranno qui.": "Ingen bøger: Medlemmernes forslag vil blive vist her.", + "Nessun membro.": "Ingen medlemmer.", + "Nessun utente registrato con questa email.": "Ingen registreret bruger med denne e-mail.", + "Nessuna votazione al momento.": "Ingen afstemninger i øjeblikket.", + "Nessuna votazione aperta.": "Ingen åbne afstemninger.", + "Nessuna votazione.": "Ingen afstemninger.", + "Nome del club": "Klubbens navn", + "Non ci sono più posti disponibili per questo incontro.": "Der er ikke flere ledige pladser til dette møde.", + "Non fai ancora parte di nessun club.": "Du er endnu ikke med i nogen klub.", + "Non puoi unirti a questo club.": "Du kan ikke tilmelde dig denne klub.", + "Numero massimo membri": "Maksimalt antal medlemmer", + "Nuovo club": "Ny klub", + "Opzione non valida.": "Ugyldig mulighed.", + "Ordine del giorno (facoltativo)": "Dagsorden (valgfri)", + "Pagina pubblica": "Offentlig side", + "Partecipazione registrata.": "Deltagelse registreret.", + "Parteciperai?": "Deltager du?", + "Perché proponi questo libro? (facoltativo)": "Hvorfor foreslår du denne bog? (valgfri)", + "Pianifica un incontro": "Planlæg et møde", + "Posti (illimitati)": "Pladser (ubegrænsede)", + "Preferenza multipla": "Flervalg", + "Preferenza multipla: %d voti a testa": "Flervalg: %d stemmer hver", + "Preferenza multipla: %d voto a testa": "Flervalg: %d stemme hver", + "Privato — adesione con approvazione": "Privat — tilmelding med godkendelse", + "Promemoria: \"%s\" — incontro del club \"%s\"": "Påmindelse: „%s“ — møde i klubben „%s“", + "Proponi un libro": "Foreslå en bog", + "Proposta aggiunta al club.": "Forslag tilføjet til klubben.", + "Proposta inviata: sarà visibile dopo l'approvazione di un moderatore.": "Forslag sendt: Det vil være synligt efter godkendelse af en moderator.", + "Proposta non salvata, riprova.": "Forslag ikke gemt, prøv igen.", + "Proposta rifiutata.": "Forslag afvist.", + "Proposte da moderare": "Forslag til moderering", + "Proposto": "Foreslået", + "Prossimo incontro": "Næste møde", + "Pubblico — chiunque può unirsi": "Offentlig — alle kan deltage", + "Puoi esprimere al massimo %d voti.": "Du kan afgive højst %d stemmer.", + "Puoi esprimere al massimo %d voto.": "Du kan afgive højst %d stemme.", + "Puoi selezionare fino a %d libri.": "Du kan vælge op til %d bøger.", + "Questo club è accessibile solo su invito.": "Denne klub er kun tilgængelig efter invitation.", + "Questo libro è già presente nel club.": "Denne bog findes allerede i klubben.", + "Regolamento del club": "Klubbens reglement", + "Richiedi di partecipare": "Anmod om at deltage", + "Richiesta in attesa di approvazione": "Anmodning afventer godkendelse", + "Richiesta inviata: un moderatore deve approvarla.": "Anmodning sendt: En moderator skal godkende den.", + "Richiesta rifiutata.": "Anmodning afvist.", + "Rimuovi stato": "Fjern status", + "Ruolo non valido.": "Ugyldig rolle.", + "Salva workflow": "Gem workflow", + "Scadenza (facoltativa)": "Frist (valgfri)", + "Scelto": "Valgt", + "Se non hai ancora un account, registrati prima con questo indirizzo email.": "Hvis du ikke har en konto endnu, skal du registrere dig med denne e-mailadresse først.", + "Segna come svolto": "Marker som udført", + "Sei stato invitato a unirti al club di lettura \"%s\".": "Du er blevet inviteret til at deltage i læsekredsen „%s“.", + "Seleziona almeno due proposte da mettere in votazione.": "Vælg mindst to forslag til afstemning.", + "Seleziona almeno un libro.": "Vælg mindst én bog.", + "Seleziona un libro dal catalogo.": "Vælg en bog fra kataloget.", + "Servono almeno due proposte per aprire una votazione.": "Der kræves mindst to forslag for at åbne en afstemning.", + "Sezione archivio": "Arkivsektion", + "Solo i membri attivi del club possono votare.": "Kun aktive klubmedlemmer kan stemme.", + "Solo i membri attivi possono votare.": "Kun aktive medlemmer kan stemme.", + "Sposta": "Flyt", + "Stati ordinati che ogni libro attraversa. Il primo stato accoglie le proposte; il vincitore di una votazione avanza allo stato successivo.": "Sorterede statusser, som hver bog gennemgår. Den første status modtager forslag; vinderen af en afstemning rykker til den næste status.", + "Stato del libro aggiornato.": "Bogstatus opdateret.", + "Su invito": "Efter invitation", + "Su invito — solo con link di invito": "Efter invitation — kun med invitationslink", + "Svolto": "Udført", + "Titolo (es. Votazione autunno 2026)": "Titel (f.eks. Efterårsafstemning 2026)", + "Titolo dell'incontro": "Mødets titel", + "Titolo e data di inizio sono obbligatori.": "Titel og startdato er obligatoriske.", + "Una delle proposte selezionate non è valida.": "Et af de valgte forslag er ugyldigt.", + "Unisciti al club": "Bliv medlem af klubben", + "Uscito": "Udmeldt", + "Vai alla pagina del club": "Gå til klubbens side", + "Verbale": "Referat", + "Vota": "Stem", + "Votazione": "Afstemning", + "Votazione aperta.": "Afstemning åbnet.", + "Votazione chiusa.": "Afstemning lukket.", + "Votazione della prossima lettura": "Afstemning om næste læsning", + "Votazione non creata, riprova.": "Afstemning ikke oprettet, prøv igen.", + "Votazioni": "Afstemninger", + "Votazioni aperte": "Åbne afstemninger", + "Voti per membro (solo preferenza multipla)": "Stemmer pr. medlem (kun flervalg)", + "Voto non registrato, riprova.": "Stemme ikke registreret, prøv igen.", + "Voto pubblico": "Åben afstemning", + "Voto registrato. Puoi modificarlo finché la votazione è aperta.": "Stemme registreret. Du kan ændre den, så længe afstemningen er åben.", + "Voto segreto": "Hemmelig afstemning", + "Voto singolo": "Enkeltstemme", + "Vuoi davvero lasciare il club?": "Vil du virkelig forlade klubben?", + "Workflow aggiornato.": "Workflow opdateret.", + "Workflow del libro": "Bog-workflow", + "Workflow predefinito": "Standard-workflow", + "adesione in attesa di approvazione": "tilmelding afventer godkendelse", + "forse": "måske", + "illimitato": "ubegrænset", + "membri": "medlemmer", + "posti": "pladser", + "proposto da": "foreslået af", + "scade il": "udløber den", + "scaduta il": "udløb den", + "sì": "ja", + "votanti": "deltagere", + "voti": "stemmer", + "voto": "stemme", + "voto pubblico": "åben afstemning", + "voto segreto": "hemmelig afstemning", + "%1$d copie disponibili su %2$d": "%1$d af %2$d eksemplarer tilgængelige", + "%1$d membri su %2$d hanno finito il libro": "%1$d af %2$d medlemmer har afsluttet bogen", + "%1$d partecipanti, %2$d copie: valuta l'acquisto di altre copie o l'allungamento dei tempi di lettura.": "%1$d deltagere, %2$d eksemplarer: Overvej at købe flere eksemplarer eller forlænge læsetiden.", + "%d lettori hanno registrato un progresso": "%d læsere har registreret en fremgang", + "%d libri": "%d bøger", + "%d membri del club lo hanno in prestito": "%d klubmedlemmer har den udlånt", + "%d membri l'hanno superata": "%d medlemmer har passeret den", + "%d membro del club lo ha in prestito": "%d klubmedlem har den udlånt", + "%d prenotazione in lista d'attesa": "%d reservation på ventelisten", + "%d prenotazioni in lista d'attesa": "%d reservationer på ventelisten", + "%d proposte": "%d forslag", + "%d proposte in attesa di moderazione": "%d forslag venter på moderering", + "%d stelle su 5": "%d af 5 stjerner", + "%d votazione aperta": "%d åben afstemning", + "%d votazioni aperte": "%d åbne afstemninger", + "(modificato)": "(redigeret)", + "24 ore prima · email · gestito dal sistema": "24 timer før · e-mail · styret af systemet", + "Aggiorna progresso": "Opdater fremskridt", + "Aggiungi sezione": "Tilføj sektion", + "Ancora nessuna discussione: apri la prima!": "Ingen diskussioner endnu: åbn den første!", + "Annuncio": "Bekendtgørelse", + "Anticipo (ore)": "Forudsigelse (timer)", + "Approvare le proposte": "Godkend forslag", + "Approvare le richieste di adesione": "Godkend tilmeldingsanmodninger", + "Apri discussione": "Åbn diskussion", + "Apri il tracker di lettura": "Åbn læsesporingsværktøj", + "Apri una nuova discussione": "Åbn en ny diskussion", + "Apri una nuova discussione…": "Åbn en ny diskussion…", + "Aprire votazioni": "Åbn afstemninger", + "Assegna almeno una valutazione in stelle.": "Tildel mindst én stjernebedømmelse.", + "Assegna una posizione a ogni libro: 1 = preferito.": "Tildel en position til hver bog: 1 = favorit.", + "Automazioni": "Automatiseringer", + "Automazioni aggiornate.": "Automatiseringer opdateret.", + "Avanzamento medio del club": "Gennemsnitligt klubfremskridt", + "Avvisa i membri quando la fine della lettura corrente si avvicina.": "Giv medlemmer besked, når slutningen på den nuværende læsning nærmer sig.", + "Avvisa i membri quando una votazione aperta sta per chiudersi.": "Giv medlemmer besked, når en åben afstemning er ved at lukke.", + "Biblioteca e recensioni": "Bibliotek og anmeldelser", + "Blocca": "Bloker", + "Bloccata": "Blokeret", + "Book Club: scadenza lettura": "Læseklub: Læsefrist", + "Book Club: votazione in chiusura": "Læseklub: Afstemning lukker snart", + "Capitolo": "Kapitel", + "Chiudere votazioni": "Luk afstemninger", + "Chiusa il": "Lukket den", + "Classifica (Borda)": "Rangliste (Borda)", + "Classifica completa (conteggio Borda)": "Komplet rangliste (Borda-tælling)", + "Concludere il turno corrente? Il libro ultimo classificato sarà eliminato.": "Vil du afslutte den nuværende runde? Den sidstplacerede bog vil blive fjernet.", + "Concludi il turno": "Afslut runden", + "Condividi le tue impressioni… usa @nome per menzionare un membro.": "Del dine indtryk… brug @navn for at nævne et medlem.", + "Crea ruolo": "Opret rolle", + "Crea stagione": "Opret sæson", + "Creare incontri": "Opret møder", + "Creazione del ruolo non riuscita.": "Oprettelse af rolle mislykkedes.", + "Cronologia stati": "Statushistorik", + "Descrizione (facoltativa)": "Beskrivelse (valgfri)", + "Discussione aperta.": "Diskussion åbnet.", + "Discussione bloccata.": "Diskussion blokeret.", + "Discussione dal": "Diskussion fra", + "Discussione fissata in alto.": "Diskussion fastgjort øverst.", + "Discussione non creata, riprova.": "Diskussion ikke oprettet, prøv igen.", + "Discussione non più in evidenza.": "Diskussion ikke længere fremhævet.", + "Discussione sbloccata.": "Diskussion unblokeret.", + "Discussioni": "Diskussioner", + "Disponibilità copie, prestiti dei membri, lista d'attesa e recensioni del club": "Eksemplartilgængelighed, medlemmers udlån, venteliste og klubanmeldelser", + "Disponibilità in biblioteca": "Tilgængelighed på biblioteket", + "Dove sono arrivato": "Hvor jeg er nået til", + "Elimina ruolo": "Slet rolle", + "Eliminare definitivamente questo ruolo?": "Vil du slette denne rolle permanent?", + "Eliminare questa sezione?": "Vil du slette denne sektion?", + "Eliminare questa stagione?": "Vil du slette denne sæson?", + "Eliminato al turno %d": "Udgået i runde %d", + "Eliminazione progressiva": "Trinvis eliminering", + "Eliminazione progressiva — turno %d": "Trinvis eliminering — runde %d", + "Email + in-app": "E-mail + in-app", + "Es. Capitoli 1–5": "F.eks. Kapitler 1–5", + "Eseguire le esportazioni": "Udfør eksport", + "Esempi: Bibliotecario, Organizzatore eventi, Curatore Fantasy, Tesoriere.": "Eksempler: Bibliotekar, Eventarrangør, Fantasy-kurator, Kasserer.", + "Esporta JSON": "Eksporter JSON", + "Fine lettura": "Læseende", + "Fissa in alto": "Fastgør øverst", + "Generale": "Generelt", + "Governance e automazioni": "Governance og automatiseringer", + "Hai finito questo libro!": "Du har afsluttet denne bog!", + "Hai già recensito questo libro.": "Du har allerede anmeldt denne bog.", + "Hai già recensito tutti i libri conclusi dal club.": "Du har allerede anmeldt alle bøger, som klubben har afsluttet.", + "Ho finito il libro": "Jeg har læst bogen færdig", + "Il club \"%s\" concluderà la lettura di \"%s\" il %s.": "Klubben „%s“ afslutter læsningen af „%s“ den %s.", + "Il club sta leggendo": "Klubben læser", + "Il messaggio non può essere vuoto.": "Beskeden må ikke være tom.", + "Il mio progresso": "Mit fremskridt", + "Il nome del ruolo è obbligatorio.": "Rollens navn er obligatorisk.", + "Il nome della stagione è obbligatorio.": "Sæsonens navn er obligatorisk.", + "Il promemoria degli incontri è sempre attivo e viene inviato dal nucleo del plugin.": "Mødepåmindelsen er altid aktiv og sendes af plugin-kernen.", + "Il ruolo è assegnato ad almeno un membro e non può essere eliminato.": "Rollen er tildelt mindst ét medlem og kan ikke slettes.", + "Il ruolo è in uso e non può essere eliminato.": "Rollen er i brug og kan ikke slettes.", + "Il titolo della discussione è obbligatorio.": "Diskussionens titel er obligatorisk.", + "Il titolo della sezione è obbligatorio.": "Sektionens titel er obligatorisk.", + "Impossibile aggiornare la sezione.": "Kan ikke opdatere sektionen.", + "Impossibile aggiornare la stagione.": "Kan ikke opdatere sæsonen.", + "Impossibile aggiungere la sezione.": "Kan ikke tilføje sektionen.", + "Impossibile creare la stagione.": "Kan ikke oprette sæsonen.", + "Impossibile eliminare la sezione.": "Kan ikke slette sektionen.", + "Impossibile eliminare la stagione.": "Kan ikke slette sæsonen.", + "Impossibile impostare la stagione corrente.": "Kan ikke indstille den aktuelle sæson.", + "Impossibile salvare il progresso. Riprova.": "Kan ikke gemme fremskridt. Prøv igen.", + "Imposta come corrente": "Indstil som nuværende", + "Imposta come stagione corrente": "Indstil som nuværende sæson", + "In evidenza": "Fremhævet", + "In prestito a:": "Udlånt til:", + "Incontri svolti": "Afholdte møder", + "Inizio lettura": "Læasestart", + "Invia risposta": "Send svar", + "Invitare lettori": "Inviter læsere", + "La discussione è bloccata: non è possibile aggiungere messaggi.": "Diskussionen er blokeret: Det er ikke muligt at tilføje beskeder.", + "La lettura di \"%s\" per il club \"%s\" si conclude a breve": "Læsningen af „%s“ for klubben „%s“ slutter snart", + "La recensione contiene spoiler": "Anmeldelsen indeholder spoilers", + "La recensione sarà pubblicata dopo l'approvazione di un amministratore della biblioteca.": "Anmeldelsen vil blive offentliggjort efter godkendelse af en biblioteksadministrator.", + "La tua attività": "Din aktivitet", + "La tua recensione…": "Din anmeldelse…", + "La votazione \"%s\" del club \"%s\" si chiude a breve": "Afstemningen „%s“ i klubben „%s“ lukker snart", + "La votazione \"%s\" si chiude il %s: fai sentire la tua voce!": "Afstemningen „%s“ lukker den %s: Gør din stemme hørt!", + "Le modalità in breve": "Tilstandene i korthed", + "Le stelle vanno da 1 a 5.": "Stjerner går fra 1 til 5.", + "Le votazioni avanzate non sono attive per questo club.": "Avancerede afstemninger er ikke aktive for denne klub.", + "Lettura condivisa": "Fælles læsning", + "Libera": "Fri", + "Libri conclusi": "Afsluttede bøger", + "Libri nel club": "Bøger i klubben", + "Libri per stato": "Bøger efter status", + "Livello spoiler": "Spoilerniveau", + "Media stelle recensioni": "Gennemsnit af anmeldelsesstjerner", + "Membri attivi": "Aktive medlemmer", + "Messaggio non pubblicato, riprova.": "Besked ikke offentliggjort, prøv igen.", + "Messaggio pubblicato.": "Besked offentliggjort.", + "Messaggio rimosso.": "Besked fjernet.", + "Modalità": "Tilstand", + "Modalità di voto": "Afstemningstilstand", + "Moderare le discussioni": "Moderér diskussioner", + "Modificato da": "Ændret af", + "Mostra la recensione (contiene spoiler)": "Vis anmeldelse (indeholder spoilers)", + "Nel club \"%s\" la lettura di \"%s\" termina il %s.": "I klubben „%s“ slutter læsningen af „%s“ den %s.", + "Nel club \"%s\" la votazione \"%s\" si chiude il %s.": "I klubben „%s“ lukker afstemningen „%s“ den %s.", + "Nessun libro proposto finora.": "Ingen bøger foreslået indtil videre.", + "Nessun messaggio: scrivi il primo!": "Ingen beskeder: Skriv den første!", + "Nessun ruolo personalizzato: creane uno qui sotto.": "Ingen tilpasset rolle: Opret en nedenfor.", + "Nessuna recensione approvata per i libri conclusi dal club.": "Ingen godkendte anmeldelser for bøger afsluttet af klubben.", + "Nessuna sezione collegata": "Ingen tilknyttet sektion", + "Nessuna sezione definita per questo libro.": "Ingen sektioner defineret for denne bog.", + "Nessuna stagione definita.": "Ingen sæson defineret.", + "Nessuno spoiler": "Ingen spoilers", + "Nome del ruolo": "Rollens navn", + "Nome della stagione (es. 2026 Primavera)": "Sæsonens navn (f.eks. Forår 2026)", + "Notifica in-app": "In-app-notifikation", + "Nuova sezione": "Ny sektion", + "Nuova stagione": "Ny sæson", + "Nuovo ruolo": "Ny rolle", + "Obiettivo libri": "Bogmål", + "Obiettivo: %d libri": "Mål: %d bøger", + "Oltre ai ruoli di sistema (Fondatore, Moderatore, Membro, Ospite) puoi definire ruoli su misura spuntando i permessi dalla matrice.": "Udover systemrollerne (Grundlægger, Moderator, Medlem, Gæst) kan du definere skræddersyede roller ved at markere tilladelserne i matrixen.", + "Opzioni votazione": "Afstemningsmuligheder", + "Ordina tutti i libri assegnando a ciascuno una posizione diversa da 1 a %d.": "Sorter alle bøger ved at tildele hver en anden position fra 1 til %d.", + "Ordine": "Rækkefølge", + "Organizza le letture in stagioni con archivio storico": "Organiser læsninger i sæsoner med et historisk arkiv", + "Parità in testa: proclama il vincitore tra le opzioni evidenziate.": "Uafgjort i toppen: Proklamér vinderen blandt de fremhævede muligheder.", + "Parità in testa: un moderatore deve proclamare il vincitore.": "Uafgjort i toppen: En moderator skal proklamere vinderen.", + "Parte": "Del", + "Percentuale letta": "Læst procentdel", + "Percentuale minima di membri attivi che devono votare perché ci sia un vincitore": "Minimumsprocentdel af aktive medlemmer, der skal stemme, for at der er en vinder", + "Personaggio": "Karakter", + "Personalizzata": "Tilpasset", + "Pesi fissi: fondatore ×2,0 · moderatore ×1,5 · membro ×1,0.": "Faste vægte: grundlægger ×2,0 · moderator ×1,5 · medlem ×1,0.", + "Posizione in classifica (1 = preferito)": "Placering på ranglisten (1 = favorit)", + "Post scritti": "Skrevne indlæg", + "Presenze confermate": "Bekræftede tilstedeværelser", + "Proclama vincitore": "Proklamér vinder", + "Proclamare questo libro vincitore? Avanzerà nel workflow.": "Vil du proklamere denne bog som vinder? Den vil rykke frem i workflowet.", + "Progresso aggiornato.": "Fremskridt opdateret.", + "Promemoria automatici inviati ai membri attivi dal cron di manutenzione. Ogni avviso parte una sola volta per libro o votazione.": "Automatiske påmindelser sendes til aktive medlemmer af vedligeholdelses-cron'en. Hver advarsel sendes én gang pr. bog eller afstemning.", + "Promemoria incontro": "Mødepåmindelse", + "Proporre libri": "Foreslå bøger", + "Proposto da": "Foreslået af", + "Pubblica messaggio": "Offentliggør besked", + "Punteggio": "Point", + "Punti deboli": "Svagheder", + "Punti deboli (facoltativo)": "Svagheder (valgfri)", + "Punti di forza": "Styrker", + "Punti di forza (facoltativo)": "Styrker (valgfri)", + "Puoi eliminare solo stagioni senza libri.": "Du kan kun slette sæsoner uden bøger.", + "Puoi recensire solo i libri che il club ha concluso.": "Du kan kun anmelde bøger, som klubben har afsluttet.", + "Quando": "Hvornår", + "Questa discussione è bloccata.": "Denne diskussion er blokeret.", + "Questa opzione non era tra quelle in parità.": "Denne mulighed var ikke blandt dem, der stod uafgjort.", + "Quorum": "Quorum", + "Quorum % (facoltativo)": "Quorum % (valgfri)", + "Quorum non raggiunto": "Quorum ikke nået", + "Quorum non raggiunto: la votazione si è chiusa senza vincitore.": "Quorum ikke nået: Afstemningen sluttede uden en vinder.", + "Reagisci": "Reager", + "Reazione non valida.": "Ugyldig reaktion.", + "Recensione inviata! Sarà visibile dopo l'approvazione di un amministratore.": "Anmeldelse sendt! Den vil være synlig efter godkendelse af en administrator.", + "Recensioni del club": "Klubbens anmeldelser", + "Redigere i verbali": "Udarbejde referater", + "Rimuovere questo messaggio?": "Vil du fjerne denne besked?", + "Rimuovi messaggio": "Fjern besked", + "Ruoli del club": "Klubroller", + "Ruoli personalizzati": "Tilpassede roller", + "Ruoli personalizzati con permessi granulari e promemoria automatici": "Tilpassede roller med detaljerede rettigheder og automatiske påmindelser", + "Ruolo aggiornato.": "Rolle opdateret.", + "Ruolo creato.": "Rolle oprettet.", + "Ruolo eliminato.": "Rolle slettet.", + "Salva automazioni": "Gem automatiseringer", + "Salva ruolo": "Gem rolle", + "Sblocca": "Fjern blokering", + "Scadenza lettura": "Læsefrist", + "Scegli il libro concluso…": "Vælg den afsluttede bog…", + "Scrivi un messaggio": "Skriv en besked", + "Scrivi una recensione": "Skriv en anmeldelse", + "Scrivi una risposta…": "Skriv et svar…", + "Seleziona un solo libro per questo turno.": "Vælg kun én bog til denne runde.", + "Senza stagione": "Uden sæson", + "Sezione aggiornata.": "Sektion opdateret.", + "Sezione aggiunta.": "Sektion tilføjet.", + "Sezione eliminata.": "Sektion slettet.", + "Sezioni del libro": "Bogens sektioner", + "Sezioni del libro, tracker di avanzamento e progressi del club": "Bogens sektioner, fremskridtssporingsværktøj og klubbens fremskridt", + "Solo i membri attivi del club possono aggiornare il progresso.": "Kun aktive klubmedlemmer kan opdatere fremskridtet.", + "Solo i membri attivi del club possono aprire discussioni.": "Kun aktive klubmedlemmer kan åbne diskussioner.", + "Solo i membri attivi del club possono inviare recensioni.": "Kun aktive klubmedlemmer kan indsende anmeldelser.", + "Solo i membri attivi del club possono reagire ai messaggi.": "Kun aktive klubmedlemmer kan reagere på beskeder.", + "Solo i membri attivi del club possono registrare il proprio progresso.": "Kun aktive klubmedlemmer kan registrere deres eget fremskridt.", + "Solo i membri attivi del club possono scrivere messaggi.": "Kun aktive klubmedlemmer kan skrive beskeder.", + "Solo i moderatori possono pubblicare annunci.": "Kun moderatorer kan offentliggøre bekendtgørelser.", + "Spareggio in caso di parità": "Omkamp i tilfælde af uafgjort", + "Spareggio: decide un moderatore": "Omkamp: En moderator afgør det", + "Spareggio: sorteggio deterministico": "Omkamp: Deterministisk lodtrækning", + "Spareggio: vince la proposta più antica": "Omkamp: Det ældste forslag vinder", + "Spoiler": "Spoiler", + "Spoiler completo": "Komplet spoiler", + "Spoiler fino a… (facoltativo)": "Spoiler op til… (valgfri)", + "Spoiler leggero": "Let spoiler", + "Spoiler — fino a: %s": "Spoiler — op til: %s", + "Spostare i libri nel workflow": "Flytte bøger i workflowet", + "Stagione aggiornata.": "Sæson opdateret.", + "Stagione corrente": "Aktuel sæson", + "Stagione creata.": "Sæson oprettet.", + "Stagione eliminata.": "Sæson slettet.", + "Stagione impostata come corrente.": "Sæson indstillet som nuværende.", + "Stagioni": "Sæsoner", + "Statistiche del club": "Klubstatistikker", + "Statistiche di lettura del club e dei membri, con export dei dati": "Læsestatistikker for klubben og medlemmerne, med dataeksport", + "Stelle (0 = nessun voto)": "Stjerner (0 = ingen stemme)", + "Stelle (1–5)": "Stjerner (1–5)", + "Stelle, classifica, eliminazione progressiva, voto ponderato, quorum e spareggi": "Stjerner, rangliste, trinvis eliminering, vægtet stemme, quorum og omkampe", + "Stelle: valuta i libri da 1 a 5": "Stjerner: Bedøm bøgerne fra 1 til 5", + "Storico letture": "Læsehistorik", + "Thread per libro e capitolo con spoiler protetti, reazioni e menzioni": "Tråde pr. bog og kapitel med beskyttede spoilers, reaktioner og omtaler", + "Titolo della discussione": "Diskussionens titel", + "Titolo della recensione (facoltativo)": "Anmeldelsens titel (valgfri)", + "Togli evidenza": "Fjern fremhævelse", + "Top proponenti": "Top-forslagsstillere", + "Torna al club": "Tilbage til klubben", + "Turno concluso: il libro ultimo classificato è stato eliminato. Si apre il turno %d.": "Runde afsluttet: Den sidstplacerede bog er blevet elimineret. Runde %d åbner.", + "Tutte le discussioni": "Alle diskussioner", + "Tutte le modalità avanzate: stelle, classifica, eliminazione, voto ponderato, quorum e spareggio.": "Alle avancerede tilstande: stjerner, rangliste, eliminering, vægtet stemme, quorum og omkamp.", + "Tutte le votazioni": "Alle afstemninger", + "Ultima sezione completata": "Sidste gennemførte sektion", + "Un voto per turno: siamo al turno %d.": "Én stemme pr. runde: Vi er i runde %d.", + "Vai alla scheda del libro per prenotare la tua copia": "Gå til bogkortet for at reservere dit eksemplar", + "Vai alla votazione": "Gå til afstemning", + "Valuta da 1 a 5 stelle solo i libri che ti interessano.": "Bedøm kun de bøger, der interesserer dig, med 1 til 5 stjerner.", + "Valutazione…": "Bedømmelse…", + "Vedere le statistiche": "Se statistikker", + "Vedi tutte le statistiche": "Se alle statistikker", + "Vincitore": "Vinder", + "Vincitore non salvato, riprova.": "Vinder ikke gemt, prøv igen.", + "Vincitore proclamato: il libro avanza nel workflow.": "Vinder proklameret: Bogen rykker frem i workflowet.", + "Votazione in chiusura": "Afstemning lukker snart", + "Votazioni avanzate": "Avancerede afstemninger", + "Voti": "Stemmer", + "Voti espressi": "Afgivne stemmer", + "Voti per membro (preferenza multipla e voto ponderato)": "Stemmer pr. medlem (flervalg og vægtet afstemning)", + "Voto ponderato": "Vægtet afstemning", + "[messaggio rimosso]": "[besked fjernet]", + "a ogni turno esce il libro ultimo classificato, fino alla finale a due.": "i hver runde udgår den sidstplacerede bog, indtil finalen med to.", + "aperta da": "åbnet af", + "clicca per rivelare": "klik for at afsløre", + "come il voto singolo/multiplo, ma il voto del fondatore vale 2,0 punti e quello dei moderatori 1,5.": "som enkelt-/flervalg, men grundlæggerens stemme gælder for 2,0 point og moderatorernes for 1,5.", + "discussione": "diskussion", + "discussioni": "diskussioner", + "la votazione si è chiusa senza vincitore e le proposte tornano tra i libri proposti.": "afstemningen lukkede uden en vinder, og forslagene vender tilbage til de foreslåede bøger.", + "messaggi": "beskeder", + "messaggio": "besked", + "ogni membro dispone di più voti (campo «voti per membro»).": "hvert medlem har flere stemmer (feltet „stemmer pr. medlem“).", + "ogni membro ordina tutti i libri; conteggio Borda (1° = N punti).": "hvert medlem sorterer alle bøger; Borda-tælling (1. = N point).", + "ogni membro valuta i libri che preferisce da 1 a 5 stelle; vince la somma più alta.": "hvert medlem bedømmer sine foretrukne bøger fra 1 til 5 stjerner; den højeste sum vinder.", + "permessi": "rettigheder", + "punti": "point", + "quorum %d%%": "quorum %d%%", + "quorum %d%% dei membri attivi": "quorum %d%% af aktive medlemmer", + "se alla chiusura i votanti sono meno della percentuale indicata, non c'è vincitore e le proposte tornano disponibili.": "hvis vælgerne ved lukning er færre end den angivne procentdel, er der ingen vinder, og forslagene bliver tilgængelige igen.", + "turno %d": "runde %d", + "ultima attività": "seneste aktivitet", + "un voto a testa.": "én stemme hver.", + " di %s": "af %s", + "%1$d/%2$d generazioni nelle ultime 24 ore": "%1$d/%2$d generationer inden for de seneste 24 timer", + "%d g": "%d d", + "%d h": "%d t", + "%d libri non ancora letti dal club": "%d bøger endnu ikke læst af klubben", + "%d min": "%d min.", + "%d minuti": "%d minutter", + "%d pagine": "%d sider", + "%d pagine totali": "%d sider i alt", + "%d partecipanti": "%d deltagere", + "%d risposte": "%d svar", + "API JSON in sola lettura del plugin Book Club di Pinakes": "Skrivebeskyttet JSON-API til Pinakes Book Club-pluginnet", + "API JSON in sola lettura per app e integrazioni esterne (richiede una chiave API)": "Skrivebeskyttet JSON-API til apps og eksterne integrationer (kræver en API-nøgle)", + "API REST": "REST-API", + "API compatibile con Anthropic Messages (header anthropic-version). Solo HTTPS.": "API kompatibel med Anthropic Messages (anthropic-version header). Kun HTTPS.", + "Abilita le funzioni IA": "Aktiver AI-funktioner", + "Accetta": "Accepter", + "Affinità con %s": "Affinitet med %s", + "Affinità di lettura tra membri (opt-in) e suggerimenti automatici dal catalogo": "Læseaffinitet mellem medlemmer (tilvalg) og automatiske forslag fra kataloget", + "Affinità e suggerimenti": "Affinitet og forslag", + "Affinità tra lettori": "Affinitet mellem læsere", + "Aggiornata il": "Opdateret den", + "Aggiungi almeno una domanda prima di pubblicare.": "Tilføj mindst ét spørgsmål før offentliggørelse.", + "Aggiungi domanda": "Tilføj spørgsmål", + "Aggiungi una citazione": "Tilføj et citat", + "Ancora nessuna citazione: aggiungi la prima!": "Ingen citater endnu: Tilføj det første!", + "Ancora nessuna generazione per questo club.": "Ingen generationer endnu for denne klub.", + "Annotazione": "Note", + "Annotazione aggiornata.": "Note opdateret.", + "Annotazione aggiunta.": "Note tilføjet.", + "Annotazione eliminata.": "Note slettet.", + "Annotazioni": "Noter", + "Annotazioni condivise dal club": "Noter deles med klubben", + "Annullare questo sprint?": "Annullere denne sprint?", + "Anonimo": "Anonym", + "Aperto": "Åben", + "Apri affinità e suggerimenti": "Åbn affinitet og forslag", + "Apri l'assistente": "Åbn assistenten", + "Apri le impostazioni IA": "Åbn AI-indstillinger", + "Assistente IA": "AI-assistent", + "Attiva condivisione": "Aktiver deling", + "Attiva la condivisione per scoprire la tua affinità di lettura con gli altri membri.": "Aktiver deling for at opdage din læseaffinitet med de andre medlemmer.", + "Autori da riscoprire": "Forfattere der skal genopdages", + "Autori dei libri conclusi con altri titoli in catalogo non ancora letti dal club.": "Forfattere af afsluttede bøger med andre titler i kataloget, som klubben endnu ikke har læst.", + "Autori diversi": "Forskellige forfattere", + "Avanzamento": "Fremskridt", + "Avanzamento del club": "Klubbens fremskridt", + "Badge disponibili": "Tilgængelige badges", + "Book Club — Impostazioni IA": "Bogklub — AI-indstillinger", + "Bozza": "Udkast", + "Bozza creata: aggiungi le domande e pubblica quando è pronta.": "Udkast oprettet: Tilføj spørgsmålene og udgiv, når det er klar.", + "Bozze": "Udkast", + "Buddy Reading": "Makkerlæsning", + "Cambia visibilità": "Skift synlighed", + "Chiave API": "API-nøgle", + "Chiave attualmente configurata: %s": "Aktuelt konfigureret nøgle: %s", + "Chiude il": "Lukker den", + "Chiudere il questionario? Non accetterà più risposte.": "Vil du lukke spørgeskemaet? Det vil ikke længere acceptere svar.", + "Chiudi questionario": "Luk spørgeskema", + "Chiuso": "Lukket", + "Chiusura automatica (facoltativa)": "Automatisk lukning (valgfrit)", + "Citazione aggiunta.": "Citat tilføjet.", + "Citazione eliminata.": "Citat slettet.", + "Citazioni": "Citations", + "Citazioni dai libri del club con pagina e nota, annotazioni personali ed export dei propri dati": "Citater fra klubbens bøger med side og note, personlige noter og eksport af egne data", + "Citazioni del club": "Klubbens citater", + "Citazioni e annotazioni": "Citater og noter", + "Citazioni recenti": "Seneste citater", + "Classifica": "Rangliste", + "Classifica del club": "Klubbens rangliste", + "Club non trovato": "Klub ikke fundet", + "Come si guadagnano i punti": "Sådan optjenes point", + "Compagno di lettura": "Læsemakker", + "Concludi": "Afslut", + "Conclusa": "Afsluttet", + "Condivisione attiva": "Deling aktiv", + "Condivisione disattivata": "Deling deaktiveret", + "Crea bozza": "Opret udkast", + "Crea sprint": "Opret sprint", + "Data e ora di inizio non valide.": "Ugyldig startdato og -tidspunkt.", + "Descrizione del libro:": "Bogbeskrivelse:", + "Dettaglio del club con libri, incontri e votazioni aperte": "Klubdetaljer med bøger, møder og åbne afstemninger", + "Disattiva condivisione": "Deaktiver deling", + "Documento OpenAPI di questa API": "OpenAPI-dokument for denne API", + "Domanda aggiunta.": "Spørgsmål tilføjet.", + "Domanda eliminata.": "Spørgsmål slettet.", + "Domande": "Spørgsmål", + "Domande di discussione": "Diskussionsspørgsmål", + "Domande di discussione e riassunti dei verbali generati con l'IA (richiede chiave API configurata dall'amministratore)": "AI-genererede diskussionsspørgsmål og referatoversigter (kræver en API-nøgle konfigureret af administratoren)", + "Domande di discussione generate per «%s».": "Diskussionsspørgsmål genereret til \"%s\".", + "Dopo la pubblicazione le domande non saranno più modificabili.": "Efter offentliggørelse kan spørgsmålene ikke længere redigeres.", + "Durata (minuti)": "Varighed (minutter)", + "Elenco dei club attivi": "Liste over aktive klubber", + "Eliminare questa annotazione?": "Vil du slette denne note?", + "Eliminare questa citazione?": "Vil du slette dette citat?", + "Eliminare questa domanda?": "Vil du slette dette spørgsmål?", + "Eliminare questa sfida?": "Vil du slette denne udfordring?", + "Endpoint URL": "Slutpunkt-URL", + "Errore interno del server": "Intern serverfejl", + "Es. 12 libri in un anno": "F.eks. 12 bøger på et år", + "Es. Il finale ti ha convinto?": "F.eks. Overbeviste slutningen dig?", + "Es. Qual è il tuo personaggio preferito?": "F.eks. Hvem er din yndlingsfigur?", + "Es. Sprint del venerdì sera": "F.eks. Fredag ​​aften-sprint", + "Esiste già una lettura in coppia con questo membro su questo libro.": "Der findes allerede en fælles læsning med dette medlem for denne bog.", + "Esporta i miei dati (CSV)": "Eksporter mine data (CSV)", + "Esporta i miei dati (Markdown)": "Eksporter mine data (Markdown)", + "Esportato il %s": "Eksporteret den %s", + "Gamification": "Gamification", + "Genera 5 domande": "Generer 5 spørgsmål", + "Genera 5 domande aperte per l'incontro, a partire da titolo, autori e descrizione del libro nel catalogo.": "Generer 5 åbne spørgsmål til mødet baseret på bogens titel, forfattere og beskrivelse i kataloget.", + "Genera domande di discussione per un libro o il riassunto del verbale di un incontro.": "Generer diskussionsspørgsmål til en bog eller et referat af et møde.", + "Genera esattamente 5 domande di discussione per un club del libro che ha letto «%s»%s. Le domande devono stimolare il confronto tra i membri, toccare temi, personaggi e stile, ed essere aperte (mai a risposta sì/no). Formattale come elenco numerato da 1 a 5, una domanda per riga, senza testo introduttivo né conclusivo.": "Generer nøjagtigt 5 diskussionsspørgsmål til en bogklub, der har læst \"%s\"%s. Spørgsmålene skal stimulere udvekslingen mellem medlemmerne, berøre temaer, figurer og stil og være åbne (aldrig ja/nej-spørgsmål). Formater dem som en nummereret liste fra 1 til 5, ét spørgsmål pr. linje, uden indledende eller afsluttende tekst.", + "Genera riassunto": "Generer resumé", + "Genera un riassunto strutturato (sintesi, decisioni prese, prossimi passi) dal verbale di un incontro.": "Generer et struktureret resumé (overblik, trufne beslutninger, næste skridt) ud fra et mødereferat.", + "Generazione non riuscita: il servizio IA non ha risposto. Riprova più tardi.": "Generering mislykkedes: AI-tjenesten svarede ikke. Prøv igen senere.", + "Generazioni precedenti": "Tidligere generationer", + "Generi più letti dal club": "Klubbens mest læste genrer", + "Grazie, la tua risposta è stata registrata.": "Tak, dit svar er blevet registreret.", + "Hai attivato la condivisione delle affinità.": "Du har aktiveret deling af affiniteter.", + "Hai concluso 10 libri con il club": "Du har afsluttet 10 bøger med klubben", + "Hai concluso 50 libri con il club": "Du har afsluttet 50 bøger med klubben", + "Hai concluso il tuo primo libro con il club": "Du har afsluttet din første bog med klubben", + "Hai disattivato la condivisione delle affinità.": "Du har deaktiveret deling af affiniteter.", + "Hai espresso 10 voti nelle votazioni del club": "Du har afgivet 10 stemmer i klubafstemninger", + "Hai già risposto": "Du har allerede svaret", + "Hai già risposto a questo questionario.": "Du har allerede besvaret dette spørgeskema.", + "Hai organizzato 3 incontri del club": "Du har arrangeret 3 klubmøder", + "Hai pubblicato 5 recensioni approvate di libri del club": "Du har udgivet 5 godkendte anmeldelser af klubbøger", + "I punti vengono ricalcolati automaticamente al massimo una volta all'ora.": "Point genberegnes automatisk højst én gang i timen.", + "I risultati saranno visibili alla chiusura.": "Resultaterne vil være synlige ved lukning.", + "Il club ha già letto tutti i libri in catalogo per i suoi generi preferiti.": "Klubben har allerede læst alle katalogbøger for sine yndlingsgenrer.", + "Il compagno scelto non è un membro attivo del club.": "Den valgte læsemakker er ikke et aktivt medlem af klubben.", + "Il livello si calcola come 1 + parte intera della radice quadrata di XP/100: livello 2 a 100 XP, livello 3 a 400 XP, livello 4 a 900 XP.": "Niveauet beregnes som 1 + heltalsdelen af kvadratroden af XP/100: niveau 2 ved 100 XP, niveau 3 ved 400 XP, niveau 4 ved 900 XP.", + "Il mio contributo": "Mit bidrag", + "Il modulo IA non è configurato: chiedi all'amministratore di Pinakes di impostare la chiave API.": "AI-modulet er ikke konfigureret: Bed Pinakes-administratoren om at indstille API-nøglen.", + "Il modulo IA è opt-in: va attivato per ogni club e funziona solo con una chiave API configurata qui. La chiave è cifrata nel database e non viene mai mostrata per intero.": "AI-modulet er tilvalg (opt-in): Det skal aktiveres for hver klub og fungerer kun med en API-nøgle, der er konfigureret her. Nøglen krypteres i databasen og vises aldrig fuldstændigt.", + "Il modulo Lettura condivisa non è installato: l'avanzamento delle sfide non può essere calcolato.": "Modulet for fælles læsning er ikke installeret: Udfordringernes fremskridt kan ikke beregnes.", + "Il questionario viene creato come bozza: potrai aggiungere le domande e pubblicarlo quando è pronto.": "Spørgeskemaet oprettes som et udkast: Du kan tilføje spørgsmålene og udgive det, når det er klar.", + "Il testo dell'annotazione è obbligatorio.": "Notens tekst er påkrævet.", + "Il testo della citazione è obbligatorio.": "Citatets tekst er påkrævet.", + "Il testo della citazione…": "Citatets tekst...", + "Il testo della domanda è obbligatorio.": "Spørgsmålsteksten er påkrævet.", + "Il titolo del questionario è obbligatorio.": "Spørgeskemaets titel er påkrævet.", + "Il titolo della sfida è obbligatorio.": "Udfordringens titel er påkrævet.", + "Il titolo dello sprint è obbligatorio.": "Sprintens titel er påkrævet.", + "Impossibile accettare la proposta. Riprova.": "Forslaget kunne ikke accepteres. Prøv igen.", + "Impossibile aggiornare l'annotazione.": "Noten kunne ikke opdateres.", + "Impossibile aggiornare la citazione.": "Citatet kunne ikke opdateres.", + "Impossibile aggiornare la condivisione delle affinità. Riprova.": "Delingen af affiniteter kunne ikke opdateres. Prøv igen.", + "Impossibile annullare lo sprint. Riprova.": "Sprinten kunne ikke aflyses. Prøv igen.", + "Impossibile chiudere il questionario.": "Spørgeskemaet kunne ikke lukkes.", + "Impossibile concludere la lettura in coppia. Riprova.": "Den fælles læsning kunne ikke afsluttes. Prøv igen.", + "Impossibile creare il questionario. Riprova.": "Spørgeskemaet kunne ikke oprettes. Prøv igen.", + "Impossibile creare la lettura in coppia. Riprova.": "Den fælles læsning kunne ikke oprettes. Prøv igen.", + "Impossibile creare la sfida. Riprova.": "Udfordringen kunne ikke oprettes. Prøv igen.", + "Impossibile creare lo sprint. Riprova.": "Sprinten kunne ikke oprettes. Prøv igen.", + "Impossibile eliminare l'annotazione.": "Noten kunne ikke slettes.", + "Impossibile eliminare la citazione.": "Citatet kunne ikke slettes.", + "Impossibile eliminare la sfida.": "Udfordringen kunne ikke slettes.", + "Impossibile iscriversi allo sprint. Riprova.": "Tilmelding til sprinten mislykkedes. Prøv igen.", + "Impossibile pubblicare il questionario.": "Spørgeskemaet kunne ikke udgives.", + "Impossibile registrare la risposta. Riprova.": "Svaret kunne ikke registreres. Prøv igen.", + "Impossibile registrare le pagine lette. Riprova.": "De læste sider kunne ikke registreres. Prøv igen.", + "Impossibile rimuovere la proposta. Riprova.": "Forslaget kunne ikke fjernes. Prøv igen.", + "Impossibile ritirarsi dallo sprint. Riprova.": "Det lykkedes ikke at trække sig fra sprinten. Prøv igen.", + "Impossibile salvare il risultato generato.": "Det genererede resultat kunne ikke gemmes.", + "Impossibile salvare l'annotazione. Riprova.": "Noten kunne ikke gemmes. Prøv igen.", + "Impossibile salvare la citazione. Riprova.": "Citatet kunne ikke gemmes. Prøv igen.", + "Impossibile salvare la domanda. Riprova.": "Spørgsmålet kunne ikke gemmes. Prøv igen.", + "Impossibile salvare le impostazioni IA: controlla i log (chiave di cifratura configurata?).": "AI-indstillingerne kunne ikke gemmes: Tjek logfilerne (er krypteringsnøglen konfigureret?).", + "Impostazioni IA salvate.": "AI-indstillinger gemt.", + "Impostazioni assistente IA": "Indstillinger for AI-assistent", + "In coppia con %s": "Sammen med %s", + "In corso — termina tra %s": "I gang — slutter om %s", + "Incolla qui la chiave API": "Indsæt API-nøglen her", + "Incontro con verbale": "Møde med referat", + "Inizia tra %s": "Begynder om %s", + "Interruttore globale: anche i club con il modulo attivo non potranno generare nulla finché è spento.": "Global afbryder: Selv klubber med aktivt modul vil ikke kunne generere noget, så længe den er slukket.", + "Invia le risposte": "Send svar", + "Inviata il": "Indsendt den", + "Iscrizione allo sprint registrata.": "Tilmelding til sprint registreret.", + "L'avanzamento è ricalcolato automaticamente dal tracker di lettura: contano i libri del club segnati come finiti nell'anno.": "Fremskridtet genberegnes automatisk af læsetrackeren: Klubbider markeret som færdige i året tæller med.", + "L'endpoint deve essere un URL HTTPS valido.": "Slutpunktet skal være en gyldig HTTPS-URL.", + "L'incontro selezionato non ha un verbale da riassumere.": "Det valgte møde har ikke et referat, der kan opsummeres.", + "L'obiettivo deve essere un numero positivo.": "Målet skal være et positivt tal.", + "La classifica è ancora vuota: i punti vengono calcolati dalle attività del club.": "Ranglisten er stadig tom: Point beregnes ud fra klubbens aktiviteter.", + "La domanda \"%s\" è obbligatoria.": "Spørgsmålet \"%s\" er påkrævet.", + "La durata deve essere compresa tra %d e %d minuti.": "Varigheden skal være mellem %d og %d minutter.", + "La tua posizione": "Din placering", + "La tua sfida": "Din udfordring", + "Lascia vuoto per mantenere la chiave attuale": "Lad være tom for at beholde den aktuelle nøgle", + "Le affinità sono calcolate solo tra i membri che hanno attivato la condivisione: chi non aderisce non compare mai negli elenchi degli altri.": "Affiniteter beregnes kun mellem medlemmer, der har aktiveret deling: Dem der ikke deltager, vises aldrig på de andres lister.", + "Le domande a scelta richiedono almeno due opzioni (una per riga).": "Svarmulighedsspørgsmål kræver mindst to valgmuligheder (én pr. linje).", + "Le iscrizioni sono aperte solo prima dell'inizio dello sprint.": "Tilmelding er kun åben før sprintens start.", + "Le mie annotazioni": "Mine noter", + "Le mie citazioni e annotazioni": "Mine citater og noter", + "Le mie sfide di lettura": "Mine læseudfordringer", + "Le pagine lette si registrano solo a sprint concluso.": "Læste sider kan først registreres, når sprinten er afsluttet.", + "Le tue pagine lette": "Dine læste sider", + "Le tue riflessioni su questo libro…": "Dine tanker om denne bog...", + "Le tue risposte": "Dine svar", + "Leggenda del club": "Klublegende", + "Lettore instancabile": "Utrættelig læser", + "Lettura in coppia avviata. Buona lettura!": "Fælles læsning startet. God læselyst!", + "Lettura in coppia conclusa.": "Fælles læsning afsluttet.", + "Letture in coppia sui libri del club, con proposta e conferma tra membri": "Fælles læsning af klubbisk bøger med forslag og bekræftelse mellem medlemmer", + "Libri dal catalogo che il club non ha ancora letto": "Katalogbøger, som klubben endnu ikke har læst", + "Libri finiti": "Afsluttede bøger", + "Libro (facoltativo)": "Bog (valgfrit)", + "Libro collegato (facoltativo)": "Tilknyttet bog (valgfrit)", + "Libro concluso": "Bog afsluttet", + "Libro del club": "Klubbens bog", + "Libro in lettura": "Bog der læses", + "Limite di %d domande raggiunto.": "Grænsen på %d spørgsmål er nået.", + "Limite di sicurezza fisso: 20 generazioni per club nelle 24 ore.": "Fast sikkerhedsgrænse: 20 generationer pr. klub på 24 timer.", + "Limite di sicurezza raggiunto: massimo %d generazioni IA per club nelle ultime 24 ore. Riprova più tardi.": "Sikkerhedsgrænse nået: maksimalt %d AI-generationer pr. klub inden for de sidste 24 timer. Prøv igen senere.", + "Livello %d": "Niveau %d", + "Membri con condivisione attiva: %d": "Medlemmer med aktiv deling: %d", + "Metrica": "Metrik", + "Metrica non valida.": "Ugyldig metrik.", + "Modello": "Model", + "Modifica le domande": "Rediger spørgsmål", + "Modulo IA non configurato": "AI-modul ikke konfigureret", + "Nessun altro membro ha attivato la condivisione, per ora.": "Ingen andre medlemmer har aktiveret deling endnu.", + "Nessun altro membro ha condiviso annotazioni.": "Intet andet medlem har delt noter.", + "Nessun badge ancora: partecipa alla vita del club per sbloccarli!": "Ingen badges endnu: Deltag i klublivet for at låse dem op!", + "Nessun badge configurato.": "Ingen badges konfigureret.", + "Nessun incontro con verbale: compila prima il verbale di un incontro.": "Ingen møder med referat: Udfyld først et mødereferat.", + "Nessun libro (questionario del club)": "Ingen bog (klubspørgeskema)", + "Nessun libro attualmente in lettura: la coppia si propone sui libri in corso.": "Ingen bog læses i øjeblikket: Parret foreslås på igangværende bøger.", + "Nessun libro nel club: aggiungi prima un libro per annotarlo.": "Ingen bøger i klubben: Tilføj en bog først for at skrive noter til den.", + "Nessun libro nel club: aggiungi prima un libro per citarlo.": "Ingen bøger i klubben: Tilføj en bog først for at citere den.", + "Nessun libro nel club: proponi prima un libro.": "Ingen bøger i klubben: Foreslå en bog først.", + "Nessun libro specifico": "Ingen specifik bog", + "Nessun questionario aperto al momento.": "Ingen åbne spørgeskemaer i øjeblikket.", + "Nessun questionario chiuso.": "Ingen lukkede spørgeskemaer.", + "Nessun risultato disponibile.": "Ingen resultater tilgængelige.", + "Nessun suggerimento disponibile: il club non ha ancora concluso letture con un genere assegnato.": "Ingen forslag tilgængelige: Klubben har endnu ikke afsluttet læsninger med en tildelt genre.", + "Nessuna annotazione.": "Ingen noter.", + "Nessuna citazione.": "Ingen citater.", + "Nessuna domanda: aggiungi la prima qui sotto.": "Ingen spørgsmål: Tilføj det første nedenfor.", + "Nessuna lettura in coppia: proponine una a un altro membro!": "Ingen fælles læsning: Foreslå en til et andet medlem!", + "Nessuna risposta ricevuta.": "Ingen svar modtaget.", + "Nessuna risposta testuale.": "Ingen tekstsvar.", + "Nessuna sfida di club per il %d.": "Ingen klubudfordring for %d.", + "Nessuna sfida personale per il %d.": "Ingen personlig udfordring for %d.", + "Nessuno sprint ancora: crea il primo!": "Ingen sprint endnu: Opret den første!", + "Nessuno sprint in programma.": "Ingen sprint planlagt.", + "Non hai ancora scritto annotazioni.": "Du har ikke skrevet nogen noter endnu.", + "Non puoi eliminare questa sfida.": "Du kan ikke slette denne udfordring.", + "Nota": "Note", + "Nota personale (facoltativa)": "Personlig note (valgfrit)", + "Numero di pagine non valido.": "Ugyldigt sidetal.", + "Nuova annotazione": "Ny note", + "Nuova domanda": "Nyt spørgsmål", + "Nuova sfida di club": "Ny klubudfordring", + "Nuova sfida personale": "Ny personlig udfordring", + "Nuovo questionario": "Nyt spørgeskema", + "Nuovo sprint": "Ny sprint", + "Obiettivi annuali di lettura, personali o di club, con avanzamento ricalcolato automaticamente": "Årlige læsemål, personlige eller for klubben, med automatisk genberegnet fremskridt", + "Obiettivo": "Mål", + "Obiettivo annuale": "Årsmål", + "Opzioni (una per riga, solo per scelta singola/multipla)": "Valgmuligheder (én pr. linje, kun til enkelt-/flervalg)", + "Organizzane uno!": "Arranger en!", + "Organizzatore": "Arrangør", + "Pagine lette": "Læste sider", + "Pagine lette registrate.": "Læste sider registreret.", + "Partecipa": "Deltag", + "Per usare l'assistente IA (domande di discussione e riassunti dei verbali) l'amministratore di Pinakes deve configurare una chiave API nelle impostazioni del plugin.": "For at bruge AI-assistenten (diskussionsspørgsmål og referatoversigter) skal Pinakes-administratoren konfigurere en API-nøgle i plugin-indstillingerne.", + "Plugin Book Club non trovato nel registro dei plugin.": "Book Club-plugin blev ikke fundet i plugin-registeret.", + "Post scritto nelle discussioni": "Indlæg skrevet i diskussionerne", + "Presenza confermata a un incontro": "Bekræftet fremmøde til et møde", + "Primo libro": "Første bog", + "Privata": "Privat", + "Pronto? La pubblicazione apre il questionario ai membri e congela le domande.": "Klar? Udgivelsen åbner spørgeskemaet for medlemmerne og fastfryser spørgsmålene.", + "Proponi": "Foreslå", + "Proposta di lettura accettata": "Accepteret læseforslag", + "Proposta di lettura in coppia inviata: in attesa di conferma.": "Forslag til fælles læsning sendt: Venter på bekræftelse.", + "Proposta di lettura in coppia rimossa.": "Forslag til fælles læsning fjernet.", + "Prossimo livello a %d XP": "Næste niveau ved %d XP", + "Pubblica": "Udgiv", + "Pubblicare il questionario? Le domande non saranno più modificabili.": "Vil du udgive spørgeskemaet? Spørgsmålene kan derefter ikke længere redigeres.", + "Punti esperienza, livelli, badge e classifica dei membri del club": "Erfaringspoint, niveauer, badges og medlemsrangliste for klubben", + "Puoi rispondere una sola volta.": "Du kan kun svare én gang.", + "Puoi ritirarti solo prima dell'inizio dello sprint.": "Du kan kun trække dig før sprintens start.", + "Questa proposta è già stata gestita.": "Dette forslag er allerede blevet behandlet.", + "Questionari": "Spørgeskemaer", + "Questionari aperti": "Åbne spørgeskemaer", + "Questionari chiusi": "Lukkede spørgeskemaer", + "Questionari del club per libro o generici, anonimi o nominali, con risultati aggregati ed export CSV": "Klubspørgeskemaer pr. bog eller generiske, anonyme eller navngivne, med aggregerede resultater og CSV-eksport", + "Questionario anonimo (i nomi dei rispondenti non saranno mai mostrati né esportati)": "Anonymt spørgeskema (svardeltagernes navne vil aldrig blive vist eller eksporteret)", + "Questionario anonimo: il tuo nome non sarà mai mostrato. La partecipazione viene registrata solo per garantire una risposta a testa.": "Anonymt spørgeskema: Dit navn vil aldrig blive vist. Deltagelsen registreres kun for at sikre én besvarelse pr. person.", + "Questionario chiuso: i risultati sono ora visibili ai membri.": "Spørgeskema lukket: Resultaterne er nu synlige for medlemmerne.", + "Questionario pubblicato: le domande non sono più modificabili.": "Spørgeskema udgivet: Spørgsmålene kan ikke længere redigeres.", + "Questo questionario non accetta più risposte.": "Dette spørgeskema accepterer ikke flere svar.", + "Reading Challenge": "Læseudfordring", + "Reading Sprint": "Læsesprint", + "Recensionista": "Anmelder", + "Riassumi il verbale dell'incontro «%s» di un club del libro. Produci un riassunto breve e strutturato in tre sezioni con questi titoli: \"Sintesi\", \"Decisioni prese\", \"Prossimi passi\". Usa elenchi puntati sintetici. Non inventare informazioni assenti dal verbale.": "Opsummer referatet af bogklubmødet \"%s\". Lav et kort, struktureret resumé i tre afsnit med disse titler: \"Resumé\", \"Trufne beslutninger\", \"Næste skridt\". Brug korte punkttegn. Find ikke på informationer, der ikke findes i referatet.", + "Riassunto del verbale": "Mødereferat", + "Riassunto del verbale generato per «%s».": "Referatoversigt genereret til \"%s\".", + "Riassunto verbale": "Mødereferat", + "Rimuovi la chiave salvata": "Fjern den gemte nøgle", + "Rispondi al questionario": "Besvar spørgeskemaet", + "Risposta non valida alla domanda \"%s\".": "Ugyldigt svar på spørgsmålet \"%s\".", + "Risposta obbligatoria": "Obligatorisk svar", + "Ritira": "Træk tilbage", + "Ritirare questa proposta?": "Vil du trække dette forslag tilbage?", + "Ritirati": "Meld afbud", + "Salva annotazione": "Gem note", + "Salva citazione": "Gem citat", + "Salvata cifrata (AES-256-GCM) in plugin_settings; usata solo lato server.": "Gemt krypteret (AES-256-GCM) i plugin_settings; bruges kun på serversiden.", + "Scala 1–5": "Skala 1–5", + "Scegli un altro membro del club come compagno di lettura.": "Vælg et andet klubmedlem som læsemakker.", + "Scegli un libro attualmente in lettura nel club.": "Vælg en bog, der i øjeblikket læses i klubben.", + "Scelta multipla": "Flervalg", + "Scelta singola": "Enkeltvalg", + "Scopri la tua affinità di lettura con gli altri membri e i suggerimenti dal catalogo.": "Opdag din læseaffinitet med de andre medlemmer og katalogforslagene.", + "Segnare questa lettura in coppia come conclusa?": "Vil du markere denne fælles læsning som afsluttet?", + "Sei iscritto": "Du er tilmeldt", + "Seleziona un incontro del club.": "Vælg et klubmøde.", + "Seleziona un libro del club.": "Vælg en klubbog.", + "Sessioni di lettura cronometrate con partecipanti e classifica delle pagine lette": "Tidsbestemte læsesessioner med deltagere og rangliste over læste sider", + "Sessioni di lettura cronometrate: iscriviti prima dell'inizio, leggi per la durata dello sprint e registra le pagine lette alla fine.": "Tidsbestemte læsesessioner: Tilmeld dig før start, læs i sprintens varighed og registrer de læste sider til sidst.", + "Sfida completata!": "Udfordring fuldført!", + "Sfida creata.": "Udfordring oprettet.", + "Sfida di club": "Klubudfordring", + "Sfida eliminata.": "Udfordring slettet.", + "Sfide del club": "Klubudfordringer", + "Sfide personali": "Personlige udfordringer", + "Solo chi ha partecipato allo sprint può registrare le pagine lette.": "Kun deltagere i sprinten kan registrere læste sider.", + "Solo club": "Kun klub", + "Solo i gestori del club possono creare sfide di club.": "Kun klubadministratorer kan oprette klubudfordringer.", + "Solo i membri attivi del club possono creare una sfida.": "Kun aktive klubmedlemmer kan oprette en udfordring.", + "Solo i membri attivi del club possono creare uno sprint.": "Kun aktive klubmedlemmer kan oprette en sprint.", + "Solo i membri attivi del club possono gestire la condivisione delle affinità.": "Kun aktive klubmedlemmer kan administrere deling af affiniteter.", + "Solo i membri attivi del club possono partecipare agli sprint.": "Kun aktive klubmedlemmer kan deltage i sprinter.", + "Solo i membri attivi del club possono proporre una lettura in coppia.": "Kun aktive klubmedlemmer kan foreslå en fælles læsning.", + "Solo i membri attivi del club possono rispondere ai questionari.": "Kun aktive klubmedlemmer kan besvare spørgeskemaer.", + "Solo una lettura in coppia attiva può essere conclusa.": "Kun en aktiv fælles læsning kan afsluttes.", + "Sposta giù": "Flyt ned", + "Sposta su": "Flyt op", + "Sprint annullato.": "Sprint aflyst.", + "Sprint creato: sei già tra i partecipanti.": "Sprint oprettet: Du er allerede blandt deltagerne.", + "Statistiche principali del club": "Klubbens vigtigste statistikker", + "Suggerimenti per il club": "Forslag til klubben", + "Sì/No": "Ja/Nej", + "Testo": "Tekst", + "Testo breve": "Kort tekst", + "Testo lungo": "Lang tekst", + "Ti piace un titolo? Proponilo al club dalla pagina principale.": "Kan du lide en titel? Foreslå den til klubben fra hovedsiden.", + "Ti sei ritirato dallo sprint.": "Du har trukket dig fra sprinten.", + "Tipo di domanda": "Spørgsmålstype", + "Top lettori": "Toplæsere", + "Tu": "Du", + "Tutte le citazioni": "Alle citater", + "Tutti gli sprint": "Alle sprinter", + "Tutti i questionari": "Alle spørgeskemaer", + "Una opzione per riga": "Én indstilling pr. linje", + "Uno sprint concluso non può essere annullato.": "En afsluttet sprint kan ikke aflyses.", + "Vedi la classifica completa": "Se den fulde rangliste", + "Vedi tutte le sfide": "Se alle udfordringer", + "Verbale:": "Referat:", + "Visibilità della citazione aggiornata.": "Citatets synlighed opdateret.", + "Visibilità non valida.": "Ugyldig synlighed.", + "Votante": "Vælger", + "Voto espresso in una votazione": "Afgivet stemme i en afstemning", + "dati insufficienti": "utilstrækkelige data", + "non registrate": "ikke registreret", + "pag. %d": "s. %d", + "proposta inviata": "forslag sendt", + "ti ha invitato": "har inviteret dig", + "Moduli attivi per questo club": "Aktive moduler for denne klub", + "Una delle proposte selezionate non è valida o è già in un'altra votazione aperta.": "Et af de valgte forslag er ugyldigt eller er allerede i en anden åben afstemning.", + "Gli ospiti non possono votare.": "Gæster kan ikke stemme.", + "Questo invito è riservato a un altro indirizzo email.": "Denne invitation er beregnet til en anden e-mailadresse.", + "%1$d lettori su %2$d membri": "%1$d læsere af %2$d medlemmer", + "%d copia offerta dai membri": "%d eksemplar udbudt af medlemmer", + "%d copie offerte dai membri": "%d eksemplarer udbudt af medlemmer", + "Annulla l'offerta": "Annuller tilbud", + "Annullare questa offerta?": "Vil du annullere dette tilbud?", + "Apertura programmata (facoltativa)": "Planlagt åbning (valgfrit)", + "Apre il": "Åbner den", + "Assegna i libri alle stagioni": "Tildel bøger til sæsoner", + "Bozza eliminata.": "Udkast slettet.", + "Citazioni dai club di lettura": "Citater fra læseklubber", + "Consegna la copia": "Aflever eksemplaret", + "Copia consegnata: buona lettura!": "Eksemplar afleveret: God læselyst!", + "Copia offerta al club.": "Eksemplar udbudt til klubben.", + "Copia segnata come restituita.": "Eksemplar markeret som afleveret tilbage.", + "Copie offerte dai membri": "Eksemplarer udbudt af medlemmer", + "Da restituire entro il %s": "Skal afleveres senest den %s", + "Data di riconsegna (facoltativa)": "Afleveringsdato (valgfrit)", + "Elimina bozza": "Slet udkast", + "Eliminare questa bozza? Le domande andranno perse.": "Vil du slette dette udkast? Spørgsmålene vil gå tabt.", + "Es. edizione tascabile, qualche sottolineatura a matita…": "F.eks. paperback-udgave, lidt blyantsunderstregning...", + "Hai già un'offerta aperta per questo libro.": "Du har allerede et åbent tilbud på denne bog.", + "I membri prestano le proprie copie personali dei libri del club": "Medlemmerne udlåner deres personlige eksemplarer af klubbens bøger til hinanden", + "I miei prestiti attivi": "Mine aktive lån", + "I miei prestiti ricevuti": "Mine modtagne lån", + "I pesi si applicano solo alla modalità «Voto ponderato»; gli altri membri valgono sempre 1,0.": "Vægtene gælder kun for tilstanden \"Vægtet afstemning\"; alle andre medlemmer tæller altid 1,0.", + "Il questionario aprirà il %s": "Spørgeskemaet åbner den %s", + "Impossibile aggiornare il questionario. Riprova.": "Spørgeskemaet kunne ikke opdateres. Prøv igen.", + "Impossibile assegnare la stagione.": "Sæsonen kunne ikke tildeles.", + "Impossibile completare l'operazione. Riprova.": "Handlingen kunne ikke fuldføres. Prøv igen.", + "Impossibile eliminare la bozza. Riprova.": "Udkastet kunne ikke slettes. Prøv igen.", + "In attesa della consegna": "Venter på levering", + "In offerta": "Tilbudt", + "La data di chiusura deve essere successiva a quella di apertura.": "Slutdatoen skal være efter startdatoen.", + "Le mie offerte": "Mine tilbud", + "Modifica dettagli": "Rediger detaljer", + "Nessun libro nel club: aggiungi prima un libro per offrirne una copia.": "Ingen bøger i klubben: Tilføj en bog først for at tilbyde et eksemplar.", + "Nessuna copia disponibile al momento.": "Ingen eksemplarer tilgængelige i øjeblikket.", + "Nessuna stagione": "Ingen sæson", + "Non hai ancora offerto nessuna copia.": "Du har ikke udbudt nogen eksemplarer endnu.", + "Non hai richiesto nessuna copia in prestito.": "Du har ikke anmodet om nogen eksemplarer til lån.", + "Non puoi richiedere una copia che offri tu.": "Du kan ikke anmode om et eksemplar, som du selv udbyder.", + "Note sulla copia (facoltative)": "Bemærkninger til eksemplaret (valgfrit)", + "Offerta annullata.": "Tilbud annulleret.", + "Offerta da %s": "Tilbudt af %s", + "Offri la copia": "Tilbud eksemplar", + "Offri una tua copia": "Tilbud dit eget eksemplar", + "Pesi: fondatore ×%s · moderatore ×%s · membro ×1,0.": "Vægte: Stifter ×%s · Moderator ×%s · Medlem ×1,0.", + "Peso del voto dei moderatori": "Moderatorernes stemmevægt", + "Peso del voto del fondatore": "Stifterens stemmevægt", + "Prestata a %s": "Udlånt til %s", + "Prestata da %s": "Udlånt af %s", + "Prestito tra membri": "Udlån mellem medlemmer", + "Questa copia non è più disponibile.": "Dette eksemplar er ikke længere tilgængeligt.", + "Questionario aggiornato.": "Spørgeskema opdateret.", + "Qui i membri si prestano le proprie copie personali: le copie della biblioteca si prenotano dalla scheda del libro.": "Her udlåner medlemmerne deres personlige eksemplarer til hinanden: Bibliotekets eksemplarer reserveres via bogens side.", + "Restituita": "Afleveret tilbage", + "Restituita il %s": "Afleveret tilbage den %s", + "Richiedi in prestito": "Anmod om lån", + "Richiesta": "Anmodet", + "Richiesta da %s": "Anmodning fra %s", + "Richiesta inviata al proprietario della copia.": "Anmodning sendt til eksemplarets ejer.", + "Richiesta rifiutata: la copia è di nuovo disponibile.": "Anmodning afvist: Eksemplaret er tilgængeligt igen.", + "Rifiuta la richiesta": "Afvis anmodning", + "Segna come restituita": "Marker som afleveret tilbage", + "Sei un assistente per club di lettura di una biblioteca. Rispondi sempre in %s, con tono cordiale e concreto.": "Du er assistent for en biblioteksbogklub. Svar altid på %s i en venlig og konkret tone.", + "Solo per il voto ponderato: quanto vale il voto dei moderatori (da 1 a 5)": "Kun for vægtet afstemning: Hvor meget moderatorernes stemme tæller (fra 1 til 5)", + "Solo per il voto ponderato: quanto vale il voto del fondatore (da 1 a 5)": "Kun for vægtet afstemning: Hvor meget stifterens stemme tæller (fra 1 til 5)", + "Stagione del libro aggiornata.": "Bogens sæson opdateret.", + "Stagione non valida.": "Ugyldig sæson.", + "Stai consultando l'archivio del %d: le sfide degli anni passati sono in sola lettura.": "Du ser arkivet for %d: Tidligere års udfordringer er skrivebeskyttede.", + "Titolo, libro, anonimato e date sono modificabili solo finché il questionario è una bozza.": "Titel, bog, anonymitet og datoer kan kun redigeres, så længe spørgeskemaet er et udkast.", + "Vai ai prestiti tra membri": "Gå til udlån mellem medlemmer", + "avanzamento medio del club": "klubbens gennemsnitlige læsefremskridt", + "come il voto singolo/multiplo, ma i voti del fondatore e dei moderatori valgono di più (pesi configurabili per votazione, predefiniti 2,0 e 1,5).": "som enkelt-/flervalsafstemning, men stifterens og moderatorernes stemmer tæller mere (konfigurerbare vægte pr. afstemning, standard er 2,0 og 1,5).", + "francese": "Fransk", + "in coda dal club: %d": "i kø fra klubben: %d", + "inglese": "Engelsk", + "italiano": "Italiensk", + "tedesco": "Tysk", + "È una tua offerta": "Dette er dit tilbud", + "App mobile": "Mobilapp", + "Espone il club nell'app Pinakes (API /api/v1/bookclub con token dell'app)": "Viser klubben i Pinakes-appen (API /api/v1/bookclub med app-token)", + "Questa modalità di voto è disponibile solo dal sito.": "Denne afstemningstilstand er kun tilgængelig fra websitet.", + "Club non trovato.": "Klub ikke fundet.", + "La data di inizio dello sprint deve essere futura.": "Sprintens starttidspunkt skal være i fremtiden.", + "Non hai i permessi per proporre libri in questo club.": "Du har ikke tilladelse til at foreslå bøger i denne klub.", + "Solo i membri attivi del club possono confermare la partecipazione.": "Kun aktive klubmedlemmer kan bekræfte deltagelse.", + "Il modulo lettura non è attivo per questo club.": "Læsemodulet er ikke aktiveret for denne klub.", + "Incontro non trovato.": "Møde ikke fundet.", + "Le sfide degli anni passati sono in archivio e non si possono eliminare.": "Tidligere års udfordringer er arkiveret og kan ikke slettes.", + "Disponibilità non disponibile.": "Tilgængelighedsoplysninger ikke tilgængelige.", + "Il testo della recensione non può superare %d caratteri.": "Anmeldelsesteksten må ikke overstige %d tegn.", + "La valutazione deve essere tra 1 e 5 stelle.": "Bedømmelsen skal være mellem 1 og 5 stjerner.", + "Nessuna recensione da eliminare.": "Ingen anmeldelse at slette.", + "Puoi recensire solo i titoli che hai preso in prestito.": "Du kan kun anmelde titler, som du har lånt.", + "Testo della recensione non valido.": "Ugyldig anmeldelsestekst.", + "Proxy fidati (reverse proxy)": "Pålidelige proxyer (reverse proxy)", + "Se Pinakes è dietro un reverse proxy (NAS/QNAP/Synology/nginx/Docker) che termina il TLS, elenca qui gli IP o le reti (CIDR) del proxy: solo così l'app accetta l'header X-Forwarded-Proto e l'API non risponde \"HTTPS richiesto\" anche su HTTPS reale.": "Hvis Pinakes er bag en reverse proxy (NAS/QNAP/Synology/nginx/Docker), der afslutter TLS, skal du angive proxyens IP-adresser eller netværk (CIDR) her: Kun på denne måde accepterer appen X-Forwarded-Proto-headeren, og API'en svarer ikke med \"HTTPS påkrævet\" selv ved ægte HTTPS.", + "Rilevato un reverse proxy da %s che inoltra HTTPS, ma quell'indirizzo non è ancora fidato: l'app riceverebbe un errore HTTPS. Aggiungilo alla lista qui sopra e salva.": "Der blev registreret en reverse proxy fra %s, som videresender HTTPS, men denne adresse er endnu ikke pålidelig: Appen ville modtage en HTTPS-fejl. Tilføj den til listen ovenfor, og gem.", + "Aggiungi %s": "Tilføj %s", + "Questa azione conferma che l'utente ha ritirato il libro.": "Denne handling bekræfter, at brugeren har afhentet bogen.", + "L'utente ha già un prestito attivo per questo libro": "Brugeren har allerede et aktivt lån for denne bog", + "L'utente ha già una prenotazione attiva per questo libro": "Brugeren har allerede en aktiv reservation for denne bog", + "Errore durante l'annullamento della prenotazione": "Fejl ved annullering af reservationen", + "Hai già una prenotazione attiva per questo libro": "Du har allerede en aktiv reservation for denne bog", + "Tessera": "Lånerkort", + "%d utenti": "%d brugere", + "%d utenti filtrati su %d totali": "%d filtrerede brugere af %d i alt", + "Nessun utente da esportare.": "Ingen brugere at eksportere.", + "Nessuna copia disponibile per la stampa delle etichette.": "Ingen eksemplarer tilgængelige til etiketudskrivning.", + "Inserisci un codice inventario.": "Indtast en inventarkode.", + "Nessun prestito attivo trovato per questo codice copia.": "Ingen aktive lån fundet for denne eksemplarkode.", + "Trovati più prestiti attivi per questo codice: gestiscili manualmente.": "Flere aktive lån fundet for denne kode: Håndtér dem manuelt.", + "Nessuna copia trovata con questo codice inventario.": "Intet eksemplar fundet med denne inventarkode.", + "Il codice copia inserito appartiene a un altro libro.": "Den indtastede eksemplarkode tilhører en anden bog.", + "La copia indicata non è disponibile per il periodo richiesto.": "Det angivne eksemplar er ikke tilgængeligt i den ønskede periode.", + "Codice copia (inventario)": "Eksemplarkode (inventar)", + "Inserisci o scansiona il codice inventario di una copia specifica": "Indtast eller scan inventarkoden for et bestemt eksemplar", + "Facoltativo. Se vuoto, una copia disponibile verrà assegnata automaticamente.": "Valgfrit. Hvis den er tom, tildeles et tilgængeligt eksemplar automatisk.", + "Stampa etichette copie": "Udskriv eksemplaretiketter", + "Restituzione rapida con codice copia": "Hurtig aflevering med eksemplarkode", + "Restituisci copia": "Aflever eksemplar", + "Scansiona": "Scan", + "Scansiona codice a barre": "Scan stregkode", + "Inquadra il codice a barre nella cornice": "Ret stregkoden ind i rammen", + "Avvio della fotocamera in corso...": "Starter kamera...", + "Impossibile accedere alla fotocamera. Controlla i permessi del browser.": "Kan ikke få adgang til kameraet. Tjek browserens tilladelser.", + "Nessuna fotocamera trovata su questo dispositivo.": "Intet kamera fundet på denne enhed.", + "Questo browser non supporta l'accesso alla fotocamera.": "Denne browser understøtter ikke kamerazadgang.", + "Impossibile avviare lo scanner.": "Scanneren kunne ikke startes.", + "Proponi un libro non ancora presente in biblioteca. Non verrà aggiunto al catalogo finché il club non lo sceglie e un responsabile lo acquisisce.": "Foreslå en bog, der endnu ikke findes på biblioteket. Den tilføjes ikke til kataloget, før klubben vælger den, og en ansvarlig person overtager den.", + "Libro acquisito e aggiunto al catalogo.": "Bog overtaget og tilføjet til kataloget.", + "Acquisizione non riuscita, riprova.": "Overtagelse mislykkedes, prøv igen.", + "Modifica incontro": "Rediger møde", + "Il libro non è in catalogo?": "Er bogen ikke i kataloget?", + "Email verificata con successo! Il tuo account è attivo: puoi accedere subito.": "E-mail verificet med succes! Din konto er aktiv: Du kan logge ind med det samme.", + "Tecnologie e cookie utilizzati": "Anvendte teknologier og cookies", + "Copia identificata: %s": "Eksemplar identificeret: %s", + "Periodo massimo che un utente può richiedere per un prestito o una prenotazione. Le richieste che superano questo limite vengono rifiutate.": "Maksimal periode, en bruger kan anmode om for et lån eller en reservation. Anmodninger, der overstiger denne grænse, afvises.", + "Durata massima richiedibile": "Maksimal anmodelig varighed", + "Autore/i": "Forfatter(e)", + "Copia:": "Eksemplar:", + "Questa copia non è disponibile ora.": "Dette eksemplar er ikke tilgængeligt nu.", + "Acquisisci in catalogo": "Tilføj til katalog", + "Editore (facoltativo)": "Forlag (valgfrit)", + "Incontro non aggiornato, riprova.": "Møde ikke opdateret, prøv igen.", + "Inserisci almeno il titolo del libro.": "Indtast mindst bogens titel.", + "Sottotitolo:": "Undertitel:", + "Se attivo, un nuovo utente resta in attesa finché un amministratore non ne approva l'account. Se disattivo, l'account si attiva automaticamente dopo la verifica dell'email.": "Hvis aktiveret, afventer en ny bruger, indtil en administrator godkender kontoen. Hvis deaktiveret, aktiveres kontoen automatisk efter e-mail-verificering.", + "Durata massima prestito (giorni)": "Maksimal udlånsvarighed (dage)", + "Facoltativo. Se vuoto, una copia disponibile verrà assegnata automaticamente. Se inserisci o scansioni un codice, il libro viene identificato in automatico.": "Valgfrit. Hvis tom, tildeles et tilgængeligt eksemplar automatisk. Hvis du indtaster eller scanner en kode, identificeres bogen automatisk.", + "Proponi libro esterno": "Foreslå ekstern bog", + "Valore compreso tra 1 e 3650 giorni. Predefinito: 90 giorni": "Værdi mellem 1 og 3650 dage. Standard: 90 dage", + "Richiedi l'approvazione dell'amministratore per le nuove registrazioni": "Kræv administratorens godkendelse af nye registreringer", + "Crea la voce di catalogo da questa proposta esterna.": "Opret katalogposten ud fra dette eksterne forslag.", + "Codice copia:": "Eksemplarkode:", + "Registrazione utenti": "Brugerregistrering", + "I link cookie devono essere URL HTTP o HTTPS validi, senza credenziali incorporate.": "Cookie-links skal være gyldige HTTP- eller HTTPS-URL'er uden indbyggede loginoplysninger.", + "Questo libro è già in catalogo.": "Denne bog er allerede i kataloget.", + "Proposta esterna": "Eksternt forslag", + "Inviata quando l'account si attiverà automaticamente dopo la verifica dell'email.": "Sendes, når kontoen aktiveres automatisk efter e-mail-verificering.", + "Registrazione ricevuta - verifica email": "Registring modtaget - bekræft e-mail", + "Questo libro non è ancora nel catalogo della biblioteca.": "Denne bog er endnu ikke i bibliotekets katalog.", + "Partecipa online": "Deltag online", + "Proponi un libro non ancora in catalogo": "Foreslå en bog, der ikke er i kataloget endnu", + "Me stesso": "Mig selv", + "Rimuovere questo libro dalla lista del club? L'operazione non si può annullare.": "Vil du fjerne denne bog fra klubbens liste? Denne handling kan ikke anulleres.", + "Rimuovi dal club": "Fjern fra klub", + "Stampa PDF": "Udskriv PDF", + "Libro rimosso dal club.": "Bog fjernet fra klubben.", + "Impossibile rimuovere il libro, riprova.": "Bogen kunne ikke fjernes, prøv igen.", + "Nessun libro nel club.": "Ingen bøger i klubben.", + "Un utente": "En bruger", + "Richiesta di adesione al club \"%s\"": "Anmodning om medlemskab af klubben \"%s\"", + "%s ha chiesto di unirsi al club \"%s\". Approva o rifiuta la richiesta dalla pagina del club.": "%s har anmodet om at melde sig ind i klubben \"%s\". Godkend eller afvis anmodningen fra klubbens side.", + "Nuova proposta nel club \"%s\"": "Nyt forslag i klubben \"%s\"", + "%s ha proposto \"%s\" nel club \"%s\".": "%s har foreslået \"%s\" i klubben \"%s\".", + "Nuovo incontro nel club \"%s\"": "Nyt møde i klubben \"%s\"", + "\"%s\" — %s": "\"%s\" — %s", + "Dimensioni personalizzate": "Brugerdefinerede mål", + "Larghezza (mm)": "Bredde (mm)", + "Altezza (mm)": "Højde (mm)", + "Contenuto etichetta": "Etiketindhold", + "Sottotitolo libro": "Bogundertitel", + "Autore ed editore": "Forfatter og forlag", + "Spaziatura": "Afstand", + "Margine interno (mm)": "Indvendig margin (mm)", + "Il contenuto si adatta automaticamente alle dimensioni dell'etichetta. Aggiungi un margine interno extra per rifinire il layout.": "Indholdet tilpasser sig automatisk etiketstørrelsen. Tilføj en ekstra indvendig margin for at finjustere layoutet.", + "Nessun destinatario: inserisci un indirizzo email o assicurati che il tuo account admin ne abbia uno.": "Ingen modtager: Indtast en e-mailadresse, eller sørg for, at din adminkonto har en.", + "Email di prova inviata a %s. Controlla la casella (anche lo spam).": "Test-e-mail sendt til %s. Tjek indbakken (også spam).", + "Invio fallito: %s": "Afsendelse mislykkedes: %s", + "Indirizzo email del destinatario non valido.": "Ugyldig modtagers e-mailadresse.", + "Email di prova da Pinakes": "Test-e-mail fra Pinakes", + "Questa è un'email di prova inviata dalle impostazioni di Pinakes. Se la ricevi, la configurazione email funziona.": "Dette er en test-e-mail sendt fra Pinakes-indstillingerne. Hvis du modtager den, fungerer e-mail-konfigurationen.", + "La funzione mail() di PHP ha restituito un errore. Verifica la configurazione del server di posta.": "PHP's mail()-funktion returnerede en fejl. Tjek mailserverens konfiguration.", + "Prova invio": "Test afsendelse", + "Invia un'email di prova con le impostazioni attuali e vedi subito se funziona o qual è l'errore. Salva prima le impostazioni.": "Send en test-e-mail med de aktuelle indstillinger og se med det samme, om den virker, eller hvad fejlen er. Gem indstillingerne først.", + "Destinatario (vuoto = la tua email admin)": "Modtager (tom = din admine-mail)", + "Invia email di prova": "Send test-e-mail", + "Invio in corso…": "Sender...", + "Richiesta non riuscita. Riprova.": "Anmodning mislykkedes. Prøv igen.", + "oggi": "i dag", + "Database installato (%d tabelle)": "Database installeret (%d tabeller)", + "Colorista": "Farvelægger", + "Co-autore": "Medforfatter", + "Cerca o aggiungi...": "Søg eller tilføj...", + "Nessun risultato, premi Invio per aggiungerne uno nuovo": "Ingen resultater, tryk på Enter for at tilføje et nyt", + "Cerca un autore esistente o scrivine uno nuovo": "Søg efter en eksisterende forfatter eller skriv en ny", + "Cerca un autore esistente o scrivine uno nuovo (utile per i fumetti)": "Søg efter en eksisterende forfatter eller skriv en ny (nyttigt til tegneserier)", + "Cerca un illustratore esistente o aggiungine uno nuovo digitando il nome": "Søg efter en eksisterende illustrator, eller tilføj en ny ved at skrive navnet", + "Cerca un traduttore esistente o aggiungine uno nuovo digitando il nome": "Søg efter en eksisterende oversætter, eller tilføj en ny ved at skrive navnet", + "Cerca un curatore esistente o aggiungine uno nuovo digitando il nome": "Søg efter en eksisterende kurator, eller tilføj en ny ved at skrive navnet", + "Cerca un colorista esistente o aggiungine uno nuovo digitando il nome (utile per i fumetti)": "Søg efter en eksisterende kolorist, eller tilføj en ny ved at skrive navnet (nyttigt til tegneserier)", + "Contributore \"%s\" è già selezionato": "Bidragyder \"%s\" er allerede valgt", + "Contributore \"%s\" pronto per essere creato": "Bidragyder \"%s\" klar til at blive oprettet", + "Numero": "Tal", + "Casella di spunta": "Afkrydsningsfelt", + "Campi personalizzati": "Brugerdefinerede felter", + "Campi obbligatori alla registrazione": "Obligatoriske felter ved registrering", + "Disattiva i campi che la tua comunità non vuole raccogliere: diventeranno facoltativi nel modulo di registrazione.": "Deaktiver de felter, som dit samfund ikke ønsker at indsamle: De bliver valgfri i registreringsformular.", + "Campi aggiuntivi definiti da te (es. username Telegram): compaiono nel modulo di registrazione e nel profilo utente.": "Yderligere felter defineret af dig (f.eks. Telegram-brugernavn): De vises i registreringsformularen og brugerprofilen.", + "Etichetta nuovo campo": "Etiket til nyt felt", + "L'utente li gestisce dal proprio profilo.": "Brugeren administrerer dem fra sin egen profil.", + "Salva impostazioni registrazione": "Gem registreringsindstillinger", + "Impostazioni di registrazione aggiornate correttamente.": "Registreringsindstillinger opdateret med succes.", + "Salvataggio dei campi personalizzati non riuscito. Riprova.": "Gemning af brugerdefinerede felter mislykkedes. Prøv igen.", + "Le modifiche ai campi vengono salvate insieme alle impostazioni di registrazione.": "Feltændringer gemmes sammen med registreringsindstillingerne.", + "Non puoi cambiare il tipo di un campo che contiene già valori. Crea un nuovo campo o elimina prima i dati esistenti.": "Du kan ikke ændre typen på et felt, der allerede indeholder værdier. Opret et nyt felt eller slet de eksisterende data først.", + "Controlla i campi personalizzati: un valore inserito non è valido.": "Tjek de brugerdefinerede felter: En indtastet værdi er ugyldig.", + "Eliminare i campi personalizzati selezionati? I valori salvati dagli utenti per questi campi verranno rimossi definitivamente.": "Vil du slette de valgte brugerdefinerede felter? Værdier gemt af brugere for disse felter vil blive permanent fjernet.", + "I file dell'applicazione non sono scrivibili dall'utente del web server e Pinakes gira dentro un container. Sull'immagine ufficiale (fabiodalez/pinakes) il codice è incluso nell'immagine e in sola lettura per scelta: aggiorna scaricando la nuova immagine con «docker compose pull && docker compose up -d» (il database e i volumi storage/uploads restano al sicuro). Se usi un'immagine community che monta il codice da un volume scrivibile questo pulsante funziona normalmente — se vedi questo messaggio quel volume è al momento in sola lettura, controlla il suo mount.": "Applikationsfilerne er ikke skrivebare for webserverbrugeren, og Pinakes kører i en container. På det officielle billed (fabiodalez/pinakes) er koden inkluderet i billedet og skrivebeskyttet af hensigt: Opdater ved at hente det nye billed med «docker compose pull && docker compose up -d» (databasen og storage/uploads-volumenerne forbliver sikre). Hvis du bruger et community-billed, der monteres fra et skrivebart volumen, fungerer denne knap normalt — hvis du ser denne meddelelse, er det volumen i øjeblikket skrivebeskyttet, kontroller dens montering.", + "https://t.me/tuocanale": "https://t.me/dinkanal", + "Genere e sottogeneri eliminati con successo!": "Genre og undergenrer slettet med succes!", + "Questa azione elimina il genere e tutti i suoi sottogeneri in modo permanente. I libri associati verranno scollegati da questi generi.": "Denne handling sletter genren og alle dens undergenrer permanent. Tilknyttede bøger vil blive fjernet fra disse genrer.", + "Sei sicuro di voler eliminare questo genere e tutti i suoi sottogeneri? I libri associati verranno scollegati da questi generi.": "Er du sikker på, at du vil slette denne genre og alle dens undergenrer? Tilknyttede bøger vil blive fjernet fra disse genrer.", + "Elimina genere e sottogeneri": "Slet genre og undergenrer." +} diff --git a/locale/routes_da_DK.json b/locale/routes_da_DK.json new file mode 100644 index 000000000..05dca823c --- /dev/null +++ b/locale/routes_da_DK.json @@ -0,0 +1,35 @@ +{ + "login": "/log-ind", + "logout": "/log-ud", + "register": "/registrer", + "register_success": "/registrer/succes", + "verify_email": "/bekraeft-email", + "forgot_password": "/glemt-adgangskode", + "reset_password": "/nulstil-adgangskode", + "profile": "/profil", + "profile_update": "/profil/opdater", + "profile_password": "/profil/adgangskode", + "user_dashboard": "/bruger/oversigt", + "wishlist": "/oenskeliste", + "reservations": "/reservationer", + "events": "/begivenheder", + "catalog": "/katalog", + "catalog_legacy": "/katalog.php", + "book": "/bog", + "book_legacy": "/bog-detalje.php", + "author": "/forfatter", + "publisher": "/forlag", + "genre": "/genre", + "about": "/om-os", + "contact": "/kontakt", + "contact_submit": "/kontakt/send", + "privacy": "/privatlivspolitik", + "cookies": "/cookiepolitik", + "api_catalog": "/api/katalog", + "api_book": "/api/bog", + "api_home": "/api/hjem", + "language_switch": "/sprog", + "archives": "/arkiv", + "archive_item": "/arkiv", + "bibframe.book": "/api/bibframe/book/{id}" +} diff --git a/tests/full-test.spec.js b/tests/full-test.spec.js index d7e872ea9..ac6cde390 100644 --- a/tests/full-test.spec.js +++ b/tests/full-test.spec.js @@ -3220,7 +3220,7 @@ test.describe.serial('Phase 20: Cleanup', () => { // Simulates an admin upgrading to this version and switching the app language. // Verifies: fr_FR LibraryThing strings (our i18n fix), en_US and de_DE render // without errors, and it_IT is always restored as the default at the end. -// All 4 languages are pre-seeded by the installer — no language creation needed. +// All 5 languages (incl. da_DK) are pre-seeded by the installer — no language creation needed. // ════════════════════════════════════════════════════════════════════════════ test.describe.serial('Phase 21: Language Switch', () => { /** @type {import('@playwright/test').BrowserContext} */ From 388153543458bfa8fb242e4093be48353faf7bf5 Mon Sep 17 00:00:00 2001 From: fabiodalez-dev Date: Wed, 22 Jul 2026 11:29:07 +0200 Subject: [PATCH 2/7] fix(#279): wire da_DK into installer seed + runtime locale maps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Selecting Danish in the install wizard produced an Italian catalogue: the UI localized correctly (step0/index + I18n already knew da_DK), but four locale maps in the backend Installer class — and two runtime maps in the app — still listed only it/en/de/fr, so da_DK silently fell through to it_IT. Found by running a real Danish install through the browser (the SQL-only load test couldn't catch it — the installer picks the seed file itself). Installer (installer/classes/Installer.php): - createEnvFile(): da/da_dk -> da_DK, and da_DK added to the fallback whitelist — otherwise .env is written APP_LOCALE=it_IT for a Danish install. - importInitialData(): da/da_dk -> da_DK in the seed-file map — this is the bug that loaded data_it_IT.sql (181 Italian genres + 22 it_IT emails) instead of data_da_DK.sql. Now seeds 181 Danish genres + 22 da_DK emails. - admin-user locale map: new admin row gets locale da_DK, so the admin lands on a Danish dashboard instead of reverting to Italian on first login (cf. #112). - getInstallerLocale(): da/da_dk -> da_DK. Runtime: - PrivateModeMiddleware::LOCALES: add da_DK so the Danish login/register route variants (registered dynamically in web.php from I18n::getAvailableLocales()) are recognized as public in private mode instead of being blocked. - Updater::isCustomLocalePath(): treat da_DK as a bundled locale, so future releases keep updating locale/da_DK.json instead of preserving it as a user-custom catalogue that never receives translation fixes. Verified with a full browser install on a disposable Apache vhost + fresh DB: Danish wizard end to end, .env APP_LOCALE=da_DK, 65 tables, 181 Danish genres ("Prosa"/"Poesi"/"Skønlitteratur"), 22 da_DK email templates ("👤 Ny registreringsanmodning"), public site and admin dashboard both Danish, admin login works, zero console errors. --- app/Middleware/PrivateModeMiddleware.php | 2 +- app/Support/Updater.php | 2 +- installer/classes/Installer.php | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Middleware/PrivateModeMiddleware.php b/app/Middleware/PrivateModeMiddleware.php index 55651680b..2a77867ed 100644 --- a/app/Middleware/PrivateModeMiddleware.php +++ b/app/Middleware/PrivateModeMiddleware.php @@ -32,7 +32,7 @@ class PrivateModeMiddleware implements MiddlewareInterface ]; /** Locales whose route variants are all registered in web.php. */ - private const LOCALES = ['it_IT', 'en_US', 'de_DE', 'fr_FR']; + private const LOCALES = ['it_IT', 'en_US', 'de_DE', 'fr_FR', 'da_DK']; /** * Path prefixes always allowed (assets, installer, infra endpoints). diff --git a/app/Support/Updater.php b/app/Support/Updater.php index 02c5f6eb0..7ebdfded6 100644 --- a/app/Support/Updater.php +++ b/app/Support/Updater.php @@ -2807,7 +2807,7 @@ private function isCustomLocalePath(string $relativePath): bool if (preg_match('#^locale/(?:routes_)?([a-z]{2}_[A-Z]{2})\.json$#', $path, $matches) !== 1) { return false; } - return !in_array($matches[1], ['it_IT', 'en_US', 'de_DE', 'fr_FR'], true); + return !in_array($matches[1], ['it_IT', 'en_US', 'de_DE', 'fr_FR', 'da_DK'], true); } /** diff --git a/installer/classes/Installer.php b/installer/classes/Installer.php index 4bef7b599..5c0dacbbe 100755 --- a/installer/classes/Installer.php +++ b/installer/classes/Installer.php @@ -32,12 +32,14 @@ public function createEnvFile($host, $user, $password, $database, $port = 3306, $normalizedLocale = 'de_DE'; } elseif ($normalizedLocale === 'fr' || $normalizedLocale === 'fr_fr') { $normalizedLocale = 'fr_FR'; + } elseif ($normalizedLocale === 'da' || $normalizedLocale === 'da_dk') { + $normalizedLocale = 'da_DK'; } elseif ($normalizedLocale === 'it' || $normalizedLocale === 'it_it') { $normalizedLocale = 'it_IT'; } // Fallback safety - if (!in_array($normalizedLocale, ['it_IT', 'en_US', 'de_DE', 'fr_FR'], true)) { + if (!in_array($normalizedLocale, ['it_IT', 'en_US', 'de_DE', 'fr_FR', 'da_DK'], true)) { $normalizedLocale = 'it_IT'; } @@ -226,6 +228,8 @@ public function importData() { 'de_de' => 'de_DE', 'fr' => 'fr_FR', 'fr_fr' => 'fr_FR', + 'da' => 'da_DK', + 'da_dk' => 'da_DK', ]; $normalizedLocale = strtolower(str_replace('-', '_', $locale)); $fullLocale = $localeMap[$normalizedLocale] ?? 'it_IT'; @@ -804,6 +808,7 @@ public function createAdminUser($nome, $cognome, $email, $password) { 'en' => 'en_US', 'en_us' => 'en_US', 'de' => 'de_DE', 'de_de' => 'de_DE', 'fr' => 'fr_FR', 'fr_fr' => 'fr_FR', + 'da' => 'da_DK', 'da_dk' => 'da_DK', ]; $supportedLocales = array_values(array_unique(array_values($localeMap))); $normalized = strtolower(str_replace('-', '_', $rawLocale)); @@ -1252,6 +1257,9 @@ private function getInstallerLocale(): string if ($locale === 'fr' || $locale === 'fr_fr') { return 'fr_FR'; } + if ($locale === 'da' || $locale === 'da_dk') { + return 'da_DK'; + } if ($locale === 'it' || $locale === 'it_it') { return 'it_IT'; } From fc4ebb48cc5a506c632e3e9073c5f705a791353e Mon Sep 17 00:00:00 2001 From: fabiodalez-dev Date: Wed, 22 Jul 2026 14:04:10 +0200 Subject: [PATCH 3/7] feat(#279): add Danish email-template override file (mail_templates/da_DK.php) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit de/en/fr each ship a mail_templates/.php that overrides the 22 email subjects+bodies over the in-code Italian base; da_DK had none, so any template not seeded in the DB fell back to Italian for Danish installs — concretely `user_registration_verification` (sent by NotificationService for the registration-verification email) would go out in Italian to Danish users. - app/Support/mail_templates/da_DK.php: 22 templates, exact key parity with en_US.php. 21 are generated from the Danish rows already seeded in data_da_DK.sql (so the override layer and the install seed stay identical); `user_registration_verification` — which lives only in the code base/override, not in the DB seed — is translated to Danish here. - SettingsMailTemplates::localeOverrides(): map da/da_DK -> da_DK so the file is actually loaded (it was previously unreachable). --- app/Support/SettingsMailTemplates.php | 2 +- app/Support/mail_templates/da_DK.php | 374 ++++++++++++++++++++++++++ 2 files changed, 375 insertions(+), 1 deletion(-) create mode 100644 app/Support/mail_templates/da_DK.php diff --git a/app/Support/SettingsMailTemplates.php b/app/Support/SettingsMailTemplates.php index 049159f89..586a00ea1 100644 --- a/app/Support/SettingsMailTemplates.php +++ b/app/Support/SettingsMailTemplates.php @@ -527,7 +527,7 @@ private static function localeOverrides(?string $locale): array return []; } // Map short and full codes to the locale files we ship. - $map = ['en' => 'en_US', 'de' => 'de_DE', 'fr' => 'fr_FR', 'en_US' => 'en_US', 'de_DE' => 'de_DE', 'fr_FR' => 'fr_FR']; + $map = ['en' => 'en_US', 'de' => 'de_DE', 'fr' => 'fr_FR', 'da' => 'da_DK', 'en_US' => 'en_US', 'de_DE' => 'de_DE', 'fr_FR' => 'fr_FR', 'da_DK' => 'da_DK']; $key = $map[$locale] ?? ($map[substr($locale, 0, 2)] ?? null); if ($key === null) { return []; diff --git a/app/Support/mail_templates/da_DK.php b/app/Support/mail_templates/da_DK.php new file mode 100644 index 000000000..a24f374d5 --- /dev/null +++ b/app/Support/mail_templates/da_DK.php @@ -0,0 +1,374 @@ + [ + 'subject' => '🎉 Invitation som Administrator', + 'body' => '

Velkommen til teamet!

+

Hej {{nome}} {{cognome}},

+

Du er blevet inviteret som administrator på {{app_name}}.

+
+

Dine adgangsrettigheder

+

Som administrator vil du have adgang til:

+
    +
  • Administration af bogkatalog
  • +
  • Administration af brugere og lån
  • +
  • Systemindstillinger
  • +
  • Rapporter og statistik
  • +
+
+

Sådan kommer du i gang:

+
    +
  1. Opret din adgangskode ved at klikke på knappen nedenfor
  2. +
  3. Log ind på administrationspanelet
  4. +
+

+ 🔐 Opret Adgangskode + 📊 Admin Dashboard +

+
+

⏰ Vigtigt

+

Linket til oprettelse af adgangskode er gyldigt i 24 timer.

+
+

Velkommen til teamet!

', + ], + 'admin_new_registration' => [ + 'subject' => '👤 Ny registreringsanmodning', + 'body' => ' +

Ny registreringsanmodning

+

En ny bruger har anmodet om adgang til Pinakes:

+

Brugeroplysninger:

+
    +
  • Navn: {{nome}} {{cognome}}
  • +
  • Email: {{email}}
  • +
  • Medlemskort: {{codice_tessera}}
  • +
  • Anmodningsdato: {{data_registrazione}}
  • +
+

Administrer Brugere

+ ', + ], + 'admin_new_review' => [ + 'subject' => '⭐ Ny anmeldelse afventer godkendelse', + 'body' => '

Ny anmeldelse afventer godkendelse

+

Der er modtaget en ny anmeldelse af bogen:

+

Bog: {{libro_titolo}}

+
+

Bedømmelse: {{stelle}} stjerner ⭐

+

Bruger: {{utente_nome}} ({{utente_email}})

+

Anmeldelsesdato: {{data_recensione}}

+

Titel: {{titolo_recensione}}

+

Beskrivelse:

+

{{descrizione_recensione}}

+
+

+ Administrer Anmeldelse +

+

For at godkende eller afvise denne anmeldelse skal du logge ind i administrationspanelet.

', + ], + 'copy_unavailable_user' => [ + 'subject' => 'ℹ️ Opdatering om din reservation', + 'body' => '

Opdatering om din reservation

+

Hej {{utente_nome}},

+

Vi informerer dig om, at det eksemplar, der var reserveret til din reservation af følgende bog, ikke længere er tilgængeligt:

+
+

Bog: {{libro_titolo}}

+

Årsag: {{motivo}}

+
+

Vi forsøger at tildele dig et andet eksemplar hurtigst muligt. Hvis der ikke bliver flere eksemplarer tilgængelige, forbliver din reservation i køen, og vi giver dig besked, så snart bogen igen er tilgængelig.

+

Vi beklager ulejligheden.

+

Med venlig hilsen,
Bibliotekets team

', + ], + 'loan_approved' => [ + 'subject' => '✅ Din udlånsanmodning er blevet godkendt!', + 'body' => '

Din udlånsanmodning er blevet godkendt!

+

Hej {{utente_nome}},

+

Vi er glade for at kunne fortælle dig, at din udlånsanmodning er blevet godkendt!

+

Lånedetaljer:

+
    +
  • Bog: {{libro_titolo}}
  • +
  • Startdato for lån: {{data_inizio}}
  • +
  • Udløbsdato: {{data_fine}}
  • +
  • Varighed: {{giorni_prestito}} dage
  • +
+
+

📦 Afhentning af bogen

+

{{pickup_instructions}}

+
+

Vigtigt: Husk at aflevere bogen inden udløbsdatoen. Du vil modtage en påmindelse et par dage før udløbet.

+

God fornøjelse med læsningen!

', + ], + 'loan_expiring_warning' => [ + 'subject' => '⚠️ Dit lån udløber snart', + 'body' => ' +

Påmindelse om udløb af lån

+

Hej {{utente_nome}},

+

Vi minder dig om, at dit lån snart udløber:

+

Lånedetaljer:

+
    +
  • Bog: {{libro_titolo}}
  • +
  • Udløbsdato: {{data_scadenza}}
  • +
  • Dage tilbage: {{giorni_rimasti}}
  • +
+
+

⏰ Handling påkrævet

+

For at undgå gebyrer skal du aflevere bogen inden udløbsdatoen eller kontakte biblioteket for en eventuel fornyelse.

+
+

Tak for samarbejdet!

+ ', + ], + 'loan_overdue_admin' => [ + 'subject' => 'Lån #{{prestito_id}} er forsinket', + 'body' => '

Forsinket lån

+

Lånet #{{prestito_id}} er nu i status forsinket.

+
    +
  • Bog: {{libro_titolo}}
  • +
  • Bruger: {{utente_nome}} ({{utente_email}})
  • +
  • Lånedato: {{data_prestito}}
  • +
  • Udløbsdato: {{data_scadenza}}
  • +
+

Grib ind for at kontakte brugeren og rykke for aflevering.

', + ], + 'loan_overdue_notification' => [ + 'subject' => '🚨 Lån udløbet - Handling påkrævet', + 'body' => ' +

Lån udløbet

+

Hej {{utente_nome}},

+

Dit lån er udløbet og skal afleveres omgående:

+

Lånedetaljer:

+
    +
  • Bog: {{libro_titolo}}
  • +
  • Udløbsdato: {{data_scadenza}}
  • +
  • Dage forsinket: {{giorni_ritardo}}
  • +
+
+

🚨 Akut handling påkrævet

+

Bogen skal afleveres omgående. Forsinket aflevering kan medføre sanktioner og suspendering af tjenesten.

+
+

Kontakt biblioteket omgående for at løse situationen.

+ ', + ], + 'loan_pickup_cancelled' => [ + 'subject' => '❌ Afhentning annulleret', + 'body' => '

Afhentning annulleret

+

Hej {{utente_nome}},

+

Vi informerer dig om, at afhentningen af følgende bog er blevet annulleret:

+
+

Bog: {{libro_titolo}}

+

Årsag: {{motivo}}

+
+

Bogen er blevet gjort tilgængelig for andre brugere. Hvis du stadig ønsker denne bog, opfordrer vi dig til at indsende en ny låneanmodning.

+

Med venlig hilsen,
Bibliotekets team

', + ], + 'loan_pickup_expired' => [ + 'subject' => '⏰ Afhentningsfristen er udløbet', + 'body' => '

Afhentningsfristen er udløbet

+

Hej {{utente_nome}},

+

Desværre har du ikke afhentet bogen inden for den fastsatte frist.

+
+

Bog: {{libro_titolo}}

+

Afhentningsfrist: {{scadenza_ritiro}}

+
+

Lånet er automatisk blevet annulleret, og bogen er blevet gjort tilgængelig for andre brugere.

+

Hvis du stadig ønsker denne bog, opfordrer vi dig til at indsende en ny låneanmodning.

+

Med venlig hilsen,
Bibliotekets team

', + ], + 'loan_pickup_ready' => [ + 'subject' => '📦 Bog klar til afhentning!', + 'body' => '

Bog klar til afhentning!

+

Hej {{utente_nome}},

+

Vi er glade for at kunne informere dig om, at din bog er klar til afhentning!

+
+

{{libro_titolo}}

+

Lånperiode: {{data_inizio}} - {{data_fine}}

+

Afhentningsfrist: {{scadenza_ritiro}}

+
+
+

📦 Sådan afhenter du

+

{{pickup_instructions}}

+
+

God fornøjelse med læsningen!

', + ], + 'loan_rejected' => [ + 'subject' => '❌ Din udlånsanmodning er ikke blevet godkendt', + 'body' => '

Din udlånsanmodning er ikke blevet godkendt

+

Hej {{utente_nome}},

+

Vi må desværre meddele dig, at din udlånsanmodning for bogen "{{libro_titolo}}" ikke er blevet godkendt.

+
+

Årsag:

+

{{motivo_rifiuto}}

+
+

Hvis du har spørgsmål eller ønsker yderligere oplysninger, er du velkommen til at kontakte os.

+

Med venlig hilsen,
Biblioteksteamet

', + ], + 'loan_request_notification' => [ + 'subject' => '📚 Ny udlånsanmodning', + 'body' => ' +

Ny udlånsanmodning

+

Der er modtaget en ny udlånsanmodning:

+

Detaljer:

+
    +
  • Bog: {{libro_titolo}}
  • +
  • Bruger: {{utente_nome}} ({{utente_email}})
  • +
  • Ønsket startdato: {{data_inizio}}
  • +
  • Ønsket slutdato: {{data_fine}}
  • +
  • Anmodningsdato: {{data_richiesta}}
  • +
+

Administrer Anmodning

+ ', + ], + 'loan_returned' => [ + 'subject' => '✅ Aflevering bekræftet', + 'body' => '

Aflevering bekræftet

+

Hej {{utente_nome}},

+

Vi bekræfter afleveringen af følgende bog. Tak!

+
+

Bog: {{libro_titolo}}

+

Afleveringsdato: {{data_restituzione}}

+
+

Vi håber, du nød læsningen. Vi ses snart på biblioteket!

+

Med venlig hilsen,
Bibliotekets team

', + ], + 'reservation_book_available' => [ + 'subject' => '📚 Reserveret bog klar til afhentning!', + 'body' => '

Din bog er klar til afhentning!

+

Hej {{utente_nome}},

+

Vi er glade for at kunne informere dig om, at bogen, du havde reserveret, nu er tilgængelig og klar til afhentning:

+
+

{{libro_titolo}}

+

Forfatter: {{libro_autore}}

+

ISBN: {{libro_isbn}}

+

Lånperiode: {{data_inizio}} - {{data_fine}}

+
+
+

📦 Næste skridt

+

Kom forbi biblioteket for at hente bogen. Husk at medbringe et gyldigt legitimationsdokument.

+
+

+ 📖 Se Bog + 👤 Mine Lån +

+

Reservationen er blevet konverteret til et lån, der afventer bekræftelse af afhentning.

', + ], + 'reservation_cancelled' => [ + 'subject' => '❌ Reservation annulleret', + 'body' => '

Reservation annulleret

+

Hej {{utente_nome}},

+

Vi informerer dig om, at din reservation af følgende bog er blevet annulleret:

+
+

Bog: {{libro_titolo}}

+

Årsag: {{motivo}}

+
+

Hvis du stadig ønsker denne bog, kan du foretage en ny reservation når som helst.

+

Med venlig hilsen,
Bibliotekets team

', + ], + 'reservation_expired' => [ + 'subject' => '⌛ Reservationen er udløbet', + 'body' => '

Reservationen er udløbet

+

Hej {{utente_nome}},

+

Din reservation af følgende bog er udløbet og er blevet lukket automatisk:

+
+

Bog: {{libro_titolo}}

+

Udløbet den: {{data_scadenza}}

+
+

Hvis du stadig er interesseret, kan du foretage en ny reservation når som helst.

+

Med venlig hilsen,
Bibliotekets team

', + ], + 'user_account_approved' => [ + 'subject' => 'Konto godkendt - Velkommen til biblioteket!', + 'body' => ' +

Din konto er blevet godkendt!

+

Hej {{nome}} {{cognome}},

+

Vi er glade for at kunne fortælle dig, at din konto er blevet godkendt af en administrator.

+

Du kan nu logge ind på systemet og begynde at booke bøger!

+

Detaljer om din konto:

+
    +
  • Email: {{email}}
  • +
  • Medlemskort: {{codice_tessera}}
  • +
+

Log ind nu

+

Velkommen til vores digitale bibliotek!

+ ', + ], + 'user_password_setup' => [ + 'subject' => '🔐 Opret din adgangskode', + 'body' => '

Opret din adgangskode

+

Hej {{nome}} {{cognome}},

+

Din konto på {{app_name}} er blevet oprettet. For at begynde at bruge systemet skal du oprette din adgangskode.

+
+

🔑 Konfigurér din konto

+

Klik på knappen nedenfor for at oprette din adgangskode:

+
+

+ 🔐 Opret Adgangskode +

+
+

⏰ Vigtigt

+

Linket er gyldigt i 24 timer. Hvis det udløber, bedes du kontakte en administrator for at få et nyt.

+
+

Hvis du ikke har anmodet om denne e-mail, kan du se bort fra den.

', + ], + 'user_registration_pending' => [ + 'subject' => 'Registrering modtaget - Afventer godkendelse', + 'body' => ' +

Velkommen {{nome}} {{cognome}}!

+

Din registreringsanmodning er blevet modtaget.

+

Kontodetaljer:

+
    +
  • Email: {{email}}
  • +
  • Medlemskort: {{codice_tessera}}
  • +
  • Registreringsdato: {{data_registrazione}}
  • +
+ {{sezione_verifica}} +
+

⏳ Konto afventer godkendelse

+

Din konto afventer godkendelse af en administrator. + Du vil modtage en bekræftelsesmail, når kontoen er blevet aktiveret.

+
+

Tak, fordi du valgte Pinakes!

+ ', + ], + 'user_registration_verification' => [ + 'subject' => 'Registrering modtaget - Bekræft din e-mail', + 'body' => '

Velkommen {{nome}} {{cognome}}!

+

Din registrering er modtaget.

+

Kontooplysninger:

+
    +
  • E-mail: {{email}}
  • +
  • Kortnummer: {{codice_tessera}}
  • +
  • Registreringsdato: {{data_registrazione}}
  • +
+{{sezione_verifica}} +
+

Bekræft din e-mailadresse

+

Efter bekræftelsen bliver din konto aktiv, og du kan logge ind med det samme.

+
+

Tak, fordi du valgte Pinakes!

', + ], + 'wishlist_book_available' => [ + 'subject' => '📖 Bog fra din ønskeliste er nu tilgængelig!', + 'body' => ' +

Gode nyheder!

+

Hej {{utente_nome}},

+

Bogen, du tilføjede til din ønskeliste, er nu tilgængelig til udlån:

+
+

{{libro_titolo}}

+

Forfatter: {{libro_autore}}

+

ISBN: {{libro_isbn}}

+

Tilgængelig fra: {{data_disponibilita}}

+
+
+

✨ Reservér med det samme!

+

Bogen er nu tilgængelig til reservation. Skynd dig, før en anden reserverer den!

+
+

+ 📚 Reservér Nu + ❤️ Administrér Ønskeliste +

+

Bogen bliver på din ønskeliste; du vil ikke modtage flere notifikationer om denne titel.

+ ', + ], +]; From c192d01e548d73e2754b5749523f2de037830b2f Mon Sep 17 00:00:00 2001 From: fabiodalez-dev Date: Wed, 22 Jul 2026 17:03:42 +0200 Subject: [PATCH 4/7] fix(#279): address self-review findings (email content, fallback map, comments) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to the multi-lens review of this PR. - app/Support/mail_templates/da_DK.php + installer/database/data_da_DK.sql: restore the loan_pickup_ready content the Danish translation had dropped — the {{giorni_prestito}} loan-duration line and the amber "⏰ pickup deadline … or the loan is automatically canceled" warning box that en_US/de_DE/fr_FR all carry. Both the override file and the DB seed now match the sibling locales. - app/Support/I18n.php: add fr_FR to the $availableLocales no-DB fallback map. It listed it_IT/en_US/de_DE (and now da_DK) but omitted fr_FR, so in an early-bootstrap / DB-unavailable state setLocale('fr_FR') returned false while the other bundled locales worked. Pre-existing gap, fixed while touching the map. - Refresh stale locale enumerations in comments to include da_DK: step0.php (validation list + the multilingual language-select heading/description now include a Danish line), installer/index.php, installer/classes/Installer.php. Not addressed here (needs release coordination, not a code fix): migrate_0.7.41.sql is named for 0.7.41 while version.json is still 0.7.40 — the release must be cut at >= 0.7.41 (create-release.sh bumps version.json) or the migration is skipped on upgrade per the migration-version rule. --- app/Support/I18n.php | 1 + app/Support/mail_templates/da_DK.php | 6 +++++- installer/classes/Installer.php | 2 +- installer/database/data_da_DK.sql | 2 +- installer/index.php | 2 +- installer/steps/step0.php | 7 ++++--- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/Support/I18n.php b/app/Support/I18n.php index dbb59ebcd..d663d717c 100644 --- a/app/Support/I18n.php +++ b/app/Support/I18n.php @@ -34,6 +34,7 @@ final class I18n 'it_IT' => 'Italiano', 'en_US' => 'English', 'de_DE' => 'Deutsch', + 'fr_FR' => 'Français', 'da_DK' => 'Dansk', ]; diff --git a/app/Support/mail_templates/da_DK.php b/app/Support/mail_templates/da_DK.php index a24f374d5..fd54ec670 100644 --- a/app/Support/mail_templates/da_DK.php +++ b/app/Support/mail_templates/da_DK.php @@ -184,7 +184,11 @@

{{libro_titolo}}

Lånperiode: {{data_inizio}} - {{data_fine}}

-

Afhentningsfrist: {{scadenza_ritiro}}

+

Varighed: {{giorni_prestito}} dage

+
+
+

⏰ Afhentningsfrist: {{scadenza_ritiro}}

+

Afhent bogen inden denne dato, ellers annulleres lånet automatisk.

📦 Sådan afhenter du

diff --git a/installer/classes/Installer.php b/installer/classes/Installer.php index 5c0dacbbe..c1aeba6ad 100755 --- a/installer/classes/Installer.php +++ b/installer/classes/Installer.php @@ -218,7 +218,7 @@ public function importData() { // Get locale from session first (most reliable), fallback to .env $locale = $_SESSION['app_locale'] ?? ($this->config['APP_LOCALE'] ?? 'it'); - // Convert locale code to full form (supports it, it_IT, en, en_US, de, de_DE, fr, fr_FR) + // Convert locale code to full form (supports it, it_IT, en, en_US, de, de_DE, fr, fr_FR, da, da_DK) $localeMap = [ 'it' => 'it_IT', 'it_it' => 'it_IT', diff --git a/installer/database/data_da_DK.sql b/installer/database/data_da_DK.sql index 4134ff8e9..560a3ba06 100644 --- a/installer/database/data_da_DK.sql +++ b/installer/database/data_da_DK.sql @@ -259,7 +259,7 @@ INSERT INTO `email_templates` VALUES (12,'wishlist_book_available','da_DK','📖 INSERT INTO `email_templates` VALUES (13,'reservation_book_available','da_DK','📚 Reserveret bog klar til afhentning!','

Din bog er klar til afhentning!

\n

Hej {{utente_nome}},

\n

Vi er glade for at kunne informere dig om, at bogen, du havde reserveret, nu er tilgængelig og klar til afhentning:

\n
\n

{{libro_titolo}}

\n

Forfatter: {{libro_autore}}

\n

ISBN: {{libro_isbn}}

\n

Lånperiode: {{data_inizio}} - {{data_fine}}

\n
\n
\n

📦 Næste skridt

\n

Kom forbi biblioteket for at hente bogen. Husk at medbringe et gyldigt legitimationsdokument.

\n
\n

\n 📖 Se Bog\n 👤 Mine Lån\n

\n

Reservationen er blevet konverteret til et lån, der afventer bekræftelse af afhentning.

','Email inviata quando un libro prenotato diventa disponibile e viene convertito in prestito.',1,NULL,NULL); INSERT INTO `email_templates` VALUES (14,'user_password_setup','da_DK','🔐 Opret din adgangskode','

Opret din adgangskode

\n

Hej {{nome}} {{cognome}},

\n

Din konto på {{app_name}} er blevet oprettet. For at begynde at bruge systemet skal du oprette din adgangskode.

\n
\n

🔑 Konfigurér din konto

\n

Klik på knappen nedenfor for at oprette din adgangskode:

\n
\n

\n 🔐 Opret Adgangskode\n

\n
\n

⏰ Vigtigt

\n

Linket er gyldigt i 24 timer. Hvis det udløber, bedes du kontakte en administrator for at få et nyt.

\n
\n

Hvis du ikke har anmodet om denne e-mail, kan du se bort fra den.

','Email inviata ai nuovi utenti per impostare la password del loro account.',1,NULL,NULL); INSERT INTO `email_templates` VALUES (15,'admin_invitation','da_DK','🎉 Invitation som Administrator','

Velkommen til teamet!

\n

Hej {{nome}} {{cognome}},

\n

Du er blevet inviteret som administrator på {{app_name}}.

\n
\n

Dine adgangsrettigheder

\n

Som administrator vil du have adgang til:

\n
    \n
  • Administration af bogkatalog
  • \n
  • Administration af brugere og lån
  • \n
  • Systemindstillinger
  • \n
  • Rapporter og statistik
  • \n
\n
\n

Sådan kommer du i gang:

\n
    \n
  1. Opret din adgangskode ved at klikke på knappen nedenfor
  2. \n
  3. Log ind på administrationspanelet
  4. \n
\n

\n 🔐 Opret Adgangskode\n 📊 Admin Dashboard\n

\n
\n

⏰ Vigtigt

\n

Linket til oprettelse af adgangskode er gyldigt i 24 timer.

\n
\n

Velkommen til teamet!

','Email inviata quando un utente viene invitato come amministratore.',1,NULL,NULL); -INSERT INTO `email_templates` VALUES (16,'loan_pickup_ready','da_DK','📦 Bog klar til afhentning!','

Bog klar til afhentning!

\n

Hej {{utente_nome}},

\n

Vi er glade for at kunne informere dig om, at din bog er klar til afhentning!

\n
\n

{{libro_titolo}}

\n

Lånperiode: {{data_inizio}} - {{data_fine}}

\n

Afhentningsfrist: {{scadenza_ritiro}}

\n
\n
\n

📦 Sådan afhenter du

\n

{{pickup_instructions}}

\n
\n

God fornøjelse med læsningen!

','Inviata quando un prestito è stato approvato e il libro è pronto per il ritiro.',1,NULL,NULL); +INSERT INTO `email_templates` VALUES (16,'loan_pickup_ready','da_DK','📦 Bog klar til afhentning!','

Bog klar til afhentning!

\n

Hej {{utente_nome}},

\n

Vi er glade for at kunne informere dig om, at din bog er klar til afhentning!

\n
\n

{{libro_titolo}}

\n

Lånperiode: {{data_inizio}} - {{data_fine}}

\n

Varighed: {{giorni_prestito}} dage

\n
\n
\n

⏰ Afhentningsfrist: {{scadenza_ritiro}}

\n

Afhent bogen inden denne dato, ellers annulleres lånet automatisk.

\n
\n
\n

📦 Sådan afhenter du

\n

{{pickup_instructions}}

\n
\n

God fornøjelse med læsningen!

','Inviata quando un prestito è stato approvato e il libro è pronto per il ritiro.',1,NULL,NULL); INSERT INTO `email_templates` VALUES (17,'loan_pickup_expired','da_DK','⏰ Afhentningsfristen er udløbet','

Afhentningsfristen er udløbet

\n

Hej {{utente_nome}},

\n

Desværre har du ikke afhentet bogen inden for den fastsatte frist.

\n
\n

Bog: {{libro_titolo}}

\n

Afhentningsfrist: {{scadenza_ritiro}}

\n
\n

Lånet er automatisk blevet annulleret, og bogen er blevet gjort tilgængelig for andre brugere.

\n

Hvis du stadig ønsker denne bog, opfordrer vi dig til at indsende en ny låneanmodning.

\n

Med venlig hilsen,
Bibliotekets team

','Inviata quando il tempo per ritirare un libro è scaduto e il prestito è stato annullato.',1,NULL,NULL); INSERT INTO `email_templates` VALUES (18,'loan_pickup_cancelled','da_DK','❌ Afhentning annulleret','

Afhentning annulleret

\n

Hej {{utente_nome}},

\n

Vi informerer dig om, at afhentningen af følgende bog er blevet annulleret:

\n
\n

Bog: {{libro_titolo}}

\n

Årsag: {{motivo}}

\n
\n

Bogen er blevet gjort tilgængelig for andre brugere. Hvis du stadig ønsker denne bog, opfordrer vi dig til at indsende en ny låneanmodning.

\n

Med venlig hilsen,
Bibliotekets team

','Inviata quando un ritiro viene annullato dall''amministratore.',1,NULL,NULL); INSERT INTO `email_templates` VALUES (19,'loan_returned','da_DK','✅ Aflevering bekræftet','

Aflevering bekræftet

\n

Hej {{utente_nome}},

\n

Vi bekræfter afleveringen af følgende bog. Tak!

\n
\n

Bog: {{libro_titolo}}

\n

Afleveringsdato: {{data_restituzione}}

\n
\n

Vi håber, du nød læsningen. Vi ses snart på biblioteket!

\n

Med venlig hilsen,
Bibliotekets team

','Inviata all\'utente quando un prestito viene registrato come restituito.',1,NULL,NULL); diff --git a/installer/index.php b/installer/index.php index 8cfe9bdd5..1080f5236 100755 --- a/installer/index.php +++ b/installer/index.php @@ -32,7 +32,7 @@ session_start(); // Start a fresh session } -// Normalize locale to canonical form (it_IT, en_US, de_DE) +// Normalize locale to canonical form (it_IT, en_US, de_DE, fr_FR, da_DK) function normalizeInstallerLocale(string $locale): string { $locale = str_replace('-', '_', strtolower($locale)); return match($locale) { diff --git a/installer/steps/step0.php b/installer/steps/step0.php index 5061d17ae..64ced3847 100644 --- a/installer/steps/step0.php +++ b/installer/steps/step0.php @@ -8,7 +8,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['language'])) { $selectedLanguage = $_POST['language']; - // Validate language — use canonical locale codes (it_IT, en_US, de_DE, fr_FR) + // Validate language — use canonical locale codes (it_IT, en_US, de_DE, fr_FR, da_DK) $allowedLanguages = ['it_IT', 'en_US', 'de_DE', 'fr_FR', 'da_DK']; if (!in_array($selectedLanguage, $allowedLanguages, true)) { $selectedLanguage = 'it_IT'; // Fallback to Italian @@ -43,12 +43,13 @@
🌍
-

Seleziona la Lingua / Select Language / Sprache wählen / Choisir la Langue

+

Seleziona la Lingua / Select Language / Sprache wählen / Choisir la Langue / Vælg Sprog

Scegli la lingua per l'installazione e per l'applicazione.
Choose the language for installation and application.
Wählen Sie die Sprache für die Installation und die Anwendung.
- Choisissez la langue pour l'installation et l'application. + Choisissez la langue pour l'installation et l'application.
+ Vælg sproget til installationen og applikationen.

From 27e2cce36b01c710eb722708740c9e80fa6f616e Mon Sep 17 00:00:00 2001 From: fabiodalez-dev Date: Wed, 22 Jul 2026 17:33:19 +0200 Subject: [PATCH 5/7] chore(#279): bump to 0.7.41, add migration test, modernize CI Node runtime The Code Quality workflow's migration-version guard failed because migrate_0.7.41.sql (0.7.41) was higher than version.json (0.7.40): the updater only runs migrations with version_compare(v, target, '<=') true, so as shipped the da_DK migration would be skipped on upgrade. This is the correct next release version for the Danish feature, so: - version.json 0.7.40 -> 0.7.41; README "What's New in v0.7.41" section. - tests/migration-0.7.41.unit.php: behavioural test that runs the REAL migration against a sandbox languages table and asserts da_DK is inserted with the canonical metadata, pre-existing locales are untouched, the upsert is idempotent on a second run, and a deactivated da_DK is re-activated. This also satisfies issue-237-regression's "release migration has a matching behavioural unit test" meta-check, which was the other latent CI failure waiting behind the version guard. - CI Node runtime: the deprecation warning flagged actions/checkout@v4 and actions/setup-node@v4 (Node 20 runtime, being retired). Bump ci-quality to actions/checkout@v6 + actions/setup-node@v5 + node 22, matching the versions codeql.yml/test-migrations.yml already use, and bump checkout@v4 -> v6 in ci-e2e.yml and ci-upgrade-smoke.yml. Verified locally against a real MySQL: migration guard passes, all tests/*.unit.php pass (incl. the new migration test + issue-237 32/32), route/tailwind/plugin-schema/autoloader static checks pass, PHPStan clean. --- .github/workflows/ci-e2e.yml | 2 +- .github/workflows/ci-quality.yml | 6 +- .github/workflows/ci-upgrade-smoke.yml | 2 +- README.md | 16 +++ tests/migration-0.7.41.unit.php | 141 +++++++++++++++++++++++++ version.json | 6 +- 6 files changed, 165 insertions(+), 8 deletions(-) create mode 100644 tests/migration-0.7.41.unit.php diff --git a/.github/workflows/ci-e2e.yml b/.github/workflows/ci-e2e.yml index 50771bc1f..b60cb193f 100644 --- a/.github/workflows/ci-e2e.yml +++ b/.github/workflows/ci-e2e.yml @@ -46,7 +46,7 @@ jobs: E2E_INSTALL_ROOT: ${{ github.workspace }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 # ── Apache2 + mod_php ─────────────────────────────────────────────────── # Install Apache before setup-php adds external package sources; the app diff --git a/.github/workflows/ci-quality.yml b/.github/workflows/ci-quality.yml index 2fad895da..a4b5c81ee 100644 --- a/.github/workflows/ci-quality.yml +++ b/.github/workflows/ci-quality.yml @@ -51,7 +51,7 @@ jobs: --health-retries=5 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -62,9 +62,9 @@ jobs: github-token: '' - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: - node-version: '20' + node-version: '22' # ── Dependency CVE scanning ─────────────────────────────────────────── - name: composer audit (known CVEs) diff --git a/.github/workflows/ci-upgrade-smoke.yml b/.github/workflows/ci-upgrade-smoke.yml index 3ca35cb9c..2dad9e449 100644 --- a/.github/workflows/ci-upgrade-smoke.yml +++ b/.github/workflows/ci-upgrade-smoke.yml @@ -64,7 +64,7 @@ jobs: --health-retries=5 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/README.md b/README.md index 26ed8ff18..2e506ef31 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,22 @@ Pinakes is a self-hosted, full-featured ILS for schools, municipalities, and pri --- +## What's New in v0.7.41 + +### Features +- **Danish language (da_DK)** ([#279](https://github.com/fabiodalez-dev/Pinakes/issues/279)) — Danish is now a fully selectable interface language, contributed by [@HansUwe52](https://github.com/HansUwe52). Ships the complete UI catalogue (`locale/da_DK.json`, full key parity with the Italian source), route slugs (`locale/routes_da_DK.json`), and the fresh-install seed in Danish (`installer/database/data_da_DK.sql`: 181 genres, 22 email templates, CMS pages, settings). `da_DK` is wired into the installer language step, the email/route fallback chains, and the bundled-locale updater path. Emails fall back to English when a Danish template is missing. + +### Fixes +- **Danish installer seed selection** ([#279](https://github.com/fabiodalez-dev/Pinakes/issues/279)) — the installer's locale maps only knew `it/en/de/fr`, so a Danish install silently seeded the Italian catalogue (genres + emails). All four maps in `Installer.php`, plus `PrivateModeMiddleware` and the `Updater` bundled-locale list, now include `da_DK`. Restored dropped content in the Danish `loan_pickup_ready` email and added the missing `fr_FR` entry to the `I18n` fallback map. + +### Database Changes +- `migrate_0.7.41.sql` — registers the `da_DK` row in the `languages` table on existing installs (idempotent upsert), so Danish appears in the language UI after upgrading. + +### Upgrade Notes +- Back up your database before updating (the in-app updater does this automatically). + +--- + ## What's New in v0.7.40 ### Features diff --git a/tests/migration-0.7.41.unit.php b/tests/migration-0.7.41.unit.php new file mode 100644 index 000000000..49c5ea3ad --- /dev/null +++ b/tests/migration-0.7.41.unit.php @@ -0,0 +1,141 @@ +set_charset('utf8mb4'); +} catch (\Throwable $e) { + // A migration test that silently skips its DB section is a false green in + // CI (both ci-quality and ci-e2e provision MySQL). Fail loudly instead. + fwrite(STDERR, "FAIL: database unreachable — the migration section is mandatory: {$e->getMessage()}\n"); + exit(1); +} + +$SB = 'zz_mig_languages_0741'; +$migration = (string) file_get_contents($root . '/installer/database/migrations/migrate_0.7.41.sql'); + +// Retarget the REAL migration at a sandbox table name so the test never +// collides with a live `languages` table. +$sandbox = static fn (string $sql): string => str_replace('`languages`', "`{$SB}`", $sql); + +$runMigration = static function () use ($db, $migration, $sandbox): void { + foreach (array_filter(array_map('trim', preg_split('/;\s*\n/', $sandbox(preg_replace('/^--.*$/m', '', $migration) ?? $migration)))) as $statement) { + if ($statement !== '') { + $db->query($statement); + } + } +}; + +$cleanup = static function () use ($db, $SB): void { + $db->query("DROP TABLE IF EXISTS {$SB}"); +}; + +try { + $cleanup(); + + // Recreate the languages schema (the columns the migration writes + the + // UNIQUE(code) key the ON DUPLICATE KEY UPDATE relies on). + $db->query("CREATE TABLE {$SB} ( + id int NOT NULL AUTO_INCREMENT, + code varchar(10) NOT NULL, + name varchar(100) NOT NULL, + native_name varchar(100) NOT NULL, + flag_emoji varchar(10) DEFAULT NULL, + is_default tinyint(1) DEFAULT 0, + is_active tinyint(1) DEFAULT 1, + translation_file varchar(255) DEFAULT NULL, + total_keys int DEFAULT 0, + translated_keys int DEFAULT 0, + completion_percentage decimal(5,2) DEFAULT 0.00, + created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + UNIQUE KEY unique_code (code) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"); + + // Pre-0.7.41 install state: existing locales present, da_DK absent. + $db->query("INSERT INTO {$SB} (code, name, native_name, is_default, is_active, translation_file) VALUES + ('it_IT','Italian','Italiano',1,1,'locale/it_IT.json'), + ('en_US','English','English',0,1,'locale/en_US.json')"); + + $before = (int) $db->query("SELECT COUNT(*) FROM {$SB} WHERE code='da_DK'")->fetch_row()[0]; + $check($before === 0, 'da_DK absent before migration (pre-0.7.41 state)'); + + $runMigration(); + + $row = $db->query("SELECT native_name, is_active, total_keys, translated_keys, completion_percentage, translation_file FROM {$SB} WHERE code='da_DK'")->fetch_assoc(); + $check($row !== null, 'da_DK row inserted by migration'); + $check($row !== null && $row['native_name'] === 'Dansk', 'native_name = Dansk'); + $check($row !== null && (int) $row['is_active'] === 1, 'da_DK is active'); + $check($row !== null && (int) $row['total_keys'] === 6579 && (int) $row['translated_keys'] === 6579, 'key counts = 6579/6579'); + $check($row !== null && (float) $row['completion_percentage'] === 100.00, 'completion_percentage = 100.00'); + $check($row !== null && $row['translation_file'] === 'locale/da_DK.json', 'translation_file = locale/da_DK.json'); + + $others = (int) $db->query("SELECT COUNT(*) FROM {$SB} WHERE code IN ('it_IT','en_US')")->fetch_row()[0]; + $check($others === 2, 'pre-existing locales left untouched'); + + // Idempotency: a second run must not error and must not duplicate. + $runMigration(); + $dupes = (int) $db->query("SELECT COUNT(*) FROM {$SB} WHERE code='da_DK'")->fetch_row()[0]; + $check($dupes === 1, 'second run does not duplicate da_DK (idempotent upsert)'); + + // Re-activation: a manually deactivated da_DK is switched back on. + $db->query("UPDATE {$SB} SET is_active=0 WHERE code='da_DK'"); + $runMigration(); + $reactivated = (int) $db->query("SELECT is_active FROM {$SB} WHERE code='da_DK'")->fetch_row()[0]; + $check($reactivated === 1, 'migration re-activates a deactivated da_DK'); + + $cleanup(); +} catch (\Throwable $e) { + $fail++; + echo " FAIL exception: {$e->getMessage()}\n"; + $cleanup(); +} + +echo "\n{$pass} PASS, {$fail} FAIL\n"; +exit($fail === 0 ? 0 : 1); diff --git a/version.json b/version.json index 3da1a9607..dfd9858b4 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "name": "Pinakes", - "version": "0.7.40", - "description": "Library Management System - Sistema di Gestione Bibliotecaria" + "name": "Pinakes", + "version": "0.7.41", + "description": "Library Management System - Sistema di Gestione Bibliotecaria" } From 3d7310fec6a8e41bfdc0e10a4884f5f4356429f8 Mon Sep 17 00:00:00 2001 From: fabiodalez-dev Date: Wed, 22 Jul 2026 20:58:58 +0200 Subject: [PATCH 6/7] fix: complete Danish installer localization --- config/default_texts.php | 32 +++++ installer/database/data_da_DK.sql | 36 +++--- .../database/migrations/migrate_0.7.41.sql | 4 +- locale/da_DK.json | 43 +++++-- locale/de_DE.json | 27 ++++- locale/en_US.json | 27 ++++- locale/fr_FR.json | 27 ++++- locale/it_IT.json | 27 ++++- storage/plugins/archives/ArchivesPlugin.php | 4 +- tests/code-quality.spec.js | 85 ++++++++++++- tests/danish-locale-279.unit.php | 112 ++++++++++++++++++ tests/migration-0.7.41.unit.php | 9 +- 12 files changed, 394 insertions(+), 39 deletions(-) create mode 100644 tests/danish-locale-279.unit.php diff --git a/config/default_texts.php b/config/default_texts.php index d2cfa025f..74b6733d6 100644 --- a/config/default_texts.php +++ b/config/default_texts.php @@ -97,4 +97,36 @@ 'cookie_marketing_description' => 'Ces cookies sont utilisés pour diffuser des publicités personnalisées.', ], ], + 'da_DK' => [ + 'app' => [ + 'footer_description' => 'Dit Pinakes-system til at katalogisere, administrere og dele din bogsamling.', + ], + 'contacts' => [ + 'page_title' => 'Kontakt os', + 'page_content' => '

Kontakt os for yderligere oplysninger.

', + 'privacy_text' => 'Dine data er beskyttet i henhold til vores privatlivspolitik.', + ], + 'privacy' => [ + 'page_title' => 'Privatlivspolitik', + 'page_content' => '

Dit privatliv er vigtigt for os.

', + 'cookie_banner_language' => 'da', + 'cookie_banner_country' => 'DK', + 'cookie_policy_content' => '

Denne side forklarer, hvordan vi bruger cookies på vores websted.

', + ], + 'cookie_banner' => [ + 'banner_description' => '

Vi bruger cookies til at forbedre din oplevelse. Ved at fortsætte med at besøge dette websted accepterer du vores brug af cookies.

', + 'accept_all_text' => 'Accepter alle', + 'reject_non_essential_text' => 'Afvis ikke-nødvendige', + 'save_selected_text' => 'Accepter valgte', + 'preferences_button_text' => 'Præferencer', + 'preferences_title' => 'Tilpas dine cookiepræferencer', + 'preferences_description' => '

Vi respekterer din ret til privatliv. Du kan vælge ikke at tillade visse typer cookies. Dine præferencer vil gælde for hele webstedet.

', + 'cookie_essential_name' => 'Nødvendige cookies', + 'cookie_essential_description' => 'Disse cookies er nødvendige for, at webstedet kan fungere, og kan ikke deaktiveres.', + 'cookie_analytics_name' => 'Analytiske cookies', + 'cookie_analytics_description' => 'Disse cookies hjælper os med at forstå, hvordan besøgende interagerer med webstedet.', + 'cookie_marketing_name' => 'Marketingcookies', + 'cookie_marketing_description' => 'Disse cookies bruges til at levere personlige annoncer.', + ], + ], ]; diff --git a/installer/database/data_da_DK.sql b/installer/database/data_da_DK.sql index 560a3ba06..b1efca32f 100644 --- a/installer/database/data_da_DK.sql +++ b/installer/database/data_da_DK.sql @@ -213,7 +213,7 @@ INSERT INTO `generi` VALUES (179,'Lyrisk mime - musikalsk',NULL,'2025-10-20 16:2 INSERT INTO `generi` VALUES (180,'Musikdrama',NULL,'2025-10-20 16:20:00','2025-10-20 16:20:00',11); INSERT INTO `generi` VALUES (181,'Oratorium',NULL,'2025-10-20 16:20:00','2025-10-20 16:20:00',11); INSERT INTO `home_content` (section_key, title, subtitle, content, button_text, button_link, is_active, display_order, created_at, updated_at) VALUES -('hero', 'Dit digitale bibliotek', 'Udforsk, reservér og administrer din bogsamling', NULL, 'Udforsk kataloget', '/catalogo', 1, -2, NOW(), NOW()), +('hero', 'Dit digitale bibliotek', 'Udforsk, reservér og administrer din bogsamling', NULL, 'Udforsk kataloget', '/katalog', 1, -2, NOW(), NOW()), ('features_title', 'Hvorfor vælge Pinakes', 'En moderne, intuitiv oplevelse af biblioteksadministration, altid lige ved hånden', NULL, NULL, NULL, 1, 0, NOW(), NOW()), ('feature_1', 'Forenklet administration', 'Katalogiser dine bøger, håndter lån og afleveringer med en intuitiv og hurtig grænseflade', 'fas fa-tasks', NULL, NULL, 1, 1, NOW(), NOW()), ('feature_2', 'Komplet katalogisering', 'Importer data fra ISBN, organiser efter kategorier, generer etiketter og spor hvert fysisk eksemplar', 'fas fa-book', NULL, NULL, 1, 2, NOW(), NOW()), @@ -223,23 +223,23 @@ INSERT INTO `home_content` (section_key, title, subtitle, content, button_text, ('latest_books_title', 'Seneste tilføjelser', 'Opdag de seneste tilføjelser til kataloget', NULL, NULL, NULL, 1, 5, NOW(), NOW()), ('genre_carousel', 'Udforsk de vigtigste genrer', 'Udforsk vores tematiske rødder, og lad dig inspirere af de tilgængelige titler.', NULL, NULL, NULL, 1, 6, NOW(), NOW()), ('events', 'Kommende arrangementer', 'Deltag i vores næste møder', NULL, NULL, NULL, 1, 7, NOW(), NOW()), -('cta', 'Klar til at komme i gang?', 'Registrer dig nu, og begynd at udforske vores katalog', NULL, 'Registrer dig nu', '/register', 1, 8, NOW(), NOW()); +('cta', 'Klar til at komme i gang?', 'Registrer dig nu, og begynd at udforske vores katalog', NULL, 'Registrer dig nu', '/registrer', 1, 8, NOW(), NOW()); SET FOREIGN_KEY_CHECKS=1; --- Themes with Italian descriptions +-- Themes with Danish descriptions INSERT INTO `themes` (`name`, `slug`, `version`, `author`, `description`, `active`, `settings`) VALUES -('Pinakes Classic', 'default', '1.0.0', 'Pinakes Team', 'Tema predefinito con colori magenta originali di Pinakes', 1, '{"colors": {"primary": "#d70161", "secondary": "#111827", "button": "#d70262", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Minimal', 'minimal-bw', '1.0.0', 'Pinakes Team', 'Design minimale con nero, grigio e bianco per un look pulito ed elegante', 0, '{"colors": {"primary": "#404040", "secondary": "#000000", "button": "#808080", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Ocean Blue', 'ocean-blue', '1.0.0', 'Pinakes Team', 'Tonalità blu oceano moderne e professionali per un\'interfaccia fresca', 0, '{"colors": {"primary": "#0284c7", "secondary": "#0c4a6e", "button": "#0ea5e9", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Forest Green', 'forest-green', '1.0.0', 'Pinakes Team', 'Verde smeraldo naturale che richiama la tranquillità della natura', 0, '{"colors": {"primary": "#059669", "secondary": "#064e3b", "button": "#10b981", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Sunset Orange', 'sunset-orange', '1.0.0', 'Pinakes Team', 'Arancione caldo e accogliente ispirato ai tramonti mediterranei', 0, '{"colors": {"primary": "#ea580c", "secondary": "#7c2d12", "button": "#f97316", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Burgundy', 'burgundy-red', '1.0.0', 'Pinakes Team', 'Rosso borgogna elegante e raffinato per un look sofisticato', 0, '{"colors": {"primary": "#be123c", "secondary": "#881337", "button": "#e11d48", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Teal Professional', 'teal-professional', '1.0.0', 'Pinakes Team', 'Verde acqua professionale perfetto per ambienti corporate', 0, '{"colors": {"primary": "#0d9488", "secondary": "#134e4a", "button": "#14b8a6", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Slate Gray', 'slate-gray', '1.0.0', 'Pinakes Team', 'Grigio ardesia moderno per un design neutro e contemporaneo', 0, '{"colors": {"primary": "#475569", "secondary": "#1e293b", "button": "#64748b", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Coral Warm', 'coral-warm', '1.0.0', 'Pinakes Team', 'Tonalità corallo calde e invitanti per un\'atmosfera accogliente', 0, '{"colors": {"primary": "#f43f5e", "secondary": "#9f1239", "button": "#fb7185", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), -('Navy Classic', 'navy-classic', '1.0.0', 'Pinakes Team', 'Blu navy classico e intramontabile per un look istituzionale', 0, '{"colors": {"primary": "#1e40af", "secondary": "#1e3a8a", "button": "#3b82f6", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'); +('Pinakes Classic', 'default', '1.0.0', 'Pinakes Team', 'Standardtema med Pinakes\' oprindelige magentafarver', 1, '{"colors": {"primary": "#d70161", "secondary": "#111827", "button": "#d70262", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Minimal', 'minimal-bw', '1.0.0', 'Pinakes Team', 'Minimalistisk design med sort, grå og hvid for et rent og elegant udtryk', 0, '{"colors": {"primary": "#404040", "secondary": "#000000", "button": "#808080", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Ocean Blue', 'ocean-blue', '1.0.0', 'Pinakes Team', 'Moderne og professionelle havblå nuancer til en frisk brugerflade', 0, '{"colors": {"primary": "#0284c7", "secondary": "#0c4a6e", "button": "#0ea5e9", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Forest Green', 'forest-green', '1.0.0', 'Pinakes Team', 'Naturlig smaragdgrøn, der fremkalder naturens ro', 0, '{"colors": {"primary": "#059669", "secondary": "#064e3b", "button": "#10b981", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Sunset Orange', 'sunset-orange', '1.0.0', 'Pinakes Team', 'Varm og indbydende orange inspireret af middelhavssolnedgange', 0, '{"colors": {"primary": "#ea580c", "secondary": "#7c2d12", "button": "#f97316", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Burgundy', 'burgundy-red', '1.0.0', 'Pinakes Team', 'Elegant og raffineret bordeauxrød til et sofistikeret udtryk', 0, '{"colors": {"primary": "#be123c", "secondary": "#881337", "button": "#e11d48", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Teal Professional', 'teal-professional', '1.0.0', 'Pinakes Team', 'Professionel blågrøn, perfekt til erhvervsmiljøer', 0, '{"colors": {"primary": "#0d9488", "secondary": "#134e4a", "button": "#14b8a6", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Slate Gray', 'slate-gray', '1.0.0', 'Pinakes Team', 'Moderne skifergrå til et neutralt og nutidigt design', 0, '{"colors": {"primary": "#475569", "secondary": "#1e293b", "button": "#64748b", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Coral Warm', 'coral-warm', '1.0.0', 'Pinakes Team', 'Varme og indbydende koralnuancer til en behagelig atmosfære', 0, '{"colors": {"primary": "#f43f5e", "secondary": "#9f1239", "button": "#fb7185", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'), +('Navy Classic', 'navy-classic', '1.0.0', 'Pinakes Team', 'Klassisk og tidløs marineblå til et institutionelt udtryk', 0, '{"colors": {"primary": "#1e40af", "secondary": "#1e3a8a", "button": "#3b82f6", "button_text": "#ffffff"}, "typography": {"font_family": "system-ui, sans-serif", "font_size_base": "16px"}, "logo": {"url": "", "width": "auto", "height": "50px"}, "advanced": {"custom_css": "", "custom_js": ""}}'); --- CMS Pages - Italian only +-- CMS pages in Danish INSERT INTO `cms_pages` VALUES (1,'chi-siamo','da_DK','Om os','

Velkommen til Pinakes

\n

Pinakes er et moderne, intuitivt og helt gratis biblioteksadministrationssystem. Bygget til at forenkle bogkatalogisering, håndtering af lån og administration af biblioteker af enhver størrelse.

\n\n

🎯 Vores mission

\n

At gøre biblioteksadministration tilgængelig for alle, uden licensomkostninger eller begrænsninger. Pinakes er 100% open source, frit og gratis for alle.

\n\n

✨ Vigtigste funktioner

\n
    \n
  • Smart katalogisering: Importer automatisk data fra ISBN, organiser efter kategorier, forfattere og brugerdefinerede klassifikationer
  • \n
  • Lånehåndtering: Komplet system til håndtering af lån, forfaldsdatoer, fornyelser og afleveringer
  • \n
  • Automatiske notifikationer: Påmindelser via e-mail om lånefrister og kommunikation med brugerne
  • \n
  • Moderne grænseflade: Responsivt design optimeret til computer, tablet og smartphone
  • \n
  • 100% open source: Fri kode, tilpasningsbar og uden skjulte omkostninger
  • \n
\n\n

🚀 Hvorfor vælge Pinakes?

\n

Pinakes opstod ud fra behovet for at tilbyde et professionelt, pålideligt og gratis værktøj til administration af skolebiblioteker, foreninger og private samlinger. Du behøver ikke være it-ekspert: den intuitive grænseflade gør det muligt for alle at komme i gang med det samme.

\n\n

📖 Kom i gang i dag

\n

Tilpas denne side med oplysninger om dit bibliotek, dit team og dine services. Gå til admin-panelet (CMS > Sider) for at redigere dette indhold og gøre det unikt.

\n\n

Dette er eksempelindhold. Tilpas det for at fortælle historien om dit bibliotek!

',NULL,NULL,1,'2025-10-01 10:35:27','2025-10-01 10:35:27'); INSERT INTO `cms_pages` VALUES (2,'privacy-policy','da_DK','Privatlivspolitik','

Privatlivspolitik

\n

Dette er en pladsholderside for privatlivspolitikken. Tilpas dette indhold i henhold til gældende lovgivning (GDPR) og de specifikke behov i dit bibliotek.

\n\n

1. Dataansvarlig

\n

[Indsæt oplysninger om den dataansvarlige her: navn, adresse, e-mail, telefon]

\n\n

2. Indsamlede data

\n

Personoplysninger indsamlet gennem dette system omfatter:

\n
    \n
  • Personoplysninger (navn, efternavn, fødselsdato)
  • \n
  • Kontaktoplysninger (e-mail, telefon, adresse)
  • \n
  • Data vedrørende foretagne lån
  • \n
\n\n

3. Formål med behandlingen

\n

Data behandles udelukkende til:

\n
    \n
  • Administration af brugerregister
  • \n
  • Administration af biblioteksudlån
  • \n
  • Afsendelse af lånerelateret kommunikation (forfaldsdatoer, fornyelser)
  • \n
\n\n

4. Den registreredes rettigheder

\n

Brugere har ret til at få adgang til deres data samt anmode om berigtigelse, sletning eller begrænsning af behandlingen, som fastsat i Forordning (EU) 2016/679 (GDPR).

\n\n

VIGTIGT: Dette er en eksempelskabelon. Kontakt en juridisk rådgiver for at udarbejde en privatlivspolitik, der overholder gældende lovgivning.

\n\n

Gå til admin-panelet (CMS > Sider) for at tilpasse denne side.

',NULL,NULL,1,'2025-10-01 10:35:27','2025-10-01 10:35:27'); @@ -306,11 +306,11 @@ INSERT INTO `system_settings` (`category`, `setting_key`, `setting_value`, `desc ('privacy', 'page_title', 'Privatlivspolitik', 'Titel på privatlivspolitiksiden', NOW()), ('privacy', 'page_content', '

Dit privatliv er vigtigt for os.

', 'Indhold i privatlivspolitikken', NOW()), ('privacy', 'cookie_banner_enabled', '1', 'Aktiver cookie-samtykkebanner', NOW()), -('privacy', 'cookie_banner_language', 'it', 'Sprog for cookie-banner', NOW()), -('privacy', 'cookie_banner_country', 'it', 'Land for cookie-banner', NOW()), +('privacy', 'cookie_banner_language', 'da', 'Sprog for cookie-banner', NOW()), +('privacy', 'cookie_banner_country', 'DK', 'Land for cookie-banner', NOW()), ('privacy', 'cookie_statement_link', '', 'Link til cookieerklæring', NOW()), ('privacy', 'cookie_technologies_link', '', 'Link til side om cookieteknologier', NOW()), -('privacy', 'cookie_policy_content', '', 'Indhold på cookiepolitiksiden', NOW()), +('privacy', 'cookie_policy_content', '

Denne side forklarer, hvordan vi bruger cookies på vores websted.

', 'Indhold på cookiepolitiksiden', NOW()), -- Cookie banner settings ('cookie_banner', 'banner_description', '

Vi bruger cookies til at forbedre din oplevelse. Ved at fortsætte med at besøge dette websted accepterer du vores brug af cookies.

', 'Beskrivelse af cookie-banner', NOW()), @@ -373,7 +373,7 @@ INSERT INTO `languages` (`code`, `name`, `native_name`, `flag_emoji`, `is_defaul ('en_US', 'English', 'English', '🇬🇧', 0, 1, 'locale/en_US.json', 4653, 4653, 100.00), ('de_DE', 'German', 'Deutsch', '🇩🇪', 0, 1, 'locale/de_DE.json', 4653, 4653, 100.00), ('fr_FR', 'French', 'Français', '🇫🇷', 0, 1, 'locale/fr_FR.json', 4993, 4993, 100.00), -('da_DK', 'Danish', 'Dansk', '🇩🇰', 0, 1, 'locale/da_DK.json', 6579, 6579, 100.00) +('da_DK', 'Danish', 'Dansk', '🇩🇰', 0, 1, 'locale/da_DK.json', 6604, 6604, 100.00) ON DUPLICATE KEY UPDATE name = VALUES(name), native_name = VALUES(native_name), flag_emoji = VALUES(flag_emoji), translation_file = VALUES(translation_file), total_keys = VALUES(total_keys), translated_keys = VALUES(translated_keys), completion_percentage = VALUES(completion_percentage), is_active = VALUES(is_active), is_default = VALUES(is_default); diff --git a/installer/database/migrations/migrate_0.7.41.sql b/installer/database/migrations/migrate_0.7.41.sql index c48cdd3fb..5ebe7fdcd 100644 --- a/installer/database/migrations/migrate_0.7.41.sql +++ b/installer/database/migrations/migrate_0.7.41.sql @@ -10,14 +10,14 @@ -- refreshes the metadata / re-activates the language. -- -- total_keys/translated_keys mirror the shipped locale/da_DK.json key count --- (6579 keys, exact parity with locale/it_IT.json). +-- (6604 keys, exact parity with locale/it_IT.json). -- -- See CLAUDE.md "Migration file version MUST be ≤ release version": this file -- runs only once version.json reaches 0.7.41 (updater compares -- migrationVersion <= toVersion). INSERT INTO `languages` (`code`, `name`, `native_name`, `flag_emoji`, `is_default`, `is_active`, `translation_file`, `total_keys`, `translated_keys`, `completion_percentage`, `created_at`, `updated_at`) -VALUES ('da_DK', 'Danish', 'Dansk', '🇩🇰', 0, 1, 'locale/da_DK.json', 6579, 6579, 100.00, NOW(), NOW()) +VALUES ('da_DK', 'Danish', 'Dansk', '🇩🇰', 0, 1, 'locale/da_DK.json', 6604, 6604, 100.00, NOW(), NOW()) ON DUPLICATE KEY UPDATE is_active = 1, name = VALUES(name), diff --git a/locale/da_DK.json b/locale/da_DK.json index 21c977aae..ef6849b7d 100644 --- a/locale/da_DK.json +++ b/locale/da_DK.json @@ -2110,14 +2110,14 @@ "Il codice %s ha un livello non valido (deve essere 1-7).": "Koden %s har et ugyldigt niveau (skal være 1-7).", "Il codice %s ha un nome non valido (minimo 2 caratteri).": "Koden %s har et ugyldigt navn (minimum 2 tegn).", "Il codice %s non è un figlio valido di %s.": "Koden %s er ikke et gyldigt underpunkt af %s.", - "Il codice %s è duplicato.": "Koden %s er duleret.", + "Il codice %s è duplicato.": "Koden %s er duplikeret.", "Il codice deve iniziare con le stesse tre cifre della classe principale": "Koden skal begynde med de samme tre cifre som hovedklassen", "Il codice lingua non può essere modificato dopo la creazione.": "Sprogkoden kan ikke ændres efter oprettelsen.", "Il codice lingua è obbligatorio (es. it_IT, en_US)": "Sprogkoden er påkrævet (f.eks. it_IT, en_US)", "Il codice scaffale \"%s\" esiste già. Usa un codice diverso.": "Reolkoden \"%s\" findes allerede. Brug en anden kode.", "Il codice tessera sarà generato automaticamente (formato: ADMIN-YYYYMMDD-XXX).": "Kortkoden genereres automatisk (format: ADMIN-YYYYMMDD-XXX).", "Il codice verrà inserito in un tag": "Koden vil blive indsat i et tag", - "Il codice verrà inserito in un tag ": "Koden vil blive indsat i et -tag i headeren. Inkluder ikke -tags", + "Il codice verrà inserito in un tag ": "Koden indsættes i et ", "Il cron utilizza gli stessi permessi dell'utente di sistema che lo esegue": "Cron bruger de samme rettigheder som den systembruger, der kører det", "Il database '%s' non è vuoto. Deve essere un database vuoto.": "Databasen '%s' er ikke tom. Det skal være en tom database.", "Il database deve essere vuoto.": "Databasen skal være tom.", @@ -2311,7 +2311,7 @@ "Impossibile leggere il file caricato": "Kunne ikke læse den uploadede fil", "Impossibile leggere il file di backup": "Kunne ikke læse backup-fil", "Impossibile leggere il file di log": "Kan ikke læse logfil", - "Impossibile modificare una copia attualmente in prestito. Prima termina il prestito o imposta lo stato su \"Disponibile\" per chiuderlo automaticamente.": "Kan ikke redigere et eksemplar, der i øjeblikket er udlånt. Afslut først udlånet eller indstil status til \"Verfügbar\" for at lukke det automatisk.", + "Impossibile modificare una copia attualmente in prestito. Prima termina il prestito o imposta lo stato su \"Disponibile\" per chiuderlo automaticamente.": "Kan ikke redigere et eksemplar, der i øjeblikket er udlånt. Afslut først udlånet eller indstil status til \"Tilgængelig\" for at lukke det automatisk.", "Impossibile notificare utente copia non disponibile": "Kan ikke give bruger besked om utilgængeligt eksemplar", "Impossibile notificare utente: dati mancanti": "Kan ikke give bruger besked: manglende data", "Impossibile processare l'immagine.": "Billedet kunne ikke behandles.", @@ -3406,7 +3406,7 @@ "Pending": "Afventende", "Per aggiornare automaticamente la sitemap ogni giorno:": "For at opdatere sitemap automatisk hver dag:", "Per assistenza, contatta l'amministrazione della biblioteca.": "Kontakt bibliotekets administration for at få hjælp.", - "Per inserire il codice JavaScript Analytics (Google Analytics, Matomo, ecc.), vai su {{variabile}}
per inserire dati dinamici.": "Tilpas indholdet af automatiske e-mails med TinyMCE-editoren. Brug pladsholderne {{variable}} til at indsætte dynamiske data.", - "Personalizza il contenuto delle mail automatiche con l'editor TinyMCE. Usa i segnaposto {{variabile}} per inserire dati dinamici.": "Tilpas indholdet af automatiske e-mails med TinyMCE-editoren. Brug pladsholderne {{variabile}} til at indsætte dynamiske data.", + "Personalizza il contenuto delle mail automatiche con l'editor TinyMCE. Usa i segnaposto mail(), PHPMailer o un server SMTP esterno.": "Vælg, hvordan e-mails skal sendes fra systemet. Du kan bruge PHP-funktionen mail(), PHPMailer eller en ekstern SMTP-server.", - "Scegli come inviare le email dal sistema. Puoi usare la funzione PHP get('/archive', $publicIndex); $app->get('/archive/{slug:[a-z0-9-]+}-{id:[0-9]+}', $publicShow); $app->get('/archive/{id:[0-9]+}', $publicShow); - // FIX F029: include fr_FR so the localised /archives route registers for French installs. - foreach (['it_IT', 'en_US', 'de_DE', 'fr_FR'] as $locale) { + // Register every bundled locale so localized archive routes are reachable. + foreach (['it_IT', 'en_US', 'de_DE', 'fr_FR', 'da_DK'] as $locale) { $base = $publicRouteFor($locale); if (!empty($base) && $base !== '/archive') { $app->get($base, $publicIndex); diff --git a/tests/code-quality.spec.js b/tests/code-quality.spec.js index 132ab0ac4..93ab51d20 100644 --- a/tests/code-quality.spec.js +++ b/tests/code-quality.spec.js @@ -311,15 +311,77 @@ test.describe.serial('Code Quality — 15 static analysis tests', () => { test('10. API endpoints documented in README.md exist in PHP code', () => { const readme = fs.readFileSync(path.join(ROOT, 'README.md'), 'utf-8'); - const phpSources = [ + const phpFiles = [ ...glob('app', '.php', ['vendor']), ...glob('storage/plugins', '.php'), - ].map(f => fs.readFileSync(f, 'utf-8')).join('\n'); + ].map(f => fs.readFileSync(f, 'utf-8')); + const phpSources = phpFiles.join('\n'); const DOC_RE = /`GET (\/(?:api|resync|oai|openurl|archives)[^\s`]+)/g; const violations = []; const normalizedPhpSources = phpSources.replace(/\{([^}:]+):[^}]+\}/g, '{$1}'); const normalizedRouteSources = normalizedPhpSources.replace(/\{[^}:]+(?::[^}]+)?\}/g, '{}'); + + // Return only the lexical body of each /api/v1 group callback. Looking + // for a group and a child route anywhere in the same file is too weak: + // an unrelated top-level GET later in that file would be a false pass. + const apiV1GroupBodies = source => { + const bodies = []; + const groupRe = /->group\(\s*(['"])\/api\/v1\1\s*,\s*function\b[^{]*\{/g; + let groupMatch; + while ((groupMatch = groupRe.exec(source)) !== null) { + const open = groupRe.lastIndex - 1; + let depth = 0; + let quote = null; + let escaped = false; + let lineComment = false; + let blockComment = false; + for (let i = open; i < source.length; i++) { + const ch = source[i]; + const next = source[i + 1] ?? ''; + if (lineComment) { + if (ch === '\n') lineComment = false; + continue; + } + if (blockComment) { + if (ch === '*' && next === '/') { blockComment = false; i++; } + continue; + } + if (quote !== null) { + if (escaped) { escaped = false; continue; } + if (ch === '\\') { escaped = true; continue; } + if (ch === quote) quote = null; + continue; + } + if (ch === '/' && next === '/') { lineComment = true; i++; continue; } + if (ch === '#') { lineComment = true; continue; } + if (ch === '/' && next === '*') { blockComment = true; i++; continue; } + if (ch === "'" || ch === '"' || ch === '`') { quote = ch; continue; } + if (ch === '{') depth++; + if (ch === '}' && --depth === 0) { + bodies.push(source.slice(open + 1, i)); + groupRe.lastIndex = i + 1; + break; + } + } + } + return bodies; + }; + const groupedGetExists = (source, child) => { + const escapedChild = child.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const getRe = new RegExp(`->get\\(\\s*(['"])${escapedChild}\\1`); + return apiV1GroupBodies(source).some(body => { + const normalized = body + .replace(/\{([^}:]+):[^}]+\}/g, '{$1}') + .replace(/\{[^}:]+(?::[^}]+)?\}/g, '{}'); + return getRe.test(normalized); + }); + }; + const falsePositiveFixture = "$app->group('/api/v1', function ($g) {}); $app->get('/auth/registration-fields', $handler);"; + expect(groupedGetExists(falsePositiveFixture, '/auth/registration-fields'), + 'a top-level GET outside the /api/v1 callback must not satisfy the route check' + ).toBe(false); + let m; while ((m = DOC_RE.exec(readme)) !== null) { // Strip the query string + hash before matching against the PHP @@ -330,7 +392,24 @@ test.describe.serial('Code Quality — 15 static analysis tests', () => { // `{}` to align with the PHP-side normalisation above. const pathOnly = m[1].split('?')[0].split('#')[0]; const search = pathOnly.replace(/\/$/, '').replace(/\{[^}:]+(?::[^}]+)?\}/g, '{}'); - if (!normalizedRouteSources.includes(search)) violations.push(m[1]); + let found = normalizedRouteSources.includes(search); + + // Slim plugins commonly register `/api/v1` once with group(), then + // declare child routes as `/auth/...`. Require the GET child literal + // inside that exact group's callback so unrelated routes elsewhere + // in the same PHP file cannot satisfy a documented API path. + if (search.startsWith('/api/v1/')) { + const child = search.slice('/api/v1'.length); + const escapedSearch = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const directGetRe = new RegExp(`->get\\(\\s*(['"])${escapedSearch}\\1`); + found = phpFiles.some(source => { + const normalized = source + .replace(/\{([^}:]+):[^}]+\}/g, '{$1}') + .replace(/\{[^}:]+(?::[^}]+)?\}/g, '{}'); + return directGetRe.test(normalized) || groupedGetExists(source, child); + }); + } + if (!found) violations.push(m[1]); } expect(violations, `Endpoints documented in README but no matching route found in PHP:\n${violations.map(v => ' GET ' + v).join('\n')}` diff --git a/tests/danish-locale-279.unit.php b/tests/danish-locale-279.unit.php new file mode 100644 index 000000000..51fd8b797 --- /dev/null +++ b/tests/danish-locale-279.unit.php @@ -0,0 +1,112 @@ +{{variabile}} per inserire dati dinamici.'; +$check(str_contains((string) ($danish[$tinyMceKey] ?? ''), '{{variabile}}'), 'TinyMCE placeholder token is preserved verbatim'); +$styleKey = "Il codice verrà inserito in un tag "; +$styleValue = (string) ($danish[$styleKey] ?? ''); +$check(str_contains($styleValue, ''), 'literal style tags survive translation'); +$check( + !str_contains(json_encode($danish, JSON_UNESCAPED_UNICODE) ?: '', 'duleret') + && !str_contains(json_encode($danish, JSON_UNESCAPED_UNICODE) ?: '', 'Verfügbar') + && !str_contains(json_encode($danish, JSON_UNESCAPED_UNICODE) ?: '', 'analyseculies'), + 'known corrupt or cross-language translations are absent' +); + +$analyticsPrefixKey = 'Per inserire il codice JavaScript Analytics (Google Analytics, Matomo, ecc.), vai su Date: Thu, 23 Jul 2026 16:33:10 +0200 Subject: [PATCH 7/7] fix: use %s instead of the non-standard %n placeholder in loan-extension strings CodeRabbit flagged %n (a dangerous C sprintf specifier PHP rejects) in the bulk loan-extension count strings. They are only ever expanded via JS String.replace, so no crash occurs today, but %n is a footgun if ever passed to PHP sprintf/vsprintf. Switched to the standard %s (count) + %d (days), which sprintf accepts and the placeholder-parity check recognizes. Keeps all shared locales byte-identical across the open PRs. --- locale/da_DK.json | 4 ++-- locale/de_DE.json | 4 ++-- locale/en_US.json | 4 ++-- locale/fr_FR.json | 4 ++-- locale/it_IT.json | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/locale/da_DK.json b/locale/da_DK.json index ef6849b7d..6620a6aba 100644 --- a/locale/da_DK.json +++ b/locale/da_DK.json @@ -6594,10 +6594,10 @@ "Estendi prestiti selezionati": "Forlæng valgte lån", "%d prestiti selezionati": "%d lån valgt", "Estendere i prestiti selezionati?": "Forlæng de valgte lån?", - "%n prestiti verranno estesi di %d giorni.": "%n lån forlænges med %d dage.", + "%s prestiti verranno estesi di %d giorni.": "%s lån forlænges med %d dage.", "Prestiti estesi": "Lån forlænget", "Nessun prestito esteso": "Ingen lån forlænget", - "%n prestiti estesi di %d giorni.": "%n lån forlænget med %d dage.", + "%s prestiti estesi di %d giorni.": "%s lån forlænget med %d dage.", "Selezione o numero di giorni non validi.": "Ugyldigt valg eller antal dage.", "Estensione non riuscita, riprova.": "Forlængelsen mislykkedes. Prøv igen.", "Estensione annullata: almeno un prestito entrerebbe in conflitto con un altro prestito o una prenotazione.": "Forlængelsen blev annulleret: Mindst ét lån ville være i konflikt med et andet lån eller en reservation.", diff --git a/locale/de_DE.json b/locale/de_DE.json index 6bc4df30a..923e6dbd0 100644 --- a/locale/de_DE.json +++ b/locale/de_DE.json @@ -6594,10 +6594,10 @@ "Estendi prestiti selezionati": "Ausgewählte Ausleihen verlängern", "%d prestiti selezionati": "%d Ausleihen ausgewählt", "Estendere i prestiti selezionati?": "Ausgewählte Ausleihen verlängern?", - "%n prestiti verranno estesi di %d giorni.": "%n Ausleihen werden um %d Tage verlängert.", + "%s prestiti verranno estesi di %d giorni.": "%s Ausleihen werden um %d Tage verlängert.", "Prestiti estesi": "Ausleihen verlängert", "Nessun prestito esteso": "Keine Ausleihe verlängert", - "%n prestiti estesi di %d giorni.": "%n Ausleihen um %d Tage verlängert.", + "%s prestiti estesi di %d giorni.": "%s Ausleihen um %d Tage verlängert.", "Selezione o numero di giorni non validi.": "Ungültige Auswahl oder Anzahl der Tage.", "Estensione non riuscita, riprova.": "Verlängerung fehlgeschlagen, bitte erneut versuchen.", "Estensione annullata: almeno un prestito entrerebbe in conflitto con un altro prestito o una prenotazione.": "Verlängerung abgebrochen: Mindestens eine Ausleihe würde mit einer anderen Ausleihe oder Reservierung in Konflikt geraten.", diff --git a/locale/en_US.json b/locale/en_US.json index 3d5ff4a3b..ac9813d6f 100644 --- a/locale/en_US.json +++ b/locale/en_US.json @@ -6594,10 +6594,10 @@ "Estendi prestiti selezionati": "Extend selected loans", "%d prestiti selezionati": "%d loans selected", "Estendere i prestiti selezionati?": "Extend the selected loans?", - "%n prestiti verranno estesi di %d giorni.": "%n loans will be extended by %d days.", + "%s prestiti verranno estesi di %d giorni.": "%s loans will be extended by %d days.", "Prestiti estesi": "Loans extended", "Nessun prestito esteso": "No loan extended", - "%n prestiti estesi di %d giorni.": "%n loans extended by %d days.", + "%s prestiti estesi di %d giorni.": "%s loans extended by %d days.", "Selezione o numero di giorni non validi.": "Invalid selection or number of days.", "Estensione non riuscita, riprova.": "Extension failed, please try again.", "Estensione annullata: almeno un prestito entrerebbe in conflitto con un altro prestito o una prenotazione.": "Extension cancelled: at least one loan would conflict with another loan or reservation.", diff --git a/locale/fr_FR.json b/locale/fr_FR.json index df10f4cdd..117184a4d 100644 --- a/locale/fr_FR.json +++ b/locale/fr_FR.json @@ -6594,10 +6594,10 @@ "Estendi prestiti selezionati": "Prolonger les prêts sélectionnés", "%d prestiti selezionati": "%d prêts sélectionnés", "Estendere i prestiti selezionati?": "Prolonger les prêts sélectionnés ?", - "%n prestiti verranno estesi di %d giorni.": "%n prêts seront prolongés de %d jours.", + "%s prestiti verranno estesi di %d giorni.": "%s prêts seront prolongés de %d jours.", "Prestiti estesi": "Prêts prolongés", "Nessun prestito esteso": "Aucun prêt prolongé", - "%n prestiti estesi di %d giorni.": "%n prêts prolongés de %d jours.", + "%s prestiti estesi di %d giorni.": "%s prêts prolongés de %d jours.", "Selezione o numero di giorni non validi.": "Sélection ou nombre de jours invalide.", "Estensione non riuscita, riprova.": "La prolongation a échoué, veuillez réessayer.", "Estensione annullata: almeno un prestito entrerebbe in conflitto con un altro prestito o una prenotazione.": "Prolongation annulée : au moins un prêt entrerait en conflit avec un autre prêt ou une réservation.", diff --git a/locale/it_IT.json b/locale/it_IT.json index 31e21b6cd..7a97a440d 100644 --- a/locale/it_IT.json +++ b/locale/it_IT.json @@ -6594,10 +6594,10 @@ "Estendi prestiti selezionati": "Estendi prestiti selezionati", "%d prestiti selezionati": "%d prestiti selezionati", "Estendere i prestiti selezionati?": "Estendere i prestiti selezionati?", - "%n prestiti verranno estesi di %d giorni.": "%n prestiti verranno estesi di %d giorni.", + "%s prestiti verranno estesi di %d giorni.": "%s prestiti verranno estesi di %d giorni.", "Prestiti estesi": "Prestiti estesi", "Nessun prestito esteso": "Nessun prestito esteso", - "%n prestiti estesi di %d giorni.": "%n prestiti estesi di %d giorni.", + "%s prestiti estesi di %d giorni.": "%s prestiti estesi di %d giorni.", "Selezione o numero di giorni non validi.": "Selezione o numero di giorni non validi.", "Estensione non riuscita, riprova.": "Estensione non riuscita, riprova.", "Estensione annullata: almeno un prestito entrerebbe in conflitto con un altro prestito o una prenotazione.": "Estensione annullata: almeno un prestito entrerebbe in conflitto con un altro prestito o una prenotazione.",