From 07dca37ef0ec523b96614ecf2a6de64c557d34a8 Mon Sep 17 00:00:00 2001 From: PentaFDevs <149094373+PentaFrame-Development@users.noreply.github.com> Date: Tue, 9 Dec 2025 10:59:21 +0100 Subject: [PATCH] feat: add Italian language translation support (#11844) ### What problem does this PR solve? - Add complete Italian translation file with all UI sections - Register Italian in LanguageAbbreviation enum and language maps - Configure Italian translation in i18n config - Add Italiano to language selector dropdown ### Type of change - [x] Other (please describe): ## What Added complete Italian language translation support to RAGFlow ## Changes - Added comprehensive Italian translation file ([it.ts](ragflow/web/src/locales/it.ts:0:0-0:0)) with all UI sections (1239 lines) - Registered Italian in `LanguageAbbreviation` enum and all language maps - Configured Italian translation in i18n configuration - Added "Italiano" to language selector dropdown ## Impact - Italian users can now use RAGFlow in their native language - All major UI components are translated including: - Login/registration screens - Knowledge base management - Chat interface - Settings and configuration - Admin console - Error messages and notifications ## Testing - Verified all translation keys are present - Confirmed language selector shows "Italiano" correctly - Tested that no translation keys are missing - All UI sections properly translated Co-authored-by: PentaFrame --- web/src/constants/common.ts | 5 + web/src/locales/config.ts | 5 + web/src/locales/it.ts | 1229 +++++++++++++++++++++++++++++++++++ 3 files changed, 1239 insertions(+) create mode 100644 web/src/locales/it.ts diff --git a/web/src/constants/common.ts b/web/src/constants/common.ts index b761da6e5..18d06ca39 100644 --- a/web/src/constants/common.ts +++ b/web/src/constants/common.ts @@ -51,6 +51,7 @@ export const LanguageList = [ 'Portuguese BR', 'German', 'French', + 'Italian', ]; export const LanguageMap = { English: 'English', @@ -64,6 +65,7 @@ export const LanguageMap = { 'Portuguese BR': 'Português BR', German: 'German', French: 'Français', + Italian: 'Italiano', }; export enum LanguageAbbreviation { @@ -78,6 +80,7 @@ export enum LanguageAbbreviation { PtBr = 'pt-BR', De = 'de', Fr = 'fr', + It = 'it', } export const LanguageAbbreviationMap = { @@ -92,6 +95,7 @@ export const LanguageAbbreviationMap = { [LanguageAbbreviation.PtBr]: 'Português BR', [LanguageAbbreviation.De]: 'Deutsch', [LanguageAbbreviation.Fr]: 'Français', + [LanguageAbbreviation.It]: 'Italiano', }; export const LanguageTranslationMap = { @@ -106,6 +110,7 @@ export const LanguageTranslationMap = { 'Portuguese BR': 'pt-br', German: 'de', French: 'fr', + Italian: 'it', }; export enum FileMimeType { diff --git a/web/src/locales/config.ts b/web/src/locales/config.ts index 460744e59..fadb4df59 100644 --- a/web/src/locales/config.ts +++ b/web/src/locales/config.ts @@ -8,6 +8,7 @@ import translation_en from './en'; import translation_es from './es'; import translation_fr from './fr'; import translation_id from './id'; +import translation_it from './it'; import translation_ja from './ja'; import translation_pt_br from './pt-br'; import translation_ru from './ru'; @@ -28,6 +29,7 @@ const resources = { [LanguageAbbreviation.PtBr]: translation_pt_br, [LanguageAbbreviation.De]: translation_de, [LanguageAbbreviation.Fr]: translation_fr, + [LanguageAbbreviation.It]: translation_it, }; const enFlattened = flattenObject(translation_en); const viFlattened = flattenObject(translation_vi); @@ -39,6 +41,7 @@ const pt_brFlattened = flattenObject(translation_pt_br); const zh_traditionalFlattened = flattenObject(translation_zh_traditional); const deFlattened = flattenObject(translation_de); const frFlattened = flattenObject(translation_fr); +const itFlattened = flattenObject(translation_it); export const translationTable = createTranslationTable( [ enFlattened, @@ -51,6 +54,7 @@ export const translationTable = createTranslationTable( pt_brFlattened, deFlattened, frFlattened, + itFlattened, ], [ 'English', @@ -63,6 +67,7 @@ export const translationTable = createTranslationTable( 'pt-BR', 'Deutsch', 'French', + 'Italian', ], ); i18n diff --git a/web/src/locales/it.ts b/web/src/locales/it.ts new file mode 100644 index 000000000..505d188f9 --- /dev/null +++ b/web/src/locales/it.ts @@ -0,0 +1,1229 @@ +export default { + translation: { + common: { + confirm: 'Conferma', + back: 'Indietro', + noResults: 'Nessun risultato trovato', + selectPlaceholder: 'seleziona valore', + selectAll: 'Seleziona tutto', + delete: 'Elimina', + deleteModalTitle: 'Sei sicuro di voler eliminare?', + deleteThem: 'Sei sicuro di voler eliminarli?', + ok: 'Ok', + cancel: 'Annulla', + yes: 'Sì', + no: 'No', + total: 'Totale', + rename: 'Rinomina', + name: 'Nome', + save: 'Salva', + namePlaceholder: 'Inserisci il nome', + next: 'Avanti', + create: 'Crea', + edit: 'Modifica', + upload: 'Carica', + english: 'Inglese', + portugueseBr: 'Portoghese (Brasile)', + chinese: 'Cinese semplificato', + traditionalChinese: 'Cinese tradizionale', + russian: 'Russo', + italian: 'Italiano', + german: 'Tedesco', + french: 'Francese', + spanish: 'Spagnolo', + japanese: 'Giapponese', + vietnamese: 'Vietnamita', + indonesian: 'Indonesiano', + language: 'Lingua', + languageMessage: 'Inserisci la tua lingua!', + languagePlaceholder: 'Seleziona la tua lingua', + copy: 'Copia', + copied: 'Copiato', + comingSoon: 'Prossimamente', + download: 'Scarica', + close: 'Chiudi', + preview: 'Anteprima', + move: 'Sposta', + warn: 'Avviso', + action: 'Azione', + s: 'S', + pleaseSelect: 'Seleziona', + pleaseInput: 'Inserisci', + submit: 'Invia', + clear: 'Cancella', + embedIntoSite: 'Incorpora nella pagina web', + previousPage: 'Precedente', + nextPage: 'Successivo', + add: 'Aggiungi', + remove: 'Rimuovi', + search: 'Cerca', + noDataFound: 'Nessun dato trovato.', + noData: 'Nessun dato disponibile', + promptPlaceholder: `Inserisci o usa / per inserire rapidamente variabili.`, + mcp: { + namePlaceholder: 'Il mio server MCP', + nameRequired: + 'Deve essere lungo 1-64 caratteri e può contenere solo lettere, numeri, trattini e underscore.', + urlPlaceholder: 'https://api.example.com/v1/mcp', + tokenPlaceholder: 'es. eyJhbGciOiJIUzI1Ni...', + }, + selected: 'Selezionato', + }, + login: { + loginTitle: 'Accedi al tuo account', + signUpTitle: 'Crea un account', + login: 'Accedi', + signUp: 'Registrati', + loginDescription: 'Siamo entusiasti di rivederti!', + registerDescription: 'Siamo felici di averti a bordo!', + emailLabel: 'Email', + emailPlaceholder: 'Inserisci email', + passwordLabel: 'Password', + passwordPlaceholder: 'Inserisci password', + rememberMe: 'Ricordami', + signInTip: 'Non hai un account?', + signUpTip: 'Hai già un account?', + nicknameLabel: 'Nickname', + nicknamePlaceholder: 'Inserisci nickname', + register: 'Crea un account', + continue: 'Continua', + title: 'Un motore RAG leader per il contesto LLM', + start: 'Iniziamo', + description: + 'Registrati gratuitamente per esplorare la migliore tecnologia RAG. Crea basi di conoscenza e IA per potenziare il tuo business.', + review: 'da oltre 500 recensioni', + }, + header: { + knowledgeBase: 'Dataset', + chat: 'Chat', + register: 'Registrati', + signin: 'Accedi', + home: 'Home', + setting: 'Impostazioni utente', + logout: 'Esci', + fileManager: 'File', + flow: 'Agente', + search: 'Cerca', + welcome: 'Benvenuto su', + dataset: 'Dataset', + Memories: 'Memoria', + }, + memory: { + memory: 'Memoria', + createMemory: 'Crea memoria', + name: 'Nome', + memoryNamePlaceholder: 'nome memoria', + memoryType: 'Tipo di memoria', + embeddingModel: 'Modello di embedding', + selectModel: 'Seleziona modello', + llm: 'LLM', + }, + memoryDetail: { + messages: { + sessionId: 'ID Sessione', + agent: 'Agente', + type: 'Tipo', + validDate: 'Data di validità', + forgetAt: 'Dimentica il', + source: 'Fonte', + enable: 'Abilita', + action: 'Azione', + }, + }, + knowledgeList: { + welcome: 'Bentornato', + description: 'Quali basi di conoscenza userai oggi?', + createKnowledgeBase: 'Crea Dataset', + name: 'Nome', + namePlaceholder: 'Inserisci il nome.', + doc: 'Documenti', + searchKnowledgePlaceholder: 'Cerca', + noMoreData: `È tutto. Niente altro.`, + }, + knowledgeDetails: { + localUpload: 'Caricamento locale', + fileSize: 'Dimensione file', + fileType: 'Tipo file', + uploadedBy: 'Caricato da', + notGenerated: 'Non generato', + generatedOn: 'Generato il ', + subbarFiles: 'File', + generateKnowledgeGraph: + 'Questo estrarrà entità e relazioni da tutti i tuoi documenti in questo dataset. Il processo potrebbe richiedere del tempo.', + generateRaptor: + 'Esegue clustering ricorsivo e riassunto dei chunk di documenti per costruire una struttura ad albero gerarchica, consentendo un recupero più consapevole del contesto su documenti lunghi.', + generate: 'Genera', + raptor: 'RAPTOR', + processingType: 'Tipo di elaborazione', + dataPipeline: 'Pipeline di ingestione', + operations: 'Operazioni', + taskId: 'ID Attività', + duration: 'Durata', + details: 'Dettagli', + status: 'Stato', + task: 'Attività', + startDate: 'Data inizio', + source: 'Fonte', + fileName: 'Nome file', + datasetLogs: 'Dataset', + fileLogs: 'File', + overview: 'Log', + success: 'Successo', + failed: 'Fallito', + completed: 'Completato', + datasetLog: 'Log dataset', + created: 'Creato', + learnMore: 'Introduzione alla pipeline integrata', + general: 'Generale', + chunkMethodTab: 'Metodo chunk', + testResults: 'Risultati test', + testSetting: 'Impostazioni test', + retrievalTesting: 'Test di recupero', + retrievalTestingDescription: + 'Esegui un test di recupero per verificare se RAGFlow riesce a recuperare il contenuto previsto per il LLM.', + Parse: 'Analizza', + dataset: 'Dataset', + testing: 'Test di recupero', + files: 'file', + configuration: 'Configurazione', + knowledgeGraph: 'Grafo della conoscenza', + name: 'Nome', + namePlaceholder: 'Inserisci il nome!', + doc: 'Documenti', + datasetDescription: + "Attendi che i tuoi file finiscano l'analisi prima di iniziare una chat con IA.", + addFile: 'Aggiungi file', + searchFiles: 'Cerca i tuoi file', + localFiles: 'File locali', + emptyFiles: 'Crea file vuoto', + webCrawl: 'Web crawl', + chunkNumber: 'Numero chunk', + uploadDate: 'Data caricamento', + chunkMethod: 'Metodo di chunking', + enabled: 'Abilita', + disabled: 'Disabilita', + action: 'Azione', + parsingStatus: 'Stato analisi', + parsingStatusTip: + 'Il tempo di analisi del documento varia in base a diversi fattori. Abilitare funzionalità come Knowledge Graph, RAPTOR, Estrazione automatica domande o Estrazione automatica parole chiave aumenterà significativamente il tempo di elaborazione.', + processBeginAt: 'Inizia alle', + processDuration: 'Durata', + progressMsg: 'Progresso', + noTestResultsForRuned: + 'Nessun risultato rilevante trovato. Prova a modificare la query o i parametri.', + noTestResultsForNotRuned: + 'Nessun test eseguito. I risultati appariranno qui.', + testingDescription: + 'Esegui un test di recupero per verificare se RAGFlow riesce a recuperare il contenuto previsto per il LLM.', + similarityThreshold: 'Soglia di similarità', + similarityThresholdTip: + 'RAGFlow utilizza una combinazione di similarità delle parole chiave ponderata e similarità coseno vettoriale ponderata, o una combinazione di similarità delle parole chiave ponderata e punteggio di reranking ponderato durante il recupero.', + vectorSimilarityWeight: 'Peso similarità vettoriale', + vectorSimilarityWeightTip: + 'Imposta il peso della similarità delle parole chiave nel punteggio di similarità combinato. Il totale dei due pesi deve essere uguale a 1.0.', + keywordSimilarityWeight: 'Peso similarità parole chiave', + keywordSimilarityWeightTip: + 'Imposta il peso della similarità delle parole chiave nel punteggio di similarità combinato. Il totale dei due pesi deve essere uguale a 1.0.', + testText: 'Testo di test', + testTextPlaceholder: 'Inserisci la tua domanda qui!', + testingLabel: 'Esegui', + similarity: 'Similarità ibrida', + termSimilarity: 'Similarità termini', + vectorSimilarity: 'Similarità vettoriale', + hits: 'Risultati', + view: 'Visualizza', + filesSelected: 'File selezionati', + upload: 'Carica', + run: 'Analizza', + runningStatus0: 'IN ATTESA', + runningStatus1: 'IN ANALISI', + runningStatus2: 'ANNULLATO', + runningStatus3: 'SUCCESSO', + runningStatus4: 'FALLITO', + pageRanges: 'Intervallo pagine', + pageRangesTip: + 'Intervallo di pagine da analizzare; le pagine al di fuori di questo intervallo non saranno elaborate.', + fromPlaceholder: 'da', + fromMessage: 'Numero pagina iniziale mancante', + toPlaceholder: 'a', + toMessage: 'Numero pagina finale mancante (escluso)', + layoutRecognize: 'Parser PDF', + layoutRecognizeTip: + "Usa un modello visivo per l'analisi del layout PDF per individuare efficacemente titoli, blocchi di testo, immagini e tabelle.", + taskPageSize: 'Dimensione pagina attività', + taskPageSizeMessage: 'Inserisci la dimensione della pagina attività!', + taskPageSizeTip: `Durante il riconoscimento del layout, un file PDF viene suddiviso in blocchi ed elaborato in parallelo per aumentare la velocità di elaborazione.`, + addPage: 'Aggiungi pagina', + greaterThan: 'Il valore attuale deve essere maggiore di!', + greaterThanPrevious: + 'Il valore attuale deve essere maggiore del precedente!', + selectFiles: 'Seleziona file', + changeSpecificCategory: 'Cambia categoria specifica', + uploadTitle: 'Trascina e rilascia il tuo file qui per caricarlo', + uploadDescription: + 'Supporta caricamento singolo o multiplo. Limite dimensione file totale per caricamento: 1GB, con limite batch di 32 file.', + chunk: 'Chunk', + bulk: 'Multiplo', + cancel: 'Annulla', + close: 'Chiudi', + rerankModel: 'Modello rerank', + rerankPlaceholder: 'Seleziona', + rerankTip: `Opzionale. Se lasciato vuoto, RAGFlow userà una combinazione di similarità delle parole chiave ponderata e similarità coseno vettoriale ponderata.`, + topK: 'Top-K', + topKTip: `Usato insieme al modello Rerank, questa impostazione definisce il numero di chunk di testo da inviare al modello di reranking specificato.`, + delimiter: `Delimitatore per testo`, + delimiterTip: + 'Un delimitatore può consistere in uno o più caratteri speciali. Se sono più caratteri, assicurati che siano racchiusi tra backtick (``). ', + html4excel: 'Excel in HTML', + html4excelTip: `Usa con il metodo di chunking Generale. Quando disabilitato, i fogli di calcolo saranno analizzati in coppie chiave-valore. Quando abilitato, saranno analizzati in tabelle HTML.`, + autoKeywords: 'Parole chiave automatiche', + autoKeywordsTip: `Estrai automaticamente N parole chiave per ogni chunk per aumentare il loro ranking per le query contenenti quelle parole chiave.`, + autoQuestions: 'Domande automatiche', + autoQuestionsTip: `Estrai automaticamente N domande per ogni chunk per aumentare il loro ranking per le query contenenti quelle domande.`, + redo: 'Vuoi cancellare i {{chunkNum}} chunk esistenti?', + setMetaData: 'Imposta metadati', + pleaseInputJson: 'Inserisci JSON', + documentMetaTips: `

I metadati sono in formato JSON (non ricercabili). Saranno aggiunti al prompt per LLM se qualsiasi chunk di questo documento è incluso nel prompt.

`, + metaData: 'Metadati', + deleteDocumentConfirmContent: + "Il documento è associato al grafo della conoscenza. Dopo l'eliminazione, le informazioni sui nodi e le relazioni correlate saranno eliminate.", + plainText: 'Naive', + reRankModelWaring: 'Il modello re-rank richiede molto tempo.', + }, + knowledgeConfiguration: { + generationScopeTip: + "Determina se RAPTOR viene generato per l'intero dataset o per un singolo file.", + scopeDataset: 'Dataset', + generationScope: 'Ambito di generazione', + scopeSingleFile: 'File singolo', + autoParse: 'Analisi automatica', + rebuildTip: + 'Riscarica i file dalla fonte dati collegata e li analizza nuovamente.', + baseInfo: 'Informazioni base', + globalIndex: 'Indice globale', + dataSource: 'Fonte dati', + linkSourceSetTip: + 'Gestisci il collegamento della fonte dati con questo dataset', + linkDataSource: 'Collega fonte dati', + tocExtraction: 'Miglioramento TOC', + tocExtractionTip: + 'Per i chunk esistenti, genera un indice gerarchico (una directory per file).', + deleteGenerateModalContent: ` +

Eliminando i risultati {{type}} generati + rimuoverai tutte le entità e relazioni derivate da questo dataset. + I tuoi file originali rimarranno intatti.

+
+ Vuoi continuare? + `, + extractRaptor: 'Estrai Raptor', + extractKnowledgeGraph: 'Estrai grafico della conoscenza', + filterPlaceholder: 'inserisci filtro', + fileFilterTip: '', + fileFilter: 'Filtro file', + setDefaultTip: '', + setDefault: 'Imposta come predefinito', + eidtLinkDataPipeline: 'Modifica pipeline di ingestione', + linkPipelineSetTip: + 'Gestisci il collegamento della pipeline di ingestione con questo dataset', + default: 'Predefinito', + dataPipeline: 'Pipeline di ingestione', + linkDataPipeline: 'Collega pipeline di ingestione', + enableAutoGenerate: 'Abilita generazione automatica', + teamPlaceholder: 'Seleziona un team.', + dataFlowPlaceholder: 'Seleziona una pipeline.', + buildItFromScratch: 'Costruiscilo da zero', + dataFlow: 'Pipeline', + parseType: 'Tipo di analisi', + manualSetup: 'Scegli pipeline', + builtIn: 'Integrato', + titleDescription: + 'Aggiorna la configurazione della tua base di conoscenza qui, in particolare il metodo di chunking.', + name: 'Nome base di conoscenza', + photo: 'Foto base di conoscenza', + photoTip: 'Puoi caricare un file di 4 MB', + description: 'Descrizione', + language: 'Lingua documento', + languageMessage: 'Inserisci la tua lingua!', + languagePlaceholder: 'Inserisci la tua lingua!', + permissions: 'Permessi', + embeddingModel: 'Modello di embedding', + chunkTokenNumber: 'Dimensione chunk raccomandata', + chunkTokenNumberMessage: 'Il numero di token per chunk è richiesto', + embeddingModelTip: + 'Il modello di embedding predefinito per la base di conoscenza. Non può essere cambiato una volta che la base di conoscenza ha chunk.', + permissionsTip: + "Se impostato su 'Team', tutti i membri del team potranno gestire la base di conoscenza.", + chunkTokenNumberTip: + 'Imposta la soglia di token per creare un chunk. Un segmento con meno token di questa soglia sarà combinato con i segmenti successivi.', + chunkMethod: 'Metodo di chunking', + chunkMethodTip: 'Visualizza i suggerimenti a destra.', + upload: 'Carica', + english: 'Inglese', + chinese: 'Cinese', + portugueseBr: 'Portoghese (Brasile)', + embeddingModelPlaceholder: 'Seleziona un modello di embedding.', + chunkMethodPlaceholder: 'Seleziona un metodo di chunking.', + save: 'Salva', + me: 'Solo io', + team: 'Team', + cancel: 'Annulla', + methodTitle: 'Descrizione metodo di chunking', + methodExamples: 'Esempi', + methodExamplesDescription: + 'I seguenti screenshot sono forniti per chiarezza.', + dialogueExamplesTitle: 'visualizza', + methodEmpty: + 'Questo mostrerà una spiegazione visiva delle categorie della base di conoscenza', + book: `

I formati file supportati sono DOCX, PDF, TXT.

+ Per ogni libro in PDF, imposta gli intervalli di pagine per rimuovere informazioni indesiderate e ridurre il tempo di analisi.

`, + laws: `

I formati file supportati sono DOCX, PDF, TXT.

+ I documenti legali seguono tipicamente un formato di scrittura rigoroso. Usiamo le caratteristiche del testo per identificare i punti di divisione. +

`, + manual: `

Solo PDF è supportato.

+ Assumiamo che il manuale abbia una struttura di sezione gerarchica, usando i titoli di sezione più bassi come unità base per il chunking dei documenti. +

`, + naive: `

I formati file supportati sono MD, MDX, DOCX, XLSX, XLS (Excel 97-2003), PPTX, PDF, TXT, JPEG, JPG, PNG, TIF, GIF, CSV, JSON, EML, HTML.

+

Questo metodo suddivide i file usando un metodo 'naive':

+

+

  • Usa un modello di rilevamento visivo per dividere i testi in segmenti più piccoli.
  • +
  • Poi, combina segmenti adiacenti finché il conteggio dei token supera la soglia specificata da 'Numero token chunk', a quel punto viene creato un chunk.
  • `, + paper: `

    Solo file PDF è supportato.

    + I paper saranno divisi per sezione, come abstract, 1.1, 1.2.

    `, + presentation: `

    I formati file supportati sono PDF, PPTX.

    + Ogni pagina nelle slide è trattata come un chunk, con la sua immagine in miniatura memorizzata.

    `, + qa: ` +

    + Questo metodo di chunking supporta i formati file XLSX e CSV/TXT. +

    +
  • + Se un file è in formato XLSX o XLS (Excel 97-2003), dovrebbe contenere due colonne senza intestazioni: una per le domande e l'altra per le risposte. +
  • +
  • + Se un file è in formato CSV/TXT, deve essere codificato UTF-8 con TAB come delimitatore per separare domande e risposte. +
  • + `, + resume: `

    I formati file supportati sono DOCX, PDF, TXT. +

    + I curriculum di varie forme vengono analizzati e organizzati in dati strutturati per facilitare la ricerca dei candidati per i reclutatori. +

    + `, + table: `

    I formati file supportati sono XLSX e CSV/TXT.

    + Ecco alcuni prerequisiti e suggerimenti: +

    `, + picture: ` +

    I file immagine sono supportati, con supporto video in arrivo.

    + Questo metodo impiega un modello OCR per estrarre testi dalle immagini. +

    `, + one: ` +

    I formati file supportati sono DOCX, XLSX, XLS (Excel 97-2003), PDF, TXT. +

    + Questo metodo tratta ogni documento nella sua interezza come un chunk. +

    `, + knowledgeGraph: `

    I formati file supportati sono DOCX, EXCEL, PPT, IMAGE, PDF, TXT, MD, JSON, EML + +

    Questo approccio suddivide i file usando il metodo 'naive'/'Generale'. Divide un documento in segmenti e poi combina segmenti adiacenti finché il conteggio dei token supera la soglia specificata da 'Numero token chunk', a quel punto viene creato un chunk.

    +

    I chunk vengono poi inviati al LLM per estrarre entità e relazioni per un grafo della conoscenza e una mappa mentale.

    +

    Assicurati di impostare i Tipi di entità.

    `, + tag: `

    Una base di conoscenza che usa il metodo di chunking 'Tag' funziona come un set di tag. Altre basi di conoscenza lo usano per taggare i loro chunk.

    +

    Un set di tag NON sarà direttamente coinvolto in un processo di Retrieval-Augmented Generation (RAG).

    `, + useRaptor: 'RAPTOR', + useRaptorTip: + 'RAPTOR può essere usato per attività di question-answering multi-hop. Naviga alla pagina File, clicca Genera > RAPTOR per abilitarlo.', + prompt: 'Prompt', + promptTip: + 'Usa il prompt di sistema per descrivere il compito per il LLM, specificare come dovrebbe rispondere e delineare altri requisiti.', + promptMessage: 'Il prompt è richiesto', + promptText: `Per favore riassumi i seguenti paragrafi. Fai attenzione ai numeri, non inventare cose. Paragrafi come segue: + {cluster_content} +Quanto sopra è il contenuto che devi riassumere.`, + maxToken: 'Token massimi', + maxTokenTip: + 'Il numero massimo di token per chunk di riepilogo generato.', + maxTokenMessage: 'Token massimi richiesti', + threshold: 'Soglia', + thresholdTip: + 'In RAPTOR, i chunk sono raggruppati per la loro similarità semantica. Il parametro Soglia imposta la similarità minima richiesta per raggruppare i chunk insieme.', + thresholdMessage: 'La soglia è richiesta', + maxCluster: 'Cluster massimo', + maxClusterTip: 'Il numero massimo di cluster da creare.', + maxClusterMessage: 'Cluster massimo richiesto', + randomSeed: 'Seme casuale', + randomSeedMessage: 'Seme casuale richiesto', + entityTypes: 'Tipi di entità', + vietnamese: 'Vietnamita', + pageRank: 'Page rank', + pageRankTip: `Puoi assegnare un punteggio PageRank più alto a specifiche basi di conoscenza durante il recupero.`, + tagName: 'Tag', + frequency: 'Frequenza', + searchTags: 'Cerca tag', + tagCloud: 'Cloud', + tagTable: 'Tabella', + tagSet: 'Set di tag', + tagSetTip: ` +

    Seleziona una o più basi di conoscenza tag per auto-taggare i chunk nella tua base di conoscenza.

    +

    Anche la query dell'utente sarà auto-taggata.

    + `, + topnTags: 'Top-N tag', + tags: 'Tag', + addTag: 'Aggiungi tag', + useGraphRag: 'Grafo della conoscenza', + useGraphRagTip: + 'Costruisci un grafo della conoscenza sui chunk di file della base di conoscenza corrente per migliorare il question-answering multi-hop che coinvolge logica annidata.', + graphRagMethod: 'Metodo', + graphRagMethodTip: ` + Light: (Predefinito) Usa prompt forniti da github.com/HKUDS/LightRAG per estrarre entità e relazioni. Questa opzione consuma meno token, meno memoria e meno risorse computazionali.
    + General: Usa prompt forniti da github.com/microsoft/graphrag per estrarre entità e relazioni`, + resolution: 'Risoluzione entità', + resolutionTip: `Un interruttore di deduplicazione entità. Quando abilitato, il LLM combinerà entità simili per costruire un grafo più accurato`, + community: 'Report comunità', + communityTip: + 'In un grafo della conoscenza, una comunità è un cluster di entità collegate da relazioni. Puoi far generare al LLM un abstract per ogni comunità, noto come report comunità.', + theDocumentBeingParsedCannotBeDeleted: + 'Il documento in fase di analisi non può essere eliminato', + }, + chunk: { + chunk: 'Chunk', + bulk: 'Multiplo', + selectAll: 'Seleziona tutto', + enabledSelected: 'Abilita selezionati', + disabledSelected: 'Disabilita selezionati', + deleteSelected: 'Elimina selezionati', + search: 'Cerca', + all: 'Tutti', + enabled: 'Abilitato', + disabled: 'Disabilitato', + keyword: 'Parola chiave', + function: 'Funzione', + chunkMessage: 'Inserisci un valore!', + full: 'Testo completo', + ellipse: 'Ellisse', + graph: 'Grafo della conoscenza', + mind: 'Mappa mentale', + question: 'Domanda', + questionTip: `Se ci sono domande date, l'embedding del chunk sarà basato su di esse.`, + chunkResult: 'Risultato chunk', + chunkResultTip: `Visualizza i segmenti suddivisi usati per embedding e recupero.`, + enable: 'Abilita', + disable: 'Disabilita', + delete: 'Elimina', + }, + chat: { + messagePlaceholder: 'Scrivi il tuo messaggio qui...', + exit: 'Esci', + multipleModels: 'Modelli multipli', + applyModelConfigs: 'Applica configurazioni modello', + conversations: 'Conversazioni', + chatApps: 'App chat', + newConversation: 'Nuova conversazione', + createAssistant: 'Crea un assistente', + assistantSetting: 'Impostazioni assistente', + promptEngine: 'Motore prompt', + modelSetting: 'Impostazioni modello', + chat: 'Chat', + newChat: 'Nuova chat', + send: 'Invia', + sendPlaceholder: "Scrivi all'assistente...", + chatConfiguration: 'Configurazione chat', + chatConfigurationDescription: + 'Imposta un assistente chat per i tuoi dataset selezionati (basi di conoscenza) qui!', + assistantName: 'Nome assistente', + assistantNameMessage: "Il nome dell'assistente è richiesto", + namePlaceholder: 'es. Resume Jarvis', + assistantAvatar: 'Avatar assistente', + language: 'Lingua', + emptyResponse: 'Risposta vuota', + emptyResponseTip: `Imposta questa come risposta se non vengono recuperati risultati dalle basi di conoscenza per la tua query, oppure lascia questo campo vuoto per permettere al LLM di improvvisare quando non viene trovato nulla.`, + emptyResponseMessage: `La risposta vuota sarà attivata quando nulla di rilevante viene recuperato dalle basi di conoscenza. Devi svuotare il campo 'Risposta vuota' se non è selezionata nessuna base di conoscenza.`, + setAnOpener: 'Saluto di apertura', + setAnOpenerInitial: `Ciao! Sono il tuo assistente. Cosa posso fare per te?`, + setAnOpenerTip: 'Imposta un saluto di apertura per gli utenti.', + knowledgeBases: 'Dataset', + knowledgeBasesMessage: 'Seleziona', + knowledgeBasesTip: + 'Seleziona i dataset da associare a questo assistente chat. Una base di conoscenza vuota non apparirà nella lista a discesa.', + system: 'Prompt di sistema', + systemInitialValue: `Sei un assistente intelligente. Per favore riassumi il contenuto della base di conoscenza per rispondere alla domanda. Elenca i dati nella base di conoscenza e rispondi in dettaglio. Quando tutto il contenuto della base di conoscenza è irrilevante per la domanda, la tua risposta deve includere la frase "La risposta che stai cercando non è stata trovata nella base di conoscenza!" Le risposte devono considerare la cronologia della chat. + Ecco la base di conoscenza: + {knowledge} + Quanto sopra è la base di conoscenza.`, + systemMessage: 'Inserisci!', + systemTip: + 'I tuoi prompt o istruzioni per il LLM, inclusi ma non limitati al suo ruolo, la lunghezza desiderata, il tono e la lingua delle sue risposte.', + topN: 'Top N', + topNTip: `Non tutti i chunk con punteggio di similarità sopra la 'soglia di similarità' saranno inviati al LLM. Questo seleziona 'Top N' chunk da quelli recuperati.`, + variable: 'Variabile', + variableTip: `Usate insieme alle API di gestione dell'assistente chat di RAGFlow, le variabili possono aiutare a sviluppare strategie di prompt di sistema più flessibili.`, + add: 'Aggiungi', + key: 'Chiave', + optional: 'Opzionale', + operation: 'Operazione', + model: 'Modello', + modelTip: 'Modello chat di linguaggio grande', + modelMessage: 'Seleziona!', + modelEnabledTools: 'Strumenti abilitati', + modelEnabledToolsTip: + 'Seleziona uno o più strumenti da usare per il modello chat. Non ha effetto per modelli che non supportano le chiamate a strumenti.', + freedom: 'Creatività', + improvise: 'Improvvisa', + precise: 'Preciso', + balance: 'Bilanciato', + custom: 'Personalizzato', + freedomTip: `Una scorciatoia per le impostazioni 'Temperatura', 'Top P', 'Penalità di presenza' e 'Penalità di frequenza', che indica il livello di libertà del modello.`, + temperature: 'Temperatura', + temperatureMessage: 'La temperatura è richiesta', + temperatureTip: `Questo parametro controlla la casualità delle previsioni del modello. Una temperatura più bassa produce risposte più conservative, mentre una temperatura più alta produce risposte più creative e diverse.`, + topP: 'Top P', + topPMessage: 'Top P è richiesto', + topPTip: + 'Conosciuto anche come "campionamento del nucleo", questo parametro imposta una soglia per selezionare un set più piccolo delle parole più probabili da cui campionare.', + presencePenalty: 'Penalità di presenza', + presencePenaltyMessage: 'La penalità di presenza è richiesta', + presencePenaltyTip: + 'Questo scoraggia il modello dal ripetere le stesse informazioni penalizzando le parole che sono già apparse nella conversazione.', + frequencyPenalty: 'Penalità di frequenza', + frequencyPenaltyMessage: 'La penalità di frequenza è richiesta', + frequencyPenaltyTip: + 'Simile alla penalità di presenza, questo riduce la tendenza del modello a ripetere le stesse parole frequentemente.', + maxTokens: 'Token massimi', + maxTokensMessage: 'Token massimi richiesti', + maxTokensTip: `Questo imposta la lunghezza massima dell'output del modello, misurata in numero di token (parole o pezzi di parole). Il valore predefinito è 512.`, + maxTokensInvalidMessage: 'Inserisci un numero valido per Token massimi.', + maxTokensMinMessage: 'Token massimi non può essere inferiore a 0.', + quote: 'Mostra citazione', + quoteTip: 'Se visualizzare il testo originale come riferimento.', + selfRag: 'Self-RAG', + selfRagTip: 'Fai riferimento a: https://huggingface.co/papers/2310.11511', + overview: 'ID Chat', + pv: 'Numero di messaggi', + uv: 'Numero utenti attivi', + speed: 'Velocità output token', + tokens: 'Consuma il numero di token', + round: 'Numero interazione sessione', + thumbUp: 'Soddisfazione cliente', + preview: 'Anteprima', + embedded: 'Incorporato', + serviceApiEndpoint: 'Endpoint API servizio', + apiKey: 'CHIAVE API', + apiReference: 'Documenti API', + dateRange: 'Intervallo date:', + backendServiceApi: 'Server API', + createNewKey: 'Crea nuova chiave', + created: 'Creato', + action: 'Azione', + embedModalTitle: 'Incorpora nella pagina web', + comingSoon: 'Prossimamente', + fullScreenTitle: 'Incorporamento completo', + fullScreenDescription: + 'Incorpora il seguente iframe nel tuo sito web nella posizione desiderata', + partialTitle: 'Incorporamento parziale', + extensionTitle: 'Estensione Chrome', + tokenError: 'Per favore crea prima la chiave API.', + betaError: + 'Per favore acquisisci prima una chiave API RAGFlow dalla pagina Impostazioni di sistema.', + searching: 'Ricerca in corso...', + parsing: 'Analisi', + uploading: 'Caricamento', + uploadFailed: 'Caricamento fallito', + regenerate: 'Rigenera', + read: 'Leggi contenuto', + tts: 'Testo in voce', + ttsTip: + 'Assicurati di selezionare un modello TTS nella pagina Impostazioni prima di abilitare questo toggle per riprodurre il testo come audio.', + relatedQuestion: 'Domanda correlata', + answerTitle: 'R', + multiTurn: 'Ottimizzazione multi-turno', + multiTurnTip: + 'Questo ottimizza le query utente usando il contesto in una conversazione multi-round. Quando abilitato, consumerà token LLM aggiuntivi.', + howUseId: "Come usare l'ID chat?", + description: "Descrizione dell'assistente", + descriptionPlaceholder: 'es. Un assistente chat per curriculum.', + useKnowledgeGraph: 'Usa grafo della conoscenza', + useKnowledgeGraphTip: + 'Se usare il/i grafo/i della conoscenza nella/e base/i di conoscenza specificata/e durante il recupero per il question answering multi-hop.', + keyword: 'Analisi parole chiave', + keywordTip: `Usa LLM per analizzare le domande dell'utente, estrarre parole chiave che saranno enfatizzate durante il calcolo della rilevanza.`, + languageTip: + "Permette la riscrittura delle frasi con la lingua specificata o usa per default l'ultima domanda se non selezionata.", + avatarHidden: 'Nascondi avatar', + locale: 'Locale', + selectLanguage: 'Seleziona una lingua', + reasoning: 'Ragionamento', + reasoningTip: `Se abilitare un flusso di lavoro di ragionamento durante la risposta alle domande, come visto in modelli come Deepseek-R1 o OpenAI o1.`, + tavilyApiKeyTip: + 'Se una chiave API è impostata correttamente qui, le ricerche web basate su Tavily saranno usate per integrare il recupero dalla base di conoscenza.', + tavilyApiKeyMessage: 'Inserisci la tua chiave API Tavily', + tavilyApiKeyHelp: 'Come ottenerla?', + crossLanguage: 'Ricerca cross-lingua', + crossLanguageTip: `Seleziona una o più lingue per la ricerca cross-lingua. Se non viene selezionata nessuna lingua, il sistema cerca con la query originale.`, + createChat: 'Crea chat', + metadata: 'Metadati', + metadataTip: + 'Il filtraggio dei metadati è il processo di utilizzo degli attributi dei metadati per affinare e controllare il recupero delle informazioni rilevanti.', + conditions: 'Condizioni', + addCondition: 'Aggiungi condizione', + meta: { + disabled: 'Disabilitato', + auto: 'Automatico', + manual: 'Manuale', + }, + cancel: 'Annulla', + chatSetting: 'Impostazioni chat', + tocEnhance: 'Miglioramento TOC', + tocEnhanceTip: `Durante l'analisi del documento, sono state generate informazioni sull'indice. Questo permette al modello grande di restituire elementi dell'indice rilevanti per la query dell'utente.`, + }, + setting: { + deleteModel: 'Elimina modello', + modelEmptyTip: + 'Nessun modello disponibile.
    Aggiungi modelli dal pannello a destra.', + sourceEmptyTip: + 'Nessuna fonte dati aggiunta. Selezionane una qui sotto per connetterti.', + seconds: 'secondi', + minutes: 'minuti', + edit: 'Modifica', + cropTip: + "Trascina l'area di selezione per scegliere la posizione di ritaglio dell'immagine, e scorri per ingrandire/ridurre", + cropImage: 'Ritaglia immagine', + selectModelPlaceholder: 'Seleziona modello', + configureModelTitle: 'Configura modello', + save: 'Salva', + search: 'Cerca', + availableModels: 'Modelli disponibili', + profile: 'Profilo', + avatar: 'Avatar', + avatarTip: 'Questo sarà visualizzato sul tuo profilo.', + profileDescription: 'Aggiorna la tua foto e i dettagli personali qui.', + maxTokens: 'Token massimi', + maxTokensMessage: 'Token massimi richiesti', + maxTokensTip: `Questo imposta la lunghezza massima dell'output del modello, misurata in numero di token. Il valore predefinito è 512.`, + maxTokensInvalidMessage: 'Inserisci un numero valido per Token massimi.', + maxTokensMinMessage: 'Token massimi non può essere inferiore a 0.', + password: 'Password', + passwordDescription: + 'Inserisci la tua password attuale per cambiare la password.', + model: 'Fornitori di modelli', + systemModelDescription: 'Completa queste impostazioni prima di iniziare', + dataSources: 'Fonti dati', + team: 'Team', + system: 'Sistema', + logout: 'Esci', + api: 'API', + username: 'Nome', + usernameMessage: 'Inserisci il tuo nome utente!', + photo: 'La tua foto', + photoDescription: 'Questa sarà visualizzata sul tuo profilo.', + colorSchema: 'Schema colori', + colorSchemaMessage: 'Seleziona il tuo schema colori!', + colorSchemaPlaceholder: 'seleziona il tuo schema colori', + bright: 'Chiaro', + dark: 'Scuro', + timezone: 'Fuso orario', + timezoneMessage: 'Inserisci il tuo fuso orario!', + timezonePlaceholder: 'seleziona il tuo fuso orario', + email: 'Email', + emailDescription: + "Una volta registrata, l'email non può essere cambiata.", + currentPassword: 'Password attuale', + currentPasswordMessage: 'Inserisci la tua password!', + newPassword: 'Nuova password', + changePassword: 'Cambia password', + newPasswordMessage: 'Inserisci la tua password!', + newPasswordDescription: + 'La tua nuova password deve essere più di 8 caratteri.', + confirmPassword: 'Conferma nuova password', + confirmPasswordMessage: 'Conferma la tua password!', + confirmPasswordNonMatchMessage: + 'Le nuove password inserite non corrispondono!', + cancel: 'Annulla', + addedModels: 'Modelli aggiunti', + modelsToBeAdded: 'Modelli da aggiungere', + addTheModel: 'Aggiungi', + apiKey: 'Chiave API', + apiKeyMessage: 'Inserisci la chiave API', + apiKeyTip: + 'La chiave API può essere ottenuta registrandosi presso il fornitore LLM corrispondente.', + showMoreModels: 'Visualizza modelli', + hideModels: 'Nascondi modelli', + baseUrl: 'URL Base', + baseUrlTip: + 'Se la tua chiave API è da OpenAI, ignoralo. Qualsiasi altro fornitore intermedio fornirà questo URL base con la chiave API.', + modify: 'Modifica', + systemModelSettings: 'Imposta modelli predefiniti', + chatModel: 'LLM', + chatModelTip: + 'Il LLM predefinito per ogni nuova base di conoscenza creata.', + embeddingModel: 'Embedding', + embeddingModelTip: + 'Il modello di embedding predefinito per ogni nuova base di conoscenza creata.', + img2txtModel: 'VLM', + img2txtModelTip: + "Il VLM predefinito per ogni nuova base di conoscenza creata. Descrive un'immagine o un video.", + sequence2txtModel: 'ASR', + sequence2txtModelTip: + 'Il modello ASR predefinito per ogni nuova base di conoscenza creata. Usa questo modello per tradurre le voci in testo corrispondente.', + rerankModel: 'Rerank', + rerankModelTip: `Il modello rerank predefinito per il reranking dei chunk.`, + ttsModel: 'TTS', + ttsModelTip: 'Il modello text-to-speech predefinito.', + workspace: 'workspace', + upgrade: 'Aggiorna', + addLlmTitle: 'Aggiungi LLM', + editLlmTitle: 'Modifica modello {{name}}', + editModel: 'Modifica modello', + modelName: 'Nome modello', + modelID: 'ID Modello', + modelUid: 'UID Modello', + modelNameMessage: 'Inserisci il nome del tuo modello!', + modelType: 'Tipo modello', + modelTypeMessage: 'Inserisci il tuo tipo di modello!', + addLlmBaseUrl: 'URL base', + baseUrlNameMessage: 'Inserisci il tuo URL base!', + vision: 'Supporta Vision?', + ollamaLink: 'Come integrare {{name}}', + FishAudioLink: 'Come usare FishAudio', + TencentCloudLink: 'Come usare TencentCloud ASR', + apiVersion: 'Versione API', + apiVersionMessage: 'Inserisci la versione API', + add: 'Aggiungi', + updateDate: 'Data', + role: 'Stato', + invite: 'Invita membro', + agree: 'Accetta', + refuse: 'Rifiuta', + teamMembers: 'Membri del team', + joinedTeams: 'Team uniti', + sureDelete: 'Sei sicuro di voler rimuovere questo membro?', + quit: 'Esci', + sureQuit: 'Sei sicuro di voler uscire dal team a cui ti sei unito?', + secretKey: 'Chiave segreta', + publicKey: 'Chiave pubblica', + secretKeyMessage: 'Inserisci la chiave segreta', + publicKeyMessage: 'Inserisci la chiave pubblica', + hostMessage: "Inserisci l'host", + configuration: 'Configurazione', + view: 'Visualizza', + mcp: 'MCP', + }, + message: { + registered: 'Registrato!', + logout: 'logout', + logged: 'Accesso effettuato!', + pleaseSelectChunk: 'Seleziona chunk!', + registerDisabled: 'La registrazione utente è disabilitata', + modified: 'Modificato', + created: 'Creato', + deleted: 'Eliminato', + renamed: 'Rinominato', + operated: 'Operato', + updated: 'Aggiornato', + uploaded: 'Caricato', + 200: 'Il server restituisce correttamente i dati richiesti.', + 201: 'Crea o modifica dati con successo.', + 202: 'Una richiesta è stata accodata in background (attività asincrona).', + 204: 'Dati eliminati con successo.', + 400: 'Si è verificato un errore nella richiesta e il server non ha creato o modificato i dati.', + 401: 'Accedi di nuovo.', + 403: "L'utente è autorizzato, ma l'accesso è proibito.", + 404: "La richiesta è stata fatta per un record che non esiste e il server non ha eseguito l'operazione.", + 406: 'Il formato richiesto non è disponibile.', + 410: 'La risorsa richiesta è stata eliminata permanentemente e non sarà più disponibile.', + 413: 'La dimensione totale dei file caricati contemporaneamente è troppo grande.', + 422: 'Durante la creazione di un oggetto, si è verificato un errore di validazione.', + 500: 'Si è verificato un errore del server, controlla il server.', + 502: 'Errore gateway.', + 503: 'Il servizio non è disponibile e il server è temporaneamente sovraccarico o in manutenzione.', + 504: 'Timeout gateway.', + requestError: 'Errore richiesta', + networkAnomalyDescription: + "C'è un'anomalia nella tua rete e non puoi connetterti al server.", + networkAnomaly: 'Anomalia di rete', + hint: 'suggerimento', + }, + fileManager: { + files: 'File', + name: 'Nome', + uploadDate: 'Data caricamento', + knowledgeBase: 'Dataset', + size: 'Dimensione', + action: 'Azione', + addToKnowledge: 'Collega al dataset', + pleaseSelect: 'Seleziona', + newFolder: 'Nuova cartella', + file: 'File', + uploadFile: 'Carica file', + parseOnCreation: 'Analizza alla creazione', + directory: 'Directory', + uploadTitle: 'Trascina e rilascia il tuo file qui per caricarlo', + uploadDescription: + 'Supporta caricamento singolo o multiplo. Limite dimensione file totale per caricamento: 1GB, con limite batch di 32 file.', + local: 'Caricamenti locali', + s3: 'Caricamenti S3', + preview: 'Anteprima', + fileError: 'Errore file', + uploadLimit: + 'Ogni file non deve superare 10MB, e il numero totale di file non deve superare 128.', + destinationFolder: 'Cartella di destinazione', + pleaseUploadAtLeastOneFile: 'Carica almeno un file', + }, + flow: { + autoPlay: 'Riproduzione automatica audio', + name: 'Nome', + nameMessage: 'Inserisci nome', + description: 'Descrizione', + descriptionMessage: 'Questo è un agente per un compito specifico.', + examples: 'Esempi', + to: 'A', + msg: 'Messaggi', + messagePlaceholder: `Inserisci il contenuto del messaggio, usa '/' per inserire rapidamente variabili.`, + messageMsg: 'Inserisci messaggio o elimina questo campo.', + addField: 'Aggiungi opzione', + addMessage: 'Aggiungi messaggio', + loop: 'Ciclo', + yes: 'Sì', + no: 'No', + key: 'Chiave', + componentId: 'ID Componente', + add: 'Aggiungi', + operation: 'operazione', + run: 'Esegui', + save: 'Salva', + title: 'ID:', + beginDescription: 'Qui è dove inizia il flusso.', + answerDescription: `Un componente che funge da interfaccia tra umano e bot, ricevendo input utente e visualizzando le risposte dell'agente.`, + retrievalDescription: `Un componente che recupera informazioni da basi di conoscenza specificate (dataset). Assicurati che le basi di conoscenza selezionate usino lo stesso modello di embedding.`, + generateDescription: `Un componente che richiede al LLM di generare risposte. Assicurati che il prompt sia impostato correttamente.`, + categorizeDescription: `Un componente che usa il LLM per classificare gli input utente in categorie predefinite.`, + relevantDescription: `Un componente che usa il LLM per valutare se l'output a monte è rilevante per l'ultima query dell'utente.`, + rewriteQuestionDescription: `Un componente che riscrive una query utente dal componente Interact, basandosi sul contesto dei dialoghi precedenti.`, + messageDescription: + "Questo componente restituisce l'output dati finale del workflow insieme al contenuto del messaggio predefinito.", + keywordDescription: `Un componente che recupera i primi N risultati di ricerca dall'input dell'utente.`, + switchDescription: `Un componente che valuta condizioni basate sull'output dei componenti precedenti e dirige il flusso di esecuzione di conseguenza.`, + wikipediaDescription: `Un componente che cerca da wikipedia.org, usando TopN per specificare il numero di risultati di ricerca.`, + promptText: `Per favore riassumi i seguenti paragrafi. Fai attenzione ai numeri, non inventare cose. Paragrafi come segue: + {input} + Quanto sopra è il contenuto che devi riassumere.`, + createGraph: 'Crea agente', + createFromTemplates: 'Crea da template', + retrieval: 'Recupero', + generate: 'Genera', + answer: 'Interagisci', + categorize: 'Categorizza', + rewriteQuestion: 'Riscrivi', + rewrite: 'Riscrivi', + begin: 'Inizio', + message: 'Messaggio', + blank: 'Vuoto', + createFromNothing: 'Crea il tuo agente da zero', + addItem: 'Aggiungi elemento', + addSubItem: 'Aggiungi sotto-elemento', + nameRequiredMsg: 'Il nome è richiesto', + nameRepeatedMsg: 'Il nome non può essere ripetuto', + keywordExtract: 'Parola chiave', + keywordExtractDescription: `Un componente che estrae parole chiave da una query utente, con Top N che specifica il numero di parole chiave da estrarre.`, + baidu: 'Baidu', + baiduDescription: `Un componente che cerca da baidu.com, usando TopN per specificare il numero di risultati di ricerca.`, + duckDuckGo: 'DuckDuckGo', + duckDuckGoDescription: + 'Un componente che cerca da duckduckgo.com, permettendo di specificare il numero di risultati di ricerca usando TopN.', + channel: 'Canale', + channelTip: `Esegui ricerca testo o notizie sull'input del componente`, + text: 'Testo', + news: 'Notizie', + messageHistoryWindowSize: 'Dimensione finestra messaggi', + messageHistoryWindowSizeTip: + 'La dimensione della finestra della cronologia conversazione visibile al LLM.', + wikipedia: 'Wikipedia', + pubMed: 'PubMed', + pubMedDescription: + 'Un componente che cerca da https://pubmed.ncbi.nlm.nih.gov/.', + email: 'Email', + emailTip: + "L'email è un campo richiesto. Devi inserire un indirizzo email qui.", + arXiv: 'ArXiv', + arXivDescription: 'Un componente che cerca da https://arxiv.org/.', + sortBy: 'Ordina per', + submittedDate: 'Data invio', + lastUpdatedDate: 'Data ultimo aggiornamento', + relevance: 'Rilevanza', + google: 'Google', + googleDescription: 'Un componente che cerca da https://www.google.com/.', + bing: 'Bing', + bingDescription: 'Un componente che cerca da https://www.bing.com/.', + apiKey: 'CHIAVE API', + country: 'Paese e regione', + language: 'Lingua', + googleScholar: 'Google Scholar', + googleScholarDescription: + 'Un componente che cerca https://scholar.google.com/.', + deepL: 'DeepL', + deepLDescription: + 'Un componente che ottiene traduzioni più specializzate da https://www.deepl.com/.', + authKey: 'Chiave auth', + sourceLang: 'Lingua sorgente', + targetLang: 'Lingua destinazione', + gitHub: 'GitHub', + gitHubDescription: + 'Un componente che cerca repository da https://github.com/.', + publish: 'API', + exeSQL: 'Esegui SQL', + exeSQLDescription: + 'Un componente che esegue query SQL su un database relazionale, supportando query da MySQL, PostgreSQL o MariaDB.', + dbType: 'Tipo database', + database: 'Database', + username: 'Nome utente', + host: 'Host', + port: 'Porta', + password: 'Password', + switch: 'Switch', + logicalOperator: 'Operatore logico', + operator: 'Operatore', + value: 'Valore', + useTemplate: 'Usa', + crawler: 'Web crawler', + crawlerDescription: + 'Un componente che estrae codice sorgente HTML da un URL specificato.', + proxy: 'Proxy', + extractType: 'Tipo estrazione', + info: 'Info', + history: 'Cronologia', + concentrator: 'Concentratore', + concentratorDescription: + "Un componente che riceve l'output dal componente a monte e lo passa come input ai componenti a valle.", + token: 'Token', + src: 'Sorgente', + startDate: 'Data inizio', + endDate: 'Data fine', + keyword: 'Parola chiave', + note: 'Nota', + noteDescription: 'Nota', + notePlaceholder: 'Inserisci una nota', + invoke: 'Richiesta HTTP', + invokeDescription: `Un componente capace di chiamare servizi remoti, usando output di altri componenti o costanti come input.`, + url: 'Url', + method: 'Metodo', + timeout: 'Timeout', + headers: 'Headers', + cleanHtml: 'Pulisci HTML', + cleanHtmlTip: + 'Se la risposta è formattata HTML e vuoi solo il contenuto primario, attivalo.', + reference: 'Riferimento', + input: 'Input', + output: 'Output', + parameter: 'Parametro', + howUseId: "Come usare l'ID agente?", + content: 'Contenuto', + operationResults: 'Risultati operazione', + autosaved: 'Salvato automaticamente', + optional: 'Opzionale', + pasteFileLink: 'Incolla link file', + testRun: 'Test esecuzione', + template: 'Template', + templateDescription: + "Un componente che formatta l'output di altri componenti.", + emailComponent: 'Email', + emailDescription: "Invia un'email a un indirizzo specificato.", + smtpServer: 'Server SMTP', + smtpPort: 'Porta SMTP', + senderEmail: 'Email mittente', + authCode: 'Codice autorizzazione', + senderName: 'Nome mittente', + toEmail: 'Email destinatario', + ccEmail: 'Email CC', + emailSubject: 'Oggetto', + emailContent: 'Contenuto', + iteration: 'Iterazione', + iterationDescription: `Un componente di loop che itera su un array di input ed esegue una logica definita per ogni elemento.`, + addVariable: 'Aggiungi variabile', + variableSettings: 'Impostazioni variabili', + systemPrompt: 'Prompt di sistema', + userPrompt: 'Prompt utente', + addCategory: 'Aggiungi categoria', + categoryName: 'Nome categoria', + nextStep: 'Passo successivo', + variableExtractDescription: + 'Estrai informazioni utente in variabile globale durante la conversazione', + variableExtract: 'Variabili', + variables: 'Variabili', + setting: 'Impostazioni', + settings: { + agentSetting: 'Impostazioni agente', + title: 'titolo', + description: 'descrizione', + upload: 'Carica', + photo: 'Foto', + permissions: 'Permessi', + permissionsTip: 'Puoi impostare i permessi dei membri del team qui.', + me: 'io', + team: 'Team', + }, + noMoreData: 'Nessun altro dato', + searchAgentPlaceholder: 'Cerca agente', + prompt: 'Prompt', + promptTip: + 'Usa il prompt di sistema per descrivere il compito per il LLM, specificare come dovrebbe rispondere e delineare altri requisiti.', + promptMessage: 'Il prompt è richiesto', + knowledgeBasesTip: + 'Seleziona le basi di conoscenza da associare a questo assistente chat, o scegli variabili contenenti ID di basi di conoscenza qui sotto.', + knowledgeBaseVars: 'Variabili base di conoscenza', + code: 'Codice', + codeDescription: + 'Permette agli sviluppatori di scrivere logica Python personalizzata.', + createAgent: 'Flusso agente', + agent: 'Agente', + addAgent: 'Aggiungi agente', + agentDescription: + 'Costruisce componenti agente equipaggiati con ragionamento, uso di strumenti e collaborazione multi-agente.', + cancel: 'Annulla', + }, + modal: { + okText: 'Conferma', + cancelText: 'Annulla', + }, + mcp: { + export: 'Esporta', + import: 'Importa', + url: 'URL', + serverType: 'Tipo server', + addMCP: 'Aggiungi MCP', + editMCP: 'Modifica MCP', + toolsAvailable: 'strumenti disponibili', + mcpServers: 'Server MCP', + mcpServer: 'Server MCP', + customizeTheListOfMcpServers: 'Personalizza la lista dei server MCP', + cachedTools: 'strumenti in cache', + bulkManage: 'Gestione multipla', + exitBulkManage: 'Esci gestione multipla', + selected: 'Selezionato', + }, + search: { + searchApps: 'Cerca app', + createSearch: 'Crea ricerca', + searchGreeting: 'Come posso aiutarti oggi?', + profile: 'Nascondi profilo', + locale: 'Locale', + embedCode: 'Codice embed', + id: 'ID', + copySuccess: 'Copia riuscita', + welcomeBack: 'Bentornato', + searchSettings: 'Impostazioni ricerca', + name: 'Nome', + avatar: 'Avatar', + description: 'Descrizione', + datasets: 'Dataset', + rerankModel: 'Modello rerank', + AISummary: 'Riepilogo IA', + enableWebSearch: 'Abilita ricerca web', + enableRelatedSearch: 'Abilita ricerca correlata', + showQueryMindmap: 'Mostra mappa mentale query', + embedApp: 'Incorpora app', + relatedSearch: 'Ricerca correlata', + descriptionValue: 'Sei un assistente intelligente.', + okText: 'Salva', + cancelText: 'Annulla', + chooseDataset: 'Seleziona prima un dataset', + }, + language: { + english: 'Inglese', + chinese: 'Cinese', + spanish: 'Spagnolo', + french: 'Francese', + german: 'Tedesco', + japanese: 'Giapponese', + korean: 'Coreano', + vietnamese: 'Vietnamita', + russian: 'Russo', + }, + pagination: { + total: 'Totale {{total}}', + page: '{{page}} /Pagina', + }, + deleteModal: { + delAgent: 'Elimina agente', + delDataset: 'Elimina dataset', + delSearch: 'Elimina ricerca', + delFile: 'Elimina file', + delFiles: 'Elimina file', + delFilesContent: 'Selezionati {{count}} file', + delChat: 'Elimina chat', + delMember: 'Elimina membro', + delMemory: 'Elimina memoria', + }, + empty: { + noMCP: 'Nessun server MCP disponibile', + agentTitle: 'Nessuna app agente creata', + notFoundAgent: 'App agente non trovata', + datasetTitle: 'Nessun dataset creato', + notFoundDataset: 'Dataset non trovato', + chatTitle: 'Nessuna app chat creata', + notFoundChat: 'App chat non trovata', + searchTitle: 'Nessuna app ricerca creata', + notFoundSearch: 'App ricerca non trovata', + memoryTitle: 'Nessuna memoria creata', + notFoundMemory: 'Memoria non trovata', + addNow: 'Aggiungi ora', + }, + admin: { + loginTitle: 'Console admin', + title: 'RAGFlow', + confirm: 'Conferma', + close: 'Chiudi', + yes: 'Sì', + no: 'No', + delete: 'Elimina', + cancel: 'Annulla', + reset: 'Reimposta', + import: 'Importa', + description: 'Descrizione', + noDescription: 'Nessuna descrizione', + serviceStatus: 'Stato servizio', + userManagement: 'Gestione utenti', + registrationWhitelist: 'Whitelist registrazione', + roles: 'Ruoli', + monitoring: 'Monitoraggio', + back: 'Indietro', + active: 'Attivo', + inactive: 'Inattivo', + enable: 'Abilita', + disable: 'Disabilita', + all: 'Tutti', + actions: 'Azioni', + newUser: 'Nuovo utente', + email: 'Email', + name: 'Nome', + nickname: 'Nickname', + status: 'Stato', + id: 'ID', + serviceType: 'Tipo servizio', + host: 'Host', + port: 'Porta', + role: 'Ruolo', + user: 'Utente', + superuser: 'Superutente', + createTime: 'Data creazione', + lastLoginTime: 'Ultimo accesso', + lastUpdateTime: 'Ultimo aggiornamento', + deleteUser: 'Elimina utente', + deleteUserConfirmation: 'Sei sicuro di voler eliminare questo utente?', + createNewUser: 'Crea nuovo utente', + changePassword: 'Cambia password', + newPassword: 'Nuova password', + confirmNewPassword: 'Conferma nuova password', + password: 'Password', + confirmPassword: 'Conferma password', + invalidEmail: 'Inserisci un indirizzo email valido!', + passwordRequired: 'Inserisci la tua password!', + passwordMinLength: 'La password deve essere più di 8 caratteri.', + confirmPasswordRequired: 'Conferma la tua password!', + confirmPasswordDoNotMatch: 'Le password inserite non corrispondono!', + read: 'Leggi', + write: 'Scrivi', + share: 'Condividi', + create: 'Crea', + }, + }, +};