- Add GitHub Actions workflow to run backend (pytest) and frontend (vitest) tests on PRs and pushes to main - Replace hardcoded locale parity tests with dynamic discovery from the resources registry, so new languages are tested automatically - Add unused key detection test that scans source files for i18n key references, with optional chaining normalization - Remove 149 genuinely unused translation keys from all 7 locale files - Add missing keys to it-IT (7) and ru-RU (5) with English fallback
916 lines
47 KiB
TypeScript
916 lines
47 KiB
TypeScript
export const itIT = {
|
|
common: {
|
|
search: "Cerca...",
|
|
create: "Nuovo",
|
|
new: "Nuovo",
|
|
cancel: "Annulla",
|
|
delete: "Elimina",
|
|
edit: "Modifica",
|
|
theme: "Tema",
|
|
signOut: "Esci",
|
|
noMatches: "Nessun risultato trovato",
|
|
tryDifferentSearch: "Prova con un termine di ricerca diverso.",
|
|
light: "Chiaro",
|
|
dark: "Scuro",
|
|
system: "Sistema",
|
|
loading: "Caricamento...",
|
|
note: "Nota",
|
|
insight: "Approfondimento",
|
|
newSource: "Nuova fonte",
|
|
newNotebook: "Nuovo quaderno",
|
|
newPodcast: "Nuovo podcast",
|
|
language: "Lingua",
|
|
english: "English",
|
|
chinese: "简体中文",
|
|
japanese: "日本語",
|
|
russian: "Русский",
|
|
source: "Fonte",
|
|
notebook: "Quaderno",
|
|
podcast: "Podcast",
|
|
quickActions: "Azioni rapide",
|
|
quickActionsDesc: "Navigazione, ricerca, domande, tema",
|
|
appName: "Open Notebook",
|
|
add: "Aggiungi",
|
|
remove: "Rimuovi",
|
|
confirm: "Conferma",
|
|
warning: "Attenzione",
|
|
error: "Errore",
|
|
success: "Successo",
|
|
model: "Modello",
|
|
back: "Indietro",
|
|
next: "Avanti",
|
|
done: "Fatto",
|
|
processing: "Elaborazione...",
|
|
creating: "Creazione...",
|
|
linked: "Collegato",
|
|
adding: "Aggiunta in corso...",
|
|
addSelected: "Aggiungi selezionati",
|
|
customModel: "Modello personalizzato",
|
|
failed: "fallito",
|
|
current: "Corrente",
|
|
save: "Salva",
|
|
writeNote: "Scrivi nota",
|
|
batchMode: "Modalità batch",
|
|
optional: "Opzionale",
|
|
type: "Tipo",
|
|
title: "Titolo",
|
|
created: "Creato {time}",
|
|
updated: "Aggiornato {time}",
|
|
actions: "Azioni",
|
|
noResults: "Nessun risultato",
|
|
references: "Riferimenti",
|
|
refreshPage: "Prova ad aggiornare la pagina",
|
|
refresh: "Aggiorna",
|
|
aiGenerated: "Generato da IA",
|
|
human: "Umano",
|
|
unknown: "Sconosciuto",
|
|
notes: "Note",
|
|
chat: "Chat",
|
|
deleteForever: "Elimina definitivamente",
|
|
connectionError: "Errore di connessione",
|
|
unableToConnect: "Impossibile connettersi al server API",
|
|
retryConnection: "Riprova connessione",
|
|
diagnosticInfo: "Informazioni diagnostiche",
|
|
version: "Versione",
|
|
built: "Compilato",
|
|
apiUrl: "URL API",
|
|
frontendUrl: "URL Frontend",
|
|
checkConsoleLogs: "Controlla la console del browser per log dettagliati (cerca i messaggi 🔧 [Config])",
|
|
yes: "Sì",
|
|
no: "No",
|
|
saving: "Salvataggio...",
|
|
description: "Descrizione",
|
|
saveToNote: "Salva come nota",
|
|
copyToClipboard: "Copia negli appunti",
|
|
close: "Chiudi",
|
|
insights: "Approfondimenti",
|
|
progress: "Progresso",
|
|
deleting: "Eliminazione...",
|
|
created_label: "Creato",
|
|
updated_label: "Aggiornato",
|
|
download: "Scarica",
|
|
saveChanges: "Salva modifiche",
|
|
name: "Nome",
|
|
default: "Predefinito",
|
|
nameRequired: "Il nome è obbligatorio",
|
|
modelConfiguration: "Configurazione modello",
|
|
resetToDefault: "Ripristina predefinito",
|
|
reasoning: "Ragionamento",
|
|
searchTerms: "Termini di ricerca",
|
|
strategy: "Strategia",
|
|
individualAnswers: "Risposte individuali ({count})",
|
|
finalAnswer: "Risposta finale",
|
|
notebookLabel: "Quaderno: {name}",
|
|
itemNotFound: "Questo {type} non è stato trovato",
|
|
accessibility: {
|
|
transformationViews: "Viste trasformazioni",
|
|
searchKB: "Chiedi o cerca nella tua base di conoscenza",
|
|
enterQuestion: "Inserisci la tua domanda per interrogare la base di conoscenza",
|
|
enterSearch: "Inserisci la query di ricerca",
|
|
searchKBBtn: "Cerca nella base di conoscenza",
|
|
podcastViews: "Viste podcast",
|
|
ytVideo: "Video YouTube",
|
|
askResponse: "Risposta alla domanda",
|
|
searchNotebooks: "Cerca quaderni",
|
|
},
|
|
url: "URL",
|
|
errorDetails: "Dettagli errore",
|
|
editTransformation: "Modifica trasformazione",
|
|
retry: "Riprova",
|
|
traditionalChinese: "繁體中文",
|
|
portuguese: "Português",
|
|
completed: "completato",
|
|
saveSuccess: "Salvato con successo",
|
|
contextModes: {
|
|
off: "Non incluso nella chat",
|
|
insights: "Solo approfondimenti",
|
|
full: "Contenuto completo",
|
|
clickToCycle: "Clicca per cambiare",
|
|
},
|
|
clickToEdit: "Clicca per modificare",
|
|
},
|
|
apiErrors: {
|
|
notebookNotFound: "Quaderno non trovato",
|
|
sourceNotFound: "Fonte non trovata",
|
|
transformationNotFound: "Trasformazione non trovata",
|
|
fileUploadFailed: "Caricamento file fallito",
|
|
urlRequired: "L'URL è obbligatorio per il tipo link",
|
|
contentRequired: "Il contenuto è obbligatorio per il tipo testo",
|
|
invalidSourceType: "Tipo di fonte non valido",
|
|
processingFailed: "Elaborazione fallita",
|
|
failedToQueue: "Impossibile accodare l'elaborazione",
|
|
invalidSortBy: "Il campo di ordinamento deve essere 'created' o 'updated'",
|
|
invalidSortOrder: "L'ordine deve essere 'asc' o 'desc'",
|
|
accessDenied: "Accesso al file negato",
|
|
fileNotFoundOnServer: "File non trovato sul server",
|
|
searchFailed: "Ricerca fallita",
|
|
askFailed: "Richiesta fallita",
|
|
pleaseEnterQuestion: "Inserisci una domanda",
|
|
pleaseConfigureModels: "Configura tutti i modelli richiesti",
|
|
failedToCreateSession: "Impossibile creare la sessione",
|
|
failedToUpdateSession: "Impossibile aggiornare la sessione",
|
|
failedToDeleteSession: "Impossibile eliminare la sessione",
|
|
failedToSendMessage: "Impossibile inviare il messaggio",
|
|
unauthorized: "Accesso non autorizzato, controlla la password",
|
|
invalidPassword: "Password non valida",
|
|
embeddingModelRequired: "Questa funzionalità richiede un modello di embedding. Configurane uno nella sezione Modelli.",
|
|
strategyModelNotFound: "Modello strategia non trovato",
|
|
answerModelNotFound: "Modello risposta non trovato",
|
|
finalAnswerModelNotFound: "Modello risposta finale non trovato",
|
|
noAnswerGenerated: "Nessuna risposta generata",
|
|
genericError: "Si è verificato un errore imprevisto",
|
|
},
|
|
connectionErrors: {
|
|
apiTitle: "Impossibile connettersi al server API",
|
|
apiDesc: "Il server API di Open Notebook non è raggiungibile",
|
|
dbTitle: "Connessione al database fallita",
|
|
dbDesc: "Il server API è in esecuzione, ma il database non è accessibile",
|
|
troubleshooting: "Questo di solito significa:",
|
|
apiUnreachable1: "Il server API non è in esecuzione",
|
|
apiUnreachable2: "Il server API è su un indirizzo diverso",
|
|
apiUnreachable3: "Problemi di connettività di rete",
|
|
dbFailed1: "SurrealDB non è in esecuzione",
|
|
dbFailed2: "Le impostazioni di connessione al database sono errate",
|
|
dbFailed3: "Problemi di rete tra API e database",
|
|
quickFixes: "Soluzioni rapide:",
|
|
setApiUrl: "Imposta la variabile d'ambiente API_URL:",
|
|
checkSurreal: "Verifica se SurrealDB è in esecuzione:",
|
|
seeDocumentation: "Per istruzioni dettagliate, consulta:",
|
|
docLink: "Documentazione Open Notebook",
|
|
showTechnical: "Mostra dettagli tecnici",
|
|
attemptedUrl: "URL tentato",
|
|
message: "Messaggio",
|
|
technicalDetails: "Dettagli tecnici",
|
|
stackTrace: "Stack trace",
|
|
retryLabel: "Riprova connessione",
|
|
retryHint: "Premi R o clicca il pulsante per riprovare",
|
|
dockerLabel: "Per docker",
|
|
localDevLabel: "Per sviluppo locale",
|
|
},
|
|
auth: {
|
|
loginTitle: "Open Notebook",
|
|
loginDesc: "Inserisci la password per accedere all'applicazione",
|
|
passwordPlaceholder: "Password",
|
|
signingIn: "Accesso in corso...",
|
|
signIn: "Accedi",
|
|
connectErrorHint: "Impossibile connettersi al server. Verifica che l'API sia in esecuzione.",
|
|
},
|
|
navigation: {
|
|
collect: "Raccogli",
|
|
process: "Elabora",
|
|
create: "Crea",
|
|
manage: "Gestisci",
|
|
sources: "Fonti",
|
|
notebooks: "Quaderni",
|
|
askAndSearch: "Chiedi e cerca",
|
|
podcasts: "Podcast",
|
|
models: "Modelli",
|
|
transformations: "Trasformazioni",
|
|
transformation: "Trasformazione",
|
|
settings: "Impostazioni",
|
|
advanced: "Avanzate",
|
|
nav: "Navigazione",
|
|
language: "Cambia lingua",
|
|
theme: "Tema",
|
|
ask: "Chiedi",
|
|
},
|
|
notebooks: {
|
|
title: "Quaderni",
|
|
newNotebook: "Nuovo quaderno",
|
|
searchPlaceholder: "Cerca quaderni...",
|
|
archived: "Archiviati",
|
|
archive: "Archivia",
|
|
unarchive: "Ripristina",
|
|
deleteNotebook: "Elimina quaderno",
|
|
deleteNotebookDesc: "Sei sicuro di voler eliminare \"{name}\"? Questa azione non può essere annullata.",
|
|
deleteNotebookLoading: "Caricamento anteprima eliminazione...",
|
|
deleteNotebookNotes: "{count} nota/e verranno eliminate definitivamente.",
|
|
deleteNotebookNoNotes: "Nessuna nota da eliminare.",
|
|
deleteNotebookExclusiveSources: "{count} fonte/i esistono solo in questo quaderno.",
|
|
deleteNotebookSharedSources: "{count} fonte/i sono condivise con altri quaderni e verranno scollegate.",
|
|
deleteNotebookNoSources: "Nessuna fonte in questo quaderno.",
|
|
deleteExclusiveSourcesLabel: "Elimina fonti esclusive",
|
|
keepExclusiveSourcesLabel: "Scollega e mantieni",
|
|
activeNotebooks: "Quaderni attivi",
|
|
archivedNotebooks: "Quaderni archiviati",
|
|
notFound: "Quaderno non trovato",
|
|
notFoundDesc: "Il quaderno richiesto non esiste.",
|
|
updated: "Aggiornato",
|
|
namePlaceholder: "Nome quaderno",
|
|
addDescription: "Aggiungi descrizione...",
|
|
noNotesYet: "Ancora nessuna nota",
|
|
deleteNote: "Elimina Nota",
|
|
deleteNoteConfirm: "Sei sicuro di voler eliminare questa nota? Questa azione non può essere annullata.",
|
|
noteCreatedSuccess: "Nota creata con successo",
|
|
failedToCreateNote: "Impossibile creare la nota",
|
|
noteUpdatedSuccess: "Nota aggiornata con successo",
|
|
failedToUpdateNote: "Impossibile aggiornare la nota",
|
|
noteDeletedSuccess: "Nota eliminata con successo",
|
|
failedToDeleteNote: "Impossibile eliminare la nota",
|
|
createNew: "Crea nuovo quaderno",
|
|
createNewDesc: "Inserisci un nome e una descrizione opzionale per iniziare.",
|
|
descPlaceholder: "Aggiungi più informazioni su questo quaderno qui...",
|
|
createSuccess: "Quaderno creato con successo",
|
|
updateSuccess: "Quaderno aggiornato con successo",
|
|
deleteSuccess: "Quaderno eliminato con successo",
|
|
},
|
|
sources: {
|
|
title: "Fonti",
|
|
add: "Aggiungi fonte",
|
|
addNew: "Aggiungi nuova fonte",
|
|
addExisting: "Aggiungi fonte esistente",
|
|
delete: "Elimina Fonte",
|
|
statusPreparing: "In preparazione",
|
|
statusQueued: "In coda",
|
|
statusProcessing: "In elaborazione",
|
|
statusCompleted: "Completato",
|
|
statusFailed: "Fallito",
|
|
statusPreparingDesc: "Preparazione all'elaborazione",
|
|
statusQueuedDesc: "In attesa di elaborazione",
|
|
statusProcessingDesc: "In fase di elaborazione",
|
|
statusCompletedDesc: "Elaborato con successo",
|
|
statusFailedDesc: "Elaborazione fallita",
|
|
failedToLoad: "Impossibile caricare le fonti",
|
|
allSourcesDesc: "Visualizza tutte le tue fonti qui. Puoi aggiungere nuove fonti o gestire quelle esistenti.",
|
|
allSources: "Tutte le fonti",
|
|
insights: "Approfondimenti",
|
|
yes: "Sì",
|
|
no: "No",
|
|
loadingMore: "Caricamento...",
|
|
noSourcesYet: "Ancora nessuna fonte",
|
|
allSourcesDescShort: "Visualizza tutte le tue fonti qui.",
|
|
cannotSaveNoteNoNotebook: "Impossibile salvare la nota: ID quaderno non disponibile",
|
|
createFirstSource: "Aggiungi la tua prima fonte per iniziare a costruire la tua base di conoscenza.",
|
|
deleteSourceConfirm: "Sei sicuro di voler eliminare questa fonte?",
|
|
deleteConfirm: "Sei sicuro di voler eliminare questo elemento?",
|
|
deleteConfirmWithTitle: "Sei sicuro di voler eliminare \"{title}\"?",
|
|
deleteSuccess: "Fonte eliminata con successo. Nota: Per eliminare il file dallo storage, devi abilitare l'opzione \"elimina file\" nella pagina impostazioni.",
|
|
failedToDelete: "Impossibile eliminare la fonte",
|
|
sourceQueued: "Fonte in coda",
|
|
sourceQueuedDesc: "Fonte inviata per l'elaborazione in background. Puoi monitorare il progresso nella lista fonti.",
|
|
sourceAddedSuccess: "Fonte aggiunta con successo",
|
|
failedToAddSource: "Impossibile aggiungere la fonte",
|
|
sourceUpdatedSuccess: "Fonte aggiornata con successo",
|
|
failedToUpdateSource: "Impossibile aggiornare la fonte",
|
|
sourceDeletedSuccess: "Fonte eliminata con successo",
|
|
failedToDeleteSource: "Impossibile eliminare la fonte",
|
|
fileUploadedSuccess: "File caricato con successo",
|
|
failedToUploadFile: "Impossibile caricare il file",
|
|
sourceRequeued: "Fonte rimessa in coda",
|
|
sourceRequeuedDesc: "La fonte è stata rimessa in coda per l'elaborazione.",
|
|
failedToRetry: "Nuovo tentativo fallito",
|
|
sourcesAddedToNotebook: "{count} fonte/i aggiunte al quaderno",
|
|
failedToAddSourcesToNotebook: "Impossibile aggiungere le fonti al quaderno",
|
|
partialAddSuccess: "{success} fonte/i aggiunte, {failed} fallite",
|
|
sourceRemovedFromNotebook: "Fonte rimossa dal quaderno con successo",
|
|
failedToRemoveSourceFromNotebook: "Impossibile rimuovere la fonte dal quaderno",
|
|
removeConfirm: "Sei sicuro di voler rimuovere questa fonte dal quaderno?",
|
|
checking: "Verifica...",
|
|
untitledSource: "Fonte senza titolo",
|
|
maxItems: "max {count}",
|
|
insightsCount: "{count} approfondimenti",
|
|
details: "Dettagli",
|
|
detailsTitle: "Dettagli fonte",
|
|
content: "Contenuto",
|
|
metadata: "Metadati",
|
|
type: {
|
|
link: "Link",
|
|
file: "File",
|
|
text: "Testo",
|
|
},
|
|
id: "ID Fonte",
|
|
topics: "Argomenti",
|
|
embedded: "Indicizzato",
|
|
notEmbedded: "Non indicizzato",
|
|
embedContent: "Indicizza contenuto",
|
|
embedding: "Indicizzazione...",
|
|
alreadyEmbedded: "Già indicizzato",
|
|
downloadFile: "Scarica file",
|
|
fileUnavailable: "File non disponibile",
|
|
preparing: "Preparazione...",
|
|
generateNewInsight: "Genera nuovo approfondimento",
|
|
selectTransformation: "Seleziona una trasformazione...",
|
|
noInsightsYet: "Ancora nessun approfondimento",
|
|
createFirstInsight: "Crea il tuo primo approfondimento usando una trasformazione sopra",
|
|
viewInsight: "Visualizza approfondimento",
|
|
deleteInsight: "Elimina approfondimento",
|
|
deleteInsightConfirm: "Sei sicuro di voler eliminare questo approfondimento? Questa azione non può essere annullata.",
|
|
insightGenerationStarted: "Generazione dell'approfondimento avviata. Apparirà a breve.",
|
|
editNote: "Modifica nota",
|
|
createNote: "Crea nota",
|
|
addTitle: "Aggiungi un titolo...",
|
|
untitledNote: "Nota Senza Titolo",
|
|
writeNotePlaceholder: "Scrivi il contenuto della tua nota qui...",
|
|
saveNote: "Salva nota",
|
|
createNoteBtn: "Crea nota",
|
|
createFirstNote: "Crea la tua prima nota per catturare intuizioni e osservazioni.",
|
|
urlLabel: "URL *",
|
|
fileLabel: "File *",
|
|
textContentLabel: "Contenuto testo *",
|
|
enterUrlsPlaceholder: "Inserisci gli URL, uno per riga\nhttps://esempio.com/articolo1\nhttps://esempio.com/articolo2",
|
|
batchUrlHint: "Incolla più URL (uno per riga) per importazione batch",
|
|
invalidUrlsDetected: "URL non validi rilevati:",
|
|
lineLabel: "Riga {line}",
|
|
fixInvalidUrls: "Correggi o rimuovi gli URL non validi per continuare",
|
|
selectMultipleFilesHint: "Seleziona più file per importazione batch. Supportati: Documenti (PDF, DOC, DOCX, PPT, XLS, EPUB, TXT, MD), Media (MP4, MP3, WAV, M4A), Immagini (JPG, PNG), Archivi (ZIP)",
|
|
selectedFiles: "File selezionati:",
|
|
textPlaceholder: "Incolla o digita il contenuto qui...",
|
|
htmlDetected: "Rilevato contenuto HTML. Verrà convertito in Markdown dopo l'elaborazione.",
|
|
titlePlaceholder: "Dai alla tua fonte un titolo descrittivo",
|
|
batchTitlesAuto: "I titoli verranno generati automaticamente per ogni fonte.",
|
|
batchCommonSettings: "Gli stessi quaderni e trasformazioni verranno applicati a tutti gli elementi.",
|
|
urlsCount: "{count} URL",
|
|
filesCount: "{count} file",
|
|
addSource: "Aggiungi Fonte",
|
|
notEmbeddedAlert: "Contenuto non indicizzato",
|
|
notEmbeddedDesc: "Questo contenuto non è stato indicizzato per la ricerca vettoriale. L'indicizzazione abilita funzionalità di ricerca avanzate e una migliore scoperta dei contenuti.",
|
|
openOnYoutube: "Apri su YouTube",
|
|
urlCopied: "URL copiato negli appunti",
|
|
viewSource: "Visualizza fonte",
|
|
noInsightSelected: "Nessun approfondimento selezionato",
|
|
sourceInsight: "Approfondimento Fonte",
|
|
manageNotebooks: "Gestisci quaderni",
|
|
manageNotebooksDesc: "Gestisci quali quaderni contengono questa fonte",
|
|
noNotebooksAvailable: "Nessun quaderno disponibile",
|
|
loadFailed: "Impossibile caricare i dettagli della fonte",
|
|
removeFromNotebook: "Rimuovi dal quaderno",
|
|
retryProcessing: "Riprova elaborazione",
|
|
deleteSource: "Elimina fonte",
|
|
retry: "Riprova",
|
|
addExistingTitle: "Aggiungi fonti esistenti",
|
|
addExistingDesc: "Seleziona fonti esistenti da tutti i tuoi quaderni per aggiungerle a quello corrente.",
|
|
searchPlaceholder: "Cerca fonti per nome o URL...",
|
|
noNotebooksFound: "Nessun quaderno trovato.",
|
|
showingFirst100: "Mostrate le prime 100 fonti. Usa la ricerca per trovarne di specifiche.",
|
|
selectedCount: "{count} fonti selezionate",
|
|
added: "Aggiunto il {date}",
|
|
addUrl: "Aggiungi URL",
|
|
uploadFile: "Carica file",
|
|
enterText: "Inserisci testo",
|
|
processDescription: "Il contenuto verrà elaborato e analizzato dall'IA.",
|
|
processingFiles: "Elaborazione dei tuoi file...",
|
|
titleRequired: "Un titolo è obbligatorio per il contenuto testuale",
|
|
titleGenerated: "Se lasciato vuoto, verrà generato un titolo dal contenuto",
|
|
batchCount: "{count} {type} verranno elaborati",
|
|
enableEmbedding: "Abilita indicizzazione per la ricerca",
|
|
embeddingDesc: "Permette di trovare questa fonte nelle ricerche vettoriali e query IA",
|
|
embeddingAlways: "Indicizzazione abilitata automaticamente",
|
|
embeddingAlwaysDesc: "Le tue impostazioni sono configurate per indicizzare sempre il contenuto per la ricerca vettoriale.",
|
|
embeddingNever: "Indicizzazione disabilitata",
|
|
embeddingNeverDesc: "Le tue impostazioni sono configurate per saltare l'indicizzazione. La ricerca vettoriale non sarà disponibile per questa fonte.",
|
|
changeInSettings: "Puoi modificare questo nelle Impostazioni",
|
|
notFound: "Fonte non trovata",
|
|
noContent: "Nessun contenuto disponibile",
|
|
insightsDesc: "Approfondimenti generati dall'analisi del modello",
|
|
uploadedFile: "File caricato",
|
|
fileUnavailableDesc: "Questo file non è attualmente disponibile per motivi di storage.",
|
|
batchSuccess: "{count} fonte/i create con successo",
|
|
batchFailed: "Impossibile creare tutte le {count} fonti",
|
|
batchPartial: "{success} riuscite, {failed} fallite",
|
|
submittingSource: "Invio fonte per l'elaborazione...",
|
|
processingBatchSources: "Elaborazione di {count} fonti. Potrebbe richiedere qualche istante.",
|
|
processingSource: "La tua fonte è in elaborazione. Potrebbe richiedere qualche istante.",
|
|
maxFilesAllowed: "Massimo {count} file consentiti per batch",
|
|
},
|
|
chat: {
|
|
sessions: "Sessioni",
|
|
sessionTitlePlaceholder: "Digita un titolo qui...",
|
|
noSessions: "Ancora nessuna sessione chat",
|
|
deleteSession: "Elimina sessione",
|
|
deleteSessionDesc: "Sei sicuro di voler eliminare questa sessione chat? Questa azione non può essere annullata.",
|
|
sendPlaceholder: "Chiedi qualsiasi cosa sulle tue fonti...",
|
|
sessionsTitle: "Sessioni chat",
|
|
chatWith: "Chatta con {name}",
|
|
startConversation: "Inizia una conversazione su questo {type}",
|
|
askQuestions: "Fai domande per capire meglio il contenuto",
|
|
pressToSend: "Premi {key} per inviare",
|
|
model: "Modello",
|
|
createToStart: "Crea una sessione per iniziare.",
|
|
chatWithNotebook: "Chatta con il quaderno",
|
|
unableToLoadChat: "Impossibile caricare la chat",
|
|
noDescription: "Nessuna descrizione",
|
|
startByCreating: "Inizia creando il tuo primo quaderno per organizzare la tua ricerca.",
|
|
messagesCount: "{count} messaggi",
|
|
sessionCreated: "Sessione chat creata",
|
|
sessionUpdated: "Sessione aggiornata",
|
|
sessionDeleted: "Sessione eliminata",
|
|
},
|
|
searchPage: {
|
|
askAndSearch: "Chiedi e cerca",
|
|
chooseAMode: "Scegli una modalità",
|
|
askBeta: "Chiedi (beta)",
|
|
search: "Cerca",
|
|
askYourKb: "Chiedi alla tua base di conoscenza (beta)",
|
|
askYourKbDesc: "L'LLM risponderà alla tua domanda basandosi sui documenti nella tua base di conoscenza.",
|
|
question: "Domanda",
|
|
enterQuestionPlaceholder: "Inserisci la tua domanda...",
|
|
pressToSubmit: "Premi Cmd/Ctrl+Invio per inviare",
|
|
noEmbeddingModel: "Non puoi usare questa funzionalità perché non hai un modello di embedding selezionato. Configurane uno nella pagina modelli.",
|
|
usingCustomModels: "Uso modelli personalizzati",
|
|
usingDefaultModels: "Uso modelli predefiniti",
|
|
advanced: "Avanzate",
|
|
strategy: "Strategia",
|
|
answer: "Risposta",
|
|
final: "Finale",
|
|
ask: "Chiedi",
|
|
processing: "Elaborazione...",
|
|
saveToNotebooks: "Salva nei quaderni",
|
|
searchDesc: "Cerca nella tua base di conoscenza parole chiave o concetti specifici",
|
|
enterSearchPlaceholder: "Inserisci la query di ricerca...",
|
|
pressToSearch: "Premi invio per cercare",
|
|
searchType: "Tipo di ricerca",
|
|
vectorSearchWarning: "La ricerca vettoriale richiede un modello di embedding. Solo la ricerca testuale è disponibile.",
|
|
textSearch: "Ricerca testuale",
|
|
vectorSearch: "Ricerca vettoriale",
|
|
searchIn: "Cerca In",
|
|
searchSources: "Cerca nelle fonti",
|
|
searchNotes: "Cerca nelle note",
|
|
resultsFound: "{count} risultati trovati",
|
|
matches: "Corrispondenze ({count})",
|
|
noResultsFor: "Nessun risultato trovato per \"{query}\"",
|
|
notSet: "Non impostato",
|
|
saveToNotebook: "Salva nel quaderno",
|
|
saveSuccess: "Salvato con successo nel quaderno",
|
|
saveError: "Impossibile salvare nel quaderno",
|
|
selectNotebook: "Seleziona quaderno",
|
|
searchAndAsk: "Cerca e chiedi",
|
|
searchResultsFor: "Risultati di ricerca per \"{query}\"",
|
|
askAbout: "Chiedi riguardo \"{query}\"",
|
|
orSearchKb: "Oppure cerca nella tua base di conoscenza",
|
|
saving: "Salvataggio...",
|
|
advancedModelTitle: "Selezione modello avanzata",
|
|
advancedModelDesc: "Scegli modelli specifici per ogni fase del processo Chiedi",
|
|
strategyModel: "Modello strategia",
|
|
answerModel: "Modello risposta",
|
|
finalAnswerModel: "Modello risposta finale",
|
|
selectStrategyPlaceholder: "Seleziona modello strategia",
|
|
selectAnswerPlaceholder: "Seleziona modello risposta",
|
|
selectFinalPlaceholder: "Seleziona modello risposta finale",
|
|
saveChanges: "Salva modifiche",
|
|
processingQuestion: "Elaborazione della tua domanda...",
|
|
},
|
|
podcasts: {
|
|
generateEpisode: "Genera episodio podcast",
|
|
generateEpisodeDesc: "Seleziona il contenuto da includere e configura i dettagli dell'episodio prima di generare un nuovo episodio podcast.",
|
|
content: "Contenuto",
|
|
contentDesc: "Scegli quaderni, fonti e note da includere in questo episodio.",
|
|
itemsSelected: "{count} elementi selezionati",
|
|
tokens: "{count} token",
|
|
chars: "{count} caratteri",
|
|
loadingNotebooks: "Caricamento quaderni...",
|
|
noNotebooksFoundInPodcasts: "Nessun quaderno trovato. Crea un quaderno e aggiungi contenuto prima di generare un podcast.",
|
|
noContentSelected: "Nessun contenuto selezionato",
|
|
summary: "Riepilogo",
|
|
fullContent: "Contenuto completo",
|
|
untitledSource: "Fonte senza titolo",
|
|
untitledNote: "Nota senza titolo",
|
|
episodeSettings: "Impostazioni episodio",
|
|
episodeProfile: "Profilo episodio",
|
|
episodeProfilePlaceholder: "Seleziona un profilo episodio",
|
|
episodeName: "Nome episodio",
|
|
episodeNamePlaceholder: "es., IA e il futuro del Lavoro",
|
|
additionalInstructions: "Istruzioni aggiuntive",
|
|
instructionsPlaceholder: "Eventuali consigli supplementari da aggiungere al briefing dell'episodio...",
|
|
generating: "Generazione...",
|
|
generate: "Genera",
|
|
hostPlaceholder: "Conduttore {number}",
|
|
profileRequired: "Profilo episodio richiesto",
|
|
profileRequiredDesc: "Seleziona un profilo episodio prima di generare un podcast.",
|
|
nameRequired: "Nome episodio richiesto",
|
|
nameRequiredDesc: "Fornisci un nome per l'episodio.",
|
|
addContext: "Aggiungi contesto",
|
|
addContextDesc: "Seleziona almeno una fonte o nota da includere nell'episodio.",
|
|
generationFailed: "Generazione podcast fallita",
|
|
speakerProfile: "Profilo Speaker",
|
|
usesSpeakerProfile: "Usa profilo speaker",
|
|
sources: "Fonti",
|
|
notes: "Note",
|
|
noSources: "Nessuna fonte disponibile in questo quaderno.",
|
|
noNotes: "Nessuna nota disponibile in questo quaderno.",
|
|
selectMode: "Seleziona modalità",
|
|
buildContextFailed: "Impossibile costruire il contesto. Rivedi le tue selezioni.",
|
|
podcastTaskStarted: "Attività podcast avviata",
|
|
loadingProfiles: "Caricamento profili episodio...",
|
|
noProfilesFound: "Nessun profilo episodio trovato. Crea un profilo episodio prima di generare un podcast.",
|
|
listTitle: "Podcast",
|
|
listDesc: "Tieni traccia degli episodi generati e gestisci i modelli riutilizzabili.",
|
|
chooseAView: "Scegli una vista",
|
|
episodesTab: "Episodi",
|
|
templatesTab: "Modelli",
|
|
overviewTitle: "Panoramica episodi",
|
|
overviewDesc: "Monitora i lavori di generazione podcast e rivedi gli artefatti finali.",
|
|
generateBtn: "Genera Podcast",
|
|
total: "Totale",
|
|
processingLabel: "In elaborazione",
|
|
completedLabel: "Completati",
|
|
failedLabel: "Falliti",
|
|
pendingLabel: "In attesa",
|
|
loadErrorTitle: "Impossibile caricare gli episodi",
|
|
loadErrorDesc: "Non siamo riusciti a recuperare gli ultimi episodi podcast. Riprova tra poco.",
|
|
loadingEpisodes: "Caricamento episodi…",
|
|
noEpisodesYet: "Ancora nessun episodio podcast. Genera il tuo primo dalle interfacce chat di quaderni o fonti.",
|
|
statusRunningTitle: "In elaborazione",
|
|
statusRunningDesc: "Episodi che stanno attivamente generando risorse.",
|
|
statusPendingTitle: "In coda / In attesa",
|
|
statusPendingDesc: "Episodi inviati in attesa di iniziare l'elaborazione.",
|
|
statusCompletedTitle: "Episodi completati",
|
|
statusCompletedDesc: "Pronti per revisione, download o pubblicazione.",
|
|
statusFailedTitle: "Episodi falliti",
|
|
statusFailedDesc: "Episodi che hanno riscontrato problemi durante la generazione.",
|
|
templatesWorkspaceTitle: "Area di lavoro modelli",
|
|
templatesWorkspaceDesc: "Costruisci configurazioni riutilizzabili per episodi e speaker per una produzione podcast rapida.",
|
|
howTemplatesPowerTitle: "Come i modelli potenziano la generazione podcast",
|
|
howTemplatesPowerDesc: "I modelli dividono il flusso di lavoro podcast in due blocchi riutilizzabili. Combinali quando generi un nuovo episodio.",
|
|
episodeProfilesSetFormat: "I profili episodio impostano il formato",
|
|
episodeProfilesList1: "Delinea il numero di segmenti e come scorre la storia",
|
|
episodeProfilesList2: "Scegli i modelli linguistici usati per briefing, outline e scrittura script",
|
|
episodeProfilesList3: "Memorizza briefing predefiniti così ogni episodio inizia con un tono coerente",
|
|
speakerProfilesBringVoices: "I profili speaker danno vita alle voci",
|
|
speakerProfilesList1: "Scegli il provider e modello text-to-speech",
|
|
speakerProfilesList2: "Cattura personalità, background e note di pronuncia per speaker",
|
|
speakerProfilesList3: "Riutilizza le stesse voci di conduttori o ospiti in diversi formati episodio",
|
|
recommendedWorkflow: "Flusso di lavoro consigliato",
|
|
workflowStep1: "Crea profili speaker per ogni voce di cui hai bisogno",
|
|
workflowStep2: "Costruisci profili episodio che riferiscono quegli speaker per nome",
|
|
workflowStep3: "Genera podcast selezionando il profilo episodio adatto alla storia",
|
|
workflowHint: "I profili episodio riferiscono i profili speaker per nome, quindi iniziare dagli speaker evita assegnazioni vocali mancanti.",
|
|
failedToLoadTemplates: "Impossibile caricare i dati dei modelli",
|
|
failedToLoadTemplatesDesc: "Assicurati che l'API sia in esecuzione e riprova. Alcune sezioni potrebbero essere incomplete.",
|
|
loadingTemplates: "Caricamento modelli…",
|
|
speakerProfilesTitle: "Profili speaker",
|
|
speakerProfilesDesc: "Configura voci e personalità per gli episodi generati.",
|
|
createSpeaker: "Crea speaker",
|
|
noSpeakerProfiles: "Ancora nessun profilo speaker. Creane uno per rendere disponibili i modelli episodio.",
|
|
noDescription: "Nessuna descrizione fornita.",
|
|
usedByCount_one: "Usato da 1 episodio",
|
|
usedByCount_other: "Usato da {count} episodi",
|
|
usedByCount: "Usato da {count} episodi",
|
|
unused: "Non utilizzato",
|
|
voiceId: "ID Voce",
|
|
backstory: "Background",
|
|
personality: "Personalità",
|
|
edit: "Modifica",
|
|
duplicate: "Duplica",
|
|
deleteSpeakerProfileTitle: "Eliminare il profilo speaker?",
|
|
deleteSpeakerProfileDesc: "L'eliminazione di \"{name}\" non può essere annullata.",
|
|
deleteSpeakerDisabledHint: "Rimuovi questo speaker dai profili episodio prima di eliminarlo.",
|
|
deleting: "Eliminazione…",
|
|
episodeProfilesTitle: "Profili episodio",
|
|
episodeProfilesDesc: "Definisci impostazioni di generazione riutilizzabili per i tuoi programmi.",
|
|
createProfile: "Crea profilo",
|
|
createSpeakerFirst: "Crea un profilo speaker prima di aggiungere un profilo episodio.",
|
|
noEpisodeProfiles: "Ancora nessun profilo episodio. Creane uno per avviare la generazione podcast.",
|
|
speakerCreated: "Speaker creato",
|
|
speakerCreatedDesc: "Lo speaker \"{name}\" è stato aggiunto con successo.",
|
|
failedToCreateSpeaker: "Impossibile creare il profilo speaker",
|
|
speakerUpdated: "Speaker aggiornato",
|
|
speakerUpdatedDesc: "Lo speaker \"{name}\" è stato aggiornato con successo.",
|
|
failedToUpdateSpeaker: "Impossibile aggiornare il profilo speaker",
|
|
speakerDeleted: "Speaker eliminato",
|
|
speakerDeletedDesc: "Lo speaker \"{name}\" è stato rimosso con successo.",
|
|
failedToDeleteSpeaker: "Impossibile eliminare il profilo speaker",
|
|
speakerDuplicated: "Speaker duplicato",
|
|
speakerDuplicatedDesc: "Lo speaker \"{name}\" è stato duplicato con successo.",
|
|
failedToDuplicateSpeaker: "Impossibile duplicare il profilo speaker",
|
|
generationStarted: "Generazione Avviata",
|
|
generationStartedDesc: "La generazione del podcast è stata accodata.",
|
|
failedToStartGeneration: "Impossibile avviare la generazione",
|
|
tryAgainMoment: "Riprova tra un momento.",
|
|
deleteProfileTitle: "Eliminare il profilo?",
|
|
deleteProfileDesc: "Questo rimuoverà \"{name}\". Gli episodi esistenti mantengono i loro dati, ma i nuovi non useranno più questa configurazione.",
|
|
profileCreated: "Profilo creato",
|
|
profileCreatedDesc: "Il profilo episodio \"{name}\" è stato creato con successo.",
|
|
failedToCreateProfile: "Impossibile creare il profilo",
|
|
profileUpdated: "Profilo aggiornato",
|
|
profileUpdatedDesc: "Il profilo episodio \"{name}\" è stato aggiornato con successo.",
|
|
failedToUpdateProfile: "Impossibile aggiornare il profilo",
|
|
profileDeleted: "Profilo eliminato",
|
|
profileDeletedDesc: "Il profilo episodio \"{name}\" è stato rimosso con successo.",
|
|
failedToDeleteProfile: "Impossibile eliminare il profilo",
|
|
failedToDeleteProfileDesc: "Impossibile rimuovere il profilo episodio.",
|
|
profileDuplicated: "Profilo duplicato",
|
|
profileDuplicatedDesc: "Il profilo episodio \"{name}\" è stato duplicato con successo.",
|
|
failedToDuplicateProfile: "Impossibile duplicare il profilo",
|
|
episodeDeleted: "Episodio eliminato",
|
|
episodeDeletedDesc: "L'episodio è stato eliminato con successo.",
|
|
failedToDeleteEpisode: "Impossibile eliminare l'episodio",
|
|
failedToDeleteSpeakerDesc: "Impossibile rimuovere il profilo speaker.",
|
|
outlineModel: "Modello outline",
|
|
transcriptModel: "Modello trascrizione",
|
|
segments: "Segmenti",
|
|
defaultBriefingTitle: "Briefing predefinito",
|
|
created: "Creato il {time}",
|
|
details: "Dettagli",
|
|
summaryTab: "Riepilogo",
|
|
outlineTab: "Outline",
|
|
transcriptTab: "Trascrizione",
|
|
briefing: "Briefing",
|
|
noOutline: "Nessun outline disponibile.",
|
|
noTranscript: "Nessuna trascrizione disponibile.",
|
|
deleteEpisodeTitle: "Eliminare l'episodio?",
|
|
deleteEpisodeDesc: "Questo rimuoverà \"{name}\" e il suo file audio permanentemente.",
|
|
audioUnavailable: "Audio non disponibile",
|
|
segment: "Segmento",
|
|
speaker: "Speaker",
|
|
profile: "Profilo",
|
|
link: "Link",
|
|
file: "File",
|
|
embedded: "Indicizzato",
|
|
notEmbedded: "Non indicizzato",
|
|
noSpeakerProfilesAvailable: "Nessun profilo speaker disponibile",
|
|
noLanguageModelsAvailable: "Nessun modello linguistico disponibile",
|
|
editEpisodeProfile: "Modifica profilo episodio",
|
|
createEpisodeProfile: "Crea profilo episodio",
|
|
episodeProfileFormDesc: "Definisci come devono essere generati gli episodi e quale configurazione speaker usare di default.",
|
|
noSpeakerProfilesDesc: "Crea un profilo speaker prima di configurare un profilo episodio.",
|
|
noLanguageModelsDesc: "Aggiungi modelli linguistici nella sezione modelli per configurare la generazione di outline e trascrizione.",
|
|
profileName: "Nome profilo",
|
|
profileNamePlaceholder: "es., Discussione tech",
|
|
descriptionPlaceholder: "Breve riepilogo di quando usare questo profilo",
|
|
speakerConfig: "Configurazione speaker",
|
|
selectSpeakerProfile: "Seleziona un profilo speaker",
|
|
outlineGeneration: "Generazione outline",
|
|
transcriptGeneration: "Generazione trascrizione",
|
|
defaultBriefingPlaceholder: "Delinea struttura, tono e obiettivi per questo formato episodio",
|
|
editSpeakerProfile: "Modifica profilo speaker",
|
|
createSpeakerProfile: "Crea profilo speaker",
|
|
speakerProfileFormDesc: "Configura le impostazioni text-to-speech e definisci fino a quattro speaker.",
|
|
noTtsModelsAvailable: "Nessun modello text-to-speech disponibile",
|
|
noTtsModelsDesc: "Aggiungi modelli TTS nella sezione modelli prima di creare un profilo speaker.",
|
|
speakers: "Speaker",
|
|
speakersDesc: "Configura da una a quattro voci per questo profilo.",
|
|
addSpeaker: "Aggiungi speaker",
|
|
speakerNumber: "Speaker {number}",
|
|
backstoryPlaceholder: "Breve biografia o contesto per lo speaker",
|
|
personalityPlaceholder: "Descrivi stile e tono",
|
|
outlineProviderRequired: "Il provider outline è obbligatorio",
|
|
outlineModelRequired: "Il modello outline è obbligatorio",
|
|
transcriptProviderRequired: "Il provider trascrizione è obbligatorio",
|
|
transcriptModelRequired: "Il modello trascrizione è obbligatorio",
|
|
defaultBriefingRequired: "Il briefing predefinito è obbligatorio",
|
|
segmentsInteger: "Deve essere un numero intero",
|
|
segmentsMin: "Almeno 3 segmenti",
|
|
segmentsMax: "Massimo 20 segmenti",
|
|
voiceIdRequired: "L'ID voce è obbligatorio",
|
|
backstoryRequired: "Il background è obbligatorio",
|
|
personalityRequired: "La personalità è obbligatoria",
|
|
speakerCountMin: "È richiesto almeno uno speaker",
|
|
speakerCountMax: "Puoi configurare fino a 4 speaker",
|
|
delete: "Elimina",
|
|
failedToDelete: "Impossibile eliminare il podcast",
|
|
},
|
|
settings: {
|
|
contentProcessing: "Elaborazione contenuti",
|
|
contentProcessingDesc: "Configura come vengono elaborati documenti e URL",
|
|
docEngine: "Motore elaborazione documenti",
|
|
docEnginePlaceholder: "Seleziona motore elaborazione documenti",
|
|
urlEngine: "Motore elaborazione URL",
|
|
urlEnginePlaceholder: "Seleziona motore elaborazione URL",
|
|
autoRecommended: "Auto (consigliato)",
|
|
simple: "Semplice",
|
|
docling: "Docling",
|
|
helpMeChoose: "Aiutami a scegliere",
|
|
docHelp: "· Docling è un po' più lento ma più accurato, specialmente se i documenti contengono tabelle e immagini. · Semplice estrarrà qualsiasi contenuto dal documento senza formattarlo. · Auto (consigliato) proverà a elaborare tramite docling e userà semplice come fallback.",
|
|
firecrawl: "Firecrawl",
|
|
jina: "Jina",
|
|
urlHelp: "· Firecrawl è un servizio a pagamento (con piano gratuito), molto potente. · Jina è una buona alternativa con piano gratuito. · Semplice usa estrazione HTTP base e perderà contenuto su siti basati su javascript. · Auto (consigliato) proverà firecrawl poi Jina, infine semplice come fallback.",
|
|
embeddingAndSearch: "Indicizzazione e ricerca",
|
|
embeddingAndSearchDesc: "Configura opzioni di ricerca e indicizzazione",
|
|
defaultEmbeddingOption: "Opzione indicizzazione predefinita",
|
|
embeddingOptionPlaceholder: "Seleziona opzione indicizzazione",
|
|
ask: "Chiedi",
|
|
always: "Sempre",
|
|
never: "Mai",
|
|
embeddingHelp: "Indicizzare il contenuto renderà più facile trovarlo per te e per i tuoi agenti IA. Se usi un modello di embedding locale (Ollama, per esempio), non dovresti preoccuparti del costo e indicizzare tutto.",
|
|
fileManagement: "Gestione file",
|
|
fileManagementDesc: "Configura opzioni di gestione e archiviazione file",
|
|
autoDeleteFiles: "Elimina file automaticamente",
|
|
autoDeletePlaceholder: "Seleziona opzione eliminazione automatica",
|
|
filesHelp: "Una volta caricati ed elaborati, i tuoi file non sono più necessari. La maggior parte degli utenti dovrebbe permettere a Open Notebook di eliminare automaticamente i file caricati dalla cartella upload.",
|
|
loadFailed: "Impossibile caricare le impostazioni",
|
|
},
|
|
advanced: {
|
|
title: "Strumenti avanzati",
|
|
desc: "Strumenti e utilità avanzate per utenti esperti",
|
|
systemInfo: "Informazioni sistema",
|
|
rebuildEmbeddings: "Ricostruisci indicizzazioni",
|
|
rebuildEmbeddingsDesc: "Ricostruisci l'indice di ricerca vettoriale per tutte le fonti",
|
|
currentVersion: "Versione corrente",
|
|
latestVersion: "Ultima versione",
|
|
status: "Stato",
|
|
updateAvailable: "Versione {version} disponibile",
|
|
updateAvailableDesc: "È disponibile una nuova versione di Open Notebook.",
|
|
upToDate: "Aggiornato",
|
|
unknown: "Sconosciuto",
|
|
viewOnGithub: "Visualizza su GitHub",
|
|
updateCheckFailed: "Impossibile verificare aggiornamenti. GitHub potrebbe non essere raggiungibile.",
|
|
rebuild: {
|
|
mode: "Modalità ricostruzione",
|
|
existing: "Esistenti",
|
|
all: "Tutti",
|
|
existingDesc: "Re-indicizza solo elementi che hanno già indicizzazioni (più veloce, per cambio modello)",
|
|
allDesc: "Re-indicizza elementi esistenti + crea indicizzazioni per elementi senza (più lento, completo)",
|
|
include: "Includi nella ricostruzione",
|
|
selectOneError: "Seleziona almeno un tipo di elemento da ricostruire",
|
|
starting: "Avvio ricostruzione...",
|
|
startBtn: "🚀 Avvia ricostruzione",
|
|
queued: "In coda",
|
|
running: "In esecuzione...",
|
|
completed: "Completato!",
|
|
failed: "Fallito",
|
|
leavePageHint: "Puoi lasciare questa pagina poiché verrà eseguito in background",
|
|
startNew: "Avvia nuova ricostruzione",
|
|
itemsProcessed: "{processed}/{total} elementi ({percent}%)",
|
|
failedItems: "{count} elementi non elaborati",
|
|
time: "Tempo",
|
|
whenToRebuild: "Quando dovrei ricostruire le indicizzazioni?",
|
|
whenToRebuildAns: "Dovresti ricostruire quando cambi modelli, aggiorni versioni, correggi corruzione o dopo importazioni massive.",
|
|
howLong: "Quanto tempo richiede la ricostruzione?",
|
|
howLongAns: "Il tempo di elaborazione dipende dal numero di elementi, velocità del modello e limiti API. I modelli locali sono solitamente molto veloci.",
|
|
isSafe: "È sicuro ricostruire mentre uso l'app?",
|
|
isSafeAns: "Sì, la ricostruzione è sicura! Non elimina contenuti, sostituisce solo le indicizzazioni e gestisce gli errori con grazia.",
|
|
},
|
|
},
|
|
transformations: {
|
|
title: "Trasformazioni",
|
|
desc: "Le trasformazioni sono prompt che verranno usati dall'LLM per elaborare una fonte ed estrarre approfondimenti, riepiloghi, ecc.",
|
|
workspace: "Scegli un'area di lavoro",
|
|
playground: "Playground",
|
|
defaultPrompt: "Prompt trasformazione predefinito",
|
|
defaultPromptDesc: "Questo verrà aggiunto a tutti i tuoi prompt di trasformazione",
|
|
defaultPromptPlaceholder: "Inserisci le tue istruzioni di trasformazione predefinite...",
|
|
listTitle: "Trasformazioni personalizzate",
|
|
createNew: "Crea Nuova",
|
|
inputLabel: "Testo di input",
|
|
inputPlaceholder: "Inserisci del testo da trasformare...",
|
|
outputLabel: "Output",
|
|
runTest: "Esegui trasformazione",
|
|
running: "Esecuzione...",
|
|
selectToStart: "Seleziona una trasformazione per iniziare",
|
|
name: "Nome",
|
|
namePlaceholder: "Identificativo unico, es. argomenti_chiave",
|
|
titlePlaceholder: "Titolo visualizzato, default al nome",
|
|
promptPlaceholder: "Scrivi il prompt che alimenterà questa trasformazione...",
|
|
descriptionPlaceholder: "Descrivi cosa fa questa trasformazione.",
|
|
suggestDefault: "Suggerisci di default per nuove fonti",
|
|
promptHint: "I prompt dovrebbero essere scritti considerando il contenuto della fonte. Puoi chiedere al modello di riassumere, estrarre approfondimenti o produrre output strutturati come tabelle.",
|
|
createSuccess: "Trasformazione creata con successo",
|
|
updateSuccess: "Trasformazione aggiornata con successo",
|
|
deleteSuccess: "Trasformazione eliminata con successo",
|
|
noTransformations: "Ancora nessuna trasformazione",
|
|
createOne: "Crea una trasformazione per iniziare",
|
|
selectModel: "Seleziona un modello",
|
|
deleteConfirm: "Sei sicuro di voler eliminare questa trasformazione?",
|
|
model: "Modello",
|
|
systemPrompt: "Prompt di sistema",
|
|
overrideModelDesc: "Sovrascrivi il modello predefinito per questa sessione chat. Lascia vuoto per usare il default di sistema.",
|
|
sessionUseReplacement: "Questa sessione userà {name} invece del modello predefinito.",
|
|
systemDefault: "Predefinito di sistema",
|
|
},
|
|
models: {
|
|
embedding: "Modelli di embedding",
|
|
tts: "Text to Speech (TTS)",
|
|
stt: "Speech to Text (STT)",
|
|
provider: "Provider",
|
|
apiKey: "Chiave API",
|
|
deleteSuccess: "Modello eliminato con successo",
|
|
saveSuccess: "Modello salvato con successo",
|
|
noModels: "Nessun modello",
|
|
discoverModels: "Scopri Modelli",
|
|
noModelsFound: "Nessun modello trovato per questo provider",
|
|
modelType: "Tipo di Modello",
|
|
modelTypeHint: "Seleziona il tipo per i modelli che vuoi aggiungere. Se hai bisogno di tipi diversi, aggiungili in lotti separati.",
|
|
deleteModel: "Elimina modello",
|
|
defaultAssignments: "Assegnazioni modelli predefiniti",
|
|
defaultAssignmentsDesc: "Configura quali modelli usare per diversi scopi in Open Notebook",
|
|
missingRequiredModels: "Modelli richiesti mancanti: {models}. Open Notebook potrebbe non funzionare correttamente senza questi.",
|
|
selectModelPlaceholder: "Seleziona un modello",
|
|
requiredModelPlaceholder: "⚠️ Richiesto - Seleziona un modello",
|
|
chatModelLabel: "Modello chat",
|
|
chatModelDesc: "Usato per le conversazioni chat",
|
|
transformationModelLabel: "Modello trasformazione",
|
|
transformationModelDesc: "Usato per riepiloghi, approfondimenti e trasformazioni",
|
|
toolsModelLabel: "Modello strumenti",
|
|
toolsModelDesc: "Usato per chiamate funzione - OpenAI o Anthropic consigliati",
|
|
largeContextModelLabel: "Modello contesto ampio",
|
|
largeContextModelDesc: "Usato per elaborare documenti grandi - Gemini consigliato",
|
|
embeddingModelLabel: "Modello di embedding",
|
|
embeddingModelDesc: "Usato per ricerca semantica e embedding vettoriali",
|
|
ttsModelLabel: "Modello Text-to-Speech",
|
|
ttsModelDesc: "Usato per la generazione podcast",
|
|
sttModelLabel: "Modello Speech-to-Text",
|
|
sttModelDesc: "Usato per la trascrizione audio",
|
|
selectProviderPlaceholder: "Seleziona un provider",
|
|
providerRequired: "Il provider è obbligatorio",
|
|
modelRequired: "Il modello è obbligatorio",
|
|
embeddingChangeTitle: "Cambio modello di embedding",
|
|
embeddingChangeConfirm: "Stai per cambiare il modello di embedding da {from} a {to}.",
|
|
rebuildRequired: "Importante: ricostruzione richiesta",
|
|
rebuildReason: "Cambiare il modello di embedding richiede la ricostruzione di tutti gli embedding esistenti per mantenere la coerenza. Senza ricostruzione, le tue ricerche potrebbero restituire risultati errati o incompleti.",
|
|
whatHappensNext: "Cosa succede dopo:",
|
|
step1: "Il tuo modello di embedding predefinito verrà aggiornato",
|
|
step2: "Gli embedding esistenti rimarranno invariati fino alla ricostruzione",
|
|
step3: "I nuovi contenuti useranno il nuovo modello di embedding",
|
|
step4: "Dovresti ricostruire gli embedding il prima possibile",
|
|
proceedToRebuildPrompt: "Vuoi procedere alla pagina avanzate per avviare la ricostruzione ora?",
|
|
changeModelOnly: "Cambia solo modello",
|
|
changeAndRebuild: "Cambia e vai a ricostruzione",
|
|
autoAssign: "Assegnazione automatica predefiniti",
|
|
autoAssigning: "Assegnazione in corso...",
|
|
autoAssignSuccess: "{count} modelli predefiniti assegnati automaticamente",
|
|
autoAssignNoModels: "Nessun modello disponibile da assegnare. Sincronizza prima i modelli.",
|
|
autoAssignAlreadySet: "Tutti i modelli predefiniti sono già configurati",
|
|
testModel: "Testa Modello",
|
|
testModelSuccess: "Test del Modello Superato",
|
|
testModelFailed: "Test del Modello Fallito",
|
|
searchOrAddModel: "Cerca o digita un nome modello...",
|
|
addCustomModel: "Aggiungi \"{name}\"",
|
|
},
|
|
apiKeys: {
|
|
title: "Configura la tua IA con le tue chiavi API",
|
|
description: "Salva le chiavi API in modo sicuro nel database per abilitare i provider IA in Open Notebook.",
|
|
encryptionRequired: "Chiave di crittografia non configurata",
|
|
encryptionRequiredDescription: "Imposta la variabile d'ambiente OPEN_NOTEBOOK_ENCRYPTION_KEY su una stringa segreta qualsiasi per abilitare il salvataggio delle chiavi API nel database.",
|
|
configured: "Configurato",
|
|
notConfigured: "Non configurato",
|
|
migrationAvailable: "Variabili d'ambiente rilevate",
|
|
migrationDescription: "{count} chiave/i API configurata/e tramite variabili d'ambiente. Puoi migrarle nel database per una gestione più semplice.",
|
|
migrateToDatabase: "Migra nel database",
|
|
migrating: "Migrazione in corso...",
|
|
migrationSuccess: "{count} chiave/i API migrata/e con successo",
|
|
migrationErrors: "{count} chiave/i non migrata/e",
|
|
migrationNothingToMigrate: "Tutte le chiavi sono già nel database",
|
|
learnMore: "Scopri come configurare le chiavi API →",
|
|
testConnection: "Testa connessione",
|
|
testSuccess: "Connessione riuscita",
|
|
testFailed: "Test di connessione fallito",
|
|
syncModels: "Sincronizza modelli",
|
|
syncSuccess: "Trovati {discovered} modelli, aggiunti {new} nuovi",
|
|
syncNoNew: "Trovati {count} modelli, tutti già registrati",
|
|
syncFailed: "Sincronizzazione modelli fallita",
|
|
getApiKey: "Ottieni chiave API",
|
|
vertexProject: "ID progetto GCP",
|
|
vertexLocation: "Regione",
|
|
vertexCredentials: "Percorso JSON account di servizio",
|
|
addConfig: "Aggiungi configurazione",
|
|
editConfig: "Modifica configurazione",
|
|
deleteConfig: "Elimina configurazione",
|
|
configName: "Nome configurazione",
|
|
configNameHint: "Un nome descrittivo per questa configurazione (es. 'Produzione', 'Sviluppo')",
|
|
baseUrl: "URL base",
|
|
baseUrlOverrideHint: "Modifica solo se devi sovrascrivere l'endpoint API predefinito del provider.",
|
|
deleteConfigConfirm: "Sei sicuro di voler eliminare '{name}'? Questa azione non può essere annullata.",
|
|
configSaveSuccess: "Configurazione salvata con successo",
|
|
configUpdateSuccess: "Configurazione aggiornata con successo",
|
|
configDeleteSuccess: "Configurazione eliminata con successo",
|
|
apiKeyEditHint: "Lascia vuoto per mantenere la chiave API esistente",
|
|
},
|
|
setupBanner: {
|
|
encryptionRequired: "Chiave di crittografia non configurata",
|
|
encryptionRequiredDescription: "Imposta la variabile d'ambiente OPEN_NOTEBOOK_ENCRYPTION_KEY per abilitare l'archiviazione sicura delle credenziali.",
|
|
migrationAvailable: "Migrazione chiavi API disponibile",
|
|
migrationDescription: "{count} provider hanno chiavi API impostate tramite variabili d'ambiente. Migrale nel database per una gestione più semplice.",
|
|
goToSettings: "Vai alle Impostazioni",
|
|
viewDocs: "Vedi documentazione",
|
|
},
|
|
}
|