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',
      descriptionPlaceholder: 'Inserisci la descrizione',
      next: 'Avanti',
      create: 'Crea',
      edit: 'Modifica',
      upload: 'Carica',
      english: 'Inglese',
      portugueseBr: 'Portoghese (Brasile)',
      chinese: 'Cinese semplificato',
      traditionalChinese: 'Cinese tradizionale',
      russian: 'Russo',
      indonesian: 'Indonesiano',
      indonesia: 'Indonesiano',
      spanish: 'Spagnolo',
      vietnamese: 'Vietnamita',
      japanese: 'Giapponese',
      german: 'Tedesco',
      french: 'Francese',
      italian: 'Italiano',
      bulgarian: 'Bulgaro',
      arabic: 'Arabo',
      turkish: 'Turco',
      language: 'Lingua',
      languageMessage: 'Inserisci la tua lingua!',
      languagePlaceholder: 'Seleziona la tua lingua',
      copy: 'Copia',
      copied: 'Copiato',
      viewMore: 'Mostra di più',
      viewLess: 'Mostra di meno',
      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',
      openInNewTab: 'Chat in una nuova scheda',
      previousPage: 'Precedente',
      nextPage: 'Successivo',
      previous: 'Precedente',
      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',
      seeAll: 'Vedi tutto',
      bulkOperate: 'Operazione multipla',
      owner: 'Proprietario',
    },
    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 dataset e IA per potenziare il tuo business.',
      review: 'da oltre 500 recensioni',
      seeAll: 'Vedi tutto',
    },
    header: {
      knowledgeBase: 'Dataset',
      chat: 'Chat',
      register: 'Registrati',
      signin: 'Accedi',
      home: 'Home',
      setting: 'Impostazioni utente',
      logout: 'Esci',
      fileManager: 'File',
      skills: 'Skill',
      flow: 'Agente',
      search: 'Cerca',
      welcome: 'Benvenuto su',
      dataset: 'Dataset',
      memories: 'Memoria',
    },
    skills: {
      title: 'Skill',
      selectSpace: 'Seleziona uno spazio skill per iniziare',
      spacePlaceholder: 'Inserisci il nome dello spazio',
      createSpace: 'Crea spazio skill',
      createSpaceTitle: 'Crea nuovo spazio skill',
      createSpaceDescription:
        'Crea un nuovo spazio per organizzare e gestire le tue skill.',
      spaceName: 'Nome spazio',
      spaceNamePlaceholder: 'es. il-mio-spazio',
      spaceNameRequired: 'Inserisci il nome dello spazio',
      noSpaces: 'Nessuno spazio skill ancora. Crea il tuo primo!',
      enterSpace: 'Entra',
      spaceCreated: 'Spazio skill creato con successo',
      spaceDeleted: 'Spazio skill eliminato con successo',
      fetchError: 'Impossibile recuperare le skill',
      deleteSpaceTitle: 'Elimina spazio skill',
      deleteSpaceDescription:
        'Sei sicuro di voler eliminare questo spazio skill? Questa azione non può essere annullata e tutte le skill in questo spazio saranno eliminate permanentemente.',
      deleteSpaceName: 'Nome spazio',
      uploadSuccess: 'Skill caricata con successo',
      uploadError: 'Impossibile caricare la skill',
      deleteSuccess: 'Skill eliminata con successo',
      deleteError: 'Impossibile eliminare la skill',
      skillExists:
        'Una skill con questo nome esiste già. Eliminala prima o usa un nome diverso.',
      uploadSkill: 'Carica skill',
      searchPlaceholder: 'Cerca skill...',
      noSkills: 'Nessuna skill ancora. Carica la tua prima skill.',
      noSearchResults: 'Nessuna skill corrisponde alla tua ricerca',
      filesCount: '{{count}} file',
      foldersCount: '{{count}} cartelle',
      pageInfo: 'Pagina {{current}} di {{total}}',
      totalSkills: '{{total}} skill totali',
      backToSkills: 'Torna alle skill',
      selectFileToView: 'Seleziona un file da visualizzare',
      skillName: 'Nome skill',
      skillNamePlaceholder: 'es. la-mia-skill',
      skillNameHelp: 'Sono ammessi solo lettere, numeri, trattini e underscore',
      source: 'Fonte',
      version: 'Versione',
      skillVersion: 'Versione',
      skillVersionPlaceholder: 'es. 1.0.0',
      versionFormatHelp:
        'La versione deve essere in formato semver (es. 1.0.0)',
      versionRequired: 'La versione è richiesta',
      selectFilesOrFolder: 'Seleziona file o cartella',
      uploadDescription:
        'Carica i file della skill. Puoi trascinare e rilasciare i file o selezionare una cartella.',
      selectFolder: 'Seleziona cartella',
      dragFilesHint: 'o trascina i file qui sotto',
      dragFilesTitle: 'Trascina qui la cartella skill',
      dragFilesDescription:
        'Trascina e rilascia qui una cartella skill, oppure usa il pulsante "Seleziona cartella" qui sotto.',
      filesSelected: '{{count}} file selezionati',
      uploading: 'Caricamento...',
      files: 'File',
      noFiles: 'Nessun file',
      versionHistory: 'Cronologia versioni',
      selectVersion: 'Seleziona versione da visualizzare',
      latest: 'Ultima',
      metadata: {
        basic: 'Informazioni base',
        emoji: 'Emoji',
        skillKey: 'Chiave skill',
        always: 'Sempre attiva',
        primaryEnv: 'Variabile ambiente primaria',
        requires: 'Requisiti',
        requiredBins: 'Binari richiesti',
        requiredEnv: 'Variabili ambiente richieste',
        anyBins: 'Almeno uno richiesto',
        install: 'Dipendenze',
        links: 'Link',
        homepage: 'Homepage',
        repository: 'Repository',
        documentation: 'Documentazione',
      },
      validation: {
        missing_skill_md:
          'Skill non valida: SKILL.md non trovato. Assicurati che la directory della skill contenga un file SKILL.md valido.',
        invalid_frontmatter:
          'Skill non valida: SKILL.md deve avere un frontmatter valido (inizia e finisce con ---).',
        missing_name:
          'Skill non valida: il frontmatter di SKILL.md deve includere un campo "name".',
        invalid_name_format:
          'Skill non valida: "name" deve essere minuscolo e URL-safe (solo lettere, numeri, trattini).',
        invalid_version:
          'Skill non valida: "version" deve essere un semver valido (es. 1.0.0).',
        invalid_metadata:
          'Skill non valida: i metadati contengono campi non validi.',
        invalid_file_type:
          'Skill non valida: sono ammessi solo file basati su testo.',
        invalid_path:
          'Skill non valida: il percorso del file contiene caratteri non validi.',
        file_too_large:
          'Skill non valida: la dimensione del singolo file supera il limite di 5MB.',
        total_size_exceeded:
          'Skill non valida: la dimensione totale del bundle supera il limite di 50MB.',
        no_files: 'Nessun file selezionato. Seleziona una cartella skill.',
        noValidFiles: 'Nessun file valido trovato. Controlla la tua selezione.',
        junkFilesFound:
          'Rilevati file temporanei (es. .DS_Store). Rimuovili prima di caricare.',
        read_failed: 'Skill non valida: impossibile leggere il file SKILL.md.',
        invalid: 'Formato skill non valido.',
        valid: 'Formato skill valido. Pronto per il caricamento.',
        versionExists:
          'Questa versione esiste già. Usa un numero di versione diverso.',
        error: 'Validazione fallita',
      },
      parsedMetadata: 'Analizzato da SKILL.md:',
      addSkill: 'Aggiungi skill',
      upload: 'Carica',
      importFromGit: 'Importa da Git',
      gitPlatform: 'Piattaforma',
      repoUrl: 'URL repository',
      repoUrlHelp: 'Supporta URL repository con percorso opzionale',
      accessToken: 'Token di accesso',
      githubTokenHelp:
        'Per repository privati o limiti di frequenza più alti (5000 richieste/ora)',
      giteeTokenHelp:
        'Per repository privati o limiti di frequenza più alti (2000 richieste/ora)',
      rateLimitInfo: 'Info limite di frequenza',
      githubRateLimit:
        'Repository pubblici: 60 richieste/ora per IP. Usa il token per 5000 richieste/ora.',
      giteeRateLimit:
        'Repository pubblici: 1000 richieste/ora per IP. Usa il token per 2000 richieste/ora.',
      import: 'Importa',
      importing: 'Importazione...',
      configureSearch: 'Configura ricerca',
    },
    skillSearch: {
      configTitle: 'Configurazione ricerca skill',
      configDesc: 'Configura come le skill vengono indicizzate e cercate',
      embeddingModel: 'Modello di embedding',
      embeddingModelPlaceholder: 'Seleziona un modello di embedding',
      vectorSimilarityWeight: 'Peso similarità vettoriale',
      similarityThreshold: 'Soglia di similarità',
      topK: 'Top K risultati',
      indexFields: 'Campi indice',
      indexFieldsDesc: "Seleziona quali campi includere nell'indice di ricerca",
      fieldName: 'Nome',
      fieldNameDesc: 'Nome skill',
      fieldTags: 'Tag',
      fieldTagsDesc: 'Tag skill',
      fieldDescription: 'Descrizione',
      fieldDescriptionDesc: 'Descrizione skill',
      fieldContent: 'Contenuto',
      fieldContentDesc: 'Contenuto skill (es. README)',
      weight: 'Peso',
      pureVector: 'Solo vettore',
      hybrid: 'Ibrido',
      keyword: 'Parola chiave',
      vector: 'Vettore',
      keywordOnly: 'Solo parola chiave',
      balanced: 'Bilanciato',
      vectorOnly: 'Solo vettore',
      reindex: 'Reindicizza tutto',
      reindexing: 'Reindicizzazione...',
      reindexSuccess: 'Reindicizzazione riuscita',
      pleaseSelectEmbeddingModel: 'Seleziona un modello di embedding',
      saveSuccess: 'Salvato con successo',
      saveError: 'Salvataggio fallito',
      semanticSearchPlaceholder: 'Cerca skill per significato...',
      switchToSemantic: 'Passa alla ricerca semantica',
      switchToLocal: 'Passa alla ricerca locale',
    },
    memories: {
      llmTooltip:
        'Analizza il contenuto della conversazione, estrae le informazioni chiave e genera riepiloghi di memoria strutturati.',
      embeddingModelTooltip:
        'Converte il testo in vettori numerici per la ricerca di similarità di significato e il recupero della memoria.',
      embeddingModelError:
        'Il tipo di memoria è richiesto e "raw" non può essere eliminato.',
      memoryTypeTooltip: `Raw: il contenuto grezzo del dialogo tra l'utente e l'agente (richiesto di default).
Semantic Memory: conoscenza generale e fatti sull'utente e sul mondo.
Episodic Memory: registri con marcatura temporale di eventi ed esperienze specifiche.
Procedural Memory: skill apprese, abitudini e procedure automatizzate.`,
      raw: 'raw',
      semantic: 'semantic',
      episodic: 'episodic',
      procedural: 'procedural',
      editName: 'Modifica nome',
      memory: 'Memoria',
      createMemory: 'Crea memoria',
      name: 'Nome',
      memoryNamePlaceholder: 'nome memoria',
      memoryType: 'Tipo di memoria',
      embeddingModel: 'Modello di embedding',
      selectModel: 'Seleziona modello',
      llm: 'LLM',
      delMemoryWarn: `Dopo l'eliminazione, tutti i messaggi in questa memoria saranno eliminati e non potranno essere recuperati dagli agenti.`,
    },
    memory: {
      taskLogDialog: {
        title: 'Memoria',
        startTime: 'Ora di inizio',
        status: 'Stato',
        details: 'Dettagli',

        success: 'Successo',
        running: 'In esecuzione',
        failed: 'Fallito',
      },

      messages: {
        forget: 'Dimentica',
        forgetMessageTip: 'Sei sicuro di voler dimenticare?',
        messageDescription:
          "L'estrazione della memoria è configurata con i prompt e la temperatura dalle impostazioni avanzate.",
        copied: 'Copiato!',
        contentEmbed: 'Embedding contenuto',
        content: 'Contenuto',
        delMessageWarn: `Dopo aver dimenticato, questo messaggio non sarà recuperato dagli agenti.`,
        forgetMessage: 'Dimentica messaggio',
        sessionId: 'ID Sessione',
        agent: 'Agente',
        type: 'Tipo',
        validDate: 'Data di validità',
        forgetAt: 'Dimentica il',
        source: 'Fonte',
        enable: 'Abilita',
        action: 'Azione',
      },
      config: {
        descriptionPlaceholder: 'Descrivi la tua memoria',
        memorySizeTooltip: `Considera il contenuto di ogni messaggio + il suo vettore di embedding (≈ Contenuto + Dimensioni × 8 Byte).
Esempio: un messaggio di 1 KB con embedding a 1024 dimensioni usa ~9 KB. Il limite predefinito di 5 MB contiene ~500 messaggi di questo tipo.`,
        avatar: 'Avatar',
        description: 'Descrizione',
        memorySize: 'Dimensione memoria',
        advancedSettings: 'Impostazioni avanzate',
        permission: 'Permesso',
        onlyMe: 'Solo io',
        team: 'Team',
        storageType: 'Tipo di archiviazione',
        storageTypePlaceholder: 'Seleziona il tipo di archiviazione',
        forgetPolicy: 'Politica di oblio',
        temperature: 'Temperatura',
        systemPrompt: 'Prompt di sistema',
        systemPromptPlaceholder: 'Inserisci il prompt di sistema',
        userPrompt: 'Prompt utente',
        userPromptPlaceholder: 'Inserisci il prompt utente',
      },
      sideBar: {
        messages: 'Messaggi',
        configuration: 'Configurazione',
      },
    },
    knowledgeList: {
      welcome: 'Bentornato',
      description: 'Quali dataset userai oggi?',
      createKnowledgeBase: 'Crea dataset',
      name: 'Nome',
      namePlaceholder: 'Inserisci il nome.',
      doc: 'Documenti',
      searchKnowledgePlaceholder: 'Cerca',
      noMoreData: `È tutto. Niente altro.`,
      parserRequired: 'Il metodo di chunking è richiesto',
      dataFlowRequired: 'Il flusso dati è richiesto',
    },
    knowledgeDetails: {
      metadata: {
        fields: 'campi',
        selectFiles: 'Selezionati {{count}} file',
        fieldNameInvalid:
          'Il nome del campo può contenere solo lettere o underscore.',
        builtIn: 'Integrato',
        generation: 'Generazione',
        toMetadataSetting: 'Impostazioni generazione',
        toMetadataSettingTip:
          'Imposta i metadati automatici nella Configurazione.',
        descriptionTip:
          "Fornisci descrizioni o esempi per guidare l'LLM nell'estrazione dei valori per questo campo. Se lasciato vuoto, si baserà sul nome del campo.",
        restrictDefinedValuesTip:
          "Modalità Enum: limita l'estrazione dell'LLM ai soli valori preimpostati. Definisci i valori qui sotto.",
        valueExists:
          'Il valore esiste già. Conferma per unire i duplicati e combinare tutti i file associati.',
        fieldNameExists:
          'Il nome del campo esiste già. Conferma per unire i duplicati e combinare tutti i file associati.',
        valueSingleExists:
          'Il valore esiste già. Conferma per unire i duplicati.',
        fieldSingleNameExists:
          'Il nome del campo esiste già. Conferma per unire i duplicati.',
        fieldExists: 'Il campo esiste già.',
        fieldSetting: 'Impostazioni campo',
        changesAffectNewParses:
          'Le modifiche riguardano solo le nuove analisi.',
        restrictDefinedValues: 'Limita ai valori definiti',
        metadataGenerationSettings: 'Impostazioni generazione metadati',
        manageMetadata: 'Gestisci metadati',
        metadata: 'Metadati',
        values: 'Valori',
        value: 'Valore',
        action: 'Azione',
        field: 'Campo',
        type: 'Tipo',
        description: 'Descrizione',
        fieldName: 'Nome campo',
        editMetadata: 'Modifica metadati',
        addMetadata: 'Aggiungi metadati',
        deleteWarn: 'Questo {{field}} sarà rimosso da tutti i file associati',
        deleteManageFieldAllWarn:
          'Questo campo e tutti i suoi valori corrispondenti saranno eliminati da tutti i file associati.',
        deleteManageValueAllWarn:
          'Questo valore sarà eliminato da tutti i file associati.',
        deleteManageFieldSingleWarn:
          'Questo campo e tutti i suoi valori corrispondenti saranno eliminati da questo file.',
        deleteManageValueSingleWarn:
          'Questo valore sarà eliminato da questo file.',
        deleteSettingFieldWarn: `Questo campo sarà eliminato; i metadati esistenti non saranno interessati.`,
        deleteSettingValueWarn: `Questo valore sarà eliminato; i metadati esistenti non saranno interessati.`,
      },
      redoAll: 'Cancella i chunk esistenti',
      applyAutoMetadataSettings:
        'Applica le impostazioni globali dei metadati automatici',
      parseFileTip: 'Sei sicuro di voler analizzare?',
      parseFile: 'Analizza file',
      emptyMetadata: 'Nessun metadato',
      metadataField: 'Campo metadati',
      systemAttribute: 'Attributo di sistema',
      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: 'Cambia o configura la ingestion pipeline.',
      dataPipelineTitle: 'Ingestion pipeline',
      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',
      testSetting: 'Impostazioni',
      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: '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. Se la barra di avanzamento si blocca, consulta queste due FAQ: https://ragflow.io/docs/dev/faq#why-does-my-document-parsing-stall-at-under-one-percent.',
      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. Se hai modificato le impostazioni predefinite, come il peso della similarità delle parole chiave o la soglia di similarità, per ottenere i risultati ottimali, tieni presente che queste modifiche non saranno salvate automaticamente. Devi applicarle alle impostazioni del tuo assistente chat o alle impostazioni del componente agente Recupero.',
      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. Questo parametro imposta la soglia per le similarità tra la query utente e i chunk. Qualsiasi chunk con un punteggio di similarità inferiore a questa soglia sarà escluso dai risultati. Per impostazione predefinita, la soglia è impostata a 0.2. Ciò significa che solo i chunk con punteggio di similarità ibrida di 20 o superiore saranno recuperati.',
      vectorSimilarityWeight: 'Peso similarità vettoriale',
      vectorSimilarityWeightTip:
        'Imposta il peso della similarità delle parole chiave nel punteggio di similarità combinato, usato con la similarità coseno vettoriale o con il punteggio di reranking. 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, usato con la similarità coseno vettoriale o con il punteggio di reranking. 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. Se viene scelta l'opzione naive, sarà recuperato solo il testo semplice nel PDF. Nota che questa opzione attualmente funziona SOLO per i documenti PDF.",
      taskPageSize: 'Dimensione pagina attività',
      taskPageSizeMessage: 'Inserisci la dimensione della pagina attività!',
      taskPageSizeTip: `Durante il riconoscimento del layout, un file PDF viene suddiviso in chunk ed elaborato in parallelo per aumentare la velocità di elaborazione. Questo parametro imposta la dimensione di ogni chunk. Una dimensione chunk maggiore riduce la probabilità di dividere il testo continuo tra le pagine.`,
      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. Per un RAGFlow distribuito localmente: il limite di dimensione totale dei file per caricamento è 1GB, con un limite batch di 32 file. Non c'è limite al numero totale di file per account. Per cloud.ragflow.io, il limite di dimensione totale dei file per caricamento è 10MB, con ogni file non superiore a 10MB e un massimo di 128 file per account.",
      chunk: 'Chunk',
      bulk: 'Multiplo',
      cancel: 'Annulla',
      close: 'Chiudi',
      rerankModel: 'Modello rerank',
      rerankPlaceholder: 'Seleziona valore',
      rerankTip: `Opzionale. Se lasciato vuoto, RAGFlow userà una combinazione di similarità delle parole chiave ponderata e similarità coseno vettoriale ponderata; se viene selezionato un modello rerank, un punteggio di reranking ponderato sostituirà la similarità coseno vettoriale ponderata. Tieni presente che l'uso di un modello rerank aumenterà significativamente il tempo di risposta del sistema. Se desideri usare un modello rerank, assicurati di usare un reranker SaaS; se preferisci un modello rerank distribuito localmente, assicurati di avviare RAGFlow con docker-compose-gpu.yml.`,
      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 (``). Ad esempio, se configuri i tuoi delimitatori così: \\n`##`;, i tuoi testi saranno separati a interruzioni di riga, doppio cancelletto (##) e punto e virgola.',
      enableChildrenDelimiter: 'I chunk figli sono usati per il recupero',
      childrenDelimiter: 'Delimitatore per testo',
      childrenDelimiterTip:
        'Un delimitatore può consistere in uno o più caratteri speciali. Se sono più caratteri, assicurati che siano racchiusi tra backtick (``). Ad esempio, se configuri i tuoi delimitatori così: \\n`##`;, i tuoi testi saranno separati a interruzioni di riga, doppio cancelletto (##) e punto e virgola.',

      html4excel: 'Excel in HTML',
      html4excelTip: `Usa con il metodo di chunking Generale. Quando disabilitato, i fogli di calcolo (XLSX o XLS (Excel 97-2003)) nel dataset saranno analizzati in coppie chiave-valore. Quando abilitato, saranno analizzati in tabelle HTML, dividendo ogni 12 righe se la tabella originale ha più di 12 righe. Vedi https://ragflow.io/docs/dev/enable_excel2html per i dettagli.`,
      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. Tieni presente che saranno consumati token extra dal modello di indicizzazione specificato in 'Configurazione'. Puoi controllare o aggiornare le parole chiave aggiunte per un chunk dalla lista dei chunk. Per i dettagli, vedi https://ragflow.io/docs/dev/autokeyword_autoquestion.`,
      autoQuestions: 'Domande automatiche',
      autoQuestionsTip: `Estrai automaticamente N domande per ogni chunk per aumentare il loro ranking per le query contenenti quelle domande. Puoi controllare o aggiornare le domande aggiunte per un chunk dalla lista dei chunk. Questa funzionalità non interromperà il processo di chunking se si verifica un errore, eccetto che potrebbe aggiungere un risultato vuoto al chunk originale. Tieni presente che saranno consumati token extra dal modello di indicizzazione specificato in 'Configurazione'. Per i dettagli, vedi https://ragflow.io/docs/dev/autokeyword_autoquestion.`,
      redo: 'Vuoi cancellare i {{chunkNum}} chunk esistenti?',
      setMetaData: 'Imposta metadati',
      pleaseInputJson: 'Inserisci JSON',
      documentMetaTips: `<p>I metadati sono in formato JSON (non ricercabili). Saranno aggiunti al prompt per LLM se qualsiasi chunk di questo documento è incluso nel prompt.</p>
<p>Esempi:</p>
<b>I metadati sono:</b><br>
<code>
  {
      "Author": "Alex Dowson",
      "Date": "2024-11-12"
  }
</code><br>
<b>Il prompt sarà:</b><br>
<p>Documento: il_nome_del_documento</p>
<p>Autore: Alex Dowson</p>
<p>Data: 2024-11-12</p>
<p>Frammenti rilevanti come segue:</p>
<ul>
<li>  Ecco il contenuto del chunk....</li>
<li>  Ecco il contenuto del chunk....</li>
</ul>
`,
      metaData: 'Metadati',
      deleteDocumentConfirmContent:
        "Il documento è associato al grafo della conoscenza. Dopo l'eliminazione, le informazioni sui nodi e le relazioni correlate saranno eliminate, ma il grafo non sarà aggiornato immediatamente. L'azione di aggiornamento del grafo viene eseguita durante il processo di analisi del nuovo documento che porta l'attività di estrazione del grafo della conoscenza.",
      plainText: 'Naive',
      reRankModelWaring: 'Il modello re-rank richiede molto tempo.',
    },
    knowledgeConfiguration: {
      randomSeedTip:
        'Il seme è il punto di partenza per un algoritmo pseudo-casuale che garantisce la riproducibilità dello stesso output in esecuzioni diverse.',
      datasetDescription: 'Descrivi il tuo dataset',
      overlappedPercentTip:
        'La percentuale di sovrapposizione tra due chunk adiacenti',
      globalIndexModelTip:
        'Usato per generare grafi della conoscenza, RAPTOR, metadati automatici, parole chiave automatiche e domande automatiche. Le prestazioni del modello influenzeranno la qualità della generazione.',
      globalIndexModel: 'Modello di indicizzazione',
      settings: 'Impostazioni',
      autoMetadataTip: `Genera automaticamente i metadati. Si applica ai nuovi file durante l'analisi. I file esistenti richiedono una nuova analisi per essere aggiornati (i chunk rimangono preservati). Tieni presente che saranno consumati token extra dal modello di indicizzazione specificato in 'Configurazione'.`,
      imageTableContextWindow: 'Finestra di contesto immagine e tabella',
      imageTableContextWindowTip:
        "Cattura N token di testo sopra e sotto l'immagine e la tabella per fornire un contesto più ricco.",
      autoMetadata: 'Metadati automatici',
      mineruOptions: 'Opzioni MinerU',
      mineruParseMethod: 'Metodo di analisi',
      mineruParseMethodTip:
        "Metodo per l'analisi del PDF: auto (rilevamento automatico), txt (estrazione testo), ocr (riconoscimento ottico dei caratteri)",
      mineruFormulaEnable: 'Riconoscimento formule',
      mineruFormulaEnableTip:
        'Abilita il riconoscimento delle formule. Nota: questo potrebbe non funzionare correttamente per documenti cirillici.',
      mineruTableEnable: 'Riconoscimento tabelle',
      mineruTableEnableTip:
        "Abilita il riconoscimento e l'estrazione delle tabelle.",
      paddleocrOptions: 'Opzioni PaddleOCR',
      paddleocrApiUrl: 'URL API di PaddleOCR',
      paddleocrApiUrlTip: "L'URL dell'endpoint API del servizio PaddleOCR",
      paddleocrApiUrlPlaceholder:
        'es. https://paddleocr-server.com/layout-parsing',
      paddleocrAccessToken: 'Token di accesso AI Studio',
      paddleocrAccessTokenTip:
        "Token di accesso per l'API PaddleOCR (opzionale)",
      paddleocrAccessTokenPlaceholder: 'Il tuo token AI Studio (opzionale)',
      paddleocrAlgorithm: 'Algoritmo PaddleOCR',
      paddleocrAlgorithmTip: "Algoritmo da usare per l'analisi PaddleOCR",
      paddleocrSelectAlgorithm: 'Seleziona algoritmo',
      paddleocrModelNamePlaceholder: 'es. paddleocr-from-env-1',
      overlappedPercent: 'Percentuale di sovrapposizione(%)',
      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: 'Base',
      globalIndex: 'Indice globale',
      dataSource: 'Fonte dati',
      linkSourceSetTip:
        'Gestisci il collegamento della fonte dati con questo dataset',
      linkDataSource: 'Collega fonte dati',
      tocExtraction: 'PageIndex',
      tocExtractionTip:
        " Per i chunk esistenti, genera un indice gerarchico (una directory per file). Durante le query, quando il Miglioramento Directory è attivato, il sistema userà un modello grande per determinare quali elementi della directory sono rilevanti per la domanda dell'utente, identificando così i chunk rilevanti.",
      deleteGenerateModalContent: `
        <p>Eliminando i risultati <strong class='text-text-primary'>{{type}}</strong> generati
        rimuoverai tutte le entità e relazioni derivate da questo dataset.
        I tuoi file originali rimarranno intatti.<p>
        <br/>
        Vuoi continuare?
      `,
      extractRaptor: 'Estrai Raptor',
      extractKnowledgeGraph: 'Estrai grafo della conoscenza',
      filterPlaceholder: 'inserisci filtro',
      fileFilterTip: '',
      fileFilter: 'Filtro file',
      setDefaultTip: '',
      setDefault: 'Imposta come predefinito',
      editLinkDataPipeline: 'Modifica ingestion pipeline',
      linkPipelineSetTip:
        'Gestisci il collegamento della ingestion pipeline con questo dataset',
      default: 'Predefinito',
      dataPipeline: 'Cambia o configura la ingestion pipeline.',
      linkDataPipeline: 'Collega ingestion pipeline',
      enableAutoGenerate: 'Abilita generazione automatica',
      teamPlaceholder: 'Seleziona un team.',
      dataFlowPlaceholder: 'Seleziona una pipeline.',
      buildItFromScratch: 'Costruiscilo da zero',
      dataFlow: 'Pipeline',
      parseType: 'Tipo di analisi',
      manualSetup: 'Pipeline',
      builtIn: 'Integrato',
      titleDescription:
        'Aggiorna la configurazione del tuo dataset qui, in particolare il LLM e i prompt.',
      name: 'Nome dataset',
      photo: 'Foto dataset',
      photoTip: "Puoi caricare un'immagine fino a 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 per il testo è richiesto',
      embeddingModelTip:
        'Il modello di embedding predefinito usato dal dataset. Una volta che il dataset contiene chunk, quando si cambia il modello di embedding il sistema estrae casualmente alcuni chunk per una verifica di compatibilità, li ricodifica con il nuovo modello di embedding e calcola la similarità coseno tra i vettori nuovi e quelli vecchi. Il cambio è consentito solo se la similarità media del campione è ≥ 0.9. In caso contrario, è necessario eliminare tutti i chunk nel dataset prima di poterlo modificare.',
      permissionsTip:
        "Se impostato su 'Team', tutti i membri del team potranno gestire il dataset.",
      chunkTokenNumberTip:
        'Imposta in qualche modo la soglia di token per creare un chunk. Un segmento con meno token di questa soglia sarà combinato con i segmenti successivi finché il conteggio dei token non supera la soglia, a quel punto viene creato un chunk. Non viene creato un nuovo chunk a meno che non si incontri un delimitatore, anche se la soglia viene superata.',
      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.',
      tableColumnMode: 'Modalità colonna',
      tableColumnModeAuto: 'Auto',
      tableColumnModeManual: 'Manuale',
      tableColumnModeAutoDescription:
        'Tutte le colonne sono incluse nel testo del chunk e memorizzate come metadati (predefinito RAGFlow).',
      tableColumnRoles: 'Ruoli colonna',
      tableColumnRolesTip:
        'Scegli quali colonne includere nel testo del chunk (indicizzate per la ricerca vettoriale e full-text), solo nei metadati (filtrabili), o entrambi. Le modifiche si applicano alle nuove analisi; rianalizza i documenti esistenti affinché i ruoli abbiano effetto.',
      tableColumnRoleIndexing: 'Indicizzazione',
      tableColumnRoleMetadata: 'Metadati',
      tableColumnRoleBoth: 'Entrambi',
      tableColumnRolesEmpty:
        'Carica e analizza un file CSV o Excel per iniziare a configurare i ruoli delle colonne.',
      tableColumnRolesReparseTip:
        'Rianalizza i documenti esistenti affinché i nuovi ruoli delle colonne abbiano effetto.',
      parserLabel: {
        naive: 'Generale',
        qa: 'Q&A',
        resume: 'Curriculum',
        manual: 'Manuale',
        table: 'Tabella',
        paper: 'Paper',
        book: 'Libro',
        laws: 'Leggi',
        presentation: 'Presentazione',
        picture: 'Immagine',
        one: 'Uno',
        audio: 'Audio',
        email: 'Email',
        tag: 'Tag',
      },
      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 del dataset',
      book: `<p>I formati file supportati sono <b>DOCX</b>, <b>PDF</b>, <b>TXT</b>.</p><p>
      Per ogni libro in PDF, imposta gli <i>intervalli di pagine</i> per rimuovere informazioni indesiderate e ridurre il tempo di analisi.</p>`,
      laws: `<p>I formati file supportati sono <b>DOCX</b>, <b>PDF</b>, <b>TXT</b>.</p><p>
      I documenti legali seguono tipicamente un formato di scrittura rigoroso. Usiamo le caratteristiche del testo per identificare il punto di divisione.
      </p><p>
      Il chunk ha una granularità coerente con 'ARTICOLO', garantendo che tutto il testo di livello superiore sia incluso nel chunk.
      </p>`,
      manual: `<p>Solo <b>PDF</b> è supportato.</p><p>
      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. Pertanto, figure e tabelle nella stessa sezione non saranno separate, il che potrebbe risultare in dimensioni chunk maggiori.
      </p>`,
      naive: `<p>I formati file supportati sono <b>MD, MDX, DOCX, XLSX, XLS (Excel 97-2003), PPTX, PDF, TXT, JPEG, JPG, PNG, TIF, GIF, CSV, JSON, EML, HTML</b>.</p>
      <p>Questo metodo suddivide i file usando un metodo 'naive': </p>
      <p>
      <ul>
      <li>Usa un modello di rilevamento visivo per dividere i testi in segmenti più piccoli.</li>
      <li>Poi, combina segmenti adiacenti finché il conteggio dei token supera la soglia specificata da 'Numero token chunk per testo', a quel punto viene creato un chunk.</li></ul></p>`,
      paper: `<p>Solo file <b>PDF</b> è supportato.</p><p>
      I paper saranno divisi per sezione, come <i>abstract, 1.1, 1.2</i>. </p><p>
      Questo approccio consente all'LLM di riassumere il paper in modo più efficace e di fornire risposte più complete e comprensibili.
      Tuttavia, aumenta anche il contesto per le conversazioni IA e aggiunge al costo computazionale per l'LLM. Quindi durante una conversazione, considera di ridurre il valore di '<b>topN</b>'.</p>`,
      presentation: `<p>I formati file supportati sono <b>PDF</b>, <b>PPTX</b>.</p><p>
      Ogni pagina nelle slide è trattata come un chunk, con la sua immagine in miniatura memorizzata.</p><p>
      <i>Questo metodo di chunking viene applicato automaticamente a tutti i file PPT caricati, quindi non è necessario specificarlo manualmente.</i></p>`,
      qa: `
      <p>
      Questo metodo di chunking supporta i formati file <b>XLSX</b> e <b>CSV/TXT</b>.
    </p>
    <ul>
    <li>
      Se un file è in formato <b>XLSX</b> o <b>XLS (Excel 97-2003)</b>, dovrebbe contenere due colonne senza intestazioni: una per le domande e l'altra per le risposte, con la colonna delle domande che precede quella delle risposte. Sono accettabili più fogli, purché le colonne siano strutturate correttamente.
    </li>
    <li>
      Se un file è in formato <b>CSV/TXT</b>, deve essere codificato UTF-8 con TAB come delimitatore per separare domande e risposte.
    </li>
    </ul>
    <p>
      <i>
        Le righe di testo che non seguono le regole sopra saranno ignorate, e
        ogni coppia Q&A sarà considerata un chunk distinto.
      </i>
    </p>
      `,
      resume: `<p>I formati file supportati sono <b>DOCX</b>, <b>PDF</b>, <b>TXT</b>.
      </p><p>
      I curriculum di varie forme vengono analizzati e organizzati in dati strutturati per facilitare la ricerca dei candidati per i reclutatori.
      </p>
      `,
      table: `<p>I formati file supportati sono <b>XLSX</b> e <b>CSV/TXT</b>.</p><p>
      Ecco alcuni prerequisiti e suggerimenti:
      <ul>
    <li>Per file CSV o TXT, il delimitatore tra le colonne deve essere <em><b>TAB</b></em>.</li>
    <li>La prima riga deve essere le intestazioni di colonna.</li>
    <li>Le intestazioni delle colonne devono essere termini significativi per aiutare la comprensione del tuo LLM.
    È buona pratica giustapporre i sinonimi separati da una barra <i>'/'</i> ed enumerare i valori usando le parentesi, ad esempio: <i>'Genere/Sesso (maschio, femmina)'</i>.<p>
    Ecco alcuni esempi di intestazioni:<ol>
        <li>fornitore/venditore<b>'TAB'</b>Colore (Giallo, Blu, Marrone)<b>'TAB'</b>Sesso/Genere (maschio, femmina)<b>'TAB'</b>taglia (M, L, XL, XXL)</li>
        </ol>
        </p>
    </li>
    <li>Ogni riga nella tabella sarà trattata come un chunk.</li>
    </ul>`,
      picture: `
    <p>I file immagine sono supportati, con supporto video in arrivo.</p><p>
    Questo metodo impiega un modello OCR per estrarre testi dalle immagini.
    </p><p>
    Se il testo estratto dal modello OCR è ritenuto insufficiente, un LLM visivo specificato sarà usato per fornire una descrizione dell'immagine.
    </p>`,
      one: `
    <p>I formati file supportati sono <b>DOCX, XLSX, XLS (Excel 97-2003), PDF, TXT</b>.
    </p><p>
    Questo metodo tratta ogni documento nella sua interezza come un chunk.
    </p><p>
    Applicabile quando richiedi all'LLM di riassumere l'intero documento, purché possa gestire quella quantità di lunghezza del contesto.
    </p>`,
      knowledgeGraph: `<p>I formati file supportati sono <b>DOCX, EXCEL, PPT, IMAGE, PDF, TXT, MD, JSON, EML</b>

<p>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 per testo', a quel punto viene creato un chunk.</p>
<p>I chunk vengono poi inviati all'LLM per estrarre entità e relazioni per un grafo della conoscenza e una mappa mentale.</p>
<p>Assicurati di impostare i <b>Tipi di entità</b>.</p>`,
      tag: `<p>Un dataset che usa il metodo di chunking 'Tag' funziona come un set di tag. Altri dataset lo usano per taggare i loro chunk, e anche le query a questi dataset sono taggate usando questo set di tag.</p>
<p>Un set di tag <b>NON</b> sarà direttamente coinvolto in un processo di Retrieval-Augmented Generation (RAG).</p>
<p>Ogni chunk in questo dataset è una coppia descrizione-tag indipendente.</p>
<p>I formati file supportati includono <b>XLSX</b> e <b>CSV/TXT</b>:</p>
<p>Se un file è in formato <b>XLSX</b>, dovrebbe contenere due colonne senza intestazioni: una per le descrizioni dei tag e l'altra per i nomi dei tag, con la colonna Descrizione che precede la colonna Tag. Sono accettabili più fogli, purché le colonne siano strutturate correttamente.</p>
<p>Se un file è in formato <b>CSV/TXT</b>, deve essere codificato UTF-8 con TAB come delimitatore per separare descrizioni e tag.</p>
<p>In una colonna Tag, la <b>virgola</b> è usata per separare i tag.</p>
<i>Le righe di testo che non seguono le regole sopra saranno ignorate.</i>
`,
      useRaptor: 'RAPTOR',
      useRaptorTip:
        'RAPTOR può essere usato per attività di question-answering multi-hop. Naviga alla pagina File, clicca Genera > RAPTOR per abilitarlo. Vedi https://ragflow.io/docs/dev/enable_raptor per i dettagli.',
      prompt: 'Prompt',
      promptTip:
        "Usa il prompt di sistema per descrivere il compito per l'LLM, specificare come dovrebbe rispondere e delineare altri requisiti vari. Il prompt di sistema è spesso usato insieme a chiavi (variabili), che servono come vari input di dati per l'LLM. Usa una barra `/` o il pulsante (x) per mostrare le chiavi da usare.",
      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. Una soglia più alta significa meno chunk in ogni cluster, mentre una più bassa significa di più.',
      thresholdMessage: 'La soglia è richiesta',
      clusteringMethod: 'Metodo di clustering',
      clusteringMethodTip:
        'Seleziona il metodo di clustering RAPTOR. AHC può usare un valore di cluster massimo maggiore, ma può richiedere più memoria su input di grandi dimensioni.',
      clusteringMethodGmm: 'GMM',
      clusteringMethodAhc: 'AHC',
      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 specifici dataset durante il recupero. Il punteggio corrispondente viene aggiunto ai punteggi di similarità ibrida dei chunk recuperati da questi dataset, aumentando il loro ranking. Vedi https://ragflow.io/docs/dev/set_page_rank per i dettagli.`,
      tagName: 'Tag',
      frequency: 'Frequenza',
      searchTags: 'Cerca tag',
      tagCloud: 'Cloud',
      tagTable: 'Tabella',
      tagSet: 'Set di tag',
      tagSetTip: `
     <p> Seleziona uno o più dataset tag per auto-taggare i chunk nel tuo dataset. Vedi https://ragflow.io/docs/dev/use_tag_sets per i dettagli.</p>
<p>Anche la query dell'utente sarà auto-taggata.</p>
Questa funzionalità di auto-tagging migliora il recupero aggiungendo un ulteriore livello di conoscenza specifica del dominio al dataset esistente.
<p>Differenza tra auto-tag e auto-keyword:</p>
<ul>
  <li>Un dataset tag è un set chiuso definito dall'utente, mentre le parole chiave estratte dall'LLM possono essere considerate un set aperto.</li>
  <li>Devi caricare i set di tag in formati specifici prima di eseguire la funzionalità auto-tag.</li>
  <li>La funzionalità auto-keyword dipende dall'LLM e consuma un numero significativo di token.</li>
</ul>
      `,
      topnTags: 'Top-N tag',
      tags: 'Tag',
      addTag: 'Aggiungi tag',
      useGraphRag: 'Grafo della conoscenza',
      useGraphRagTip:
        'Costruisci un grafo della conoscenza sui chunk di file del dataset corrente per migliorare il question-answering multi-hop che coinvolge logica annidata. Vedi https://ragflow.io/docs/dev/construct_knowledge_graph per i dettagli.',
      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.</br>
      General: Usa prompt forniti da github.com/microsoft/graphrag per estrarre entità e relazioni.</br>
      NER: Usa spaCy NER e l'estrazione di parole chiave basata su regole per estrarre entità e relazioni. Non è necessario un LLM per l'estrazione stessa, rendendola veloce ed efficiente nelle risorse.`,
      graphRagBatchChunkTokenSize: 'Dimensione token chunk batch',
      graphRagBatchChunkTokenSizeTip:
        "Il limite di token per ogni batch di chunk inviati all'LLM per l'estrazione di entità e relazioni del grafo della conoscenza. Non applicato a NER.",
      resolution: 'Risoluzione entità',
      resolutionTip: `Un interruttore di deduplicazione entità. Quando abilitato, l'LLM combinerà entità simili - es. '2025' e 'l'anno 2025', o 'IT' e 'Information Technology' - 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 all'LLM un abstract per ogni comunità, noto come report comunità. Vedi qui per maggiori informazioni: https://www.microsoft.com/en-us/research/blog/graphrag-improving-global-search-via-dynamic-community-selection/",
      theDocumentBeingParsedCannotBeDeleted:
        'Il documento in fase di analisi non può essere eliminato',
      lastWeek: 'dalla settimana scorsa',
    },
    chunk: {
      type: 'Tipo',
      docType: {
        image: 'Immagine',
        table: 'Tabella',
        text: 'Testo',
      },
      size: 'Dimensione',
      uploadedTime: 'Ora di caricamento',
      chunk: 'Chunk',
      createChunk: 'Crea Chunk',
      editChunk: 'Modifica 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',
      image: 'Immagine',
      imageUploaderTitle:
        'Carica una nuova immagine per aggiornare questo chunk immagine',
      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: {
      chatSupport: 'Supporto chat',
      replyInstantly: 'Di solito rispondiamo istantaneamente',
      typeYourMessage: 'Scrivi il tuo messaggio...',
      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 (dataset) 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 dai dataset per la tua query, oppure lascia questo campo vuoto per permettere all'LLM di improvvisare quando non viene trovato nulla.`,
      emptyResponseMessage: `La risposta vuota sarà attivata quando nulla di rilevante viene recuperato dai dataset. Devi svuotare il campo 'Risposta vuota' se non è selezionato nessun dataset.`,
      emptyResponsePlaceholder:
        'La risposta che stai cercando non è stata trovata nel dataset!',
      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',
      knowledgeBasesPlaceholder: 'Seleziona valore',
      knowledgeBasesMessage: 'Seleziona',
      knowledgeBasesTip:
        'Seleziona i dataset da associare a questo assistente chat. Un dataset vuoto non apparirà nella lista a discesa.',
      system: 'Prompt di sistema',
      systemPlaceholder: `Sei un assistente intelligente. La tua funzione principale è rispondere alle domande basandoti rigorosamente sulla knowledge base fornita.

**Regole essenziali:**
  - La tua risposta deve derivare **esclusivamente** da questo dataset: {knowledge}.
  - **Quando le informazioni sono disponibili**: riassumi il contenuto per dare una risposta dettagliata.
  - **Quando le informazioni non sono disponibili**: la tua risposta deve contenere esattamente questa frase: "La risposta che stai cercando non è stata trovata nella knowledge base!"
  - **Considera sempre** l'intera cronologia della conversazione.`,
      systemInitialValue: `Sei un assistente intelligente. La tua funzione principale è rispondere alle domande basandoti rigorosamente sulla knowledge base fornita.

      **Regole essenziali:**
        - La tua risposta deve derivare **esclusivamente** da questo dataset: \`{knowledge}\`.
        - **Quando le informazioni sono disponibili**: riassumi il contenuto per dare una risposta dettagliata.
        - **Quando le informazioni non sono disponibili**: la tua risposta deve contenere esattamente questa frase: "La risposta che stai cercando non è stata trovata nel dataset!"
        - **Considera sempre** l'intera cronologia della conversazione.`,
      systemMessage: 'Inserisci!',
      systemTip:
        "I tuoi prompt o istruzioni per l'LLM, inclusi ma non limitati al suo ruolo, la lunghezza desiderata, il tono e la lingua delle sue risposte. Se il tuo modello ha supporto nativo per il ragionamento, puoi aggiungere //no_thinking al prompt per fermare il ragionamento.",
      topN: 'Top N',
      topNTip: `Non tutti i chunk con punteggio di similarità sopra la 'soglia di similarità' saranno inviati all'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. Le variabili definite saranno usate dal 'Prompt di sistema' come parte dei prompt per l'LLM. {knowledge} è una variabile speciale riservata che rappresenta i chunk recuperati dal/i dataset specificato/i, e tutte le variabili devono essere racchiuse tra parentesi graffe {} nel 'Prompt di sistema'. Vedi https://ragflow.io/docs/dev/set_chat_variables per i dettagli.`,
      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. Questo parametro ha tre opzioni: seleziona 'Improvvisa' per produrre risposte più creative; seleziona 'Preciso' (predefinito) per produrre risposte più conservative; 'Bilanciato' è una via di mezzo tra 'Improvvisa' e 'Preciso'.`,
      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, escludendo quelle meno probabili.',
      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: `La dimensione massima del contesto del modello; un valore non valido o errato causerà un errore. 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',
      published: 'Pubblicato',
      publishedTooltip:
        "Usa la versione pubblicata per questo embed. Quando abilitato, l'URL generato include release=true.",
      embedType: 'Tipo di embed',
      fullscreenChat: 'Chat a schermo intero (iframe tradizionale)',
      floatingWidget: 'Widget fluttuante (stile Intercom)',
      theme: 'Tema',
      light: 'Chiaro',
      dark: 'Scuro',
      enableStreaming: 'Abilita risposte in streaming',
      muteWidget: 'Silenzia suoni del widget',
      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: 'Sono un assistente chat.',
      useKnowledgeGraph: 'Usa grafo della conoscenza',
      useKnowledgeGraphTip:
        'Se usare il/i grafo/i della conoscenza nel/i dataset specificato/i durante il recupero per il question answering multi-hop. Quando abilitato, ciò comporterebbe ricerche iterative attraverso chunk di entità, relazioni e report di comunità, aumentando notevolmente il tempo di recupero.',
      keyword: 'Analisi parole chiave',
      keywordTip: `Usa LLM per analizzare le domande dell'utente, estrarre parole chiave che saranno enfatizzate durante il calcolo della rilevanza. Funziona bene con query lunghe ma aumenterà il tempo di risposta.`,
      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. Quando abilitato, ciò permette al modello di accedere a conoscenza esterna e affrontare domande complesse passo dopo passo, sfruttando tecniche come il ragionamento a catena di pensiero. Questo approccio migliora la capacità del modello di fornire risposte accurate scomponendo i problemi in passaggi gestibili, migliorando le prestazioni su compiti che richiedono ragionamento logico e pensiero multi-step.`,
      tavilyApiKeyTip:
        'Se una chiave API è impostata correttamente qui, le ricerche web basate su Tavily saranno usate per integrare il recupero dal dataset.',
      tavilyApiKeyMessage: 'Inserisci la tua chiave API Tavily',
      tavilyApiKeyHelp: 'Come ottenerla?',
      crossLanguage: 'Ricerca cross-lingua',
      crossLanguagePlaceholder: 'Seleziona valore',
      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 (come tag, categorie o permessi di accesso) per affinare e controllare il recupero delle informazioni rilevanti all'interno di un sistema.",
      conditions: 'Condizioni',
      metadataKeys: 'Elementi filtrabili',
      addCondition: 'Aggiungi condizione',
      meta: {
        disabled: 'Disabilitato',
        auto: 'Automatico',
        manual: 'Manuale',
        semi_auto: 'Semi-automatico',
      },
      cancel: 'Annulla',
      chatSetting: 'Impostazioni chat',
      tocEnhance: 'PageIndex',
      tocEnhanceTip: ` Durante l'analisi del documento, sono state generate informazioni sull'indice (vedi l'opzione 'Abilita estrazione indice' nel metodo Generale). Questo permette al modello grande di restituire elementi dell'indice rilevanti per la query dell'utente, usando così questi elementi per recuperare i chunk correlati e applicare una ponderazione a questi chunk durante il processo di ordinamento. Questo approccio imita il comportamento umano di ricerca delle informazioni nei libri.`,
      batchDeleteSessions: 'Eliminazione multipla',
      deleteSelectedConfirm: 'Eliminare le {{count}} sessioni selezionate?',
      showChunkMetadata: 'Mostra metadati del chunk',
      showChunkMetadataTip:
        'Mostra i metadati del documento (ad es. titolo, numero di pagina, data di caricamento) accanto ai chunk di testo recuperati',
      metadataFields: 'Campi metadati',
      metadataFieldsTip:
        'Seleziona i campi di metadati da visualizzare per ogni chunk',
    },
    setting: {
      Verify: 'Verifica',
      keyValid: 'La tua chiave API è valida.',
      keyInvalid: 'La tua chiave API non è valida.',
      enableToolCall: 'Abilita chiamata strumenti',
      enableToolCallTip:
        'Permette a questo modello di chiamare strumenti quando il tipo di modello selezionato supporta le chiamate a strumenti.',
      deleteModel: 'Elimina modello',
      bedrockCredentialsHint:
        "Suggerimento: lascia Access Key / Secret Key vuoti per usare l'autenticazione AWS IAM.",
      awsAuthModeAccessKeySecret: 'Access Key',
      awsAuthModeIamRole: 'IAM Role',
      awsAuthModeAssumeRole: 'Assume Role',
      awsAccessKeyId: 'AWS Access Key ID',
      awsSecretAccessKey: 'AWS Secret Access Key',
      awsRoleArn: 'AWS Role ARN',
      awsRoleArnMessage: 'Inserisci AWS Role ARN',
      awsAssumeRoleTip:
        "Se selezioni questa modalità, l'istanza Amazon EC2 assumerà il suo ruolo esistente per accedere ai servizi AWS. Non sono richieste credenziali aggiuntive.",
      modelEmptyTip:
        'Nessun modello disponibile. <br>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',
      connectorNameTip: 'Un nome descrittivo per il connettore',
      syncDeletedFiles: 'Sincronizza file eliminati',
      confluenceIsCloudTip:
        "Spunta se questa è un'istanza Confluence Cloud, deseleziona per Confluence Server/Data Center",
      confluenceWikiBaseUrlTip:
        "L'URL base della tua istanza Confluence (es. https://your-domain.atlassian.net/wiki)",
      confluenceSpaceKeyTip:
        'Opzionale: specifica una chiave spazio per limitare la sincronizzazione a uno spazio specifico. Lascia vuoto per sincronizzare tutti gli spazi accessibili. Per più spazi, separa con virgole (es. DEV,DOCS,HR)',
      s3PrefixTip: `Specifica il percorso della cartella all'interno del tuo bucket S3 da cui recuperare i file.
Esempio: general/v2/`,
      S3CompatibleEndpointUrlTip: `Richiesto per Storage Box compatibile con S3. Specifica l'URL dell'endpoint compatibile con S3.
Esempio: https://fsn1.your-objectstorage.com`,
      S3CompatibleAddressingStyleTip: `Richiesto per Storage Box compatibile con S3. Specifica lo stile di indirizzamento compatibile con S3.
Esempio: Virtual Hosted Style`,
      addDataSourceModalTitle: 'Crea il tuo connettore {{name}}',
      deleteSourceModalTitle: 'Elimina fonte dati',
      deleteSourceModalContent: `
      <p>Sei sicuro di voler eliminare questo collegamento alla fonte dati?</p>`,
      deleteSourceModalConfirmText: 'Conferma',
      errorMsg: 'Messaggio di errore',
      newDocs: 'Nuovi documenti',
      timeStarted: 'Ora di inizio',
      log: 'Log',
      rssDescription:
        'Connettiti a un feed RSS o Atom pubblico e sincronizza le voci del feed nella tua knowledge base.',
      confluenceDescription:
        'Integra il tuo workspace Confluence per cercare nella documentazione.',
      s3Description:
        'Connettiti al tuo bucket AWS S3 per importare e sincronizzare i file memorizzati.',
      google_cloud_storageDescription:
        'Connetti il tuo bucket Google Cloud Storage per importare e sincronizzare i file.',
      r2Description:
        'Connetti il tuo bucket Cloudflare R2 per importare e sincronizzare i file.',
      oci_storageDescription:
        'Connetti il tuo bucket Oracle Cloud Object Storage per importare e sincronizzare i file.',
      discordDescription:
        'Collega il tuo server Discord per accedere e analizzare i dati delle chat.',
      notionDescription:
        'Sincronizza pagine e database da Notion per il recupero della conoscenza.',
      google_driveDescription:
        'Connetti il tuo Google Drive tramite OAuth e sincronizza cartelle o drive specifici.',
      gmailDescription:
        'Connetti il tuo Gmail tramite OAuth per sincronizzare le email.',
      webdavDescription: 'Connettiti a server WebDAV per sincronizzare i file.',
      webdavRemotePathTip:
        'Opzionale: specifica un percorso cartella sul server WebDAV (es. /Documents). Lascia vuoto per sincronizzare dalla radice.',
      google_driveTokenTip:
        'Carica il JSON del token OAuth generato dall\'helper OAuth o dalla Google Cloud Console. Puoi anche caricare un JSON client_secret da un\'applicazione "installed" o "web". Se questa è la tua prima sincronizzazione, si aprirà una finestra del browser per completare il consenso OAuth. Se il JSON contiene già un refresh token, sarà riutilizzato automaticamente.',
      google_drivePrimaryAdminTip:
        'Indirizzo email che ha accesso al contenuto del Drive da sincronizzare',
      zendeskDescription:
        'Connetti il tuo Zendesk per sincronizzare ticket, articoli e altri contenuti.',
      google_driveMyDriveEmailsTip:
        'Email separate da virgola i cui contenuti "My Drive" devono essere indicizzati (includi l\'admin primario).',
      google_driveSharedFoldersTip:
        'Link a cartelle Google Drive separati da virgola da scansionare.',
      gmailPrimaryAdminTip:
        'Email admin primaria con accesso Gmail / Workspace, usata per enumerare gli utenti del dominio e come account di sincronizzazione predefinito.',
      gmailTokenTip:
        'Carica il JSON OAuth generato dalla Google Console. Se contiene solo credenziali client, esegui una volta la verifica basata su browser per generare refresh token a lunga durata.',
      dropboxDescription:
        'Connetti il tuo Dropbox per sincronizzare file e cartelle da un account scelto.',
      teamsDescription:
        'Connetti Microsoft Teams tramite Microsoft Graph per sincronizzare post e risposte dei canali.',
      teamsTenantIdTip:
        "ID tenant Azure AD. Richiede un'app con permessi applicativi Team.ReadBasic.All e ChannelMessage.Read.All (consenso admin).",
      slackDescription:
        'Connetti il tuo workspace Slack per sincronizzare messaggi e thread dei canali.',
      slackBotTokenTip:
        "Token OAuth utente bot Slack (inizia con xoxb-). L'app necessita degli scope channels:read, channels:history e users:read.",
      slackChannelsTip:
        'Opzionale: nomi dei canali da sincronizzare (es. general). Lascia vuoto per sincronizzare tutti i canali accessibili.',
      sharepointDescription:
        'Connetti un sito SharePoint tramite Microsoft Graph per sincronizzare le sue librerie documenti.',
      sharepointSiteUrlTip:
        "URL completo del sito SharePoint da indicizzare, es. https://contoso.sharepoint.com/sites/MySite. Richiede un'app Azure AD con permessi applicativi Sites.Read.All e Files.Read.All (consenso admin).",
      bitbucketDescription:
        'Connetti Bitbucket per sincronizzare il contenuto delle PR.',
      bitbucketTopWorkspaceTip:
        'Il workspace Bitbucket da indicizzare (es. "atlassian" da https://bitbucket.org/atlassian/workspace ).',
      bitbucketRepositorySlugsTip:
        'Slug dei repository separati da virgola. Es. repo-one,repo-two',
      bitbucketProjectsTip:
        'Chiavi progetto separate da virgola. Es. PROJ1,PROJ2',
      bitbucketWorkspaceTip:
        'Questo connettore indicizzerà tutti i repository nel workspace.',
      boxDescription:
        'Connetti il tuo drive Box per sincronizzare file e cartelle.',

      githubDescription:
        'Connetti GitHub per sincronizzare pull request e issue per il recupero.',
      airtableDescription:
        "Connettiti ad Airtable e sincronizza i file da una tabella specificata all'interno di un workspace designato.",
      dingtalkAITableDescription:
        'Connettiti a Dingtalk AI Table e sincronizza i record da una tabella specificata.',
      gitlabDescription:
        'Connetti GitLab per sincronizzare repository, issue, merge request e documentazione correlata.',
      asanaDescription:
        'Connettiti ad Asana e sincronizza i file da un workspace specificato.',
      imapDescription:
        'Connettiti alla tua casella IMAP per sincronizzare le email per il recupero della conoscenza.',
      dropboxAccessTokenTip:
        'Genera un token di accesso a lunga durata nella Dropbox App Console con gli scope files.metadata.read, files.content.read e sharing.read.',
      moodleDescription:
        'Connettiti al tuo LMS Moodle per sincronizzare contenuti dei corsi, forum e risorse.',
      moodleUrlTip:
        "L'URL base della tua istanza Moodle (es. https://moodle.university.edu). Non includere /webservice o /login.",
      moodleTokenTip:
        "Genera un token di servizio web in Moodle: vai a Amministrazione del sito → Server → Servizi web → Gestisci token. L'utente deve essere iscritto ai corsi che vuoi sincronizzare.",
      seafileDescription:
        'Connettiti al tuo server SeaFile per sincronizzare file e documenti dalle tue librerie.',
      seafileUrlTip:
        "L'URL completo del tuo server SeaFile incluso il protocollo. Esempio: https://seafile.example.com - Non includere una barra finale o alcun percorso dopo il dominio.",
      seafileAccountScopeTip:
        'Sincronizza tutte le librerie visibili al token API account qui sotto.',
      seafileTokenPanelHeading:
        'Fornisci uno di questi metodi di autenticazione:',
      seafileTokenPanelAccountBullet:
        '- concede accesso a tutte le tue librerie.',
      seafileTokenPanelLibraryBullet:
        '— limitato a una singola libreria (più sicuro).',
      seafileValidationAccountTokenRequired:
        "Il token API account è richiesto per l'ambito Intero account",
      seafileValidationTokenRequired:
        'Fornisci un token API account o un token libreria',
      seafileValidationLibraryIdRequired: "L'ID libreria è richiesto",
      seafileValidationDirectoryPathRequired:
        'Il percorso directory è richiesto',
      seafileSyncScopeTip:
        'Controlla cosa viene sincronizzato: ' +
        '(1) Intero account - Sincronizza tutte le librerie a cui il tuo token ha accesso. Richiede un token API account. ' +
        "(2) Singola libreria - Sincronizza tutti i file all'interno di una libreria specifica. Richiede l'ID libreria e un token API account o un token API libreria. " +
        "(3) Directory specifica - Sincronizza solo i file all'interno di una cartella specifica dentro una libreria. Richiede l'ID libreria, il percorso della cartella all'interno di quella libreria, e un token API account o un token API libreria.",
      seafileTokenTip:
        'Il tuo token API SeaFile a livello di account. ' +
        'Concede accesso a tutte le librerie visibili al tuo account. ' +
        'Richiesto quando l\'ambito di sincronizzazione è "Intero account". ' +
        'Per "Singola libreria" o "Directory specifica" puoi usare questo token o un token API libreria invece.',
      seafileRepoTokenTip:
        'Un token API limitato a una libreria che concede accesso solo a una libreria specifica. ' +
        'Può essere usato al posto del token API account per gli ambiti di sincronizzazione "Singola libreria" e "Directory specifica".',
      seafileRepoIdTip:
        "L'identificatore univoco (UUID) della libreria SeaFile che vuoi sincronizzare. " +
        "Puoi trovarlo nella barra degli indirizzi del browser quando apri la libreria nell'interfaccia web SeaFile. " +
        'Esempio: 7a9e1b3c-4d5f-6a7b-8c9d-0e1f2a3b4c5d. ' +
        'Richiesto quando l\'ambito di sincronizzazione è "Singola libreria" o "Directory specifica".',
      seafileSyncPathTip:
        "Il percorso assoluto della cartella da sincronizzare all'interno della libreria specificata dall'ID libreria sopra. " +
        'Deve iniziare con una barra in avanti. ' +
        'Tutti i file e le sottocartelle sotto questo percorso saranno inclusi ricorsivamente. ' +
        'Esempio: /Documents/Reports. ' +
        "Importante: la cartella deve esistere all'interno della libreria specificata. " +
        'I percorsi al di fuori della libreria non sono supportati. ' +
        'Usato solo quando l\'ambito di sincronizzazione è "Directory specifica".',
      seafileIncludeSharedTip:
        'Quando abilitato, le librerie che altri utenti hanno condiviso con te sono incluse nella sincronizzazione. ' +
        'Quando disabilitato, solo le librerie di proprietà del tuo account sono sincronizzate. ' +
        'Si applica solo quando l\'ambito di sincronizzazione è "Intero account".',
      seafileBatchSizeTip:
        'Il numero di documenti elaborati e restituiti per batch durante la sincronizzazione. ' +
        'Un valore più piccolo usa meno memoria ma può essere più lento nel complesso. ' +
        'Predefinito: 100.',
      jiraDescription:
        'Connetti il tuo workspace Jira per sincronizzare issue, commenti e allegati.',
      jiraBaseUrlTip:
        'URL base del tuo sito Jira (es. https://your-domain.atlassian.net).',
      jiraProjectKeyTip:
        'Opzionale: limita la sincronizzazione a una singola chiave progetto (es. ENG).',
      jiraJqlTip:
        'Filtro JQL opzionale. Lascia vuoto per affidarti ai filtri progetto/tempo.',
      jiraBatchSizeTip: 'Numero massimo di issue richieste da Jira per batch.',
      jiraCommentsTip:
        'Includi i commenti Jira nel documento markdown generato.',
      jiraAttachmentsTip:
        'Scarica gli allegati come documenti separati durante la sincronizzazione.',
      jiraAttachmentSizeTip:
        'Gli allegati più grandi di questo numero di byte saranno saltati.',
      jiraLabelsTip:
        "Etichette che dovrebbero essere saltate durante l'indicizzazione (separate da virgola).",
      jiraBlacklistTip:
        'I commenti la cui email autore corrisponde a queste voci saranno ignorati.',
      jiraScopedTokenTip:
        'Abilita questo quando usi token Atlassian limitati (api.atlassian.com).',
      jiraEmailTip: "Email associata all'account/token API Jira.",
      jiraTokenTip:
        'Token API generato da https://id.atlassian.com/manage-profile/security/api-tokens.',
      jiraPasswordTip:
        'Password opzionale per ambienti Jira Server/Data Center.',
      mysqlDescription:
        'Connettiti al database MySQL per sincronizzare i dati dalle tabelle usando query SQL.',
      mysqlQueryTip:
        'Query SQL per estrarre i dati dal tuo database (es. SELECT * FROM products WHERE status = "active").',
      mysqlContentColumnsTip:
        'Nomi di colonna separati da virgola i cui valori saranno combinati come contenuto del documento per la vettorizzazione.',
      mysqlMetadataColumnsTip:
        'Nomi di colonna separati da virgola da memorizzare come metadati del documento (non vettorizzati, ma ricercabili).',
      mysqlIdColumnTip:
        'Colonna da usare come ID documento univoco. Se non specificata, sarà usato un hash del contenuto.',
      mysqlTimestampColumnTip:
        "Colonna datetime/timestamp per la sincronizzazione incrementale. Saranno recuperate solo le righe modificate dopo l'ultima sincronizzazione.",
      postgresqlDescription:
        'Connettiti al database PostgreSQL per sincronizzare i dati dalle tabelle usando query SQL.',
      postgresqlQueryTip:
        "Query SQL per estrarre i dati dal tuo database (es. SELECT * FROM products WHERE status = 'active').",
      postgresqlContentColumnsTip:
        'Nomi di colonna separati da virgola i cui valori saranno combinati come contenuto del documento per la vettorizzazione.',
      postgresqlMetadataColumnsTip:
        'Nomi di colonna separati da virgola da memorizzare come metadati del documento (non vettorizzati, ma ricercabili).',
      postgresqlIdColumnTip:
        'Colonna da usare come ID documento univoco. Se non specificata, sarà usato un hash del contenuto.',
      postgresqlTimestampColumnTip:
        "Colonna datetime/timestamp per la sincronizzazione incrementale. Saranno recuperate solo le righe modificate dopo l'ultima sincronizzazione.",
      rest_apiDescription:
        'Connetti qualsiasi endpoint REST API come fonte dati usando un connettore flessibile guidato dalla configurazione.',
      onedriveDescription:
        'Connetti OneDrive o OneDrive for Business per indicizzare file e cartelle tramite query delta Microsoft Graph.',
      onedriveTenantIdTip:
        "ID tenant Azure Active Directory (Directory ID) dell'organizzazione Microsoft 365.",
      onedriveClientIdTip:
        'ID applicazione (client) della registrazione app Azure AD con permesso Files.Read.All.',
      onedriveClientSecretTip:
        'Valore del client secret generato nella registrazione app Azure AD.',
      onedriveFolderPathTip:
        "Percorso sotto-cartella opzionale per limitare l'indicizzazione (es. /Documents/Reports). Lascia vuoto per indicizzare l'intero drive.",
      outlookDescription:
        'Connetti le caselle Outlook / Microsoft 365 e indicizza i messaggi tramite query delta Microsoft Graph.',
      outlookTenantIdTip:
        "ID tenant Azure Active Directory (Directory ID) dell'organizzazione Microsoft 365.",
      outlookClientIdTip:
        'ID applicazione (client) della registrazione app Azure AD con permesso Mail.Read.',
      outlookClientSecretTip:
        'Valore del client secret generato nella registrazione app Azure AD.',
      outlookFolderTip:
        'Cartella di posta da sincronizzare (es. inbox, sentitems, archive). Predefinito inbox.',
      outlookUserIdsTip:
        'UPN o object ID separati da virgola delle caselle da sincronizzare. Lascia vuoto per sincronizzare ogni casella nel tenant (richiede User.Read.All).',
      salesforceDescription:
        "Connetti un'org Salesforce e indicizza i record CRM (Account, Contatti, Opportunità, Casi, articoli Knowledge) tramite SOQL con sincronizzazione incrementale.",
      salesforceInstanceUrlTip:
        'URL org Salesforce, es. https://your-domain.my.salesforce.com (senza barra finale).',
      salesforceClientIdTip:
        'Consumer Key di una Connected App con Client Credentials Flow abilitato e lo scope api.',
      salesforceClientSecretTip:
        "Consumer Secret della Connected App usata per l'autenticazione client-credentials.",
      salesforceObjectsTip:
        'Nomi API SObject separati da virgola da indicizzare. Predefinito Account, Contact, Opportunity, Case, Knowledge__kav.',
      salesforceApiVersionTip:
        'Versione REST API Salesforce (es. v59.0). Usa la versione che la tua org supporta.',
      azure_blobDescription:
        'Indicizza i blob da un container Azure Blob Storage in una knowledge base. Supporta autenticazione con account-key, connection-string e SAS-token. I blob invariati vengono saltati tramite fingerprinting ETag.',
      azureBlobAuthModeTip:
        'Scegli il metodo di autenticazione. Account Key e Connection String richiedono container_name; SAS Token richiede container_url + sas_token.',
      azureBlobAccountNameTip:
        "Nome account di storage Azure (es. mystorageaccount). Richiesto per l'autenticazione account-key.",
      azureBlobAccountKeyTip:
        "Chiave di accesso account di storage (codificata Base64). Richiesta per l'autenticazione account-key.",
      azureBlobConnectionStringTip:
        "Stringa di connessione Azure Storage completa (DefaultEndpointsProtocol=https;AccountName=...;...). Richiesta per l'autenticazione connection-string.",
      azureBlobContainerUrlTip:
        "URL HTTPS completo del container (es. https://account.blob.core.windows.net/container). Richiesto per l'autenticazione SAS-token.",
      azureBlobSasTokenTip:
        'Stringa di query SAS (senza il "?" iniziale). Richiesta per l\'autenticazione SAS-token.',
      azureBlobContainerNameTip:
        "Nome del container da indicizzare. Richiesto per l'autenticazione account-key e connection-string.",
      azureBlobPrefixTip:
        "Prefisso nome blob opzionale per limitare l'indicizzazione a una cartella virtuale (es. documents/reports/). Lascia vuoto per indicizzare l'intero container.",
      restApiQueryParamsTip:
        "Coppie Chiave=valore (una per riga) inviate come parametri di query URL. Usa questo invece di incorporare i parametri nell'URL.",
      restApiHeadersTip:
        'Oggetto JSON opzionale di header HTTP aggiuntivi da inviare con ogni richiesta.',
      restApiItemsPathTip:
        'Nome del campo o JSONPath all\'array di elementi nella risposta. Lascia vuoto per il rilevamento automatico (prova "items", "results", "data", ecc.).',
      restApiIdFieldTip:
        "Percorso del campo all'interno di ogni elemento usato per costruire un ID documento stabile. Lascia vuoto per generare automaticamente dall'hash del contenuto.",
      restApiContentFieldsTip:
        'Elenco separato da virgola di campi degli elementi da concatenare nel contenuto del documento.',
      restApiMetadataFieldsTip:
        'Elenco separato da virgola di campi degli elementi da memorizzare come metadati.',
      restApiNextCursorPathTip:
        'Espressione JSONPath che si risolve nel cursore della pagina successiva nella risposta API.',
      restApiPollTimestampFieldTip:
        "Percorso del campo in ogni elemento che rappresenta l'ora dell'ultimo aggiornamento, usato per la sincronizzazione incrementale.",
      restApiRequestBodyTip:
        'Body JSON opzionale da inviare per le richieste POST. Usato insieme ai parametri di query e alla paginazione.',
      restApiRequestDelayTip:
        "Ritardo in secondi tra richieste di pagina consecutive. Aiuta a evitare il rate limiting dall'API. Imposta a 0 per disabilitare.",
      restApiValidationApiKeyRequired:
        'La chiave API è richiesta quando il tipo di autenticazione è API Key (Header).',
      restApiValidationApiKeyHeaderNameRequired:
        'Il nome header della chiave API è richiesto quando il tipo di autenticazione è API Key (Header).',
      restApiValidationBearerTokenRequired:
        'Il bearer token è richiesto quando il tipo di autenticazione è Bearer Token.',
      restApiValidationBasicUsernameRequired:
        'Il nome utente è richiesto quando il tipo di autenticazione è Basic Auth.',
      restApiValidationBasicPasswordRequired:
        'La password è richiesta quando il tipo di autenticazione è Basic Auth.',
      restApiTestConnection: 'Testa connessione',
      restApiTestSuccess: 'Connettore REST API validato con successo.',
      restApiTestFailed:
        'Validazione del connettore REST API fallita. Controlla la tua configurazione e i log.',
      availableSourcesDescription: 'Seleziona una fonte dati da aggiungere',
      availableSources: 'Fonti disponibili',
      datasourceDescription: 'Gestisci la tua fonte dati e le connessioni',
      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: `La dimensione massima del contesto del modello; un valore non valido o errato causerà un errore. 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:
        'La nuova password inserita non corrisponde!',
      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.',
      tongyiBaseUrlTip:
        'Per utenti cinesi, non è necessario compilare o usare https://dashscope.aliyuncs.com/compatible-mode/v1. Per utenti internazionali, usa https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
      siliconBaseUrlTip:
        'Per utenti cinesi, non è necessario compilare o usare https://api.siliconflow.cn/v1. Per utenti internazionali, usa https://api.siliconflow.com/v1',
      tongyiBaseUrlPlaceholder:
        '(Solo utenti internazionali, vedi suggerimento)',
      minimaxBaseUrlTip:
        'Solo utenti internazionali: usa https://api.minimax.io/v1',
      minimaxBaseUrlPlaceholder:
        '(Solo utenti internazionali, inserisci https://api.minimax.io/v1)',
      modify: 'Modifica',
      systemModelSettings: 'Imposta modelli predefiniti',
      chatModel: 'LLM',
      chatModelTip: 'Il LLM predefinito per ogni nuovo dataset creato.',
      embeddingModel: 'Embedding',
      embeddingModelTip:
        'Il modello di embedding predefinito per ogni nuovo dataset creato. Se non riesci a trovare un modello di embedding dal menu a discesa, controlla se stai usando la versione slim di RAGFlow (che non include modelli di embedding) o controlla https://ragflow.io/docs/dev/supported_models per vedere se il tuo fornitore di modelli supporta questo modello.',
      img2txtModel: 'VLM',
      img2txtModelTip:
        "Il VLM predefinito per ogni nuovo dataset creato. Descrive un'immagine o un video. Se non riesci a trovare un modello dal menu a discesa, controlla https://ragflow.io/docs/dev/supported_models per vedere se il tuo fornitore di modelli supporta questo modello.",
      sequence2txtModel: 'ASR',
      sequence2txtModelTip:
        'Il modello ASR predefinito per ogni nuovo dataset creato. Usa questo modello per tradurre le voci in testo corrispondente.',
      rerankModel: 'Rerank',
      rerankModelTip: `Il modello rerank predefinito per il reranking dei chunk. Se non riesci a trovare un modello dal menu a discesa, controlla https://ragflow.io/docs/dev/supported_models per vedere se il tuo fornitore di modelli supporta questo modello.`,
      ttsModel: 'TTS',
      ttsModelTip:
        'Il modello text-to-speech predefinito. Se non riesci a trovare un modello dal menu a discesa, controlla https://ragflow.io/docs/dev/supported_models per vedere se il tuo fornitore di modelli supporta questo modello.',
      workspace: 'workspace',
      upgrade: 'Aggiorna',
      addLlmTitle: 'Aggiungi LLM',
      editLlmTitle: 'Modifica modello {{name}}',
      editModel: 'Modifica modello',
      instanceName: 'Nome istanza',
      instanceNameMessage: "Inserisci il nome dell'istanza!",
      instanceNameTip:
        'Un nome univoco per identificare questa istanza del fornitore sotto la stessa factory.',
      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!',
      paddleocr: {
        apiUrl: 'URL API di PaddleOCR',
        apiUrlPlaceholder:
          'Ad esempio: https://paddleocr-server.com/layout-parsing',
        accessToken: 'Token di accesso AI Studio',
        accessTokenPlaceholder: 'Il tuo token AI Studio (opzionale)',
        algorithm: 'Algoritmo PaddleOCR',
        selectAlgorithm: 'Seleziona algoritmo',
        modelNamePlaceholder: 'Ad esempio: paddleocr-from-env-1',
        modelNameRequired: 'Il nome del modello è obbligatorio',
        apiUrlRequired: "L'URL API di PaddleOCR è obbligatorio",
      },
      vision: 'Supporta Vision?',
      ollamaLink: 'Come integrare {{name}}',
      FishAudioLink: 'Come usare FishAudio',
      TencentCloudLink: 'Come usare TencentCloud ASR',
      volcModelNameMessage: 'Inserisci il nome del tuo modello!',
      addEndpointID: 'ID Modello',
      endpointIDMessage: "Inserisci l'ID del tuo modello",
      addArkApiKey: 'VOLC ARK_API_KEY',
      ArkApiKeyMessage: 'Inserisci la tua ARK_API_KEY',
      bedrockModelNameMessage: 'Inserisci il nome del tuo modello!',
      addBedrockEngineAK: 'ACCESS KEY',
      bedrockAKMessage: 'Inserisci la tua ACCESS KEY',
      addBedrockSK: 'SECRET KEY',
      bedrockSKMessage: 'Inserisci la tua SECRET KEY',
      bedrockRegion: 'Regione AWS',
      bedrockRegionMessage: 'Seleziona!',
      'us-east-2': 'US East (Ohio)',
      'us-east-1': 'US East (N. Virginia)',
      'us-west-1': 'US West (N. California)',
      'us-west-2': 'US West (Oregon)',
      'af-south-1': 'Africa (Cape Town)',
      'ap-east-1': 'Asia Pacific (Hong Kong)',
      'ap-south-2': 'Asia Pacific (Hyderabad)',
      'ap-southeast-3': 'Asia Pacific (Jakarta)',
      'ap-southeast-5': 'Asia Pacific (Malaysia)',
      'ap-southeast-4': 'Asia Pacific (Melbourne)',
      'ap-south-1': 'Asia Pacific (Mumbai)',
      'ap-northeast-3': 'Asia Pacific (Osaka)',
      'ap-northeast-2': 'Asia Pacific (Seoul)',
      'ap-southeast-1': 'Asia Pacific (Singapore)',
      'ap-southeast-2': 'Asia Pacific (Sydney)',
      'ap-east-2': 'Asia Pacific (Taipei)',
      'ap-southeast-7': 'Asia Pacific (Thailand)',
      'ap-northeast-1': 'Asia Pacific (Tokyo)',
      'ca-central-1': 'Canada (Central)',
      'ca-west-1': 'Canada West (Calgary)',
      'eu-central-1': 'Europe (Frankfurt)',
      'eu-west-1': 'Europe (Ireland)',
      'eu-west-2': 'Europe (London)',
      'eu-south-1': 'Europe (Milan)',
      'eu-west-3': 'Europe (Paris)',
      'eu-south-2': 'Europe (Spain)',
      'eu-north-1': 'Europe (Stockholm)',
      'eu-central-2': 'Europe (Zurich)',
      'il-central-1': 'Israel (Tel Aviv)',
      'mx-central-1': 'Mexico (Central)',
      'me-south-1': 'Middle East (Bahrain)',
      'me-central-1': 'Middle East (UAE)',
      'sa-east-1': 'South America (São Paulo)',
      'us-gov-east-1': 'AWS GovCloud (US-East)',
      'us-gov-west-1': 'AWS GovCloud (US-West)',
      addTencentCloudSID: 'TencentCloud Secret ID',
      TencentCloudSIDMessage: 'Inserisci il tuo Secret ID',
      addTencentCloudSK: 'TencentCloud Secret Key',
      TencentCloudSKMessage: 'Inserisci la tua Secret Key',
      SparkModelNameMessage: 'Seleziona il modello Spark',
      addSparkAPIPassword: 'Spark APIPassword',
      SparkAPIPasswordMessage: 'inserisci la tua APIPassword',
      addSparkAPPID: 'Spark APP ID',
      SparkAPPIDMessage: 'inserisci il tuo APP ID',
      addSparkAPISecret: 'Spark APISecret',
      SparkAPISecretMessage: 'inserisci il tuo APISecret',
      addSparkAPIKey: 'Spark APIKey',
      SparkAPIKeyMessage: 'inserisci la tua APIKey',
      yiyanModelNameMessage: 'Inserisci il nome del modello',
      addyiyanAK: 'yiyan API KEY',
      yiyanAKMessage: 'Inserisci la tua API KEY',
      addyiyanSK: 'yiyan Secret KEY',
      yiyanSKMessage: 'Inserisci la tua Secret KEY',
      FishAudioModelNameMessage: 'Dai un nome al tuo modello di sintesi vocale',
      addFishAudioAK: 'Fish Audio API KEY',
      addFishAudioAKMessage: 'Inserisci la tua API KEY',
      addFishAudioRefID: 'FishAudio Reference ID',
      addFishAudioRefIDMessage:
        'Inserisci il Reference ID (lascia vuoto per usare il modello predefinito).',
      GoogleModelIDMessage: 'Inserisci il tuo model ID!',
      addGoogleProjectID: 'Project ID',
      GoogleProjectIDMessage: 'Inserisci il tuo Project ID',
      addGoogleServiceAccountKey:
        'Service Account Key (lascia vuoto se usi Application Default Credentials)',
      GoogleServiceAccountKeyMessage:
        'Inserisci la Google Cloud Service Account Key in formato base64',
      addGoogleRegion: 'Google Cloud Region',
      GoogleRegionMessage: 'Inserisci la Google Cloud Region',
      modelProvidersWarn: `Aggiungi prima sia il modello di embedding che l'LLM in <b>Impostazioni > Fornitori di modelli</b>. Poi, impostali in 'Imposta modelli predefiniti'.`,
      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',
      langfuseDescription:
        'Tracce, valutazioni, gestione dei prompt e metriche per il debug e il miglioramento della tua applicazione LLM.',
      viewLangfuseSDocumentation: 'Visualizza la documentazione di Langfuse',
      view: 'Visualizza',
      modelsToBeAddedTooltip:
        'Se il tuo fornitore di modelli non è elencato ma dichiara di essere "OpenAI-compatible", seleziona la scheda OpenAI-API-compatible per aggiungere i modelli pertinenti. ',
      mcp: 'MCP',
      mineru: {
        modelNameRequired: 'Il nome del modello è obbligatorio',
        apiServerRequired:
          'La configurazione del MinerU API Server è richiesta',
        serverUrlBackendLimit:
          "L'indirizzo URL del MinerU Server è disponibile solo per il backend client HTTP",
        apiserver: 'Configurazione MinerU API Server',
        outputDir: 'Percorso directory di output MinerU',
        backend: 'Tipo di backend di elaborazione MinerU',
        serverUrl: 'Indirizzo URL MinerU Server',
        deleteOutput: "Elimina i file di output dopo l'elaborazione",
        selectBackend: 'Seleziona backend di elaborazione',
        backendOptions: {
          pipeline: 'Elaborazione pipeline standard',
          vlmTransformers: 'Vision Language Model con Transformers',
          vlmVllmEngine: 'Vision Language Model con vLLM Engine',
          vlmHttpClient: 'Vision Language Model via HTTP Client',
          vlmMlxEngine: 'Vision Language Model con MLX Engine',
          vlmVllmAsyncEngine:
            'Vision Language Model con vLLM Async Engine (Sperimentale)',
          vlmLmdeployEngine:
            'Vision Language Model con LMDeploy Engine (Sperimentale)',
        },
      },
      modelTypes: {
        chat: 'Chat',
        embedding: 'Embedding',
        rerank: 'Rerank',
        sequence2text: 'sequence2text',
        tts: 'TTS',
        image2text: 'OCR',
        speech2text: 'ASR',
      },
      showToc: 'Mostra contenuto',
      hideToc: 'Nascondi contenuto',
    },
    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: {
      uploadFolderTitle: 'Carica cartella',
      folder: 'Cartella',
      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. Per un RAGFlow distribuito localmente: il limite di dimensione totale dei file per caricamento è 1GB, con un limite batch di 32 file. Non c'è limite al numero totale di file per account. Per cloud.ragflow.io, il limite di dimensione totale dei file per caricamento è 10MB, con ogni file non superiore a 10MB e un massimo di 128 file per account.",
      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: {
      preprocess: {
        preprocess: 'Pre-elaborazione',
        mainContent: 'Contenuto principale',
        abstract: 'Abstract',
        author: 'Autore',
        sectionTitle: 'Titolo sezione',
      },
      editTags: 'Modifica tag',
      editTagsDescription:
        'Aggiungi tag per organizzare e filtrare i tuoi agenti. Premi Invio o virgola per aggiungere.',
      tagsPlaceholder: 'Aggiungi un tag e premi Invio',
      tagSuggestionsLabel: 'Tag esistenti',
      removeTagAriaLabel: 'Rimuovi {{tag}}',
      includeHeadingContent: 'Separa contenuto intestazione padre',
      includeHeadingContentTip:
        "Quando abilitato, i chunk includono solo il loro percorso di intestazione e contenuto; il contenuto immediatamente successivo a un'intestazione padre è mantenuto come chunk separato.",
      rootAsHeading: 'Imposta il primo chunk come contesto globale',
      rootAsHeadingTip:
        'Tratta la prima divisione come intestazione globale per mantenere un contesto coerente nella gerarchia del documento. Ideale per i curriculum dove la prima sezione identifica il soggetto.',
      hierarchyTip: `Costruisci un albero di intestazioni e produci chunk autosufficienti, ciascuno con il suo intero percorso ancestrale (es. Parte 1 › Capitolo 3 › Sezione 2 + testo del corpo).\n
Ideale per: testi altamente strutturati — come statuti legali, regolamenti, contratti e specifiche tecniche — dove ogni chunk deve essere identificabile dalla sua posizione nella gerarchia.`,
      groupTip: `Dividi il documento in modo piatto a un livello di intestazione scelto, unendo sezioni piccole adiacenti per garantire il flusso semantico. I chunk escludono il percorso ancestrale.\n
Ideale per: documenti con contenuto fluente e contestualmente connesso — come libri, manuali, report e articoli — dove la coerenza narrativa dipende dal mantenere insieme i paragrafi adiacenti.`,
      enableMultiColumn: 'Rileva layout multi-colonna',
      enableMultiColumnTip:
        'Rileva e analizza i layout di pagina multi-colonna per preservare il corretto ordine di lettura. Attiva questo per PDF o documenti con layout a due colonne o stile giornale.',
      removeToc: 'Rimuovi indice originale',
      removeTocTip:
        "Rimuove l'indice incluso nel PDF originale, così non viene analizzato come contenuto regolare o suddiviso per il recupero.",
      removeHeaderFooter: 'Rimuovi intestazione e piè di pagina',
      autoPlay: 'Riproduzione automatica audio',
      downloadFileTypeTip: 'Il tipo di file da scaricare',
      downloadFileType: 'Tipo di file da scaricare',
      formatTypeError: 'Errore di formato o tipo',
      variableNameMessage:
        'Il nome della variabile può contenere solo lettere, underscore e numeri',
      variableDescription: 'Descrizione variabile',
      defaultValue: 'Valore predefinito',
      conversationVariable: 'Variabile di conversazione',
      recommended: 'Consigliato',
      customerSupport: 'Supporto clienti',
      marketing: 'Marketing',
      consumerApp: 'App consumer',
      other: 'Altro',
      ingestionPipeline: 'Ingestion pipeline',
      agents: 'Agenti',
      publishedAt: 'Pubblicato il',
      days: 'Giorni',
      beginInput: 'Input iniziale',
      ref: 'Variabile',
      stockCode: 'Codice azione',
      apiKeyPlaceholder:
        'YOUR_API_KEY (ottenuta da https://serpapi.com/manage-api-key)',
      flowStart: 'Inizio',
      flowNum: 'N',
      test: 'Test',
      extractDepth: 'Profondità estrazione',
      format: 'Formato',
      basic: 'base',
      advanced: 'avanzato',
      general: 'generale',
      searchDepth: 'Profondità ricerca',
      tavilyTopic: 'Argomento Tavily',
      maxResults: 'Risultati massimi',
      includeAnswer: 'Includi risposta',
      includeRawContent: 'Includi contenuto grezzo',
      includeImages: 'Includi immagini',
      includeImageDescriptions: 'Includi descrizioni immagini',
      includeDomains: 'Includi domini',
      ExcludeDomains: 'Escludi domini',
      Days: 'Giorni',
      comma: 'Virgola',
      semicolon: 'Punto e virgola',
      period: 'Punto',
      lineBreak: 'Interruzione di riga',
      tab: 'Tab',
      space: 'Spazio',
      delimiters: 'Delimitatori',
      one: 'Uno',
      oneChunkTitle: 'Nota',
      oneChunkDescription:
        'Tutte le sezioni analizzate saranno unite in ordine in un singolo chunk.',
      flattenMediaToText: 'Disabilita modello visivo',
      flattenMediaToTextTip:
        'Tratta le sezioni di immagini e tabelle come testo semplice e salta il miglioramento visivo.',
      enableChildrenDelimiters: 'I chunk figli sono usati per il recupero',
      merge: 'Unisci',
      split: 'Dividi',
      script: 'Script',
      iterationItemDescription:
        "Rappresenta l'elemento corrente nell'iterazione, che può essere referenziato e manipolato nei passaggi successivi.",
      guidingQuestion: 'Domanda guida',
      onFailure: 'In caso di fallimento',
      userPromptDefaultValue: "Questo è l'ordine che devi inviare all'agente.",
      search: 'Cerca',
      communication: 'Comunicazione',
      developer: 'Sviluppatore',
      typeCommandORsearch: 'Digita un comando o cerca...',
      builtIn: 'Integrato',
      ExceptionDefaultValue: 'Valore predefinito eccezione',
      exceptionMethod: 'Metodo eccezione',
      maxRounds: 'Round massimi di riflessione',
      delayAfterError: 'Ritardo dopo errore',
      maxRetries: 'Round massimi di ritentativo',
      maxSteps: 'Passi massimi',
      headless: 'Headless',
      enableDefaultExtensions: 'Abilita estensioni predefinite',
      enableDefaultExtensionsTip:
        'Abilita le estensioni predefinite di browser-use (uBlock, gestione cookie, ClearURLs). Disabilita questo per evitare download di estensioni in runtime.',
      chromiumSandbox: 'Sandbox Chromium',
      chromiumSandboxTip:
        'Se abilitare la sandbox Chromium. Negli ambienti Docker root questo è solitamente disabilitato; su host normali è consigliato abilitarlo.',
      persistSession: 'Mantieni sessione',
      persistSessionTip:
        'Quando abilitato, questo nodo Browser riutilizza la sua sessione del browser per evitare accessi ripetuti.',
      uploadSources: 'Carica sorgenti',
      uploadSourcesTip:
        'Supporta ID di file, URL di file o variabili. Puoi separare più valori con virgole o usare un formato array JSON (ad esempio ["id1","https://example.com/a.pdf"]).',
      advancedSettings: 'Impostazioni avanzate',
      addTools: 'Aggiungi strumenti',
      sysPromptDefaultValue: `
      <role>
        Sei un assistente utile, un assistente IA specializzato nella risoluzione di problemi per l'utente.
        Se viene fornito un dominio specifico, adatta la tua competenza a quel dominio; altrimenti, opera come generalista.
      </role>
      <instructions>
        1. Comprendi la richiesta dell'utente.
        2. Scomponila in sottoattività logiche.
        3. Esegui ogni sottoattività passo dopo passo, ragionando in modo trasparente.
        4. Verifica accuratezza e coerenza.
        5. Riassumi il risultato finale in modo chiaro.
      </instructions>`,
      singleLineText: 'Testo a riga singola',
      multimodalModels: 'Modelli multimodali',
      textOnlyModels: 'Modelli solo testo',
      allModels: 'Tutti i modelli',
      codeExecDescription:
        'Scrivi la tua logica Python o Javascript personalizzata.',
      stringTransformDescription:
        'Modifica il contenuto del testo. Attualmente supporta: divisione o concatenazione del testo.',
      foundation: 'Fondamenti',
      tools: 'Strumenti',
      dataManipulation: 'Manipolazione dati',
      flow: 'Flusso',
      dialog: 'Dialogo',
      cite: 'Cita',
      citeTip: 'citeTip',
      name: 'Nome',
      nameMessage: 'Inserisci nome',
      lastSavedAt: 'Ultimo salvataggio',
      description: 'Descrizione',
      descriptionMessage: 'Questo è un agente per un compito specifico.',
      examples: 'Esempi',
      to: 'A',
      msg: 'Messaggi',
      msgTip:
        'Restituisce il contenuto della variabile del componente a monte o il testo inserito da te.',
      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',
      loopDescription:
        "Il ciclo è il limite massimo del numero di cicli del componente corrente; quando il numero di cicli supera il valore del ciclo, significa che il componente non può completare l'attività corrente, per favore ri-ottimizza l'agente",
      exitLoop: 'Esci dal ciclo',
      exitLoopDescription: `Equivalente a "break". Questo nodo non ha elementi di configurazione. Quando il corpo del ciclo raggiunge questo nodo, il ciclo termina.`,
      loopVariables: 'Variabili ciclo',
      maximumLoopCount: 'Conteggio massimo cicli',
      loopTerminationCondition: 'Condizione di terminazione 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 dataset specificati (dataset). Assicurati che i dataset selezionati 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. Assicurati di specificare il nome, la descrizione e gli esempi per ogni categoria, insieme al componente successivo corrispondente.`,
      relevantDescription: `Un componente che usa il LLM per valutare se l'output a monte è rilevante per l'ultima query dell'utente. Assicurati di specificare il componente successivo per ogni risultato di giudizio.`,
      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. Assicurati che il valore TopN sia impostato correttamente prima dell'uso.`,
      switchDescription: `Un componente che valuta condizioni basate sull'output dei componenti precedenti e dirige il flusso di esecuzione di conseguenza. Permette logica di ramificazione complessa definendo casi e specificando azioni per ogni caso o azione predefinita se nessuna condizione è soddisfatta.`,
      wikipediaDescription: `Un componente che cerca da wikipedia.org, usando TopN per specificare il numero di risultati di ricerca. Integra i dataset esistenti.`,
      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. Integra i dataset esistenti.`,
      duckDuckGo: 'DuckDuckGo',
      duckDuckGoDescription:
        'Un componente che cerca da duckduckgo.com, permettendo di specificare il numero di risultati di ricerca usando TopN. Integra i dataset esistenti.',
      searXNG: 'SearXNG',
      searXNGDescription:
        "Un componente che cerca tramite l'URL dell'istanza SearXNG fornita. Specifica TopN e l'URL dell'istanza.",
      docGenerator: 'Generatore Documenti',
      docGeneratorDescription: `Genera un file da contenuto Markdown.`,
      browser: 'Browser',
      browserDescription:
        'Automatizza attività del browser. Supporta la configurazione del modello e azioni guidate da prompt. Le sorgenti di caricamento supportano ID di file e URL, e i file scaricati possono essere salvati in una cartella di destinazione.',
      subtitle: 'Sottotitolo',
      logoImage: 'Immagine Logo',
      logoPosition: 'Posizione Logo',
      logoWidth: 'Larghezza Logo',
      logoHeight: 'Altezza Logo',
      fontFamily: 'Famiglia Font',
      fontSize: 'Dimensione Font',
      titleFontSize: 'Dimensione Font Titolo',
      pageSize: 'Dimensione Pagina',
      orientation: 'Orientamento',
      marginTop: 'Margine Superiore',
      marginBottom: 'Margine Inferiore',
      filename: 'Nome File',
      outputDirectory: 'Directory Output',
      addPageNumbers: 'Aggiungi Numeri Pagina',
      addTimestamp: 'Aggiungi Timestamp',
      watermarkText: 'Testo Filigrana',
      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 all'LLM. Più grande è meglio, ma fai attenzione al limite massimo di token dell'LLM.",
      wikipedia: 'Wikipedia',
      pubMed: 'PubMed',
      pubMedDescription:
        'Un componente che cerca da https://pubmed.ncbi.nlm.nih.gov/, permettendo di specificare il numero di risultati di ricerca usando TopN. Integra i dataset esistenti.',
      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/, permettendo di specificare il numero di risultati di ricerca usando TopN. Integra i dataset esistenti.',
      sortBy: 'Ordina per',
      submittedDate: 'Data invio',
      lastUpdatedDate: 'Data ultimo aggiornamento',
      relevance: 'Rilevanza',
      google: 'Google',
      googleDescription:
        'Un componente che cerca da https://www.google.com/, permettendo di specificare il numero di risultati di ricerca usando TopN. Integra i dataset esistenti. Nota che questo richiede una chiave API da serpapi.com.',
      bing: 'Bing',
      bingDescription:
        'Un componente che cerca da https://www.bing.com/, permettendo di specificare il numero di risultati di ricerca usando TopN. Integra i dataset esistenti. Nota che questo richiede una chiave API da microsoft.com.',
      apiKey: 'CHIAVE API',
      country: 'Paese e regione',
      language: 'Lingua',
      googleScholar: 'Google Scholar',
      googleScholarDescription:
        'Un componente che cerca https://scholar.google.com/. Puoi usare Top N per specificare il numero di risultati di ricerca.',
      yearLow: 'Anno minimo',
      yearHigh: 'Anno massimo',
      patents: 'Brevetti',
      data: 'Dati',
      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/. Puoi usare Top N per specificare il numero di risultati di ricerca.',
      baiduFanyi: 'BaiduFanyi',
      baiduFanyiDescription:
        'Un componente che ottiene traduzioni specializzate da https://fanyi.baidu.com/.',
      appid: 'App ID',
      secretKey: 'Chiave segreta',
      domain: 'Dominio',
      transType: 'Tipo di traduzione',
      baiduSecretKeyOptions: {
        translate: 'Traduzione generale',
        fieldtranslate: 'Traduzione di settore',
      },
      baiduDomainOptions: {
        it: "Tecnologia dell'informazione",
        finance: 'Finanza ed economia',
        machinery: 'Produzione meccanica',
        senimed: 'Biomedicina',
        novel: 'Letteratura online',
        academic: 'Paper accademico',
        aerospace: 'Aerospaziale',
        wiki: 'Scienze umane e sociali',
        news: 'Notizie e informazioni',
        law: 'Leggi e regolamenti',
        contract: 'Contratto',
      },
      baiduSourceLangOptions: {
        auto: 'Rilevamento automatico',
        zh: 'Cinese',
        en: 'Inglese',
        yue: 'Cantonese',
        wyw: 'Cinese classico',
        jp: 'Giapponese',
        kor: 'Coreano',
        fra: 'Francese',
        spa: 'Spagnolo',
        th: 'Thailandese',
        ara: 'Arabo',
        ru: 'Russo',
        pt: 'Portoghese',
        de: 'Tedesco',
        it: 'Italiano',
        el: 'Greco',
        nl: 'Olandese',
        pl: 'Polacco',
        bul: 'Bulgaro',
        est: 'Estone',
        dan: 'Danese',
        fin: 'Finlandese',
        cs: 'Ceco',
        rom: 'Rumeno',
        slo: 'Sloveno',
        swe: 'Svedese',
        hu: 'Ungherese',
        cht: 'Cinese tradizionale',
        vie: 'Vietnamita',
      },
      qWeather: 'QWeather',
      qWeatherDescription:
        "Un componente che recupera informazioni meteorologiche, come temperatura e qualità dell'aria, da https://www.qweather.com/.",
      lang: 'Lingua',
      type: 'Tipo',
      webApiKey: 'Web API key',
      userType: 'Tipo utente',
      timePeriod: 'Periodo di tempo',
      qWeatherLangOptions: {
        zh: 'Cinese semplificato',
        'zh-hant': 'Cinese tradizionale',
        en: 'Inglese',
        de: 'Tedesco',
        es: 'Spagnolo',
        fr: 'Francese',
        it: 'Italiano',
        ja: 'Giapponese',
        ko: 'Coreano',
        ru: 'Russo',
        hi: 'Hindi',
        th: 'Thailandese',
        ar: 'Arabo',
        pt: 'Portoghese',
        bn: 'Bengalese',
        ms: 'Malese',
        nl: 'Olandese',
        el: 'Greco',
        la: 'Latino',
        sv: 'Svedese',
        id: 'Indonesiano',
        pl: 'Polacco',
        tr: 'Turco',
        cs: 'Ceco',
        et: 'Estone',
        vi: 'Vietnamita',
        fil: 'Filippino',
        fi: 'Finlandese',
        he: 'Ebraico',
        is: 'Islandese',
        nb: 'Norvegese',
      },
      qWeatherTypeOptions: {
        weather: 'Previsioni meteo',
        indices: 'Indice vita meteo',
        airquality: "Qualità dell'aria",
      },
      qWeatherUserTypeOptions: {
        free: 'Abbonato gratuito',
        paid: 'Abbonato a pagamento',
      },
      qWeatherTimePeriodOptions: {
        now: 'Ora',
        '3d': '3 giorni',
        '7d': '7 giorni',
        '10d': '10 giorni',
        '15d': '12 giorni',
        '30d': '30 giorni',
      },
      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',
      userId: 'ID utente',
      host: 'Host',
      port: 'Porta',
      password: 'Password',
      switch: 'Switch',
      logicalOperator: 'Operatore logico',
      switchOperatorOptions: {
        equal: 'Uguale a',
        notEqual: 'Diverso da',
        gt: 'Maggiore di',
        ge: 'Maggiore o uguale',
        lt: 'Minore di',
        le: 'Minore o uguale',
        contains: 'Contiene',
        notContains: 'Non contiene',
        startWith: 'Inizia con',
        endWith: 'Finisce con',
        empty: 'È vuoto',
        notEmpty: 'Non vuoto',
        in: 'In',
        notIn: 'Non in',
        is: 'È',
        isNot: 'Non è',
      },
      switchLogicOperatorOptions: {
        and: 'AND',
        or: 'OR',
      },
      operator: 'Operatore',
      value: 'Valore',
      useTemplate: 'Usa',
      wenCai: 'WenCai',
      queryType: 'Tipo di query',
      wenCaiDescription:
        "Un componente che ottiene informazioni finanziarie, inclusi prezzi delle azioni e notizie sui finanziamenti, da un'ampia gamma di siti web finanziari.",
      wenCaiQueryTypeOptions: {
        stock: 'azione',
        zhishu: 'indice',
        fund: 'fondo',
        hkstock: 'Azioni Hong Kong',
        usstock: 'Mercato azionario USA',
        threeboard: 'New OTC market',
        conbond: 'Obbligazione convertibile',
        insurance: 'assicurazione',
        futures: 'futures',
        lccp: 'Finanziamento',
        foreign_exchange: 'Valuta estera',
      },
      akShare: 'AkShare',
      akShareDescription:
        'Un componente che ottiene notizie sulle azioni da https://www.eastmoney.com/.',
      yahooFinance: 'YahooFinance',
      yahooFinanceDescription:
        'Un componente che interroga informazioni su una società quotata in borsa usando il suo simbolo ticker.',
      crawler: 'Web crawler',
      crawlerDescription:
        'Un componente che estrae codice sorgente HTML da un URL specificato.',
      proxy: 'Proxy',
      crawlerResultOptions: {
        html: 'Html',
        markdown: 'Markdown',
        content: 'Contenuto',
      },
      extractType: 'Tipo estrazione',
      info: 'Info',
      history: 'Cronologia',
      financials: 'Dati finanziari',
      balanceSheet: 'Stato patrimoniale',
      cashFlowStatement: 'Rendiconto flussi di cassa',
      jin10: 'Jin10',
      jin10Description:
        'Un componente che recupera informazioni finanziarie dalla piattaforma aperta Jin10, inclusi aggiornamenti di notizie, calendari, quotazioni e riferimenti.',
      flashType: 'Tipo flash',
      filter: 'Filtro',
      contain: 'Contiene',
      calendarType: 'Tipo calendario',
      calendarDatashape: 'Forma dati calendario',
      symbolsDatatype: 'Tipo dati simboli',
      symbolsType: 'Tipo simboli',
      jin10TypeOptions: {
        flash: 'Notizie rapide',
        calendar: 'Calendario',
        symbols: 'quotazioni',
        news: 'riferimento',
      },
      jin10FlashTypeOptions: {
        '1': 'Notizie di mercato',
        '2': 'Notizie futures',
        '3': 'Notizie US-Hong Kong',
        '4': 'Notizie A-Share',
        '5': 'Notizie materie prime e forex',
      },
      jin10CalendarTypeOptions: {
        cj: 'Calendario dati macroeconomici',
        qh: 'Calendario futures',
        hk: 'Calendario mercato azionario Hong Kong',
        us: 'Calendario mercato azionario USA',
      },
      jin10CalendarDatashapeOptions: {
        data: 'Dati',
        event: 'Evento',
        holiday: 'Festività',
      },
      jin10SymbolsTypeOptions: {
        GOODS: 'Quotazioni materie prime',
        FOREX: 'Quotazioni forex',
        FUTURE: 'Quotazioni mercato internazionale',
        CRYPTO: 'Quotazioni criptovalute',
      },
      jin10SymbolsDatatypeOptions: {
        symbols: 'Lista materie prime',
        quotes: 'Ultime quotazioni di mercato',
      },
      concentrator: 'Concentratore',
      concentratorDescription:
        "Un componente che riceve l'output dal componente a monte e lo passa come input ai componenti a valle.",
      tuShare: 'TuShare',
      tuShareDescription:
        'Un componente che ottiene brevi notizie finanziarie dai principali siti web finanziari, aiutando la ricerca di settore e quantitativa.',
      tuShareSrcOptions: {
        sina: 'Sina',
        wallstreetcn: 'wallstreetcn',
        '10jqka': 'Straight flush',
        eastmoney: 'Eastmoney',
        yuncaijing: 'YUNCAIJING',
        fenghuang: 'FENGHUANG',
        jinrongjie: 'JRJ',
      },
      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.',
      invalidUrl:
        'Deve essere un URL valido o un URL con placeholder di variabili nel formato {variable_name} o {component@variable}',
      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. 1. Supporta template Jinja2, prima converte l'input in un oggetto e poi renderizza il template, 2. Mantiene contemporaneamente il metodo originale di sostituzione stringhe {parameter}",
      emailComponent: 'Email',
      emailDescription: "Invia un'email a un indirizzo specificato.",
      smtpServer: 'Host SMTP',
      smtpPort: 'Porta SMTP',
      senderEmail: 'Indirizzo mittente (From)',
      smtpUsername: 'Nome utente di accesso SMTP',
      authCode: 'Password SMTP / password app',
      senderName: 'Nome visualizzato mittente',
      toEmail: 'Email destinatario',
      ccEmail: 'Email CC',
      emailSubject: 'Oggetto',
      emailContent: 'Contenuto',
      smtpServerRequired: "Inserisci l'indirizzo del server SMTP",
      senderEmailRequired: "Inserisci l'email del mittente",
      authCodeRequired: 'Inserisci il codice di autorizzazione',
      toEmailRequired: "Inserisci l'email del destinatario",
      emailContentRequired: "Inserisci il contenuto dell'email",
      emailSentSuccess: 'Email inviata con successo',
      emailSentFailed: 'Invio email fallito',
      dynamicParameters: 'Parametri dinamici',
      jsonFormatTip:
        'Il componente a monte dovrebbe fornire una stringa JSON nel seguente formato:',
      toEmailTip: 'to_email: Email destinatario (Richiesto)',
      ccEmailTip: 'cc_email: Email CC (Opzionale)',
      subjectTip: 'subject: Oggetto email (Opzionale)',
      contentTip: 'content: Contenuto email (Opzionale)',
      jsonUploadTypeErrorMessage: 'Carica un file json',
      jsonUploadContentErrorMessage: 'errore file json',
      iteration: 'Iterazione',
      iterationDescription: `Un componente di loop che itera su un array di input ed esegue una logica definita per ogni elemento.`,
      delimiterTip: `
Questo delimitatore è usato per dividere il testo di input in diversi pezzi di testo, ognuno dei quali sarà eseguito come elemento di input di ogni iterazione.`,
      delimiterOptions: {
        comma: 'Virgola',
        lineBreak: 'Interruzione di riga',
        tab: 'Tab',
        underline: 'Underscore',
        diagonal: 'Barra in avanti',
        minus: 'Trattino',
        semicolon: 'Punto e virgola',
      },
      addVariable: 'Aggiungi variabile',
      variableSettings: 'Impostazioni variabili',
      systemPrompt: 'Prompt di sistema',
      userPrompt: 'Prompt utente',
      tocDataSource: 'Fonte dati',
      addCategory: 'Aggiungi categoria',
      categoryName: 'Nome categoria',
      nextStep: 'Passo successivo',
      variableExtractDescription:
        'Estrai informazioni utente in variabile globale durante la conversazione',
      variableExtract: 'Variabili',
      variables: 'Variabili',
      variablesTip: `Imposta la variabile chiave json chiara con un valore vuoto. es.
      {
        "UserCode":"",
        "NumberPhone":""
      }`,
      datatype: 'Tipo MIME della richiesta HTTP',
      insertVariableTip: `Premi / per inserire variabili`,
      mergePath: 'Unisci percorso',
      mergePathTip:
        'Quando abilitato, un suffisso con punto immediatamente dopo una variabile viene unito in una query di percorso, come {node@result.name}.',
      historyVersion: 'Cronologia versioni',
      version: {
        created: 'Creato',
        details: 'Dettagli versione',
        dsl: 'DSL',
        download: 'Scarica',
        version: 'Versione',
        select: 'Nessuna versione selezionata',
      },
      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',
      footer: {
        profile: 'All rights reserved @ React',
      },
      layout: {
        file: 'file',
        knowledge: 'conoscenza',
        chat: 'chat',
      },
      prompt: 'Prompt',
      promptTip:
        "Usa il prompt di sistema per descrivere il compito per l'LLM, specificare come dovrebbe rispondere e delineare altri requisiti vari. Il prompt di sistema è spesso usato insieme a chiavi (variabili), che servono come vari input di dati per l'LLM. Usa una barra `/` o il pulsante (x) per mostrare le chiavi da usare.",
      promptMessage: 'Il prompt è richiesto',
      infor: 'Esecuzione informativa',
      knowledgeBasesTip:
        'Seleziona i dataset da associare a questo assistente chat, o scegli variabili contenenti ID di dataset qui sotto.',
      knowledgeBaseVars: 'Variabili dataset',
      code: 'Codice',
      codeDescription:
        'Permette agli sviluppatori di scrivere logica Python personalizzata.',
      dataOperations: 'Operazioni dati',
      dataOperationsDescription: 'Esegui varie operazioni su un oggetto Data.',
      listOperations: 'Operazioni lista',
      listOperationsDescription: 'Esegui operazioni su una lista.',
      variableAssigner: 'Assegnatore variabili',
      variableAssignerDescription:
        'Questo componente esegue operazioni su oggetti Data, inclusi estrazione, filtraggio e modifica di chiavi e valori nel Data.',
      variableAggregator: 'Aggregatore variabili',
      variableAggregatorDescription: `
Questo processo aggrega variabili da più rami in una singola variabile per ottenere una configurazione unificata per i nodi a valle.`,
      inputVariables: 'Variabili di input',
      runningHintText: 'è in esecuzione...🕞',
      openingSwitch: 'Interruttore apertura',
      openingCopy: 'Saluto di apertura',
      openingSwitchTip:
        "I tuoi utenti vedranno questo messaggio di benvenuto all'inizio.",
      modeTip: 'La modalità definisce come viene avviato il workflow.',
      mode: 'Modalità',
      conversational: 'Conversazionale',
      task: 'Attività',
      beginInputTip:
        'I parametri di input definiti qui possono essere acceduti dai componenti nel workflow a valle.',
      query: 'Variabili query',
      switchPromptMessage:
        'Le parole del prompt cambieranno. Conferma se vuoi scartare le parole del prompt esistenti?',
      queryRequired: 'La query è richiesta',
      queryTip: 'Seleziona la variabile che vuoi usare',
      agent: 'Agente',
      addAgent: 'Aggiungi agente',
      agentDescription:
        'Costruisce componenti agente equipaggiati con ragionamento, uso di strumenti e collaborazione multi-agente. ',
      maxRecords: 'Record massimi',
      createAgent: 'Flusso agente',
      stringTransform: 'Elaborazione testo',
      userFillUp: 'Attendi risposta',
      userFillUpDescription: `Mette in pausa il workflow e attende il messaggio dell'utente prima di continuare.`,
      codeExec: 'Codice',
      tavilySearch: 'Ricerca Tavily',
      tavilySearchDescription:
        'Risultati di ricerca tramite il servizio Tavily.',
      tavilyExtract: 'Estrazione Tavily',
      tavilyExtractDescription: 'Tavily Extract',
      log: 'Log',
      management: 'Gestione',
      import: 'Importa',
      export: 'Esporta',
      seconds: 'Secondi',
      subject: 'Oggetto',
      tag: 'Tag',
      tagPlaceholder: 'Inserisci tag',
      descriptionPlaceholder: 'Inserisci descrizione',
      line: 'Testo a riga singola',
      paragraph: 'Testo a paragrafo',
      options: 'Opzioni a discesa',
      file: 'Caricamento file',
      integer: 'Numero',
      boolean: 'Booleano',

      logTimeline: {
        begin: 'Pronto a iniziare',
        agent: "L'agente sta pensando",
        userFillUp: 'In attesa di te',
        retrieval: 'Consultazione della conoscenza',
        message: "L'agente dice",
        awaitResponse: 'In attesa di te',
        switch: 'Scelta del percorso migliore',
        iteration: 'Elaborazione batch',
        categorize: 'Categorizzazione info',
        code: 'Esecuzione di uno script rapido',
        textProcessing: 'Sistemazione del testo',
        tavilySearch: 'Ricerca sul web',
        tavilyExtract: 'Lettura della pagina',
        exeSQL: 'Interrogazione database',
        google: 'Ricerca sul web',
        wikipedia: 'Ricerca su Wikipedia',
        googleScholar: 'Ricerca accademica',
        gitHub: 'Ricerca su GitHub',
        email: 'Invio email',
        httpRequest: "Chiamata a un'API",
        wenCai: 'Interrogazione dati finanziari',
      },
      goto: 'Ramo di fallimento',
      comment: 'Valore predefinito',
      sqlStatement: 'Istruzione SQL',
      sqlStatementTip:
        'Scrivi qui la tua query SQL. Puoi usare variabili, SQL grezzo o mescolare entrambi usando la sintassi delle variabili.',
      frameworkPrompts: 'Framework',
      release: 'Pubblica',
      production: 'Produzione',
      productionTooltip:
        "Questa versione è pubblicata in produzione. Accedivi tramite l'API o la pagina incorporata.",
      confirmPublish: 'Conferma pubblicazione',
      publishIngestionPipeline:
        'Stai per pubblicare questa ingestion pipeline.',
      publishAgent: 'Stai per pubblicare questo agente',
      linkedDataset: 'Dataset collegato:',
      lastPublished: 'Ultima pubblicazione',
      createFromBlank: 'Crea da vuoto',
      createFromTemplate: 'Crea da template',
      importJsonFile: 'Importa file JSON',
      ceateAgent: 'Workflow',
      createPipeline: 'Ingestion pipeline',
      chooseAgentType: 'Scegli il tipo di agente',
      parser: 'Parser',
      parserDescription:
        "Estrae testo grezzo e struttura dai file per l'elaborazione a valle.",
      tokenizer: 'Indicizzatore',
      tokenizerRequired: 'Aggiungi prima il nodo Indicizzatore',
      tokenizerDescription:
        'Trasforma il testo nella struttura dati richiesta (es. embedding vettoriali per la ricerca Embedding) a seconda del metodo di ricerca scelto.',
      tokenChunker: 'Token Chunker',
      tokenChunkerDescription:
        'Dividi il testo in chunk per lunghezza di token con delimitatori e sovrapposizione opzionali.',
      titleChunkerDescription:
        'Dividi i documenti in sezioni per gerarchia di titoli. Definisci i livelli di intestazione con regole regex, poi scegli la modalità Gerarchia o Gruppo per controllare come sono strutturati i chunk.',
      titleChunker: 'Title Chunker',
      extractor: 'Trasformatore',
      extractorDescription:
        'Usa un LLM per estrarre insight strutturati dai chunk di documenti—come riassunti, classificazioni, ecc.',
      outputFormat: 'Formato output',
      fileFormats: 'Tipo file',
      fileFormatOptions: {
        pdf: 'PDF',
        spreadsheet: 'Foglio di calcolo',
        image: 'Immagine',
        email: 'Email',
        markdown: 'Markdown',
        'text&code': 'Testo e codice',
        html: 'HTML',
        doc: 'DOC',
        docx: 'DOCX',
        slides: 'PPTX',
        audio: 'Audio',
        video: 'Video',
      },
      fields: 'Campo',
      addParser: 'Aggiungi Parser',
      rule: 'Regola',
      addRule: 'Aggiungi regola',
      group: 'Gruppo',
      hierarchy: 'Gerarchia',
      addRegularExpressions: 'Aggiungi espressioni regolari',
      regularExpressions: 'Espressioni regolari',
      overlappedPercent: 'Percentuale di sovrapposizione (%)',
      searchMethod: 'Metodo di ricerca',
      searchMethodTip: `Definisce come il contenuto può essere cercato — per full-text, embedding o entrambi.
L'Indicizzatore memorizzerà il contenuto nelle corrispondenti strutture dati per i metodi selezionati.`,
      parserMethod: 'Parser PDF',
      tableResultType: 'Tipo risultato tabella',
      markdownImageResponseType: 'Tipo risposta immagine Markdown',
      systemPromptPlaceholder:
        "Inserisci il prompt di sistema per l'analisi dell'immagine, se vuoto sarà usato il valore predefinito del sistema",
      exportJson: 'Esporta JSON',
      viewResult: 'Visualizza risultato',
      running: 'In esecuzione',
      summary: 'Riepilogo',
      keywords: 'Parole chiave',
      questions: 'Domande',
      metadata: 'Metadati',
      toc: 'PageIndex',
      fieldName: 'Destinazione risultato',
      prompts: {
        system: {
          keywords: `Ruolo
Sei un analizzatore di testo.

Compito
Estrai le parole chiave/frasi più importanti di un dato contenuto di testo.

Requisiti
- Riassumi il contenuto del testo, e fornisci le 5 parole chiave/frasi più importanti.
- Le parole chiave DEVONO essere nella stessa lingua del contenuto di testo dato.
- Le parole chiave sono delimitate da VIRGOLA INGLESE.
- Output SOLO parole chiave.`,
          questions: `Ruolo
Sei un analizzatore di testo.

Compito
Proponi 3 domande su un dato contenuto di testo.

Requisiti
- Comprendi e riassumi il contenuto del testo, e proponi le 3 domande più importanti.
- Le domande NON DEVONO avere significati sovrapposti.
- Le domande DOVREBBERO coprire il contenuto principale del testo il più possibile.
- Le domande DEVONO essere nella stessa lingua del contenuto di testo dato.
- Una domanda per riga.
- Output SOLO domande.`,
          summary: `Agisci come un riassuntore preciso. Il tuo compito è creare un riepilogo del contenuto fornito che sia sia conciso che fedele all'originale.

Istruzioni chiave:
1. Accuratezza: basa rigorosamente il riepilogo sulle informazioni fornite. Non introdurre nuovi fatti, conclusioni o interpretazioni che non siano esplicitamente dichiarati.
2. Lingua: scrivi il riepilogo nella stessa lingua del testo sorgente.
3. Obiettività: presenta i punti chiave senza pregiudizi, preservando l'intento e il tono originali del contenuto. Non editorializzare.
4. Concisione: concentrati sulle idee più importanti, omettendo dettagli minori e riempitivi.`,
          metadata: `Estrai informazioni strutturate importanti dal contenuto fornito. Output SOLO una stringa JSON valida senza testo aggiuntivo. Se non vengono trovate informazioni strutturate importanti, output un oggetto JSON vuoto: {}.

Le informazioni strutturate importanti possono includere: nomi, date, luoghi, eventi, fatti chiave, dati numerici o altre entità estraibili.`,
          toc: '',
        },
        user: {
          keywords: `Contenuto testo
[Inserisci testo qui]`,
          questions: `Contenuto testo
[Inserisci testo qui]`,
          summary: `Testo da riassumere:
[Inserisci testo qui]`,
          metadata: `Contenuto: [INSERISCI CONTENUTO QUI]`,
          toc: '[Inserisci testo qui]',
        },
      },
      cancel: 'Annulla',
      swicthPromptMessage:
        'La parola del prompt cambierà. Conferma se abbandonare la parola del prompt esistente?',
      tokenizerSearchMethodOptions: {
        full_text: 'Full-text',
        embedding: 'Embedding',
      },
      filenameEmbeddingWeight: 'Peso embedding nome file',
      tokenizerFieldsOptions: {
        text: 'Testo elaborato',
        keywords: 'Parole chiave',
        questions: 'Domande',
        summary: 'Contesto aumentato',
      },
      imageParseMethodOptions: {
        ocr: 'OCR',
      },
      structuredOutput: {
        configuration: 'Configurazione',
        structuredOutput: 'Output strutturato',
      },
      operations: 'Operazioni',
      operationsOptions: {
        selectKeys: 'Seleziona chiavi',
        literalEval: 'Valutazione letterale',
        combine: 'Combina',
        filterValues: 'Filtra valori',
        appendOrUpdate: 'Aggiungi o aggiorna',
        removeKeys: 'Rimuovi chiavi',
        renameKeys: 'Rinomina chiavi',
      },
      ListOperationsOptions: {
        nth: 'N-esimo',
        head: 'Testa',
        tail: 'Coda',
        sort: 'Ordina',
        filter: 'Filtra',
        dropDuplicates: 'Rimuovi duplicati',
      },
      sortMethod: 'Metodo di ordinamento',
      strictMode: 'Modalità rigorosa',
      strictModeTip:
        'Disattivata usa un comportamento permissivo e restituisce un risultato vuoto per n non valido. Attivata usa un comportamento rigoroso e genera un errore per n fuori intervallo.',
      SortMethodOptions: {
        asc: 'Crescente',
        desc: 'Decrescente',
      },
      variableAssignerLogicalOperatorOptions: {
        overwrite: 'Sovrascritto da',
        clear: 'Cancella',
        set: 'Imposta',
        add: 'Aggiungi',
        subtract: 'Sottrai',
        multiply: 'Moltiplica',
        divide: 'Dividi',
        append: 'Accoda',
        extend: 'Estendi',
        removeFirst: 'Rimuovi primo',
        removeLast: 'Rimuovi ultimo',
      },
      webhook: {
        name: 'Webhook',
        methods: 'Metodi',
        contentTypes: 'Tipi di contenuto',
        security: 'Sicurezza',
        schema: 'Schema',
        response: 'Risposta',
        executionMode: 'Modalità di esecuzione',
        executionModeTip:
          "Risposta accettata: il sistema restituisce un riconoscimento immediatamente dopo che la richiesta è validata, mentre il workflow continua a eseguire in modo asincrono in background. /Risposta finale: il sistema restituisce una risposta solo dopo che l'esecuzione del workflow è completata.",
        authMethods: 'Metodi di autenticazione',
        authType: 'Tipo di autenticazione',
        limit: 'Limite di frequenza richieste',
        per: 'Periodo di tempo',
        maxBodySize: 'Dimensione massima body',
        ipWhitelist: 'Whitelist IP',
        tokenHeader: 'Header token',
        tokenValue: 'Valore token',
        username: 'Nome utente',
        password: 'Password',
        algorithm: 'Algoritmo',
        secret: 'Secret',
        issuer: 'Emittente',
        audience: 'Destinatario',
        requiredClaims: 'Claim richiesti',
        header: 'Header',
        status: 'Stato',
        headersTemplate: 'Template header',
        bodyTemplate: 'Template body',
        basic: 'Basic',
        bearer: 'Bearer',
        apiKey: 'Api key',
        queryParameters: 'Parametri query',
        headerParameters: 'Parametri header',
        requestBodyParameters: 'Parametri body richiesta',
        immediately: 'Risposta accettata',
        streaming: 'Risposta finale',
        overview: 'Panoramica',
        logs: 'Log',
        agentStatus: 'Stato agente:',
      },
      saveToMemory: 'Salva in memoria',
      retrievalFrom: 'Recupero da',
      id: 'ID',
      state: 'Stato',
      number: 'Numero',
      latestDate: 'Data più recente',
      createDate: 'Data creazione',
      noDataToExport: 'Nessun dato da esportare',
      success: 'Successo',
      failed: 'Fallito',
      logTitle: 'Titolo',
      tags: 'Tag',
      canvasCategory: 'Categoria canvas',
    },
    llmTools: {
      bad_calculator: {
        name: 'Calcolatrice',
        description:
          'Uno strumento per calcolare la somma di due numeri (darà una risposta errata)',
        params: {
          a: 'Il primo numero',
          b: 'Il secondo numero',
        },
      },
    },
    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',
      selectLocalePlaceholder: 'Seleziona una lingua',
    },
    language: {
      english: 'Inglese',
      chinese: 'Cinese',
      spanish: 'Spagnolo',
      french: 'Francese',
      german: 'Tedesco',
      japanese: 'Giapponese',
      korean: 'Coreano',
      vietnamese: 'Vietnamita',
      russian: 'Russo',
      bulgarian: 'Bulgaro',
      arabic: 'Arabo',
      turkish: 'Turco',
    },
    pagination: {
      total: 'Totale {{total}}',
      page: '{{page}} / Pagina',
    },
    dataflowParser: {
      result: 'Risultato',
      parseSummary: 'Riepilogo analisi',
      parseSummaryTip: 'Parser：DeepDoc',
      parserMethod: 'Metodo parser',
      outputFormat: 'Formato output',
      rerunFromCurrentStep: 'Riesegui dal passaggio corrente',
      rerunFromCurrentStepTip: 'Modifiche rilevate. Clicca per rieseguire.',
      confirmRerun: 'Conferma riesecuzione processo',
      confirmRerunModalContent: `
      <p class="text-sm text-text-disabled font-medium mb-2">
        Stai per rieseguire il processo a partire dal passaggio <span class="text-text-secondary">{{step}}</span>.
      </p>
      <p class="text-sm mb-3 text-text-disabled">Questo:</p><br />
      <ul class="list-disc list-inside space-y-1 text-sm text-text-secondary">
        <li>• Sovrascriverà i risultati esistenti dal passaggio corrente in poi</li>
        <li>• Creerà una nuova voce di log per il tracciamento</li>
        <li>• I passaggi precedenti rimarranno invariati</li>
      </ul>`,
      changeStepModalTitle: 'Avviso cambio passaggio',
      changeStepModalContent: `
      <p>Stai attualmente modificando i risultati di questa fase.</p>
      <p>Se passi a una fase successiva, le tue modifiche andranno perse. </p>
      <p>Per mantenerle, clicca Riesegui per rieseguire la fase corrente.</p> `,
      changeStepModalConfirmText: 'Cambia comunque',
      changeStepModalCancelText: 'Annulla',
      unlinkPipelineModalTitle: 'Scollega ingestion pipeline',
      unlinkPipelineModalConfirmText: 'Scollega',
      unlinkPipelineModalContent: `
      <p>Una volta scollegato, questo Dataset non sarà più connesso alla ingestion pipeline corrente.</p>
      <p>I file che sono già in fase di analisi continueranno fino al completamento</p>
      <p>I file non ancora analizzati non saranno più elaborati</p> <br/>
      <p>Sei sicuro di voler procedere?</p> `,
      unlinkSourceModalTitle: 'Scollega fonte dati',
      unlinkSourceModalContent: `
      <p>Sei sicuro di voler scollegare questa fonte dati？</p>`,
      unlinkSourceModalConfirmText: 'Scollega',
    },
    datasetOverview: {
      downloadTip: 'File in fase di download dalle fonti dati. ',
      processingTip: 'File in fase di elaborazione dalla ingestion pipeline.',
      totalFiles: 'File totali',
      downloading: 'Download in corso',
      downloadSuccessTip: 'Download totali riusciti',
      downloadFailedTip: 'Download totali falliti',
      processingSuccessTip: 'File totali elaborati con successo',
      processingFailedTip: 'Processi totali falliti',
      processing: 'Elaborazione',
      noData: 'Nessun log ancora',
    },

    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',
      skillsTitle: 'Nessuno spazio skill creato',
      notFoundSkills: 'Spazio skill non trovato',
      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',
      none: 'Nessuno',

      resourceType: {
        dataset: 'Dataset',
        chat: 'Chat',
        agent: 'Agente',
        search: 'Ricerca',
        file: 'File',
        team: 'Team',
        memory: 'Memoria',
      },

      permissionType: {
        enable: 'Abilita',
        read: 'Leggi',
        write: 'Scrivi',
        share: 'Condividi',
      },

      serviceStatus: 'Stato servizio',
      userManagement: 'Gestione utenti',
      sandboxSettings: 'Impostazioni sandbox',
      registrationWhitelist: 'Whitelist registrazione',
      roles: 'Ruoli',
      monitoring: 'Monitoraggio',

      sandboxSettingsPage: {
        description:
          "Configura il tuo provider sandbox per l'esecuzione del codice. La sandbox è usata dal componente Codice negli agenti.",
        providerSelection: 'Selezione provider',
        providerSelectionDescription:
          "Scegli un provider sandbox per l'esecuzione del codice",

        namedProviderConfiguration: 'Configurazione {{name}}',
        namedProviderConfigurationDescription:
          'Configura le impostazioni di connessione per {{name}}.',

        saveConfiguration: 'Salva configurazione',
        saving: 'Salvataggio...',

        testConnectionResultModal: {
          title: 'Risultato test connessione',
          testing: 'Test connessione al provider sandbox...',
          success: 'Connesso con successo al provider sandbox',
          failed: 'Impossibile connettersi al provider sandbox',

          exitCode: 'Codice di uscita',
          executionTime: 'Tempo di esecuzione',
          stdout: 'Output standard',
          stderr: 'Output errore / stack trace',
        },

        testConnection: 'Testa connessione',
        testing: 'Test in corso...',
      },

      selectFile: 'Seleziona file',
      noFileSelected: 'Nessun file selezionato',

      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',
      userType: 'Tipo utente',
      superuser: 'Superutente',
      normalUser: 'Normale',

      createTime: 'Data creazione',
      lastLoginTime: 'Ultimo accesso',
      lastUpdateTime: 'Ultimo aggiornamento',

      isAnonymous: 'È anonimo',
      isSuperuser: 'È superutente',

      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',

      extraInfo: 'Informazioni extra',
      serviceDetail: `Dettaglio servizio {{name}}`,
      taskExecutorDetail: 'Dettaglio task executor',

      whitelistManagement: 'Gestione whitelist',
      exportAsExcel: 'Esporta Excel',
      importFromExcel: 'Importa Excel',
      createEmail: 'Crea email',
      deleteEmail: 'Elimina email',
      editEmail: 'Modifica email',
      deleteWhitelistEmailConfirmation:
        'Sei sicuro di voler eliminare questa email dalla whitelist? Questa azione non può essere annullata.',

      importWhitelist: 'Importa whitelist (Excel)',
      importSelectExcelFile: 'File Excel (.xlsx)',
      importOverwriteExistingEmails: 'Sovrascrivi email esistenti',
      importInvalidExcelFile: 'Seleziona un file Excel valido',
      importFileRequired: 'Seleziona un file da importare',
      importFileTips:
        'Il file deve contenere una singola colonna di intestazione chiamata <code>email</code>.',

      chunkNum: 'Chunk',
      docNum: 'Documenti',
      tokenNum: 'Token usati',
      language: 'Lingua',
      createDate: 'Data creazione',
      updateDate: 'Data aggiornamento',
      permission: 'Permesso',

      agentTitle: 'Titolo agente',
      canvasCategory: 'Categoria canvas',

      newRole: 'Nuovo ruolo',
      addNewRole: 'Aggiungi nuovo ruolo',
      roleName: 'Nome ruolo',
      roleNameRequired: 'Il nome del ruolo è richiesto',
      resources: 'Risorse',

      editRoleDescription: 'Modifica descrizione ruolo',
      deleteRole: 'Elimina ruolo',
      deleteRoleConfirmation:
        'Sei sicuro di voler eliminare questo ruolo? Questa azione non può essere annullata.',

      alive: 'Attivo',
      timeout: 'Timeout',
      fail: 'Fallito',
    },
    explore: {
      title: 'Avvia',
      canvasList: 'Lista Canvas',
      sessions: 'Sessioni',
      newSession: 'Nuova sessione',
      newSessionLabel: 'Avvia una nuova conversazione',
      deleteSession: 'Elimina sessione',
      searchCanvas: 'Cerca canvas...',
      searchSessions: 'Cerca sessioni...',
      noCanvasSelected: 'Seleziona un canvas',
      noSessionSelected: 'Seleziona una sessione o creane una nuova',
      noSessionsFound: 'Nessuna sessione trovata',
      createFirstSession: 'Crea la tua prima sessione',
      noCanvasFound: 'Nessun canvas trovato',
      deleteSelectedConfirm:
        'Sei sicuro di voler eliminare {{count}} sessioni?',
      batchDeleteSessions: 'Elimina sessioni',
    },
  },
};
