feat: i18n support with first translations

This commit is contained in:
2026-02-21 10:45:41 +01:00
parent a5281a7750
commit b8005bec30
48 changed files with 2792 additions and 462 deletions

View File

@@ -0,0 +1,320 @@
{
"common.save": "Salva",
"common.cancel": "Annulla",
"common.clear": "Cancella",
"common.settings": "Impostazioni",
"common.tasks": "Attività",
"common.running": "in esecuzione",
"common.pending": "in attesa",
"activity.posts": "Post",
"activity.pages": "Pagine",
"activity.media": "Contenuti media",
"activity.tags": "Tag",
"activity.aiAssistant": "Assistente IA",
"activity.import": "Importa",
"activity.sourceControl": "Controllo sorgente",
"activity.toggleHint": "(clicca di nuovo per mostrare/nascondere la barra laterale)",
"tasks.backgroundTasks": "Attività in background",
"tasks.clearCompleted": "Cancella completate",
"tasks.recent": "Recenti",
"tasks.noActive": "Nessuna attività attiva",
"tasks.cancelTask": "Annulla attività",
"tasks.triggerTitle": "{running} in esecuzione, {pending} in attesa",
"app.taskCompleted": "Attività completata: {message}",
"app.taskFailed": "Attività non riuscita: {message}",
"app.databaseRebuildFailed": "Ricostruzione database non riuscita",
"app.textReindexFailed": "Reindicizzazione testo non riuscita",
"app.sitemapGenerationFailed": "Generazione sitemap non riuscita",
"app.previewOpenFailed": "Impossibile aprire lanteprima del post selezionato",
"app.metadataDiff": "Diff Metadati",
"app.importComplete": "Import completato: {posts} post, {media} file multimediali",
"settings.language.english": "Inglese",
"settings.language.german": "Tedesco",
"settings.language.french": "Francese",
"settings.language.italian": "Italiano",
"settings.language.spanish": "Spagnolo",
"settings.language.portuguese": "Portoghese (Português)",
"settings.language.dutch": "Olandese (Nederlands)",
"settings.language.polish": "Polacco (Polski)",
"settings.language.russian": "Russo (Русский)",
"settings.language.japanese": "Giapponese (日本語)",
"settings.language.chinese": "Cinese (中文)",
"settings.language.korean": "Coreano (한국어)",
"settings.language.arabic": "Arabo (العربية)",
"settings.language.hindi": "Hindi",
"settings.language.turkish": "Turco (Türkçe)",
"settings.language.swedish": "Svedese (Svenska)",
"settings.language.danish": "Danese (Dansk)",
"settings.language.norwegian": "Norvegese (Norsk)",
"settings.language.finnish": "Finlandese (Suomi)",
"settings.language.czech": "Ceco (Čeština)",
"settings.project.title": "Progetto",
"settings.project.browse": "Sfoglia",
"settings.project.reset": "Reimposta",
"settings.project.resetDefault": "Ripristina predefinito",
"settings.project.selectDataFolder": "Seleziona cartella dati del progetto",
"settings.editor.title": "Editor di testo",
"settings.editor.mode.wysiwyg": "WYSIWYG (editor visuale)",
"settings.editor.mode.markdown": "Markdown (sorgente)",
"settings.editor.mode.preview": "Anteprima (sola lettura)",
"settings.editor.diff.inline": "In linea",
"settings.editor.diff.sideBySide": "Affiancato",
"settings.content.title": "Categorie post",
"settings.content.renderInLists": "Mostra negli elenchi",
"settings.content.showTitles": "Mostra titoli",
"settings.ai.title": "Assistente IA",
"settings.ai.noModels": "Nessun modello disponibile",
"settings.publishing.ftpTitle": "Pubblicazione FTP",
"settings.publishing.sshTitle": "Pubblicazione SSH",
"settings.data.title": "Manutenzione database",
"settings.data.fileSystemTitle": "File system",
"settings.search.placeholder": "Cerca impostazioni...",
"settings.search.noResults": "No impostazioni found matching \"{query}\"",
"settings.search.clear": "Cancella ricerca",
"settings.toast.publishingSaved": "Credenziali di pubblicazione salvate",
"settings.toast.saveCredentialsFailed": "Impossibile save credentials",
"settings.toast.credentialsCleared": "Credenziali {type} cancellate",
"settings.toast.projectSaved": "Project impostazioni saved",
"settings.toast.projectSaveFailed": "Impossibile save project impostazioni",
"settings.toast.categoryAdded": "Categoria \"{category}\" aggiunta",
"settings.toast.categoryAddFailed": "Impossibile add category",
"settings.toast.categoryExists": "La categoria esiste già",
"settings.toast.categoryProtected": "Impossibile eliminare la categoria standard \"{category}\"",
"settings.toast.categoryAtLeastOne": "Deve esserci almeno una categoria",
"settings.toast.categoryRemoved": "Categoria \"{category}\" rimossa",
"settings.toast.categoryRemoveFailed": "Impossibile remove category",
"settings.toast.categoriesReset": "Categorie ripristinate ai predefiniti",
"settings.toast.categoriesResetFailed": "Impossibile reset categories",
"settings.toast.categorySettingsUpdateFailed": "Impossibile update category impostazioni",
"settings.toast.systemPromptSaved": "Prompt di sistema salvato",
"settings.toast.systemPromptSaveFailed": "Impossibile save system prompt",
"settings.toast.systemPromptReset": "Prompt di sistema ripristinato al predefinito",
"settings.toast.systemPromptResetFailed": "Impossibile reset system prompt",
"settings.toast.apiKeySaved": "Chiave API salvata e convalidata",
"settings.toast.apiKeyInvalid": "Chiave API non valida",
"settings.toast.apiKeySaveFailed": "Impossibile save API key",
"settings.toast.defaultModelUpdated": "Modello predefinito aggiornato",
"settings.toast.defaultModelUpdateFailed": "Impossibile set default model",
"settings.toast.rebuildPostsLoading": "Rebuilding post database...",
"settings.toast.rebuildPostsSuccess": "Database post ricostruito",
"settings.toast.rebuildPostsFailed": "Impossibile rebuild post database",
"settings.toast.rebuildMediaLoading": "Ricostruzione database media...",
"settings.toast.rebuildMediaSuccess": "Database media ricostruito",
"settings.toast.rebuildMediaFailed": "Impossibile rebuild media database",
"settings.toast.rebuildLinksLoading": "Ricostruzione dei link dei post...",
"settings.toast.rebuildLinksSuccess": "Link dei post ricostruiti",
"settings.toast.rebuildLinksFailed": "Impossibile rebuild post links",
"settings.toast.thumbnailsLoading": "Generazione miniature in corso...",
"settings.toast.thumbnailsGenerated": "Generate {count} miniature",
"settings.toast.thumbnailsAlreadyExist": "Tutte le miniature esistono già",
"settings.toast.thumbnailsComplete": "Generazione miniature completata",
"settings.toast.thumbnailsFailed": "Impossibile generate thumbnails",
"chat.setupTitle": "Configurazione chat IA",
"chat.apiKeyRequiredTitle": "Chiave API OpenCode Zen richiesta",
"chat.apiKeyRequiredDescription": "Inserisci la tua chiave API OpenCode per abilitare la chat IA.",
"chat.apiKeyPlaceholder": "Inserisci la tua chiave API...",
"chat.apiKeySave": "Salva chiave",
"chat.apiKeyValidating": "Convalida in corso...",
"chat.apiKeyInvalid": "Chiave API non valida. Controlla e riprova.",
"chat.apiKeyValidationFailed": "Impossibile validate API key.",
"chat.newChat": "Nuova chat",
"chat.welcomeTitle": "Benvenuto nellassistente IA",
"chat.welcomeDescription": "I can help you manage your post and media. Try asking me to:",
"chat.welcomeTipSearch": "Ricerca for post about a specific topic",
"chat.welcomeTipDetails": "Ottieni dettagli su un post specifico",
"chat.welcomeTipTags": "Elenca tutti i tag o le categorie del tuo blog",
"chat.welcomeTipMetadata": "Update metadata for post or media",
"chat.welcomeTipImages": "Elenca tutte le immagini nella tua libreria media",
"chat.role.you": "Tu",
"chat.role.assistant": "Assistente",
"chat.stop": "Ferma",
"chat.inputPlaceholder": "Scrivi un messaggio...",
"chat.errorPrefix": "Errore: {error}",
"chat.errorNoResponse": "Impossibile get a response. Please try again.",
"chat.errorEmptyResponse": "Il modello ha restituito una risposta vuota. Prova un modello diverso o riformula la domanda.",
"chat.errorGeneric": "Sorry, an error occurred while processing your messaggio.",
"chat.cancelledSuffix": "(annullato)",
"aiSuggestions.title": "Analisi immagine IA",
"aiSuggestions.close": "Chiudi",
"aiSuggestions.analyzing": "Analisi dellimmagine in corso...",
"aiSuggestions.titleField": "Titolo",
"aiSuggestions.altField": "Testo alternativo",
"aiSuggestions.captionField": "Didascalia",
"aiSuggestions.hasExisting": "(ha un valore esistente)",
"aiSuggestions.current": "Attuale",
"aiSuggestions.intro": "Seleziona quali valori generati dallIA applicare. I valori esistenti vengono mantenuti per impostazione predefinita.",
"aiSuggestions.empty": "Nessun suggerimento è stato generato per questa immagine.",
"aiSuggestions.wait": "Attendere...",
"aiSuggestions.applySelected": "Applica selezionati",
"insert.title.link": "Inserisci link",
"insert.title.image": "Inserisci immagine",
"insert.tab.linkInternal": "Collega al post",
"insert.tab.imageInternal": "Libreria media",
"insert.tab.linkExternal": "URL esterno",
"insert.tab.imageExternal": "Immagine esterna",
"insert.searchPlaceholder.link": "Ricerca post by title or content...",
"insert.searchPlaceholder.image": "Ricerca media by name, title, or alt text...",
"insert.status.searching": "Ricerca...",
"insert.status.typeMore": "Digita almeno 2 caratteri per cercare",
"insert.status.noResults": "Nessun {kind} trovato per \"{query}\"",
"insert.label.url": "Indirizzo URL",
"insert.label.linkTextOptional": "Testo link (opzionale)",
"insert.label.altText": "Testo alternativo",
"insert.placeholder.linkUrl": "https://esempio.it",
"insert.placeholder.imageUrl": "https://esempio.it/immagine.jpg",
"insert.placeholder.linkText": "Clicca qui",
"insert.placeholder.imageAlt": "Descrizione dellimmagine",
"insert.submit.link": "Inserisci link",
"insert.submit.image": "Inserisci immagine",
"insert.hint.internal": "Usa ↑↓ per navigare, Invio per selezionare, Esc per chiudere",
"insert.hint.external": "Inserisci URL e premi Invio o clicca il pulsante, Esc per chiudere",
"insert.hint.canonicalPost": "Canonico: /YYYY/MM/DD/slug",
"insert.hint.canonicalMedia": "Canonico: /media/YYYY/MM/file.ext",
"postLinks.loading": "Caricamento link...",
"postLinks.link": "collegamento",
"postLinks.links": "link",
"postLinks.linksTo": "Collega a ({count})",
"postLinks.linkedBy": "Collegato da ({count})",
"postLinks.openTitle": "Apri: {title}",
"docs.title": "Documentazione",
"docs.subtitle": "Guida utente per questa versione installata di bDS.",
"gitDiff.header": "Differenza: {target}",
"gitDiff.noProject": "Nessun progetto attivo selezionato.",
"gitDiff.noProjectPath": "Impossibile risolvere il percorso del progetto.",
"gitDiff.loadFailed": "Impossibile load diff.",
"gitDiff.loading": "Caricamento diff...",
"gitDiff.changedFiles": "File modificati",
"gitDiff.previousFile": "File precedente",
"gitDiff.nextFile": "File successivo",
"errorModal.error": "Errore",
"errorModal.stackTrace": "Traccia dello stack",
"errorModal.copyClipboard": "Copia negli appunti",
"errorModal.copy": "Copia",
"errorModal.noStack": "Nessuna traccia dello stack disponibile",
"confirmDelete.title": "Conferma eliminazione",
"confirmDelete.promptPost": "Sei sicuro di voler eliminare il post",
"confirmDelete.promptMedia": "Sei sicuro di voler eliminare il file multimediale",
"confirmDelete.warning": "Attenzione:",
"confirmDelete.referencedBy": "Questo {itemType} è referenziato dai seguenti elementi:",
"confirmDelete.note": "Leliminazione di questo {itemType} rimuoverà tutti questi riferimenti.",
"confirmDelete.cancel": "Annulla",
"confirmDelete.deletePost": "Elimina post",
"confirmDelete.deleteMedia": "Elimina media",
"confirmDelete.itemType.post": "articolo",
"confirmDelete.itemType.media": "file multimediale",
"lightbox.close": "Chiudi (Esc)",
"lightbox.previous": "Precedente (←)",
"lightbox.next": "Successivo (→)",
"credentials.error.load": "Impossibile load credentials:",
"credentials.error.save": "Impossibile save credentials:",
"credentials.toast.saved": "Credenziali salvate",
"credentials.toast.saveFailed": "Impossibile save credentials",
"credentials.toast.testing": "Test della connessione {type} in corso...",
"credentials.toast.connectionFailed": "Connection fallito - check credentials",
"credentials.tab.ftp": "Accesso FTP",
"credentials.tab.ssh": "Accesso SSH",
"credentials.ftp.title": "Pubblicazione FTP",
"credentials.ftp.description": "Configura FTP per pubblicare il tuo blog su un server web.",
"credentials.ssh.title": "Pubblicazione SSH",
"credentials.ssh.description": "Configura SSH per una pubblicazione sicura sul tuo server.",
"credentials.field.host": "Server",
"credentials.field.username": "Nome utente",
"credentials.field.password": "Password di accesso",
"credentials.field.sshKeyPath": "Percorso chiave SSH",
"credentials.action.testConnection": "Testa connessione",
"credentials.ftp.placeholder.host": "ftp.esempio.it",
"credentials.ftp.placeholder.username": "utente-ftp",
"credentials.ftp.placeholder.password": "Inserisci password",
"credentials.ssh.placeholder.host": "server.esempio.it",
"credentials.ssh.placeholder.username": "utente-ssh",
"credentials.ssh.placeholder.keyPath": "~/.ssh/chiave_id_rsa",
"gitSidebar.header": "CONTROLLO SORGENTE",
"gitSidebar.loading": "Caricamento...",
"gitSidebar.error.fetchRemoteUpdates": "Impossibile fetch remote updates.",
"gitSidebar.error.refreshRemoteState": "Impossibile aggiornare lo stato di tracciamento remoto.",
"gitSidebar.error.gitMissing": "Eseguibile Git non trovato. Installa Git e riavvia lapp.",
"gitSidebar.error.noActiveProject": "Nessun progetto attivo selezionato.",
"gitSidebar.error.loadRepoStatus": "Impossibile caricare lo stato del repository.",
"gitSidebar.error.initFailed": "Impossibile initialize git repository.",
"gitSidebar.error.actionFailed": "Impossibile {action}.",
"gitSidebar.error.commitFailed": "Impossibile commit changes.",
"gitSidebar.progress.preparingInit": "Preparazione inizializzazione repository...",
"gitSidebar.progress.pushingRemote": "Invio dei commit al remoto... può richiedere tempo per upload grandi.",
"gitSidebar.progress.fetching": "Recupero aggiornamenti remoti...",
"gitSidebar.progress.pulling": "Recupero ultime modifiche...",
"gitSidebar.progress.pruningLfs": "Pulizia cache locale Git LFS...",
"gitSidebar.progress.committing": "Creazione commit...",
"gitSidebar.progress.initializingRepo": "Inizializzazione repository...",
"gitSidebar.history.synced": "Sincronizzato",
"gitSidebar.history.localOnly": "Solo locale",
"gitSidebar.history.remoteOnly": "Solo remoto",
"gitSidebar.init.transcript": "Registro di inizializzazione",
"gitSidebar.aria.repoActions": "Azioni repository",
"gitSidebar.aria.openChanges": "Modifiche aperte",
"gitSidebar.aria.commitStatusLegend": "Legenda stato commit",
"gitSidebar.aria.versionHistory": "Cronologia versioni",
"gitSidebar.action.fetch": "Recupera",
"gitSidebar.action.fetching": "Recupero...",
"gitSidebar.action.pull": "Esegui pull",
"gitSidebar.action.pulling": "Pull in corso...",
"gitSidebar.action.push": "Esegui push",
"gitSidebar.action.pushing": "Push in corso...",
"gitSidebar.action.pruneLfs": "Pulisci LFS",
"gitSidebar.action.pruning": "Pulizia...",
"gitSidebar.action.commit": "Registra commit",
"gitSidebar.action.committing": "Commit in corso...",
"gitSidebar.action.initializeGit": "Inizializza Git",
"gitSidebar.action.initializing": "Inizializzazione...",
"gitSidebar.openChanges": "Apri Changes ({count})",
"gitSidebar.versionHistory": "Cronologia versioni ({count})",
"gitSidebar.loadingChanges": "Caricamento modifiche...",
"gitSidebar.noChanges": "Nessuna modifica",
"gitSidebar.loadingHistory": "Caricamento cronologia...",
"gitSidebar.noCommits": "Nessun commit ancora",
"gitSidebar.branch": "Ramo: {branch}",
"gitSidebar.aheadBehind": "avanti {ahead} / indietro {behind}",
"gitSidebar.notRepo": "Questo progetto non è un repository git.",
"gitSidebar.placeholder.remoteUrl": "URL facoltativo del repository remoto",
"gitSidebar.placeholder.commitMessage": "Messaggio di commit",
"editor.untitled": "Senza titolo",
"tabBar.style": "Stile",
"tabBar.loading": "Caricamento...",
"tabBar.unknown": "Sconosciuto",
"tabBar.preview": "Anteprima",
"tabBar.modified": "Modificato",
"tabBar.closeHint": "Chiudi (Ctrl+W)",
"tabBar.scrollLeft": "Scorri le schede a sinistra",
"tabBar.scrollRight": "Scorri le schede a destra",
"tabBar.commitTitle": "Revisione {hash}",
"tabBar.error.fetchPostTitle": "Impossibile fetch post title:",
"tabBar.error.fetchChatTitle": "Impossibile fetch chat title:",
"tabBar.error.fetchImportTitle": "Impossibile fetch import definition title:",
"tabBar.error.fetchCommitTitle": "Impossibile fetch commit titles:",
"metadataDiff.title": "Strumento diff metadati",
"metadataDiff.description": "Confronta i metadati dei post tra database e file markdown. Correggi incongruenze causate da bug o modifiche manuali.",
"metadataDiff.error.loadStats": "Impossibile load database statistics",
"metadataDiff.error.scan": "Impossibile scan for differences",
"metadataDiff.progress.starting": "Avvio scansione...",
"metadataDiff.progress.scanningPublished": "Scanning published post...",
"metadataDiff.progress.scanning": "Scansione in corso...",
"metadataDiff.action.scan": "Cerca differenze",
"metadataDiff.action.rescan": "Riesegui scansione",
"metadataDiff.stats.totalPosts": "Post totali",
"metadataDiff.stats.published": "Pubblicati",
"metadataDiff.stats.drafts": "Bozze",
"metadataDiff.stats.mediaFiles": "File multimediali",
"metadataDiff.summary.noDiffs": "✅ No differences found! All {total} published post are in sync.",
"metadataDiff.summary.withDiffs": "⚠️ Found {count} post with differences out of {total} published post.",
"metadataDiff.group.differences": "Differenze {label}",
"metadataDiff.group.postsCount": "{count} post",
"metadataDiff.sync.failed": "fallito",
"metadataDiff.sync.dbToFile.title": "Aggiorna i file con i valori del database",
"metadataDiff.sync.dbToFile.success": "Synced {success} post to files{fallito}",
"metadataDiff.sync.dbToFile.error": "Impossibile sync to files",
"metadataDiff.sync.fileToDb.title": "Aggiorna il database con i valori dei file",
"metadataDiff.sync.fileToDb.success": "Synced {success} files to database{fallito}",
"metadataDiff.sync.fileToDb.error": "Impossibile sync to database",
"metadataDiff.value.database": "Database locale",
"metadataDiff.value.file": "File sorgente",
"metadataDiff.empty": "Fai clic su \"Scansiona differenze\" per confrontare i metadati del database con quelli dei file."
}