diff --git a/src/i18n/i18n-types.ts b/src/i18n/i18n-types.ts index 9193787f..fb78bd01 100644 --- a/src/i18n/i18n-types.ts +++ b/src/i18n/i18n-types.ts @@ -10,6 +10,7 @@ export type Locales = | 'en' | 'es' | 'fr' + | 'it' | 'ja' | 'pt-br' | 'tr' diff --git a/src/i18n/i18n-util.async.ts b/src/i18n/i18n-util.async.ts index 9ac13577..37fce938 100644 --- a/src/i18n/i18n-util.async.ts +++ b/src/i18n/i18n-util.async.ts @@ -15,6 +15,7 @@ const localeTranslationLoaders = { tr: () => import('./tr'), vi: () => import('./vi'), 'zh-cn': () => import('./zh-cn'), + it: () => import('./it'), } const updateDictionary = (locale: Locales, dictionary: Partial): Translations => diff --git a/src/i18n/i18n-util.sync.ts b/src/i18n/i18n-util.sync.ts index 9fab8dd7..30a7216f 100644 --- a/src/i18n/i18n-util.sync.ts +++ b/src/i18n/i18n-util.sync.ts @@ -14,6 +14,7 @@ import pt_br from './pt-br' import tr from './tr' import vi from './vi' import zh_cn from './zh-cn' +import it from './it' const localeTranslations = { de, @@ -25,6 +26,7 @@ const localeTranslations = { tr, vi, 'zh-cn': zh_cn, + it, } export const loadLocale = (locale: Locales): void => { diff --git a/src/i18n/i18n-util.ts b/src/i18n/i18n-util.ts index 4eed55b7..d7fe786f 100644 --- a/src/i18n/i18n-util.ts +++ b/src/i18n/i18n-util.ts @@ -15,6 +15,7 @@ export const locales: Locales[] = [ 'en', 'es', 'fr', + 'it', 'ja', 'pt-br', 'tr', diff --git a/src/i18n/it/index.ts b/src/i18n/it/index.ts new file mode 100644 index 00000000..09581a2b --- /dev/null +++ b/src/i18n/it/index.ts @@ -0,0 +1,179 @@ +import type { BaseTranslation } from '../i18n-types'; + +const it = { + addConnection: 'Aggiungi Connessione', + allowConnections: 'Modifica le impostazioni del server per consentire le connessioni da', + allowMixedContent: 'Permetti contenuti misti', + apiKey: 'API key', + areYouSureYouWantToDeleteAllKnowledge: 'Sei sicuro di voler eliminare tutte le knowledge?', + areYouSureYouWantToDeleteAllSessions: 'Sei sicuro di voler eliminare tutte le sessioni?', + areYouSureYouWantToDeleteAllPreferences: 'Sei sicuro di voler eliminare tutte le preferenze?', + areYouSureYouWantToDeleteAllServers: 'Sei sicuro di voler eliminare tutti i server?', + areYouSureYouWantToImportData: + 'Sei sicuro di voler importare? Questo sovrascriverà ogni dato esistente', + areYouSureYouWantToLeave: 'Sei sicuro di voler uscire?\nI progressi completati verranno persi', + assistant: 'Assistente', + attachImage: 'Allega Immagine', + automatic: 'Auto', + automaticallyCheckForUpdates: 'Controlla aggiornamenti automaticamente', + availableModels: 'Modelli disponibili', + baseUrl: 'Base URL', + browseModels: 'Esplora i modelli disponibili', + cancel: 'Cancel', + cantConnectToOllamaServer: "Non riesco a connettermi al serve Ollama", + checkBrowserExtensions: 'Also check no browser extensions are blocking the connection', + checkingForUpdates: 'Controllo aggiornamenti...', + checkNow: 'Controlla adesso', + clear: 'Clear', + confirmDeletion: 'Conferma cancellazione', + confirmEdit: 'Conferma modifica', + connectionType: 'Tipo di connessione', + connectionLabelHelp: 'Identifica la connessione dalla lista dei modelli', + connecting: 'Connessione...', + connectionIsVerified: 'Connessione verificata e pronta all\'uso', + connectionFailedToVerify: + 'Verifica connessione fallita, controlla le impostazioni e riprova', + content: 'Contenuto', + controls: 'Controlli', + controlsOnlyAvailableForOllama: + 'Controlli avanzati sono al momento disponibili solo per modelli Ollama', + copy: 'Copia', + couldntCheckForUpdates: "Impossibile controllare gli aggiornamenti in modo automatico", + couldntConnectToOllamaServer: "Connessione al server Ollama non riuscita", + creatingTunnel: 'Creo un tunnel', + currentVersion: 'Versione corrente', + dangerZone: 'Zona pericolosa', + dark: 'Scuro', + delete: 'Cancella', + deleteKnowledge: 'Cancella knowledge', + deleteServer: 'Cancella server', + deleteSession: 'Cancella sessione', + disconnected: 'Disconnetti', + dismiss: 'Dismiss', + downloadModel: 'Download modello', + edit: 'Modifica', + editTitle: 'Modifica titolo', + emptyKnowledge: 'Nessuna knowledge', + emptySessions: 'Nessuna sessione', + error: 'Errore', + export: 'Esporta', + f16Kv: 'F16 KV', + frequencyPenalty: 'Frequency penalty', + genericError: 'Ci dispiace, qualcosa è andato storto', + goToDownloads: 'Vai a downloads', + goToKnowledge: 'Vai a knowledge', + goToReleases: 'Vai a releases', + howToObtainOpenAIKey: 'Come ottenere un\'API key da OpenAI?', + howToUpdateDocker: 'Come aggiornare un container Docker?', + import: 'Importa', + interface: 'Interfaccia', + internalServerError: 'Si è verificato un errore interno del server, perfavore riprova più tardi', + isCurrentVersionLatest: 'Stai usando l\'ultima versione', + isLatestVersion: 'Una versione più recente è disponibile', + knowledge: 'Knowledge', + knowledgeSaved: 'Knowledge salvata', + label: 'Etichetta', + language: 'Lingua', + lastUsedModels: 'Modelli usati di recente', + light: 'Chiaro', + lowVram: 'Low VRAM', + mainGpu: 'Main GPU', + messageOfTheDay: 'Message of the day', + messages: 'Messaggi', + minP: 'Min P', + mirostat: 'Mirostat', + mirostatEta: 'Mirostat ETA', + mirostatTau: 'Mirostat Tau', + modelNotFound: 'Modello non trovato', + modelOptions: 'Opzioni modello', + modelWasDownloaded: '{model:string} è stato scaricato', + modelsFilter: 'Filtro nome modello', + modelsFilterHelp: "Nasconde i nomi dei modelli che non cominciano per il filtro", + motd: 'Motd', + name: 'Nome', + newKnowledge: 'Nuova knowledge', + newSession: 'Nuova sessione', + noApiKey: 'No API key', + noKnowledgeChosen: 'Crea una nuova knowledge o scegline una dalla lista', + noRecentModels: 'Nessun modello usato di recente', + noServerConnections: 'Nessuna connessione verso il server, aggiungine una per cominciare', + noSessionChosen: 'Crea una sessione o scegline una esistente dalla lista', + notFound: 'La pagina che stai cercando non esiste', + numBatch: 'Num batch', + numCtx: 'Context size', + numGpu: 'Num GPU', + numKeep: 'Num keep', + numPredict: 'Num predict', + numThread: 'Number of threads', + numa: 'NUMA', + ollama: 'Ollama', + ollamaLibrary: "Libreria di Ollama", + openAIOfficialAPI: 'OpenAI: API ufficiale', + openAICompatible: 'OpenAI: Server compatibile (es. llama.cpp)', + otherModels: 'Altri modelli', + penalizeNewline: 'Penalizza newline', + preferences: 'Preferenze', + presencePenalty: 'Presence penalty', + prompt: 'Prompt', + promptPlaceholder: 'Scrivi qualsiasi cosa', + pullModel: 'Pull model', + pullModelPlaceholder: 'Tag modello (es. llama3.1)', + pullingModel: 'Pull modello', + random: 'Casuale', + reasoning: 'Ragionando', + refreshToUpdate: 'Ricarica per aggiornare', + releaseHistory: 'Cronologia release', + repeatLastN: 'Repeat last N', + repeatPenalty: 'Repeat penalty', + retry: 'Riprova', + run: 'Esegui', + reVerify: 'Ri-Verifica', + runtimeOptions: 'Opzioni runtime', + save: 'Salva', + search: 'Cerca', + searchEmpty: 'Nessun risultato', + seed: 'Seed', + seeDocs: 'Vedi documentazione', + servers: 'Server', + serverSettingsUpdated: + 'La configurazione del server è stata aggiornata e deve ri-verificata nuovamente in \"Impostazioni\"', + session: 'Sessione', + sessions: 'Sessioni', + settings: 'Impostazioni', + somethingWentWrong: 'Ci dispiace, qualcosa è andato storto', + stop: 'Stop sequence', + stopCompletion: 'Interrompi completamento', + stopResponse: 'Interrompi risposta', + success: 'Success', + system: 'Sistema', + systemPrompt: 'Prompt di sistema', + temperature: 'Temperatura', + tfsZ: 'TFS Z', + topK: 'Top K', + topP: 'Top P', + tryingToConnectNotLocalhost: + 'Se ti vuoi connettere a un server Ollama che non è disponibile su {hostname:string} oppure {ip:string} prova', + typicalP: 'Typical P', + unsavedChangesWillBeLost: 'Hai cambiamenti non salvati che potrebbero andare persi. Continuare?', + useMlock: 'Usa MLOCK', + useMmap: 'Usa MMAP', + useModelsFromThisServer: 'Usa modelli da questo server', + verify: 'Verifica', + version: 'Versione', + vocabOnly: 'Vocab only', + writePromptToStart: 'Scrivi un prompt per cominciare una nuova sessione', + you: 'Tu', + copiedNotPrivate: 'Contenuto copiato, ma la tua connessione non è privata', + notCopiedNotPrivate: "Non posso copiare il contenuto. La connessione non è privata", + importSuccess: 'Importato con successo', + importError: 'Importazione fallita', + deleteSuccess: 'Cancellato con successo', + serversDescription: 'Connessioni, filtri modelli ed etichette', + preferencesDescription: 'Lingua, tema, modelli usati di recente, etc', + sessionsDescription: 'Tutta la cronologia di sessione, allegati e impostazioni personalizzate dei modelli', + knowledgeDescription: 'Tutta la knowledge base', + expandSidebar: 'Espandi sidebar', + collapseSidebar: 'Comprimi sidebar' +} satisfies BaseTranslation; + +export default it; diff --git a/src/routes/settings/Interface.svelte b/src/routes/settings/Interface.svelte index ea1f17a6..12e51026 100644 --- a/src/routes/settings/Interface.svelte +++ b/src/routes/settings/Interface.svelte @@ -37,6 +37,7 @@ { value: 'zh-cn', label: '中文 (简体)' }, { value: 'es', label: 'Español' }, { value: 'fr', label: 'Français' }, + { value: 'it', label: 'Italiano' }, { value: 'pt-br', label: 'Português (Brasil)' }, { value: 'ja', label: '日本語' }, { value: 'tr', label: 'Türkçe' },