Browse Source

6282 i18n add support for Italian (#6288)

Koma Human 9 months ago
parent
commit
c17a4165c1

+ 89 - 0
web/i18n/it-IT/app-annotation.ts

@@ -0,0 +1,89 @@
+const translation = {
+  title: 'Annotazioni',
+  name: 'Risposta Annotazione',
+  editBy: 'Risposta modificata da {{author}}',
+  noData: {
+    title: 'Nessuna annotazione',
+    description:
+      'Puoi modificare le annotazioni durante il debug dell\'app o importare annotazioni in blocco qui per una risposta di alta qualità.',
+  },
+  table: {
+    header: {
+      question: 'domanda',
+      answer: 'risposta',
+      createdAt: 'creato il',
+      hits: 'hit',
+      actions: 'azioni',
+      addAnnotation: 'Aggiungi Annotazione',
+      bulkImport: 'Importazione Bulk',
+      bulkExport: 'Esportazione Bulk',
+      clearAll: 'Cancella Tutte le Annotazioni',
+    },
+  },
+  editModal: {
+    title: 'Modifica Risposta Annotazione',
+    queryName: 'Query Utente',
+    answerName: 'Bot Narratore',
+    yourAnswer: 'La tua Risposta',
+    answerPlaceholder: 'Scrivi qui la tua risposta',
+    yourQuery: 'La tua Query',
+    queryPlaceholder: 'Scrivi qui la tua query',
+    removeThisCache: 'Rimuovi questa Annotazione',
+    createdAt: 'Creato il',
+  },
+  addModal: {
+    title: 'Aggiungi Risposta Annotazione',
+    queryName: 'Domanda',
+    answerName: 'Risposta',
+    answerPlaceholder: 'Scrivi qui la risposta',
+    queryPlaceholder: 'Scrivi qui la query',
+    createNext: 'Aggiungi un\'altra risposta annotata',
+  },
+  batchModal: {
+    title: 'Importazione Bulk',
+    csvUploadTitle: 'Trascina e rilascia il tuo file CSV qui, oppure ',
+    browse: 'sfoglia',
+    tip: 'Il file CSV deve conformarsi alla seguente struttura:',
+    question: 'domanda',
+    answer: 'risposta',
+    contentTitle: 'contenuto chunk',
+    content: 'contenuto',
+    template: 'Scarica il modello qui',
+    cancel: 'Annulla',
+    run: 'Esegui Batch',
+    runError: 'Errore nell\'esecuzione del batch',
+    processing: 'Elaborazione batch in corso',
+    completed: 'Importazione completata',
+    error: 'Errore di Importazione',
+    ok: 'OK',
+  },
+  errorMessage: {
+    answerRequired: 'La risposta è obbligatoria',
+    queryRequired: 'La domanda è obbligatoria',
+  },
+  viewModal: {
+    annotatedResponse: 'Risposta Annotazione',
+    hitHistory: 'Storico Hit',
+    hit: 'Hit',
+    hits: 'Hit',
+    noHitHistory: 'Nessuno storico hit',
+  },
+  hitHistoryTable: {
+    query: 'Query',
+    match: 'Corrispondenza',
+    response: 'Risposta',
+    source: 'Fonte',
+    score: 'Punteggio',
+    time: 'Ora',
+  },
+  initSetup: {
+    title: 'Configurazione Iniziale Risposta Annotazione',
+    configTitle: 'Configurazione Risposta Annotazione',
+    confirmBtn: 'Salva & Abilita',
+    configConfirmBtn: 'Salva',
+  },
+  embeddingModelSwitchTip:
+    'Modello di vettorizzazione del testo di annotazione, il cambio di modello comporterà una nuova integrazione, comportando costi aggiuntivi.',
+}
+
+export default translation

+ 104 - 0
web/i18n/it-IT/app-api.ts

@@ -0,0 +1,104 @@
+const translation = {
+  apiServer: 'Server API',
+  apiKey: 'Chiave API',
+  status: 'Stato',
+  disabled: 'Disabilitato',
+  ok: 'In Servizio',
+  copy: 'Copia',
+  copied: 'Copiato',
+  play: 'Riproduci',
+  pause: 'Pausa',
+  playing: 'In Riproduzione',
+  loading: 'Caricamento',
+  merMaind: {
+    rerender: 'Rifare il rendering',
+  },
+  never: 'Mai',
+  apiKeyModal: {
+    apiSecretKey: 'Chiave segreta API',
+    apiSecretKeyTips:
+      'Per prevenire l\'abuso dell\'API, proteggi la tua chiave API. Evita di usarla come testo semplice nel codice front-end. :)',
+    createNewSecretKey: 'Crea nuova chiave segreta',
+    secretKey: 'Chiave Segreta',
+    created: 'CREATA',
+    lastUsed: 'ULTIMO UTILIZZO',
+    generateTips: 'Conserva questa chiave in un luogo sicuro e accessibile.',
+  },
+  actionMsg: {
+    deleteConfirmTitle: 'Eliminare questa chiave segreta?',
+    deleteConfirmTips: 'Questa azione non può essere annullata.',
+    ok: 'OK',
+  },
+  completionMode: {
+    title: 'API dell\'App di Completamento',
+    info: 'Per una generazione di testo di alta qualità, come articoli, riassunti e traduzioni, utilizza l\'API completion-messages con l\'input dell\'utente. La generazione del testo si basa sui parametri del modello e sui modelli di prompt impostati in Dify Prompt Engineering.',
+    createCompletionApi: 'Crea Messaggio di Completamento',
+    createCompletionApiTip:
+      'Crea un Messaggio di Completamento per supportare la modalità domanda e risposta.',
+    inputsTips:
+      '(Opzionale) Fornisci campi di input utente come coppie chiave-valore, corrispondenti alle variabili in Prompt Eng. La chiave è il nome della variabile, il Valore è il valore del parametro. Se il tipo di campo è Select, il Valore inviato deve essere una delle scelte preimpostate.',
+    queryTips: 'Contenuto del testo di input dell\'utente.',
+    blocking:
+      'Tipo bloccante, in attesa che l\'esecuzione sia completata e restituisca i risultati. (Le richieste possono essere interrotte se il processo è lungo)',
+    streaming:
+      'restituzioni in streaming. Implementazione della restituzione in streaming basata su SSE (Server-Sent Events).',
+    messageFeedbackApi: 'Feedback sul messaggio (mi piace)',
+    messageFeedbackApiTip:
+      'Valuta i messaggi ricevuti per conto degli utenti finali con mi piace o non mi piace. Questi dati sono visibili nella pagina Log & Annotazioni e utilizzati per futuri affinamenti del modello.',
+    messageIDTip: 'ID del Messaggio',
+    ratingTip: 'mi piace o non mi piace, null è annulla',
+    parametersApi: 'Ottenere informazioni sui parametri dell\'applicazione',
+    parametersApiTip:
+      'Recupera i parametri di input configurati, inclusi nomi delle variabili, nomi dei campi, tipi e valori predefiniti. Tipicamente utilizzato per visualizzare questi campi in un modulo o per riempire i valori predefiniti dopo il caricamento del client.',
+  },
+  chatMode: {
+    title: 'API dell\'App di Chat',
+    info: 'Per app conversazionali versatili utilizzando un formato Q&A, chiama l\'API chat-messages per avviare il dialogo. Mantieni conversazioni in corso passando l\'conversation_id restituito. I parametri di risposta e i modelli dipendono dalle impostazioni di Dify Prompt Eng.',
+    createChatApi: 'Crea messaggio di chat',
+    createChatApiTip:
+      'Crea un nuovo messaggio di conversazione o continua un dialogo esistente.',
+    inputsTips:
+      '(Opzionale) Fornisci campi di input utente come coppie chiave-valore, corrispondenti alle variabili in Prompt Eng. La chiave è il nome della variabile, il Valore è il valore del parametro. Se il tipo di campo è Select, il Valore inviato deve essere una delle scelte preimpostate.',
+    queryTips: 'Contenuto della domanda di input dell\'utente',
+    blocking:
+      'Tipo bloccante, in attesa che l\'esecuzione sia completata e restituisca i risultati. (Le richieste possono essere interrotte se il processo è lungo)',
+    streaming:
+      'restituzioni in streaming. Implementazione della restituzione in streaming basata su SSE (Server-Sent Events).',
+    conversationIdTip:
+      '(Opzionale) ID della Conversazione: lasciare vuoto per la prima conversazione; passare l\'conversation_id dal contesto per continuare il dialogo.',
+    messageFeedbackApi:
+      'Feedback terminale del messaggio dell\'utente, mi piace',
+    messageFeedbackApiTip:
+      'Valuta i messaggi ricevuti per conto degli utenti finali con mi piace o non mi piace. Questi dati sono visibili nella pagina Log & Annotazioni e utilizzati per futuri affinamenti del modello.',
+    messageIDTip: 'ID del Messaggio',
+    ratingTip: 'mi piace o non mi piace, null è annulla',
+    chatMsgHistoryApi: 'Ottieni la cronologia dei messaggi della chat',
+    chatMsgHistoryApiTip:
+      'La prima pagina restituisce l\'ultimo `limite` barra, che è in ordine inverso.',
+    chatMsgHistoryConversationIdTip: 'ID della Conversazione',
+    chatMsgHistoryFirstId:
+      'ID del primo record di chat nella pagina corrente. L\'impostazione predefinita è nessuna.',
+    chatMsgHistoryLimit: 'Quante chat vengono restituite in una richiesta',
+    conversationsListApi: 'Ottieni l\'elenco delle conversazioni',
+    conversationsListApiTip:
+      'Ottiene l\'elenco delle sessioni dell\'utente corrente. Per impostazione predefinita, vengono restituite le ultime 20 sessioni.',
+    conversationsListFirstIdTip:
+      'ID dell\'ultimo record nella pagina corrente, predefinito nessuno.',
+    conversationsListLimitTip:
+      'Quante chat vengono restituite in una richiesta',
+    conversationRenamingApi: 'Rinomina conversazione',
+    conversationRenamingApiTip:
+      'Rinomina conversazioni; il nome viene visualizzato nelle interfacce client multi-sessione.',
+    conversationRenamingNameTip: 'Nuovo nome',
+    parametersApi: 'Ottenere informazioni sui parametri dell\'applicazione',
+    parametersApiTip:
+      'Recupera i parametri di input configurati, inclusi nomi delle variabili, nomi dei campi, tipi e valori predefiniti. Tipicamente utilizzato per visualizzare questi campi in un modulo o per riempire i valori predefiniti dopo il caricamento del client.',
+  },
+  develop: {
+    requestBody: 'Corpo della Richiesta',
+    pathParams: 'Parametri del Percorso',
+    query: 'Query',
+  },
+}
+
+export default translation

+ 471 - 0
web/i18n/it-IT/app-debug.ts

@@ -0,0 +1,471 @@
+const translation = {
+  pageTitle: {
+    line1: 'PROMPT',
+    line2: 'Engineering',
+  },
+  orchestrate: 'Orchestra',
+  promptMode: {
+    simple: 'Passa alla modalità esperto per modificare tutto il PROMPT',
+    advanced: 'Modalità esperto',
+    switchBack: 'Torna indietro',
+    advancedWarning: {
+      title:
+        'Sei passato alla modalità esperto e una volta modificato il PROMPT, NON potrai tornare alla modalità base.',
+      description: 'In modalità esperto, puoi modificare tutto il PROMPT.',
+      learnMore: 'Scopri di più',
+      ok: 'OK',
+    },
+    operation: {
+      addMessage: 'Aggiungi messaggio',
+    },
+    contextMissing:
+      'Componente del contesto mancante, l\'efficacia del prompt potrebbe non essere buona.',
+  },
+  operation: {
+    applyConfig: 'Pubblica',
+    resetConfig: 'Ripristina',
+    debugConfig: 'Debug',
+    addFeature: 'Aggiungi funzione',
+    automatic: 'Automatico',
+    stopResponding: 'Interrompi la risposta',
+    agree: 'mi piace',
+    disagree: 'non mi piace',
+    cancelAgree: 'Annulla mi piace',
+    cancelDisagree: 'Annulla non mi piace',
+    userAction: 'Azione utente',
+  },
+  notSetAPIKey: {
+    title: 'La chiave del provider LLM non è stata impostata',
+    trailFinished: 'Periodo di prova terminato',
+    description:
+      'La chiave del provider LLM non è stata impostata e deve essere impostata prima del debug.',
+    settingBtn: 'Vai alle impostazioni',
+  },
+  trailUseGPT4Info: {
+    title: 'Non supporta gpt-4 adesso',
+    description: 'Per utilizzare gpt-4, per favore imposta la chiave API.',
+  },
+  feature: {
+    groupChat: {
+      title: 'Migliora chat',
+      description:
+        'Aggiungere impostazioni pre-conversazione per le app può migliorare l\'esperienza utente.',
+    },
+    groupExperience: {
+      title: 'Migliora esperienza',
+    },
+    conversationOpener: {
+      title: 'Iniziatore di conversazione',
+      description:
+        'In un\'app di chat, la prima frase che l\'IA pronuncia attivamente all\'utente viene solitamente usata come benvenuto.',
+    },
+    suggestedQuestionsAfterAnswer: {
+      title: 'Follow-up',
+      description:
+        'Impostare suggerimenti per le prossime domande può offrire agli utenti una chat migliore.',
+      resDes: '3 suggerimenti per la prossima domanda dell\'utente.',
+      tryToAsk: 'Prova a chiedere',
+    },
+    moreLikeThis: {
+      title: 'Altri simili',
+      description:
+        'Genera più testi contemporaneamente, poi modifica e continua a generare',
+      generateNumTip: 'Numero di ogni generazione',
+      tip: 'L\'utilizzo di questa funzione comporterà un costo aggiuntivo di token',
+    },
+    speechToText: {
+      title: 'Da voce a testo',
+      description: 'Una volta abilitato, puoi usare l\'input vocale.',
+      resDes: 'L\'input vocale è abilitato',
+    },
+    textToSpeech: {
+      title: 'Da testo a voce',
+      description:
+        'Una volta abilitato, il testo può essere convertito in voce.',
+      resDes: 'Il testo in audio è abilitato',
+    },
+    citation: {
+      title: 'Citazioni e attribuzioni',
+      description:
+        'Una volta abilitato, mostra il documento sorgente e la sezione attribuita del contenuto generato.',
+      resDes: 'Citazioni e attribuzioni sono abilitate',
+    },
+    annotation: {
+      title: 'Risposta annotata',
+      description:
+        'Puoi aggiungere manualmente una risposta di alta qualità alla cache per una corrispondenza prioritaria con domande utente simili.',
+      resDes: 'Risposta annotata è abilitata',
+      scoreThreshold: {
+        title: 'Soglia di punteggio',
+        description:
+          'Utilizzata per impostare la soglia di somiglianza per la risposta annotata.',
+        easyMatch: 'Corrispondenza facile',
+        accurateMatch: 'Corrispondenza accurata',
+      },
+      matchVariable: {
+        title: 'Variabile di corrispondenza',
+        choosePlaceholder: 'Scegli la variabile di corrispondenza',
+      },
+      cacheManagement: 'Annotazioni',
+      cached: 'Annotato',
+      remove: 'Rimuovi',
+      removeConfirm: 'Eliminare questa annotazione?',
+      add: 'Aggiungi annotazione',
+      edit: 'Modifica annotazione',
+    },
+    dataSet: {
+      title: 'Contesto',
+      noData: 'Puoi importare Conoscenza come contesto',
+      words: 'Parole',
+      textBlocks: 'Blocchi di testo',
+      selectTitle: 'Seleziona Conoscenza di riferimento',
+      selected: 'Conoscenza selezionata',
+      noDataSet: 'Nessuna Conoscenza trovata',
+      toCreate: 'Vai a creare',
+      notSupportSelectMulti: 'Attualmente supporta solo una Conoscenza',
+      queryVariable: {
+        title: 'Variabile di query',
+        tip: 'Questa variabile verrà utilizzata come input di query per il recupero del contesto, ottenendo informazioni contestuali relative all\'input di questa variabile.',
+        choosePlaceholder: 'Scegli la variabile di query',
+        noVar: 'Nessuna variabile',
+        noVarTip: 'per favore crea una variabile nella sezione Variabili',
+        unableToQueryDataSet: 'Impossibile interrogare la Conoscenza',
+        unableToQueryDataSetTip:
+          'Impossibile interrogare la Conoscenza correttamente, per favore scegli una variabile di query nel contesto.',
+        ok: 'OK',
+        contextVarNotEmpty:
+          'La variabile di query del contesto non può essere vuota',
+        deleteContextVarTitle: 'Eliminare la variabile “{{varName}}”?',
+        deleteContextVarTip:
+          'Questa variabile è stata impostata come variabile di query del contesto, rimuoverla influenzerà l\'uso normale della Conoscenza. Se hai ancora bisogno di eliminarla, per favore riselezionala nella sezione del contesto.',
+      },
+    },
+    tools: {
+      title: 'Strumenti',
+      tips: 'Gli strumenti forniscono un metodo di chiamata API standard, prendendo input dell\'utente o variabili come parametri di richiesta per interrogare dati esterni come contesto.',
+      toolsInUse: '{{count}} strumenti in uso',
+      modal: {
+        title: 'Strumento',
+        toolType: {
+          title: 'Tipo di strumento',
+          placeholder: 'Per favore seleziona il tipo di strumento',
+        },
+        name: {
+          title: 'Nome',
+          placeholder: 'Per favore inserisci il nome',
+        },
+        variableName: {
+          title: 'Nome della variabile',
+          placeholder: 'Per favore inserisci il nome della variabile',
+        },
+      },
+    },
+    conversationHistory: {
+      title: 'Cronologia della conversazione',
+      description: 'Imposta i nomi di prefisso per i ruoli di conversazione',
+      tip: 'La Cronologia della Conversazione non è abilitata, per favore aggiungi <histories> nel prompt sopra.',
+      learnMore: 'Scopri di più',
+      editModal: {
+        title: 'Modifica i nomi dei ruoli della conversazione',
+        userPrefix: 'Prefisso utente',
+        assistantPrefix: 'Prefisso assistente',
+      },
+    },
+    toolbox: {
+      title: 'CASSETTA DEGLI ATTREZZI',
+    },
+    moderation: {
+      title: 'Moderazione del contenuto',
+      description:
+        'Proteggi l\'output del modello utilizzando l\'API di moderazione o mantenendo un elenco di parole sensibili.',
+      allEnabled: 'Contenuto INPUT/OUTPUT abilitato',
+      inputEnabled: 'Contenuto INPUT abilitato',
+      outputEnabled: 'Contenuto OUTPUT abilitato',
+      modal: {
+        title: 'Impostazioni di moderazione del contenuto',
+        provider: {
+          title: 'Provider',
+          openai: 'Moderazione OpenAI',
+          openaiTip: {
+            prefix:
+              'La moderazione OpenAI richiede una chiave API OpenAI configurata nel',
+            suffix: '.',
+          },
+          keywords: 'Parole chiave',
+        },
+        keywords: {
+          tip: 'Una per linea, separate da interruzioni di linea. Fino a 100 caratteri per linea.',
+          placeholder: 'Una per linea, separate da interruzioni di linea',
+          line: 'Linea',
+        },
+        content: {
+          input: 'Modera contenuto INPUT',
+          output: 'Modera contenuto OUTPUT',
+          preset: 'Risposte preimpostate',
+          placeholder: 'Contenuto delle risposte preimpostate qui',
+          condition:
+            'Moderazione contenuto INPUT e OUTPUT abilitato almeno uno',
+          fromApi: 'Le risposte preimpostate sono restituite dall\'API',
+          errorMessage: 'Le risposte preimpostate non possono essere vuote',
+          supportMarkdown: 'Markdown supportato',
+        },
+        openaiNotConfig: {
+          before:
+            'La moderazione OpenAI richiede una chiave API OpenAI configurata nel',
+          after: '',
+        },
+      },
+    },
+  },
+  automatic: {
+    title: 'Orchestrazione automatizzata delle applicazioni',
+    description:
+      'Descrivi il tuo scenario, Dify orchestrerà un\'applicazione per te.',
+    intendedAudience: 'Chi è il pubblico di destinazione?',
+    intendedAudiencePlaceHolder: 'es. Studente',
+    solveProblem: 'Quali problemi sperano che l\'IA possa risolvere per loro?',
+    solveProblemPlaceHolder:
+      'es. Estrarre approfondimenti e riassumere informazioni da lunghi rapporti e articoli',
+    generate: 'Genera',
+    audiencesRequired: 'Pubblico richiesto',
+    problemRequired: 'Problema richiesto',
+    resTitle: 'Abbiamo orchestrato la seguente applicazione per te.',
+    apply: 'Applica questa orchestrazione',
+    noData:
+      'Descrivi il tuo caso d\'uso a sinistra, l\'anteprima dell\'orchestrazione verrà mostrata qui.',
+    loading: 'Orchestrazione dell\'applicazione per te...',
+    overwriteTitle: 'Sovrascrivere la configurazione esistente?',
+    overwriteMessage:
+      'Applicando questa orchestrazione sovrascriverai la configurazione esistente.',
+  },
+  resetConfig: {
+    title: 'Confermare il ripristino?',
+    message:
+      'Il ripristino scarta le modifiche, ripristinando l\'ultima configurazione pubblicata.',
+  },
+  errorMessage: {
+    nameOfKeyRequired: 'nome della chiave: {{key}} richiesto',
+    valueOfVarRequired: 'il valore di {{key}} non può essere vuoto',
+    queryRequired: 'Il testo della richiesta è richiesto.',
+    waitForResponse:
+      'Per favore attendi che la risposta al messaggio precedente sia completata.',
+    waitForBatchResponse:
+      'Per favore attendi che la risposta all\'attività batch sia completata.',
+    notSelectModel: 'Per favore scegli un modello',
+    waitForImgUpload: 'Per favore attendi il caricamento dell\'immagine',
+  },
+  chatSubTitle: 'Istruzioni',
+  completionSubTitle: 'Prompt di prefisso',
+  promptTip:
+    'I prompt guidano le risposte dell\'IA con istruzioni e vincoli. Inserisci variabili come {{input}}. Questo prompt non sarà visibile agli utenti.',
+  formattingChangedTitle: 'Formato modificato',
+  formattingChangedText:
+    'Modificare il formato resetterà l\'area di debug, sei sicuro?',
+  variableTitle: 'Variabili',
+  variableTip:
+    'Gli utenti riempiono le variabili in un modulo, sostituendo automaticamente le variabili nel prompt.',
+  notSetVar:
+    'Le variabili consentono agli utenti di introdurre parole del prompt o osservazioni di apertura quando compilano i moduli. Puoi provare a inserire `{{input}}` nelle parole del prompt.',
+  autoAddVar:
+    'Le variabili non definite riferite nel pre-prompt, vuoi aggiungerle nel modulo di input dell\'utente?',
+  variableTable: {
+    key: 'Chiave Variabile',
+    name: 'Nome Campo Input Utente',
+    optional: 'Opzionale',
+    type: 'Tipo di Input',
+    action: 'Azioni',
+    typeString: 'Stringa',
+    typeSelect: 'Seleziona',
+  },
+  varKeyError: {
+    canNoBeEmpty: 'La chiave della variabile non può essere vuota',
+    tooLong:
+      'La chiave della variabile: {{key}} è troppo lunga. Non può essere più lunga di 30 caratteri',
+    notValid:
+      'La chiave della variabile: {{key}} non è valida. Può contenere solo lettere, numeri e underscore',
+    notStartWithNumber:
+      'La chiave della variabile: {{key}} non può iniziare con un numero',
+    keyAlreadyExists: 'La chiave della variabile: {{key}} esiste già',
+  },
+  otherError: {
+    promptNoBeEmpty: 'Il prompt non può essere vuoto',
+    historyNoBeEmpty:
+      'La cronologia delle conversazioni deve essere impostata nel prompt',
+    queryNoBeEmpty: 'La query deve essere impostata nel prompt',
+  },
+  variableConig: {
+    'addModalTitle': 'Aggiungi Campo Input',
+    'editModalTitle': 'Modifica Campo Input',
+    'description': 'Impostazione per la variabile {{varName}}',
+    'fieldType': 'Tipo di campo',
+    'string': 'Testo breve',
+    'text-input': 'Testo breve',
+    'paragraph': 'Paragrafo',
+    'select': 'Seleziona',
+    'number': 'Numero',
+    'notSet': 'Non impostato, prova a scrivere {{input}} nel prompt di prefisso',
+    'stringTitle': 'Opzioni della casella di testo del modulo',
+    'maxLength': 'Lunghezza massima',
+    'options': 'Opzioni',
+    'addOption': 'Aggiungi opzione',
+    'apiBasedVar': 'Variabile basata su API',
+    'varName': 'Nome Variabile',
+    'labelName': 'Nome Etichetta',
+    'inputPlaceholder': 'Per favore inserisci',
+    'content': 'Contenuto',
+    'required': 'Richiesto',
+    'errorMsg': {
+      varNameRequired: 'Il nome della variabile è richiesto',
+      labelNameRequired: 'Il nome dell\'etichetta è richiesto',
+      varNameCanBeRepeat: 'Il nome della variabile non può essere ripetuto',
+      atLeastOneOption: 'È richiesta almeno un\'opzione',
+      optionRepeat: 'Ci sono opzioni ripetute',
+    },
+  },
+  vision: {
+    name: 'Visione',
+    description:
+      'Abilitare la visione permetterà al modello di prendere immagini e rispondere a domande su di esse.',
+    settings: 'Impostazioni',
+    visionSettings: {
+      title: 'Impostazioni di visione',
+      resolution: 'Risoluzione',
+      resolutionTooltip: `La bassa risoluzione permetterà al modello di ricevere una versione a bassa risoluzione 512 x 512 dell\\'immagine e di rappresentare l\\'immagine con un budget di 65 token. Questo permette all\\'API di restituire risposte più veloci e di consumare meno token di input per casi d\\'uso che non richiedono alta definizione.
+      \n
+      L\\'alta risoluzione permetterà al modello di vedere prima l\\'immagine a bassa risoluzione e poi di creare ritagli dettagliati delle immagini di input come quadrati 512px basati sulla dimensione dell\\'immagine di input. Ciascuno dei ritagli dettagliati utilizza il doppio del budget dei token per un totale di 129 token.`,
+      high: 'Alta',
+      low: 'Bassa',
+      uploadMethod: 'Metodo di caricamento',
+      both: 'Entrambi',
+      localUpload: 'Caricamento locale',
+      url: 'URL',
+      uploadLimit: 'Limite di caricamento',
+    },
+  },
+  voice: {
+    name: 'Voce',
+    defaultDisplay: 'Voce predefinita',
+    description: 'Impostazioni della voce da testo a voce',
+    settings: 'Impostazioni',
+    voiceSettings: {
+      title: 'Impostazioni della voce',
+      language: 'Lingua',
+      resolutionTooltip: 'Supporto per la lingua della voce da testo a voce.',
+      voice: 'Voce',
+      autoPlay: 'Riproduzione automatica',
+      autoPlayEnabled: 'Acceso',
+      autoPlayDisabled: 'Spento',
+    },
+  },
+  openingStatement: {
+    title: 'Iniziatore di conversazione',
+    add: 'Aggiungi',
+    writeOpener: 'Scrivi introduzione',
+    placeholder:
+      'Scrivi qui il tuo messaggio introduttivo, puoi usare variabili, prova a scrivere {{variable}}.',
+    openingQuestion: 'Domande iniziali',
+    noDataPlaceHolder:
+      'Iniziare la conversazione con l\'utente può aiutare l\'IA a stabilire un legame più stretto con loro nelle applicazioni conversazionali.',
+    varTip: 'Puoi usare variabili, prova a scrivere {{variable}}',
+    tooShort:
+      'Sono richieste almeno 20 parole di prompt iniziale per generare un\'introduzione alla conversazione.',
+    notIncludeKey:
+      'Il prompt iniziale non include la variabile: {{key}}. Per favore aggiungila al prompt iniziale.',
+  },
+  modelConfig: {
+    model: 'Modello',
+    setTone: 'Imposta tono delle risposte',
+    title: 'Modello e Parametri',
+    modeType: {
+      chat: 'Chat',
+      completion: 'Completamento',
+    },
+  },
+  inputs: {
+    title: 'Debug e Anteprima',
+    noPrompt: 'Prova a scrivere qualche prompt nell\'input pre-prompt',
+    userInputField: 'Campo Input Utente',
+    noVar:
+      'Compila il valore della variabile, che verrà automaticamente sostituito nel prompt ogni volta che inizia una nuova sessione.',
+    chatVarTip:
+      'Compila il valore della variabile, che verrà automaticamente sostituito nel prompt ogni volta che inizia una nuova sessione',
+    completionVarTip:
+      'Compila il valore della variabile, che verrà automaticamente sostituito nelle parole del prompt ogni volta che viene inviata una domanda.',
+    previewTitle: 'Anteprima prompt',
+    queryTitle: 'Contenuto query',
+    queryPlaceholder: 'Per favore inserisci il testo della richiesta.',
+    run: 'ESEGUI',
+  },
+  result: 'Testo di output',
+  datasetConfig: {
+    settingTitle: 'Impostazioni di recupero',
+    knowledgeTip: 'Clicca sul pulsante “+” per aggiungere conoscenza',
+    retrieveOneWay: {
+      title: 'Recupero N-a-1',
+      description:
+        'Basato sull\'intento dell\'utente e le descrizioni della Conoscenza, l\'Agente seleziona autonomamente la migliore Conoscenza per la query. Ideale per applicazioni con Conoscenze distinte e limitate.',
+    },
+    retrieveMultiWay: {
+      title: 'Recupero multipath',
+      description:
+        'Basato sull\'intento dell\'utente, esegue query su tutte le Conoscenze, recupera testo rilevante da più fonti e seleziona i migliori risultati corrispondenti alla query dell\'utente dopo il reranking. È richiesta la configurazione dell\'API del modello di reranking.',
+    },
+    rerankModelRequired: 'Il modello di reranking è richiesto',
+    params: 'Parametri',
+    top_k: 'Top K',
+    top_kTip:
+      'Usato per filtrare i chunk più simili alle domande degli utenti. Il sistema regolerà anche dinamicamente il valore di Top K, in base ai max_tokens del modello selezionato.',
+    score_threshold: 'Soglia di punteggio',
+    score_thresholdTip:
+      'Usato per impostare la soglia di somiglianza per il filtraggio dei chunk.',
+    retrieveChangeTip:
+      'Modificare la modalità di indicizzazione e la modalità di recupero può influenzare le applicazioni associate a questa Conoscenza.',
+  },
+  debugAsSingleModel: 'Debug come modello singolo',
+  debugAsMultipleModel: 'Debug come modelli multipli',
+  duplicateModel: 'Duplica',
+  publishAs: 'Pubblica come',
+  assistantType: {
+    name: 'Tipo di assistente',
+    chatAssistant: {
+      name: 'Assistente base',
+      description:
+        'Costruisci un assistente basato su chat utilizzando un grande modello linguistico',
+    },
+    agentAssistant: {
+      name: 'Assistente Agente',
+      description:
+        'Costruisci un Agente intelligente che può scegliere autonomamente strumenti per completare i compiti',
+    },
+  },
+  agent: {
+    agentMode: 'Modalità Agente',
+    agentModeDes: 'Imposta il tipo di modalità di inferenza per l\'agente',
+    agentModeType: {
+      ReACT: 'ReAct',
+      functionCall: 'Chiamata di Funzione',
+    },
+    setting: {
+      name: 'Impostazioni Agente',
+      description:
+        'Le impostazioni dell\'Assistente Agente permettono di impostare la modalità agente e funzionalità avanzate come prompt integrati, disponibili solo nel tipo Agente.',
+      maximumIterations: {
+        name: 'Iterazioni massime',
+        description:
+          'Limita il numero di iterazioni che un assistente agente può eseguire',
+      },
+    },
+    buildInPrompt: 'Prompt Integrato',
+    firstPrompt: 'Primo Prompt',
+    nextIteration: 'Prossima Iterazione',
+    promptPlaceholder: 'Scrivi qui il tuo prompt',
+    tools: {
+      name: 'Strumenti',
+      description:
+        'L\'utilizzo degli strumenti può estendere le capacità del LLM, come cercare su internet o eseguire calcoli scientifici',
+      enabled: 'Abilitato',
+    },
+  },
+}
+
+export default translation

+ 95 - 0
web/i18n/it-IT/app-log.ts

@@ -0,0 +1,95 @@
+const translation = {
+  title: 'Registri',
+  description:
+    'I registri registrano lo stato di esecuzione dell\'applicazione, inclusi input degli utenti e risposte AI.',
+  dateTimeFormat: 'MM/DD/YYYY hh:mm A',
+  table: {
+    header: {
+      time: 'Ora',
+      endUser: 'Utente Finale',
+      input: 'Input',
+      output: 'Output',
+      summary: 'Titolo',
+      messageCount: 'Conteggio Messaggi',
+      userRate: 'Valutazione Utente',
+      adminRate: 'Valutazione Op.',
+      startTime: 'ORA INIZIO',
+      status: 'STATO',
+      runtime: 'TEMPO DI ESECUZIONE',
+      tokens: 'TOKEN',
+      user: 'UTENTE FINALE',
+      version: 'VERSIONE',
+    },
+    pagination: {
+      previous: 'Prec',
+      next: 'Succ',
+    },
+    empty: {
+      noChat: 'Nessuna conversazione ancora',
+      noOutput: 'Nessun output',
+      element: {
+        title: 'C\'è qualcuno?',
+        content:
+          'Osserva e annota le interazioni tra gli utenti finali e le applicazioni AI qui per migliorare continuamente l\'accuratezza dell\'AI. Puoi provare a <shareLink>condividere</shareLink> o a <testLink>testare</testLink> l\'app Web tu stesso, quindi tornare a questa pagina.',
+      },
+    },
+  },
+  detail: {
+    time: 'Ora',
+    conversationId: 'ID Conversazione',
+    promptTemplate: 'Template Prompt',
+    promptTemplateBeforeChat:
+      'Template Prompt Prima della Chat · Come Messaggio di Sistema',
+    annotationTip: 'Miglioramenti Segnalati da {{user}}',
+    timeConsuming: 'Tempo Trascorso',
+    second: 's',
+    tokenCost: 'Token spesi',
+    loading: 'caricamento',
+    operation: {
+      like: 'mi piace',
+      dislike: 'non mi piace',
+      addAnnotation: 'Aggiungi Miglioramento',
+      editAnnotation: 'Modifica Miglioramento',
+      annotationPlaceholder:
+        'Inserisci la risposta prevista che desideri che l\'AI dia, che può essere utilizzata per il perfezionamento del modello e il miglioramento continuo della qualità della generazione di testo in futuro.',
+    },
+    variables: 'Variabili',
+    uploadImages: 'Immagini Caricate',
+  },
+  filter: {
+    period: {
+      today: 'Oggi',
+      last7days: 'Ultimi 7 Giorni',
+      last4weeks: 'Ultime 4 settimane',
+      last3months: 'Ultimi 3 mesi',
+      last12months: 'Ultimi 12 mesi',
+      monthToDate: 'Mese corrente',
+      quarterToDate: 'Trimestre corrente',
+      yearToDate: 'Anno corrente',
+      allTime: 'Tutto il tempo',
+    },
+    annotation: {
+      all: 'Tutti',
+      annotated: 'Miglioramenti Annotati ({{count}} elementi)',
+      not_annotated: 'Non Annotati',
+    },
+  },
+  workflowTitle: 'Registri del Workflow',
+  workflowSubtitle: 'Il registro ha registrato il funzionamento di Automate.',
+  runDetail: {
+    title: 'Registro Conversazione',
+    workflowTitle: 'Dettagli Registro',
+  },
+  promptLog: 'Registro Prompt',
+  agentLog: 'Registro Agente',
+  viewLog: 'Visualizza Registro',
+  agentLogDetail: {
+    agentMode: 'Modalità Agente',
+    toolUsed: 'Strumento Usato',
+    iterations: 'Iterazioni',
+    iteration: 'Iterazione',
+    finalProcessing: 'Elaborazione Finale',
+  },
+}
+
+export default translation

+ 177 - 0
web/i18n/it-IT/app-overview.ts

@@ -0,0 +1,177 @@
+const translation = {
+  welcome: {
+    firstStepTip: 'Per iniziare,',
+    enterKeyTip: 'inserisci la tua OpenAI API Key qui sotto',
+    getKeyTip: 'Ottieni la tua API Key dalla dashboard di OpenAI',
+    placeholder: 'La tua OpenAI API Key(es. sk-xxxx)',
+  },
+  apiKeyInfo: {
+    cloud: {
+      trial: {
+        title: 'Stai usando la quota di prova di {{providerName}}.',
+        description:
+          'La quota di prova è fornita per il tuo utilizzo di test. Prima che le chiamate della quota di prova siano esaurite, configura il tuo fornitore di modelli o acquista una quota aggiuntiva.',
+      },
+      exhausted: {
+        title:
+          'La tua quota di prova è stata utilizzata, configura la tua APIKey.',
+        description:
+          'La tua quota di prova è stata esaurita. Configura il tuo fornitore di modelli o acquista una quota aggiuntiva.',
+      },
+    },
+    selfHost: {
+      title: {
+        row1: 'Per iniziare,',
+        row2: 'configura prima il tuo fornitore di modelli.',
+      },
+    },
+    callTimes: 'Numero di chiamate',
+    usedToken: 'Token utilizzati',
+    setAPIBtn: 'Vai a configurare il fornitore di modelli',
+    tryCloud: 'O prova la versione cloud di Dify con quota gratuita',
+  },
+  overview: {
+    title: 'Panoramica',
+    appInfo: {
+      explanation: 'AI WebApp pronta all\'uso',
+      accessibleAddress: 'URL Pubblico',
+      preview: 'Anteprima',
+      regenerate: 'Rigenera',
+      regenerateNotice: 'Vuoi rigenerare l\'URL pubblico?',
+      preUseReminder: 'Attiva WebApp prima di continuare.',
+      settings: {
+        entry: 'Impostazioni',
+        title: 'Impostazioni WebApp',
+        webName: 'Nome WebApp',
+        webDesc: 'Descrizione WebApp',
+        webDescTip:
+          'Questo testo verrà visualizzato sul lato client, fornendo una guida di base su come utilizzare l\'applicazione',
+        webDescPlaceholder: 'Inserisci la descrizione della WebApp',
+        language: 'Lingua',
+        workflow: {
+          title: 'Fasi del Workflow',
+          show: 'Mostra',
+          hide: 'Nascondi',
+        },
+        chatColorTheme: 'Tema colore chat',
+        chatColorThemeDesc: 'Imposta il tema colore del chatbot',
+        chatColorThemeInverted: 'Inverso',
+        invalidHexMessage: 'Valore esadecimale non valido',
+        more: {
+          entry: 'Mostra più impostazioni',
+          copyright: 'Copyright',
+          copyRightPlaceholder:
+            'Inserisci il nome dell\'autore o dell\'organizzazione',
+          privacyPolicy: 'Privacy Policy',
+          privacyPolicyPlaceholder: 'Inserisci il link alla privacy policy',
+          privacyPolicyTip:
+            'Aiuta i visitatori a capire i dati raccolti dall\'applicazione, vedi la <privacyPolicyLink>Privacy Policy</privacyPolicyLink> di Dify.',
+          customDisclaimer: 'Disclaimer Personalizzato',
+          customDisclaimerPlaceholder:
+            'Inserisci il testo del disclaimer personalizzato',
+          customDisclaimerTip:
+            'Il testo del disclaimer personalizzato verrà visualizzato sul lato client, fornendo informazioni aggiuntive sull\'applicazione',
+        },
+      },
+      embedded: {
+        entry: 'Incorporato',
+        title: 'Incorpora sul sito web',
+        explanation: 'Scegli come incorporare l\'app chat nel tuo sito web',
+        iframe:
+          'Per aggiungere l\'app chat ovunque sul tuo sito web, aggiungi questo iframe al tuo codice HTML.',
+        scripts:
+          'Per aggiungere un\'app chat in basso a destra del tuo sito web, aggiungi questo codice al tuo HTML.',
+        chromePlugin: 'Installa l\'estensione Chrome di Dify Chatbot',
+        copied: 'Copiato',
+        copy: 'Copia',
+      },
+      qrcode: {
+        title: 'Codice QR per condividere',
+        scan: 'Scansiona Condividi Applicazione',
+        download: 'Scarica Codice QR',
+      },
+      customize: {
+        way: 'modo',
+        entry: 'Personalizza',
+        title: 'Personalizza AI WebApp',
+        explanation:
+          'Puoi personalizzare il frontend della Web App per adattarla alle tue esigenze di scenario e stile.',
+        way1: {
+          name: 'Fork il codice client, modificalo e distribuiscilo su Vercel (consigliato)',
+          step1: 'Fork il codice client e modificalo',
+          step1Tip:
+            'Clicca qui per fork il codice sorgente nel tuo account GitHub e modifica il codice',
+          step1Operation: 'Dify-WebClient',
+          step2: 'Distribuisci su Vercel',
+          step2Tip:
+            'Clicca qui per importare il repository su Vercel e distribuisci',
+          step2Operation: 'Importa repository',
+          step3: 'Configura le variabili di ambiente',
+          step3Tip: 'Aggiungi le seguenti variabili di ambiente su Vercel',
+        },
+        way2: {
+          name: 'Scrivi codice lato client per chiamare l\'API e distribuiscilo su un server',
+          operation: 'Documentazione',
+        },
+      },
+    },
+    apiInfo: {
+      title: 'API del servizio backend',
+      explanation: 'Facilmente integrabile nella tua applicazione',
+      accessibleAddress: 'Endpoint del servizio API',
+      doc: 'Riferimento API',
+    },
+    status: {
+      running: 'In servizio',
+      disable: 'Disabilita',
+    },
+  },
+  analysis: {
+    title: 'Analisi',
+    ms: 'ms',
+    tokenPS: 'Token/s',
+    totalMessages: {
+      title: 'Totale Messaggi',
+      explanation:
+        'Conteggio delle interazioni giornaliere con l\'AI; ingegneria dei prompt/debug esclusi.',
+    },
+    activeUsers: {
+      title: 'Utenti Attivi',
+      explanation:
+        'Utenti unici che interagiscono in Q&A con l\'AI; ingegneria dei prompt/debug esclusi.',
+    },
+    tokenUsage: {
+      title: 'Uso dei Token',
+      explanation:
+        'Riflette l\'uso giornaliero dei token del modello linguistico per l\'applicazione, utile per il controllo dei costi.',
+      consumed: 'Consumati',
+    },
+    avgSessionInteractions: {
+      title: 'Interazioni Medie per Sessione',
+      explanation:
+        'Conteggio continuo delle comunicazioni utente-AI; per applicazioni basate su conversazione.',
+    },
+    avgUserInteractions: {
+      title: 'Interazioni Medie per Utente',
+      explanation:
+        'Riflette la frequenza giornaliera di utilizzo degli utenti. Questo parametro riflette la fedeltà degli utenti.',
+    },
+    userSatisfactionRate: {
+      title: 'Tasso di Soddisfazione degli Utenti',
+      explanation:
+        'Il numero di mi piace per 1.000 messaggi. Indica la proporzione di risposte con cui gli utenti sono molto soddisfatti.',
+    },
+    avgResponseTime: {
+      title: 'Tempo Medio di Risposta',
+      explanation:
+        'Tempo (ms) per l\'AI per elaborare/rispondere; per applicazioni basate su testo.',
+    },
+    tps: {
+      title: 'Velocità di Output dei Token',
+      explanation:
+        'Misura le prestazioni del LLM. Conta la velocità di output dei token del LLM dall\'inizio della richiesta al completamento dell\'output.',
+    },
+  },
+}
+
+export default translation

+ 138 - 0
web/i18n/it-IT/app.ts

@@ -0,0 +1,138 @@
+const translation = {
+  createApp: 'CREA APP',
+  types: {
+    all: 'Tutti',
+    chatbot: 'Chatbot',
+    agent: 'Agente',
+    workflow: 'Flusso di lavoro',
+    completion: 'Completamento',
+  },
+  duplicate: 'Duplica',
+  duplicateTitle: 'Duplica App',
+  export: 'Esporta DSL',
+  exportFailed: 'Esportazione DSL fallita.',
+  importDSL: 'Importa file DSL',
+  createFromConfigFile: 'Crea da file DSL',
+  deleteAppConfirmTitle: 'Eliminare questa app?',
+  deleteAppConfirmContent:
+    'Eliminare l\'app è irreversibile. Gli utenti non potranno più accedere alla tua app e tutte le configurazioni e i log dei prompt verranno eliminati permanentemente.',
+  appDeleted: 'App eliminata',
+  appDeleteFailed: 'Eliminazione dell\'app fallita',
+  join: 'Unisciti alla comunità',
+  communityIntro:
+    'Discuta con membri del team, collaboratori e sviluppatori su diversi canali.',
+  roadmap: 'Vedi la nostra roadmap',
+  newApp: {
+    startFromBlank: 'Crea da zero',
+    startFromTemplate: 'Crea da modello',
+    captionAppType: 'Che tipo di app vuoi creare?',
+    chatbotDescription:
+      'Crea un\'applicazione basata sulla chat. Questa app utilizza un formato domanda-e-risposta, consentendo più round di conversazione continua.',
+    completionDescription:
+      'Crea un\'applicazione che genera testo di alta qualità basato sui prompt, come articoli, riassunti, traduzioni e altro.',
+    completionWarning: 'Questo tipo di app non sarà più supportato.',
+    agentDescription:
+      'Crea un Agente intelligente che può scegliere autonomamente gli strumenti per completare i compiti',
+    workflowDescription:
+      'Crea un\'applicazione che genera testo di alta qualità basato su flussi di lavoro orchestrati con un alto grado di personalizzazione. È adatto per utenti esperti.',
+    workflowWarning: 'Attualmente in beta',
+    chatbotType: 'Metodo di orchestrazione Chatbot',
+    basic: 'Base',
+    basicTip: 'Per principianti, può passare a Chatflow in seguito',
+    basicFor: 'PER PRINCIPIANTI',
+    basicDescription:
+      'L\'Orchestrazione di base consente l\'orchestrazione di un\'app Chatbot utilizzando impostazioni semplici, senza la possibilità di modificare i prompt integrati. È adatta per principianti.',
+    advanced: 'Chatflow',
+    advancedFor: 'Per utenti avanzati',
+    advancedDescription:
+      'L\'Orchestrazione del flusso di lavoro orchestra i Chatbot sotto forma di flussi di lavoro, offrendo un alto grado di personalizzazione, inclusa la possibilità di modificare i prompt integrati. È adatta per utenti esperti.',
+    captionName: 'Icona e nome dell\'app',
+    appNamePlaceholder: 'Dai un nome alla tua app',
+    captionDescription: 'Descrizione',
+    appDescriptionPlaceholder: 'Inserisci la descrizione dell\'app',
+    useTemplate: 'Usa questo modello',
+    previewDemo: 'Anteprima demo',
+    chatApp: 'Assistente',
+    chatAppIntro:
+      'Voglio creare un\'applicazione basata sulla chat. Questa app utilizza un formato domanda-e-risposta, consentendo più round di conversazione continua.',
+    agentAssistant: 'Nuovo Agente Assistente',
+    completeApp: 'Generatore di Testi',
+    completeAppIntro:
+      'Voglio creare un\'applicazione che genera testo di alta qualità basato sui prompt, come articoli, riassunti, traduzioni e altro.',
+    showTemplates: 'Voglio scegliere da un modello',
+    hideTemplates: 'Torna alla selezione della modalità',
+    Create: 'Crea',
+    Cancel: 'Annulla',
+    nameNotEmpty: 'Il nome non può essere vuoto',
+    appTemplateNotSelected: 'Seleziona un modello',
+    appTypeRequired: 'Seleziona un tipo di app',
+    appCreated: 'App creata',
+    appCreateFailed: 'Creazione dell\'app fallita',
+  },
+  editApp: 'Modifica Info',
+  editAppTitle: 'Modifica Info App',
+  editDone: 'Info app aggiornata',
+  editFailed: 'Aggiornamento delle info dell\'app fallito',
+  emoji: {
+    ok: 'OK',
+    cancel: 'Annulla',
+  },
+  switch: 'Passa a Orchestrazione del flusso di lavoro',
+  switchTipStart:
+    'Verrà creata una nuova copia dell\'app per te, e la nuova copia passerà a Orchestrazione del flusso di lavoro. La nuova copia ',
+  switchTip: 'non permetterà',
+  switchTipEnd: ' di tornare a Orchestrazione di base.',
+  switchLabel: 'La copia dell\'app da creare',
+  removeOriginal: 'Elimina l\'app originale',
+  switchStart: 'Inizia il passaggio',
+  typeSelector: {
+    all: 'TUTTI I Tipi',
+    chatbot: 'Chatbot',
+    agent: 'Agente',
+    workflow: 'Flusso di lavoro',
+    completion: 'Completamento',
+  },
+  tracing: {
+    title: 'Tracciamento delle prestazioni dell\'app',
+    description:
+      'Configurazione di un provider LLMOps di terze parti e tracciamento delle prestazioni dell\'app.',
+    config: 'Config',
+    collapse: 'Comprimi',
+    expand: 'Espandi',
+    tracing: 'Tracciamento',
+    disabled: 'Disabilitato',
+    disabledTip: 'Configura prima il provider',
+    enabled: 'In servizio',
+    tracingDescription:
+      'Cattura il contesto completo dell\'esecuzione dell\'app, incluse chiamate LLM, contesto, prompt, richieste HTTP e altro, su una piattaforma di tracciamento di terze parti.',
+    configProviderTitle: {
+      configured: 'Configurato',
+      notConfigured: 'Configura il provider per abilitare il tracciamento',
+      moreProvider: 'Altri Provider',
+    },
+    langsmith: {
+      title: 'LangSmith',
+      description:
+        'Una piattaforma all-in-one per sviluppatori per ogni fase del ciclo di vita delle applicazioni alimentate da LLM.',
+    },
+    langfuse: {
+      title: 'Langfuse',
+      description:
+        'Tracce, valutazioni, gestione dei prompt e metriche per debug e miglioramento della tua applicazione LLM.',
+    },
+    inUse: 'In uso',
+    configProvider: {
+      title: 'Config ',
+      placeholder: 'Inserisci il tuo {{key}}',
+      project: 'Progetto',
+      publicKey: 'Chiave pubblica',
+      secretKey: 'Chiave segreta',
+      viewDocsLink: 'Visualizza documenti di {{key}}',
+      removeConfirmTitle: 'Rimuovere la configurazione di {{key}}?',
+      removeConfirmContent:
+        'La configurazione attuale è in uso, rimuovendola disattiverà la funzione di Tracciamento.',
+    },
+  },
+}
+
+export default translation

+ 131 - 0
web/i18n/it-IT/billing.ts

@@ -0,0 +1,131 @@
+const translation = {
+  currentPlan: 'Piano Attuale',
+  upgradeBtn: {
+    plain: 'Aggiorna Piano',
+    encourage: 'Aggiorna Ora',
+    encourageShort: 'Aggiorna',
+  },
+  viewBilling: 'Gestisci fatturazione e abbonamenti',
+  buyPermissionDeniedTip:
+    'Contatta l\'amministratore della tua azienda per abbonarti',
+  plansCommon: {
+    title: 'Scegli un piano adatto a te',
+    yearlyTip: 'Ottieni 2 mesi gratis abbonandoti annualmente!',
+    mostPopular: 'Più Popolare',
+    planRange: {
+      monthly: 'Mensile',
+      yearly: 'Annuale',
+    },
+    month: 'mese',
+    year: 'anno',
+    save: 'Risparmia ',
+    free: 'Gratuito',
+    currentPlan: 'Piano Attuale',
+    contractSales: 'Contatta vendite',
+    contractOwner: 'Contatta il responsabile del team',
+    startForFree: 'Inizia gratis',
+    getStartedWith: 'Inizia con ',
+    contactSales: 'Contatta le vendite',
+    talkToSales: 'Parla con le vendite',
+    modelProviders: 'Fornitori di Modelli',
+    teamMembers: 'Membri del Team',
+    annotationQuota: 'Quota di Annotazione',
+    buildApps: 'Crea App',
+    vectorSpace: 'Spazio Vettoriale',
+    vectorSpaceBillingTooltip:
+      'Ogni 1MB può memorizzare circa 1,2 milioni di caratteri di dati vettoriali (stimato utilizzando OpenAI Embeddings, varia tra i modelli).',
+    vectorSpaceTooltip:
+      'Lo Spazio Vettoriale è il sistema di memoria a lungo termine necessario per permettere agli LLM di comprendere i tuoi dati.',
+    documentsUploadQuota: 'Quota di Caricamento Documenti',
+    documentProcessingPriority: 'Priorità di Elaborazione Documenti',
+    documentProcessingPriorityTip:
+      'Per una maggiore priorità di elaborazione dei documenti, aggiorna il tuo piano.',
+    documentProcessingPriorityUpgrade:
+      'Elabora più dati con maggiore precisione a velocità più elevate.',
+    priority: {
+      'standard': 'Standard',
+      'priority': 'Priorità',
+      'top-priority': 'Massima Priorità',
+    },
+    logsHistory: 'Storico dei Log',
+    customTools: 'Strumenti Personalizzati',
+    unavailable: 'Non Disponibile',
+    days: 'giorni',
+    unlimited: 'Illimitato',
+    support: 'Supporto',
+    supportItems: {
+      communityForums: 'Forum della comunità',
+      emailSupport: 'Supporto via email',
+      priorityEmail: 'Supporto via email e chat prioritario',
+      logoChange: 'Cambia logo',
+      SSOAuthentication: 'Autenticazione SSO',
+      personalizedSupport: 'Supporto personalizzato',
+      dedicatedAPISupport: 'Supporto API dedicato',
+      customIntegration: 'Integrazione e supporto personalizzato',
+      ragAPIRequest: 'Richieste API RAG',
+      bulkUpload: 'Caricamento massivo di documenti',
+      agentMode: 'Modalità Agente',
+      workflow: 'Flusso di Lavoro',
+      llmLoadingBalancing: 'Bilanciamento del Carico LLM',
+      llmLoadingBalancingTooltip:
+        'Aggiungi più chiavi API ai modelli, bypassando efficacemente i limiti di velocità dell\'API.',
+    },
+    comingSoon: 'In arrivo',
+    member: 'Membro',
+    memberAfter: 'Membro',
+    messageRequest: {
+      title: 'Crediti Messaggi',
+      tooltip:
+        'Quote di invocazione dei messaggi per vari piani utilizzando i modelli OpenAI (eccetto gpt4). I messaggi oltre il limite utilizzeranno la tua chiave API OpenAI.',
+    },
+    annotatedResponse: {
+      title: 'Limiti di Quota di Annotazione',
+      tooltip:
+        'La modifica manuale e l\'annotazione delle risposte forniscono capacità di risposta a domande personalizzabili di alta qualità per le app. (Applicabile solo nelle app di chat)',
+    },
+    ragAPIRequestTooltip:
+      'Si riferisce al numero di chiamate API che invocano solo le capacità di elaborazione della base di conoscenza di Dify.',
+    receiptInfo:
+      'Solo il proprietario del team e l\'amministratore del team possono abbonarsi e visualizzare le informazioni di fatturazione',
+  },
+  plans: {
+    sandbox: {
+      name: 'Sandbox',
+      description: '200 prove gratuite di GPT',
+      includesTitle: 'Include:',
+    },
+    professional: {
+      name: 'Professional',
+      description:
+        'Per individui e piccoli team per sbloccare più potenza a prezzi accessibili.',
+      includesTitle: 'Tutto nel piano gratuito, più:',
+    },
+    team: {
+      name: 'Team',
+      description:
+        'Collabora senza limiti e goditi prestazioni di alto livello.',
+      includesTitle: 'Tutto nel piano Professional, più:',
+    },
+    enterprise: {
+      name: 'Enterprise',
+      description:
+        'Ottieni tutte le capacità e il supporto per sistemi mission-critical su larga scala.',
+      includesTitle: 'Tutto nel piano Team, più:',
+    },
+  },
+  vectorSpace: {
+    fullTip: 'Lo Spazio Vettoriale è pieno.',
+    fullSolution: 'Aggiorna il tuo piano per ottenere più spazio.',
+  },
+  apps: {
+    fullTipLine1: 'Aggiorna il tuo piano per',
+    fullTipLine2: 'creare più app.',
+  },
+  annotatedResponse: {
+    fullTipLine1: 'Aggiorna il tuo piano per',
+    fullTipLine2: 'annotare più conversazioni.',
+    quotaTitle: 'Quota di Risposta Annotata',
+  },
+}
+
+export default translation

+ 602 - 0
web/i18n/it-IT/common.ts

@@ -0,0 +1,602 @@
+const translation = {
+  api: {
+    success: 'Successo',
+    actionSuccess: 'Azione riuscita',
+    saved: 'Salvato',
+    create: 'Creato',
+    remove: 'Rimosso',
+  },
+  operation: {
+    create: 'Crea',
+    confirm: 'Conferma',
+    cancel: 'Annulla',
+    clear: 'Cancella',
+    save: 'Salva',
+    saveAndEnable: 'Salva & Abilita',
+    edit: 'Modifica',
+    add: 'Aggiungi',
+    added: 'Aggiunto',
+    refresh: 'Riavvia',
+    reset: 'Reimposta',
+    search: 'Cerca',
+    change: 'Cambia',
+    remove: 'Rimuovi',
+    send: 'Invia',
+    copy: 'Copia',
+    lineBreak: 'A capo',
+    sure: 'Sono sicuro',
+    download: 'Scarica',
+    delete: 'Elimina',
+    settings: 'Impostazioni',
+    setup: 'Configurazione',
+    getForFree: 'Ottieni gratuitamente',
+    reload: 'Ricarica',
+    ok: 'OK',
+    log: 'Log',
+    learnMore: 'Scopri di più',
+    params: 'Parametri',
+    duplicate: 'Duplica',
+    rename: 'Rinomina',
+  },
+  errorMsg: {
+    fieldRequired: '{{field}} è obbligatorio',
+    urlError: 'L\'URL deve iniziare con http:// o https://',
+  },
+  placeholder: {
+    input: 'Per favore inserisci',
+    select: 'Per favore seleziona',
+  },
+  voice: {
+    language: {
+      zhHans: 'Cinese',
+      zhHant: 'Cinese Tradizionale',
+      enUS: 'Inglese',
+      deDE: 'Tedesco',
+      frFR: 'Francese',
+      esES: 'Spagnolo',
+      itIT: 'Italiano',
+      thTH: 'Thailandese',
+      idID: 'Indonesiano',
+      jaJP: 'Giapponese',
+      koKR: 'Coreano',
+      ptBR: 'Portoghese',
+      ruRU: 'Russo',
+      ukUA: 'Ucraino',
+      viVN: 'Vietnamita',
+      plPL: 'Polacco',
+    },
+  },
+  unit: {
+    char: 'caratteri',
+  },
+  actionMsg: {
+    noModification: 'Nessuna modifica al momento.',
+    modifiedSuccessfully: 'Modificato con successo',
+    modifiedUnsuccessfully: 'Modifica non riuscita',
+    copySuccessfully: 'Copiato con successo',
+    paySucceeded: 'Pagamento riuscito',
+    payCancelled: 'Pagamento annullato',
+    generatedSuccessfully: 'Generato con successo',
+    generatedUnsuccessfully: 'Generazione non riuscita',
+  },
+  model: {
+    params: {
+      temperature: 'Temperatura',
+      temperatureTip:
+        'Controlla la casualità: Abbassando si ottengono completamenti meno casuali. Man mano che la temperatura si avvicina a zero, il modello diventa deterministico e ripetitivo.',
+      top_p: 'Top P',
+      top_pTip:
+        'Controlla la diversità tramite campionamento nucleare: 0.5 significa che vengono considerati la metà di tutte le opzioni ponderate per probabilità.',
+      presence_penalty: 'Penalità di presenza',
+      presence_penaltyTip:
+        'Quanto penalizzare i nuovi token in base alla loro presenza nel testo finora. Aumenta la probabilità che il modello parli di nuovi argomenti.',
+      frequency_penalty: 'Penalità di frequenza',
+      frequency_penaltyTip:
+        'Quanto penalizzare i nuovi token in base alla loro frequenza esistente nel testo finora. Diminuisce la probabilità che il modello ripeta la stessa riga alla lettera.',
+      max_tokens: 'Token massimo',
+      max_tokensTip:
+        'Utilizzato per limitare la lunghezza massima della risposta, in token. Valori maggiori possono limitare lo spazio lasciato per le parole del prompt, i log della chat e la Conoscenza. Si consiglia di impostarlo al di sotto dei due terzi\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)',
+      maxTokenSettingTip:
+        'La tua impostazione di token massimo è alta, potenzialmente limitando lo spazio per prompt, query e dati. Considera di impostarlo al di sotto dei 2/3.',
+      setToCurrentModelMaxTokenTip:
+        'Il token massimo è aggiornato all\'80% del token massimo del modello corrente {{maxToken}}.',
+      stop_sequences: 'Sequenze di stop',
+      stop_sequencesTip:
+        'Fino a quattro sequenze in cui l\'API smetterà di generare ulteriori token. Il testo restituito non conterrà la sequenza di stop.',
+      stop_sequencesPlaceholder: 'Inserisci la sequenza e premi Tab',
+    },
+    tone: {
+      Creative: 'Creativo',
+      Balanced: 'Bilanciato',
+      Precise: 'Preciso',
+      Custom: 'Personalizzato',
+    },
+    addMoreModel: 'Vai alle impostazioni per aggiungere altri modelli',
+  },
+  menus: {
+    status: 'beta',
+    explore: 'Esplora',
+    apps: 'Studio',
+    plugins: 'Plugin',
+    pluginsTips:
+      'Integra plugin di terze parti o crea plugin AI compatibili con ChatGPT.',
+    datasets: 'Conoscenza',
+    datasetsTips:
+      'PROSSIMAMENTE: Importa i tuoi dati testuali o scrivi dati in tempo reale tramite Webhook per migliorare il contesto LLM.',
+    newApp: 'Nuova App',
+    newDataset: 'Crea Conoscenza',
+    tools: 'Strumenti',
+  },
+  userProfile: {
+    settings: 'Impostazioni',
+    workspace: 'Workspace',
+    createWorkspace: 'Crea Workspace',
+    helpCenter: 'Aiuto',
+    roadmapAndFeedback: 'Feedback',
+    community: 'Comunità',
+    about: 'Informazioni',
+    logout: 'Esci',
+  },
+  settings: {
+    accountGroup: 'ACCOUNT',
+    workplaceGroup: 'WORKSPACE',
+    account: 'Il mio account',
+    members: 'Membri',
+    billing: 'Fatturazione',
+    integrations: 'Integrazioni',
+    language: 'Lingua',
+    provider: 'Fornitore di Modelli',
+    dataSource: 'Fonte Dati',
+    plugin: 'Plugin',
+    apiBasedExtension: 'Estensione API',
+  },
+  account: {
+    avatar: 'Avatar',
+    name: 'Nome',
+    email: 'Email',
+    password: 'Password',
+    passwordTip:
+      'Puoi impostare una password permanente se non vuoi utilizzare codici di accesso temporanei',
+    setPassword: 'Imposta una password',
+    resetPassword: 'Reimposta password',
+    currentPassword: 'Password attuale',
+    newPassword: 'Nuova password',
+    confirmPassword: 'Conferma password',
+    notEqual: 'Le due password sono diverse.',
+    langGeniusAccount: 'Account Dify',
+    langGeniusAccountTip: 'Il tuo account Dify e i dati utente associati.',
+    editName: 'Modifica Nome',
+    showAppLength: 'Mostra {{length}} app',
+    delete: 'Elimina Account',
+    deleteTip:
+      'Eliminando il tuo account cancellerai permanentemente tutti i tuoi dati e non sarà possibile recuperarli.',
+    deleteConfirmTip:
+      'Per confermare, invia il seguente messaggio dalla tua email registrata a ',
+  },
+  members: {
+    team: 'Team',
+    invite: 'Aggiungi',
+    name: 'NOME',
+    lastActive: 'ULTIMA ATTIVITÀ',
+    role: 'RUOLI',
+    pending: 'In attesa...',
+    owner: 'Proprietario',
+    admin: 'Admin',
+    adminTip: 'Può creare app e gestire le impostazioni del team',
+    normal: 'Normale',
+    normalTip: 'Può solo usare le app, non può crearle',
+    builder: 'Builder',
+    builderTip: 'Può creare e modificare le proprie app',
+    editor: 'Editor',
+    editorTip: 'Può creare e modificare app',
+    datasetOperator: 'Admin della Conoscenza',
+    datasetOperatorTip: 'Può solo gestire la base di conoscenza',
+    inviteTeamMember: 'Aggiungi membro del team',
+    inviteTeamMemberTip:
+      'Potranno accedere ai dati del tuo team direttamente dopo aver effettuato l\'accesso.',
+    email: 'Email',
+    emailInvalid: 'Formato Email non valido',
+    emailPlaceholder: 'Per favore inserisci le email',
+    sendInvite: 'Invia Invito',
+    invitedAsRole: 'Invitato come utente {{role}}',
+    invitationSent: 'Invito inviato',
+    invitationSentTip:
+      'Invito inviato, e possono accedere a Dify per accedere ai dati del tuo team.',
+    invitationLink: 'Link di Invito',
+    failedinvitationEmails:
+      'Gli utenti seguenti non sono stati invitati con successo',
+    ok: 'OK',
+    removeFromTeam: 'Rimuovi dal team',
+    removeFromTeamTip: 'Rimuoverà l\'accesso al team',
+    setAdmin: 'Imposta come amministratore',
+    setMember: 'Imposta come membro ordinario',
+    setBuilder: 'Imposta come builder',
+    setEditor: 'Imposta come editor',
+    disinvite: 'Annulla l\'invito',
+    deleteMember: 'Elimina Membro',
+    you: '(Tu)',
+  },
+  integrations: {
+    connected: 'Connesso',
+    google: 'Google',
+    googleAccount: 'Accedi con l\'account Google',
+    github: 'GitHub',
+    githubAccount: 'Accedi con l\'account GitHub',
+    connect: 'Connetti',
+  },
+  language: {
+    displayLanguage: 'Lingua di visualizzazione',
+    timezone: 'Fuso orario',
+  },
+  provider: {
+    apiKey: 'API Key',
+    enterYourKey: 'Inserisci qui la tua API key',
+    invalidKey: 'Chiave API OpenAI non valida',
+    validatedError: 'Convalida fallita: ',
+    validating: 'Convalida chiave in corso...',
+    saveFailed: 'Salvataggio della chiave API fallito',
+    apiKeyExceedBill:
+      'Questa API KEY non ha più quota disponibile, per favore leggi',
+    addKey: 'Aggiungi Chiave',
+    comingSoon: 'Prossimamente',
+    editKey: 'Modifica',
+    invalidApiKey: 'Chiave API non valida',
+    azure: {
+      apiBase: 'Base API',
+      apiBasePlaceholder: 'L\'URL Base API del tuo Endpoint Azure OpenAI.',
+      apiKey: 'API Key',
+      apiKeyPlaceholder: 'Inserisci qui la tua API key',
+      helpTip: 'Scopri di più su Azure OpenAI Service',
+    },
+    openaiHosted: {
+      openaiHosted: 'OpenAI Ospitato',
+      onTrial: 'IN PROVA',
+      exhausted: 'QUOTA ESAURITA',
+      desc: 'Il servizio di hosting OpenAI fornito da Dify ti consente di utilizzare modelli come GPT-3.5. Prima che la tua quota di prova sia esaurita, devi configurare altri fornitori di modelli.',
+      callTimes: 'Numero di chiamate',
+      usedUp: 'Quota di prova esaurita. Aggiungi il tuo fornitore di modelli.',
+      useYourModel: 'Attualmente utilizzando il proprio fornitore di modelli.',
+      close: 'Chiudi',
+    },
+    anthropicHosted: {
+      anthropicHosted: 'Anthropic Claude',
+      onTrial: 'IN PROVA',
+      exhausted: 'QUOTA ESAURITA',
+      desc: 'Modello potente, eccelle in una vasta gamma di compiti dal dialogo sofisticato alla generazione di contenuti creativi fino alle istruzioni dettagliate.',
+      callTimes: 'Numero di chiamate',
+      usedUp: 'Quota di prova esaurita. Aggiungi il tuo fornitore di modelli.',
+      useYourModel: 'Attualmente utilizzando il proprio fornitore di modelli.',
+      close: 'Chiudi',
+    },
+    anthropic: {
+      using: 'La capacità di embedding è in uso',
+      enableTip:
+        'Per abilitare il modello Anthropic, devi prima collegarti a OpenAI o Azure OpenAI Service.',
+      notEnabled: 'Non abilitato',
+      keyFrom: 'Ottieni la tua API key da Anthropic',
+    },
+    encrypted: {
+      front:
+        'La tua API KEY sarà crittografata e archiviata utilizzando la tecnologia',
+      back: '.',
+    },
+  },
+  modelProvider: {
+    notConfigured:
+      'Il modello di sistema non è ancora stato completamente configurato e alcune funzioni potrebbero non essere disponibili.',
+    systemModelSettings: 'Impostazioni Modello di Sistema',
+    systemModelSettingsLink:
+      'Perché è necessario configurare un modello di sistema?',
+    selectModel: 'Seleziona il tuo modello',
+    setupModelFirst: 'Per favore, configura prima il tuo modello',
+    systemReasoningModel: {
+      key: 'Modello di Ragionamento di Sistema',
+      tip: 'Imposta il modello di inferenza predefinito da utilizzare per creare applicazioni, così come funzionalità come la generazione del nome del dialogo e il suggerimento della domanda successiva utilizzeranno anche il modello di inferenza predefinito.',
+    },
+    embeddingModel: {
+      key: 'Modello di Embedding',
+      tip: 'Imposta il modello predefinito per l\'elaborazione degli embedding dei documenti della Conoscenza, sia il recupero che l\'importazione della Conoscenza utilizzano questo modello di Embedding per il processo di vettorizzazione. Il cambio causerà l\'incoerenza della dimensione del vettore tra la Conoscenza importata e la domanda, causando un fallimento nel recupero. Per evitare fallimenti nel recupero, non cambiare questo modello a piacimento.',
+      required: 'Il Modello di Embedding è obbligatorio',
+    },
+    speechToTextModel: {
+      key: 'Modello da Voce a Testo',
+      tip: 'Imposta il modello predefinito per l\'input da voce a testo nella conversazione.',
+    },
+    ttsModel: {
+      key: 'Modello da Testo a Voce',
+      tip: 'Imposta il modello predefinito per l\'input da testo a voce nella conversazione.',
+    },
+    rerankModel: {
+      key: 'Modello di Rerank',
+      tip: 'Il modello di rerank riordinerà la lista dei documenti candidati basandosi sulla corrispondenza semantica con la query dell\'utente, migliorando i risultati del ranking semantico',
+    },
+    apiKey: 'API-KEY',
+    quota: 'Quota',
+    searchModel: 'Modello di ricerca',
+    noModelFound: 'Nessun modello trovato per {{model}}',
+    models: 'Modelli',
+    showMoreModelProvider: 'Mostra più fornitori di modelli',
+    selector: {
+      tip: 'Questo modello è stato rimosso. Per favore aggiungi un modello o seleziona un altro modello.',
+      emptyTip: 'Nessun modello disponibile',
+      emptySetting: 'Per favore vai alle impostazioni per configurare',
+      rerankTip: 'Per favore, configura il modello di Rerank',
+    },
+    card: {
+      quota: 'QUOTA',
+      onTrial: 'In Prova',
+      paid: 'Pagato',
+      quotaExhausted: 'Quota esaurita',
+      callTimes: 'Numero di chiamate',
+      tokens: 'Token',
+      buyQuota: 'Acquista Quota',
+      priorityUse: 'Uso prioritario',
+      removeKey: 'Rimuovi API Key',
+      tip: 'Verrà data priorità alla quota pagata. La quota di prova sarà utilizzata dopo l\'esaurimento della quota pagata.',
+    },
+    item: {
+      deleteDesc:
+        '{{modelName}} è utilizzato come modello di ragionamento di sistema. Alcune funzioni non saranno disponibili dopo la rimozione. Si prega di confermare.',
+      freeQuota: 'QUOTA GRATUITA',
+    },
+    addApiKey: 'Aggiungi la tua API key',
+    invalidApiKey: 'API key non valida',
+    encrypted: {
+      front:
+        'La tua API KEY sarà crittografata e archiviata utilizzando la tecnologia',
+      back: '.',
+    },
+    freeQuota: {
+      howToEarn: 'Come guadagnare',
+    },
+    addMoreModelProvider: 'AGGIUNGI PIÙ FORNITORI DI MODELLI',
+    addModel: 'Aggiungi Modello',
+    modelsNum: '{{num}} Modelli',
+    showModels: 'Mostra Modelli',
+    showModelsNum: 'Mostra {{num}} Modelli',
+    collapse: 'Comprimi',
+    config: 'Configura',
+    modelAndParameters: 'Modello e Parametri',
+    model: 'Modello',
+    featureSupported: '{{feature}} supportato',
+    callTimes: 'Numero di chiamate',
+    credits: 'Crediti Messaggi',
+    buyQuota: 'Acquista Quota',
+    getFreeTokens: 'Ottieni Token gratuiti',
+    priorityUsing: 'Utilizzo prioritario',
+    deprecated: 'Deprecato',
+    confirmDelete: 'confermare l\'eliminazione?',
+    quotaTip: 'Token gratuiti rimanenti disponibili',
+    loadPresets: 'Carica Preset',
+    parameters: 'PARAMETRI',
+    loadBalancing: 'Bilanciamento del Carico',
+    loadBalancingDescription: 'Riduci la pressione con più set di credenziali.',
+    loadBalancingHeadline: 'Bilanciamento del Carico',
+    configLoadBalancing: 'Configura Bilanciamento del Carico',
+    modelHasBeenDeprecated: 'Questo modello è stato deprecato',
+    providerManaged: 'Gestito dal fornitore',
+    providerManagedDescription:
+      'Usa il singolo set di credenziali fornito dal fornitore del modello.',
+    defaultConfig: 'Config predefinito',
+    apiKeyStatusNormal: 'Stato APIKey normale',
+    apiKeyRateLimit:
+      'Il limite di velocità è stato raggiunto, disponibile dopo {{seconds}}s',
+    addConfig: 'Aggiungi Configurazione',
+    editConfig: 'Modifica Configurazione',
+    loadBalancingLeastKeyWarning:
+      'Per abilitare il bilanciamento del carico devono essere abilitate almeno 2 chiavi.',
+    loadBalancingInfo:
+      'Per impostazione predefinita, il bilanciamento del carico utilizza la strategia Round-robin. Se viene attivato il rate limiting, verrà applicato un periodo di cooldown di 1 minuto.',
+    upgradeForLoadBalancing:
+      'Aggiorna il tuo piano per abilitare il Bilanciamento del Carico.',
+  },
+  dataSource: {
+    add: 'Aggiungi una fonte di dati',
+    connect: 'Connetti',
+    configure: 'Configura',
+    notion: {
+      title: 'Notion',
+      description: 'Usa Notion come fonte di dati per la Conoscenza.',
+      connectedWorkspace: 'Workspace connesso',
+      addWorkspace: 'Aggiungi workspace',
+      connected: 'Connesso',
+      disconnected: 'Disconnesso',
+      changeAuthorizedPages: 'Cambia pagine autorizzate',
+      pagesAuthorized: 'Pagine autorizzate',
+      sync: 'Sincronizza',
+      remove: 'Rimuovi',
+      selector: {
+        pageSelected: 'Pagine selezionate',
+        searchPages: 'Cerca pagine...',
+        noSearchResult: 'Nessun risultato di ricerca',
+        addPages: 'Aggiungi pagine',
+        preview: 'ANTEPRIMA',
+      },
+    },
+    website: {
+      title: 'Sito web',
+      description: 'Importa contenuti dai siti web utilizzando il web crawler.',
+      with: 'Con',
+      configuredCrawlers: 'Crawler configurati',
+      active: 'Attivo',
+      inactive: 'Inattivo',
+    },
+  },
+  plugin: {
+    serpapi: {
+      apiKey: 'API Key',
+      apiKeyPlaceholder: 'Inserisci la tua API key',
+      keyFrom: 'Ottieni la tua API key dalla pagina dell\'account SerpAPI',
+    },
+  },
+  apiBasedExtension: {
+    title:
+      'Le estensioni API forniscono una gestione centralizzata delle API, semplificando la configurazione per un facile utilizzo nelle applicazioni di Dify.',
+    link: 'Scopri come sviluppare la tua estensione API.',
+    linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
+    add: 'Aggiungi Estensione API',
+    selector: {
+      title: 'Estensione API',
+      placeholder: 'Per favore seleziona l\'estensione API',
+      manage: 'Gestisci Estensione API',
+    },
+    modal: {
+      title: 'Aggiungi Estensione API',
+      editTitle: 'Modifica Estensione API',
+      name: {
+        title: 'Nome',
+        placeholder: 'Per favore inserisci il nome',
+      },
+      apiEndpoint: {
+        title: 'Endpoint API',
+        placeholder: 'Per favore inserisci l\'endpoint API',
+      },
+      apiKey: {
+        title: 'API-key',
+        placeholder: 'Per favore inserisci l\'API-key',
+        lengthError:
+          'La lunghezza della chiave API non può essere inferiore a 5 caratteri',
+      },
+    },
+    type: 'Tipo',
+  },
+  about: {
+    changeLog: 'Registro delle modifiche',
+    updateNow: 'Aggiorna ora',
+    nowAvailable: 'Dify {{version}} è ora disponibile.',
+    latestAvailable: 'Dify {{version}} è l\'ultima versione disponibile.',
+  },
+  appMenus: {
+    overview: 'Monitoraggio',
+    promptEng: 'Orchestrazione',
+    apiAccess: 'Accesso API',
+    logAndAnn: 'Log & Ann.',
+    logs: 'Log',
+  },
+  environment: {
+    testing: 'TEST',
+    development: 'SVILUPPO',
+  },
+  appModes: {
+    completionApp: 'Generatore di Testi',
+    chatApp: 'App di Chat',
+  },
+  datasetMenus: {
+    documents: 'Documenti',
+    hitTesting: 'Test di Recupero',
+    settings: 'Impostazioni',
+    emptyTip:
+      'La Conoscenza non è stata associata, per favore vai all\'applicazione o al plug-in per completare l\'associazione.',
+    viewDoc: 'Visualizza documentazione',
+    relatedApp: 'app collegate',
+  },
+  voiceInput: {
+    speaking: 'Parla ora...',
+    converting: 'Conversione in testo...',
+    notAllow: 'microfono non autorizzato',
+  },
+  modelName: {
+    'gpt-3.5-turbo': 'GPT-3.5-Turbo',
+    'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
+    'gpt-4': 'GPT-4',
+    'gpt-4-32k': 'GPT-4-32K',
+    'text-davinci-003': 'Text-Davinci-003',
+    'text-embedding-ada-002': 'Text-Embedding-Ada-002',
+    'whisper-1': 'Whisper-1',
+    'claude-instant-1': 'Claude-Instant',
+    'claude-2': 'Claude-2',
+  },
+  chat: {
+    renameConversation: 'Rinomina Conversazione',
+    conversationName: 'Nome della conversazione',
+    conversationNamePlaceholder:
+      'Per favore inserisci il nome della conversazione',
+    conversationNameCanNotEmpty: 'Nome della conversazione obbligatorio',
+    citation: {
+      title: 'CITAZIONI',
+      linkToDataset: 'Collegamento alla Conoscenza',
+      characters: 'Caratteri:',
+      hitCount: 'Conteggio dei recuperi:',
+      vectorHash: 'Hash del vettore:',
+      hitScore: 'Punteggio di recupero:',
+    },
+  },
+  promptEditor: {
+    placeholder:
+      'Scrivi qui il tuo prompt, inserisci \'{\' per inserire una variabile, inserisci \'/\' per inserire un blocco di contenuto del prompt',
+    context: {
+      item: {
+        title: 'Contesto',
+        desc: 'Inserisci modello di contesto',
+      },
+      modal: {
+        title: '{{num}} Conoscenza nel Contesto',
+        add: 'Aggiungi Contesto ',
+        footer: 'Puoi gestire i contesti nella sezione Contesto qui sotto.',
+      },
+    },
+    history: {
+      item: {
+        title: 'Cronologia della Conversazione',
+        desc: 'Inserisci modello di messaggio storico',
+      },
+      modal: {
+        title: 'ESEMPIO',
+        user: 'Ciao',
+        assistant: 'Ciao! Come posso aiutarti oggi?',
+        edit: 'Modifica i Nomi dei Ruoli della Conversazione',
+      },
+    },
+    variable: {
+      item: {
+        title: 'Variabili & Strumenti Esterni',
+        desc: 'Inserisci Variabili & Strumenti Esterni',
+      },
+      outputToolDisabledItem: {
+        title: 'Variabili',
+        desc: 'Inserisci Variabili',
+      },
+      modal: {
+        add: 'Nuova variabile',
+        addTool: 'Nuovo strumento',
+      },
+    },
+    query: {
+      item: {
+        title: 'Query',
+        desc: 'Inserisci modello di query dell\'utente',
+      },
+    },
+    existed: 'Esiste già nel prompt',
+  },
+  imageUploader: {
+    uploadFromComputer: 'Carica dal Computer',
+    uploadFromComputerReadError:
+      'Lettura dell\'immagine fallita, per favore riprova.',
+    uploadFromComputerUploadError:
+      'Caricamento dell\'immagine fallito, per favore ricarica.',
+    uploadFromComputerLimit:
+      'Le immagini caricate non possono superare i {{size}} MB',
+    pasteImageLink: 'Incolla link immagine',
+    pasteImageLinkInputPlaceholder: 'Incolla qui il link immagine',
+    pasteImageLinkInvalid: 'Link immagine non valido',
+    imageUpload: 'Caricamento Immagine',
+  },
+  tag: {
+    placeholder: 'Tutti i Tag',
+    addNew: 'Aggiungi nuovo tag',
+    noTag: 'Nessun tag',
+    noTagYet: 'Nessun tag ancora',
+    addTag: 'Aggiungi tag',
+    editTag: 'Modifica tag',
+    manageTags: 'Gestisci Tag',
+    selectorPlaceholder: 'Scrivi per cercare o creare',
+    create: 'Crea',
+    delete: 'Elimina tag',
+    deleteTip: 'Il tag è in uso, eliminarlo?',
+    created: 'Tag creato con successo',
+    failed: 'Creazione del tag fallita',
+  },
+}
+
+export default translation

+ 31 - 0
web/i18n/it-IT/custom.ts

@@ -0,0 +1,31 @@
+const translation = {
+  custom: 'Personalizzazione',
+  upgradeTip: {
+    prefix: 'Aggiorna il tuo piano per',
+    suffix: 'personalizzare il tuo marchio.',
+  },
+  webapp: {
+    title: 'Personalizza il marchio WebApp',
+    removeBrand: 'Rimuovi Powered by Dify',
+    changeLogo: 'Cambia immagine del marchio Powered by',
+    changeLogoTip: 'Formato SVG o PNG con una dimensione minima di 40x40px',
+  },
+  app: {
+    title: 'Personalizza l\'intestazione del marchio dell\'app',
+    changeLogoTip: 'Formato SVG o PNG con una dimensione minima di 80x80px',
+  },
+  upload: 'Carica',
+  uploading: 'Caricamento in corso',
+  uploadedFail: 'Caricamento dell\'immagine fallito, per favore ricarica.',
+  change: 'Cambia',
+  apply: 'Applica',
+  restore: 'Ripristina Impostazioni Predefinite',
+  customize: {
+    contactUs: ' contattaci ',
+    prefix:
+      'Per personalizzare il logo del marchio all\'interno dell\'app, per favore',
+    suffix: 'per aggiornare alla versione Enterprise.',
+  },
+}
+
+export default translation

+ 184 - 0
web/i18n/it-IT/dataset-creation.ts

@@ -0,0 +1,184 @@
+const translation = {
+  steps: {
+    header: {
+      creation: 'Crea Conoscenza',
+      update: 'Aggiungi dati',
+    },
+    one: 'Scegli fonte dati',
+    two: 'Preprocessamento e Pulizia del Testo',
+    three: 'Esegui e termina',
+  },
+  error: {
+    unavailable: 'Questa Conoscenza non è disponibile',
+  },
+  firecrawl: {
+    configFirecrawl: 'Configura 🔥Firecrawl',
+    apiKeyPlaceholder: 'Chiave API da firecrawl.dev',
+    getApiKeyLinkText: 'Ottieni la tua chiave API da firecrawl.dev',
+  },
+  stepOne: {
+    filePreview: 'Anteprima del File',
+    pagePreview: 'Anteprima della Pagina',
+    dataSourceType: {
+      file: 'Importa da file',
+      notion: 'Sincronizza da Notion',
+      web: 'Sincronizza da sito web',
+    },
+    uploader: {
+      title: 'Carica file',
+      button: 'Trascina e rilascia il file, o',
+      browse: 'Sfoglia',
+      tip: 'Supporta {{supportTypes}}. Max {{size}}MB ciascuno.',
+      validation: {
+        typeError: 'Tipo di file non supportato',
+        size: 'File troppo grande. Il massimo è {{size}}MB',
+        count: 'Più file non supportati',
+        filesNumber:
+          'Hai raggiunto il limite di caricamento batch di {{filesNumber}}.',
+      },
+      cancel: 'Annulla',
+      change: 'Cambia',
+      failed: 'Caricamento fallito',
+    },
+    notionSyncTitle: 'Notion non è connesso',
+    notionSyncTip:
+      'Per sincronizzare con Notion, deve essere stabilita prima la connessione a Notion.',
+    connect: 'Vai a connettere',
+    button: 'Avanti',
+    emptyDatasetCreation: 'Voglio creare una Conoscenza vuota',
+    modal: {
+      title: 'Crea una Conoscenza vuota',
+      tip: 'Una Conoscenza vuota non conterrà documenti, e potrai caricare documenti in qualsiasi momento.',
+      input: 'Nome della Conoscenza',
+      placeholder: 'Per favore inserisci',
+      nameNotEmpty: 'Il nome non può essere vuoto',
+      nameLengthInvaild: 'Il nome deve essere tra 1 e 40 caratteri',
+      cancelButton: 'Annulla',
+      confirmButton: 'Crea',
+      failed: 'Creazione fallita',
+    },
+    website: {
+      fireCrawlNotConfigured: 'Firecrawl non è configurato',
+      fireCrawlNotConfiguredDescription:
+        'Configura Firecrawl con la chiave API per usarlo.',
+      configure: 'Configura',
+      run: 'Esegui',
+      firecrawlTitle: 'Estrai contenuti web con 🔥Firecrawl',
+      firecrawlDoc: 'Documenti Firecrawl',
+      firecrawlDocLink:
+        'https://docs.dify.ai/guides/knowledge-base/sync_from_website',
+      options: 'Opzioni',
+      crawlSubPage: 'Crawl sotto-pagine',
+      limit: 'Limite',
+      maxDepth: 'Profondità massima',
+      excludePaths: 'Escludi percorsi',
+      includeOnlyPaths: 'Includi solo percorsi',
+      extractOnlyMainContent:
+        'Estrai solo il contenuto principale (senza intestazioni, nav, piè di pagina, ecc.)',
+      exceptionErrorTitle:
+        'Si è verificata un\'eccezione durante l\'esecuzione del lavoro Firecrawl:',
+      unknownError: 'Errore sconosciuto',
+      totalPageScraped: 'Pagine totali estratte:',
+      selectAll: 'Seleziona tutto',
+      resetAll: 'Reimposta tutto',
+      scrapTimeInfo: 'Estratte {{total}} pagine in totale in {{time}}s',
+      preview: 'Anteprima',
+      maxDepthTooltip:
+        'Profondità massima da eseguire rispetto all\'URL inserito. La profondità 0 estrae solo la pagina dell\'URL inserito, la profondità 1 estrae l\'URL e tutto ciò che segue l\'URL inserito + uno /, e così via.',
+    },
+  },
+  stepTwo: {
+    segmentation: 'Impostazioni dei blocchi',
+    auto: 'Automatico',
+    autoDescription:
+      'Imposta automaticamente le regole dei blocchi e del preprocessamento. Gli utenti non familiari sono consigliati di selezionare questo.',
+    custom: 'Personalizzato',
+    customDescription:
+      'Personalizza le regole dei blocchi, la lunghezza dei blocchi e le regole di preprocessamento, ecc.',
+    separator: 'Identificatore di segmento',
+    separatorPlaceholder:
+      'Ad esempio, nuova linea (\\\\n) o separatore speciale (come `***`)',
+    maxLength: 'Lunghezza massima del blocco',
+    overlap: 'Sovrapposizione del blocco',
+    overlapTip:
+      'Impostare la sovrapposizione del blocco può mantenere la rilevanza semantica tra di loro, migliorando l\'effetto di recupero. Si consiglia di impostare il 10%-25% della dimensione massima del blocco.',
+    overlapCheck:
+      'la sovrapposizione del blocco non dovrebbe essere maggiore della lunghezza massima del blocco',
+    rules: 'Regole di preprocessamento del testo',
+    removeExtraSpaces: 'Sostituisci spazi, nuove linee e tab consecutivi',
+    removeUrlEmails: 'Elimina tutti gli URL e gli indirizzi email',
+    removeStopwords: 'Rimuovi parole vuote come `a`, `an`, `the`',
+    preview: 'Conferma & Anteprima',
+    reset: 'Reimposta',
+    indexMode: 'Modalità indice',
+    qualified: 'Alta Qualità',
+    recommend: 'Consigliato',
+    qualifiedTip:
+      'Chiama l\'interfaccia di embedding di sistema predefinita per l\'elaborazione per fornire maggiore accuratezza quando gli utenti fanno query.',
+    warning:
+      'Per favore configura prima la chiave API del fornitore del modello.',
+    click: 'Vai alle impostazioni',
+    economical: 'Economico',
+    economicalTip:
+      'Usa motori vettoriali offline, indici di parole chiave, ecc. per ridurre l\'accuratezza senza spendere token',
+    QATitle: 'Segmentazione in formato Domanda & Risposta',
+    QATip: 'Abilitare questa opzione consumerà più token',
+    QALanguage: 'Segmenta usando',
+    emstimateCost: 'Stima',
+    emstimateSegment: 'Blocchi stimati',
+    segmentCount: 'blocchi',
+    calculating: 'Calcolo in corso...',
+    fileSource: 'Preprocessa documenti',
+    notionSource: 'Preprocessa pagine',
+    websiteSource: 'Preprocessa sito web',
+    other: 'e altri ',
+    fileUnit: ' file',
+    notionUnit: ' pagine',
+    webpageUnit: ' pagine',
+    previousStep: 'Passo precedente',
+    nextStep: 'Salva & Elabora',
+    save: 'Salva & Elabora',
+    cancel: 'Annulla',
+    sideTipTitle: 'Perché segmentare e preprocessare?',
+    sideTipP1:
+      'Quando si elabora dati testuali, la segmentazione e la pulizia sono due passaggi di preprocessamento importanti.',
+    sideTipP2:
+      'La segmentazione divide il testo lungo in paragrafi così i modelli possono comprendere meglio. Questo migliora la qualità e la rilevanza dei risultati del modello.',
+    sideTipP3:
+      'La pulizia rimuove caratteri e formati non necessari, rendendo la Conoscenza più pulita e facile da analizzare.',
+    sideTipP4:
+      'Una corretta segmentazione e pulizia migliorano le prestazioni del modello, fornendo risultati più accurati e preziosi.',
+    previewTitle: 'Anteprima',
+    previewTitleButton: 'Anteprima',
+    previewButton: 'Passaggio al formato Domanda & Risposta',
+    previewSwitchTipStart:
+      'L\'anteprima del blocco corrente è in formato testo, il passaggio a un\'anteprima in formato domanda e risposta',
+    previewSwitchTipEnd: ' consumerà token aggiuntivi',
+    characters: 'caratteri',
+    indexSettedTip: 'Per cambiare il metodo di indicizzazione, vai alle ',
+    retrivalSettedTip: 'Per cambiare il metodo di indicizzazione, vai alle ',
+    datasetSettingLink: 'impostazioni della Conoscenza.',
+  },
+  stepThree: {
+    creationTitle: '🎉 Conoscenza creata',
+    creationContent:
+      'Abbiamo automaticamente nominato la Conoscenza, puoi modificarla in qualsiasi momento',
+    label: 'Nome della Conoscenza',
+    additionTitle: '🎉 Documento caricato',
+    additionP1: 'Il documento è stato caricato nella Conoscenza',
+    additionP2: ', puoi trovarlo nella lista dei documenti della Conoscenza.',
+    stop: 'Ferma l\'elaborazione',
+    resume: 'Riprendi l\'elaborazione',
+    navTo: 'Vai al documento',
+    sideTipTitle: 'Cosa succede dopo',
+    sideTipContent:
+      'Dopo che il documento ha terminato l\'indicizzazione, la Conoscenza può essere integrata nell\'applicazione come contesto, puoi trovare l\'impostazione del contesto nella pagina di orchestrazione del prompt. Puoi anche crearla come un plugin di indicizzazione indipendente di ChatGPT per la pubblicazione.',
+    modelTitle: 'Sei sicuro di fermare l\'embedding?',
+    modelContent:
+      'Se hai bisogno di riprendere l\'elaborazione in seguito, continuerai da dove hai interrotto.',
+    modelButtonConfirm: 'Conferma',
+    modelButtonCancel: 'Annulla',
+  },
+}
+
+export default translation

+ 354 - 0
web/i18n/it-IT/dataset-documents.ts

@@ -0,0 +1,354 @@
+const translation = {
+  list: {
+    title: 'Documenti',
+    desc: 'Tutti i file della Conoscenza sono mostrati qui, e l\'intera Conoscenza può essere collegata alle citazioni di Dify o indicizzata tramite il plugin di Chat.',
+    addFile: 'Aggiungi file',
+    addPages: 'Aggiungi Pagine',
+    addUrl: 'Aggiungi URL',
+    table: {
+      header: {
+        fileName: 'NOME FILE',
+        words: 'PAROLE',
+        hitCount: 'CONTEGGIO RECUPERI',
+        uploadTime: 'ORA DI CARICAMENTO',
+        status: 'STATO',
+        action: 'AZIONE',
+      },
+      rename: 'Rinomina',
+      name: 'Nome',
+    },
+    action: {
+      uploadFile: 'Carica nuovo file',
+      settings: 'Impostazioni segmenti',
+      addButton: 'Aggiungi blocco',
+      add: 'Aggiungi un blocco',
+      batchAdd: 'Aggiungi in batch',
+      archive: 'Archivia',
+      unarchive: 'Disarchivia',
+      delete: 'Elimina',
+      enableWarning: 'Il file archiviato non può essere abilitato',
+      sync: 'Sincronizza',
+    },
+    index: {
+      enable: 'Abilita',
+      disable: 'Disabilita',
+      all: 'Tutti',
+      enableTip: 'Il file può essere indicizzato',
+      disableTip: 'Il file non può essere indicizzato',
+    },
+    status: {
+      queuing: 'In coda',
+      indexing: 'Indicizzazione',
+      paused: 'In pausa',
+      error: 'Errore',
+      available: 'Disponibile',
+      enabled: 'Abilitato',
+      disabled: 'Disabilitato',
+      archived: 'Archiviato',
+    },
+    empty: {
+      title: 'Non ci sono ancora documenti',
+      upload: {
+        tip: 'Puoi caricare file, sincronizzare dal sito web o da app web come Notion, GitHub, ecc.',
+      },
+      sync: {
+        tip: 'Dify scaricherà periodicamente i file dal tuo Notion e completerà l\'elaborazione.',
+      },
+    },
+    delete: {
+      title: 'Sei sicuro di voler eliminare?',
+      content:
+        'Se hai bisogno di riprendere l\'elaborazione in seguito, continuerai da dove hai interrotto',
+    },
+    batchModal: {
+      title: 'Aggiungi blocchi in batch',
+      csvUploadTitle: 'Trascina e rilascia il tuo file CSV qui, o ',
+      browse: 'sfoglia',
+      tip: 'Il file CSV deve rispettare la seguente struttura:',
+      question: 'domanda',
+      answer: 'risposta',
+      contentTitle: 'contenuto del blocco',
+      content: 'contenuto',
+      template: 'Scarica qui il modello',
+      cancel: 'Annulla',
+      run: 'Esegui Batch',
+      runError: 'Esecuzione batch fallita',
+      processing: 'Elaborazione batch in corso',
+      completed: 'Importazione completata',
+      error: 'Errore di importazione',
+      ok: 'OK',
+    },
+  },
+  metadata: {
+    title: 'Metadati',
+    desc: 'L\'etichettatura dei metadati per i documenti consente all\'IA di accedervi in modo tempestivo ed espone la fonte delle referenze per gli utenti.',
+    dateTimeFormat: 'MMMM D, YYYY hh:mm A',
+    docTypeSelectTitle: 'Per favore seleziona un tipo di documento',
+    docTypeChangeTitle: 'Cambia tipo di documento',
+    docTypeSelectWarning:
+      'Se il tipo di documento viene cambiato, i metadati attualmente compilati non saranno più conservati',
+    firstMetaAction: 'Andiamo',
+    placeholder: {
+      add: 'Aggiungi ',
+      select: 'Seleziona ',
+    },
+    source: {
+      upload_file: 'Carica File',
+      notion: 'Sincronizza da Notion',
+      github: 'Sincronizza da Github',
+    },
+    type: {
+      book: 'Libro',
+      webPage: 'Pagina Web',
+      paper: 'Documento',
+      socialMediaPost: 'Post sui Social Media',
+      personalDocument: 'Documento Personale',
+      businessDocument: 'Documento Aziendale',
+      IMChat: 'Chat IM',
+      wikipediaEntry: 'Voce Wikipedia',
+      notion: 'Sincronizza da Notion',
+      github: 'Sincronizza da Github',
+      technicalParameters: 'Parametri Tecnici',
+    },
+    field: {
+      processRule: {
+        processDoc: 'Elabora Documento',
+        segmentRule: 'Regola di Segmentazione',
+        segmentLength: 'Lunghezza dei Segmenti',
+        processClean: 'Pulizia del Testo',
+      },
+      book: {
+        title: 'Titolo',
+        language: 'Lingua',
+        author: 'Autore',
+        publisher: 'Editore',
+        publicationDate: 'Data di Pubblicazione',
+        ISBN: 'ISBN',
+        category: 'Categoria',
+      },
+      webPage: {
+        title: 'Titolo',
+        url: 'URL',
+        language: 'Lingua',
+        authorPublisher: 'Autore/Editore',
+        publishDate: 'Data di Pubblicazione',
+        topicsKeywords: 'Argomenti/Parole Chiave',
+        description: 'Descrizione',
+      },
+      paper: {
+        title: 'Titolo',
+        language: 'Lingua',
+        author: 'Autore',
+        publishDate: 'Data di Pubblicazione',
+        journalConferenceName: 'Nome del Journal/Conferenza',
+        volumeIssuePage: 'Volume/Numero/Pagina',
+        DOI: 'DOI',
+        topicsKeywords: 'Argomenti/Parole Chiave',
+        abstract: 'Abstract',
+      },
+      socialMediaPost: {
+        platform: 'Piattaforma',
+        authorUsername: 'Autore/Username',
+        publishDate: 'Data di Pubblicazione',
+        postURL: 'URL del Post',
+        topicsTags: 'Argomenti/Tag',
+      },
+      personalDocument: {
+        title: 'Titolo',
+        author: 'Autore',
+        creationDate: 'Data di Creazione',
+        lastModifiedDate: 'Data di Ultima Modifica',
+        documentType: 'Tipo di Documento',
+        tagsCategory: 'Tag/Categoria',
+      },
+      businessDocument: {
+        title: 'Titolo',
+        author: 'Autore',
+        creationDate: 'Data di Creazione',
+        lastModifiedDate: 'Data di Ultima Modifica',
+        documentType: 'Tipo di Documento',
+        departmentTeam: 'Dipartimento/Team',
+      },
+      IMChat: {
+        chatPlatform: 'Piattaforma di Chat',
+        chatPartiesGroupName: 'Parti della Chat/Nome del Gruppo',
+        participants: 'Partecipanti',
+        startDate: 'Data di Inizio',
+        endDate: 'Data di Fine',
+        topicsKeywords: 'Argomenti/Parole Chiave',
+        fileType: 'Tipo di File',
+      },
+      wikipediaEntry: {
+        title: 'Titolo',
+        language: 'Lingua',
+        webpageURL: 'URL della Pagina Web',
+        editorContributor: 'Editore/Contributore',
+        lastEditDate: 'Data di Ultima Modifica',
+        summaryIntroduction: 'Sommario/Introduzione',
+      },
+      notion: {
+        title: 'Titolo',
+        language: 'Lingua',
+        author: 'Autore',
+        createdTime: 'Ora di Creazione',
+        lastModifiedTime: 'Ora di Ultima Modifica',
+        url: 'URL',
+        tag: 'Tag',
+        description: 'Descrizione',
+      },
+      github: {
+        repoName: 'Nome del Repo',
+        repoDesc: 'Descrizione del Repo',
+        repoOwner: 'Proprietario del Repo',
+        fileName: 'Nome del File',
+        filePath: 'Percorso del File',
+        programmingLang: 'Linguaggio di Programmazione',
+        url: 'URL',
+        license: 'Licenza',
+        lastCommitTime: 'Ora dell\'Ultimo Commit',
+        lastCommitAuthor: 'Autore dell\'Ultimo Commit',
+      },
+      originInfo: {
+        originalFilename: 'Nome file originale',
+        originalFileSize: 'Dimensione file originale',
+        uploadDate: 'Data di caricamento',
+        lastUpdateDate: 'Data di ultimo aggiornamento',
+        source: 'Fonte',
+      },
+      technicalParameters: {
+        segmentSpecification: 'Specifiche dei segmenti',
+        segmentLength: 'Lunghezza dei segmenti',
+        avgParagraphLength: 'Lunghezza media del paragrafo',
+        paragraphs: 'Paragrafi',
+        hitCount: 'Conteggio recuperi',
+        embeddingTime: 'Tempo di embedding',
+        embeddedSpend: 'Spesa di embedding',
+      },
+    },
+    languageMap: {
+      zh: 'Cinese',
+      en: 'Inglese',
+      es: 'Spagnolo',
+      fr: 'Francese',
+      de: 'Tedesco',
+      ja: 'Giapponese',
+      ko: 'Coreano',
+      ru: 'Russo',
+      ar: 'Arabo',
+      pt: 'Portoghese',
+      it: 'Italiano',
+      nl: 'Olandese',
+      pl: 'Polacco',
+      sv: 'Svedese',
+      tr: 'Turco',
+      he: 'Ebraico',
+      hi: 'Hindi',
+      da: 'Danese',
+      fi: 'Finlandese',
+      no: 'Norvegese',
+      hu: 'Ungherese',
+      el: 'Greco',
+      cs: 'Ceco',
+      th: 'Thailandese',
+      id: 'Indonesiano',
+    },
+    categoryMap: {
+      book: {
+        fiction: 'Narrativa',
+        biography: 'Biografia',
+        history: 'Storia',
+        science: 'Scienza',
+        technology: 'Tecnologia',
+        education: 'Educazione',
+        philosophy: 'Filosofia',
+        religion: 'Religione',
+        socialSciences: 'Scienze Sociali',
+        art: 'Arte',
+        travel: 'Viaggio',
+        health: 'Salute',
+        selfHelp: 'Auto-aiuto',
+        businessEconomics: 'Economia Aziendale',
+        cooking: 'Cucina',
+        childrenYoungAdults: 'Bambini e Giovani Adulti',
+        comicsGraphicNovels: 'Fumetti e Graphic Novels',
+        poetry: 'Poesia',
+        drama: 'Teatro',
+        other: 'Altro',
+      },
+      personalDoc: {
+        notes: 'Note',
+        blogDraft: 'Bozza di Blog',
+        diary: 'Diario',
+        researchReport: 'Rapporto di Ricerca',
+        bookExcerpt: 'Estratto di Libro',
+        schedule: 'Pianificazione',
+        list: 'Lista',
+        projectOverview: 'Panoramica del Progetto',
+        photoCollection: 'Collezione Fotografica',
+        creativeWriting: 'Scrittura Creativa',
+        codeSnippet: 'Frammento di Codice',
+        designDraft: 'Bozza di Design',
+        personalResume: 'Curriculum Vitae',
+        other: 'Altro',
+      },
+      businessDoc: {
+        meetingMinutes: 'Verbale della Riunione',
+        researchReport: 'Rapporto di Ricerca',
+        proposal: 'Proposta',
+        employeeHandbook: 'Manuale del Dipendente',
+        trainingMaterials: 'Materiali di Formazione',
+        requirementsDocument: 'Documento di Requisiti',
+        designDocument: 'Documento di Design',
+        productSpecification: 'Specifiche del Prodotto',
+        financialReport: 'Rapporto Finanziario',
+        marketAnalysis: 'Analisi di Mercato',
+        projectPlan: 'Piano di Progetto',
+        teamStructure: 'Struttura del Team',
+        policiesProcedures: 'Politiche e Procedure',
+        contractsAgreements: 'Contratti e Accordi',
+        emailCorrespondence: 'Corrispondenza Email',
+        other: 'Altro',
+      },
+    },
+  },
+  embedding: {
+    processing: 'Elaborazione embedding...',
+    paused: 'Embedding in pausa',
+    completed: 'Embedding completato',
+    error: 'Errore embedding',
+    docName: 'Elaborazione documento',
+    mode: 'Regola di segmentazione',
+    segmentLength: 'Lunghezza dei segmenti',
+    textCleaning: 'Pre-definizione e pulizia del testo',
+    segments: 'Paragrafi',
+    highQuality: 'Modalità alta qualità',
+    economy: 'Modalità economica',
+    estimate: 'Consumo stimato',
+    stop: 'Ferma elaborazione',
+    resume: 'Riprendi elaborazione',
+    automatic: 'Automatico',
+    custom: 'Personalizzato',
+    previewTip:
+      'L\'anteprima del paragrafo sarà disponibile dopo il completamento dell\'embedding',
+  },
+  segment: {
+    paragraphs: 'Paragrafi',
+    keywords: 'Parole Chiave',
+    addKeyWord: 'Aggiungi parola chiave',
+    keywordError: 'La lunghezza massima della parola chiave è 20',
+    characters: 'caratteri',
+    hitCount: 'Conteggio recuperi',
+    vectorHash: 'Hash del vettore: ',
+    questionPlaceholder: 'aggiungi domanda qui',
+    questionEmpty: 'La domanda non può essere vuota',
+    answerPlaceholder: 'aggiungi risposta qui',
+    answerEmpty: 'La risposta non può essere vuota',
+    contentPlaceholder: 'aggiungi contenuto qui',
+    contentEmpty: 'Il contenuto non può essere vuoto',
+    newTextSegment: 'Nuovo Segmento di Testo',
+    newQaSegment: 'Nuovo Segmento di Domanda & Risposta',
+    delete: 'Eliminare questo blocco?',
+  },
+}
+
+export default translation

+ 29 - 0
web/i18n/it-IT/dataset-hit-testing.ts

@@ -0,0 +1,29 @@
+const translation = {
+  title: 'Test di Recupero',
+  desc: 'Testa l\'effetto di recupero della Conoscenza basato sul testo di query fornito.',
+  dateTimeFormat: 'MM/DD/YYYY hh:mm A',
+  recents: 'Recenti',
+  table: {
+    header: {
+      source: 'Fonte',
+      text: 'Testo',
+      time: 'Ora',
+    },
+  },
+  input: {
+    title: 'Testo di origine',
+    placeholder:
+      'Per favore inserisci un testo, si consiglia una frase dichiarativa breve.',
+    countWarning: 'Fino a 200 caratteri.',
+    indexWarning: 'Solo Conoscenza di alta qualità.',
+    testing: 'Test in corso',
+  },
+  hit: {
+    title: 'PARAGRAFI RECUPERATI',
+    emptyTip: 'I risultati del Test di Recupero verranno mostrati qui',
+  },
+  noRecentTip: 'Nessun risultato di query recente qui',
+  viewChart: 'Visualizza GRAFICO VETTORIALE',
+}
+
+export default translation

+ 40 - 0
web/i18n/it-IT/dataset-settings.ts

@@ -0,0 +1,40 @@
+const translation = {
+  title: 'Impostazioni della Conoscenza',
+  desc: 'Qui puoi modificare le proprietà e i metodi di funzionamento della Conoscenza.',
+  form: {
+    name: 'Nome della Conoscenza',
+    namePlaceholder: 'Per favore inserisci il nome della Conoscenza',
+    nameError: 'Il nome non può essere vuoto',
+    desc: 'Descrizione della Conoscenza',
+    descInfo:
+      'Per favore scrivi una descrizione chiara per delineare il contenuto della Conoscenza. Questa descrizione sarà utilizzata come base per la corrispondenza quando si seleziona tra più Conoscenze per l\'inferenza.',
+    descPlaceholder:
+      'Descrivi cosa c\'è in questa Conoscenza. Una descrizione dettagliata permette all\'IA di accedere al contenuto della Conoscenza in modo tempestivo. Se vuota, Dify utilizzerà la strategia di recupero predefinita.',
+    descWrite: 'Scopri come scrivere una buona descrizione della Conoscenza.',
+    permissions: 'Permessi',
+    permissionsOnlyMe: 'Solo io',
+    permissionsAllMember: 'Tutti i membri del team',
+    permissionsInvitedMembers: 'Membri del team parziali',
+    me: '(Tu)',
+    indexMethod: 'Metodo di Indicizzazione',
+    indexMethodHighQuality: 'Alta Qualità',
+    indexMethodHighQualityTip:
+      'Chiama il modello di Embedding per l\'elaborazione per fornire maggiore accuratezza quando gli utenti fanno query.',
+    indexMethodEconomy: 'Economico',
+    indexMethodEconomyTip:
+      'Usa motori vettoriali offline, indici di parole chiave, ecc. per ridurre l\'accuratezza senza spendere token',
+    embeddingModel: 'Modello di Embedding',
+    embeddingModelTip: 'Per cambiare il modello di embedding, vai alle ',
+    embeddingModelTipLink: 'Impostazioni',
+    retrievalSetting: {
+      title: 'Impostazione di Recupero',
+      learnMore: 'Scopri di più',
+      description: ' sul metodo di recupero.',
+      longDescription:
+        ' sul metodo di recupero, puoi cambiare questo in qualsiasi momento nelle impostazioni della Conoscenza.',
+    },
+    save: 'Salva',
+  },
+}
+
+export default translation

+ 57 - 0
web/i18n/it-IT/dataset.ts

@@ -0,0 +1,57 @@
+const translation = {
+  knowledge: 'Conoscenza',
+  documentCount: ' documenti',
+  wordCount: ' k parole',
+  appCount: ' app collegate',
+  createDataset: 'Crea Conoscenza',
+  createDatasetIntro:
+    'Importa i tuoi dati testuali o scrivi dati in tempo reale tramite Webhook per migliorare il contesto LLM.',
+  deleteDatasetConfirmTitle: 'Eliminare questa Conoscenza?',
+  deleteDatasetConfirmContent:
+    'L\'eliminazione della Conoscenza è irreversibile. Gli utenti non potranno più accedere alla tua Conoscenza e tutte le configurazioni dei prompt e i log verranno eliminati permanentemente.',
+  datasetUsedByApp:
+    'La Conoscenza è utilizzata da alcune app. Le app non potranno più utilizzare questa Conoscenza e tutte le configurazioni dei prompt e i log verranno eliminati permanentemente.',
+  datasetDeleted: 'Conoscenza eliminata',
+  datasetDeleteFailed: 'Eliminazione della Conoscenza fallita',
+  didYouKnow: 'Lo sapevi?',
+  intro1: 'La Conoscenza può essere integrata nell\'applicazione Dify ',
+  intro2: 'come un contesto',
+  intro3: ',',
+  intro4: 'oppure ',
+  intro5: 'può essere creata',
+  intro6: ' come un plug-in di indicizzazione ChatGPT autonomo da pubblicare',
+  unavailable: 'Non disponibile',
+  unavailableTip:
+    'Il modello di embedding non è disponibile, è necessario configurare il modello di embedding predefinito',
+  datasets: 'CONOSCENZA',
+  datasetsApi: 'ACCESSO API',
+  retrieval: {
+    semantic_search: {
+      title: 'Ricerca Vettoriale',
+      description:
+        'Genera embedding delle query e cerca il blocco di testo più simile alla sua rappresentazione vettoriale.',
+    },
+    full_text_search: {
+      title: 'Ricerca Full-Text',
+      description:
+        'Indicizza tutti i termini nel documento, consentendo agli utenti di cercare qualsiasi termine e recuperare il blocco di testo rilevante contenente quei termini.',
+    },
+    hybrid_search: {
+      title: 'Ricerca Ibrida',
+      description:
+        'Esegui contemporaneamente la ricerca full-text e la ricerca vettoriale, riordina per selezionare la migliore corrispondenza per la query dell\'utente. È necessaria la configurazione delle API del modello Rerank.',
+      recommend: 'Consigliato',
+    },
+    invertedIndex: {
+      title: 'Indice Invertito',
+      description:
+        'L\'Indice Invertito è una struttura utilizzata per il recupero efficiente. Organizzato per termini, ogni termine punta ai documenti o alle pagine web che lo contengono.',
+    },
+    change: 'Cambia',
+    changeRetrievalMethod: 'Cambia metodo di recupero',
+  },
+  docsFailedNotice: 'documenti non riusciti a essere indicizzati',
+  retry: 'Riprova',
+}
+
+export default translation

+ 42 - 0
web/i18n/it-IT/explore.ts

@@ -0,0 +1,42 @@
+const translation = {
+  title: 'Esplora',
+  sidebar: {
+    discovery: 'Scoperta',
+    chat: 'Chat',
+    workspace: 'Workspace',
+    action: {
+      pin: 'Fissa',
+      unpin: 'Sblocca',
+      rename: 'Rinomina',
+      delete: 'Elimina',
+    },
+    delete: {
+      title: 'Elimina app',
+      content: 'Sei sicuro di voler eliminare questa app?',
+    },
+  },
+  apps: {
+    title: 'Esplora App di Dify',
+    description:
+      'Usa queste app modello istantaneamente o personalizza le tue app basate sui modelli.',
+    allCategories: 'Consigliato',
+  },
+  appCard: {
+    addToWorkspace: 'Aggiungi a Workspace',
+    customize: 'Personalizza',
+  },
+  appCustomize: {
+    title: 'Crea app da {{name}}',
+    subTitle: 'Icona & nome dell\'app',
+    nameRequired: 'Il nome dell\'app è obbligatorio',
+  },
+  category: {
+    Assistant: 'Assistente',
+    Writing: 'Scrittura',
+    Translate: 'Traduzione',
+    Programming: 'Programmazione',
+    HR: 'Risorse Umane',
+  },
+}
+
+export default translation

+ 4 - 0
web/i18n/it-IT/layout.ts

@@ -0,0 +1,4 @@
+const translation = {
+}
+
+export default translation

+ 85 - 0
web/i18n/it-IT/login.ts

@@ -0,0 +1,85 @@
+const translation = {
+  pageTitle: 'Ehi, iniziamo!👋',
+  welcome: 'Benvenuto su Dify, per favore accedi per continuare.',
+  email: 'Indirizzo email',
+  emailPlaceholder: 'La tua email',
+  password: 'Password',
+  passwordPlaceholder: 'La tua password',
+  name: 'Nome utente',
+  namePlaceholder: 'Il tuo nome utente',
+  forget: 'Hai dimenticato la password?',
+  signBtn: 'Accedi',
+  sso: 'Continua con SSO',
+  installBtn: 'Configura',
+  setAdminAccount: 'Impostazione di un account amministratore',
+  setAdminAccountDesc:
+    'Privilegi massimi per l\'account amministratore, che può essere utilizzato per creare applicazioni e gestire i fornitori di LLM, ecc.',
+  createAndSignIn: 'Crea e accedi',
+  oneMoreStep: 'Un altro passo',
+  createSample:
+    'In base a queste informazioni, creeremo un\'applicazione di esempio per te',
+  invitationCode: 'Codice di invito',
+  invitationCodePlaceholder: 'Il tuo codice di invito',
+  interfaceLanguage: 'Lingua dell\'interfaccia',
+  timezone: 'Fuso orario',
+  go: 'Vai a Dify',
+  sendUsMail:
+    'Inviaci una email con la tua presentazione e gestiremo la richiesta di invito.',
+  acceptPP: 'Ho letto e accetto l\'informativa sulla privacy',
+  reset:
+    'Per favore esegui il seguente comando per reimpostare la tua password',
+  withGitHub: 'Continua con GitHub',
+  withGoogle: 'Continua con Google',
+  rightTitle: 'Sblocca tutto il potenziale di LLM',
+  rightDesc:
+    'Costruisci senza sforzo applicazioni AI visivamente accattivanti, operabili e migliorabili.',
+  tos: 'Termini di servizio',
+  pp: 'Informativa sulla privacy',
+  tosDesc: 'Iscrivendoti, accetti i nostri',
+  goToInit:
+    'Se non hai inizializzato l\'account, vai alla pagina di inizializzazione',
+  donthave: 'Non hai?',
+  invalidInvitationCode: 'Codice di invito non valido',
+  accountAlreadyInited: 'Account già inizializzato',
+  forgotPassword: 'Hai dimenticato la password?',
+  resetLinkSent: 'Link per il reset inviato',
+  sendResetLink: 'Invia link per il reset',
+  backToSignIn: 'Torna al login',
+  forgotPasswordDesc:
+    'Per favore inserisci il tuo indirizzo email per reimpostare la tua password. Ti invieremo una email con le istruzioni su come reimpostare la tua password.',
+  checkEmailForResetLink:
+    'Per favore controlla la tua email per un link per reimpostare la password. Se non compare entro pochi minuti, assicurati di controllare la cartella spam.',
+  passwordChanged: 'Accedi ora',
+  changePassword: 'Cambia Password',
+  changePasswordTip:
+    'Per favore inserisci una nuova password per il tuo account',
+  invalidToken: 'Token non valido o scaduto',
+  confirmPassword: 'Conferma Password',
+  confirmPasswordPlaceholder: 'Conferma la tua nuova password',
+  passwordChangedTip: 'La tua password è stata cambiata con successo',
+  error: {
+    emailEmpty: 'L\'indirizzo email è obbligatorio',
+    emailInValid: 'Per favore inserisci un indirizzo email valido',
+    nameEmpty: 'Il nome è obbligatorio',
+    passwordEmpty: 'La password è obbligatoria',
+    passwordLengthInValid: 'La password deve essere di almeno 8 caratteri',
+    passwordInvalid:
+      'La password deve contenere lettere e numeri, e la lunghezza deve essere maggiore di 8',
+  },
+  license: {
+    tip: 'Prima di avviare Dify Community Edition, leggi su GitHub',
+    link: 'Licenza open-source',
+  },
+  join: 'Unisciti',
+  joinTipStart: 'Invitato a unirti al',
+  joinTipEnd: 'team su Dify',
+  invalid: 'Il link è scaduto',
+  explore: 'Esplora Dify',
+  activatedTipStart: 'Sei entrato nel team',
+  activatedTipEnd: '',
+  activated: 'Accedi ora',
+  adminInitPassword: 'Password di inizializzazione amministratore',
+  validate: 'Convalida',
+}
+
+export default translation

+ 4 - 0
web/i18n/it-IT/register.ts

@@ -0,0 +1,4 @@
+const translation = {
+}
+
+export default translation

+ 29 - 0
web/i18n/it-IT/run-log.ts

@@ -0,0 +1,29 @@
+const translation = {
+  input: 'INPUT',
+  result: 'RISULTATO',
+  detail: 'DETTAGLIO',
+  tracing: 'TRACCIAMENTO',
+  resultPanel: {
+    status: 'STATO',
+    time: 'TEMPO TRASCORSO',
+    tokens: 'TOKEN TOTALI',
+  },
+  meta: {
+    title: 'METADATI',
+    status: 'Stato',
+    version: 'Versione',
+    executor: 'Esecutore',
+    startTime: 'Ora di Inizio',
+    time: 'Tempo Trascorso',
+    tokens: 'Token Totali',
+    steps: 'Fasi Eseguite',
+  },
+  resultEmpty: {
+    title: 'Questa esecuzione ha prodotto solo output in formato JSON,',
+    tipLeft: 'per favore vai al ',
+    link: 'pannello dei dettagli',
+    tipRight: ' per visualizzarlo.',
+  },
+}
+
+export default translation

+ 76 - 0
web/i18n/it-IT/share-app.ts

@@ -0,0 +1,76 @@
+const translation = {
+  common: {
+    welcome: '',
+    appUnavailable: 'L\'app non è disponibile',
+    appUnkonwError: 'L\'app non è disponibile',
+  },
+  chat: {
+    newChat: 'Nuova chat',
+    pinnedTitle: 'Fissati',
+    unpinnedTitle: 'Chat',
+    newChatDefaultName: 'Nuova conversazione',
+    resetChat: 'Reimposta conversazione',
+    powerBy: 'Powered by',
+    prompt: 'Prompt',
+    privatePromptConfigTitle: 'Impostazioni conversazione',
+    publicPromptConfigTitle: 'Prompt iniziale',
+    configStatusDes:
+      'Prima di iniziare, puoi modificare le impostazioni della conversazione',
+    configDisabled:
+      'Le impostazioni della sessione precedente sono state utilizzate per questa sessione.',
+    startChat: 'Inizia Chat',
+    privacyPolicyLeft: 'Per favore leggi la ',
+    privacyPolicyMiddle: 'politica sulla privacy',
+    privacyPolicyRight: ' fornita dallo sviluppatore dell\'app.',
+    deleteConversation: {
+      title: 'Elimina conversazione',
+      content: 'Sei sicuro di voler eliminare questa conversazione?',
+    },
+    tryToSolve: 'Prova a risolvere',
+    temporarySystemIssue: 'Spiacente, problema temporaneo del sistema.',
+  },
+  generation: {
+    tabs: {
+      create: 'Esegui una volta',
+      batch: 'Esegui batch',
+      saved: 'Salvato',
+    },
+    savedNoData: {
+      title: 'Non hai ancora salvato un risultato!',
+      description:
+        'Inizia a generare contenuti e trova i tuoi risultati salvati qui.',
+      startCreateContent: 'Inizia a creare contenuti',
+    },
+    title: 'Completamento AI',
+    queryTitle: 'Contenuto della query',
+    completionResult: 'Risultato del completamento',
+    queryPlaceholder: 'Scrivi il contenuto della tua query...',
+    run: 'Esegui',
+    copy: 'Copia',
+    resultTitle: 'Completamento AI',
+    noData: 'L\'AI ti darà ciò che desideri qui.',
+    csvUploadTitle: 'Trascina e rilascia il tuo file CSV qui, oppure ',
+    browse: 'sfoglia',
+    csvStructureTitle: 'Il file CSV deve rispettare la seguente struttura:',
+    downloadTemplate: 'Scarica qui il modello',
+    field: 'Campo',
+    batchFailed: {
+      info: '{{num}} esecuzioni fallite',
+      retry: 'Riprova',
+      outputPlaceholder: 'Nessun contenuto di output',
+    },
+    errorMsg: {
+      empty: 'Per favore inserisci contenuto nel file caricato.',
+      fileStructNotMatch:
+        'Il file CSV caricato non corrisponde alla struttura.',
+      emptyLine: 'Riga {{rowIndex}} è vuota',
+      invalidLine:
+        'Riga {{rowIndex}}: il valore di {{varName}} non può essere vuoto',
+      moreThanMaxLengthLine:
+        'Riga {{rowIndex}}: il valore di {{varName}} non può essere superiore a {{maxLength}} caratteri',
+      atLeastOne: 'Per favore inserisci almeno una riga nel file caricato.',
+    },
+  },
+}
+
+export default translation

+ 163 - 0
web/i18n/it-IT/tools.ts

@@ -0,0 +1,163 @@
+const translation = {
+  title: 'Strumenti',
+  createCustomTool: 'Crea Strumento Personalizzato',
+  customToolTip: 'Scopri di più sugli strumenti personalizzati di Dify',
+  type: {
+    all: 'Tutti',
+    builtIn: 'Integrato',
+    custom: 'Personalizzato',
+    workflow: 'Flusso di lavoro',
+  },
+  contribute: {
+    line1: 'Sono interessato a ',
+    line2: 'contribuire con strumenti a Dify.',
+    viewGuide: 'Visualizza la guida',
+  },
+  author: 'Di',
+  auth: {
+    unauthorized: 'Per Autorizzare',
+    authorized: 'Autorizzato',
+    setup: 'Configura l\'autorizzazione per utilizzare',
+    setupModalTitle: 'Configura Autorizzazione',
+    setupModalTitleDescription:
+      'Dopo aver configurato le credenziali, tutti i membri all\'interno del workspace possono utilizzare questo strumento durante l\'orchestrazione delle applicazioni.',
+  },
+  includeToolNum: '{{num}} strumenti inclusi',
+  addTool: 'Aggiungi Strumento',
+  addToolModal: {
+    type: 'tipo',
+    category: 'categoria',
+    add: 'aggiungi',
+    added: 'aggiunto',
+    manageInTools: 'Gestisci in Strumenti',
+    emptyTitle: 'Nessun strumento di flusso di lavoro disponibile',
+    emptyTip: 'Vai a `Flusso di lavoro -> Pubblica come Strumento`',
+  },
+  createTool: {
+    title: 'Crea Strumento Personalizzato',
+    editAction: 'Configura',
+    editTitle: 'Modifica Strumento Personalizzato',
+    name: 'Nome',
+    toolNamePlaceHolder: 'Inserisci il nome dello strumento',
+    nameForToolCall: 'Nome chiamata strumento',
+    nameForToolCallPlaceHolder:
+      'Usato per il riconoscimento della macchina, ad esempio getCurrentWeather, list_pets',
+    nameForToolCallTip: 'Supporta solo numeri, lettere e underscore.',
+    description: 'Descrizione',
+    descriptionPlaceholder:
+      'Breve descrizione dello scopo dello strumento, ad esempio, ottenere la temperatura per una posizione specifica.',
+    schema: 'Schema',
+    schemaPlaceHolder: 'Inserisci qui il tuo schema OpenAPI',
+    viewSchemaSpec: 'Visualizza la Specifica OpenAPI-Swagger',
+    importFromUrl: 'Importa da URL',
+    importFromUrlPlaceHolder: 'https://...',
+    urlError: 'Per favore inserisci un URL valido',
+    examples: 'Esempi',
+    exampleOptions: {
+      json: 'Weather(JSON)',
+      yaml: 'Pet Store(YAML)',
+      blankTemplate: 'Modello Vuoto',
+    },
+    availableTools: {
+      title: 'Strumenti Disponibili',
+      name: 'Nome',
+      description: 'Descrizione',
+      method: 'Metodo',
+      path: 'Percorso',
+      action: 'Azioni',
+      test: 'Test',
+    },
+    authMethod: {
+      title: 'Metodo di autorizzazione',
+      type: 'Tipo di autorizzazione',
+      keyTooltip:
+        'Http Header Key, Puoi lasciarlo come `Authorization` se non sai cos\'è o impostarlo su un valore personalizzato',
+      types: {
+        none: 'Nessuno',
+        api_key: 'API Key',
+        apiKeyPlaceholder: 'Nome dell\'intestazione HTTP per API Key',
+        apiValuePlaceholder: 'Inserisci API Key',
+      },
+      key: 'Chiave',
+      value: 'Valore',
+    },
+    authHeaderPrefix: {
+      title: 'Tipo di Auth',
+      types: {
+        basic: 'Basic',
+        bearer: 'Bearer',
+        custom: 'Custom',
+      },
+    },
+    privacyPolicy: 'Informativa sulla privacy',
+    privacyPolicyPlaceholder:
+      'Per favore inserisci l\'informativa sulla privacy',
+    toolInput: {
+      title: 'Input Strumento',
+      name: 'Nome',
+      required: 'Richiesto',
+      method: 'Metodo',
+      methodSetting: 'Impostazione',
+      methodSettingTip: 'L\'utente compila la configurazione dello strumento',
+      methodParameter: 'Parametro',
+      methodParameterTip: 'LLM compila durante l\'inferenza',
+      label: 'Tag',
+      labelPlaceholder: 'Scegli tag (opzionale)',
+      description: 'Descrizione',
+      descriptionPlaceholder: 'Descrizione del significato del parametro',
+    },
+    customDisclaimer: 'Disclaimer personalizzato',
+    customDisclaimerPlaceholder:
+      'Per favore inserisci disclaimer personalizzato',
+    confirmTitle: 'Confermare per salvare?',
+    confirmTip: 'Le app che utilizzano questo strumento saranno influenzate',
+    deleteToolConfirmTitle: 'Eliminare questo Strumento?',
+    deleteToolConfirmContent:
+      'L\'eliminazione dello Strumento è irreversibile. Gli utenti non potranno più accedere al tuo Strumento.',
+  },
+  test: {
+    title: 'Test',
+    parametersValue: 'Parametri & Valore',
+    parameters: 'Parametri',
+    value: 'Valore',
+    testResult: 'Risultati del Test',
+    testResultPlaceholder: 'I risultati del test verranno mostrati qui',
+  },
+  thought: {
+    using: 'Utilizzando',
+    used: 'Usato',
+    requestTitle: 'Richiesta a',
+    responseTitle: 'Risposta da',
+  },
+  setBuiltInTools: {
+    info: 'Info',
+    setting: 'Impostazione',
+    toolDescription: 'Descrizione dello strumento',
+    parameters: 'parametri',
+    string: 'stringa',
+    number: 'numero',
+    required: 'Richiesto',
+    infoAndSetting: 'Info & Impostazioni',
+  },
+  noCustomTool: {
+    title: 'Nessun strumento personalizzato!',
+    content:
+      'Aggiungi e gestisci i tuoi strumenti personalizzati qui per costruire app AI.',
+    createTool: 'Crea Strumento',
+  },
+  noSearchRes: {
+    title: 'Spiacenti, nessun risultato!',
+    content:
+      'Non abbiamo trovato strumenti che corrispondono alla tua ricerca.',
+    reset: 'Reimposta Ricerca',
+  },
+  builtInPromptTitle: 'Prompt',
+  toolRemoved: 'Strumento rimosso',
+  notAuthorized: 'Strumento non autorizzato',
+  howToGet: 'Come ottenere',
+  openInStudio: 'Apri in Studio',
+  toolNameUsageTip:
+    'Nome chiamata strumento per il ragionamento e il prompting dell\'agente',
+}
+
+export default translation

+ 504 - 0
web/i18n/it-IT/workflow.ts

@@ -0,0 +1,504 @@
+const translation = {
+  common: {
+    undo: 'Annulla',
+    redo: 'Ripeti',
+    editing: 'Modifica in corso',
+    autoSaved: 'Salvataggio automatico',
+    unpublished: 'Non pubblicato',
+    published: 'Pubblicato',
+    publish: 'Pubblica',
+    update: 'Aggiorna',
+    run: 'Esegui',
+    running: 'In esecuzione',
+    inRunMode: 'In modalità di esecuzione',
+    inPreview: 'In anteprima',
+    inPreviewMode: 'In modalità anteprima',
+    preview: 'Anteprima',
+    viewRunHistory: 'Visualizza cronologia esecuzioni',
+    runHistory: 'Cronologia esecuzioni',
+    goBackToEdit: 'Torna all\'editor',
+    conversationLog: 'Registro conversazioni',
+    features: 'Caratteristiche',
+    debugAndPreview: 'Debug e Anteprima',
+    restart: 'Riavvia',
+    currentDraft: 'Bozza corrente',
+    currentDraftUnpublished: 'Bozza corrente non pubblicata',
+    latestPublished: 'Ultimo pubblicato',
+    publishedAt: 'Pubblicato',
+    restore: 'Ripristina',
+    runApp: 'Esegui App',
+    batchRunApp: 'Esegui App in Batch',
+    accessAPIReference: 'Accedi alla Riferimento API',
+    embedIntoSite: 'Incorpora nel Sito',
+    addTitle: 'Aggiungi titolo...',
+    addDescription: 'Aggiungi descrizione...',
+    noVar: 'Nessuna variabile',
+    searchVar: 'Cerca variabile',
+    variableNamePlaceholder: 'Nome variabile',
+    setVarValuePlaceholder: 'Imposta variabile',
+    needConnecttip: 'Questo passaggio non è collegato a nulla',
+    maxTreeDepth: 'Limite massimo di {{depth}} nodi per ramo',
+    needEndNode: 'Deve essere aggiunto il blocco di Fine',
+    needAnswerNode: 'Deve essere aggiunto il blocco di Risposta',
+    workflowProcess: 'Processo di flusso di lavoro',
+    notRunning: 'Non ancora in esecuzione',
+    previewPlaceholder:
+      'Inserisci contenuto nella casella sottostante per avviare il debug del Chatbot',
+    effectVarConfirm: {
+      title: 'Rimuovi Variabile',
+      content:
+        'La variabile è utilizzata in altri nodi. Vuoi comunque rimuoverla?',
+    },
+    insertVarTip: 'Premi il tasto \'/\' per inserire rapidamente',
+    processData: 'Elabora Dati',
+    input: 'Input',
+    output: 'Output',
+    jinjaEditorPlaceholder: 'Digita \'/\' o \'{\' per inserire variabile',
+    viewOnly: 'Solo visualizzazione',
+    showRunHistory: 'Mostra cronologia esecuzioni',
+    enableJinja: 'Abilita supporto template Jinja',
+    learnMore: 'Scopri di più',
+    copy: 'Copia',
+    duplicate: 'Duplica',
+    addBlock: 'Aggiungi Blocco',
+    pasteHere: 'Incolla Qui',
+    pointerMode: 'Modalità Puntatore',
+    handMode: 'Modalità Mano',
+    model: 'Modello',
+    workflowAsTool: 'Flusso di lavoro come Strumento',
+    configureRequired: 'Configurazione Richiesta',
+    configure: 'Configura',
+    manageInTools: 'Gestisci in Strumenti',
+    workflowAsToolTip:
+      'È richiesta una nuova configurazione dello strumento dopo l\'aggiornamento del flusso di lavoro.',
+    viewDetailInTracingPanel: 'Visualizza dettagli',
+    syncingData: 'Sincronizzazione dei dati in corso, solo pochi secondi.',
+    importDSL: 'Importa DSL',
+    importDSLTip:
+      'La bozza corrente verrà sovrascritta. Esporta il flusso di lavoro come backup prima di importare.',
+    backupCurrentDraft: 'Backup Bozza Corrente',
+    chooseDSL: 'Scegli file DSL(yml)',
+    overwriteAndImport: 'Sovrascrivi e Importa',
+    importFailure: 'Importazione fallita',
+    importSuccess: 'Importazione riuscita',
+  },
+  changeHistory: {
+    title: 'Cronologia Modifiche',
+    placeholder: 'Non hai ancora modificato nulla',
+    clearHistory: 'Cancella Cronologia',
+    hint: 'Suggerimento',
+    hintText:
+      'Le tue azioni di modifica vengono tracciate in una cronologia delle modifiche, che viene memorizzata sul tuo dispositivo per tutta la durata di questa sessione. Questa cronologia verrà cancellata quando lascerai l\'editor.',
+    stepBackward_one: '{{count}} passo indietro',
+    stepBackward_other: '{{count}} passi indietro',
+    stepForward_one: '{{count}} passo avanti',
+    stepForward_other: '{{count}} passi avanti',
+    sessionStart: 'Inizio sessione',
+    currentState: 'Stato attuale',
+    nodeTitleChange: 'Titolo del blocco modificato',
+    nodeDescriptionChange: 'Descrizione del blocco modificata',
+    nodeDragStop: 'Blocco spostato',
+    nodeChange: 'Blocco modificato',
+    nodeConnect: 'Blocco collegato',
+    nodePaste: 'Blocco incollato',
+    nodeDelete: 'Blocco eliminato',
+    nodeAdd: 'Blocco aggiunto',
+    nodeResize: 'Blocco ridimensionato',
+    noteAdd: 'Nota aggiunta',
+    noteChange: 'Nota modificata',
+    noteDelete: 'Nota eliminata',
+    edgeDelete: 'Blocco scollegato',
+  },
+  errorMsg: {
+    fieldRequired: '{{field}} è richiesto',
+    authRequired: 'È richiesta l\'autorizzazione',
+    invalidJson: '{{field}} è un JSON non valido',
+    fields: {
+      variable: 'Nome Variabile',
+      variableValue: 'Valore Variabile',
+      code: 'Codice',
+      model: 'Modello',
+      rerankModel: 'Modello Rerank',
+    },
+    invalidVariable: 'Variabile non valida',
+  },
+  singleRun: {
+    testRun: 'Esecuzione Test ',
+    startRun: 'Avvia Esecuzione',
+    running: 'In esecuzione',
+    testRunIteration: 'Iterazione Esecuzione Test',
+    back: 'Indietro',
+    iteration: 'Iterazione',
+  },
+  tabs: {
+    'searchBlock': 'Cerca blocco',
+    'blocks': 'Blocchi',
+    'tools': 'Strumenti',
+    'allTool': 'Tutti',
+    'builtInTool': 'Integrato',
+    'customTool': 'Personalizzato',
+    'workflowTool': 'Flusso di lavoro',
+    'question-understand': 'Comprensione Domanda',
+    'logic': 'Logica',
+    'transform': 'Trasforma',
+    'utilities': 'Utility',
+    'noResult': 'Nessuna corrispondenza trovata',
+  },
+  blocks: {
+    'start': 'Inizio',
+    'end': 'Fine',
+    'answer': 'Risposta',
+    'llm': 'LLM',
+    'knowledge-retrieval': 'Recupero Conoscenza',
+    'question-classifier': 'Classificatore Domande',
+    'if-else': 'SE/ALTRIMENTI',
+    'code': 'Codice',
+    'template-transform': 'Template',
+    'http-request': 'Richiesta HTTP',
+    'variable-assigner': 'Assegnatore Variabili',
+    'variable-aggregator': 'Aggregatore Variabili',
+    'iteration-start': 'Inizio Iterazione',
+    'iteration': 'Iterazione',
+    'parameter-extractor': 'Estrattore Parametri',
+  },
+  blocksAbout: {
+    'start': 'Definisci i parametri iniziali per l\'avvio di un flusso di lavoro',
+    'end': 'Definisci la fine e il tipo di risultato di un flusso di lavoro',
+    'answer': 'Definisci il contenuto della risposta di una conversazione chat',
+    'llm': 'Invoca modelli di linguaggio di grandi dimensioni per rispondere a domande o elaborare il linguaggio naturale',
+    'knowledge-retrieval':
+      'Ti consente di interrogare il contenuto del testo relativo alle domande dell\'utente dalla Conoscenza',
+    'question-classifier':
+      'Definisci le condizioni di classificazione delle domande dell\'utente, LLM può definire come prosegue la conversazione in base alla descrizione della classificazione',
+    'if-else':
+      'Ti consente di dividere il flusso di lavoro in due rami basati su condizioni se/altrimenti',
+    'code': 'Esegui un pezzo di codice Python o NodeJS per implementare la logica personalizzata',
+    'template-transform':
+      'Converti i dati in stringa usando la sintassi del template Jinja',
+    'http-request':
+      'Consenti l\'invio di richieste server tramite il protocollo HTTP',
+    'variable-assigner':
+      'Aggrega variabili multi-ramo in una singola variabile per la configurazione unificata dei nodi a valle.',
+    'variable-aggregator':
+      'Aggrega variabili multi-ramo in una singola variabile per la configurazione unificata dei nodi a valle.',
+    'iteration':
+      'Esegui più passaggi su un oggetto lista fino a quando tutti i risultati non sono stati prodotti.',
+    'parameter-extractor':
+      'Usa LLM per estrarre parametri strutturati dal linguaggio naturale per invocazioni di strumenti o richieste HTTP.',
+  },
+  operator: {
+    zoomIn: 'Zoom In',
+    zoomOut: 'Zoom Out',
+    zoomTo50: 'Zoom al 50%',
+    zoomTo100: 'Zoom al 100%',
+    zoomToFit: 'Zoom per Adattare',
+  },
+  panel: {
+    userInputField: 'Campo di Input Utente',
+    changeBlock: 'Cambia Blocco',
+    helpLink: 'Link di Aiuto',
+    about: 'Informazioni',
+    createdBy: 'Creato da ',
+    nextStep: 'Prossimo Passo',
+    addNextStep: 'Aggiungi il prossimo blocco in questo flusso di lavoro',
+    selectNextStep: 'Seleziona Prossimo Blocco',
+    runThisStep: 'Esegui questo passo',
+    checklist: 'Checklist',
+    checklistTip:
+      'Assicurati che tutti i problemi siano risolti prima di pubblicare',
+    checklistResolved: 'Tutti i problemi sono risolti',
+    organizeBlocks: 'Organizza blocchi',
+    change: 'Cambia',
+  },
+  nodes: {
+    common: {
+      outputVars: 'Variabili di Output',
+      insertVarTip: 'Inserisci Variabile',
+      memory: {
+        memory: 'Memoria',
+        memoryTip: 'Impostazioni memoria chat',
+        windowSize: 'Dimensione Finestra',
+        conversationRoleName: 'Nome Ruolo Conversazione',
+        user: 'Prefisso Utente',
+        assistant: 'Prefisso Assistente',
+      },
+      memories: {
+        title: 'Memorie',
+        tip: 'Memoria chat',
+        builtIn: 'Integrato',
+      },
+    },
+    start: {
+      required: 'richiesto',
+      inputField: 'Campo di Input',
+      builtInVar: 'Variabili Integrate',
+      outputVars: {
+        query: 'Input Utente',
+        memories: {
+          des: 'Cronologia conversazioni',
+          type: 'tipo di messaggio',
+          content: 'contenuto del messaggio',
+        },
+        files: 'Elenco file',
+      },
+      noVarTip:
+        'Imposta gli input che possono essere utilizzati nel Flusso di lavoro',
+    },
+    end: {
+      outputs: 'Output',
+      output: {
+        type: 'tipo di output',
+        variable: 'variabile di output',
+      },
+      type: {
+        'none': 'Nessuno',
+        'plain-text': 'Testo Semplice',
+        'structured': 'Strutturato',
+      },
+    },
+    answer: {
+      answer: 'Risposta',
+      outputVars: 'Variabili di Output',
+    },
+    llm: {
+      model: 'modello',
+      variables: 'variabili',
+      context: 'contesto',
+      contextTooltip: 'Puoi importare Conoscenza come contesto',
+      notSetContextInPromptTip:
+        'Per abilitare la funzionalità di contesto, compila la variabile del contesto nel PROMPT.',
+      prompt: 'prompt',
+      roleDescription: {
+        system: 'Fornisci istruzioni di alto livello per la conversazione',
+        user: 'Fornisci istruzioni, query o qualsiasi input basato su testo al modello',
+        assistant: 'Le risposte del modello basate sui messaggi dell\'utente',
+      },
+      addMessage: 'Aggiungi Messaggio',
+      vision: 'vision',
+      files: 'File',
+      resolution: {
+        name: 'Risoluzione',
+        high: 'Alta',
+        low: 'Bassa',
+      },
+      outputVars: {
+        output: 'Genera contenuto',
+        usage: 'Informazioni sull\'utilizzo del modello',
+      },
+      singleRun: {
+        variable: 'Variabile',
+      },
+      sysQueryInUser: 'sys.query nel messaggio utente è richiesto',
+    },
+    knowledgeRetrieval: {
+      queryVariable: 'Variabile Query',
+      knowledge: 'Conoscenza',
+      outputVars: {
+        output: 'Dati segmentati di recupero',
+        content: 'Contenuto segmentato',
+        title: 'Titolo segmentato',
+        icon: 'Icona segmentata',
+        url: 'URL segmentato',
+        metadata: 'Altri metadati',
+      },
+    },
+    http: {
+      inputVars: 'Variabili di Input',
+      api: 'API',
+      apiPlaceholder: 'Inserisci URL, digita ‘/’ per inserire variabile',
+      notStartWithHttp: 'L\'API deve iniziare con http:// o https://',
+      key: 'Chiave',
+      value: 'Valore',
+      bulkEdit: 'Modifica di massa',
+      keyValueEdit: 'Modifica Chiave-Valore',
+      headers: 'Intestazioni',
+      params: 'Parametri',
+      body: 'Corpo',
+      outputVars: {
+        body: 'Contenuto Risposta',
+        statusCode: 'Codice Stato Risposta',
+        headers: 'Elenco Intestazioni Risposta JSON',
+        files: 'Elenco File',
+      },
+      authorization: {
+        'authorization': 'Autorizzazione',
+        'authorizationType': 'Tipo di Autorizzazione',
+        'no-auth': 'Nessuno',
+        'api-key': 'API-Key',
+        'auth-type': 'Tipo Auth',
+        'basic': 'Basic',
+        'bearer': 'Bearer',
+        'custom': 'Custom',
+        'api-key-title': 'API Key',
+        'header': 'Intestazione',
+      },
+      insertVarPlaceholder: 'digita \'/\' per inserire variabile',
+      timeout: {
+        title: 'Timeout',
+        connectLabel: 'Timeout Connessione',
+        connectPlaceholder: 'Inserisci timeout connessione in secondi',
+        readLabel: 'Timeout Lettura',
+        readPlaceholder: 'Inserisci timeout lettura in secondi',
+        writeLabel: 'Timeout Scrittura',
+        writePlaceholder: 'Inserisci timeout scrittura in secondi',
+      },
+    },
+    code: {
+      inputVars: 'Variabili di Input',
+      outputVars: 'Variabili di Output',
+      advancedDependencies: 'Dipendenze Avanzate',
+      advancedDependenciesTip:
+        'Aggiungi alcune dipendenze precaricate che richiedono più tempo per essere consumate o che non sono predefinite qui',
+      searchDependencies: 'Cerca Dipendenze',
+    },
+    templateTransform: {
+      inputVars: 'Variabili di Input',
+      code: 'Codice',
+      codeSupportTip: 'Supporta solo Jinja2',
+      outputVars: {
+        output: 'Contenuto trasformato',
+      },
+    },
+    ifElse: {
+      if: 'Se',
+      else: 'Altrimenti',
+      elseDescription:
+        'Utilizzato per definire la logica che dovrebbe essere eseguita quando la condizione se non è soddisfatta.',
+      and: 'e',
+      or: 'o',
+      operator: 'Operatore',
+      notSetVariable: 'Si prega di impostare prima la variabile',
+      comparisonOperator: {
+        'contains': 'contiene',
+        'not contains': 'non contiene',
+        'start with': 'inizia con',
+        'end with': 'finisce con',
+        'is': 'è',
+        'is not': 'non è',
+        'empty': 'è vuoto',
+        'not empty': 'non è vuoto',
+        'null': 'è nullo',
+        'not null': 'non è nullo',
+      },
+      enterValue: 'Inserisci valore',
+      addCondition: 'Aggiungi Condizione',
+      conditionNotSetup: 'Condizione NON impostata',
+      selectVariable: 'Seleziona variabile...',
+    },
+    variableAssigner: {
+      title: 'Assegna variabili',
+      outputType: 'Tipo di Output',
+      varNotSet: 'Variabile non impostata',
+      noVarTip: 'Aggiungi le variabili da assegnare',
+      type: {
+        string: 'Stringa',
+        number: 'Numero',
+        object: 'Oggetto',
+        array: 'Array',
+      },
+      aggregationGroup: 'Gruppo di Aggregazione',
+      aggregationGroupTip:
+        'Abilitando questa funzione, l\'aggregatore di variabili potrà aggregare più set di variabili.',
+      addGroup: 'Aggiungi Gruppo',
+      outputVars: {
+        varDescribe: 'Output {{groupName}}',
+      },
+      setAssignVariable: 'Imposta variabile assegnata',
+    },
+    tool: {
+      toAuthorize: 'Per autorizzare',
+      inputVars: 'Variabili di Input',
+      outputVars: {
+        text: 'contenuto generato dallo strumento',
+        files: {
+          title: 'file generati dallo strumento',
+          type: 'Tipo supportato. Attualmente supporta solo immagini',
+          transfer_method:
+            'Metodo di trasferimento. Il valore è remote_url o local_file',
+          url: 'URL immagine',
+          upload_file_id: 'ID file caricato',
+        },
+        json: 'json generato dallo strumento',
+      },
+    },
+    questionClassifiers: {
+      model: 'modello',
+      inputVars: 'Variabili di Input',
+      outputVars: {
+        className: 'Nome Classe',
+      },
+      class: 'Classe',
+      classNamePlaceholder: 'Scrivi il nome della tua classe',
+      advancedSetting: 'Impostazione Avanzata',
+      topicName: 'Nome Argomento',
+      topicPlaceholder: 'Scrivi il nome del tuo argomento',
+      addClass: 'Aggiungi Classe',
+      instruction: 'Istruzione',
+      instructionTip:
+        'Inserisci istruzioni aggiuntive per aiutare il classificatore di domande a capire meglio come categorizzare le domande.',
+      instructionPlaceholder: 'Scrivi la tua istruzione',
+    },
+    parameterExtractor: {
+      inputVar: 'Variabile di Input',
+      extractParameters: 'Estrai Parametri',
+      importFromTool: 'Importa dagli strumenti',
+      addExtractParameter: 'Aggiungi Parametro Estratto',
+      addExtractParameterContent: {
+        name: 'Nome',
+        namePlaceholder: 'Nome Parametro Estratto',
+        type: 'Tipo',
+        typePlaceholder: 'Tipo Parametro Estratto',
+        description: 'Descrizione',
+        descriptionPlaceholder: 'Descrizione Parametro Estratto',
+        required: 'Richiesto',
+        requiredContent:
+          'Richiesto viene utilizzato solo come riferimento per l\'inferenza del modello, e non per la convalida obbligatoria dell\'output del parametro.',
+      },
+      extractParametersNotSet: 'Parametri Estratti non impostati',
+      instruction: 'Istruzione',
+      instructionTip:
+        'Inserisci istruzioni aggiuntive per aiutare l\'estrattore di parametri a capire come estrarre i parametri.',
+      advancedSetting: 'Impostazione Avanzata',
+      reasoningMode: 'Modalità di ragionamento',
+      reasoningModeTip:
+        'Puoi scegliere la modalità di ragionamento appropriata in base alla capacità del modello di rispondere alle istruzioni per la chiamata delle funzioni o i prompt.',
+      isSuccess:
+        'È successo. In caso di successo il valore è 1, in caso di fallimento il valore è 0.',
+      errorReason: 'Motivo dell\'errore',
+    },
+    iteration: {
+      deleteTitle: 'Eliminare Nodo Iterazione?',
+      deleteDesc:
+        'Eliminando il nodo iterazione verranno eliminati tutti i nodi figlio',
+      input: 'Input',
+      output: 'Variabili di Output',
+      iteration_one: '{{count}} Iterazione',
+      iteration_other: '{{count}} Iterazioni',
+      currentIteration: 'Iterazione Corrente',
+    },
+    note: {
+      addNote: 'Aggiungi Nota',
+      editor: {
+        placeholder: 'Scrivi la tua nota...',
+        small: 'Piccolo',
+        medium: 'Medio',
+        large: 'Grande',
+        bold: 'Grassetto',
+        italic: 'Corsivo',
+        strikethrough: 'Barrato',
+        link: 'Link',
+        openLink: 'Apri',
+        unlink: 'Rimuovi link',
+        enterUrl: 'Inserisci URL...',
+        invalidUrl: 'URL non valido',
+        bulletList: 'Elenco puntato',
+        showAuthor: 'Mostra Autore',
+      },
+    },
+  },
+  tracing: {
+    stopBy: 'Interrotto da {{user}}',
+  },
+}
+
+export default translation

+ 23 - 11
web/i18n/language.ts

@@ -49,19 +49,31 @@ export const NOTICE_I18N = {
     pl_PL: 'Ważne ogłoszenie',
     uk_UA: 'Важливе повідомлення',
     vi_VN: 'Thông báo quan trọng',
+    it_IT: 'Avviso Importante',
   },
   desc: {
-    en_US: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
-    zh_Hans: '为了有效提升数据检索能力及稳定性,Dify 将于 2023 年 8 月 29 日 03:00 至 08:00 期间进行服务升级,届时 Dify 云端版及应用将无法访问。感谢您的耐心与支持。',
-    pt_BR: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
-    es_ES: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
-    fr_FR: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
-    de_DE: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
-    ja_JP: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
-    ko_KR: '시스템이 업그레이드를 위해 UTC 시간대로 8월 28일 19:00 ~ 24:00에 사용 불가될 예정입니다. 질문이 있으시면 지원 팀에 연락주세요 (support@dify.ai). 최선을 다해 답변해드리겠습니다.',
-    pl_PL: 'Nasz system będzie niedostępny od 19:00 do 24:00 UTC 28 sierpnia w celu aktualizacji. W przypadku pytań prosimy o kontakt z naszym zespołem wsparcia (support@dify.ai). Doceniamy Twoją cierpliwość.',
-    uk_UA: 'Наша система буде недоступна з 19:00 до 24:00 UTC 28 серпня для оновлення. Якщо у вас виникнуть запитання, будь ласка, зв’яжіться з нашою службою підтримки (support@dify.ai). Дякуємо за терпіння.',
-    vi_VN: 'Hệ thống của chúng tôi sẽ ngừng hoạt động từ 19:00 đến 24:00 UTC vào ngày 28 tháng 8 để nâng cấp. Nếu có thắc mắc, vui lòng liên hệ với nhóm hỗ trợ của chúng tôi (support@dify.ai). Chúng tôi đánh giá cao sự kiên nhẫn của bạn.',
+    en_US:
+      'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
+    zh_Hans:
+      '为了有效提升数据检索能力及稳定性,Dify 将于 2023 年 8 月 29 日 03:00 至 08:00 期间进行服务升级,届时 Dify 云端版及应用将无法访问。感谢您的耐心与支持。',
+    pt_BR:
+      'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
+    es_ES:
+      'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
+    fr_FR:
+      'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
+    de_DE:
+      'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
+    ja_JP:
+      'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.',
+    ko_KR:
+      '시스템이 업그레이드를 위해 UTC 시간대로 8월 28일 19:00 ~ 24:00에 사용 불가될 예정입니다. 질문이 있으시면 지원 팀에 연락주세요 (support@dify.ai). 최선을 다해 답변해드리겠습니다.',
+    pl_PL:
+      'Nasz system będzie niedostępny od 19:00 do 24:00 UTC 28 sierpnia w celu aktualizacji. W przypadku pytań prosimy o kontakt z naszym zespołem wsparcia (support@dify.ai). Doceniamy Twoją cierpliwość.',
+    uk_UA:
+      'Наша система буде недоступна з 19:00 до 24:00 UTC 28 серпня для оновлення. Якщо у вас виникнуть запитання, будь ласка, зв’яжіться з нашою службою підтримки (support@dify.ai). Дякуємо за терпіння.',
+    vi_VN:
+      'Hệ thống của chúng tôi sẽ ngừng hoạt động từ 19:00 đến 24:00 UTC vào ngày 28 tháng 8 để nâng cấp. Nếu có thắc mắc, vui lòng liên hệ với nhóm hỗ trợ của chúng tôi (support@dify.ai). Chúng tôi đánh giá cao sự kiên nhẫn của bạn.',
   },
   href: '#',
 }

+ 1 - 1
web/i18n/languages.json

@@ -75,7 +75,7 @@
       "name": "Italiano (Italia)",
       "prompt_name": "Italian",
       "example": "Ciao, Dify!",
-      "supported": false
+      "supported": true
     },
     {
       "value": "th-TH",