diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx index 6b2eb314c850..06fa2f10c5f1 100644 --- a/packages/app/src/context/language.tsx +++ b/packages/app/src/context/language.tsx @@ -15,6 +15,7 @@ export type Locale = | "es" | "fr" | "da" + | "it" | "ja" | "pl" | "ru" @@ -43,6 +44,7 @@ const LOCALES: readonly Locale[] = [ "es", "fr", "da", + "it", "ja", "pl", "ru", @@ -64,6 +66,7 @@ const INTL: Record = { es: "es", fr: "fr", da: "da", + it: "it", ja: "ja", pl: "pl", ru: "ru", @@ -85,6 +88,7 @@ const LABEL_KEY: Record = { es: "language.es", fr: "language.fr", da: "language.da", + it: "language.it", ja: "language.ja", pl: "language.pl", ru: "language.ru", @@ -111,6 +115,7 @@ const loaders: Record, () => Promise> = { es: () => merge(import("@/i18n/es"), import("@opencode-ai/ui/i18n/es")), fr: () => merge(import("@/i18n/fr"), import("@opencode-ai/ui/i18n/fr")), da: () => merge(import("@/i18n/da"), import("@opencode-ai/ui/i18n/da")), + it: () => merge(import("@/i18n/it"), import("@opencode-ai/ui/i18n/it")), ja: () => merge(import("@/i18n/ja"), import("@opencode-ai/ui/i18n/ja")), pl: () => merge(import("@/i18n/pl"), import("@opencode-ai/ui/i18n/pl")), ru: () => merge(import("@/i18n/ru"), import("@opencode-ai/ui/i18n/ru")), @@ -147,6 +152,7 @@ const localeMatchers: Array<{ locale: Locale; match: (language: string) => boole { locale: "es", match: (language) => language.startsWith("es") }, { locale: "fr", match: (language) => language.startsWith("fr") }, { locale: "da", match: (language) => language.startsWith("da") }, + { locale: "it", match: (language) => language.startsWith("it") }, { locale: "ja", match: (language) => language.startsWith("ja") }, { locale: "pl", match: (language) => language.startsWith("pl") }, { locale: "ru", match: (language) => language.startsWith("ru") }, diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 5d124024a3b2..bdf3d6e96bf0 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -358,6 +358,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 7c6965e330c3..dab1b945d51b 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -359,6 +359,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index 201b6ed81c12..eaf593fc4011 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -393,6 +393,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index d52aca823eea..a7800dacce70 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -391,6 +391,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 4d5a64990287..d47dcaf2a642 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -366,6 +366,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 403addcb241a..22ff2425276a 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -463,6 +463,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index b71fe03e8787..154339cd02e8 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -393,6 +393,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 385dbdddefcb..ca36d480cc02 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -361,6 +361,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/it.ts b/packages/app/src/i18n/it.ts new file mode 100644 index 000000000000..d7c7ef949303 --- /dev/null +++ b/packages/app/src/i18n/it.ts @@ -0,0 +1,1041 @@ +export const dict = { + "command.category.suggested": "Suggerito", + "command.category.view": "Visualizza", + "command.category.project": "Progetto", + "command.category.provider": "Fornitore", + "command.category.server": "Server", + "command.category.session": "Sessione", + "command.category.theme": "Tema", + "command.category.language": "Lingua", + "command.category.file": "File", + "command.category.context": "Contesto", + "command.category.terminal": "Terminale", + "command.category.model": "Modello", + "command.category.mcp": "MCP", + "command.category.agent": "Agente", + "command.category.permissions": "Permessi", + "command.category.workspace": "Spazio di lavoro", + "command.category.settings": "Impostazioni", + + "theme.scheme.system": "Sistema", + "theme.scheme.light": "Chiaro", + "theme.scheme.dark": "Scuro", + + "command.sidebar.toggle": "Mostra/Nascondi barra laterale", + "command.project.open": "Apri progetto", + "command.project.previous": "Progetto precedente", + "command.project.next": "Prossimo progetto", + "command.project.index": "Passa al progetto {{index}}", + "command.provider.connect": "Connetti fornitore", + "command.server.switch": "Cambia server", + "command.settings.open": "Apri impostazioni", + "command.session.previous": "Sessione precedente", + "command.session.next": "Prossima sessione", + "command.session.previous.unseen": "Sessione non letta precedente", + "command.session.next.unseen": "Prossima sessione non letta", + "command.session.archive": "Archivia sessione", + + "command.palette": "Palette comandi", + + "command.theme.cycle": "Cambia tema", + "command.theme.set": "Usa tema: {{theme}}", + "command.theme.scheme.cycle": "Cambia schema colori", + "command.theme.scheme.set": "Usa schema colori: {{scheme}}", + + "command.language.cycle": "Cambia lingua", + "command.language.set": "Usa lingua: {{language}}", + + "command.session.new": "Nuova sessione", + "command.file.open": "Apri file", + "command.tab.close": "Chiudi scheda", + "command.context.addSelection": "Aggiungi selezione al contesto", + "command.context.addSelection.description": "Aggiungi le righe selezionate dal file corrente", + "command.input.focus": "Evidenzia input", + "command.terminal.toggle": "Mostra/Nascondi terminale", + "command.fileTree.toggle": "Mostra/Nascondi albero dei file", + "command.review.toggle": "Mostra/Nascondi revisione", + "command.terminal.new": "Nuovo terminale", + "command.terminal.new.description": "Crea una nuova scheda del terminale", + "command.steps.toggle": "Mostra/Nascondi passaggi", + "command.steps.toggle.description": "Mostra o nascondi i passaggi per il messaggio corrente", + "command.message.previous": "Messaggio precedente", + "command.message.previous.description": "Vai al messaggio utente precedente", + "command.message.next": "Prossimo messaggio", + "command.message.next.description": "Vai al prossimo messaggio utente", + "command.model.choose": "Scegli modello", + "command.model.choose.description": "Scegli un modello diverso", + "command.mcp.toggle": "Attiva/Disattiva MCP", + "command.mcp.toggle.description": "Attiva o disattiva MCP", + "command.agent.cycle": "Cambia agente", + "command.agent.cycle.description": "Passa al prossimo agente", + "command.agent.cycle.reverse": "Cambia agente indietro", + "command.agent.cycle.reverse.description": "Passa all'agente precedente", + "command.model.variant.cycle": "Cambia livello di sforzo", + "command.model.variant.cycle.description": "Passa al prossimo livello di sforzo del modello", + "command.prompt.mode.shell": "Shell", + "command.prompt.mode.normal": "Prompt", + "command.permissions.autoaccept.enable": "Accetta automaticamente i permessi", + "command.permissions.autoaccept.disable": "Interrompi l'accettazione automatica dei permessi", + "command.workspace.toggle": "Mostra/Nascondi spazi di lavoro", + "command.workspace.toggle.description": "Abilita o disabilita più spazi di lavoro nella barra laterale", + "command.session.undo": "Annulla", + "command.session.undo.description": "Annulla l'ultimo messaggio", + "command.session.redo": "Ripeti", + "command.session.redo.description": "Ripeti l'ultimo messaggio annullato", + "command.session.compact": "Compatta sessione", + "command.session.compact.description": "Riepiloga la sessione per ridurre le dimensioni del contesto", + "command.session.fork": "Crea una nuova sessione dal messaggio", + "command.session.fork.description": "Crea una nuova sessione da un messaggio precedente", + "command.session.share": "Condividi sessione", + "command.session.share.description": "Condividi questa sessione e copia l'URL negli appunti", + "command.session.unshare": "Interrompi condivisione sessione", + "command.session.unshare.description": "Interrompi la condivisione di questa sessione", + + "palette.search.placeholder": "Cerca file, comandi e sessioni", + "palette.empty": "Nessun risultato trovato", + "palette.group.commands": "Comandi", + "palette.group.files": "File", + + "dialog.provider.search.placeholder": "Cerca provider", + "dialog.provider.empty": "Nessun provider trovato", + "dialog.provider.group.popular": "Popolari", + "dialog.provider.group.other": "Altri", + "dialog.provider.tag.recommended": "Consigliato", + "dialog.provider.opencode.note": "Modelli curati tra cui Claude, GPT, Gemini e altri", + "dialog.provider.opencode.tagline": "Modelli ottimizzati affidabili", + "dialog.provider.opencodeGo.tagline": "Abbonamento a basso costo per tutti", + "dialog.provider.anthropic.note": "Accesso diretto ai modelli Claude, inclusi Pro e Max", + "dialog.provider.copilot.note": "Modelli AI per assistenza alla programmazione tramite GitHub Copilot", + "dialog.provider.openai.note": "Modelli GPT per compiti di intelligenza artificiale generale rapidi e capaci", + "dialog.provider.google.note": "Modelli Gemini per risposte rapide e strutturate", + "dialog.provider.openrouter.note": "Accesso a tutti i modelli supportati da un unico provider", + "dialog.provider.vercel.note": "Accesso unificato ai modelli AI con instradamento intelligente", + + "dialog.model.select.title": "Seleziona modello", + "dialog.model.search.placeholder": "Cerca modelli", + "dialog.model.empty": "Nessun risultato per i modelli", + "dialog.model.manage": "Gestisci modelli", + "dialog.model.manage.description": "Personalizza quali modelli appariranno nel selettore di modelli.", + "dialog.model.manage.provider.toggle": "Attiva/disattiva tutti i modelli {{provider}}", + + "dialog.model.unpaid.freeModels.title": "Modelli gratuiti forniti da OpenCode", + "dialog.model.unpaid.addMore.title": "Aggiungi altri modelli dai provider popolari", + + "dialog.provider.viewAll": "Mostra altri provider", + + "provider.connect.title": "Connetti {{provider}}", + "provider.connect.title.anthropicProMax": "Accedi con Claude Pro/Max", + "provider.connect.selectMethod": "Seleziona il metodo di accesso per {{provider}}.", + "provider.connect.method.apiKey": "Chiave API", + "provider.connect.status.inProgress": "Autorizzazione in corso...", + "provider.connect.status.waiting": "In attesa di autorizzazione...", + "provider.connect.status.failed": "Autorizzazione fallita: {{error}}", + "provider.connect.apiKey.description": + "Inserisci la tua chiave API di {{provider}} per connettere il tuo account e utilizzare i modelli di {{provider}} in OpenCode.", + "provider.connect.apiKey.label": "Chiave API di {{provider}}", + "provider.connect.apiKey.placeholder": "Chiave API", + "provider.connect.apiKey.required": "La chiave API è obbligatoria", + "provider.connect.opencodeZen.line1": + "OpenCode Zen ti dà accesso a un set curato di modelli ottimizzati e affidabili per agenti di codifica.", + "provider.connect.opencodeZen.line2": + "Con una sola chiave API avrai accesso a modelli come Claude, GPT, Gemini, GLM e altri.", + "provider.connect.opencodeZen.visit.prefix": "Visita ", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.suffix": " per ottenere la tua chiave API.", + "provider.connect.oauth.code.visit.prefix": "Visita ", + "provider.connect.oauth.code.visit.link": "questo link", + "provider.connect.oauth.code.visit.suffix": + " per ottenere il tuo codice di autorizzazione per connettere il tuo account e utilizzare i modelli di {{provider}} in OpenCode.", + "provider.connect.oauth.code.label": "Codice di autorizzazione {{method}}", + "provider.connect.oauth.code.placeholder": "Codice di autorizzazione", + "provider.connect.oauth.code.required": "Il codice di autorizzazione è obbligatorio", + "provider.connect.oauth.code.invalid": "Codice di autorizzazione non valido", + "provider.connect.oauth.auto.visit.prefix": "Visita ", + "provider.connect.oauth.auto.visit.link": "questo link", + "provider.connect.oauth.auto.visit.suffix": + " e inserisci il codice qui sotto per connettere il tuo account e utilizzare i modelli di {{provider}} in OpenCode.", + "provider.connect.oauth.auto.confirmationCode": "Codice di conferma", + "provider.connect.toast.connected.title": "{{provider}} connesso", + "provider.connect.toast.connected.description": "I modelli di {{provider}} sono ora disponibili per l'uso.", + + "provider.custom.title": "Provider personalizzato", + "provider.custom.description.prefix": "Configura un provider compatibile con OpenAI. Vedi la ", + "provider.custom.description.link": "documentazione della configurazione del provider", + "provider.custom.description.suffix": ".", + "provider.custom.field.providerID.label": "Provider ID", + "provider.custom.field.providerID.placeholder": "myprovider", + "provider.custom.field.providerID.description": "Lettere minuscole, numeri, trattini o underscore", + "provider.custom.field.name.label": "Nome visualizzato", + "provider.custom.field.name.placeholder": "Il mio provider AI", + "provider.custom.field.baseURL.label": "URL Base", + "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1", + "provider.custom.field.apiKey.label": "API key", + "provider.custom.field.apiKey.placeholder": "API key", + "provider.custom.field.apiKey.description": "Opzionale. Lascia vuoto se gestisci l'autenticazione tramite header.", + "provider.custom.models.label": "Modelli", + "provider.custom.models.id.label": "ID", + "provider.custom.models.id.placeholder": "model-id", + "provider.custom.models.name.label": "Nome", + "provider.custom.models.name.placeholder": "Nome visualizzato", + "provider.custom.models.remove": "Rimuovi modello", + "provider.custom.models.add": "Aggiungi modello", + "provider.custom.headers.label": "Headers (opzionale)", + "provider.custom.headers.key.label": "Header", + "provider.custom.headers.key.placeholder": "Header-Name", + "provider.custom.headers.value.label": "Valore", + "provider.custom.headers.value.placeholder": "valore", + "provider.custom.headers.remove": "Rimuovi header", + "provider.custom.headers.add": "Aggiungi header", + "provider.custom.error.providerID.required": "Provider ID è obbligatorio", + "provider.custom.error.providerID.format": "Usa lettere minuscole, numeri, trattini o underscore", + "provider.custom.error.providerID.exists": "Quel Provider ID esiste già", + "provider.custom.error.name.required": "Nome visualizzato è obbligatorio", + "provider.custom.error.baseURL.required": "URL Base è obbligatorio", + "provider.custom.error.baseURL.format": "Deve iniziare con http:// o https://", + "provider.custom.error.required": "Obbligatorio", + "provider.custom.error.duplicate": "Duplicato", + + "provider.disconnect.toast.disconnected.title": "{{provider}} disconnesso", + "provider.disconnect.toast.disconnected.description": "I modelli di {{provider}} non sono più disponibili.", + + "model.tag.free": "Gratuito", + "model.tag.latest": "Ultimo", + "model.provider.anthropic": "Anthropic", + "model.provider.openai": "OpenAI", + "model.provider.google": "Google", + "model.provider.xai": "xAI", + "model.provider.meta": "Meta", + "model.input.text": "testo", + "model.input.image": "immagine", + "model.input.audio": "audio", + "model.input.video": "video", + "model.input.pdf": "pdf", + "model.tooltip.allows": "Consente: {{inputs}}", + "model.tooltip.reasoning.allowed": "Consente ragionamento", + "model.tooltip.reasoning.none": "Nessun ragionamento", + "model.tooltip.context": "Limite contesto {{limit}}", + + "common.search.placeholder": "Cerca", + "common.goBack": "Torna indietro", + "common.goForward": "Avanti", + "common.loading": "Caricamento", + "common.loading.ellipsis": "...", + "common.cancel": "Annulla", + "common.clear": "Cancella", + "common.open": "Apri", + "common.connect": "Connetti", + "common.disconnect": "Disconnetti", + "common.continue": "Continua", + "common.submit": "Invia", + "common.save": "Salva", + "common.saving": "Salvataggio...", + "common.default": "Predefinito", + "common.attachment": "Allegato", + + "prompt.placeholder.shell": "Inserisci comando shell... {{example}}", + "prompt.placeholder.normal": 'Chiedi qualsiasi cosa... "{{example}}"', + "prompt.placeholder.simple": "Chiedi qualsiasi cosa...", + "prompt.placeholder.summarizeComments": "Riepiloga i commenti…", + "prompt.placeholder.summarizeComment": "Riepiloga il commento…", + "prompt.mode.shell": "Shell", + "prompt.mode.normal": "Prompt", + "prompt.mode.shell.exit": "esc per uscire", + "session.child.promptDisabled": "Le sessioni dei subagent non possono essere promptate.", + "session.child.backToParent": "Torna alla sessione principale.", + + "prompt.example.1": "Correggi un TODO nel codice", + "prompt.example.2": "Qual è la stack tecnologica di questo progetto?", + "prompt.example.3": "Correggi i test rotti", + "prompt.example.4": "Spiega come funziona l'autenticazione", + "prompt.example.5": "Trova e correggi le vulnerabilità di sicurezza", + "prompt.example.6": "Aggiungi test unitari per il servizio utente", + "prompt.example.7": "Rifattorizza questa funzione per renderla più leggibile", + "prompt.example.8": "Cosa significa questo errore?", + "prompt.example.9": "Aiutami a debugare questo problema", + "prompt.example.10": "Genera la documentazione API", + "prompt.example.11": "Ottimizza le query del database", + "prompt.example.12": "Aggiungi la validazione degli input", + "prompt.example.13": "Crea un nuovo componente per...", + "prompt.example.14": "Come posso distribuire questo progetto?", + "prompt.example.15": "Rivedi il mio codice per le migliori pratiche", + "prompt.example.16": "Aggiungi la gestione degli errori a questa funzione", + "prompt.example.17": "Spiega questo pattern regex", + "prompt.example.18": "Converti questo in TypeScript", + "prompt.example.19": "Aggiungi il logging in tutto il codice", + "prompt.example.20": "Quali dipendenze sono obsolete?", + "prompt.example.21": "Aiutami a scrivere uno script di migrazione", + "prompt.example.22": "Implementa la cache per questo endpoint", + "prompt.example.23": "Aggiungi la paginazione a questo elenco", + "prompt.example.24": "Crea un comando CLI per...", + "prompt.example.25": "Come funzionano le variabili d'ambiente qui?", + + "prompt.popover.emptyResults": "Nessun risultato corrispondente", + "prompt.popover.emptyCommands": "Nessun comando corrispondente", + "prompt.dropzone.label": "Trascina qui immagini, PDF o file di testo", + "prompt.dropzone.file.label": "Trascina per @menzionare il file", + "prompt.slash.badge.custom": "personalizzato", + "prompt.slash.badge.skill": "abilità", + "prompt.slash.badge.mcp": "mcp", + "prompt.context.active": "attivo", + "prompt.context.includeActiveFile": "Includi file attivo", + "prompt.context.removeActiveFile": "Rimuovi file attivo dal contesto", + "prompt.context.removeFile": "Rimuovi file dal contesto", + "prompt.action.attachFile": "Aggiungi file", + "prompt.attachment.remove": "Rimuovi allegato", + "prompt.action.send": "Invia", + "prompt.action.stop": "Interrompi", + + "prompt.toast.pasteUnsupported.title": "Allegato non supportato", + "prompt.toast.pasteUnsupported.description": "Solo immagini, PDF o file di testo possono essere allegati qui.", + "prompt.toast.modelAgentRequired.title": "Seleziona un agente e un modello", + "prompt.toast.modelAgentRequired.description": "Scegli un agente e un modello prima di inviare un prompt.", + "prompt.toast.worktreeCreateFailed.title": "Impossibile creare worktree", + "prompt.toast.sessionCreateFailed.title": "Impossibile creare sessione", + "prompt.toast.shellSendFailed.title": "Impossibile inviare comando shell", + "prompt.toast.commandSendFailed.title": "Impossibile inviare comando", + "prompt.toast.promptSendFailed.title": "Impossibile inviare prompt", + "prompt.toast.promptSendFailed.description": "Impossibile recuperare la sessione", + + "dialog.mcp.title": "MCPs", + "dialog.mcp.description": "{{enabled}} di {{total}} abilitati", + "dialog.mcp.empty": "Nessun MCP configurato", + + "dialog.lsp.empty": "LSP rilevati automaticamente dai tipi di file", + "dialog.plugins.empty": "Plugin configurati in opencode.json", + + "mcp.status.connected": "connesso", + "mcp.status.failed": "fallito", + "mcp.status.needs_auth": "necessita di autenticazione", + "mcp.status.disabled": "disabilitato", + "mcp.auth.clickToAuthenticate": "Clicca per autenticarti", + + "dialog.fork.empty": "Nessun messaggio da cui fare fork", + + "dialog.directory.search.placeholder": "Cerca cartelle", + "dialog.directory.empty": "Nessuna cartella trovata", + + "app.server.unreachable": "Impossibile raggiungere {{server}}", + "app.server.retrying": "Ritento automaticamente...", + "app.server.otherServers": "Altri server", + + "dialog.server.title": "Server", + "dialog.server.description": "Cambia il server OpenCode a cui questa app si connette.", + "dialog.server.search.placeholder": "Cerca server", + "dialog.server.empty": "Nessun server disponibile", + "dialog.server.add.title": "Aggiungi server", + "dialog.server.add.url": "Indirizzo server", + "dialog.server.add.placeholder": "http://localhost:4096", + "dialog.server.add.error": "Impossibile connettersi al server", + "dialog.server.add.checking": "Verifica in corso...", + "dialog.server.add.button": "Aggiungi server", + "dialog.server.add.name": "Nome server (opzionale)", + "dialog.server.add.namePlaceholder": "Localhost", + "dialog.server.add.username": "Nome utente (opzionale)", + "dialog.server.add.usernamePlaceholder": "nome utente", + "dialog.server.add.password": "Password (opzionale)", + "dialog.server.add.passwordPlaceholder": "password", + "dialog.server.edit.title": "Modifica server", + "dialog.server.default.title": "Server predefinito", + "dialog.server.default.description": + "Connettiti a questo server all'avvio dell'app invece di avviare un server locale. Richiede il riavvio.", + "dialog.server.default.none": "Nessun server selezionato", + "dialog.server.default.set": "Imposta il server corrente come predefinito", + "dialog.server.default.clear": "Rimuovi", + "dialog.server.action.remove": "Rimuovi server", + + "dialog.server.menu.edit": "Modifica", + "dialog.server.menu.default": "Imposta come predefinito", + "dialog.server.menu.defaultRemove": "Rimuovi predefinito", + "dialog.server.menu.delete": "Elimina", + "dialog.server.current": "Server corrente", + "dialog.server.status.default": "Predefinito", + "wsl.server.add": "Aggiungi server WSL", + "wsl.server.addShort": "Aggiungi WSL", + "wsl.server.label": "WSL", + "wsl.server.menu.label": "Server WSL", + "wsl.server.retryStart": "Ritenta avvio", + "wsl.server.updating": "Aggiornamento in corso...", + "wsl.onboarding.step.distro": "Scegli distribuzione", + "wsl.onboarding.step.opencode": "OpenCode", + "wsl.onboarding.checkingRuntime": "Verifica WSL in corso...", + "wsl.onboarding.restartRequired": "Windows necessita di un riavvio per completare l'installazione di WSL.", + "wsl.onboarding.ready": "WSL è pronto.", + "wsl.onboarding.required": "WSL è necessario per continuare.", + "wsl.onboarding.checkingDistros": "Verifica distribuzioni in corso...", + "wsl.onboarding.installingDistro": "Installazione di {{distro}} in corso...", + "wsl.onboarding.checkingDistro": "Verifica di {{distro}} in corso...", + "wsl.onboarding.listingDistros": "Elenco distribuzioni in corso...", + "wsl.onboarding.distroReady": "{{distro}} è pronto.", + "wsl.onboarding.distroNotInstalled": "{{distro}} non è ancora installato.", + "wsl.onboarding.openDistroOnce": "Apri {{distro}} una volta per completare la configurazione.", + "wsl.onboarding.finishingDistro": "Completamento configurazione per {{distro}} in corso.", + "wsl.onboarding.pickDistro": "Scegli una distribuzione o installane una qui sotto.", + "wsl.onboarding.checkingOpencode": "Verifica OpenCode in corso...", + "wsl.onboarding.checkingOpencodeIn": "Verifica OpenCode in {{distro}} in corso...", + "wsl.onboarding.updatingOpencode": "Aggiornamento OpenCode in corso...", + "wsl.onboarding.updatingOpencodeIn": "Aggiornamento OpenCode in {{distro}} in corso...", + "wsl.onboarding.updateOpencodeIn": "Aggiorna OpenCode in {{distro}}.", + "wsl.onboarding.updateOpencode": "Aggiorna OpenCode", + "wsl.onboarding.opencodeReadyIn": "OpenCode è pronto in {{distro}}.", + "wsl.onboarding.opencodeReady": "OpenCode è pronto.", + "wsl.onboarding.installOpencodeIn": "Installa OpenCode in {{distro}}.", + "wsl.onboarding.installOpencode": "Installa OpenCode", + "wsl.onboarding.chooseDistroFirst": "Scegli prima una distribuzione.", + "wsl.onboarding.loadFailed": "Impossibile caricare lo stato di WSL.", + "wsl.onboarding.loading": "Caricamento in corso...", + "wsl.onboarding.installWsl": "Installa WSL", + "wsl.onboarding.windowsRestartRequired": "Riavvia Windows per completare l'installazione di WSL, quindi riapri OpenCode.", + "wsl.onboarding.next": "Avanti", + "wsl.onboarding.refresh": "Aggiorna", + "wsl.onboarding.allDistrosAdded": "Tutte le distribuzioni installate sono già state aggiunte.", + "wsl.onboarding.noDistros": "Nessuna distribuzione rilevata.", + "wsl.onboarding.install": "Installa", + "wsl.onboarding.installing": "Installazione in corso...", + "wsl.onboarding.installDistro": "Installa distribuzione", + "wsl.onboarding.wsl2Required": "WSL 2 è richiesto.", + "wsl.onboarding.toolsRequired": "Questa distribuzione necessita di bash e curl.", + "wsl.onboarding.openTerminal": "Apri terminale", + "wsl.onboarding.path": "Percorso: {{path}}", + "wsl.onboarding.notFound": "non trovato", + "wsl.onboarding.version": "Versione: {{version}}", + "wsl.onboarding.unknown": "sconosciuto", + "wsl.onboarding.desktopVersion": "desktop {{version}}", + "wsl.onboarding.versionMismatch": "La versione installata non corrisponde alla versione dell'app desktop.", + "wsl.onboarding.adding": "Aggiunta in corso...", + "server.row.noUsername": "nessun nome utente", + + "dialog.project.edit.title": "Modifica progetto", + "dialog.project.edit.name": "Nome", + "dialog.project.edit.icon": "Icona", + "dialog.project.edit.icon.alt": "Icona del progetto", + "dialog.project.edit.icon.hint": "Clicca o trascina un'immagine", + "dialog.project.edit.icon.recommended": "Consigliato: 128x128px", + "dialog.project.edit.color": "Colore", + "dialog.project.edit.color.select": "Seleziona colore {{color}}", + "dialog.project.edit.worktree.startup": "Script di avvio del workspace", + "dialog.project.edit.worktree.startup.description": "Esegue dopo la creazione di un nuovo workspace (worktree).", + "dialog.project.edit.worktree.startup.placeholder": "es. bun install", + + "dialog.releaseNotes.action.getStarted": "Inizia", + "dialog.releaseNotes.action.next": "Avanti", + "dialog.releaseNotes.action.hideFuture": "Non mostrare più in futuro", + "dialog.releaseNotes.media.alt": "Anteprima della release", + + "context.breakdown.title": "Suddivisione del contesto", + "context.breakdown.note": 'Suddivisione approssimativa dei token di input. "Altro" include definizioni degli strumenti e overhead.', + "context.breakdown.system": "Sistema", + "context.breakdown.user": "Utente", + "context.breakdown.assistant": "Assistente", + "context.breakdown.tool": "Chiamate agli strumenti", + "context.breakdown.other": "Altro", + + "context.systemPrompt.title": "Prompt di sistema", + "context.rawMessages.title": "Messaggi grezzi", + + "context.stats.session": "Sessione", + "context.stats.messages": "Messaggi", + "context.stats.provider": "Fornitore", + "context.stats.model": "Modello", + "context.stats.limit": "Limite del contesto", + "context.stats.totalTokens": "Token totali", + "context.stats.usage": "Utilizzo", + "context.stats.inputTokens": "Token di input", + "context.stats.outputTokens": "Token di output", + "context.stats.reasoningTokens": "Token di ragionamento", + "context.stats.cacheTokens": "Token della cache (lettura/scrittura)", + "context.stats.userMessages": "Messaggi dell'utente", + "context.stats.assistantMessages": "Messaggi dell'assistente", + "context.stats.totalCost": "Costo totale", + "context.stats.sessionCreated": "Sessione creata", + "context.stats.lastActivity": "Ultima attività", + + "context.usage.tokens": "Token", + "context.usage.usage": "Utilizzo", + "context.usage.cost": "Costo", + "context.usage.clickToView": "Clicca per visualizzare il contesto", + "context.usage.view": "Visualizza utilizzo del contesto", + + "language.en": "English", + "language.zh": "简体中文", + "language.zht": "繁體中文", + "language.ko": "한국어", + "language.de": "Deutsch", + "language.es": "Español", + "language.fr": "Français", + "language.da": "Dansk", + "language.it": "Italiano", + "language.ja": "日本語", + "language.pl": "Polski", + "language.ru": "Русский", + "language.ar": "العربية", + "language.no": "Norsk", + "language.br": "Português (Brasil)", + "language.bs": "Bosanski", + "language.uk": "Українська", + "language.th": "ไทย", + "language.tr": "Türkçe", + + "toast.language.title": "Lingua", + "toast.language.description": "Cambiato in {{language}}", + + "toast.theme.title": "Tema cambiato", + "toast.scheme.title": "Schema dei colori", + + "toast.workspace.enabled.title": "Spazi di lavoro abilitati", + "toast.workspace.enabled.description": "Ora più worktree sono mostrati nella barra laterale", + "toast.workspace.disabled.title": "Spazi di lavoro disabilitati", + "toast.workspace.disabled.description": "Solo il worktree principale è mostrato nella barra laterale", + + "toast.permissions.autoaccept.on.title": "Accetta permessi automaticamente", + "toast.permissions.autoaccept.on.description": "Le richieste di permesso saranno approvate automaticamente", + "toast.permissions.autoaccept.off.title": "Interrotto l'accettazione automatica dei permessi", + "toast.permissions.autoaccept.off.description": "Le richieste di permesso richiederanno l'approvazione", + + "toast.model.none.title": "Nessun modello selezionato", + "toast.model.none.description": "Collega un provider per riassumere questa sessione", + + "toast.file.loadFailed.title": "Impossibile caricare il file", + "toast.file.listFailed.title": "Impossibile elencare i file", + + "toast.context.noLineSelection.title": "Nessuna selezione di righe", + "toast.context.noLineSelection.description": "Seleziona prima un intervallo di righe in una scheda del file.", + + "toast.session.share.copyFailed.title": "Impossibile copiare l'URL negli appunti", + "toast.session.share.success.title": "Sessione condivisa", + "toast.session.share.success.description": "URL della sessione copiato negli appunti!", + "toast.session.share.failed.title": "Impossibile condividere la sessione", + "toast.session.share.failed.description": "Si è verificato un errore durante la condivisione della sessione", + + "toast.session.unshare.success.title": "Sessione non condivisa", + "toast.session.unshare.success.description": "Sessione non condivisa con successo!", + "toast.session.unshare.failed.title": "Impossibile annullare la condivisione della sessione", + "toast.session.unshare.failed.description": "Si è verificato un errore durante l'annullamento della condivisione della sessione", + + "toast.session.listFailed.title": "Impossibile caricare le sessioni per {{project}}", + "toast.project.reloadFailed.title": "Impossibile ricaricare {{project}}", + + "toast.update.title": "Aggiornamento disponibile", + "toast.update.description": "Una nuova versione di OpenCode ({{version}}) è ora disponibile per l'installazione.", + "toast.update.action.installRestart": "Installa e riavvia", + "toast.update.action.notYet": "Non ancora", + + "error.page.title": "Qualcosa è andato storto", + "error.page.description": "Si è verificato un errore durante il caricamento dell'applicazione.", + "error.page.description.localServerStartup": "Si è verificato un errore durante l'avvio del server locale.", + "error.page.details.label": "Dettagli dell'errore", + "error.page.action.restart": "Riavvia", + "error.page.action.report": "Segnala errore", + "error.page.action.reported": "Errore segnalato", + "error.page.action.exportLogs": "Esporta log", + "error.page.action.checking": "Verifica in corso...", + "error.page.action.checkUpdates": "Verifica aggiornamenti", + "error.page.action.updateTo": "Aggiorna a {{version}}", + "error.page.circular": "[Circolare]", + "error.page.report.prefix": "Si prega di segnalare questo errore al team di OpenCode", + "error.page.report.discord": "su Discord", + "error.page.version": "Versione: {{version}}", + + "error.dev.rootNotFound": + "Elemento root non trovato. Hai dimenticato di aggiungerlo al tuo index.html? Oppure l'attributo id è stato scritto in modo errato?", + + "error.serverSync.connectFailed": "Impossibile connettersi al server. È in esecuzione un server su `{{url}}`?", + "error.serverSDK.noServerAvailable": "Nessun server disponibile", + "error.serverSDK.serverNotAvailable": "Server non disponibile", + "error.childStore.persistedCacheCreateFailed": "Impossibile creare la cache persistente", + "error.childStore.persistedProjectMetadataCreateFailed": "Impossibile creare i metadati del progetto persistenti", + "error.childStore.persistedProjectIconCreateFailed": "Impossibile creare l'icona del progetto persistente", + "error.childStore.storeCreateFailed": "Impossibile creare lo store", + "directory.error.invalidUrl": "Directory non valida nell'URL.", + + "error.chain.unknown": "Errore sconosciuto", + "error.server.invalidConfiguration": "Configurazione non valida", + "error.chain.causedBy": "Causato da:", + "error.chain.apiError": "Errore API", + "error.chain.status": "Stato: {{status}}", + "error.chain.retryable": "Retryable: {{retryable}}", + "error.chain.responseBody": "Corpo della risposta:\n{{body}}", + "error.chain.didYouMean": "Intendevi: {{suggestions}}", + "error.chain.modelNotFound": "Modello non trovato: {{provider}}/{{model}}", + "error.chain.checkConfig": "Controlla la tua configurazione (opencode.json) nomi provider/modello", + "error.chain.mcpFailed": 'Server MCP "{{name}}" fallito. Nota, OpenCode non supporta ancora l\'autenticazione MCP.', + "error.chain.providerAuthFailed": "Autenticazione provider fallita ({{provider}}): {{message}}", + "error.chain.providerInitFailed": + 'Impossibile inizializzare il provider "{{provider}}". Controlla le credenziali e la configurazione.', + "error.chain.configJsonInvalid": "Il file di configurazione in {{path}} non è un JSON valido(C)", + "error.chain.configJsonInvalidWithMessage": "Il file di configurazione in {{path}} non è un JSON valido(C): {{message}}", + "error.chain.configDirectoryTypo": + 'Directory "{{dir}}" in {{path}} non è valida. Rinomina la directory in "{{suggestion}}" o rimuovila. Questo è un errore comune.', + "error.chain.configFrontmatterError": "Impossibile analizzare il frontmatter in {{path}}:\n{{message}}", + "error.chain.configInvalid": "Il file di configurazione in {{path}} non è valido", + "error.chain.configInvalidWithMessage": "Il file di configurazione in {{path}} non è valido: {{message}}", + + "notification.permission.title": "Permesso richiesto", + "notification.permission.description": "{{sessionTitle}} in {{projectName}} necessita di permesso", + "notification.question.title": "Domanda", + "notification.question.description": "{{sessionTitle}} in {{projectName}} ha una domanda", + "notification.action.goToSession": "Vai alla sessione", + + "notification.session.responseReady.title": "Risposta pronta", + "notification.session.error.title": "Errore nella sessione", + "notification.session.error.fallbackDescription": "Si è verificato un errore", + + "home.recentProjects": "Progetti recenti", + "home.empty.title": "Nessun progetto recente", + "home.empty.description": "Inizia aprendo un progetto locale", + "home.title": "Home", + "home.projects": "Progetti", + "home.project.add": "Aggiungi progetto", + "home.sessions.search.placeholder": "Cerca sessioni", + "home.sessions.search.sessions": "Sessioni", + "home.sessions.search.noResults": "Nessuna sessione trovata per {{query}}", + "home.sessions.empty": "Nessuna sessione trovata", + "home.sessions.empty.description": "Inizia una nuova sessione per questo progetto", + "home.sessions.group.today": "Oggi", + "home.sessions.group.yesterday": "Ieri", + "home.sessions.group.older": "Più vecchie", + + "session.tab.session": "Sessione", + "session.tab.review": "Revisione", + "session.tab.context": "Contesto", + "session.panel.reviewAndFiles": "Revisione e file", + "session.review.filesChanged": "{{count}} File modificati", + "session.review.change.one": "Modifica", + "session.review.change.other": "Modifiche", + "session.review.loadingChanges": "Caricamento modifiche...", + "session.review.empty": "Nessuna modifica in questa sessione", + "session.review.noVcs": "Nessun sistema di controllo versione Git rilevato, modifiche non visualizzate", + "session.review.noVcs.createGit.title": "Crea un repository Git", + "session.review.noVcs.createGit.description": "Traccia, revisiona e annulla le modifiche in questo progetto", + "session.review.noVcs.createGit.actionLoading": "Creazione del repository Git...", + "session.review.noVcs.createGit.action": "Crea repository Git", + "session.review.noSnapshot": "Il tracciamento degli snapshot è disabilitato nella configurazione, quindi le modifiche della sessione non sono disponibili", + "session.review.noChanges": "Nessuna modifica", + "session.review.noUncommittedChanges": "Nessuna modifica non confermata", + "session.review.noBranchChanges": "Nessuna modifica nel ramo", + + "session.files.selectToOpen": "Seleziona un file da aprire", + "session.files.all": "Tutti i file", + "session.files.empty": "Nessun file", + "session.files.binaryContent": "File binario (contenuto non visualizzabile)", + + "session.messages.renderEarlier": "Visualizza messaggi precedenti", + "session.messages.loadingEarlier": "Caricamento messaggi precedenti...", + "session.messages.loadEarlier": "Carica messaggi precedenti", + "session.messages.loading": "Caricamento messaggi...", + "session.messages.jumpToLatest": "Vai all'ultimo", + "session.context.addToContext": "Aggiungi {{selection}} al contesto", + "session.todo.title": "Todos", + "session.todo.collapse": "Riduci", + "session.todo.expand": "Espandi", + "session.todo.progress": "{{done}} di {{total}} todos completati", + "session.question.progress": "{{current}} di {{total}} domande", + "session.followupDock.summary.one": "{{count}} messaggio in coda", + "session.followupDock.summary.other": "{{count}} messaggi in coda", + "session.followupDock.sendNow": "Invia ora", + "session.followupDock.edit": "Modifica", + "session.followupDock.collapse": "Riduci messaggi in coda", + "session.followupDock.expand": "Espandi messaggi in coda", + "session.revertDock.summary.one": "{{count}} messaggio annullato", + "session.revertDock.summary.other": "{{count}} messaggi annullati", + "session.revertDock.collapse": "Riduci messaggi annullati", + "session.revertDock.expand": "Espandi messaggi annullati", + "session.revertDock.restore": "Ripristina messaggio", + + "session.new.title": "Crea qualsiasi cosa", + "session.new.project.new": "Nuovo progetto", + "session.new.project.search": "Cerca progetti", + "session.new.project.add": "Aggiungi progetto", + "session.new.worktree.main": "Branch principale", + "session.new.worktree.mainWithBranch": "Branch principale ({{branch}})", + "session.new.worktree.create": "Crea nuovo worktree", + "session.new.lastModified": "Ultima modifica", + + "session.header.search.placeholder": "Cerca {{project}}", + "session.header.searchFiles": "Cerca file", + "session.header.openIn": "Apri in", + "session.header.open.action": "Apri {{app}}", + "session.header.open.ariaLabel": "Apri in {{app}}", + "session.header.open.menu": "Opzioni di apertura", + "session.header.open.copyPath": "Copia percorso", + "session.header.open.finder": "Finder", + "session.header.open.fileExplorer": "Esplora file", + "session.header.open.fileManager": "Gestore file", + "session.header.open.app.vscode": "VS Code", + "session.header.open.app.cursor": "Cursor", + "session.header.open.app.zed": "Zed", + "session.header.open.app.textmate": "TextMate", + "session.header.open.app.antigravity": "Antigravity", + "session.header.open.app.terminal": "Terminal", + "session.header.open.app.iterm2": "iTerm2", + "session.header.open.app.ghostty": "Ghostty", + "session.header.open.app.warp": "Warp", + "session.header.open.app.xcode": "Xcode", + "session.header.open.app.androidStudio": "Android Studio", + "session.header.open.app.powershell": "PowerShell", + "session.header.open.app.sublimeText": "Sublime Text", + + "status.popover.trigger": "Stato", + "status.popover.ariaLabel": "Configurazioni server", + "status.popover.tab.servers": "Server", + "status.popover.tab.mcp": "MCP", + "status.popover.tab.lsp": "LSP", + "status.popover.tab.plugins": "Plugin", + "status.popover.action.manageServers": "Gestisci server", + + "session.share.popover.title": "Pubblica sul web", + "session.share.popover.description.shared": + "Questa sessione è pubblica sul web. È accessibile a chiunque abbia il link.", + "session.share.popover.description.unshared": + "Questa sessione non è pubblica sul web. Non sarà accessibile a chiunque abbia il link.", + "session.share.action.share": "Condividi", + "session.share.action.publish": "Pubblica", + "session.share.action.publishing": "Pubblicazione in corso...", + "session.share.action.unpublish": "Rimuovi pubblicazione", + "session.share.action.unpublishing": "Rimozione pubblicazione in corso...", + "session.share.action.view": "Visualizza", + "session.share.copy.copied": "Copiato", + "session.share.copy.copyLink": "Copia link", + + "lsp.tooltip.none": "Nessun server LSP", + "lsp.label.connected": "{{count}} LSP", + + "prompt.loading": "Caricamento prompt...", + "terminal.loading": "Caricamento terminale...", + "terminal.title": "Terminale", + "terminal.title.numbered": "Terminale {{number}}", + "terminal.close": "Chiudi terminale", + "terminal.connectionLost.title": "Connessione persa", + "terminal.connectionLost.abnormalClose": "WebSocket chiuso in modo anomalo: {{code}}", + "terminal.connectionLost.description": + "La connessione del terminale è stata interrotta. Questo può accadere quando il server si riavvia.", + + "common.closeTab": "Chiudi scheda", + "common.dismiss": "Ignora", + "common.moreCountSuffix": " (+{{count}} in più)", + "common.requestFailed": "Richiesta fallita", + "common.moreOptions": "Altre opzioni", + "common.learnMore": "Scopri di più", + "common.rename": "Rinomina", + "common.reset": "Reimposta", + "common.archive": "Archivia", + "common.delete": "Elimina", + "common.close": "Chiudi", + "common.edit": "Modifica", + "common.loadMore": "Carica di più", + "common.key.esc": "ESC", + "common.key.ctrl": "Ctrl", + "common.key.alt": "Alt", + "common.key.shift": "Shift", + "common.key.meta": "Meta", + "common.key.space": "Spazio", + "common.key.backspace": "Backspace", + "common.key.enter": "Invio", + "common.key.tab": "Tab", + "common.key.delete": "Cancella", + "common.key.home": "Home", + "common.key.end": "Fine", + "common.key.pageUp": "Pagina Su", + "common.key.pageDown": "Pagina Giù", + "common.key.insert": "Inserisci", + "common.unknown": "sconosciuto", + + "common.time.justNow": "Proprio adesso", + "common.time.minutesAgo.short": "{{count}} min fa", + "common.time.hoursAgo.short": "{{count}} ore fa", + "common.time.daysAgo.short": "{{count}} giorni fa", + + "sidebar.menu.toggle": "Mostra/Nascondi menu", + "sidebar.nav.projectsAndSessions": "Progetti e sessioni", + "sidebar.settings": "Impostazioni", + "sidebar.help": "Aiuto", + "sidebar.workspaces.enable": "Abilita spazi di lavoro", + "sidebar.workspaces.disable": "Disabilita spazi di lavoro", + "sidebar.gettingStarted.title": "Inizia", + "sidebar.gettingStarted.line1": "OpenCode include modelli gratuiti per iniziare subito.", + "sidebar.gettingStarted.line2": "Connetti qualsiasi provider per utilizzare modelli, incl. Claude, GPT, Gemini ecc.", + "sidebar.project.recentSessions": "Sessioni recenti", + "sidebar.project.viewAllSessions": "Visualizza tutte le sessioni", + "sidebar.project.clearNotifications": "Cancella notifiche", + "sidebar.empty.title": "Nessun progetto aperto", + "sidebar.empty.description": "Apri un progetto per iniziare", + + "debugBar.ariaLabel": "Diagnostica delle prestazioni di sviluppo", + "debugBar.na": "n/d", + "debugBar.nav.label": "NAV", + "debugBar.nav.tip": + "Ultima transizione di route completata che tocca una pagina di sessione, misurata dall'inizio del router fino al primo paint dopo che si stabilizza.", + "debugBar.fps.label": "FPS", + "debugBar.fps.tip": "Frame al secondo negli ultimi 5 secondi.", + "debugBar.frame.label": "FRAME", + "debugBar.frame.tip": "Tempo del frame peggiore negli ultimi 5 secondi.", + "debugBar.jank.label": "JANK", + "debugBar.jank.tip": "Frame superiori a 32ms negli ultimi 5 secondi.", + "debugBar.long.label": "LONG", + "debugBar.long.tip": "Tempo bloccato e conteggio dei task lunghi negli ultimi 5 secondi. Task massimo: {{max}}.", + "debugBar.delay.label": "DELAY", + "debugBar.delay.tip": "Peggior ritardo di input osservato negli ultimi 5 secondi.", + "debugBar.inp.label": "INP", + "debugBar.inp.tip": + "Durata approssimativa dell'interazione negli ultimi 5 secondi. Questo è simile a INP, non l'INP ufficiale dei Web Vitals.", + "debugBar.cls.label": "CLS", + "debugBar.cls.tip": "Cumulative layout shift per la durata dell'app corrente.", + "debugBar.mem.label": "MEM", + "debugBar.mem.tipUnavailable": "Heap JS utilizzato rispetto al limite dell'heap. Solo Chromium.", + "debugBar.mem.tip": "Heap JS utilizzato rispetto al limite dell'heap. {{used}} di {{limit}}.", + + "app.name.desktop": "OpenCode Desktop", + + "settings.section.desktop": "Desktop", + "settings.section.server": "Server", + "settings.tab.general": "Generale", + "settings.tab.shortcuts": "Scorciatoie", + "settings.desktop.section.wsl": "WSL", + "settings.desktop.wsl.title": "Integrazione WSL", + "settings.desktop.wsl.description": "Esegui il server OpenCode all'interno di WSL su Windows.", + + "settings.general.section.appearance": "Aspetto", + "settings.general.section.advanced": "Avanzate", + "settings.general.section.notifications": "Notifiche di sistema", + "settings.general.section.updates": "Aggiornamenti", + "settings.general.section.sounds": "Effetti sonori", + "settings.general.section.feed": "Feed", + "settings.general.section.display": "Schermo", + + "settings.general.row.language.title": "Lingua", + "settings.general.row.language.description": "Cambia la lingua dell'interfaccia di OpenCode", + "settings.general.row.shell.title": "Shell del Terminale", + "settings.general.row.shell.description": + "Scegli la shell utilizzata per il tuo terminale. Le shell compatibili vengono utilizzate anche per le chiamate agli strumenti dell'agente.", + "settings.general.row.shell.autoDefault": "Auto (Predefinito)", + "settings.general.row.shell.terminalOnly": "solo terminale", + "settings.general.row.appearance.title": "Aspetto", + "settings.general.row.appearance.description": "Personalizza l'aspetto di OpenCode sul tuo dispositivo", + "settings.general.row.colorScheme.title": "Schema di colori", + "settings.general.row.colorScheme.description": "Scegli se OpenCode segue il tema del sistema, chiaro o scuro", + "settings.general.row.theme.title": "Tema", + "settings.general.row.theme.description": "Personalizza il tema di OpenCode.", + "settings.general.row.font.title": "Carattere del codice", + "settings.general.row.font.description": "Personalizza il carattere utilizzato nei blocchi di codice", + "settings.general.row.terminalFont.title": "Carattere del terminale", + "settings.general.row.terminalFont.description": "Personalizza il carattere utilizzato nel terminale", + "settings.general.row.uiFont.title": "Carattere dell'interfaccia", + "settings.general.row.uiFont.description": "Personalizza il carattere utilizzato nell'interfaccia", + "settings.general.row.followup.title": "Comportamento dei follow-up", + "settings.general.row.followup.description": "Scegli se i prompt di follow-up devono essere gestiti immediatamente o messi in coda", + "settings.general.row.followup.option.queue": "Coda", + "settings.general.row.followup.option.steer": "Indirizza", + "settings.general.row.showFileTree.title": "Albero dei file", + "settings.general.row.showFileTree.description": "Mostra il pannello dell'albero dei file nelle sessioni", + "settings.general.row.showNavigation.title": "Controlli di navigazione", + "settings.general.row.showNavigation.description": "Mostra i pulsanti Indietro e Avanti nella barra del titolo del desktop", + "settings.general.row.showSearch.title": "Palette dei comandi", + "settings.general.row.showSearch.description": "Mostra il pulsante di ricerca e della palette dei comandi nella barra del titolo", + "settings.general.row.showTerminal.title": "Terminale", + "settings.general.row.showTerminal.description": "Mostra il pulsante del terminale nella barra del titolo del desktop", + "settings.general.row.showStatus.title": "Stato del server", + "settings.general.row.showStatus.description": "Mostra il pulsante dello stato del server nella barra del titolo", + "settings.general.row.showCustomAgents.title": "Agenti personalizzati", + "settings.general.row.showCustomAgents.description": "Mostra il selettore di agenti nel compositore", + "settings.general.row.reasoningSummaries.title": "Mostra i riepiloghi del ragionamento", + "settings.general.row.reasoningSummaries.description": "Mostra i riepiloghi del ragionamento del modello nella timeline", + "settings.general.row.shellToolPartsExpanded.title": "Espandi le parti dello strumento shell", + "settings.general.row.shellToolPartsExpanded.description": + "Mostra le parti dello strumento shell espanse per impostazione predefinita nella timeline", + "settings.general.row.editToolPartsExpanded.title": "Espandi le parti dello strumento di modifica", + "settings.general.row.editToolPartsExpanded.description": + "Mostra le parti dello strumento di modifica, scrittura e patch espanse per impostazione predefinita nella timeline", + "settings.general.row.showSessionProgressBar.title": "Mostra la barra di avanzamento della sessione", + "settings.general.row.showSessionProgressBar.description": + "Mostra la barra di avanzamento animata nella parte superiore della sessione quando l'agente sta lavorando", + "settings.general.row.newLayoutDesigns.title": "Nuovo layout e design", + "settings.general.row.newLayoutDesigns.description": "Abilita il layout ridisegnato, la home, il compositore e l'interfaccia della sessione", + "settings.general.row.pinchZoom.title": "Tocca per ingrandire", + "settings.general.row.pinchZoom.description": "Consente il tocco del trackpad e di scorrimento Ctrl per ingrandire", + + "settings.general.row.wayland.title": "Usa Wayland nativo", + "settings.general.row.wayland.description": "Disabilita il fallback X11 su Wayland. Richiede il riavvio.", + "settings.general.row.wayland.tooltip": + "Su Linux con monitor a frequenza di aggiornamento mista, Wayland nativo può essere più stabile.", + + "settings.general.row.releaseNotes.title": "Note di rilascio", + "settings.general.row.releaseNotes.description": "Mostra i popup What's New dopo gli aggiornamenti", + + "settings.updates.row.startup.title": "Controlla gli aggiornamenti all'avvio", + "settings.updates.row.startup.description": "Controlla automaticamente gli aggiornamenti all'avvio di OpenCode", + "settings.updates.row.check.title": "Controlla gli aggiornamenti", + "settings.updates.row.check.description": "Controlla manualmente gli aggiornamenti e installali se disponibili", + "settings.updates.action.checkNow": "Controlla ora", + "settings.updates.action.checking": "Controllo in corso...", + "settings.updates.action.downloading": "Download in corso...", + "settings.updates.action.installing": "Installazione in corso...", + "settings.updates.toast.latest.title": "Sei aggiornato", + "settings.updates.toast.latest.description": "Stai utilizzando l'ultima versione di OpenCode.", + "sound.option.none": "Nessuno", + "sound.option.alert01": "Avviso 01", + "sound.option.alert02": "Avviso 02", + "sound.option.alert03": "Avviso 03", + "sound.option.alert04": "Avviso 04", + "sound.option.alert05": "Avviso 05", + "sound.option.alert06": "Avviso 06", + "sound.option.alert07": "Avviso 07", + "sound.option.alert08": "Avviso 08", + "sound.option.alert09": "Avviso 09", + "sound.option.alert10": "Avviso 10", + "sound.option.bipbop01": "Bip-bop 01", + "sound.option.bipbop02": "Bip-bop 02", + "sound.option.bipbop03": "Bip-bop 03", + "sound.option.bipbop04": "Bip-bop 04", + "sound.option.bipbop05": "Bip-bop 05", + "sound.option.bipbop06": "Bip-bop 06", + "sound.option.bipbop07": "Bip-bop 07", + "sound.option.bipbop08": "Bip-bop 08", + "sound.option.bipbop09": "Bip-bop 09", + "sound.option.bipbop10": "Bip-bop 10", + "sound.option.staplebops01": "Staplebops 01", + "sound.option.staplebops02": "Staplebops 02", + "sound.option.staplebops03": "Staplebops 03", + "sound.option.staplebops04": "Staplebops 04", + "sound.option.staplebops05": "Staplebops 05", + "sound.option.staplebops06": "Staplebops 06", + "sound.option.staplebops07": "Staplebops 07", + "sound.option.nope01": "Nope 01", + "sound.option.nope02": "Nope 02", + "sound.option.nope03": "Nope 03", + "sound.option.nope04": "Nope 04", + "sound.option.nope05": "Nope 05", + "sound.option.nope06": "Nope 06", + "sound.option.nope07": "Nope 07", + "sound.option.nope08": "Nope 08", + "sound.option.nope09": "Nope 09", + "sound.option.nope10": "Nope 10", + "sound.option.nope11": "Nope 11", + "sound.option.nope12": "Nope 12", + "sound.option.yup01": "Yup 01", + "sound.option.yup02": "Yup 02", + "sound.option.yup03": "Yup 03", + "sound.option.yup04": "Yup 04", + "sound.option.yup05": "Yup 05", + "sound.option.yup06": "Yup 06", + + "settings.general.notifications.agent.title": "Agente", + "settings.general.notifications.agent.description": + "Mostra una notifica di sistema quando l'agente è completo o necessita di attenzione", + "settings.general.notifications.permissions.title": "Permessi", + "settings.general.notifications.permissions.description": "Mostra una notifica di sistema quando è richiesto un permesso", + "settings.general.notifications.errors.title": "Errori", + "settings.general.notifications.errors.description": "Mostra una notifica di sistema quando si verifica un errore", + + "settings.general.sounds.agent.title": "Agente", + "settings.general.sounds.agent.description": "Riproduci un suono quando l'agente è completo o necessita di attenzione", + "settings.general.sounds.permissions.title": "Permessi", + "settings.general.sounds.permissions.description": "Riproduci un suono quando è richiesto un permesso", + "settings.general.sounds.errors.title": "Errori", + "settings.general.sounds.errors.description": "Riproduci un suono quando si verifica un errore", + + "settings.shortcuts.title": "Scorciatoie da tastiera", + "settings.shortcuts.reset.button": "Ripristina valori predefiniti", + "settings.shortcuts.reset.toast.title": "Scorciatoie ripristinate", + "settings.shortcuts.reset.toast.description": "Le scorciatoie da tastiera sono state ripristinate ai valori predefiniti.", + "settings.shortcuts.conflict.title": "Scorciatoia già in uso", + "settings.shortcuts.conflict.description": "{{keybind}} è già assegnata a {{titles}}.", + "settings.shortcuts.unassigned": "Non assegnata", + "settings.shortcuts.pressKeys": "Premi i tasti", + "settings.shortcuts.search.placeholder": "Cerca scorciatoie", + "settings.shortcuts.search.empty": "Nessuna scorciatoia trovata", + + "settings.shortcuts.group.general": "Generale", + "settings.shortcuts.group.session": "Sessione", + "settings.shortcuts.group.navigation": "Navigazione", + "settings.shortcuts.group.modelAndAgent": "Modello e agente", + "settings.shortcuts.group.terminal": "Terminale", + "settings.shortcuts.group.prompt": "Prompt", + + "settings.providers.title": "Provider", + "settings.providers.description": "Le impostazioni dei provider saranno configurabili qui.", + "settings.providers.section.connected": "Provider connessi", + "settings.providers.connected.empty": "Nessun provider connesso", + "settings.providers.connected.environmentDescription": "Connesso dalle variabili d'ambiente", + "settings.providers.section.popular": "Provider popolari", + "settings.providers.custom.description": "Aggiungi un provider compatibile con OpenAI tramite URL di base.", + "settings.providers.tag.environment": "Ambiente", + "settings.providers.tag.config": "Configurazione", + "settings.providers.tag.custom": "Personalizzato", + "settings.providers.tag.other": "Altro", + "settings.models.title": "Modelli", + "settings.models.description": "Le impostazioni dei modelli saranno configurabili qui.", + "settings.agents.title": "Agenti", + "settings.agents.description": "Le impostazioni degli agenti saranno configurabili qui.", + "settings.commands.title": "Comandi", + "settings.commands.description": "Le impostazioni dei comandi saranno configurabili qui.", + "settings.mcp.title": "MCP", + "settings.mcp.description": "Le impostazioni di MCP saranno configurabili qui.", + + "settings.permissions.title": "Permessi", + "settings.permissions.description": "Controlla quali strumenti il server può utilizzare per impostazione predefinita.", + "settings.permissions.section.tools": "Strumenti", + "settings.permissions.toast.updateFailed.title": "Impossibile aggiornare i permessi", + + "settings.permissions.action.allow": "Consenti", + "settings.permissions.action.ask": "Chiedi", + "settings.permissions.action.deny": "Nega", + + "settings.permissions.tool.read.title": "Leggi", + "settings.permissions.tool.read.description": "Leggere un file (corrisponde al percorso del file)", + "settings.permissions.tool.edit.title": "Modifica", + "settings.permissions.tool.edit.description": "Modificare file, inclusi modifiche, scritture e patch", + "settings.permissions.tool.glob.title": "Glob", + "settings.permissions.tool.glob.description": "Corrispondenza dei file utilizzando modelli glob", + "settings.permissions.tool.grep.title": "Grep", + "settings.permissions.tool.grep.description": "Cerca contenuti nei file utilizzando espressioni regolari", + "settings.permissions.tool.list.title": "Elenca", + "settings.permissions.tool.list.description": "Elenca i file all'interno di una directory", + "settings.permissions.tool.bash.title": "Bash", + "settings.permissions.tool.bash.description": "Esegui comandi shell", + "settings.permissions.tool.task.title": "Attività", + "settings.permissions.tool.task.description": "Avvia sotto-agenti", + "settings.permissions.tool.skill.title": "Skill", + "settings.permissions.tool.skill.description": "Carica una skill per nome", + "settings.permissions.tool.lsp.title": "LSP", + "settings.permissions.tool.lsp.description": "Esegui query del server linguistico", + "settings.permissions.tool.todowrite.title": "Todo Write", + "settings.permissions.tool.todowrite.description": "Aggiorna la lista delle cose da fare", + "settings.permissions.tool.webfetch.title": "Web Fetch", + "settings.permissions.tool.webfetch.description": "Recupera contenuti da un URL", + "settings.permissions.tool.websearch.title": "Web Search", + "settings.permissions.tool.websearch.description": "Cerca sul web", + "settings.permissions.tool.external_directory.title": "External Directory", + "settings.permissions.tool.external_directory.description": "Accedi ai file al di fuori della directory del progetto", + "settings.permissions.tool.doom_loop.title": "Doom Loop", + "settings.permissions.tool.doom_loop.description": "Rileva chiamate ripetute agli strumenti con input identico", + + "session.delete.failed.title": "Impossibile eliminare la sessione", + "session.delete.title": "Elimina sessione", + "session.delete.confirm": 'Eliminare la sessione "{{name}}"?', + "session.delete.button": "Elimina sessione", + + "workspace.new": "Nuovo workspace", + "workspace.type.local": "locale", + "workspace.type.sandbox": "sandbox", + "workspace.create.failed.title": "Impossibile creare il workspace", + "workspace.delete.failed.title": "Impossibile eliminare il workspace", + "workspace.resetting.title": "Ripristino del workspace", + "workspace.resetting.description": "Questo potrebbe richiedere un minuto.", + "workspace.reset.failed.title": "Impossibile ripristinare il workspace", + "workspace.reset.success.title": "Workspace ripristinato", + "workspace.reset.success.description": "Il workspace ora corrisponde al branch predefinito.", + "workspace.error.stillPreparing": "Il workspace è ancora in preparazione", + "workspace.status.checking": "Verifica delle modifiche non unite...", + "workspace.status.error": "Impossibile verificare lo stato di git.", + "workspace.status.clean": "Nessuna modifica non unita rilevata.", + "workspace.status.dirty": "Modifiche non unite rilevate in questo workspace.", + "workspace.delete.title": "Elimina workspace", + "workspace.delete.confirm": 'Eliminare il workspace "{{name}}"?', + "workspace.delete.button": "Elimina workspace", + "workspace.reset.title": "Ripristina workspace", + "workspace.reset.confirm": 'Ripristina workspace "{{name}}"?', + "workspace.reset.button": "Ripristina workspace", + "workspace.reset.archived.none": "Nessuna sessione attiva sarà archiviata.", + "workspace.reset.archived.one": "1 sessione sarà archiviata.", + "workspace.reset.archived.many": "{{count}} sessioni saranno archiviate.", + "workspace.reset.note": "Questo ripristinerà il workspace per corrispondere al branch predefinito.", +} diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index 34ac398bd5e8..e66ffac46805 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -358,6 +358,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index f1926f3dd28d..fb53d3ec9e1f 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -357,6 +357,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index b4adebdb7ce7..c5371aaa6ae3 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -394,6 +394,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/parity.test.ts b/packages/app/src/i18n/parity.test.ts index 8ad1beb56b0c..0dc507df49f6 100644 --- a/packages/app/src/i18n/parity.test.ts +++ b/packages/app/src/i18n/parity.test.ts @@ -7,6 +7,7 @@ import { dict as da } from "./da" import { dict as de } from "./de" import { dict as es } from "./es" import { dict as fr } from "./fr" +import { dict as it } from "./it" import { dict as ja } from "./ja" import { dict as ko } from "./ko" import { dict as no } from "./no" @@ -18,7 +19,7 @@ import { dict as zh } from "./zh" import { dict as zht } from "./zht" import { dict as tr } from "./tr" -const locales = [ar, br, bs, da, de, es, fr, ja, ko, no, pl, ru, uk, th, tr, zh, zht] +const locales = [ar, br, bs, da, de, es, fr, it, ja, ko, no, pl, ru, uk, th, tr, zh, zht] const keys = ["command.session.previous.unseen", "command.session.next.unseen"] as const describe("i18n parity", () => { diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index 02637e574f11..0e1f810ce325 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -359,6 +359,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index a965acf278de..885cbd2c9c0a 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -393,6 +393,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index 00df86a34d09..2e86026380d9 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -391,6 +391,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index 27a6e03e367c..59d9999a272d 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -396,6 +396,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/uk.ts b/packages/app/src/i18n/uk.ts index 13863725c674..1e76f535bbc6 100644 --- a/packages/app/src/i18n/uk.ts +++ b/packages/app/src/i18n/uk.ts @@ -411,6 +411,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index 663f2ccf768f..402bf9b2b485 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -406,6 +406,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index edd6f7bc0647..9329424d9fe4 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -390,6 +390,7 @@ export const dict = { "language.es": "Español", "language.fr": "Français", "language.da": "Dansk", + "language.it": "Italiano", "language.ja": "日本語", "language.pl": "Polski", "language.ru": "Русский", diff --git a/packages/desktop/src/renderer/i18n/it.ts b/packages/desktop/src/renderer/i18n/it.ts new file mode 100644 index 000000000000..9f43916349ca --- /dev/null +++ b/packages/desktop/src/renderer/i18n/it.ts @@ -0,0 +1,27 @@ +export const dict = { + "desktop.menu.checkForUpdates": "Verifica aggiornamenti...", + "desktop.menu.installCli": "Installa CLI...", + "desktop.menu.reloadWebview": "Ricarica Webview", + "desktop.menu.restart": "Riavvia", + + "desktop.dialog.chooseFolder": "Scegli una cartella", + "desktop.dialog.chooseFile": "Scegli un file", + "desktop.dialog.saveFile": "Salva file", + + "desktop.updater.checkFailed.title": "Verifica aggiornamenti fallita", + "desktop.updater.checkFailed.message": "Impossibile verificare la disponibilità di aggiornamenti", + "desktop.updater.none.title": "Nessun aggiornamento disponibile", + "desktop.updater.none.message": "Stai già utilizzando l'ultima versione di OpenCode", + "desktop.updater.downloadFailed.title": "Download aggiornamento fallito", + "desktop.updater.downloadFailed.message": "Impossibile scaricare l'aggiornamento", + "desktop.updater.downloaded.title": "Aggiornamento scaricato", + "desktop.updater.downloaded.prompt": + "La versione {{version}} di OpenCode è stata scaricata, desideri installarla e riavviare?", + "desktop.updater.installFailed.title": "Installazione aggiornamento fallita", + "desktop.updater.installFailed.message": "Impossibile installare l'aggiornamento", + + "desktop.cli.installed.title": "CLI Installata", + "desktop.cli.installed.message": "CLI installata in {{path}}\n\nRiavvia il terminale per utilizzare il comando 'opencode'.", + "desktop.cli.failed.title": "Installazione fallita", + "desktop.cli.failed.message": "Impossibile installare la CLI: {{error}}", +} diff --git a/packages/ui/src/i18n/it.ts b/packages/ui/src/i18n/it.ts new file mode 100644 index 000000000000..19632e591b9b --- /dev/null +++ b/packages/ui/src/i18n/it.ts @@ -0,0 +1,176 @@ +export const dict: Record = { + "ui.sessionReview.title": "Modifiche sessione", + "ui.sessionReview.title.git": "Modifiche Git", + "ui.sessionReview.title.branch": "Modifiche branch", + "ui.sessionReview.title.lastTurn": "Modifiche ultimo turno", + "ui.sessionReview.diffStyle.unified": "Unificato", + "ui.sessionReview.diffStyle.split": "Diviso", + "ui.sessionReview.expandAll": "Espandi tutto", + "ui.sessionReview.collapseAll": "Comprimi tutto", + "ui.sessionReview.change.added": "Aggiunto", + "ui.sessionReview.change.removed": "Rimosso", + "ui.sessionReview.change.modified": "Modificato", + "ui.sessionReview.image.loading": "Caricamento...", + "ui.sessionReview.image.placeholder": "Immagine", + "ui.sessionReview.largeDiff.title": "Diff troppo grande per essere visualizzato", + "ui.sessionReview.largeDiff.meta": "Limite: {{limit}} righe modificate. Attuale: {{current}} righe modificate.", + "ui.sessionReview.largeDiff.renderAnyway": "Visualizza comunque", + "ui.sessionReview.openFile": "Apri file", + "ui.sessionReview.selection.line": "riga {{line}}", + "ui.sessionReview.selection.lines": "righe {{start}}-{{end}}", + + "ui.fileMedia.kind.image": "immagine", + "ui.fileMedia.kind.audio": "audio", + "ui.fileMedia.state.removed": "File {{kind}} rimosso.", + "ui.fileMedia.state.loading": "Caricamento {{kind}}...", + "ui.fileMedia.state.error": "Impossibile caricare {{kind}}.", + "ui.fileMedia.state.unavailable": "Anteprima {{kind}} non disponibile.", + "ui.fileMedia.binary.title": "File binario", + "ui.fileMedia.binary.description.path": "{{path}} è binario.", + "ui.fileMedia.binary.description.default": "Contenuto binario", + + "ui.lineComment.label.prefix": "Commenta su ", + "ui.lineComment.label.suffix": "", + "ui.lineComment.editorLabel.prefix": "Commentando su ", + "ui.lineComment.editorLabel.suffix": "", + "ui.lineComment.placeholder": "Aggiungi commento", + "ui.lineComment.submit": "Commenta", + + "ui.sessionTurn.steps.show": "Mostra passaggi", + "ui.sessionTurn.steps.hide": "Nascondi passaggi", + "ui.sessionTurn.summary.response": "Risposta", + "ui.sessionTurn.diff.showMore": "Mostra più modifiche ({{count}})", + "ui.sessionTurn.diffs.changed": "Modificato", + "ui.sessionTurn.diffs.showAll": "Mostra tutto", + "ui.sessionTurn.diffs.showLess": "Mostra meno", + "ui.sessionTurn.diffs.more": "+{{count}} altri file", + + "ui.sessionTurn.retry.retrying": "Ritento", + "ui.sessionTurn.retry.inSeconds": "in {{seconds}}s", + "ui.sessionTurn.retry.attempt": "tentativo #{{attempt}}", + "ui.sessionTurn.retry.attemptLine": "{{line}} - tentativo #{{attempt}}", + "ui.sessionTurn.retry.geminiHot": "Gemini è troppo occupato in questo momento", + "ui.sessionTurn.error.freeUsageExceeded": "Utilizzo gratuito superato", + "ui.sessionTurn.error.addCredits": "Aggiungi crediti", + + "dialog.usageExceeded.freeTier.title": "Limite gratuito raggiunto", + "dialog.usageExceeded.freeTier.description": + "Abbonati a OpenCode Go per un accesso affidabile ai migliori modelli open-source, a partire da $5/mese.", + "dialog.usageExceeded.freeTier.actionLabel": "Abbonati", + "dialog.usageExceeded.accountRateLimit.title": "Limite Go raggiunto", + "dialog.usageExceeded.accountRateLimit.description": + "Limite di utilizzo raggiunto. Per continuare a utilizzare questo modello ora, abilita l'utilizzo dal tuo saldo disponibile", + "dialog.usageExceeded.accountRateLimit.actionLabel": "Apri impostazioni", + + "ui.sessionTurn.status.delegating": "Delegando lavoro", + "ui.sessionTurn.status.planning": "Pianificando i prossimi passi", + "ui.sessionTurn.status.gatheringContext": "Esplorando", + "ui.sessionTurn.status.gatheredContext": "Esplorato", + "ui.sessionTurn.status.searchingCodebase": "Cercando nel codice", + "ui.sessionTurn.status.searchingWeb": "Cercando sul web", + "ui.sessionTurn.status.makingEdits": "Apportando modifiche", + "ui.sessionTurn.status.runningCommands": "Eseguendo comandi", + "ui.sessionTurn.status.thinking": "Riflettendo", + "ui.sessionTurn.status.thinkingWithTopic": "Riflettendo - {{topic}}", + "ui.sessionTurn.status.gatheringThoughts": "Raccogliendo pensieri", + "ui.sessionTurn.status.consideringNextSteps": "Considerando i prossimi passi", + + "ui.messagePart.diagnostic.error": "Errore", + "ui.messagePart.title.edit": "Modifica", + "ui.messagePart.title.write": "Scrivi", + "ui.messagePart.option.typeOwnAnswer": "Scrivi la tua risposta", + "ui.messagePart.review.title": "Rivedi le tue risposte", + "ui.messagePart.questions.dismissed": "Domande ignorate", + "ui.messagePart.compaction": "Sessione compatta", + "ui.messagePart.context.read.one": "{{count}} lettura", + "ui.messagePart.context.read.other": "{{count}} letture", + "ui.messagePart.context.search.one": "{{count}} ricerca", + "ui.messagePart.context.search.other": "{{count}} ricerche", + "ui.messagePart.context.list.one": "{{count}} elenco", + "ui.messagePart.context.list.other": "{{count}} elenchi", + + "ui.list.loading": "Caricamento", + "ui.list.empty": "Nessun risultato", + "ui.list.clearFilter": "Cancella filtro", + "ui.list.emptyWithFilter.prefix": "Nessun risultato per", + "ui.list.emptyWithFilter.suffix": "", + + "ui.fileSearch.placeholder": "Cerca", + "ui.fileSearch.previousMatch": "Risultato precedente", + "ui.fileSearch.nextMatch": "Risultato successivo", + "ui.fileSearch.close": "Chiudi ricerca", + + "ui.messageNav.newMessage": "Nuovo messaggio", + + "ui.textField.copyToClipboard": "Copia negli appunti", + "ui.textField.copyLink": "Copia link", + "ui.textField.copied": "Copiato", + + "ui.imagePreview.alt": "Anteprima immagine", + "ui.scrollView.ariaLabel": "contenuto scorrevole", + + "ui.tool.read": "Leggi", + "ui.tool.loaded": "Caricato", + "ui.tool.list": "Elenco", + "ui.tool.glob": "Glob", + "ui.tool.grep": "Grep", + "ui.tool.task": "Attività", + "ui.tool.webfetch": "Recupero web", + "ui.tool.websearch": "Ricerca web", + "ui.tool.shell": "Shell", + "ui.tool.patch": "Patch", + "ui.tool.todos": "Da fare", + "ui.tool.todos.read": "Leggi da fare", + "ui.tool.questions": "Domande", + "ui.tool.agent": "{{type}} Agente", + "ui.tool.agent.default": "Agente", + "ui.tool.skill": "Abilità", + + "ui.basicTool.called": "Chiamato `{{tool}}`", + "ui.toolErrorCard.failed": "Fallito", + "ui.toolErrorCard.copyError": "Errore di copia", + + "ui.common.file.one": "file", + "ui.common.file.other": "files", + "ui.common.question.one": "domanda", + "ui.common.question.other": "domande", + + "ui.common.add": "Aggiungi", + "ui.common.back": "Indietro", + "ui.common.cancel": "Annulla", + "ui.common.confirm": "Conferma", + "ui.common.dismiss": "Ignora", + "ui.common.close": "Chiudi", + "ui.common.next": "Avanti", + "ui.common.submit": "Invia", + + "ui.permission.deny": "Nega", + "ui.permission.allowAlways": "Consenti sempre", + "ui.permission.allowOnce": "Consenti una volta", + + "ui.message.expand": "Espandi messaggio", + "ui.message.collapse": "Comprimi messaggio", + "ui.message.copy": "Copia", + "ui.message.copyMessage": "Copia messaggio", + "ui.message.forkMessage": "Duplica in nuova sessione", + "ui.message.revertMessage": "Ripristina messaggio", + "ui.message.copyResponse": "Copia risposta", + "ui.message.copied": "Copiato", + "ui.message.duration.seconds": "{{count}} secondi", + "ui.message.duration.minutesSeconds": "{{minutes}} min {{seconds}} secondi", + "ui.message.interrupted": "Interrotto", + "ui.message.queued": "In coda", + "ui.message.attachment.alt": "allegato", + + "ui.patch.action.deleted": "Eliminato", + "ui.patch.action.created": "Creato", + "ui.patch.action.moved": "Spostato", + "ui.patch.action.patched": "Modificato", + + "ui.question.subtitle.answered": "{{count}} risposte", + "ui.question.answer.none": "(nessuna risposta)", + "ui.question.review.notAnswered": "(non risposto)", + "ui.question.multiHint": "Seleziona tutte le risposte che si applicano", + "ui.question.singleHint": "Seleziona una risposta", + "ui.question.custom.placeholder": "Digita la tua risposta...", +}