feat(l10n): Update English localization with voice call states and model capabilities

This commit is contained in:
cogwheel0
2025-11-02 17:44:23 +05:30
parent b648ae29ea
commit 8321e3c721
23 changed files with 6242 additions and 1662 deletions

View File

@@ -1,7 +1,6 @@
{
"@@locale": "it",
"appTitle": "Conduit",
"initializationFailed": "Inizializzazione non riuscita",
"retry": "Riprova",
"back": "Indietro",
"you": "Tu",
@@ -16,10 +15,6 @@
"@connectionIssueSubtitle": {
"description": "Sottotitolo che spiega le azioni disponibili quando il server non è raggiungibile"
},
"stillOfflineMessage": "Non riusciamo ancora a raggiungere il server. Controlla la connessione e riprova.",
"@stillOfflineMessage": {
"description": "Messaggio di stato dopo un tentativo di riconnessione senza successo"
},
"account": "Account",
"supportConduit": "Sostieni Conduit",
"supportConduitSubtitle": "Mantieni Conduit indipendente finanziando lo sviluppo continuo.",
@@ -37,32 +32,14 @@
"noResults": "Nessun risultato",
"searchModels": "Cerca modelli...",
"errorMessage": "Qualcosa è andato storto. Riprova.",
"loginButton": "Accedi",
"menuItem": "Impostazioni",
"dynamicContentWithPlaceholder": "Benvenuto, {name}!",
"itemsCount": "{count, plural, =0{Nessun elemento} one{1 elemento} other{{count} elementi}}",
"closeButtonSemantic": "Chiudi",
"loadingContent": "Caricamento contenuto",
"noItems": "Nessun elemento",
"noItemsToDisplay": "Nessun elemento da visualizzare",
"loadMore": "Carica altro",
"workspace": "Spazio di lavoro",
"recentFiles": "File recenti",
"knowledgeBase": "Base di conoscenza",
"noFilesYet": "Ancora nessun file",
"uploadDocsPrompt": "Carica documenti da usare nelle conversazioni con Conduit",
"uploadFirstFile": "Carica il tuo primo file",
"attachments": "Allegati",
"knowledgeBaseEmpty": "La base di conoscenza è vuota",
"createCollectionsPrompt": "Crea raccolte di documenti correlati per un rapido riferimento",
"chooseSourcePhoto": "Scegli origine",
"takePhoto": "Scatta una foto",
"chooseFromGallery": "Scegli dalle foto",
"document": "Documento",
"documentHint": "File PDF, Word o di testo",
"uploadFileTitle": "Carica file",
"fileUploadComingSoon": "Il caricamento file per {type} arriverà presto!",
"kbCreationComingSoon": "La creazione della base di conoscenza arriverà presto!",
"backToServerSetup": "Torna alla configurazione del server",
"connectedToServer": "Connesso al server",
"signIn": "Accedi",
@@ -124,9 +101,7 @@
"onboardQuickTitle": "Azioni rapide",
"onboardQuickSubtitle": "Apri il menu per passare tra Chat, Workspace e Profilo.",
"onboardQuickBullet1": "Tocca il menu per accedere a Chat, Workspace, Profilo",
"onboardQuickBullet2": "Avvia Nuova chat o gestisci i modelli dalla barra"
,
"addAttachment": "Aggiungi allegato",
"onboardQuickBullet2": "Avvia Nuova chat o gestisci i modelli dalla barra",
"attachmentLabel": "Allegato",
"tools": "Strumenti",
"voiceInput": "Input vocale",
@@ -157,19 +132,13 @@
"invalidDataUrl": "Formato data URL non valido",
"failedToDecodeImage": "Impossibile decodificare l'immagine",
"invalidImageFormat": "Formato immagine non valido",
"emptyImageData": "Dati immagine vuoti"
,
"featureRequiresInternet": "Questa funzione richiede una connessione Internet",
"messagesWillSendWhenOnline": "I messaggi verranno inviati quando tornerai online",
"emptyImageData": "Dati immagine vuoti",
"confirm": "Conferma",
"cancel": "Annulla"
,
"cancel": "Annulla",
"ok": "OK",
"inputField": "Campo di input",
"captureDocumentOrImage": "Acquisisci un documento o un'immagine",
"checkConnection": "Controlla connessione",
"openSettings": "Apri impostazioni",
"chooseDifferentFile": "Scegli un altro file",
"goBack": "Indietro",
"technicalDetails": "Dettagli tecnici",
"save": "Salva",
@@ -181,18 +150,9 @@
"newChat": "Nuova chat",
"more": "Altro",
"clear": "Pulisci",
"searchHint": "Cerca...",
"searchConversations": "Cerca conversazioni...",
"create": "Crea",
"folderCreated": "Cartella creata",
"failedToCreateFolder": "Impossibile creare la cartella",
"movedChatToFolder": "\"{title}\" spostata in \"{folder}\"",
"@movedChatToFolder": {
"placeholders": {
"title": {"type": "String"},
"folder": {"type": "String"}
}
},
"failedToMoveChat": "Impossibile spostare la chat",
"failedToLoadChats": "Impossibile caricare le chat",
"failedToUpdatePin": "Impossibile aggiornare il pin",
@@ -222,13 +182,17 @@
"deleteMessagesMessage": "Eliminare {count} messaggi?",
"@deleteMessagesMessage": {
"placeholders": {
"count": {"type": "int"}
"count": {
"type": "int"
}
}
},
"routeNotFound": "Percorso non trovato: {routeName}",
"@routeNotFound": {
"placeholders": {
"routeName": {"type": "String"}
"routeName": {
"type": "String"
}
}
},
"deleteChatTitle": "Elimina chat",
@@ -254,8 +218,7 @@
"ttsStop": "Interrompi",
"edit": "Modifica",
"regenerate": "Rigenera",
"noConversationsYet": "Ancora nessuna conversazione"
,
"noConversationsYet": "Ancora nessuna conversazione",
"usernameOrEmailHint": "Inserisci il tuo username o email",
"passwordHint": "Inserisci la password",
"enterApiKey": "Inserisci la tua chiave API",
@@ -275,31 +238,55 @@
"headerNameTooLong": "Nome header troppo lungo (max 64 caratteri)",
"headerNameInvalidChars": "Nome header non valido. Usa solo lettere, numeri e questi simboli: !#$&-^_`|~",
"headerNameReserved": "Impossibile sovrascrivere l'header riservato \"{key}\"",
"@headerNameReserved": {"placeholders": {"key": {"type": "String"}}},
"@headerNameReserved": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"headerValueEmpty": "Il valore dell'header non può essere vuoto",
"headerValueTooLong": "Valore header troppo lungo (max 1024 caratteri)",
"headerValueInvalidChars": "Il valore dell'header contiene caratteri non validi. Usa solo ASCII stampabile.",
"headerValueUnsafe": "Il valore dell'header sembra contenere contenuti potenzialmente non sicuri",
"headerAlreadyExists": "L'header \"{key}\" esiste già. Rimuovilo prima per aggiornarlo.",
"@headerAlreadyExists": {"placeholders": {"key": {"type": "String"}}},
"maxHeadersReachedDetail": "Massimo 10 header personalizzati consentiti. Rimuovine alcuni per aggiungerne altri."
,
"editMessage": "Modifica messaggio"
,
"@headerAlreadyExists": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"maxHeadersReachedDetail": "Massimo 10 header personalizzati consentiti. Rimuovine alcuni per aggiungerne altri.",
"noModelsAvailable": "Nessun modello disponibile",
"followingSystem": "Segue il sistema: {theme}",
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
"@followingSystem": {
"placeholders": {
"theme": {
"type": "String"
}
}
},
"themeDark": "Scuro",
"themePalette": "Palette di colori",
"@themePalette": {"description": "Titolo per scegliere la palette di colori dell'app."},
"themePaletteDescription": "Scegli i colori di accento usati per pulsanti, schede e bolle di chat.",
"@themePaletteDescription": {"description": "Testo di supporto che spiega la scelta della palette."},
"@themePalette": {
"description": "Titolo per scegliere la palette di colori dell'app."
},
"themeLight": "Chiaro",
"currentlyUsingDarkTheme": "Attualmente tema scuro",
"currentlyUsingLightTheme": "Attualmente tema chiaro",
"aboutConduit": "Informazioni su Conduit",
"versionLabel": "Versione: {version} ({build})",
"@versionLabel": {"placeholders": {"version": {"type": "String"}, "build": {"type": "String"}}},
"@versionLabel": {
"placeholders": {
"version": {
"type": "String"
},
"build": {
"type": "String"
}
}
},
"githubRepository": "Repository GitHub",
"unableToLoadAppInfo": "Impossibile caricare le informazioni dell'app",
"thinking": "Sta pensando…",
@@ -307,9 +294,13 @@
"thoughtForDuration": "Ha pensato per {duration}",
"@thoughtForDuration": {
"description": "Mostra per quanto tempo ha pensato l'assistente.",
"placeholders": {"duration": {"type": "String", "example": "3 s"}}
}
,
"placeholders": {
"duration": {
"type": "String",
"example": "3 s"
}
}
},
"appCustomization": "Personalizzazione",
"appCustomizationSubtitle": "Tema, lingua, voce e quickpills",
"quickActionsDescription": "Scorciatoie nella chat",
@@ -332,12 +323,413 @@
"display": "Schermo",
"realtime": "Tempo reale",
"transportMode": "Modalità di trasporto",
"transportModeDescription": "Scegli come l'app si connette per gli aggiornamenti in tempo reale.",
"mode": "Modalità",
"transportModePolling": "Polling di fallback",
"transportModeWs": "Solo WebSocket",
"transportModePollingInfo": "Quando WebSocket è bloccato passa a HTTP polling. Torna a WebSocket appena possibile.",
"transportModeWsInfo": "Minore overhead, ma può fallire dietro proxy/firewall restrittivi.",
"websocketConnectionError": "Impossibile stabilire una connessione in tempo reale. Si prega di controllare la rete e la configurazione del server.",
"websocketReconnectFailed": "Connessione in tempo reale fallita. Lo streaming potrebbe non funzionare correttamente."
"quickActionsSelectedCount": "{count, plural, =0{Nessuna azione selezionata} one{{count} azione selezionata} other{{count} azioni selezionate}}",
"@quickActionsSelectedCount": {
"description": "Subtitle indicating how many quick actions are selected.",
"placeholders": {
"count": {
"type": "int",
"example": "2"
}
}
},
"autoSelectDescription": "Lascia che l'app scelga il modello migliore",
"@autoSelectDescription": {
"description": "Explains what the auto-select model setting does."
},
"ttsEngineLabel": "Motore",
"@ttsEngineLabel": {
"description": "Label for selecting the text-to-speech engine."
},
"ttsEngineDevice": "Sul dispositivo",
"@ttsEngineDevice": {
"description": "Chip label for using on-device text-to-speech."
},
"ttsEngineServer": "Server",
"@ttsEngineServer": {
"description": "Chip label for using server-side text-to-speech."
},
"modelCapabilityMultimodal": "Multimodale",
"@modelCapabilityMultimodal": {
"description": "Capability chip label for models that support multimodal input."
},
"modelCapabilityReasoning": "Ragionamento",
"@modelCapabilityReasoning": {
"description": "Capability chip label for models that support reasoning features."
},
"voiceCallTitle": "Chiamata vocale",
"@voiceCallTitle": {
"description": "Title displayed on the voice call screen."
},
"voiceCallPause": "Pausa",
"@voiceCallPause": {
"description": "Button label to pause a voice call."
},
"voiceCallResume": "Riprendi",
"@voiceCallResume": {
"description": "Button label to resume a paused voice call."
},
"voiceCallStop": "Stop",
"@voiceCallStop": {
"description": "Button label to stop the active voice call."
},
"voiceCallEnd": "Termina chiamata",
"@voiceCallEnd": {
"description": "Button label to end the voice call session."
},
"chooseDifferentFile": "Scegli un altro file",
"@chooseDifferentFile": {
"description": "Action label prompting the user to pick another file."
},
"errorWithMessage": "Errore: {message}",
"@errorWithMessage": {
"description": "Error label with appended message text.",
"placeholders": {
"message": {
"type": "String",
"example": "Network timeout"
}
}
},
"networkTimeoutError": "Connessione scaduta. Controlla la tua connessione Internet e riprova.",
"@networkTimeoutError": {
"description": "User-facing message when a network request times out."
},
"networkUnreachableError": "Impossibile raggiungere il server. Controlla l'URL del server e la connessione Internet.",
"@networkUnreachableError": {
"description": "User-facing message when the server cannot be reached."
},
"networkServerNotResponding": "Il server non risponde. Verifica che sia attivo e raggiungibile.",
"@networkServerNotResponding": {
"description": "User-facing message when the server does not respond to a request."
},
"networkGenericError": "Problema di connessione di rete. Controlla la connessione Internet.",
"@networkGenericError": {
"description": "Fallback message for generic network errors."
},
"serverError500": "Il server sta avendo problemi. Di solito è temporaneo.",
"@serverError500": {
"description": "Message when a 500 error is encountered."
},
"serverErrorUnavailable": "Il server è temporaneamente non disponibile. Riprova tra poco.",
"@serverErrorUnavailable": {
"description": "Message when a 502/503 error is encountered."
},
"serverErrorTimeout": "Il server ha impiegato troppo tempo a rispondere. Riprova.",
"@serverErrorTimeout": {
"description": "Message when the server times out."
},
"serverErrorGeneric": "Il server è in difficoltà. Riprova più tardi.",
"@serverErrorGeneric": {
"description": "Fallback server error message."
},
"authSessionExpired": "La sessione è scaduta. Accedi di nuovo.",
"@authSessionExpired": {
"description": "Message when an authentication session expires."
},
"authForbidden": "Non hai l'autorizzazione per eseguire questa azione.",
"@authForbidden": {
"description": "Message when the user lacks required permissions."
},
"authInvalidToken": "Il token di autenticazione non è valido. Accedi di nuovo.",
"@authInvalidToken": {
"description": "Message when the authentication token is invalid."
},
"authGenericError": "Problema di autenticazione. Accedi di nuovo.",
"@authGenericError": {
"description": "Fallback authentication error message."
},
"validationInvalidEmail": "Inserisci un indirizzo email valido.",
"@validationInvalidEmail": {
"description": "Validation message for invalid email input."
},
"validationWeakPassword": "La password non soddisfa i requisiti. Controllala e riprova.",
"@validationWeakPassword": {
"description": "Validation message for weak passwords."
},
"validationMissingRequired": "Compila tutti i campi obbligatori.",
"@validationMissingRequired": {
"description": "Validation message when required fields are missing."
},
"validationFormatError": "Alcune informazioni non sono nel formato corretto. Controllale e riprova.",
"@validationFormatError": {
"description": "Validation message for generic formatting issues."
},
"validationGenericError": "Controlla i dati inseriti e riprova.",
"@validationGenericError": {
"description": "Fallback validation message."
},
"fileNotFound": "File non trovato. Potrebbe essere stato spostato o eliminato.",
"@fileNotFound": {
"description": "Message when a file cannot be located."
},
"fileAccessDenied": "Impossibile accedere al file. Controlla i permessi.",
"@fileAccessDenied": {
"description": "Message when file access is denied."
},
"fileTooLarge": "Il file è troppo grande. Scegline uno più piccolo.",
"@fileTooLarge": {
"description": "Message when a file exceeds size limits."
},
"fileGenericError": "Problema con il file. Prova con un file diverso.",
"@fileGenericError": {
"description": "Fallback file error message."
},
"permissionCameraRequired": "È necessario il permesso della fotocamera. Attivalo nelle impostazioni.",
"@permissionCameraRequired": {
"description": "Message when camera permission is missing."
},
"permissionStorageRequired": "È necessario il permesso di archiviazione. Attivalo nelle impostazioni.",
"@permissionStorageRequired": {
"description": "Message when storage permission is missing."
},
"permissionMicrophoneRequired": "È necessario il permesso del microfono. Attivalo nelle impostazioni.",
"@permissionMicrophoneRequired": {
"description": "Message when microphone permission is missing."
},
"permissionGenericError": "È necessaria un'autorizzazione. Controlla i permessi dell'app nelle impostazioni.",
"@permissionGenericError": {
"description": "Fallback permission error message."
},
"actionRetryRequest": "Riprova la richiesta.",
"@actionRetryRequest": {
"description": "Description for retrying a failed request."
},
"actionVerifyConnection": "Verifica la connessione a Internet.",
"@actionVerifyConnection": {
"description": "Description for checking internet connectivity."
},
"actionRetryOperation": "Riprova l'operazione.",
"@actionRetryOperation": {
"description": "Description for retrying the same operation."
},
"actionRetryAfterDelay": "Attendi un momento e riprova.",
"@actionRetryAfterDelay": {
"description": "Description suggesting a short delay before retrying."
},
"actionSignInToAccount": "Accedi al tuo account.",
"@actionSignInToAccount": {
"description": "Description for signing back into the app."
},
"actionSelectAnotherFile": "Seleziona un altro file.",
"@actionSelectAnotherFile": {
"description": "Description for choosing a different file."
},
"actionOpenAppSettings": "Apri le impostazioni dell'app per concedere i permessi.",
"@actionOpenAppSettings": {
"description": "Description for opening system or app settings."
},
"actionRetryAfterPermission": "Riprova dopo aver concesso il permesso.",
"@actionRetryAfterPermission": {
"description": "Description for retrying once permissions are granted."
},
"actionReturnToPrevious": "Torna alla schermata precedente.",
"@actionReturnToPrevious": {
"description": "Description for navigating back to the prior screen."
},
"continueAction": "Continua",
"@continueAction": {
"description": "Button label to continue an action or flow."
},
"loadingShort": "Caricamento",
"@loadingShort": {
"description": "Short loading label used for accessibility."
},
"loadingAnnouncement": "Caricamento: {message}",
"@loadingAnnouncement": {
"description": "Screen reader announcement when loading a resource.",
"placeholders": {
"message": {
"type": "String",
"example": "Messages"
}
}
},
"errorAnnouncement": "Errore: {error}",
"@errorAnnouncement": {
"description": "Screen reader announcement for an error.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
}
}
},
"errorAnnouncementWithSuggestion": "Errore: {error}. {suggestion}",
"@errorAnnouncementWithSuggestion": {
"description": "Screen reader announcement for an error with a follow-up suggestion.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
},
"suggestion": {
"type": "String",
"example": "Please try again later."
}
}
},
"successAnnouncement": "Operazione riuscita: {message}",
"@successAnnouncement": {
"description": "Screen reader announcement for successful actions.",
"placeholders": {
"message": {
"type": "String",
"example": "Profile updated"
}
}
},
"requiredFieldLabel": "{label} *",
"@requiredFieldLabel": {
"description": "Label text indicating a required field.",
"placeholders": {
"label": {
"type": "String",
"example": "Email"
}
}
},
"requiredFieldHelper": "Campo obbligatorio",
"@requiredFieldHelper": {
"description": "Helper text indicating that the field is required."
},
"switchOnLabel": "Attivo",
"@switchOnLabel": {
"description": "Semantic label when a switch is enabled."
},
"switchOffLabel": "Disattivo",
"@switchOffLabel": {
"description": "Semantic label when a switch is disabled."
},
"dialogSemanticLabel": "Dialogo: {title}",
"@dialogSemanticLabel": {
"description": "Semantic label describing the dialog title.",
"placeholders": {
"title": {
"type": "String",
"example": "Settings"
}
}
},
"previousLabel": "Precedente",
"@previousLabel": {
"description": "Label for navigating to the previous item."
},
"nextLabel": "Successivo",
"@nextLabel": {
"description": "Label for navigating to the next item."
},
"themePaletteConduitLabel": "Conduit",
"@themePaletteConduitLabel": {
"description": "Palette name for the default Conduit theme."
},
"themePaletteConduitDescription": "Tema neutro e pulito progettato per Conduit.",
"@themePaletteConduitDescription": {
"description": "Description of the Conduit palette."
},
"themePaletteClaudeLabel": "Claude",
"@themePaletteClaudeLabel": {
"description": "Palette name inspired by the Claude web client."
},
"themePaletteClaudeDescription": "Palette calda e tattile ispirata al client web Claude.",
"@themePaletteClaudeDescription": {
"description": "Description of the Claude palette."
},
"themePaletteT3ChatLabel": "T3 Chat",
"@themePaletteT3ChatLabel": {
"description": "Palette name inspired by the T3 Stack brand."
},
"themePaletteT3ChatDescription": "Sfumature vivaci ispirate al brand T3 Stack.",
"@themePaletteT3ChatDescription": {
"description": "Description of the T3 Chat palette."
},
"themePaletteCatppuccinLabel": "Catppuccin",
"@themePaletteCatppuccinLabel": {
"description": "Palette name for Catppuccin colors."
},
"themePaletteCatppuccinDescription": "Palette morbida di tonalità pastello.",
"@themePaletteCatppuccinDescription": {
"description": "Description of the Catppuccin palette."
},
"themePaletteTangerineLabel": "Tangerine",
"@themePaletteTangerineLabel": {
"description": "Palette name for Tangerine colors."
},
"themePaletteTangerineDescription": "Palette calda arancione e ardesia.",
"@themePaletteTangerineDescription": {
"description": "Description of the Tangerine palette."
},
"@onboardStartTitle": {
"description": "Onboarding card: start chatting title.",
"placeholders": {
"username": {
"type": "String",
"example": "Alex"
}
}
},
"@notAnImageFile": {
"description": "Error when a referenced file is not an image.",
"placeholders": {
"fileName": {
"type": "String",
"example": "image.txt"
}
}
},
"@failedToLoadImage": {
"description": "Error including the underlying reason when image loading fails.",
"placeholders": {
"error": {
"type": "String",
"example": "Network error"
}
}
},
"@ttsVoicesForLanguage": {
"description": "Section header for voices matching the app language",
"placeholders": {
"language": {
"type": "String",
"example": "EN"
}
}
},
"voiceCallReady": "Pronto",
"@voiceCallReady": {
"description": "Status label shown when the voice call is ready to start."
},
"voiceCallConnecting": "Connessione...",
"@voiceCallConnecting": {
"description": "Status label shown while the voice call is connecting."
},
"voiceCallListening": "In ascolto",
"@voiceCallListening": {
"description": "Status label shown while the call is listening for input."
},
"voiceCallPaused": "In pausa",
"@voiceCallPaused": {
"description": "Status label shown when the call is paused."
},
"voiceCallProcessing": "Elaborazione...",
"@voiceCallProcessing": {
"description": "Status label shown while the call processes a response."
},
"voiceCallSpeaking": "Sta parlando",
"@voiceCallSpeaking": {
"description": "Status label shown while the assistant is speaking."
},
"voiceCallDisconnected": "Disconnesso",
"@voiceCallDisconnected": {
"description": "Status label shown when the voice call has ended or disconnected."
},
"voiceCallErrorHelp": "Controlla:\n• Sono state concesse le autorizzazioni del microfono\n• Il riconoscimento vocale è disponibile sul dispositivo\n• Sei connesso al server",
"@voiceCallErrorHelp": {
"description": "Guidance shown when the voice call encounters an error."
}
}