diff --git a/i18n/locales/ca_ES.json b/i18n/locales/ca_ES.json new file mode 100644 index 0000000..14d4b07 --- /dev/null +++ b/i18n/locales/ca_ES.json @@ -0,0 +1,5515 @@ +{ + "you": "Vós", + "select": "Selecciona", + "conversations": "Converses", + "copyToClipboard": "Copia al porta-retalls", + "toCopyMarkdownDirectly": "per copiar el markdown directament", + "clickToCopyMarkdownDirectly": "Feu clic per copiar el markdown directament", + "toShowMoreOptions": "per mostrar més opcions", + "longPressOrAltClickForMoreOptions": "Premeu llargament o Alt+clic per a més opcions", + "onMessage": "al missatge", + "selectModel": "@:select un model | @:select els models", + "manageModels": "@:manage els models", + "required": "Obligatori", + "optional": "Opcional", + "systemPrompt": "Indicació del sistema", + "systemPromptAttachMode": "Mode d'adjunció de la indicació del sistema", + "userPrompt": "Indicació de l'usuari", + "delete": "Suprimeix {item}", + "deleteAll": "Suprimeix-ho tot", + "create": "Crea", + "edit": "Edita", + "expandTextarea": "Amplia l'editor", + "collapseTextarea": "Replega l'editor", + "enable": "Activa", + "disable": "Desactiva", + "save": "Desa", + "saved": "Desat", + "cancel": "Cancel·la", + "close": "Tanca", + "bookmarked": "Marcat", + "pinned": "Fixat", + "update": "Actualitza", + "apply": "Aplica", + "reset": "Restableix", + "icon": "Icona", + "clear": "Esborra", + "apiKey": "Clau API", + "models": "Models", + "available": "{itemType} disponibles", + "unavailable": "No disponible", + "detected": "Detectat", + "continue": "Continua", + "undetected": "No detectat", + "welcome": "Us donem la benvinguda!", + "plan": "Pla", + "allChangesSaved": "S'han desat tots els canvis", + "toolbar": "Barra d'eines", + "bookmark": "Marcador | Marcadors", + "waitingMessage": { + "waiting": "S'està esperant :: Un moment :: Només un instant :: Un segon :: La paciència és una virtut :: Gairebé hi som :: S'està carregant la meravella", + "fetchingWebResults": "S'està cercant al web :: S'està navegant per internet :: S'està mirant en línia :: S'està escorcollant el web :: S'està consultant l'oracle :: S'està demanant amablement a internet :: S'està capbussant al ciberespai :: S'està minant el web", + "queryingKnowledgeStack": "S'està consultant la @:knowledgeStack.title :: S'està cercant en el vostre coneixement :: S'estan examinant els vostres documents :: S'està explorant la vostra base de coneixement :: S'està furgant en la vostra saviesa :: S'està consultant la vostra biblioteca digital :: S'estan examinant els vostres arxius :: S'està furgant en les vostres notes", + "preparingTools": "S'estan preparant les eines :: S'estan enllestint les eines :: S'estan configurant les eines :: S'estan carregant les eines :: S'estan esmolant els instruments :: S'està muntant la caixa d'eines :: S'estan escalfant els motors :: S'està preparant l'espai de treball", + "connectingToModel": "El model fa la seva màgia ✨ :: La IA està pensant :: S'està processant la vostra sol·licitud :: S'hi està treballant :: S'estan fent els càlculs :: Les neurones s'activen :: S'està reflexionant a fons :: S'està computant brillantor :: Mode cervell activat :: S'està invocant la intel·ligència", + "processingContext": "S'està processant el context :: S'està entenent el context :: S'està analitzant el context :: S'està llegint la situació :: S'estan lligant els caps :: S'està copsant la visió de conjunt :: S'està encaixant tot plegat :: S'està donant sentit a les coses", + "streaming": "S'està transmetent en temps real :: S'està enviant la resposta :: S'està lliurant la resposta :: S'està transmetent :: S'estan teletransportant els resultats :: De camí cap a vós :: En ruta cap a vós :: Arriba ben calent", + "scrubbingPIIData": "S'estan netejant les dades personals :: S'està protegint la vostra privadesa :: S'està suprimint la informació personal :: S'estan anonimitzant les dades :: S'estan guardant bé els secrets :: Mode de privadesa activat :: S'estan ocultant les parts sensibles :: Mode d'incògnit activat", + "synthesizingQuery": "S'està sintetitzant la consulta per a millors resultats :: S'està optimitzant la vostra pregunta :: S'està millorant la consulta :: S'estan afinant els termes de cerca :: S'està polint la vostra sol·licitud :: S'està ajustant la pregunta :: S'està creant la consulta perfecta :: S'està fent brillar les vostres paraules", + "fetchingLiveContexts": "S'estan obtenint els contextos en directe :: S'estan recollint dades en temps real :: S'estan obtenint coneixements nous :: S'està sincronitzant amb fonts en directe :: S'està accedint al flux de dades :: S'està recollint informació actual :: S'estan actualitzant els canals de context :: S'estan recol·lectant actualitzacions en directe :: S'està connectant amb el batec" + }, + "progress": { + "initializing": "S'està inicialitzant..." + }, + "add": "Afegeix", + "actionBar": { + "expandGroup": "Amplia {group}", + "collapseGroup": "Replega {group}", + "showExtraAddOns": "Mostra els complements addicionals", + "hideExtraAddOns": "Amaga els complements addicionals", + "groups": { + "model": "Model i indicacions", + "data": "Dades i coneixement", + "tools": "Eines i personalitats" + } + }, + "unauthorized": "No autoritzat", + "valid": "Vàlid", + "invalid": "No vàlid", + "done": "Fet!", + "confirm": "Confirma", + "shareWithSyncedSplits": "Comparteix amb les divisions sincronitzades", + "source": "Font | Fonts", + "groundingSources": "Fonts de fonamentació", + "manage": "Gestiona", + "chat": "Xat | Xats", + "advancedOptions": "Opcions avançades", + "duplicate": "Duplica", + "manageItem": "@:manage {item}", + "success": "Correcte!", + "notes": "Notes", + "viewNotes": "Mostra les notes", + "error": "Error!", + "warning": "Avís", + "authorized": "Autoritzat", + "notAuthorized": "No autoritzat", + "authorize": "Autoritza", + "reauthorize": "Torna a autoritzar", + "deauthorize": "Suprimeix l'autorització", + "failedToDelete": "No s'ha pogut suprimir", + "failedToSave": "No s'ha pogut desar", + "failedToUpdate": "No s'ha pogut actualitzar", + "updatedSuccess": "actualitzat.", + "applyAndShareWithSyncedSplits": "Aplica i comparteix amb les divisions sincronitzades", + "clickToEdit": "Feu clic per editar", + "clickToAddSystemPrompt": "Feu clic per afegir una indicació del sistema", + "pause": "Posa en pausa", + "resume": "Reprèn", + "retry": "Torna-ho a provar", + "stop": "Atura", + "run": "Executa", + "rerun": "Torna a executar", + "remove": "Elimina", + "skip": "Omet", + "unskip": "No ometis", + "startImporting": "Comença la importació", + "new": "Nou", + "entry": "Entrada | Entrades", + "import": "Importa", + "connect": "Connecta", + "disconnect": "Desconnecta", + "reconnect": "Torna a connectar", + "selectTargetFolder": "Selecciona la carpeta de destinació", + "createNewFolderForImport": "Crea una carpeta nova per als elements importats", + "newFolderName": "Nom de la carpeta nova", + "remote": "Remot", + "local": "Local", + "strength": "Punt fort | Punts forts", + "provider": "Proveïdor", + "capability": "{count} capacitat | {count} capacitats", + "preset": "Predefinit | Predefinits", + "saveAsPreset": "Desa com a predefinit", + "append": "Afegeix al final", + "prepend": "Afegeix al principi", + "replace": "Substitueix", + "description": "Descripció", + "mode": "Mode", + "addOns": "Complements", + "user": "Usuari", + "assistant": "Assistent", + "assistantMessage": "Missatge de l'assistent", + "connectionInfo": "Informació de connexió", + "export": "Exporta", + "exportOptions": "Opcions d'exportació", + "chooseFile": "Trieu un fitxer", + "purpose": "Finalitat", + "download": "Baixa", + "downloads": "Baixades", + "downloadAsJson": "Baixa com a JSON", + "install": "Instal·la", + "installed": "Instal·lat", + "modified": "Modificat", + "created": "Creat", + "minimize": "Minimitza", + "status": "Estat", + "type": "Tipus", + "yes": "Sí", + "fileSize": "Mida del fitxer", + "size": "Mida", + "likes": "M'agrada | M'agrada", + "cancelled": "Cancel·lat", + "parameterSize": "Mida dels paràmetres", + "quantization": "Quantització", + "quantizationLevel": "Nivell de quantització", + "contextSize": "Mida del context", + "defaultToModelMax": "Per defecte, el màxim del model", + "llamaCppContextSizeDescription": "Nombre màxim de tokens que el model processa alhora. Establiu-lo a 0 per fer servir el màxim del model. Els valors més alts augmenten l'ús de memòria. Aquest valor es desa globalment per a cada model amb LLaMa.cpp. El context es reparteix equitativament entre el nombre de sol·licituds simultànies definit a la configuració del servei LLaMa.cpp.", + "truncationStrategy": { + "truncateMiddle": "Trunca pel mig", + "truncateOld": "Trunca els antics", + "none": "Cap" + }, + "truncationStrategyDescription": "Com gestionar els missatges quan s'acosta el límit del context.", + "storage": "Emmagatzematge", + "params": "Paràmetres", + "arch": "Arquitectura", + "filter": "Filtre", + "treeControls": { + "title": "Ordena i mostra", + "searchPlaceholder": "Cerca...", + "clear": "Restableix", + "foldersFirst": "Primer les carpetes", + "itemsFirst": "Primer els elements", + "sort": { + "none": "Cap", + "name": "Nom", + "title": "Títol", + "created": "Creat", + "updated": "Actualitzat", + "lastUsed": "Darrer ús", + "ascending": "Ascendent", + "descending": "Descendent" + }, + "visibility": { + "label": "Visibilitat", + "empty": { + "show": "Mostra les carpetes buides", + "hide": "Amaga les carpetes buides" + }, + "counts": { + "show": "Mostra el recompte d'elements", + "hide": "Amaga el recompte d'elements" + } + } + }, + "noSearchResults": "No s'ha trobat cap {item} per a aquesta cerca", + "loading": "S'està carregant", + "invite": "Convida", + "refresh": "Actualitza", + "email": "Adreça electrònica", + "role": "Rol", + "admin": "Administrador", + "owner": "Propietari", + "inActive": "Inactiu", + "argument": "Argument|Arguments", + "abort": "Interromp", + "send": "Envia", + "remindMeLater": "Recorda-m'ho més tard", + "text": "Text", + "folders": "Carpetes", + "folder": "Carpeta | @:folders", + "title": "Títol", + "search": { + "label": "Cerca", + "scope": { + "active": "Actiu", + "archived": "Arxivat", + "all": "Tot" + } + }, + "fuzzySearch": { + "enabled": "Cerca aproximada activada", + "disabled": "Cerca aproximada desactivada", + "enabledHint": "Cerca aproximada activada. Feu clic per canviar", + "disabledHint": "Cerca aproximada desactivada. Feu clic per canviar" + }, + "none": "Cap", + "change": "Canvia", + "expandAllProjects": "Amplia tots els projectes", + "collapseAllProjects": "Replega tots els projectes", + "expandAllFolders": "Amplia totes les carpetes", + "collapseAllFolders": "Replega totes les carpetes", + "clone": { + "title": "Clona {item}", + "successMessage": { + "detail": "S'ha clonat {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut clonar {item}" + } + }, + "notesPurposePlaceholder": "Afegiu notes que us ajudin a recordar la finalitat d'aquest {item}; també les veuran els models, cosa que els proporciona més detalls sobre com utilitzar aquest {item} (@:optional)", + "endpointTestResults": "Resultats de la prova del punt final", + "testConnection": "Prova la connexió", + "emptyPlaceholder": "No s'ha trobat cap {item}", + "selectItem": "@:select {item}", + "selectedItemLabel": "{count} {title}", + "feature": "Funcionalitat|Funcionalitats", + "raw": "En brut", + "rawOutput": "Sortida en brut", + "property": "Propietat|Propietats", + "configure": "Configura", + "context": "Context | Contextos", + "path": "Camí | Camins", + "project": { + "title": "Projecte | Projectes", + "createRootProject": "Projecte nou a l'arrel", + "projectName": "Nom del projecte", + "projectDescription": "Descripció del projecte", + "defaultModel": "Model per defecte", + "customInstructions": "Instruccions personalitzades", + "addChildProject": "Afegeix un projecte fill", + "promoteToRoot": { + "title": "Mou la carpeta a l'arrel", + "errorMessage": { + "detail": "No s'ha pogut moure el projecte a l'arrel." + }, + "successMessage": { + "detail": "El projecte s'ha mogut correctament a l'arrel." + } + }, + "deleteProject": "Suprimeix el projecte", + "setDefaultForNewConversations": "Estableix com a projecte per defecte", + "unsetDefaultForNewConversations": "Desfés el projecte per defecte", + "orphanageProjectName": "Divers", + "includeProjectContext": "Inclou el context del projecte", + "deleteConfirmation": { + "header": "Suprimeix el projecte", + "message": "Segur que voleu suprimir {projectName} i totes les seves converses?", + "rejectLabel": "@:cancel", + "acceptLabel": "Suprimeix", + "successMessage": { + "detail": "S'ha suprimit el projecte" + } + }, + "deleteAllConversations": { + "title": "Suprimeix totes les converses", + "description": "Segur que voleu suprimir totes les converses de {projectName}? Aquesta acció no es pot desfer.", + "successMessage": { + "detail": "S'ha suprimit {count} conversa | S'han suprimit {count} converses", + "empty": "No hi ha converses per suprimir" + }, + "errorMessage": { + "detail": "No s'han pogut suprimir les converses" + } + }, + "archiveAllConversations": { + "title": "Arxiva totes les converses", + "description": "Voleu arxivar totes les converses de {projectName}? Es mouran a l'arxiu i es podran restaurar més endavant.", + "confirmLabel": "Arxiva-ho tot", + "successMessage": { + "detail": "S'ha arxivat {count} conversa | S'han arxivat {count} converses" + }, + "errorMessage": { + "detail": "No s'han pogut arxivar les converses" + } + }, + "projectForm": { + "addFiles": "Afegeix fitxers", + "editProject": "Edita el projecte", + "createNewProject": "Projecte nou", + "dragAndDropFiles": "Arrossegueu i deixeu anar els fitxers que s'adjuntaran a cada conversa d'aquest projecte.", + "successMessage": { + "createDetail": "S'ha creat el projecte", + "createDetailHidden": "S'ha creat el projecte! De moment està amagat perquè és buit. Feu clic al botó de sota per mostrar-lo ara, o apareixerà automàticament quan hi afegiu la primera conversa.", + "updateDetail": "S'ha actualitzat el projecte" + }, + "errorMessage": { + "createDetail": "No s'ha pogut crear el projecte", + "updateDetail": "No s'ha pogut actualitzar el projecte" + } + }, + "emptyProjectVisibilityToast": { + "showButton": "Mostra els projectes buits", + "enabled": "Ara els projectes buits són visibles" + }, + "startNewToGetStarted": "Inicieu una conversa nova per començar" + }, + "selectedModel": "Model seleccionat", + "endpoint": "Punt final", + "authToken": "Testimoni d'autenticació", + "before": "Abans", + "after": "Després", + "method": "Mètode", + "httpMethod": "@:method HTTP", + "get": "Get", + "post": "Post", + "presetAlreadyExistsMessage": "Ja existeix un predefinit amb el mateix nom.", + "duplicatePresetOverwriteMessage": "@:presetAlreadyExistsMessage Si el deseu, se sobreescriurà el predefinit existent.", + "noPropsAvailable": "No hi ha cap {propsName} disponible. Afegiu-ne un de personalitzat.", + "localAI": "IA local", + "branch": { + "clickToLabel": "Feu clic per afegir una etiqueta", + "labelPlaceholder": "Etiqueta de la branca (màx. 30 car.)", + "labelBranch": "Etiqueta la branca...", + "labelDialogTitle": "Etiqueta la branca", + "noLabel": "Sense etiqueta", + "clickForOptions": "Feu clic per a més opcions", + "timeline": { + "title": "Explorador de branques", + "viewAll": "Explorador de branques...", + "branchNumber": "Branca {n}", + "current": "Actual", + "branches": "Branques", + "compare": "Compara" + }, + "diff": { + "title": "Compara les branques", + "compare": "Compara les branques", + "exitCompare": "Surt del mode de comparació", + "selectFirst": "Seleccioneu la primera branca a comparar", + "selectSecond": "Seleccioneu la segona branca a comparar", + "selected": "Seleccionat", + "identical": "El contingut és idèntic", + "leftBranch": "Primera branca", + "rightBranch": "Segona branca", + "selectBranch": "Seleccioneu una branca", + "selectBranchesToCompare": "Seleccioneu dues branques a dalt per comparar-ne el contingut", + "switchToBranch": "Canvia a {name}", + "viewDiff": "Diferències", + "viewSideBySide": "Costat per costat" + } + }, + "conversation": { + "title": "Conversa | Converses", + "conversationTitle": "Títol de la conversa", + "contextShieldErrorMessage": { + "summary": "No s'ha pogut generar el resum del context.", + "detail": "Consulteu Configuració > Notificacions per a més detalls." + }, + "sendErrorMessage": { + "summary": "No s'ha pogut enviar el missatge.", + "detail": "Consulteu Configuració > Notificacions per a més detalls. {error}" + }, + "contextSizeError": { + "summary": "El missatge supera el límit del context", + "detail": "El vostre missatge amb els resultats de la cerca i el context és massa gran per a aquest model. Proveu de: augmentar la mida del context des dels paràmetres del model, reduir els resultats de la cerca, esborrar l'historial de la conversa, fer servir un model amb un context més gran (16k+) o escurçar les instruccions del sistema." + }, + "deleteConversation": "Suprimeix la conversa", + "addNewConversation": "Afegeix una conversa nova", + "newConversation": "Conversa nova", + "treeControls": { + "title": "Ordena i mostra", + "projectSort": { + "none": "Cap", + "name": "Nom", + "created": "Creat", + "ascending": "Ascendent", + "descending": "Descendent", + "projectsFirst": "Primer els projectes" + }, + "conversationSort": { + "none": "Cap", + "title": "Títol", + "created": "Creat", + "lastActivity": "Darrera activitat", + "ascending": "Ascendent", + "descending": "Descendent" + }, + "priority": { + "none": "Sense prioritat", + "pinned": "Primer els fixats", + "bookmarked": "Primer els marcats" + }, + "visibility": { + "label": "Visibilitat", + "recents": { + "show": "Mostra els recents i els fixats", + "hide": "Amaga els recents i els fixats" + }, + "archive": { + "show": "Mostra l'arxiu", + "hide": "Amaga l'arxiu" + }, + "empty": { + "show": "Mostra els projectes buits", + "hide": "Amaga els projectes buits" + }, + "counts": { + "show": "Mostra el recompte de converses", + "hide": "Amaga el recompte de converses" + } + }, + "clear": "Restableix" + }, + "promptPlaceHolder": { + "normal": { + "focused": "Premeu {trigger} per a ordres ràpides O comenceu a escriure...", + "unfocused": "Premeu / per posar el focus aquí i començar a escriure" + } + }, + "deleteConfirmation": { + "header": "Suprimeix la conversa", + "message": "Segur que voleu suprimir la conversa seleccionada i totes les seves divisions de xat? | Segur que voleu suprimir les converses seleccionades i totes les seves divisions de xat?", + "rejectLabel": "Cancel·la", + "acceptLabel": "Suprimeix", + "successMessage": { + "detail": "S'ha suprimit la conversa" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir la conversa" + } + }, + "convertToChat": { + "title": "Converteix en xat", + "successMessage": { + "detail": "S'ha convertit la conversa en xat" + }, + "errorMessage": { + "detail": "No s'ha pogut convertir la conversa en xat" + } + }, + "convertToForgeCanvas": { + "title": "Converteix en @:forge.forgeCanvas", + "successMessage": { + "detail": "S'ha convertit la conversa en @:forge.forgeCanvas" + }, + "errorMessage": { + "detail": "No s'ha pogut convertir la conversa en @:forge.forgeCanvas" + } + }, + "cloneAncestorsSuccess": { + "detail": "Els missatges s'han clonat correctament a la nova divisió" + }, + "cloneAncestorsError": { + "detail": "No s'han pogut clonar els missatges a la nova divisió" + }, + "cloneAncestorsToNewConversationSuccess": { + "detail": "Els missatges s'han clonat correctament a la nova conversa" + }, + "cloneAncestorsToNewConversationError": { + "detail": "No s'han pogut clonar els missatges a la nova conversa" + }, + "archive": { + "groupLabel": "Arxiva", + "orphanProject": "Conversa òrfena", + "bannerMessage": "Aquesta conversa està arxivada. Desarxiveu-la per continuar la conversa.", + "bannerHint": "En enviar un missatge nou, es desarxivarà automàticament.", + "unarchiveAction": "Desarxiva", + "autoUnarchivedToast": "La conversa s'ha desarxivat automàticament.", + "archivedToast": "S'ha arxivat {count} conversa | S'han arxivat {count} converses", + "unarchivedToast": "S'ha restaurat {count} conversa | S'han restaurat {count} converses", + "archiveSingle": "Arxiva", + "unarchiveSingle": "Desarxiva", + "unload": "Descarrega els elements arxivats", + "unloaded": "S'han descarregat els elements arxivats", + "error": "No s'ha pogut actualitzar l'estat de l'arxiu. Torneu-ho a provar.", + "archiveMultiple": "Arxiva {item}" + } + }, + "conversationActions": { + "exportConversation": { + "title": "Exporta la conversa com a JSON", + "successMessage": "Les converses s'han exportat correctament com a JSON" + }, + "showAllSplits": "Mostra totes les divisions", + "saveSplitsAs": "Desa les divisions com a", + "newSingleSplitChat": "Xat nou d'una sola divisió", + "splitPreset": "Predefinit de divisió | Predefinits de divisió", + "splitPresetForm": { + "saveTitle": "Desa les divisions com a predefinit", + "editTitle": "Edita el predefinit de divisió {presetName}", + "presetName": "Nom del predefinit", + "presetOptions": "Opcions del predefinit", + "presetOptionsPlaceholder": "Selecciona les opcions del predefinit", + "savePreset": "Desa el predefinit", + "successMessage": { + "saveDetail": "S'ha afegit el predefinit de divisió", + "editDetail": "S'ha actualitzat el predefinit de divisió" + }, + "errorMessage": { + "saveDetail": "No s'ha pogut desar el predefinit de divisió" + } + }, + "deleteSplitPresetConfirmation": { + "header": "Suprimeix el predefinit de divisió", + "message": "Segur que voleu suprimir {splitPresetName}? ", + "successMessage": { + "detail": "S'ha suprimit el predefinit de divisió" + } + }, + "compactMode": "Mode compacte", + "enableCompactMode": "Activa el mode compacte", + "disableCompactMode": "Desactiva el mode compacte", + "splitWidths": { + "title": "Amplada de les divisions", + "slim": "Estret", + "balanced": "Equilibrat", + "roomy": "Ample", + "spacious": "Espaiós", + "full": "Complet" + } + }, + "responseConfiguration": { + "title": "Configuració de la resposta", + "selectPresetPlaceholder": "Seleccioneu un predefinit...", + "saveAsPreset": "Desa com a predefinit", + "commonSettings": { + "title": "Configuració comuna" + }, + "advancedParameters": { + "title": "Paràmetres avançats", + "description": "Objecte JSON per a paràmetres avançats del model", + "placeholder": "" + }, + "providerOptions": { + "title": "Opcions del proveïdor", + "description": "Configuració específica del proveïdor", + "placeholder": "" + }, + "thinkingConfig": { + "title": "Configuració del raonament", + "description": "Configuració del raonament ampliat", + "notice": "El proveïdor pot ignorar o respectar parcialment la configuració del raonament" + }, + "customParameters": { + "title": "Paràmetres personalitzats", + "helper": "El proveïdor pot ignorar-los o respectar-los parcialment", + "keyPlaceholder": "custom_param", + "valuePlaceholder": "valor", + "deleteConfirm": { + "title": "Suprimeix el paràmetre", + "message": "Voleu suprimir el paràmetre personalitzat «{param}»?" + }, + "errors": { + "missingKey": "La clau del paràmetre és obligatòria.", + "reserved": "Aquesta clau està reservada per als paràmetres integrats.", + "duplicate": "Ja existeix un paràmetre amb aquesta clau." + } + }, + "json": { + "invalid": "JSON no vàlid" + }, + "tooltips": { + "constraintMode": "El mode de restricció està activat", + "freeformMode": "El mode lliure està activat: sense límits mín./màx." + }, + "expandOtherOptions": "Amplia per veure altres opcions", + "collapseOtherOptions": "Replega les altres opcions", + "parameters": { + "temperature": { + "label": "Temperatura", + "helper": "Controla l'aleatorietat (0=concentrat, 2=creatiu)" + }, + "topP": { + "label": "Top P", + "helper": "Massa de probabilitat que es manté durant el mostreig de nucli" + }, + "topK": { + "label": "Top K", + "helper": "Limita la selecció de tokens als K tokens principals" + }, + "maxOutputTokens": { + "label": "Màxim de tokens de sortida", + "helper": "Nombre màxim de tokens per a les respostes", + "helperWithLimit": "Nombre màxim de tokens per a les respostes (límit {0})" + }, + "numCtx": { + "label": "Mida de la finestra de context", + "helper": "Nombre màxim de tokens acceptats a la indicació", + "helperWithLimit": "Nombre màxim de tokens acceptats a la indicació (límit {0})", + "llamaCppHint": "Establiu-lo a 0 per fer servir la mida màxima de context del model" + }, + "presencePenalty": { + "label": "Penalització de presència", + "helper": "Penalitza els tokens nous segons si ja apareixen al text" + }, + "frequencyPenalty": { + "label": "Penalització de freqüència", + "helper": "Penalitza els tokens segons la freqüència al text fins ara" + }, + "repeatPenalty": { + "label": "Penalització de repetició", + "helper": "Desincentiva la repetició de frases" + }, + "repeatLastN": { + "label": "Repeteix els últims N", + "helper": "Finestra de context per aplicar la penalització de repetició" + }, + "minP": { + "label": "Min P", + "helper": "Probabilitat acumulada mínima per a la selecció de tokens" + }, + "mirostat": { + "label": "Mirostat", + "helper": "Estabilitza la perplexitat dinàmicament", + "options": { + "off": "Desactivat", + "v1": "Mirostat 1.0", + "v2": "Mirostat 2.0" + } + }, + "mirostatTau": { + "label": "Mirostat Tau", + "helper": "Nivell de sorpresa objectiu (més baix = més segur)" + }, + "mirostatEta": { + "label": "Mirostat Eta", + "helper": "Taxa d'aprenentatge per a l'ajust de Mirostat" + }, + "numGpu": { + "label": "Capes de GPU", + "helper": "Nombre de capes que es descarreguen a la GPU" + }, + "numThread": { + "label": "Fils", + "helper": "Fils de CPU que s'utilitzen per a la generació" + } + } + }, + "modelParams": { + "params": "Paràmetres", + "title": "Paràmetres del model", + "advancedParams": "Paràmetres avançats", + "providerOptions": "Opcions del proveïdor", + "maxTokens": "Màxim de tokens de sortida (antic)", + "maxOutputTokens": "Màxim de tokens de sortida", + "temperature": "Temperatura", + "topP": "Top P", + "presencePenalty": "Penalització de presència", + "frequencyPenalty": "Penalització de freqüència", + "numCtx": "@:size de la finestra de context", + "numGpu": "Nombre de capes de GPU", + "selectPlaceholder": "@:select o insereix un paràmetre", + "selectPresetPlaceholder": "@:select un predefinit", + "saveAsPreset": "Desa com a predefinit", + "addParameter": "Afegeix un paràmetre nou", + "extraParams": "Paràmetres addicionals", + "applyAndSaveAsDefault": "Aplica i desa com a valor per defecte del model", + "savePresetForm": { + "title": "Desa els paràmetres com a predefinit", + "errorMessage": { + "detail": "No s'ha pogut desar el predefinit de paràmetres." + }, + "successMessage": { + "detail": "S'ha desat el predefinit de paràmetres." + } + }, + "deletePresetConfirm": { + "title": "Suprimeix el predefinit", + "message": "Segur que voleu suprimir {presetName}?", + "errorMessage": { + "detail": "No s'ha pogut suprimir el predefinit de paràmetres." + }, + "successMessage": { + "detail": "S'ha suprimit el predefinit de paràmetres." + } + }, + "thinkingEffort": { + "label": "Esforç de raonament", + "light": "Raona lleugerament", + "moderate": "Raona moderadament", + "deep": "Raona a fons", + "default": "Per defecte", + "none": "Cap", + "dynamic": "Dinàmic", + "exclude": "Exclou" + } + }, + "chatSplitActions": { + "title": "Opcions de divisió", + "addSplitChat": "Afegeix un xat dividit", + "hideSplit": "Amaga la divisió", + "copySplitToNewConversation": "Copia la divisió a una conversa nova", + "moveSplitToNewConversation": "Mou la divisió a una conversa nova", + "deleteSplit": "Suprimeix la divisió", + "removeSplit": "Elimina la divisió", + "splitRemoved": "S'ha eliminat la divisió", + "splitReset": "S'ha restablert la divisió", + "copySplitToNewConversationSuccess": { + "detail": "S'ha copiat la divisió a una conversa nova" + }, + "moveSplitToNewConversationSuccess": { + "detail": "S'ha mogut la divisió a una conversa nova" + }, + "copySplitToNewConversationError": { + "detail": "No s'ha pogut copiar la divisió a una conversa nova" + }, + "moveSplitToNewConversationError": { + "detail": "No s'ha pogut moure la divisió a una conversa nova" + }, + "exportOrCopyChat": { + "exportChat": "Exporta el xat", + "copyChat": "Copia el xat", + "activeBranchAsJson": "Branca activa com a JSON", + "activeBranchAsMarkdown": "Branca activa com a Markdown", + "allBranchesAsJson": "Totes les branques com a JSON", + "successMessage": "S'ha {action} el xat com a {format}", + "action": { + "export": "exportat", + "copy": "copiat" + } + }, + "showAllHiddenMessages": { + "title": "Mostra tots els missatges amagats", + "successMessage": { + "detail": "Ara tots els missatges amagats són visibles" + } + }, + "deleteConfirmation": { + "header": "Suprimeix la divisió", + "message": "Segur que voleu suprimir aquesta divisió?", + "rejectLabel": "@:cancel", + "acceptLabel": "Suprimeix" + } + }, + "message": { + "title": "Missatge|Missatges", + "currentMessageAndDescendants": "Missatge i descendents", + "sendOnEnter": "Envia amb Retorn", + "sendModifier": { + "label": "Modificador d'enviament", + "none": "Cap", + "shift": "Maj", + "alt": "Alt", + "ctrl": "Ctrl", + "meta": "Meta" + }, + "resendUserMessage": "Torna a enviar el missatge de l'usuari", + "sendAsAssistantMessage": "Envia com a missatge de l'assistent", + "sendAsAssistantMessageHelp": "Enviar un missatge com a «Assistent» us permet donar forma a la conversa afegint vós mateix respostes de la IA. La IA continuarà com si hagués escrit aquell missatge. És útil per aportar context o orientar les respostes.", + "sentAsAssistantBadge": "Enviat com a missatge de l'assistent", + "manuallyEdited": "Editat manualment", + "stopGeneration": "Atura", + "renderingActions": { + "bookmark": "Marca el missatge | Marca els missatges", + "removeBookmark": "Treu el marcador | Treu els marcadors", + "deleteMessage": "Suprimeix el missatge | Suprimeix els missatges", + "removeMessage": "Elimina el missatge", + "regenerateAssistantMessage": "Regenera el missatge de l'assistent com a branca nova", + "continueGeneration": "Continua la generació", + "useAsPromptInNewSplit": "Fes-lo servir com a indicació en una divisió nova", + "foldUp": "Plega els missatges de dalt", + "unfold": "Desplega els missatges de dalt", + "cloneAncestorsToNewSplit": "Clona amb els ascendents a una divisió nova", + "cloneAncestorsToNewConversation": "Clona amb els ascendents a una conversa nova", + "extraActions": "Accions addicionals" + }, + "noModelSelectedErrorMessage": { + "detail": "No s'ha seleccionat cap model. Seleccioneu un model per enviar un missatge" + }, + "currentMessageDeleteConfirmation": { + "header": "Suprimeix el missatge", + "message": "Segur que voleu suprimir aquest missatge?" + }, + "currentMessageAndDescendantsDeleteConfirmation": { + "header": "Suprimeix el missatge i els seus descendents", + "message": "Segur que voleu suprimir aquest missatge i tots els seus descendents?" + } + }, + "slashCommands": { + "title": "Ordres ràpides", + "noMatches": "No hi ha ordres coincidents", + "hint": "Escriviu \\ seguit d'una ordre o àlies", + "executed": { + "regenerate": "S'està regenerant el missatge...", + "shield": "S'ha aplicat l'escut de context", + "compress": "S'està comprimint amb l'escut...", + "bookmark": "Missatge marcat", + "copy": "S'ha copiat al porta-retalls", + "continue": "S'està continuant la generació...", + "resend": "S'està reenviant el missatge..." + } + }, + "shiftcutMode": { + "title": "Shiftcuts", + "description": "Activa o desactiva la funció Shiftcuts. A diferència de les dreceres de teclat estàndard, els Shiftcuts s'activen prement dues vegades la tecla Maj i després una altra tecla per executar una acció; per exemple: «t» per obrir un xat dividit nou, «e» per obrir el selector d'entorn, «1» per mostrar o amagar la barra lateral i «m» per obrir el minimapa." + }, + "urlEndpoint": "Punt final de l'URL", + "giveUniqueNamePlaceholder": "Poseu-li un nom únic", + "duplicateName": "El nom de {item} està duplicat o no és vàlid. Introduïu un nom únic.", + "manageData": { + "firstBackupReminder": "No heu fet cap còpia de seguretat de les dades. Voleu exportar-les per fer-ne una còpia?", + "scheduledBackupReminder": "Fa 24 h de la darrera còpia de seguretat. Voleu exportar les dades per fer-ne una còpia?", + "nonPersistentStorage": "El navegador pot esborrar l'emmagatzematge si hi ha manca d'espai. Us recomanem fer còpies de seguretat de les dades regularment.", + "exportData": "Exporta les dades", + "clearData": "Esborra les dades", + "restoreData": "Restaura les dades", + "dragAndDropExportedData": "Arrossegueu i deixeu anar la còpia de seguretat de les dades des de la qual voleu restaurar.", + "restoreDataWarning": "Restaurar des d'un fitxer de còpia de seguretat reemplaçarà totes les dades existents. Us recomanem exportar primer una còpia de seguretat.", + "exportErrorMessage": { + "detail": "No s'han pogut exportar les dades" + }, + "backupData": "Fes una còpia de seguretat de les dades", + "exportSuccessMessage": { + "detail": "S'han exportat les dades" + }, + "clearErrorMessage": { + "detail": "No s'han pogut esborrar les dades" + }, + "clearSuccessMessage": { + "detail": "S'han esborrat les dades" + }, + "confirmationActionPlaceholder": "Introduïu «{string}» aquí", + "proceedWithConfirmationAction": "Introduïu «{string}» a continuació per continuar", + "invalidConfirmationString": { + "summary": "@:warning", + "detail": "La confirmació no és vàlida. Introduïu «{string}» per continuar." + }, + "clearDataConfirmation": { + "header": "Esborra les dades", + "message": "Segur que voleu esborrar totes les dades? Aquesta acció no es pot desfer.", + "rejectLabel": "Cancel·la", + "acceptLabel": "Esborra" + }, + "restoreDataConfirmation": { + "fileNotSelectedWarning": { + "summary": "@:warning", + "message": "Seleccioneu un fitxer des del qual restaurar" + }, + "header": "Restaura les dades", + "message": "Segur que voleu restaurar totes les dades? Aquesta acció reemplaçarà totes les dades existents i no es pot desfer. Us recomanem exportar primer una còpia de seguretat.", + "rejectLabel": "Cancel·la", + "acceptLabel": "Restaura" + }, + "importDataSuccessMessage": { + "detail": "S'han importat les dades" + }, + "importDataErrorMessage": { + "detail": "No s'han pogut importar les dades" + } + }, + "setupItem": { + "label": "Configura {item}", + "success": "S'ha completat la configuració de {item}", + "failure": "No s'ha pogut configurar {item}" + }, + "onboard": { + "greeting": "Us donem la benvinguda a Msty Studio!", + "getStarted": "Necessitem com a mínim un proveïdor de models per començar.", + "desktop": { + "greeting": "Us donem la benvinguda a Msty!", + "getStarted": "Com voleu començar?", + "customLocation": { + "title": "Teniu models d'Ollama/Msty?", + "titleMLX": "Teniu models MLX?", + "titleLlamaCpp": "Teniu models de LLaMA.cpp?", + "description": "Podeu utilitzar directament els models d'Ollama o de Msty que ja tingueu, si en teniu, o bé especificar una ubicació personalitzada. Nota: continuarem fent servir el nostre propi servei per executar aquests models.", + "descriptionMLX": "Si encara no teniu cap model MLX, podeu especificar una ubicació personalitzada on voleu desar-los.", + "descriptionMLXWithSwama": "Hem trobat models MLX a la memòria cau del vostre Hugging Face Hub! Els podeu utilitzar directament o especificar una ubicació personalitzada.", + "descriptionLlamaCpp": "Especifiqueu una ubicació personalitzada on voleu desar els vostres models GGUF per a LLaMA.cpp.", + "noLocationSet": "No s'ha definit cap ubicació", + "setYourOwn": "Definiu-ne una de pròpia", + "notAvailableForMLX": "Les ubicacions de models personalitzades no estan disponibles per a MLX", + "placeholder": "Introduïu el camí dels models personalitzats" + }, + "setupLocalAI": { + "description": "Per començar, es baixarà {modelName}. Podeu triar un model diferent.", + "pros": { + "item1": "Feu servir models com ara DeepSeek R1, Meta Llama4, Microsoft Phi4, IBM Granite, Google Gemma, etc.", + "item2": "Useu-lo sense connexió i mantingueu les vostres dades privades", + "item3": "Els models es poden baixar i utilitzar de franc", + "item4": "Instal·leu i feu servir models especialitzats" + }, + "cons": { + "item1": "Necessita emmagatzematge i memòria addicionals" + }, + "successMessage": { + "summary": "Ja està!", + "detail": "Ara ja podeu començar a xatejar amb els vostres models de manera privada i segura." + }, + "errorMessage": { + "summary": "Error en configurar @:localAIService", + "detail": "No hem pogut configurar @:localAIService{'.'} Reviseu els registres per a més detalls. {errorMessage}", + "epermDetail": "Hi ha hagut un problema de permisos en configurar la IA local. Podeu tornar a executar l'aplicació com a administrador (no recomanat) o bé plantejar-vos instal·lar l'aplicació només per a un sol usuari (recomanat).", + "abortDetail": "{errorMessage} Plantegeu-vos instal·lar la IA local des dels fitxers d'arxiu si continueu rebent aquest error. Visiteu https://docs.msty.studio/getting-started/onboarding" + } + }, + "setupMLX": { + "errorMessage": { + "summary": "Error en configurar el servei MLX", + "detail": "No hem pogut configurar el servei MLX. Reviseu els registres per a més detalls. {errorMessage}" + }, + "description": "Per començar, es baixarà {modelName}. MLX és el marc de treball d'Apple optimitzat per a Apple Silicon.", + "experimentalInfo": "MLX es troba actualment en mode experimental. Pot tenir algunes limitacions i imperfeccions. Comuniqueu qualsevol problema a l'equip.", + "pros": { + "item1": "Optimitzat per a Apple Silicon (M1, M2, M3, M4)", + "item2": "Ús eficient de la memòria amb arquitectura de memòria unificada", + "item3": "Admet models MLX, SafeTensors i GGUF", + "item4": "Rendiment natiu a macOS" + }, + "cons": { + "item1": "Només disponible als Mac amb Apple Silicon", + "item2": "Selecció de models més reduïda en comparació amb Ollama" + }, + "successMessage": { + "summary": "Configuració d'MLX completada!", + "detail": "Ara podeu fer servir models MLX amb un rendiment òptim al vostre Mac." + }, + "progress": { + "checkingCompatibility": "S'està comprovant la compatibilitat del sistema...", + "downloadingBinary": "S'està baixant el servidor MLX...", + "startingService": "S'està iniciant el servei MLX...", + "settingUp": "S'està configurant l'MLX...", + "downloadProgress": "S'està baixant el model: {progress}%" + } + }, + "setupLlamaCpp": { + "experimentalInfo": "La compatibilitat amb LLaMA.cpp és experimental i s'està desenvolupant activament", + "errorMessage": { + "summary": "Error en configurar el servei LLaMA.cpp", + "detail": "No hem pogut configurar el servei LLaMA.cpp. Reviseu els registres per a més detalls. {errorMessage}" + }, + "description": "Per començar, es baixarà {modelName}. LLaMA.cpp ofereix una inferència d'IA eficient i multiplataforma.", + "pros": { + "item1": "Funciona a Windows, macOS i Linux", + "item2": "Admet acceleració tant per CPU com per GPU", + "item3": "Ús eficient de la memòria i inferència ràpida", + "item4": "Compatible amb el format de model GGUF" + }, + "cons": { + "item1": "Requereix l'aplicació d'escriptori", + "item2": "El rendiment depèn de la configuració del maquinari" + }, + "successMessage": { + "summary": "Configuració de LLaMA.cpp completada!", + "detail": "Ara podeu fer servir models de LLaMA.cpp amb un rendiment eficient al vostre sistema." + }, + "progress": { + "checkingCompatibility": "S'està comprovant la compatibilitat del sistema...", + "downloadingBinary": "S'està baixant el servidor de LLaMA.cpp...", + "startingService": "S'està iniciant el servei de LLaMA.cpp...", + "settingUp": "S'està configurant LLaMA.cpp...", + "downloadProgress": "S'està baixant: {progress}%" + } + }, + "addRemoteModelsProvider": { + "description": "Amb la majoria de proveïdors en línia, us caldrà obtenir una clau API del lloc web del proveïdor. {findYourKey}", + "findYourKey": "Trobeu la vostra clau API", + "pros": { + "item1": "Feu servir OpenAI, Azure, Claude Sonnet, Google Gemini, Perplexity, Ollama remot, Msty remot, etc.", + "item2": "Comenceu sense baixar cap model", + "item3": "Alguns proveïdors ofereixen funcions addicionals com ara la generació d'imatges, la cerca web, etc." + }, + "cons": { + "item1": "Requereix connexió a internet per xatejar", + "item2": "Es poden aplicar càrrecs del proveïdor" + } + } + }, + "modelsAvailableCount": "{count} model disponible | {count} models disponibles", + "modelsAddedCount": "S'ha afegit {count} model | S'han afegit {count} models", + "forgetThisProvider": "Oblida aquest proveïdor", + "submitAndContinue": "Som-hi!", + "getSidecar": "No teniu @:localAI? Obteniu @:remoteToolsConnector.title per a una configuració amb un sol clic", + "completedWithProvider": { + "summary": "Ja està!", + "detail": "Ara ja podeu xatejar amb un dels models de {providerName}." + }, + "continueSetup": "Continua la configuració de {service}" + }, + "login": { + "enterEmail": "Introduïu la vostra adreça electrònica", + "errorMessage": "L'adreça electrònica no és vàlida o alguna cosa ha anat malament. Torneu-ho a provar.", + "successMessage": "S'ha enviat l'enllaç d'inici de sessió a { email }" + }, + "modelHub": { + "title": "Centre de models", + "languageModelsProviders": { + "title": "Proveïdors de models", + "subtitle": "Accediu a models del núvol o de servidors remots.", + "autoFetchModels": "La llista de models s'obté automàticament", + "addLanguageModelsProvider": "Afegeix un proveïdor", + "prosAndCons": { + "pros": [ + "Feu servir OpenAI GPT, Azure, Claude Sonnet, Google Gemini, Perplexity, Msty remot, Ollama remot, etc.", + "Comenceu ràpidament", + "No cal baixar res" + ], + "cons": [ + "Requereix connexió a internet per xatejar", + "Es poden aplicar càrrecs del proveïdor" + ] + }, + "deleteConfirmation": { + "header": "Suprimeix el proveïdor", + "message": "Segur que voleu suprimir {providerName}?", + "successMessage": { + "detail": "S'ha suprimit el proveïdor" + }, + "errorMessage": { + "summary": "Error", + "detail": "No s'ha pogut suprimir el proveïdor" + } + }, + "syncProviderWithWorkspaceForm": { + "titleNew": "Copia a un altre espai de treball", + "titleUpdate": "Copia/sincronitza a altres espais de treball", + "descriptionNew": "Copieu aquest proveïdor a un o més espais de treball.", + "descriptionUpdate": "Sincronitzeu aquest proveïdor a un o més espais de treball. Si s'havia copiat abans, s'actualitzarà. Si no, s'afegirà.", + "selectWorkspaces": "Selecciona els espais de treball", + "availableWorkspaces": "Espais de treball disponibles" + }, + "providerForm": { + "addTitle": "Afegeix un proveïdor", + "updateTitle": "Actualitza el proveïdor", + "newHeader": "Proveïdor de models de llenguatge nou", + "editHeader": "Edita el proveïdor de models de llenguatge", + "modelsProvider": "Proveïdor de models", + "modelId": "ID del model", + "modelName": "Nom del model", + "providerName": "Nom del proveïdor", + "providerUrl": "URL del proveïdor", + "providerToken": "Testimoni del proveïdor", + "saveProvider": "Desa el proveïdor", + "selectProvider": "Selecciona el proveïdor", + "namePlaceholder": "Poseu-li un nom (opcional)", + "selectModels": "Selecciona els models", + "availableModels": "Models disponibles", + "addCustomModel": "Afegeix un model personalitzat", + "inferenceEndpoint": "Punt final d'inferència (ha de començar per http:// o https://)", + "baseURL": "URL base", + "resourceName": "Nom del recurs (s'ignorarà si s'ha definit l'URL base)", + "apiVersion": "@:version de l'API", + "region": "Regió d'AWS", + "accessKeyId": "ID de la clau d'accés", + "secretAccessKey": "Clau d'accés secreta", + "sessionToken": "Testimoni de sessió (opcional)", + "notAllModelsCompatible": "No tots els models s'han provat amb Msty i pot ser que no admeti tots els models disponibles al proveïdor.", + "enterAndManuallyFetchModels": "Feu clic a «Recupera els models» per obtenir els models disponibles del proveïdor (pot caldre una clau API), o bé afegiu un model manualment a continuació.", + "enterAndFetchModels": "Introduïu la vostra clau API per intentar obtenir tots els models disponibles de {providerName}, o bé afegiu manualment un model personalitzat.", + "fetchModels": "Recupera els models", + "modelsFilter": { + "all": "Tots els models", + "selected": "Seleccionat", + "unselected": "No seleccionat" + }, + "purposeFilter": { + "all": "Totes les finalitats" + }, + "searchInModels": "Cerca models...", + "lmsCorsNote": "Heu de tenir CORS activat a LM Studio per treballar amb Msty", + "openAICompatibleNote": "La majoria de punts finals de proveïdors compatibles amb OpenAI necessiten el prefix /v1, p. ex. https://example.com/v1. Si teniu problemes, proveu d'afegir /v1 al final del punt final.", + "successMessage": { + "addDetail": "S'ha afegit el proveïdor de models {providerName}", + "updateDetail": "S'ha actualitzat el proveïdor de models {providerName}" + }, + "errorMessage": { + "addDetail": "No s'ha pogut afegir el proveïdor", + "updateDetail": "No s'ha pogut actualitzar el proveïdor" + }, + "bedrockLongTermCredsWarning": "No es recomana utilitzar credencials de llarga durada per a Amazon Bedrock.", + "awsRegionExample": "p. ex. us-east-1" + }, + "toggleVisibility": { + "errorMessage": { + "detail": "No s'ha pogut actualitzar la visibilitat del proveïdor" + }, + "successMessage": { + "detail": "Ara {provider} està {visibility}" + } + }, + "modelsCount": "Recompte de models", + "showInSelector": "Mostra al selector de models", + "availableModels": "Models disponibles", + "noModels": "No hi ha cap model disponible per a aquest proveïdor", + "modelUpdated": "El model s'ha actualitzat correctament", + "modelUpdateError": "No s'ha pogut actualitzar el model", + "manageProviders": "Gestiona", + "addNewProvider": "Afegeix-ne un de nou" + }, + "sidecarLocalAIProxyEndpoint": { + "title": "Punt final del proxy d'@:localAI de @:remoteToolsConnector.title", + "description": "Assegureu-vos que @:remoteToolsConnector.title s'està executant i és accessible a l'URL proporcionat mitjançant túnel. Copieu i enganxeu la informació completa de connexió del túnel amb el testimoni i l'URL." + }, + "mstyRemoteEndpoint": { + "description": "Assegureu-vos que Msty Desktop s'està executant amb les connexions remotes activades.", + "learnMore": "Apreneu com activar les connexions remotes" + }, + "mstyLocalEndpoint": { + "description": "Aquest servei s'executa sempre que l'aplicació està en marxa. És possible que hàgiu d'actualitzar el número de port si el port de la IA local ha canviat. Si no, val més deixar-lo tal com està." + }, + "ollamaRemoteEndpoint": { + "description": "Quan feu servir Ollama autoallotjat, assegureu-vos que Ollama s'està executant i és accessible a l'URL proporcionat. Heu d'afegir https://msty.studio als orígens permesos en iniciar el servei d'Ollama.", + "placeholder": "p. ex. http://localhost:11434 o https://ollama.com" + }, + "mlxEndpoint": { + "description": "Aquest proveïdor s'utilitza per executar models MLX als Mac amb Apple Silicon. El punt final es corregeix automàticament per assegurar que coincideix amb la vostra configuració local d'MLX. El podeu canviar temporalment si cal." + }, + "llamacppEndpoint": { + "description": "Aquest proveïdor s'utilitza per executar models de LLaMA.cpp. El més probable és que no calgui canviar el punt final per defecte. Si ho feu, assegureu-vos que el servei de LLaMA.cpp s'està executant i és accessible a l'URL proporcionat." + }, + "localModels": { + "title": "Models d'@:localAI", + "noCompatibleProviders": "No hi ha cap proveïdor compatible disponible per gestionar els models locals. Afegiu com a mínim un proveïdor de tipus Msty remot o Ollama remot per utilitzar els models locals.", + "activeDownloads": "{count} baixada activa | {count} baixades actives", + "featured": { + "title": "Models destacats" + }, + "installed": { + "title": "Models instal·lats" + }, + "customOllamaModelPlaceholder": "O bé instal·leu el model per etiqueta, p. ex. {example}", + "alreadyInstalledErrorMessage": { + "summary": "Ja instal·lat", + "detail": "El model {modelName} ja està instal·lat" + }, + "abortInstalling": { + "title": "Interromp la instal·lació de {modelName}", + "successMessage": { + "detail": "S'ha interromput la instal·lació de {modelName}" + } + }, + "deleteConfirmation": { + "header": "Desinstal·la el model", + "message": "Segur que voleu desinstal·lar {modelName}?", + "successMessage": { + "detail": "S'ha eliminat el model" + }, + "errorMessage": { + "detail": "No s'ha pogut desinstal·lar el model" + } + }, + "modelInstall": { + "successMessage": { + "detail": "El model {modelName} ja es pot fer servir" + }, + "errorMessage": { + "detail": "No s'ha pogut instal·lar el model {modelName}", + "newerVersion": "{modelName} requereix una versió més recent de la IA local. Actualitzeu a la darrera versió des de Configuració > IA local > Versió del servei > ... > Força l'actualització del servei de IA local" + } + }, + "ollamaModels": { + "title": "Models d'Ollama" + }, + "huggingfaceModels": { + "title": "Models de Hugging Face", + "searchPlaceholder": "Cerqueu per autor o model, o enganxeu l'URL d'un repositori de Hugging Face", + "searchPlaceholderAlt": "Trobeu models per nom, autor o URL. O bé comenceu amb una de les famílies de models de sota.", + "searching": "S'estan cercant models..." + }, + "ggufImport": { + "tabTitle": "Importa GGUF", + "title": "Importa un model GGUF", + "description": "Seleccioneu un fitxer de model GGUF del vostre sistema de fitxers per importar-lo a {providerLabel}.", + "activeImports": "Importacions actives", + "noFileSelected": "No s'ha seleccionat cap fitxer", + "selectGgufFilePrompt": "Feu clic al botó de sota per seleccionar un fitxer GGUF", + "dragDropOrClick": "Arrossegueu i deixeu anar un fitxer GGUF aquí, o feu clic al botó de sota", + "dropFileHere": "Deixeu anar el fitxer aquí", + "releaseToUpload": "Deixeu anar per seleccionar el fitxer", + "selectGgufFile": "Selecciona un fitxer GGUF", + "chooseDifferentFile": "Tria un fitxer diferent", + "importModel": "Importa el model", + "modelName": "Nom del model", + "modelNamePlaceholder": "p. ex., el-meu-model-personalitzat", + "modelNameDescription": "Aquest serà el nom que fareu servir per referir-vos al model a les converses.", + "removeFile": "Elimina el fitxer", + "dismissJob": "Descarta", + "useSymlink": "Usa un enllaç simbòlic (estalvia espai de disc)", + "symlinkDescription": "Crea un enllaç simbòlic en comptes de copiar el fitxer. Només està disponible per a servidors locals.", + "process": { + "calculatingDigest": "S'està calculant el resum del fitxer", + "uploadingFile": "S'està pujant el fitxer", + "creatingSymlink": "S'està creant l'enllaç simbòlic", + "creatingModel": "S'està creant el model" + }, + "success": "El model {modelName} s'ha importat correctament", + "labels": { + "name": "Nom", + "file": "Fitxer", + "status": "Estat", + "error": "Error" + }, + "status": { + "uploading": "S'està pujant", + "creating": "S'està creant el model", + "completed": "Completat", + "error": "Error", + "cancelled": "Cancel·lat" + }, + "errors": { + "invalidFile": "Seleccioneu un fitxer GGUF vàlid" + } + }, + "safetensorsImport": { + "tabTitle": "Importa Safetensors", + "title": "Importa un model Safetensors", + "description": "Seleccioneu un directori que contingui pesos de model safetensors per importar-los a {providerLabel}. Les arquitectures admeses inclouen Gemma, Llama, Mistral i Phi.", + "activeImports": "Importacions actives", + "noDirectorySelected": "No s'ha seleccionat cap directori", + "selectDirectoryHint": "El directori ha de contenir fitxers safetensors i un config.json", + "selectDirectoryTitle": "Selecciona el directori de Safetensors", + "selectDirectory": "Selecciona un directori", + "chooseDifferentDirectory": "Tria un directori diferent", + "importModel": "Importa el model", + "modelName": "Nom del model", + "modelNamePlaceholder": "p. ex., el-meu-model-personalitzat", + "modelNameDescription": "Aquest serà el nom que fareu servir per referir-vos al model a les converses.", + "removeDirectory": "Elimina el directori", + "process": { + "scanningDirectory": "S'està escanejant el directori", + "processingFile": "S'està processant el fitxer {current} de {total}", + "creatingModel": "S'està creant el model a partir de safetensors" + }, + "success": "El model {modelName} s'ha importat correctament", + "labels": { + "name": "Nom", + "directory": "Directori", + "status": "Estat", + "error": "Error" + }, + "status": { + "uploading": "S'estan pujant els fitxers", + "creating": "S'està creant el model", + "completed": "Completat", + "error": "Error", + "cancelled": "Cancel·lat" + }, + "filesSelected": "fitxers seleccionats", + "errors": { + "desktopOnly": "La importació de safetensors només està disponible a l'aplicació d'escriptori", + "selectFailed": "No s'ha pogut seleccionar el directori", + "noValidFiles": "No s'ha trobat cap fitxer safetensors vàlid al directori seleccionat" + } + } + }, + "llamacppModels": { + "title": "Models de LLaMA.cpp", + "activeDownloads": "{count} baixada activa de LLaMA.cpp | {count} baixades actives de LLaMA.cpp", + "alreadyInstalledErrorMessage": { + "summary": "Ja instal·lat", + "detail": "El model de LLaMA.cpp {modelName} ja està instal·lat" + }, + "installSuccessMessage": { + "summary": "Model a punt", + "detail": "El model de LLaMA.cpp {modelName} ja es pot fer servir" + }, + "installErrorMessage": { + "summary": "La instal·lació ha fallat", + "detail": "No s'ha pogut instal·lar el model de LLaMA.cpp {modelName}" + }, + "modelInstall": { + "successMessage": { + "detail": "S'ha instal·lat el model de LLaMA.cpp {modelName}" + }, + "errorMessage": { + "detail": "No s'ha pogut instal·lar el model de LLaMA.cpp {modelName}" + }, + "abortedMessage": { + "detail": "S'ha interromput la baixada del model de LLaMA.cpp {modelName}" + } + }, + "abortInstallErrorMessage": { + "detail": "No s'ha pogut cancel·lar la baixada del model de LLaMA.cpp" + }, + "abortInstallSuccessMessage": { + "detail": "S'ha cancel·lat la baixada del model de LLaMA.cpp {modelName}" + }, + "uninstallErrorMessage": { + "summary": "La desinstal·lació ha fallat", + "detail": "No s'ha pogut desinstal·lar el model de LLaMA.cpp {modelName}" + }, + "uninstallSuccessMessage": { + "summary": "S'ha eliminat el model", + "detail": "S'ha desinstal·lat el model de LLaMA.cpp {modelName}" + }, + "uninstallConfirmationMessage": { + "summary": "Desinstal·la el model de LLaMA.cpp", + "detail": "Segur que voleu desinstal·lar {modelName}?" + }, + "llamacppFeaturedModels": { + "title": "Models destacats de LLaMA.cpp" + }, + "llamacppInstalledModels": { + "title": "Models instal·lats de LLaMA.cpp" + }, + "llamacppCommunityModels": { + "title": "Models de la comunitat de LLaMA.cpp", + "description": "Navegueu, cerqueu i instal·leu models GGUF directament des de Hugging Face a la vostra carpeta local de models de LLaMA.cpp.", + "searchTitle": "Cerca models de la comunitat de LLaMA.cpp", + "searchPlaceholder": "Cerqueu models de LLaMA.cpp a Hugging Face", + "searchPlaceholderAlt": "Trobeu models GGUF compatibles amb LLaMA.cpp o trieu una de les famílies de models destacades de sota.", + "searching": "S'estan cercant models de LLaMA.cpp..." + } + }, + "mlxModels": { + "title": "Models MLX", + "notAppleSilicon": "Els models MLX només s'admeten als Mac amb Apple Silicon (M1, M2, M3, M4, etc.). El vostre dispositiu actual no és compatible.", + "noCompatibleProviders": "No hi ha cap proveïdor MLX compatible disponible. Afegiu com a mínim un proveïdor MLX per utilitzar els models MLX.", + "activeDownloads": "{count} baixada activa d'MLX | {count} baixades actives d'MLX", + "learnMore": "Més informació sobre MLX", + "featured": { + "title": "Models MLX destacats" + }, + "installed": { + "title": "Models MLX instal·lats" + }, + "alreadyInstalledErrorMessage": { + "summary": "Ja instal·lat", + "detail": "El model MLX {modelName} ja està instal·lat" + }, + "deleteConfirmation": { + "header": "Desinstal·la el model MLX", + "message": "Segur que voleu desinstal·lar {modelName}?", + "successMessage": { + "detail": "S'ha eliminat el model MLX" + }, + "errorMessage": { + "detail": "No s'ha pogut desinstal·lar el model MLX" + } + }, + "modelInstall": { + "successMessage": { + "detail": "El model MLX {modelName} ja es pot fer servir" + }, + "errorMessage": { + "detail": "No s'ha pogut instal·lar el model MLX {modelName}" + }, + "abortedMessage": { + "detail": "S'ha interromput la baixada del model MLX {modelName}" + } + }, + "mlxCommunityModels": { + "title": "Models de la comunitat d'MLX", + "searchTitle": "Cerca models de la comunitat d'MLX", + "searchPlaceholder": "Cerqueu models MLX de mlx-community de HuggingFace", + "searchPlaceholderAlt": "Trobeu models optimitzats per a MLX de HuggingFace. O bé comenceu amb una de les famílies de models de sota.", + "searching": "S'estan cercant models MLX..." + } + } + }, + "stickyPrompt": { + "title": "Indicació fixada", + "disableStickyPrompt": "Desactiva la indicació fixada", + "editDialog": { + "title": "Edita la indicació fixada", + "description": "Quan es fixa una indicació «fixada», s'afegeix al començament de cada missatge nou i s'ignoren les anteriors. Així la conversa es concentra en un únic context actiu. La indicació del sistema sempre s'inclou al context." + } + }, + "contextShield": { + "title": "Escut de context", + "enableContextShield": "Activa l'@:contextShield.title", + "enableContextShieldWithSplitsSync": "Activa l'@:contextShield.title{'.'} Mantingueu premut Opció/Alt per aplicar-lo a totes les divisions sincronitzades.", + "removeContextShield": "Treu l'@:contextShield.title", + "removeContextShieldWithSplitsSync": "Desactiva l'@:contextShield.title{'.'} Mantingueu premut Opció/Alt per treure'l de totes les divisions sincronitzades.", + "breakContext": "Trenca el context", + "customContext": "Context personalitzat", + "generateContextSummary": "Genera el resum del context", + "contextSummary": "Resum del context", + "editContextSummary": "Edita el resum del context", + "regenerateContextSummary": "Regenera el resum del context", + "clearContextSummary": "Esborra el resum del context", + "summaryDescriptionInfoHeader": "Aquest resum es genera a partir del context de les converses de dalt i s'inclou al context en generar missatges nous per sota d'aquest escut.", + "contextShieldWithSummary": "@:contextShield.title amb resum" + }, + "data": "Dades", + "advancedConfigurations": "Configuracions avançades", + "applicationInfo": { + "title": "Informació de l'aplicació", + "appVersion": { + "title": "Versió de l'aplicació", + "description": "Les darreres actualitzacions es comproven periòdicament i se us notificarà quan n'hi hagi una de nova disponible. També podeu comprovar les actualitzacions manualment, cosa que instal·larà automàticament les que hi hagi disponibles.", + "checkForUpdates": "Comprova i aplica les actualitzacions", + "enableAutoUpdates": "Activa les actualitzacions automàtiques", + "disableAutoUpdates": "Desactiva les actualitzacions automàtiques", + "viewChangelog": "Mostra el registre de canvis", + "checkingForUpdates": "S'estan comprovant les actualitzacions...", + "errorCheckingUpdates": "No s'han pogut comprovar les actualitzacions", + "autoUpdatesEnabled": "S'han activat les actualitzacions automàtiques", + "autoUpdatesDisabled": "S'han desactivat les actualitzacions automàtiques", + "updateAvailable": "Hi ha una actualització nova disponible", + "updateDownloading": "S'està baixant l'actualització...", + "noUpdatesAvailable": "Teniu la darrera versió" + }, + "modelsInfo": { + "title": "Informació dels models", + "description": "Actualitzeu les metadades dels vostres models locals. Aquesta informació inclou detalls de cada model, però no els fitxers del model. S'aplica tant als models emmagatzemats localment com als models en línia.", + "fetchLatest": "Recupera la darrera informació dels models", + "updated": "La informació dels models s'ha actualitzat correctament", + "errorUpdating": "No s'ha pogut actualitzar la informació dels models" + }, + "appSettings": { + "title": "Configuració de l'aplicació", + "description": "Restablir la configuració de l'aplicació als valors per defecte pot ajudar a resoldre possibles problemes. Això restaurarà les preferències per defecte de l'usuari, com ara l'aparença i el camí dels models, però no suprimirà cap dada, inclosos els xats o els models baixats o importats.", + "resetApp": "Restableix la configuració de l'aplicació", + "resetConfirm": { + "header": "Restableix la configuració de l'aplicació", + "message": "Segur que voleu restablir tota la configuració de l'aplicació als valors per defecte? Això restaurarà les preferències per defecte però no suprimirà les vostres dades." + }, + "resetSuccess": "La configuració de l'aplicació s'ha restablert correctament", + "resetError": "No s'ha pogut restablir la configuració de l'aplicació" + }, + "dataPaths": { + "title": "Camins de les dades", + "description": "Totes les dades, inclosos els models, les converses, la configuració i els registres, s'emmagatzemen localment al vostre dispositiu. Modifiqueu el contingut d'aquests directoris només si coneixeu l'estructura de fitxers de l'aplicació.", + "appData": "Dades de l'aplicació", + "appLogs": "Registres de l'aplicació", + "openInFinder": "Obre al Finder" + }, + "helpAndDiscussions": { + "title": "Ajuda i debats", + "description": "Connecteu amb la nostra comunitat a Discord per rebre assistència, compartir els vostres comentaris i estar al dia.", + "sayHi": "Saludeu!", + "viewDocs": "Mostra la documentació" + } + }, + "logViewer": { + "title": "Visualitzador de registres", + "description": "Visualitzeu i analitzeu els registres de l'aplicació en temps real. Feu servir els filtres i la cerca per resoldre problemes de manera eficient.", + "searchPlaceholder": "Cerca als registres...", + "refresh": "Actualitza els registres", + "autoRefreshOn": "Atura l'actualització automàtica", + "autoRefreshOff": "Activa l'actualització automàtica", + "pause": "Atura el desplaçament automàtic", + "resume": "Reprèn el desplaçament automàtic", + "copy": "Copia els registres al porta-retalls", + "download": "Baixa els registres", + "clearTemporarily": "Esborra la visualització dels registres", + "clearPermanently": "Esborra el fitxer de registres", + "showAllLogs": "Mostra tots els registres", + "clearPermanentlyConfirmation": { + "header": "Esborra el fitxer de registre", + "message": "Segur que voleu esborrar el fitxer de registre? Això suprimirà permanentment totes les entrades del registre." + }, + "loading": "S'estan carregant els registres...", + "noLogs": "No hi ha cap registre disponible", + "noMatchingLogs": "Cap registre coincideix amb els filtres actuals", + "totalLines": "{count} línia en total | {count} línies en total", + "filteredLines": "{count} línia filtrada | {count} línies filtrades", + "copiedToClipboard": "S'han copiat els registres al porta-retalls", + "downloaded": "Els registres s'han baixat correctament", + "clearedPermanently": "El fitxer de registre s'ha esborrat correctament", + "errorLoading": "No s'han pogut carregar els registres", + "errorCopying": "No s'han pogut copiar els registres", + "errorDownloading": "No s'han pogut baixar els registres", + "errorClearing": "No s'han pogut esborrar els registres", + "levels": { + "all": "Tots els nivells", + "error": "Error", + "warn": "@:warning", + "info": "Informació", + "debug": "Depuració" + } + }, + "notifications": { + "title": "Notificacions", + "description": "Reviseu i gestioneu les notificacions de l'aplicació, inclosos errors, avisos i esdeveniments informatius.", + "searchPlaceholder": "Cerca a les notificacions...", + "searchingAllLogs": "S'està cercant a totes les notificacions de la base de dades", + "refresh": "Actualitza les notificacions", + "autoRefreshOn": "Actualització automàtica activada", + "autoRefreshOff": "Activa l'actualització automàtica", + "copy": "Copia-ho tot al porta-retalls", + "copyLog": "Copia la notificació", + "download": "Baixa les notificacions", + "clearPermanently": "Esborra totes les notificacions", + "clearPermanentlyConfirmation": { + "header": "Esborra les notificacions", + "message": "Segur que voleu suprimir permanentment totes les notificacions? Aquesta acció no es pot desfer." + }, + "loading": "S'estan carregant les notificacions...", + "loadingMore": "S'està carregant més...", + "endOfList": "Final de la llista", + "noLogs": "No hi ha cap notificació disponible", + "totalLogs": "{count} notificació | {count} notificacions", + "displayedLogs": "Es mostren {count}", + "copiedToClipboard": "S'ha copiat la notificació al porta-retalls", + "downloaded": "Les notificacions s'han baixat correctament", + "clearedPermanently": "Les notificacions s'han esborrat correctament", + "deleted": "La notificació s'ha suprimit correctament", + "errorLoading": "No s'han pogut carregar les notificacions", + "errorCopying": "No s'ha pogut copiar la notificació", + "errorDownloading": "No s'han pogut baixar les notificacions", + "errorClearing": "No s'han pogut esborrar les notificacions", + "errorDeleting": "No s'ha pogut suprimir la notificació", + "purge": { + "label": "Purga les notificacions", + "olderThan1Day": "De fa més d'1 dia", + "olderThan7Days": "De fa més de 7 dies", + "olderThan15Days": "De fa més de 15 dies", + "olderThan30Days": "De fa més de 30 dies", + "all": "Tot", + "confirmHeader": "Purga les notificacions", + "confirmMessageDays": "Segur que voleu suprimir les notificacions de fa més de {days} dies? Aquesta acció no es pot desfer.", + "purge": "Purga", + "purged": "Les notificacions s'han purgat correctament", + "errorPurging": "No s'han pogut purgar les notificacions" + }, + "levels": { + "all": "Tots els nivells", + "error": "Errors", + "warn": "Avisos", + "info": "Informació" + } + }, + "sidebar": { + "expandGroup": "Amplia {group}", + "collapseGroup": "Replega {group}", + "showExtraItems": "Mostra els elements addicionals", + "hideExtraItems": "Amaga els elements addicionals", + "groups": { + "modelsPrompts": "Models i indicacions", + "personasTools": "Personalitats i eines", + "knowledgeInsights": "Coneixement i informació", + "system": "Sistema" + }, + "appUpdater": { + "version": "Versió {version}", + "restartToApply": "Reinicia per aplicar les actualitzacions", + "restart": "Reinicia ara", + "downloading": "S'està baixant l'actualització...", + "viewChangelog": "Mostra el registre de canvis", + "openingChangelog": "S'està obrint el registre de canvis...", + "errorHint": "Error d'actualització: feu clic per veure'n els detalls", + "readyHint": "Actualització a punt: reinicieu per aplicar-la", + "downloadingHint": "S'està baixant l'actualització... {percent}%", + "errorDialog": { + "header": "Error d'actualització", + "message": "S'ha produït un error en actualitzar: {error}", + "downloadManually": "Baixa manualment" + } + } + }, + "showInNativeFileManager": { + "mac": "Mostra al Finder", + "win": "Mostra a l'Explorador de fitxers", + "lin": "Mostra al gestor de fitxers" + }, + "settings": { + "title": "Configuració", + "general": "General", + "defaultPrompts": "Indicacions per defecte", + "prompts": { + "description": "Aquestes indicacions determinen com es generen els títols, es construeixen les consultes de cerca, es recupera el coneixement i es resumeix el context. Els canvis es desen a la configuració global d'aquest dispositiu (base de dades mestra) i s'apliquen a tots els espais de treball (no per espai de treball).", + "availablePrompts": "Indicacions disponibles", + "customized": "Personalitzat", + "customizedCount": "{count} personalitzades", + "modified": "Modificat", + "usingCustom": "S'usa la personalitzada", + "usingDefault": "S'usa la predeterminada", + "clickToEdit": "Feu clic per editar la indicació", + "variables": "Variables", + "lastModified": "Darrera modificació", + "selectPrompt": "Seleccioneu una indicació per personalitzar-la", + "clearContent": "Esborra el contingut", + "resetToDefault": "Restableix al valor per defecte", + "insertFromLibrary": "Insereix des de la biblioteca", + "saveChanges": "Desa els canvis", + "discardChanges": "Descarta els canvis", + "categories": { + "generation": "Generació de contingut", + "search": "Cerca i síntesi", + "analysis": "Anàlisi i extracció" + } + }, + "licenseAndAccess": "Llicència i accés", + "fontSize": "@:size de la lletra", + "defaultRTD": { + "sectionTitle": "Cerca de dades en temps real", + "title": "Proveïdor de RTD per defecte", + "description": "Trieu el proveïdor de cerca de dades en temps real per defecte que s'utilitzarà en crear converses noves.", + "saved": "{provider} s'ha establert com a proveïdor de RTD per defecte", + "saveError": "No s'ha pogut desar el proveïdor de RTD per defecte", + "noProvidersAvailable": "No hi ha cap proveïdor de RTD disponible", + "configureLabel": "Configura les opcions avançades de", + "configSaved": "S'ha desat la configuració de {provider}", + "mode": { + "title": "Mode de RTD per defecte", + "description": "Establiu el mode de RTD per defecte per a les converses noves.", + "pushHint": "Les converses noves utilitzaran el mode d'emissió (push) per defecte.", + "pullHint": "Les converses noves utilitzaran el mode de recepció (pull) per defecte.", + "pullGuardHint": "El mode de recepció (pull) requereix un pla Aurum.", + "saveError": "No s'ha pogut desar el mode de RTD per defecte" + } + }, + "teams": "Equips", + "appearance": "Aparença", + "conversation": { + "title": "Converses", + "autoArchive": { + "title": "Arxiva automàticament les converses inactives", + "description": "Mou automàticament les converses inactives a l'arxiu després del nombre de dies seleccionat. Feu servir «Activa l'arxivament automàtic» per activar-ho. «Arxiva ara» fa una neteja puntual amb el llindar de dies actual.", + "enableLabel": "Activa l'arxivament automàtic", + "disableLabel": "Desactiva l'arxivament automàtic", + "enableHint": "Les converses arxivades continuen sent accessibles des de la secció d'arxiu.", + "daysLabel": "Arxiva després de", + "suffix": "dia | dies", + "disabledHint": "Activeu-ho o desactiveu-ho des del menú", + "runNowLabel": "Arxiva ara", + "runNowDisabled": "Activeu l'arxivament automàtic i establiu dies > 0 per executar-lo", + "runNowResult": "S'ha arxivat {count} conversa | S'han arxivat {count} converses", + "daysSaved": "L'arxivament automàtic s'ha establert a {days} dia | L'arxivament automàtic s'ha establert a {days} dies", + "enabledToast": "S'ha activat l'arxivament automàtic", + "disabledToast": "S'ha desactivat l'arxivament automàtic" + } + }, + "setupService": "Configura {service}", + "workspaceLock": { + "title": "Bloqueig de l'espai de treball i xifratge de secrets", + "description": "Bloquegeu el vostre espai de treball amb una frase de pas perquè la configuració sensible i les claus API quedin amagades fins que el desbloquegeu. Desbloquegeu-lo un cop per sessió, canvieu la frase de pas quan vulgueu o desactiveu la protecció si canvieu d'opinió.", + "experimentalInfo": "El xifratge basat en frase de pas és experimental. Conserveu una còpia de seguretat dels vostres secrets abans d'activar-lo.", + "status": "Estat:", + "locked": "Bloquejat", + "unlocked": "Desbloquejat", + "lock": "Bloqueja", + "unlock": "Desbloqueja", + "protectedSection": "L'espai de treball està protegit. Desbloquegeu-lo amb la vostra frase de pas.", + "unprotected": "Sense protecció", + "unprotectedToast": "El bloqueig de l'espai de treball no està configurat. Definiu primer una frase de pas.", + "unlockTitle": "Introduïu la frase de pas", + "cancel": "Cancel·la", + "toastUnlocked": "L'espai de treball s'ha desbloquejat per a aquesta sessió", + "toastLocked": "S'ha bloquejat l'espai de treball", + "disable": "Desactiva el xifratge", + "disableHelp": "Introduïu la frase de pas per desxifrar i desactivar el xifratge.", + "disableProtection": "Desactiva la protecció", + "disableProtectionHelp": "Introduïu la vostra frase de pas per desactivar la protecció de l'espai de treball. Això eliminarà el xifratge dels vostres secrets i claus API emmagatzemats.", + "disableProtectionConfirmMessage": "Segur que voleu desactivar la protecció de l'espai de treball? Això desxifrarà permanentment tots els secrets i claus API xifrats de la vostra base de dades.", + "enableProtection": "Activa la protecció", + "setPassphrase": "Defineix la frase de pas", + "setPassphraseWarning": "Important: deseu la vostra frase de pas de manera segura. No es pot recuperar una frase de pas oblidada i, sense ella, perdreu l'accés a les dades xifrades del vostre espai de treball.", + "changePassphrase": "Canvia la frase de pas", + "changePassphraseWarning": "Important: deseu la vostra nova frase de pas de manera segura. No es pot recuperar una frase de pas oblidada i, sense ella, perdreu l'accés a les dades xifrades del vostre espai de treball.", + "updatePassphrase": "Actualitza la frase de pas", + "passphrase": "Frase de pas", + "passphraseCurrent": "Frase de pas actual", + "passphraseNew": "Frase de pas nova", + "passphraseConfirm": "Confirmeu la frase de pas", + "errorMinLength": "La frase de pas ha de tenir com a mínim 8 caràcters", + "errorMismatch": "Les frases de pas no coincideixen", + "errorInvalid": "Entrada no vàlida", + "setupSuccess": "S'ha configurat la frase de pas", + "setupFailed": "No s'ha pogut configurar la frase de pas", + "rotateSuccess": "S'ha actualitzat la frase de pas", + "rotateFailed": "No s'ha pogut actualitzar la frase de pas", + "disableConfirmMessage": "Voleu desxifrar els secrets emmagatzemats i treure la protecció de l'espai de treball?", + "disableSuccess": "S'ha desactivat el xifratge", + "disableFailed": "No s'ha pogut desactivar el xifratge", + "incorrectPassphrase": "La frase de pas és incorrecta", + "lockedWithName": "{workspaceName} està bloquejat", + "switchBackTitle": "No podeu desbloquejar aquest espai de treball?", + "switchBackDescription": "Torneu a {workspaceName} per continuar treballant.", + "switchBackAction": "Torna a {workspaceName}", + "switchBackError": "No s'han pogut canviar els espais de treball. Torneu-ho a provar." + }, + "dataBackup": { + "title": "Exporta les dades", + "description": "Seleccioneu el botó de sota per exportar una còpia de les vostres dades com a còpia de seguretat o per transferir-les a un altre dispositiu. Les dades exportades inclouen converses, indicacions, models, configuració i altres dades de l'aplicació de tots els espais de treball." + }, + "dataBackupReminderInterval": { + "title": "Interval de recordatori de còpia de seguretat de les dades", + "description": "Amb quina freqüència recordar-vos que feu una còpia de seguretat de les dades." + }, + "dangerZone": { + "title": "Zona de perill", + "description": "Les accions d'aquesta secció són irreversibles i poden provocar pèrdua de dades. Us recomanem exportar una còpia de les vostres dades abans de fer cap acció aquí.", + "clearData": { + "title": "Esborra les dades", + "description": "Suprimeix permanentment totes les dades de l'aplicació, incloses converses, indicacions, models, configuració i altra informació relacionada de tots els espais de treball." + }, + "restoreData": { + "title": "Restaura les dades des d'una còpia de seguretat", + "description": "Importeu un fitxer zip de dades exportat prèviament per restaurar converses, indicacions, models, configuració i altres dades de l'aplicació de tots els espais de treball. Aquesta acció sobreescriurà totes les dades existents." + } + }, + "dataMigrate": { + "action": "Migra", + "title": "Migració de l'Msty App 1.x a Studio", + "itemsToMigrate": { + "label": "Pas 2: Seleccioneu els elements a migrar", + "action": "Selecciona els elements" + }, + "pointsToRemember": { + "activeWorkspace": "Podeu importar indicacions de la biblioteca d'indicacions, proveïdors de models remots, converses i adjuncions a l'espai de treball on us trobeu actualment. Si voleu importar-les a un espai de treball diferent, canvieu-hi primer.", + "remoteModelProviders": "En migrar els proveïdors de models remots NO es transferiran les claus API; cal tornar-les a introduir. És possible que alguns models antics no s'admetin a Studio.", + "attachmentsMigration": "Si migreu adjuncions, comprimiu primer la carpeta d'adjuncions en un zip. Podeu migrar les adjuncions per separat després de migrar la base de dades o juntament amb la base de dades." + }, + "databaseMigration": { + "title": "Migració de la base de dades", + "label": "Pas 1: Seleccioneu el fitxer de base de dades de l'Msty App 1.x", + "action": "Arrossegueu i deixeu anar el vostre fitxer de base de dades de Msty", + "hint": "Els fitxers de base de dades de l'Msty App 1.x solen anomenar-se `msty.db`" + }, + "attachmentsMigration": { + "title": "Migració de les adjuncions", + "migrate": "Migra per separat", + "label": "Pas 3: Afegiu la carpeta d'adjuncions comprimida", + "success": "Les adjuncions s'han migrat correctament", + "error": "No s'han pogut migrar les adjuncions", + "action": "Arrossegueu i deixeu anar la vostra carpeta d'adjuncions comprimida", + "hint": "Comprimiu en un zip tota la carpeta d'adjuncions de l'Msty App 1.x. Després de seleccionar-la, podeu migrar-la per separat si l'afegiu després de la migració de la base de dades." + }, + "missingDataWarning": { + "description": "Seleccioneu un fitxer de base de dades i com a mínim una taula per migrar", + "title": "Falten dades" + }, + "description": "Migreu les vostres dades de l'Msty App 1.x a Studio. Les dades importades no sobreescriuran les dades existents.", + "successMessage": "S'ha migrat {item} correctament", + "errorMessage": "No s'ha pogut migrar {item}", + "migrationInProgress": "Migració en curs...", + "migrationComplete": "Migració de {item} completada", + "migrationFail": "La migració de {item} ha fallat", + "migratingItem": "S'està migrant {item}...", + "migrationError": { + "title": "Error de migració", + "action": "Mostra els detalls", + "message": "Missatge", + "cause": "Causa" + } + }, + "colorPreference": "Preferència de color", + "accentColor": "Color d'accent", + "dark": "Fosc", + "light": "Clar", + "default": "Predeterminat | Predeterminats", + "system": "Sistema", + "baseColor": "Color base", + "emerald": "Maragda", + "lime": "Llima", + "green": "Verd", + "red": "Vermell", + "orange": "Taronja", + "amber": "Ambre", + "yellow": "Groc", + "teal": "Xarxet", + "cyan": "Cian", + "sky": "Cel", + "indigo": "Indi", + "violet": "Violeta", + "purple": "Porpra", + "fuchsia": "Fúcsia", + "pink": "Rosa", + "rose": "Rosat", + "slate": "Pissarra", + "gray": "Gris", + "zinc": "Zinc", + "stone": "Pedra", + "sandy": "Sorra", + "lighter": "Més clar", + "codeTheme": "Tema del codi", + "rtlSupport": { + "title": "Compatibilitat amb RTL", + "sectionDescription": "Activeu les disposicions de dreta a esquerra per a llengües com l'àrab, l'hebreu i el persa. Tot l'espai de treball s'actualitza a l'instant en activar-ho.", + "toggleLabel": "Activa la disposició RTL", + "enabledHint": "La disposició de dreta a esquerra està activa a tota l'aplicació.", + "disabledHint": "L'aplicació utilitza actualment una disposició d'esquerra a dreta." + }, + "miniMap": { + "title": "Minimapa", + "description": "Activeu el navegador de missatges en minimapa amb previsualitzacions de branques. Quan està desactivat, s'utilitza un navegador més senzill de dalt/baix." + }, + "branchBreadcrumbs": { + "title": "Ruta de navegació de branques", + "description": "Mostra una barra de navegació compacta a la part superior de les converses quan hi ha branques." + }, + "spellcheck": { + "title": "Correcció ortogràfica", + "description": "Activeu o desactiveu la correcció ortogràfica als camps d'entrada de text. Desactivar-la pot ajudar quan treballeu amb diverses llengües o contingut tècnic. La configuració del corrector ortogràfic del vostre sistema operatiu pot prevaler sobre aquestes preferències. Reinicieu l'aplicació després de canviar aquest paràmetre perquè els canvis tinguin efecte complet." + }, + "language": { + "sectionTitle": "Llengua i localització", + "sectionDescription": "Canvieu entre les llengües de la interfície, previsualitzeu el mode de desenvolupador o importeu un fitxer de configuració regional temporal. Si voleu contribuir amb una traducció, visiteu https://github.com/cloudstack-llc/msty-studio-i18n", + "localeLabel": "Llengua", + "downloadTemplate": "Baixa la plantilla", + "downloadBuiltInLocale": "Baixa aquest fitxer JSON de configuració regional integrat.", + "downloadCustomLocale": "Baixa la configuració regional personalitzada actual que heu importat.", + "downloadDeveloperTemplate": "Baixa una plantilla buida basada en la configuració regional base.", + "importLocale": "Importa una configuració regional", + "importLocaleHint": "Les configuracions regionals importades només duren fins que reinicieu o actualitzeu l'aplicació.", + "importSuccessSummary": "S'ha importat la configuració regional", + "importSuccessDetail": "Ara s'utilitza {code}. Reviseu la interfície per confirmar les traduccions.", + "importError": "No hem pogut importar aquest fitxer de configuració regional. Assegureu-vos que sigui un JSON vàlid basat en la plantilla.", + "developerMode": { + "label": "Mode de desenvolupador" + } + }, + "security": { + "title": "Seguretat", + "subtitle": "Configureu els paràmetres de seguretat de l'aplicació" + }, + "webSecurity": { + "title": "Desactiva la seguretat web", + "description": "Això us pot ajudar a resoldre algun problema relacionat amb CORS. Tanmateix, no es recomana i pot exposar l'aplicació a riscos de seguretat. Desactiveu-la només si sabeu què feu. Heu de reiniciar l'aplicació perquè aquest paràmetre tingui efecte.", + "applyAndRestart": "Aplica i reinicia" + }, + "fontStyle": { + "title": "Estil de la lletra", + "galaxyFarAway": "Galaxy Far Away", + "everythingEverywhere": "Everything Everywhere", + "homeAlone": "Home Alone", + "lordOfTheLoops": "Lord of the Loops" + }, + "renderingModules": { + "title": "Mòduls de renderització", + "selectPlaceholder": "Selecciona els mòduls de renderització" + }, + "remoteToolsConnector": { + "description": "Permet que el web de Msty Studio es connecti a aquest dispositiu per executar eines remotes i accedir a models locals. Aquest servei s'ha d'estar executant activament per permetre les connexions remotes.", + "allowRemoteToolsConnection": "Activa el servei", + "connectionToken": { + "title": "Testimoni de connexió", + "rememberToken": "Recorda el testimoni", + "placeholder": "Introduïu un testimoni de connexió fort", + "description": "Aquest testimoni s'utilitza per autenticar la connexió entre Msty Studio i aquesta aplicació en connectar-se remotament. El podeu regenerar en qualsevol moment per invalidar el testimoni anterior. Assegureu-vos d'utilitzar un testimoni fort i mantingueu-lo en secret.", + "successMessage": { + "detail": "El servei remot ja està actiu" + }, + "errorMessage": { + "summary": "Error en activar el connector", + "detail": "No s'ha pogut activar el servei remot. Reviseu els registres per a més detalls" + }, + "copyConnectionInfo": "Copia l'URL local", + "copyTunnelConnectionInfo": "Copia l'URL del túnel", + "stopSuccessMessage": { + "detail": "El servei remot ja està desactivat" + } + }, + "enableTunneling": "Activa el túnel (experimental)" + }, + "copyLocalURL": "Copia l'URL local", + "localAI": { + "notInstalled": { + "description": "Configureu @:localAIService per executar models d'IA localment al vostre dispositiu." + }, + "modelsLocation": { + "title": "Ubicació dels models", + "description": "Configureu on s'emmagatzemen els vostres models de IA local." + }, + "existingModels": { + "title": "Usa els models existents", + "description": "Useu els models que ja teniu sense tornar-los a baixar." + }, + "serviceConfigurations": { + "title": "Configuracions del servei", + "description": "Aquestes configuracions s'apliquen a @:localAIService quan s'inicia. @:localAIService es reiniciarà automàticament després de desar qualsevol canvi.", + "configurePortNumber": { + "title": "Configura el número de port", + "description": "Número de port de @:localAIService{'.'} Deixeu-ho buit per fer servir el valor per defecte." + }, + "maximumParallelChats": { + "title": "Màxim de xats en paral·lel", + "description": "Nombre màxim de sessions de xat simultànies (quan s'utilitza el mode dividit)." + }, + "maximumLoadedModels": { + "title": "Màxim de models carregats", + "description": "Nombre màxim d'LLM carregats alhora. Mantenir més models a la memòria accelera les respostes inicials però consumeix més recursos del sistema." + }, + "enableNetworkAccess": { + "title": "Activa l'accés a la xarxa", + "description": "Permet que altres dispositius de la vostra xarxa accedeixin a @:localAIService a través de l'adreça IP d'aquest dispositiu." + }, + "allowedNetworkOrigins": { + "title": "Orígens de xarxa permesos", + "description": "Indiqueu aquí els orígens de xarxa permesos (separats per comes). Cada entrada ha de començar per http:// o https://. Feu servir * per permetre tots els orígens.", + "placeholder": "p. ex. https://msty.studio, http://localhost:3000, *" + }, + "allowMstyStudioAccess": { + "title": "Permet l'accés des de Msty Studio", + "description": "Permet les connexions des del web de Msty Studio a aquesta aplicació perquè pugui accedir a @:localAIService{'.'}" + }, + "captureServiceLogs": { + "title": "Captura els registres del servei", + "description": "Activeu el registre per capturar dades del servei per a la depuració. Feu servir aquesta opció només quan calgui." + }, + "advancedConfiguration": { + "description": "Introduïu un JSON vàlid per definir les variables d'entorn de @:localAIService{'.'}" + }, + "unsavedChanges": { + "message": "@:localAIService té canvis de configuració sense desar. Un cop els deseu, @:localAIService es reiniciarà amb les noves configuracions.", + "saveChanges": "Desa els canvis i reinicia el servei", + "successMessage": { + "detail": "S'han desat les configuracions de @:localAIService i s'ha reiniciat el servei" + }, + "errorMessage": { + "detail": "No s'han pogut desar les configuracions del servei. Reviseu els registres per a més detalls." + } + } + }, + "modelConfigurations": { + "title": "Configuracions del model", + "description": "Aquestes configuracions s'apliquen a tots els models durant les sessions de xat.", + "keepAliveTimeout": { + "title": "Temps d'espera de manteniment del model", + "description": "Temps (en minuts) després del qual el model es descarregarà de la memòria si no s'utilitza." + }, + "advancedConfiguration": { + "description": "Introduïu un JSON vàlid per passar paràmetres addicionals als models durant les sessions de xat." + }, + "unsavedChanges": { + "message": "Teniu canvis sense desar a @:settings.localAI.modelConfigurations.title{'.'} Assegureu-vos de desar-los abans d'iniciar una sessió de xat nova.", + "successMessage": { + "detail": "S'ha desat @:settings.localAI.modelConfigurations.title" + }, + "errorMessage": { + "detail": "No s'han pogut desar les configuracions del model. Reviseu els registres per a més detalls." + } + } + }, + "openSettings": "Obre la configuració de la IA local", + "manageModels": { + "title": "Gestiona els models de IA local", + "description": "Navegueu, instal·leu i gestioneu models d'IA per a la inferència local.", + "openModelHub": "Obre el centre de models de IA local" + } + }, + "vibeCliProxy": { + "shortTitle": "Vibe CLI Proxy", + "title": "Vibe CLI Proxy", + "subtitle": "Proxy unificat per a assistents de codi amb IA. Connecteu amb Claude Code, ChatGPT, Gemini i Qwen Code a través d'un únic punt final local.", + "install": { + "copy": "Instal·la el binari CLIProxyAPI per connectar assistents de codi amb IA (Claude Code, ChatGPT, Gemini, Qwen) mitjançant un proxy local amb autenticació OAuth.", + "button": "Instal·la el Vibe CLI Proxy" + }, + "health": { + "description": "Inicieu o atureu el servei Vibe CLI Proxy." + }, + "endpoint": { + "title": "Punt final del servei", + "description": "Useu aquest punt final per a les sol·licituds compatibles amb OpenAI encaminades a través del Vibe CLI Proxy.", + "network": "Amfitrió de xarxa: {host}", + "copied": "S'ha copiat el punt final" + }, + "version": { + "title": "Versió", + "description": "Versió de CLIProxyAPI instal·lada.", + "current": "Versió actual", + "reinstall": "Torna a instal·lar", + "unknown": "No instal·lat" + }, + "configs": { + "title": "Configuracions del servei", + "description": "Configureu el port, el directori d'autenticació i l'accés a la xarxa del proxy.", + "port": "Port", + "retries": "Reintents", + "authDir": "Directori d'autenticació", + "enableNetworkAccess": "Activa l'accés a la xarxa", + "enableNetworkAccessHelp": "Permet que altres dispositius de la xarxa arribin al proxy.", + "captureLogs": "Captura els registres del servei", + "captureLogsHelp": "Conserva els registres del proxy per a la resolució de problemes (pot augmentar l'ús del disc).", + "enableRemoteManagement": "Activa la gestió remota", + "enableRemoteManagementHelp": "Exposa els punts finals de gestió; requereix una clau secreta.", + "managementKey": "Clau secreta de gestió", + "updated": "S'han actualitzat les configuracions del Vibe CLI Proxy", + "failed": "No s'han pogut actualitzar les configuracions del Vibe CLI Proxy", + "portDescription": "El port local on el servei de proxy escolta les sol·licituds.", + "retriesDescription": "Nombre d'intents de reintent per a les sol·licituds amunt fallides.", + "authDirDescription": "Directori on s'emmagatzemen els testimonis d'autenticació.", + "managementKeyDescription": "Clau secreta necessària per a les operacions de gestió remota." + }, + "authPath": { + "title": "Carpeta d'autenticació", + "description": "Camí on el Vibe CLI Proxy emmagatzema els testimonis OAuth dels proveïdors connectats. Es gestiona automàticament; no és editable." + }, + "authStatus": { + "title": "Autenticació", + "description": "Enllaceu de manera segura els vostres comptes d'IA perquè el Vibe CLI Proxy pugui cridar les seves API en nom vostre. Quan us connecteu, s'obre una finestra del navegador per a aquell proveïdor on completeu l'inici de sessió.", + "connecting": "S'està obrint el navegador per a l'OAuth…", + "browser": "Completeu l'autenticació al navegador i, després, torneu aquí.", + "failed": "No s'ha pogut iniciar el flux d'OAuth", + "deviceCodeTitle": "Autorització del dispositiu", + "deviceCodeInstructions": "Introduïu el codi de sota a la pàgina d'autorització per completar l'autenticació.", + "copyCode": "Copia el codi", + "codeCopied": "S'ha copiat el codi al porta-retalls", + "openGitHub": "Obre GitHub" + }, + "setup": { + "disclaimer": "Important: el Vibe CLI Proxy és un proxy local cap a agents de codi de CLI de tercers. En continuar, accepteu tota la responsabilitat del compliment de les condicions del servei de cada proveïdor d'IA. Useu-lo sota la vostra responsabilitat. Msty no es fa responsable de cap problema de compte ni de cap violació del servei que en pugui derivar." + } + }, + "mlx": { + "notInstalled": { + "description": "Configureu @:mlxService per executar models d'IA optimitzats al vostre Mac amb Apple Silicon." + }, + "modelsLocation": { + "title": "Ubicació dels models", + "description": "Configureu on s'emmagatzemen els vostres models MLX." + }, + "existingModels": { + "title": "Usa els models existents", + "description": "Useu els models que ja teniu sense tornar-los a baixar." + }, + "openSettings": "Obre la configuració d'MLX", + "manageModels": { + "title": "Gestiona els models MLX", + "description": "Navegueu, instal·leu i gestioneu models MLX optimitzats per a Apple Silicon.", + "openModelHub": "Obre el centre de models MLX" + }, + "compatibility": { + "title": "Compatibilitat del sistema", + "description": "Comproveu si el vostre sistema és compatible amb MLX.", + "checkAgain": "Torna a comprovar", + "status": { + "notChecked": "No comprovat", + "compatible": "Compatible", + "notCompatible": "No compatible" + }, + "requirements": { + "title": "Requisits d'MLX:", + "appleSilicon": "Mac amb Apple Silicon (M1, M2, M3, M4)", + "macOS13": "macOS 13.0 o posterior", + "unifiedMemory": "Arquitectura de memòria unificada" + } + } + }, + "llamacpp": { + "notInstalled": { + "description": "Configureu @:llamacppService per executar models d'IA eficients a Windows, macOS i Linux." + }, + "modelsLocation": { + "title": "Ubicació dels models", + "description": "Configureu on s'emmagatzemen els vostres models de LLaMA.cpp." + }, + "existingModels": { + "title": "Usa els models existents", + "description": "Useu els models que ja teniu sense tornar-los a baixar." + }, + "openSettings": "Obre la configuració de LLaMA.cpp", + "manageModels": { + "title": "Gestiona els models de LLaMA.cpp", + "description": "Navegueu, instal·leu i gestioneu models de LLaMA.cpp per a la inferència multiplataforma.", + "openModelHub": "Obre el centre de models de LLaMA.cpp" + }, + "compatibility": { + "title": "Compatibilitat del sistema", + "description": "Comproveu si el vostre sistema és compatible amb LLaMA.cpp.", + "checkAgain": "Torna a comprovar", + "status": { + "notChecked": "No comprovat", + "compatible": "Compatible", + "notCompatible": "No compatible", + "requiresDesktop": "LLaMA.cpp requereix l'aplicació d'escriptori" + }, + "systemInfo": { + "title": "Informació del sistema", + "platform": "Plataforma", + "architecture": "Arquitectura", + "memory": "Memòria disponible", + "gpu": "GPU" + }, + "requirements": { + "title": "Requisits de LLaMA.cpp:", + "desktop": "Aplicació d'escriptori (Windows, macOS o Linux)", + "memory": "Com a mínim 4 GB de RAM (es recomanen 8 GB o més)", + "storage": "Emmagatzematge suficient per als models (varia segons la mida del model)", + "gpu": "Opcional: GPU per a l'acceleració (CUDA, Metal, OpenCL)" + } + }, + "serviceConfigurations": { + "threads": { + "title": "Fils de CPU", + "description": "Nombre de fils de CPU que s'utilitzen durant la inferència. Establiu-lo a -1 per detectar-lo automàticament segons el vostre sistema (correspon a l'indicador --threads)." + }, + "concurrentRequests": { + "title": "Sol·licituds simultànies", + "description": "Nombre de xats que poden executar-se alhora per model (correspon a l'indicador --parallel). Amb parallel=2, cada xat rep la meitat de la mida del context.", + "inputLabel": "Sol·licituds simultànies" + }, + "advancedConfiguration": { + "description": "Introduïu un JSON vàlid per definir les variables d'entorn del procés llama-server. Aquestes variables tenen menys prioritat que els arguments de CLI definits a les configuracions del servei i del model." + } + }, + "modelConfigurations": { + "title": "Configuracions del model", + "description": "Aquestes configuracions s'apliquen a tots els models durant les sessions de xat.", + "keepAliveTimeout": { + "title": "Temps d'espera de manteniment del model", + "description": "Temps (en minuts) després del qual el model es descarregarà de la memòria si no s'utilitza." + }, + "unsavedChanges": { + "message": "Teniu canvis sense desar a @:settings.llamacpp.modelConfigurations.title{'.'} Assegureu-vos de desar-los abans d'iniciar una sessió de xat nova.", + "successMessage": { + "detail": "S'ha desat @:settings.llamacpp.modelConfigurations.title" + }, + "errorMessage": { + "detail": "No s'han pogut desar les configuracions del model. Reviseu els registres per a més detalls." + } + } + } + } + }, + "mlx": "MLX", + "mlxService": "Servei @:mlx", + "llamacpp": "LLaMA.cpp", + "llamacppService": "Servei @:llamacpp", + "settingsAndConfigs": "Configuració i ajustos", + "prompts": "Prompts", + "apiKeys": "Claus API", + "workspaces": { + "createNewWorkspace": "Crea un espai de treball nou", + "switchWorkspace": "Canvia d'espai de treball", + "switchToCustomWorkspace": "Canvia a l'espai de treball {workspaceName}", + "hideWorkspaceTray": "Amaga la safata d'espais de treball", + "showWorkspaceTray": "Mostra la safata d'espais de treball", + "switchAction": { + "successMessage": { + "summary": "S'ha canviat d'espai de treball!", + "detail": "Ara {workspaceName} és l'espai de treball actiu" + } + }, + "deleteWorkspace": "Suprimeix l'espai de treball", + "workspaceIsActive": "L'espai de treball {workspaceName} està actiu", + "currentActiveWorkspace": "El vostre espai de treball actiu actual és: {workspaceName}", + "workspaceForm": { + "newTitle": "Espai de treball nou", + "editTitle": "Edita l'espai de treball", + "workspaceName": "Nom de l'espai de treball", + "whatToCopy": "Què voleu copiar de l'espai de treball {activeWorkspace}?", + "copyDisabledForLockedWorkspace": "La còpia d'elements està desactivada perquè l'espai de treball actiu té definida una frase de pas.", + "createAndSwitch": "Crea i canvia-hi", + "createOnly": "Crea i queda't", + "duplicateWorkspaceName": "El nom de l'espai de treball ja existeix", + "invalidWorkspaceName": "Nom d'espai de treball no vàlid o duplicat", + "updateSuccessMessage": { + "detail": "S'ha actualitzat l'espai de treball" + }, + "updateErrorMessage": { + "detail": "No s'ha pogut actualitzar l'espai de treball" + }, + "createAndSwitchSuccessMessage": { + "detail": "S'ha creat l'espai de treball i s'hi ha canviat" + }, + "createSuccessMessage": { + "detail": "S'ha creat l'espai de treball" + }, + "createErrorMessage": { + "detail": "No s'ha pogut crear l'espai de treball" + } + }, + "deleteConfirmation": { + "header": "Suprimeix l'espai de treball", + "message": "Segur que voleu suprimir {workspaceName}? Se suprimiran totes les dades associades a aquest espai de treball. Aquesta acció no es pot desfer.", + "downloadWorkspaceData": "Baixa les dades de l'espai de treball", + "successMessage": { + "detail": "S'ha suprimit l'espai de treball {workspaceName}" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir l'espai de treball" + } + }, + "exportWorkspace": { + "title": "Exporta l'espai de treball", + "successMessage": { + "detail": "Les dades de l'espai de treball {workspaceName} s'han exportat com a {fileName}" + }, + "errorMessage": { + "detail": "No s'ha pogut exportar l'espai de treball {workspaceName}" + } + }, + "importWorkspace": { + "title": "Importa un espai de treball", + "dragAndDropMessage": "Arrossegueu i deixeu anar un fitxer comprimit d'espai de treball de Msty per importar-lo i crear un espai de treball nou. En cas de noms duplicats, l'espai de treball importat es reanomenarà. El podeu canviar més endavant.", + "successMessage": { + "detail": "S'ha importat l'espai de treball {workspaceName}" + }, + "errorMessage": { + "detail": "No s'ha pogut importar l'espai de treball" + } + } + }, + "attachments": { + "title": "Adjuncions", + "documents": "Documents", + "images": "Imatges", + "webpages": "Pàgines web", + "youTubeLinks": "Enllaços de YouTube", + "dropThem": "Deixeu-los anar!", + "selectAll": "Selecciona-ho tot", + "deselectAll": "Desselecciona-ho tot", + "dragAnDropHere": "Arrossegueu i deixeu anar {attachmentType} aquí", + "addNew": "Afegeix adjuncions noves", + "addDocumentTypes": "Afegiu {documentTypes} i també altres fitxers de codi", + "addImageTypes": "Afegiu imatges .png, .jpg o jpeg", + "dragAndDropOrBrowseMore": "Arrossegueu i deixeu anar o exploreu-ne més", + "commaSeparatedUrls": "o enganxeu URL separats per comes", + "manageTooltip": "Feu clic per gestionar {attachmentType} adjuntats", + "modelMayNotSupportImages": "És possible que el model seleccionat no admeti adjuncions d'imatge.", + "clickToInstallVisionCapabilities": "Feu clic per instal·lar les capacitats de visió.", + "checkingVisionCapabilities": "S'estan comprovant les capacitats de visió...", + "installingVision": "S'estan instal·lant les capacitats de visió...", + "documentsAttachedCount": "{count} document adjuntat | {count} documents adjuntats", + "imagesAttachedCount": "{count} imatge adjuntada | {count} imatges adjuntades", + "webpagesAttachedCount": "{count} pàgina web adjuntada | {count} pàgines web adjuntades", + "webpageLinks": "un enllaç de pàgina web | enllaços de pàgines web", + "holdKeyToShareWithSyncedSplits": "Mantingueu premut {key} per compartir amb les divisions sincronitzades", + "youTubeLinksAttachedCount": "{count} enllaç de YouTube adjuntat | {count} enllaços de YouTube adjuntats", + "dropFiles": { + "errorMessage": { + "detail": "No s'han pogut adjuntar els fitxers" + } + }, + "dropWebpages": { + "errorMessage": { + "detail": "No s'han pogut adjuntar les pàgines web" + } + }, + "dropYouTubeLinks": { + "errorMessage": { + "detail": "No s'ha pogut importar la informació dels enllaços de YouTube. {errorMessage}" + } + }, + "detachAll": { + "title": "Desadjunta-ho tot", + "confirm": { + "header": "Desadjunta-ho tot", + "message": "Segur que voleu desadjuntar {attachmentType}? Aquests {attachmentType} ja no estaran disponibles a la conversa en cap divisió.", + "acceptLabel": "Suprimeix" + }, + "maxResult": { + "title": "Resultat màxim" + }, + "successMessage": { + "detail": "S'han desadjuntat les adjuncions" + } + } + }, + "jinaAPI": { + "manageJinaAPIKeys": "Gestiona les claus", + "jinaApiKeyRequired": "Cal una clau API de Jina vàlida per utilitzar aquesta funció. Podeu visitar l'enllaç següent per obtenir-ne una de franc:", + "willUseJina": { + "description": "Actualment teniu {count} clau(s) API de Jina afegida(es). Podeu afegir més claus i Msty triarà una clau vàlida a l'atzar per fer servir en la sol·licitud." + }, + "jinaAPIKeyForm": { + "newTitle": "Clau API de Jina nova", + "editTitle": "Edita la clau API de Jina", + "availableKeys": "Claus disponibles", + "reVerifyKey": "La clau està {status}. Feu clic per tornar a verificar-la", + "verifyKeyAndAdd": "Verifica la clau i afegeix-la", + "newDescription": "Afegiu una clau API de Jina nova per fer-la servir amb els punts finals Jina Reader i Search. Podeu afegir diverses claus i verificar-les per assegurar-vos que són vàlides. En fer servir les claus, Msty en triarà una de vàlida a l'atzar per a la sol·licitud.", + "keyIsGood": { + "summary": "Tot correcte!", + "detail": "La clau sembla vàlida i a punt per fer-se servir" + }, + "successMessage": { + "detail": "S'ha afegit la clau API de Jina" + }, + "errorMessage": { + "summary": "Error{status}!", + "detail": "No s'ha pogut afegir la clau API de Jina. Comproveu la clau API i assegureu-vos que sigui vàlida." + } + }, + "tokenBudget": { + "title": "Pressupost de tokens", + "description": "Nombre màxim de tokens que s'utilitzaran per a les sol·licituds de l'API de Jina. Això ajuda a controlar els costos i la longitud de la resposta." + } + }, + "rtd": { + "title": "@:data en temps real", + "enableRTD": "Feu clic per activar/desactivar la RTD; feu doble clic per configurar-la", + "contexts": "Contextos de @:rtd.title", + "removeSource": { + "successMessage": { + "detail": "S'ha eliminat la font" + }, + "errorMessage": { + "detail": "No s'ha pogut eliminar la font" + } + }, + "updateSource": { + "errorMessage": { + "detail": "No s'ha pogut actualitzar la font" + } + }, + "searchProvider": "Proveïdor de cerca", + "jina": "Jina", + "useRemoteConnector": "Usa @:remoteToolsConnector.title", + "noSources": "No hi ha cap font disponible", + "settings": { + "maxResult": { + "title": "Resultat màxim" + }, + "saveAsDefaultProvider": { + "title": "Desa {providerName} com a proveïdor de cerca per defecte", + "successMessage": { + "summary": "Doncs {providerName}!", + "detail": "Ara {providerName} és el proveïdor de cerca per defecte" + } + }, + "autoWithFallback": "Automàtic amb alternativa", + "google": "Google", + "brave": "Brave", + "ecosia": "Ecosia", + "customSearchQuery": { + "title": "Consulta de cerca personalitzada", + "placeholder": "Aquesta consulta s'utilitzarà per cercar. Deixeu-la buida per fer servir la indicació com a consulta" + }, + "limitByDomain": { + "title": "Limita per domini", + "placeholder": "p. ex. reddit.com o gov o (site:reddit.com OR site:gov)", + "commaDelimitedPlaceholder": "Introduïu dominis separats per comes, p. ex. reddit.com,wikipedia.com" + }, + "extraOperators": { + "title": "Operadors addicionals" + }, + "dateRange": { + "title": "Interval de dates de la cerca", + "placeholder": "Data posterior - Data anterior" + }, + "successMessage": { + "detail": "@:rtd.title activada" + }, + "types": { + "api": "API", + "rtc": "@:remoteToolsConnector.title" + } + }, + "useJinaLabel": "Usa @:rtd.jina", + "google": { + "useLabel": "Usa @:rtd.settings.google", + "apiKey": { + "placeholder": "@:apiKey de @:rtd.settings.google" + }, + "cseIdLabel": "ID de motor de cerca personalitzat", + "cseIdPlaceholder": "@:rtd.google.cseIdLabel de @:rtd.settings.google" + }, + "brave": { + "useLabel": "Usa @:rtd.settings.brave", + "resultFilter": "Filtra els resultats", + "apiKey": { + "placeholder": "@:apiKey de @:rtd.settings.brave" + } + }, + "searXng": { + "title": "SearXNG", + "engines": { + "title": "Motors", + "placeholder": "Llista de motors a utilitzar separats per comes, p. ex. google, brave, etc." + }, + "extraParams": { + "title": "Paràmetres addicionals", + "placeholder": "Afegiu paràmetres addicionals. Ha de ser un objecte JSON vàlid." + }, + "notice": "El vostre servidor SearXNG ha de tenir el JSON activat i servir-se per HTTPS. Per a una solució alternativa per HTTP en alguns navegadors, consulteu la nostra documentació a https://docs.msty.studio", + "useLabel": "Usa @:rtd.searXng.title" + }, + "tavily": { + "title": "Tavily", + "useLabel": "Usa @:rtd.tavily.title", + "searchTopic": { + "title": "Tema de cerca", + "placeholder": "Categoria de la cerca", + "general": "General", + "news": "Notícies", + "finance": "Finances" + }, + "apiKey": { + "placeholder": "Introduïu la @:apiKey de @:rtd.tavily.title" + }, + "searchDepth": { + "title": "Profunditat de la cerca", + "placeholder": "Profunditat de la cerca", + "advanced": "Avançada", + "basic": "Bàsica" + }, + "timeRange": { + "title": "Interval de temps", + "placeholder": "Interval de temps enrere des de la data actual" + } + }, + "exa": { + "title": "Exa", + "useLabel": "Usa @:rtd.exa.title", + "apiKey": { + "placeholder": "Introduïu la @:apiKey de @:rtd.exa.title" + } + }, + "ollama": { + "title": "Ollama", + "useLabel": "Usa @:rtd.ollama.title", + "apiKey": { + "placeholder": "Introduïu la @:apiKey de @:rtd.ollama.title" + } + }, + "disableRTD": { + "label": "Desactiva la @:rtd.title", + "successMessage": { + "detail": "@:rtd.title desactivada" + }, + "errorMessage": { + "detail": "No s'ha pogut desactivar la @:rtd.title" + } + } + }, + "remoteToolsConnector": { + "title": "Servei remot", + "connectionRequired": "Per fer servir aquesta funció, us heu de connectar amb @:remoteToolsConnector.title{'.'}", + "experimentalInfo": "La RTD és experimental i pot ser que no funcioni com s'espera.", + "isConnectedTooltip": "@:remoteToolsConnector.title - Connectat", + "isDisconnectedTooltip": "@:remoteToolsConnector.title - Desconnectat", + "connectNow": "@:connect amb @:remoteToolsConnector.title", + "connectFirst": "@:connect primer @:remoteToolsConnector.title", + "reconnectNow": "@:reconnect amb @:remoteToolsConnector.title", + "disconnectNow": "@:disconnect ara", + "checkHealth": "Comprova l'estat de la connexió", + "connectionDetails": "Edita els detalls de la connexió", + "noPermissionPolicy": "No teniu permís per accedir a aquesta funció", + "connect": { + "form": { + "title": "Connecta amb @:remoteToolsConnector.title", + "saveAndConnect": "Desa i connecta", + "rememberConnectionInfo": "Recorda la @:connectionInfo" + }, + "import": { + "title": "@:import la @:connectionInfo", + "dragAndDropMessage": "Arrossegueu i deixeu anar el fitxer de configuració de connexió remota de Msty per importar-lo i connectar amb @:remoteToolsConnector.title{'.'}", + "successMessage": { + "detail": "@:connectionInfo importada" + }, + "errorMessage": { + "detail": "No s'ha pogut importar la @:connectionInfo" + } + }, + "export": { + "title": "Exporta la @:connectionInfo desada", + "successMessage": { + "detail": "@:connectionInfo exportada" + }, + "errorMessage": { + "detail": "No s'ha pogut exportar la @:connectionInfo" + } + }, + "successMessage": { + "summary": "Connectat!", + "detail": "@:remoteToolsConnector.title connectat a {url}" + }, + "errorMessage": { + "detail": "No s'ha pogut connectar amb @:remoteToolsConnector.title{'.'} Assegureu-vos que @:remoteToolsConnector.title s'està executant i és accessible a l'URL proporcionat.", + "tokenMissing": "Falta el testimoni. Comproveu el testimoni i torneu-ho a provar." + }, + "forgetConnectionInfo": "Oblida la @:connectionInfo anterior", + "forgetSuccessMessage": { + "detail": "@:connectionInfo oblidada" + }, + "toolCommandPaths": { + "title": "Camins de les ordres de les eines", + "description": "Si feu servir conjunts d'eines, definiu els camins de les ordres que utilitzeu.", + "selectPlaceholder": "Seleccioneu o introduïu una ordre", + "pathPlaceholder": "Introduïu el camí complet de l'ordre", + "assignPath": "Assigna el camí" + } + }, + "disconnect": { + "successMessage": { + "summary": "Desconnectat!", + "detail": "Desconnectat de @:remoteToolsConnector.title" + } + } + }, + "forge": { + "forgeMode": { + "title": "Mode forja", + "description": "El mode forja us ofereix un llenç en blanc i un escriptor potent per crear, editar, donar estil i refinar contingut lliurement." + }, + "title": "Forja", + "forgeContent": "Contingut de la @:forge.title", + "forgingContent": "S'està forjant el contingut", + "editRawMarkdown": "Edita el Markdown en brut", + "editAsBranch": "Edita com a branca", + "disabledEditRawMarkdown": "Aquest contingut s'ha forjat. No es permet editar el Markdown en brut.", + "saveChanges": { + "title": "Desa els canvis", + "successMessage": { + "detail": "S'han desat els canvis" + }, + "errorMessage": { + "detail": "No s'han pogut desar els canvis" + } + }, + "placeholders": { + "writeSomething": "Escriviu alguna cosa o teclegeu / per veure les opcions...", + "detailsSummary": "Introduïu un resum dels detalls" + }, + "prompts": { + "simplify": "Simplifica", + "fixSpellingAndGrammar": "Corregeix l'ortografia i la gramàtica", + "makeShorter": "Escurça", + "makeLonger": "Allarga", + "tldr": "TL;DR;", + "emojify": "Emojifica", + "changeTone": { + "title": "@:change el to", + "academic": "Acadèmic", + "business": "Empresarial", + "casual": "Informal", + "childFriendly": "Apte per a infants", + "conversational": "Conversacional", + "emotional": "Emotiu", + "humorous": "Humorístic", + "informative": "Informatiu", + "inspirational": "Inspirador", + "professional": "Professional", + "narrative": "Narratiu", + "objective": "Objectiu", + "persuasive": "Persuasiu", + "poetic": "Poètic" + } + }, + "clearFormatting": "Esborra el format", + "bold": "Negreta", + "italic": "Cursiva", + "underline": "Subratllat", + "strikethrough": "Ratllat", + "code": "Codi", + "codeBlock": "Bloc de codi", + "blockQuote": "Cita", + "undo": "Desfés", + "redo": "Refés", + "texts": "Textos", + "paragraph": "Paràgraf", + "heading1": "Encapçalament 1", + "heading2": "Encapçalament 2", + "heading3": "Encapçalament 3", + "lists": "Llistes", + "bulletList": "Llista de pics", + "numberedList": "Llista numerada", + "taskList": "Llista de tasques", + "whatToForgePlaceholder": "Què voleu forjar avui?", + "forgeWriter": "Escriptor de la forja", + "inlinePrompt": { + "placeholder": "Escriviu la vostra indicació personalitzada...", + "ask": "Pregunta", + "askTooltip": "Demaneu al model que generi una resposta a partir d'una indicació personalitzada" + }, + "forgeCanvas": "Llenç de la @:forge.title", + "newForgeCanvas": "@:forge.forgeCanvas nou", + "addNewForgeCanvas": "Afegeix un @:forge.forgeCanvas nou" + }, + "preview": "Previsualització", + "prompt": "Indicació | Indicacions", + "discard": "Descarta", + "insert": "Insereix", + "regenerate": "Regenera", + "rewrite": "Reescriu", + "exit": "Surt", + "customPrompt": "Indicació personalitzada", + "markdown": "Markdown", + "json": "JSON", + "html": "HTML", + "formatted": "Amb format", + "invalidJson": "@:json no vàlid", + "downloadMarkdown": "@:download com a fitxer @:markdown", + "downloadJson": "@:download com a fitxer @:json", + "downloadHTML": "@:download com a fitxer HTML", + "copyMarkdownToClipboard": "Copia el @:markdown al porta-retalls", + "copyHTMLToClipboard": "Copia l'HTML al porta-retalls", + "copyFormattedToClipboard": "Copia el text al porta-retalls", + "copiedToClipboard": { + "summary": "Copiat!", + "markdownDetail": "S'ha copiat el contingut al porta-retalls com a @:markdown", + "htmlDetail": "S'ha copiat el contingut al porta-retalls com a HTML", + "formattedDetail": "S'ha copiat el contingut al porta-retalls com a text amb format", + "jsonDetail": "S'ha copiat el contingut al porta-retalls com a @:json", + "itemCopied": "S'ha copiat {item} al porta-retalls" + }, + "exportJsonToClipboard": "S'ha exportat el contingut al porta-retalls com a @:json", + "variable": "Variable | Variables", + "pinItem": { + "title": "@:pinned {item}", + "action": "Fixa {item}", + "successMessage": { + "detail": "S'ha fixat {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut fixar {item}" + } + }, + "unpinItem": { + "action": "Deixa de fixar {item}", + "successMessage": { + "detail": "S'ha deixat de fixar {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut deixar de fixar {item}" + } + }, + "setDefaultItem": { + "title": "{item} per defecte", + "action": "Estableix {item} com a predeterminat", + "successMessage": { + "detail": "S'ha establert {item} com a predeterminat" + }, + "errorMessage": { + "detail": "No s'ha pogut establir {item} com a predeterminat" + } + }, + "unsetDefaultItem": { + "action": "{item} per defecte. Feu clic per desfer-ho.", + "successMessage": { + "detail": "S'ha tret {item} com a predeterminat" + } + }, + "model": "Model", + "modelSelector": { + "filterControls": { + "title": "Ordena i mostra", + "searchPlaceholder": "Cerca models...", + "clear": "Restableix", + "providerSort": { + "label": "Ordenació dels proveïdors", + "none": "Cap", + "name": "Nom", + "createdAt": "Data de creació", + "ascending": "Ascendent", + "descending": "Descendent", + "groupByProvider": "Agrupa per proveïdor" + }, + "modelSort": { + "label": "Ordenació dels models", + "none": "Cap", + "name": "Nom", + "recent": "Recent", + "ascending": "Ascendent", + "descending": "Descendent" + }, + "purpose": { + "label": "Filtra per finalitat", + "placeholder": "Totes les finalitats" + } + } + }, + "modelSettings": "Configuració del model", + "syncSplit": "Sincronitza la divisió", + "name": "Nom", + "split": "Divisió | Divisions", + "template": "Plantilla | Plantilles", + "discardChanges": "Descarta els canvis", + "applyChanges": "Aplica els canvis", + "splitPreset": { + "title": "Predefinit de divisió | Predefinits de divisió", + "selectPlaceholder": "@:select un predefinit", + "new": "Predefinit nou", + "newSplit": "Predefinit nou", + "splits": { + "splitIndex": "Divisió {index}", + "delete": "Suprimeix el predefinit" + }, + "import": { + "title": "Importa un predefinit | Importa predefinits", + "dragAndDropMessage": "Arrossegueu i deixeu anar un fitxer comprimit de predefinits de Msty per importar-lo i crear predefinits nous. En cas de noms duplicats, els predefinits importats es reanomenaran. Els podeu canviar més endavant.", + "successMessage": { + "detail": "@:preset importat" + }, + "errorMessage": { + "detail": "No s'han pogut importar els predefinits" + } + }, + "export": { + "title": "Exporta el predefinit | Exporta els predefinits", + "selected": "Exporta el predefinit seleccionat | Exporta els predefinits seleccionats", + "successMessage": { + "detail": "El predefinit de divisió s'ha exportat com a {fileName} | Els predefinits de divisió s'han exportat com a {fileName}" + }, + "errorMessage": { + "detail": "No s'ha pogut exportar el predefinit | No s'han pogut exportar els predefinits" + } + }, + "delete": { + "title": "Suprimeix el predefinit | Suprimeix els predefinits", + "selected": "Suprimeix el predefinit seleccionat | Suprimeix els predefinits seleccionats", + "deleteConfirmation": { + "header": "Suprimeix el predefinit", + "description": "Segur que voleu suprimir {presetName}? | Segur que voleu suprimir {count} predefinits?" + }, + "successMessage": { + "detail": "S'ha suprimit el predefinit de divisió | S'han suprimit els predefinits de divisió" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir el predefinit de divisió | No s'han pogut suprimir els predefinits de divisió" + } + }, + "update": { + "successMessage": { + "detail": "S'ha actualitzat el predefinit de divisió" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar el predefinit de divisió" + } + }, + "save": { + "successMessage": { + "detail": "S'ha desat el predefinit de divisió" + }, + "errorMessage": { + "detail": "No s'ha pogut desar el predefinit de divisió" + } + }, + "empty": { + "title": "No hi ha cap @:splitPreset.title disponible.", + "description": "Comenceu afegint o important un @:splitPreset.title nou" + }, + "invalidTemplatesMessage": { + "summary": "Plantilles no vàlides", + "detail": "Algunes plantilles no són vàlides o els falten camps obligatoris. Corregiu-les abans de continuar." + } + }, + "shadowPersonas": { + "title": "Personalitats ombra", + "create": "Crea una personalitat ombra", + "editTitle": "Edita la personalitat ombra", + "assignedPersona": "Personalitat assignada", + "changePersona": "Canvia la personalitat", + "changePersonaTitle": "Canvia la personalitat ombra", + "currentPersona": "Personalitat actual", + "selectNewPersona": "Selecciona una personalitat nova", + "waitingForCompletion": "S'està esperant que s'acabi", + "changePersonaWarning": "Canviar la personalitat restablirà el context d'anàlisi i pot afectar la continuïtat.", + "unassigned": "Cap personalitat assignada", + "hideSidebar": "Amaga les personalitats ombra", + "showSidebar": "Mostra les personalitats ombra", + "noMonitoring": "No s'està supervisant cap divisió", + "monitoringHiddenHint": "S'està supervisant {count} divisió (feu clic per mostrar) | S'estan supervisant {count} divisions (feu clic per mostrar)", + "monitoringSplitsHint": "S'està supervisant {count} divisió | S'estan supervisant {count} divisions", + "noSplitsMonitoredHint": "No s'està supervisant cap divisió", + "monitoringStatus": "S'està supervisant {count} divisió | S'estan supervisant {count} divisions", + "activate": "Activa", + "deactivate": "Desactiva", + "processNow": "Processa ara", + "processing": "S'està processant...", + "createAndAssign": "Crea i assigna", + "latestInsight": "Darrera observació", + "noOutputYet": "Encara no hi ha cap sortida", + "outputs": "Sortides", + "viewLatest": "Mostra l'última", + "viewHistory": "Mostra l'historial", + "noHistory": "No hi ha historial disponible", + "selectVersion": "Selecciona una versió", + "name": "Nom de la personalitat ombra", + "namePlaceholder": "p. ex., analista tècnic, monitor de rendiment", + "edit": "Edita la personalitat ombra", + "switchShadowPersona": "Canvia de personalitat ombra", + "selectShadowPersonaToSwitch": "Seleccioneu la personalitat ombra a la qual voleu canviar", + "selectShadowPersona": "Selecciona una personalitat ombra", + "searchShadowPersonas": "Cerca personalitats ombra...", + "description": "Descripció (opcional)", + "descriptionPlaceholder": "Descriviu què observa o analitza aquesta personalitat ombra", + "selectPersona": "Selecciona una personalitat", + "selectPersonaPlaceholder": "Trieu una personalitat per fer servir", + "selectSplits": "Selecciona les divisions a supervisar", + "selectSplitsPlaceholder": "Trieu les divisions a supervisar", + "selectSplitsPlaceholderOptional": "Trieu les divisions a supervisar (es pot definir més endavant)", + "splitsCanBeAssignedLater": "Les divisions es poden assignar i gestionar dinàmicament després de la creació", + "updateTrigger": "Activador d'actualització", + "messageInterval": "Interval de missatges", + "timeInterval": "Interval de temps", + "messagesPerSplit": "Missatges per divisió", + "maxContext": "Context màxim", + "synthesisMode": "Mode de síntesi", + "outputFormat": "Format de sortida", + "maxProcessingTime": "Temps màxim de processament", + "versionManagement": "Gestió de versions", + "maxVersions": "Màxim de versions", + "advancedSettings": "Configuració avançada", + "includeSystemMessages": "Inclou els missatges del sistema", + "autoDeleteOld": "Suprimeix automàticament les versions antigues", + "waitingForSplits": "S'estan esperant les divisions", + "processingNow": "S'està processant ara", + "empty": { + "title": "Cap personalitat ombra", + "description": "Creeu una personalitat ombra per supervisar i analitzar les divisions de les vostres converses" + }, + "unlock": "Desbloqueja les personalitats ombra", + "experimental": "Experimental", + "experimentalInfo": "Les personalitats ombra són una funció experimental que analitza les converses i genera perspectives i observacions alternatives en paral·lel.", + "noOutput": { + "title": "Encara no hi ha cap sortida", + "description": "Aquesta personalitat ombra encara no ha generat cap sortida" + }, + "saveToEnableProcessing": "Deseu aquesta conversa per activar el processament de la personalitat ombra", + "delete": { + "title": "Suprimeix la personalitat ombra", + "action": "Suprimeix", + "confirmMessage": "Segur que voleu suprimir «{name}»? «{name}» se suprimirà de totes les converses a les quals està adjuntada. Aquesta acció no es pot desfer.", + "successMessage": "S'ha suprimit la personalitat ombra correctament", + "errorMessage": "No s'ha pogut suprimir la personalitat ombra" + }, + "detach": { + "title": "Desadjunta la personalitat ombra", + "action": "Desadjunta", + "confirmMessage": "Voleu desadjuntar «{name}» d'aquesta conversa? La personalitat ombra continuarà disponible per a altres converses.", + "successMessage": "S'ha desadjuntat la personalitat ombra correctament", + "errorMessage": "No s'ha pogut desadjuntar la personalitat ombra" + }, + "switch": { + "successMessage": "S'ha canviat la personalitat ombra correctament", + "errorMessage": "No s'ha pogut canviar la personalitat ombra" + }, + "editToast": { + "successMessage": "S'ha actualitzat la personalitat ombra correctament", + "errorMessage": "No s'ha pogut actualitzar la personalitat ombra" + }, + "createToast": { + "successMessage": "S'ha creat la personalitat ombra correctament", + "errorMessage": "No s'ha pogut crear la personalitat ombra" + }, + "queueClearedToast": { + "summary": "S'ha buidat la cua", + "detail": "S'ha cancel·lat {cancelledCount} element en cua | S'han cancel·lat {cancelledCount} elements en cua" + }, + "queueUpdatedToast": { + "summary": "S'ha actualitzat la cua", + "detail": "S'ha cancel·lat {cancelledCount} element activat automàticament | S'han cancel·lat {cancelledCount} elements activats automàticament" + }, + "queueFullToast": { + "summary": "Cua plena", + "detail": "La cua de processament és plena. Espereu que s'acabin els elements actuals" + }, + "alreadyProcessingToast": { + "summary": "Ja s'està processant", + "detail": "Aquesta conversa ja s'està processant" + }, + "trigger": { + "everyMessage": "Cada missatge", + "everyNMessages": "Cada {n} missatges", + "manual": "Només manual", + "timeInterval": "Interval de temps", + "automatic": "Automàtic" + }, + "triggerHints": { + "everyMessage": "S'executa després de cada missatge (el més ràpid, més freqüent)", + "everyNMessages": "S'executa després de {n} missatges (per lots)", + "manual": "Només quan feu clic a «Processa ara»" + }, + "synthesis": { + "auto": "Automàtic", + "combined": "Anàlisi combinada", + "perSplit": "Per divisió", + "comparative": "Comparativa" + }, + "synthesisHints": { + "auto": "Tria el millor mode segons les divisions i la intenció", + "combined": "Un únic resum de totes les divisions", + "perSplit": "Mantén cada divisió separada i etiquetada", + "comparative": "Diferències i coincidències costat per costat" + }, + "synthesisAutoReasons": { + "singleSplit": "El mode automàtic farà servir Combinada perquè només hi ha una divisió.", + "multipleModels": "El mode automàtic farà servir Comparativa perquè s'utilitzen diversos models.", + "sameModel": "El mode automàtic farà servir Per divisió perquè les divisions utilitzen el mateix model." + }, + "format": { + "insights": "Observacions", + "summary": "Resum", + "recommendations": "Recomanacions", + "analysis": "Anàlisi" + }, + "monitoringSplits": "S'està supervisant {count} divisió | S'estan supervisant {count} divisions", + "locateSplits": "Localitza les divisions", + "manageSplits": "Gestiona les divisions", + "addAllSplits": "Afegeix totes les divisions", + "deselectAll": "Desselecciona-ho tot", + "selectAll": "Selecciona-ho tot", + "selectedCount": "{count} de {total} seleccionats", + "streaming": "Transmissió en temps real", + "starting": "S'està iniciant", + "collectingContext": "S'està recollint el context de les divisions...", + "waitingForConversationCompletion": "S'està esperant que s'acabi la conversa", + "analyzingConversationSplits": "S'estan analitzant les divisions de la conversa...", + "analyzeResponses": "La personalitat ombra analitzarà quan s'hagin rebut totes les respostes", + "toolCalls": "Crides a eines", + "reasoning": "Raonament", + "attachExisting": "Adjunta'n una d'existent", + "attachTitle": "Adjunta una personalitat ombra", + "previousVersion": "Versió anterior", + "nextVersion": "Versió següent", + "attach": "Adjunta", + "selectShadowPersonaToAttach": "Seleccioneu una personalitat ombra per adjuntar-la a aquesta conversa", + "selectShadowPersonaPlaceholder": "Trieu una personalitat ombra per adjuntar-la", + "queuedPosition": "En cua núm. {position}", + "addToQueue": "Afegeix a la cua", + "processingQueue": "Cua de processament", + "removeFromQueue": "Treu de la cua", + "removedFromQueue": "S'ha tret de la cua", + "inQueue": "a la cua", + "clearQueue": "Esborra-ho tot", + "queueEmpty": "No hi ha elements a la cua", + "estimatedWait": "Espera est.: {time}", + "queuedItems": "{count} element a la cua | {count} elements a la cua", + "monitoring": "Supervisió i cua", + "monitoredSplits": "Divisions supervisades" + }, + "toolbox": { + "title": "Caixa d'eines", + "toolsUsageWillSkip": "Msty @:remoteToolsConnector.title no s'està executant; s'ometrà l'ús de les eines.", + "tools": { + "title": "Eina | Eines", + "description": "Un conjunt d'eines per ajudar-vos amb la vostra feina amb LLM.", + "availableTools": "Eines disponibles", + "availableToolsets": "Conjunts d'eines disponibles", + "authorize": "Autoritza", + "setDefaultParams": "Defineix els paràmetres per defecte", + "setParams": "Defineix els paràmetres", + "missingThisDependency": "Sembla que aquesta dependència falta al vostre entorn. Sense ella, és possible que l'eina no funcioni com s'espera.", + "defaultParamsForm": { + "header": "Paràmetres per defecte de {toolName}", + "description": "Aquests paràmetres s'utilitzaran globalment per a totes les instàncies de l'eina {toolName}. Els podeu substituir en crear un conjunt d'eines.", + "args": { + "label": "Arguments", + "description": "Seleccioneu un @:argument i definiu-ne el valor. Deixeu-lo en blanc per no definir cap valor.", + "customArg": { + "label": "@:argument personalitzat", + "description": "Introduïu el nom del nou @:argument{'.'} Separeu diversos arguments amb una coma.", + "placeholder": "p. ex. --arg1, algunArg, -verbose" + } + }, + "env": { + "label": "Variables d'entorn", + "description": "Seleccioneu o introduïu una @:variable d'entorn nova i definiu-ne el valor.", + "addEnv": "Afegeix una @:variable d'entorn", + "selectPlaceholder": "Selecciona una @:variable d'entorn", + "enterNew": "Afegeix una @:variable d'entorn nova" + }, + "successMessage": { + "saveDetail": "S'han desat els paràmetres per defecte de {toolName}." + }, + "errorMessage": { + "saveDetail": "No s'han pogut desar els paràmetres per defecte." + } + }, + "addNewTool": { + "title": "Afegeix una eina nova", + "description": "Afegiu la vostra pròpia eina compatible amb MCP a la caixa d'eines. Un cop afegida, la podeu afegir a un conjunt d'eines, definir-ne els paràmetres i fer-la servir amb un model.", + "namePlaceholder": "Poseu-li un nom (per defecte fa servir l'ID de l'eina)", + "id": { + "label": "ID de l'eina", + "placeholder": "Identificador únic de l'eina (s'emplena automàticament si es detecta a la configuració)" + }, + "duplicateId": "Ja existeix una eina amb aquest ID. Introduïu un ID únic.", + "successMessage": { + "summary": "S'ha afegit l'eina", + "detail": "S'ha afegit l'eina a la caixa d'eines. Ara la podeu afegir a un conjunt d'eines i fer-la servir amb un model." + }, + "successMessageWithToolset": { + "summary": "S'ha afegit l'eina", + "detail": "S'ha afegit l'eina a la caixa d'eines i s'ha creat un conjunt d'eines corresponent. Ja es pot fer servir amb un model." + }, + "errorMessage": { + "detail": "No s'ha pogut afegir l'eina a la caixa d'eines. {error}" + }, + "toolConfig": { + "label": "Configuració de l'eina", + "placeholder": "Introduïu o enganxeu el JSON de configuració de l'eina. Accepta configuració directa o formats embolcallats (extraurà automàticament el toolId)", + "showExampleTitle": "Mostra'm un exemple de configuració d'eina", + "explanation": "La configuració de l'eina accepta diversos formats, inclosos els embolcallats amb mcpServers. Extraurà automàticament el toolId i el nom quan sigui possible. Com a mínim ha de contenir {command}. Els arguments dinàmics s'han d'envoltar amb claus {curly} d'aquesta manera: {argExample}. De la mateixa manera, les variables d'entorn dinàmiques es poden definir amb {envVarLabel}." + }, + "autoCreateToolset": { + "label": "Crea automàticament un conjunt d'eines amb el mateix nom" + } + }, + "editTool": { + "title": "Edita l'eina", + "description": "Actualitzeu el nom, les notes i la configuració de l'eina.", + "successMessage": { + "detail": "S'ha actualitzat l'eina correctament" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar l'eina." + } + }, + "emptyPlaceholder": { + "description1": "Feu servir eines MCP externes impulsades per Msty @:remoteToolsConnector.title per ampliar les capacitats dels vostres models i millorar la vostra experiència amb LLM.", + "description2": "Podeu començar important moltes de les eines que inclou Msty o afegint les vostres pròpies eines.", + "description3": "Nota: aquestes eines no estan proporcionades, provades ni mantingudes per Msty. Simplement oferim una plataforma per fer-les servir i permetem importar-les com a comoditat. FEU-LES SERVIR SOTA LA VOSTRA RESPONSABILITAT. Msty no es fa responsable de cap problema que pugui sorgir de l'ús d'aquestes eines. A més, per a assistència, adreceu-vos a l'autor de l'eina." + }, + "importTools": { + "title": "Importa les @:toolbox.tools.title per defecte", + "successMessage": { + "detail": "S'han importat {count} eines per defecte correctament. Podeu crear conjunts d'eines i fer-los servir amb un model." + }, + "successMessageWithToolsets": { + "detail": "S'han importat {count} eines per defecte correctament i s'han creat automàticament {toolsetCount} conjunts d'eines corresponents." + }, + "errorMessage": { + "detail": "No s'han pogut importar les @:toolbox.tools.title per defecte" + } + }, + "deleteConfirmation": { + "header": "Suprimeix l'eina", + "description": "Segur que voleu suprimir {toolName}?", + "successMessage": { + "detail": "S'ha suprimit l'eina" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir l'eina" + } + }, + "deleteAll": { + "confirmationHeader": "Suprimeix totes les eines", + "confirmationMessage": "Segur que voleu suprimir totes les eines? Aquesta acció no es pot desfer.", + "successMessage": "S'han suprimit totes les eines correctament", + "errorMessage": "No s'han pogut suprimir totes les eines" + }, + "copiedToClipboard": "S'ha copiat la configuració de l'eina al porta-retalls", + "viewToolsUsage": { + "title": "Mostra l'ús de les eines", + "noToolCalls": { + "title": "No s'ha trobat cap crida a eines", + "description": "Sembla que hi havia algunes eines disponibles per al model, però no ha fet cap crida a eines. Pot ser que el model no hagi necessitat utilitzar cap eina." + } + } + }, + "toolsets": { + "title": "Conjunt d'eines | Conjunts d'eines", + "emptyPlaceholder": { + "title": "No s'ha trobat cap conjunt d'eines", + "description": "Els conjunts d'eines són un recull d'eines amb paràmetres. Podeu crear un conjunt d'eines i afegir-hi eines. Quan xategeu amb un model, podeu seleccionar un o més conjunts d'eines per fer-los servir amb el model." + }, + "addSomeTools": "Afegiu unes quantes eines per començar.", + "noTools": "No hi ha cap eina en aquest conjunt d'eines", + "tooltip": { + "selectedFeatures": "Funcions activades", + "loading": "S'estan carregant els detalls de la funció…", + "allFeatures": "Totes les funcions", + "unavailable": "No s'han pogut carregar els detalls de la funció" + }, + "addNewToolset": { + "title": "Afegeix un conjunt d'eines nou", + "description": "Creeu un conjunt d'eines nou per agrupar eines. Podeu afegir eines al conjunt i fer-lo servir amb un model. Assegureu-vos de definir o sobreescriure els paràmetres de cada eina del conjunt fent clic al botó {icon}.", + "setParams": { + "title": "Defineix els paràmetres de {toolName}", + "description": "Definiu els paràmetres de l'eina {toolName}. Podeu substituir els paràmetres per defecte definits per a l'eina. Feu servir la consola de l'eina per provar-la, veure les funcions disponibles i limitar-les si cal." + }, + "successMessage": { + "saveDetail": "S'ha desat el conjunt d'eines i s'ha afegit a la caixa d'eines. Ara el podeu fer servir amb un model." + }, + "errorMessage": { + "saveDetail": "No s'ha pogut desar el conjunt d'eines." + } + }, + "editToolset": { + "title": "Edita el conjunt d'eines", + "description": "Editeu el nom i les notes del conjunt d'eines. També podeu afegir o treure eines del conjunt i ajustar els paràmetres o limitar les funcions de cada eina fent clic al botó {icon}.", + "successMessage": { + "detail": "S'ha actualitzat el conjunt d'eines correctament" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar el conjunt d'eines." + } + }, + "deleteConfirmation": { + "header": "Suprimeix el conjunt d'eines", + "description": "Segur que voleu suprimir {toolsetName}?", + "successMessage": { + "detail": "S'ha suprimit el conjunt d'eines" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir el conjunt d'eines" + } + }, + "deleteAll": { + "confirmationHeader": "Suprimeix tots els conjunts d'eines", + "confirmationMessage": "Segur que voleu suprimir tots els conjunts d'eines? Aquesta acció no es pot desfer.", + "successMessage": "S'han suprimit tots els conjunts d'eines correctament", + "errorMessage": "No s'han pogut suprimir tots els conjunts d'eines" + }, + "export": { + "title": "Exporta els conjunts d'eines", + "description": "Per seguretat, es poden eliminar els valors de configuració sensibles abans d'exportar. Seleccioneu quines variables d'entorn i arguments voleu netejar de cada eina.", + "envVarsToScrub": "Variables d'entorn a netejar", + "argsToScrub": "Arguments a netejar", + "scrubCustomArgs": "Neteja la cadena d'arguments personalitzats", + "selectEnvVarsPlaceholder": "Seleccioneu les variables d'entorn de les quals voleu eliminar els valors", + "selectArgsPlaceholder": "Seleccioneu els arguments dels quals voleu eliminar els valors", + "noScrubbableData": "No hi ha cap dada de configuració a netejar", + "sensitiveDataNote": "Els valors sensibles habituals estan preseleccionats per a la vostra seguretat.", + "copiedToClipboard": "S'ha copiat la configuració del conjunt d'eines al porta-retalls", + "downloadedAsJson": "S'ha baixat la configuració del conjunt d'eines", + "fetchError": "No s'han pogut obtenir les dades del conjunt d'eines per exportar-les" + }, + "import": { + "missingTools": "No s'han trobat algunes eines i s'han omès: {tools}" + }, + "noOfTools": "{count} eina | {count} eines", + "viewToolsAndNotes": "Mostra les eines i les notes", + "console": { + "title": "Consola de l'eina", + "description": "Podeu fer servir aquesta consola per provar {toolName} i veure'n la sortida. També la podeu utilitzar per provar l'eina amb paràmetres diferents o limitar les funcions disponibles. Totes les funcions estan activades per defecte; marqueu les caselles per limitar les funcions només a les seleccionades.", + "listTools": "Llista les funcions de {toolName}", + "missingRequiredArgument": "Falten {count} arguments obligatoris", + "continueWithMissingArgs": "Continua tot i que falti l'argument", + "viewSourceOnGitHub": "Mostra el codi font a GitHub", + "allowedFeaturesLabel": "Activa funcions específiques per a aquesta eina", + "allowedFeaturesPlaceholder": "Cerqueu o trieu les funcions que voleu permetre", + "selectedFeaturesLabel": "Funcions activades actualment", + "toolCall": { + "title": "Crida a l'eina", + "description": "Afegiu les propietats necessàries per cridar {featureName}. Si voleu, podeu afegir propietats addicionals. Aneu amb compte de no cridar l'eina sense més, sobretot sense els valors correctes.", + "selectPlaceholder": "@:select una propietat", + "enterNew": "Afegeix una propietat nova", + "execute": "Executa la @:toolbox.toolsets.console.toolCall" + } + }, + "manageTooltip": "Feu clic per gestionar els conjunts d'eines utilitzats", + "noModelSupport": "És possible que el model seleccionat no admeti eines.", + "toolsetsUsedCount": "{count} conjunt d'eines actiu | {count} conjunts d'eines actius" + } + }, + "liveContexts": { + "liveContextsUsedCount": "{count} context en directe actiu | {count} contextos en directe actius", + "title": "@:context en directe", + "contexts": "Contextos en directe", + "untitled": "Context en directe sense títol", + "selectSource": "Selecciona la font", + "selectSourceTooltip": "Activeu-ho per incloure o excloure aquesta font del context", + "addNew": { + "title": "Afegeix un context en directe nou", + "description": "Creeu una font de context en directe nova per afegir context de dades externes a la vostra conversa.", + "errorMessage": { + "detail": "No s'ha pogut afegir el context en directe" + }, + "successMessage": { + "detail": "S'ha afegit el context en directe" + } + }, + "edit": { + "title": "Edita el context en directe" + }, + "promptPlaceholder": "Indiqueu aquí una indicació per al mode d'emissió (push); incloeu qualsevol detall del mode de recepció (pull) a la secció de notes.", + "endpointDetails": "Detalls del punt final", + "method": "Mètode", + "url": "URL", + "customHeaders": "Capçaleres personalitzades", + "hasBody": "Té cos", + "customProcessing": "Processament personalitzat", + "promptTemplate": "Plantilla d'indicació", + "requestHeaders": { + "title": "Capçaleres de la sol·licitud", + "description": "Afegiu les capçaleres de la sol·licitud com a objecte JSON. S'enviaran amb la sol·licitud al punt final de l'API.", + "placeholder": "{'{'}\n \"Authorization\": \"Bearer {'{'}apiKey:'key'{'}'}\",\n \"X-From\": \"{'{'}from?:'ISO'{'}'}\"\n{'}'}" + }, + "requestBody": { + "title": "Cos de la sol·licitud", + "description": "Afegiu el cos de la sol·licitud com a objecte JSON. S'enviarà amb la sol·licitud al punt final de l'API.", + "placeholder": "{'{'}\n \"q\": \"{'{'}query:'term'{'}'}\",\n \"from\": \"{'{'}from?:'ISO'{'}'}\"\n{'}'}" + }, + "placeholders": { + "title": "Marcadors de posició dinàmics", + "tooltip": "Sintaxi dels marcadors de posició", + "label": "Marcadors de posició:" + }, + "processingFunction": { + "title": "Funció de processament", + "description": "Afegiu una funció de processament per transformar les dades de la resposta abans de fer-les servir a la conversa. La funció ha de retornar una cadena.", + "placeholderHeader": "function process({'{'}data, placeholders{'}'}) {'{'}", + "placeholder": " // accedeix a les dades i als marcadors de posició opcionals\n return JSON.stringify(data)", + "placeholderFooter": "{'}'}", + "tooltip": "Accedeix-hi mitjançant el paràmetre placeholders", + "usePlaceholders": "Feu servir marcadors de posició al codi:" + }, + "testVariables": { + "description": "Introduïu valors de prova per als marcadors de posició detectats per provar el punt final." + }, + "update": { + "successMessage": { + "detail": "S'ha actualitzat el context en directe" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar el context en directe" + } + }, + "deleteConfirmation": { + "header": "Suprimeix el context en directe", + "description": "Segur que voleu suprimir {liveContextName}?", + "successMessage": { + "detail": "S'ha suprimit el context en directe" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir el context en directe" + } + }, + "emptyPlaceholder": { + "title": "No s'ha trobat cap context en directe", + "description": "Els @:liveContexts.title són contextos de dades externes que podeu afegir a la vostra conversa. Podeu crear una font de @:liveContexts.title nova i fer-la servir amb un model." + }, + "deleteAll": { + "confirmationHeader": "Suprimeix tots els contextos en directe", + "confirmationMessage": "Segur que voleu suprimir tots els contextos en directe? Aquesta acció no es pot desfer.", + "successMessage": "S'han suprimit tots els contextos en directe correctament", + "errorMessage": "No s'han pogut suprimir tots els contextos en directe" + }, + "export": { + "title": "Exporta el context en directe", + "headerScrubDescription": "Per seguretat, es poden eliminar els valors de capçalera sensibles abans d'exportar. Seleccioneu quines capçaleres voleu netejar.", + "selectHeadersToScrub": "Capçaleres a netejar", + "selectHeadersPlaceholder": "Seleccioneu les capçaleres de les quals voleu eliminar els valors", + "sensitiveHeadersNote": "Les capçaleres sensibles habituals estan preseleccionades per a la vostra seguretat.", + "copiedToClipboard": "S'ha copiat la configuració del context en directe al porta-retalls", + "downloadedAsJson": "S'ha baixat la configuració del context en directe" + }, + "modeLabel": "Mode", + "mode": { + "push": "Emissió (push)", + "pull": "Recepció (pull)", + "tooltip": { + "push": "Mode d'emissió (push): s'executa automàticament abans que el model respongui", + "pull": "Mode de recepció (pull): el model el crida sota demanda" + } + } + }, + "modes": { + "mode": "Mode | Modes", + "title": "@:modes.mode", + "exitMode": "Surt del mode {mode}", + "zenMode": { + "title": "Zen", + "quote": "un estat d'atenció serena", + "newConversation": "Conversa nova en mode Zen" + }, + "vaporMode": { + "title": "@:modes.mode @:modes.vaporMode.vapor", + "vapor": "Vapor", + "description": "Les converses no es desaran al vostre historial i desapareixeran quan ho desactiveu o navegueu cap a una altra banda", + "willDisappearTooltip": "Això desapareixerà quan desactiveu el @:modes.mode @:modes.vaporMode.vapor o navegueu cap a una altra banda", + "exitVaporMode": "Surt del @:modes.mode @:modes.vaporMode.vapor", + "enterVaporMode": "Entra al @:modes.mode @:modes.vaporMode.vapor", + "preserverChat": { + "saveConversation": "Desa la conversa", + "successMessage": { + "detail": "S'ha conservat el xat @:modes.vaporMode.vapor" + }, + "errorMessage": { + "detail": "No s'ha pogut conservar el xat @:modes.vaporMode.vapor" + } + } + }, + "focusMode": { + "title": "@:modes.mode Focus" + }, + "normalMode": { + "title": "@:modes.mode normal" + } + }, + "searchForm": { + "query": "Consulta", + "title": "Cerca elements", + "noResults": { + "title": "No s'ha trobat cap resultat", + "description": "Proveu de cercar un altre terme" + }, + "entity": { + "conversationTextMessages": "@:conversation.title", + "promptsLibraryPrompts": "Indicació | Indicacions" + }, + "foundResultsCount": "S'ha trobat {count} resultat | S'han trobat {count} resultats", + "labels": { + "title": "Cerca {entity}", + "description": "Cerqueu {entity} ràpidament amb paraules clau", + "tips": { + "default": { + "description": "La cerca coincideix amb totes les paraules per defecte (p. ex., {example} → coincideix amb text que conté totes dues paraules en qualsevol ordre)", + "example": "cotxe blau" + }, + "partial": { + "description": "Feu servir {operator} per a coincidències parcials (p. ex., {example})", + "operator": "*", + "example": "corr* → corre, corrent" + }, + "or": { + "description": "Feu servir {operator} per coincidir amb qualsevol terme (p. ex., {example})", + "operator": "OR", + "example": "poma OR taronja" + }, + "exact": { + "description": "Feu servir cometes dobles {operator} per a coincidències exactes (p. ex., {example})", + "operator": "\"\"", + "example": "\"cotxe blau\"" + }, + "specialCharacters": { + "description": "Feu servir {operator} per escapar caràcters especials (p. ex., {example})", + "operator": "\"\"", + "example": "\"C++\", \"node.js\"" + } + } + } + }, + "clearSearch": "Esborra la cerca", + "helpfulTips": "Consells útils", + "hideSearch": "Amaga la cerca", + "bookmarkItem": { + "action": "Marca {item}", + "jump": "Vés a {item} marcat", + "title": "{item} marcat", + "successMessage": { + "detail": "{item} marcat" + }, + "errorMessage": { + "detail": "No s'ha pogut marcar {item}" + }, + "deletedInfoMessage": { + "detail": "S'ha suprimit {item} marcat" + }, + "emptyState": { + "title": "No hi ha marcadors disponibles.", + "description": "Comenceu marcant {item}" + } + }, + "removeBookmarkedItem": { + "action": "Treu {item} dels marcadors", + "successMessage": { + "detail": "S'ha tret {item} dels marcadors" + }, + "errorMessage": { + "detail": "No s'ha pogut treure {item} dels marcadors" + } + }, + "turnstile": { + "title": "Turnstile | Turnstiles", + "newTurnstile": "@:turnstile.title nou", + "queueEntry": "Afegeix a la cua", + "selectPlaceholder": "@:select un @:turnstile.title", + "addQueueWithAlt": "Feu clic per obrir o Alt+clic per afegir a la cua", + "entriesQueued": "Cap @:entry en cua | {count}/{total} @:entry en cua | {count}/{total} @:entry en cua", + "emptyQueueMessage": "Quan la vostra indicació estigui a punt, feu clic a @:turnstile.queueEntry per afegir una entrada a la cua.", + "manageSavedTurnstiles": "Gestiona els Turnstiles desats", + "saveForm": { + "title": "Desa el @:turnstile.title com a", + "successMessage": { + "detail": "S'ha desat el @:turnstile.title correctament." + }, + "errorMessage": { + "detail": "No s'ha pogut desar el Turnstile." + } + }, + "loadTurnstiles": { + "title": "Carrega el @:turnstile.title", + "successMessage": { + "summary": "@:turnstile.title carregat!", + "detail": "S'ha carregat i encuat {count} entrada. | S'han carregat i encuat {count} entrades." + }, + "errorMessage": { + "detail": "No s'ha pogut carregar el Turnstile." + } + }, + "clearQueue": { + "title": "Buida la cua", + "clearQueueConfirmation": { + "message": "Segur que voleu buidar la cua? Això eliminarà tots els missatges que heu afegit." + } + }, + "newEntry": { + "title": "Entrada nova" + }, + "invalidEntriesMessage": { + "summary": "Entrades no vàlides", + "detail": "Algunes entrades no són vàlides o els falten camps obligatoris. Corregiu-les abans de continuar." + }, + "metaSendMissingRootNode": { + "detail": "No s'ha pogut executar {metaType}. Assegureu-vos que no sigui la primera entrada de la cua." + }, + "update": { + "successMessage": { + "detail": "S'ha actualitzat el @:turnstile.title correctament." + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar el Turnstile. Heu definit la indicació i el model?" + } + }, + "save": { + "successMessage": { + "detail": "S'ha desat el @:turnstile.title correctament." + }, + "errorMessage": { + "detail": "No s'ha pogut desar el Turnstile. Heu definit la indicació i el model?" + } + }, + "delete": { + "selected": "Suprimeix el @:turnstile.title seleccionat | Suprimeix els @:turnstile.title seleccionats", + "deleteConfirmation": { + "header": "Suprimeix el @:turnstile.title", + "description": "Segur que voleu suprimir {turnstileName}? | Segur que voleu suprimir {count} Turnstiles?" + } + }, + "empty": { + "title": "No hi ha cap @:turnstile.title disponible.", + "description": "Comenceu afegint o important un @:turnstile.title nou{'.'}" + }, + "new": "Turnstile nou", + "entryIndex": "@:entry {index}", + "addContinue": "Afegeix @:message.renderingActions.continueGeneration", + "addRegenerate": "Afegeix @:regenerate", + "addPersona": "Afegeix @:persona.title", + "addShield": "Afegeix @:contextShield.title", + "addShieldWithSummary": "Afegeix @:contextShield.contextShieldWithSummary", + "import": { + "title": "Importa el @:turnstile.title", + "dragAndDropMessage": "Arrossegueu i deixeu anar un @:turnstile.title de Msty comprimit per importar-lo i crear Turnstiles nous. En cas de noms duplicats, els Turnstiles importats es reanomenaran. Els podeu canviar més endavant.", + "successMessage": { + "detail": "S'han importat els Turnstiles" + }, + "errorMessage": { + "detail": "No s'han pogut importar els Turnstiles" + } + }, + "export": { + "title": "Exporta el @:turnstile.title", + "selected": "Exporta el @:turnstile.title seleccionat | Exporta els @:turnstile.title seleccionats", + "successMessage": { + "detail": "@:turnstile.title exportat com a {fileName} | @:turnstile.title exportats com a {fileName}" + }, + "errorMessage": { + "detail": "No s'ha pogut exportar el @:turnstile.title | No s'han pogut exportar els @:turnstile.title" + } + } + }, + "modelMatchmaker": { + "title": "Emparellador de models", + "description": "Ajusteu els controls lliscants de gravetat per a punts forts com ara la programació, el raonament o les matemàtiques, i l'Emparellador classificarà i recomanarà els millors models per a les vostres necessitats. Els resultats poden variar segons la qualitat de les dades, la mida del model i la complexitat de la tasca.", + "ctaIntro": "Heu trobat el vostre model?", + "ctaMessage": "Proveu-lo i compareu-lo a Msty Studio.", + "gravity": "Gravetat", + "remoteOnly": "Només remots", + "rankedModels": { + "title": "Models classificats", + "emptyMessage": "No s'ha trobat cap model. Proveu d'ajustar els vostres requisits." + }, + "strengthsLabel": { + "ca": { + "title": "Programació", + "description": "La capacitat d'escriure codi en un llenguatge de programació." + }, + "aca": { + "title": "Programació agèntica", + "description": "La capacitat agèntica d'escriure codi en un llenguatge de programació." + }, + "daa": { + "title": "Anàlisi de dades", + "description": "La capacitat d'analitzar dades i generar observacions." + }, + "ifa": { + "title": "Seguiment d'instruccions", + "description": "La capacitat de seguir instruccions i fer tasques." + }, + "jak": { + "title": "GOAT: generalista de tots els oficis", + "description": "La capacitat de fer una àmplia gamma de tasques." + }, + "la": { + "title": "Llengua", + "description": "La capacitat d'entendre i generar llenguatge humà." + }, + "ma": { + "title": "Matemàtiques", + "description": "La capacitat de fer càlculs matemàtics." + }, + "pp": { + "title": "Paràfrasi", + "description": "Capacitat demostrada de reescriptura per reformular qualsevol text." + }, + "ra": { + "title": "Raonament", + "description": "Pensament crític: la capacitat de raonar i prendre decisions." + }, + "sim": { + "title": "Simplificació", + "description": "La capacitat de simplificar qualsevol text complex." + }, + "stg": { + "title": "Generació d'històries", + "description": "La capacitat de generar històries o narracions." + }, + "sum": { + "title": "Resum", + "description": "La capacitat de resumir informació textual i numèrica." + }, + "tu": { + "title": "Ús d'eines", + "description": "La capacitat de cridar i fer servir eines externes." + }, + "mit": { + "title": "Màxim de tokens d'entrada", + "description": "El nombre màxim de tokens acceptats en una crida." + }, + "mot": { + "title": "Màxim de tokens de sortida", + "description": "El nombre màxim de tokens generats en una crida." + }, + "ics": { + "title": "Estalvi de tokens d'entrada", + "costTitle": "Cost d'entrada/milió de tokens", + "description": "L'estalvi de costos en generar tokens d'entrada." + }, + "ocs": { + "title": "Estalvi de tokens de sortida", + "costTitle": "Cost de sortida/milió de tokens", + "description": "L'estalvi de costos en generar tokens de sortida." + } + }, + "normalizedScore": "Puntuació normalitzada", + "resetStrengths": "Restableix els punts forts", + "savePresetForm": { + "title": "Desa els punts forts com a predefinit", + "errorMessage": { + "detail": "No s'ha pogut desar el predefinit de punts forts." + }, + "successMessage": { + "detail": "S'ha desat el predefinit de punts forts." + }, + "loadedMessage": { + "detail": "S'ha carregat el predefinit de punts forts." + } + }, + "deletePresetConfirm": { + "title": "Suprimeix el predefinit", + "message": "Segur que voleu suprimir {presetName}?", + "errorMessage": { + "detail": "No s'ha pogut suprimir el predefinit de punts forts." + }, + "successMessage": { + "detail": "S'ha suprimit el predefinit de punts forts." + } + } + }, + "costCalculator": { + "title": "Calculadora de cost dels models", + "description": "Calculeu i compareu els costos dels models d'IA d'OpenAI, Anthropic, Google i més. Estimeu les vostres despeses segons l'ús de tokens d'entrada/sortida i els preus del model. Són només estimacions i els costos reals poden variar.", + "tokenInputs": "Entrades de tokens", + "filters": "Filtres", + "ctaIntro": "Heu trobat el vostre model?", + "ctaMessage": "Proveu-lo i compareu-lo a Msty Studio." + }, + "vramCalculator": { + "title": "Calculadora de VRAM", + "description": "Comproveu si un model cap a la VRAM del vostre dispositiu abans de baixar-lo o executar-lo. Aquesta calculadora ofereix una estimació dels requisits de VRAM segons l'arquitectura i la mida del model. Seleccioneu una de les opcions de sota per començar.", + "ctaIntro": "Heu trobat el vostre model?", + "ctaMessage": "Proveu-lo i compareu-lo a Msty Studio." + }, + "copyOrMoveItemToWorkspace": { + "copyTitle": "Copia {item} als espais de treball", + "copyOrMoveTitle": "Copia/mou {item} als espais de treball", + "selectWorkspaces": "Selecciona els espais de treball", + "availableWorkspaces": "Espais de treball disponibles", + "actionLabel": "Acció", + "inputLabel": { + "copy": "Copieu {item} a un o més espais de treball.", + "copyOrMove": "Copieu/moveu {item} a un o més espais de treball.", + "edit": "Sincronitzeu aquest proveïdor a un o més espais de treball. Si s'havia copiat abans, s'actualitzarà. Si no, s'afegirà." + }, + "successMessage": { + "copyDetail": "S'ha copiat {item} a {count} espai de treball | S'ha copiat {item} a {count} espais de treball", + "moveDetail": "S'ha mogut {item} a {count} espai de treball | S'ha mogut {item} a {count} espais de treball" + }, + "errorMessage": { + "copyDetail": "No s'ha pogut copiar {item} a {count} espai de treball | No s'ha pogut copiar {item} a {count} espais de treball", + "moveDetail": "No s'ha pogut moure {item} a {count} espai de treball | No s'ha pogut moure {item} a {count} espais de treball" + }, + "partialCopyWarningMessage": { + "summary": "Copiat parcialment", + "detail": "No s'ha pogut copiar {item} a {count} espai de treball | No s'ha pogut copiar {item} a {count} espais de treball" + }, + "partialMovedWarningMessage": { + "summary": "Mogut parcialment", + "detail": "No s'ha pogut moure {item} a {count} espai de treball | No s'ha pogut moure {item} a {count} espais de treball" + }, + "existingCopiesInfo": "S'han omès alguns espais de treball ({workspaces}) perquè {item} ja hi existeix", + "skippingExistingCopies": "Les còpies ja existents de {item} s'ometran." + }, + "assignment": "Assignació | Assignacions", + "modelSquad": { + "title": "Esquadra de models", + "description": "@:modelSquad.title és un recull de models d'IA especialitzats, on cada model s'assigna per fer una tasca específica, com ara la generació automàtica de títols, la generació del resum de @:context, etc. Quan arriba el moment de fer aquesta tasca específica, el model assignat se selecciona automàticament.", + "addNewAssignment": "Afegeix una @:assignment nova", + "noTask": "No hi ha més tasques disponibles", + "tasks": { + "autoTitleGeneration": "Generació automàtica de títols", + "contextShieldSummaryGeneration": "Generació del resum de l'@:contextShield.title", + "realTimeDataPromptSynthesis": "Síntesi d'indicacions de @:rtd.title", + "forgeContentGeneration": "Generació de contingut de la forja", + "piiScrubbing": "@:pii.scrubbing.title", + "iconFinder": "Cercador d'icones" + }, + "save": { + "successMessage": { + "detail": "@:assignment desada" + }, + "errorMessage": { + "detail": "No s'ha pogut desar l'@:assignment" + } + }, + "assignment": { + "dialog": { + "title": "Assigna un model per a {task}", + "description": "Seleccioneu un model per assignar-lo a la tasca {task} a l'Esquadra de models.", + "selectModel": "Selecciona un model", + "selectModelPlaceholder": "Trieu un model...", + "currentlyAssigned": "Assignat actualment: {model}", + "unknownModel": "Model desconegut", + "assignButton": "Assigna el model", + "changeButton": "Canvia el model", + "helpText": "Aquest model s'utilitzarà automàticament quan es faci la tasca {task}." + }, + "success": "El model s'ha assignat a {task} correctament!", + "errors": { + "noModelSelected": "Seleccioneu un model per assignar-lo.", + "saveFailed": "No s'ha pogut desar l'assignació del model. Torneu-ho a provar." + } + } + }, + "pii": { + "title": "PII (informació d'identificació personal)", + "scrubbing": { + "title": "Neteja de PII", + "description": "Detecta i elimina automàticament la informació d'identificació personal del contingut de la pila de coneixement abans de mostrar-la a les converses.", + "info": { + "modelAssigned": "S'utilitza {model} per detectar i eliminar la PII." + }, + "warning": { + "noModel": "No hi ha cap model assignat per a @:pii.scrubbing.title a l'Esquadra de models. La recuperació de la pila de coneixement fallarà fins que s'assigni un model.", + "configurationError": "Error de configuració de @:pii.scrubbing.title: s'interromp la recuperació de la pila de coneixement per seguretat", + "setupError": "Error en configurar @:pii.scrubbing.title: s'interromp la recuperació de la pila de coneixement" + }, + "placeholders": { + "personName": "[PERSON_NAME]", + "emailAddress": "[EMAIL_ADDRESS]", + "phoneNumber": "[PHONE_NUMBER]", + "address": "[ADDRESS]", + "idNumber": "[ID_NUMBER]", + "creditCard": "[CREDIT_CARD]", + "bankAccount": "[BANK_ACCOUNT]", + "ipAddress": "[IP_ADDRESS]", + "dateOfBirth": "[DATE_OF_BIRTH]" + }, + "categories": { + "personalIdentifiers": "Identificadors personals", + "contactInformation": "Informació de contacte", + "financialInformation": "Informació financera", + "medicalInformation": "Informació mèdica", + "digitalIdentifiers": "Identificadors digitals", + "biometricData": "Dades biomètriques", + "locationData": "Dades d'ubicació" + } + } + }, + "persona": { + "title": "Personalitat | Personalitats", + "newPersona": "@:persona.title nova", + "activePersona": "@:persona.title activa", + "empty": { + "title": "No hi ha cap @:persona.title disponible.", + "description": "Comenceu afegint o important una @:persona.title nova{'.'} També podeu importar personalitats per defecte per començar." + }, + "contextShieldPosition": "Posició de l'@:contextShield.title", + "save": { + "successMessage": { + "detail": "@:persona.title desada" + }, + "errorMessage": { + "detail": "No s'ha pogut desar la @:persona.title" + } + }, + "update": { + "successMessage": { + "detail": "@:persona.title actualitzada" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar la @:persona.title" + } + }, + "delete": { + "selected": "Suprimeix la @:persona.title seleccionada", + "deleteConfirmation": { + "header": "Suprimeix la @:persona.title", + "description": "Segur que voleu suprimir {personaName}? | Segur que voleu suprimir {count} @:persona.title{'?'}" + }, + "successMessage": { + "detail": "@:persona.title suprimida | @:persona.title suprimides" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir la @:persona.title | No s'han pogut suprimir les @:persona.title" + } + }, + "import": { + "title": "Importa la @:persona.title", + "dragAndDropMessage": "Arrossegueu i deixeu anar una @:persona.title de Msty comprimida per importar-la i crear personalitats noves. En cas de noms duplicats, les personalitats importades es reanomenaran. Les podeu canviar més endavant.", + "successMessage": { + "detail": "S'han importat les personalitats" + }, + "errorMessage": { + "detail": "No s'han pogut importar les personalitats" + } + }, + "export": { + "title": "Exporta la @:persona.title", + "selected": "Exporta la @:persona.title seleccionada | Exporta les @:persona.title seleccionades", + "successMessage": { + "detail": "@:persona.title exportada com a {fileName} | @:persona.title exportades com a {fileName}" + }, + "errorMessage": { + "detail": "No s'ha pogut exportar la @:persona.title | No s'han pogut exportar les @:persona.title" + } + }, + "messages": { + "deleteSuccess": "@:persona.title suprimida | @:persona.title suprimides" + }, + "deleteConfirmation": { + "header": "Suprimeix la @:persona.title", + "message": "Segur que voleu suprimir {personaName}? | Segur que voleu suprimir {count} @:persona.title{'?'}", + "errorMessage": { + "detail": "No s'ha pogut suprimir la @:persona.title | No s'han pogut suprimir les @:persona.title" + } + }, + "addTitle": "Afegeix @:persona.title", + "createRootFolder": "Carpeta nova a l'arrel", + "setDefaultFolder": "Estableix com a carpeta per defecte", + "unsetDefaultFolder": "Desfés la carpeta per defecte", + "folderForm": { + "updateSuccessMessage": { + "detail": "S'ha actualitzat la carpeta" + }, + "updateErrorMessage": { + "detail": "No s'ha pogut actualitzar la carpeta" + }, + "createSuccessMessage": { + "detail": "S'ha creat la carpeta" + }, + "createErrorMessage": { + "detail": "No s'ha pogut crear la carpeta" + }, + "deleteConfirmation": { + "header": "Suprimeix la carpeta", + "message": "Segur que voleu suprimir {folderName} amb totes les seves @:persona.title{'?'}", + "successMessage": { + "detail": "S'ha suprimit la carpeta" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir la carpeta" + } + } + }, + "selectPlaceholder": "@:select una @:persona.title", + "autoResponder": { + "turnOn": "Activa el responedor automàtic", + "turnOff": "Desactiva el responedor automàtic" + }, + "hideAndIsolateSystemPrompt": "Amaga i aïlla la indicació del sistema", + "isolateResponse": "Aïlla la resposta", + "autoResponderDefault": "Responedor automàtic", + "contextMessageCount": { + "title": "Recompte de context", + "description": "Definiu el nombre de missatges recents que s'utilitzaran com a context per a la @:persona.title{'.'}" + } + }, + "fewShotPrompts": { + "title": "Indicacions amb pocs exemples (few-shot)", + "description": "L'aprenentatge amb pocs exemples (few-shot) és una tècnica d'aprenentatge automàtic que us permet entrenar un model amb una petita quantitat de dades. Podeu fer servir indicacions few-shot per proporcionar exemples al model i ajudar-lo a entendre el context i generar respostes millors.", + "addNewShot": "Afegeix un exemple nou" + }, + "insights": "Observacions", + "cost": "Cost", + "costInUSD": "Cost en USD", + "promptTokens": "Tokens de la indicació", + "completionTokens": "Tokens de la compleció", + "totalTokens": "Tokens totals", + "usage": "Ús", + "tokens": "Tokens", + "tokensProcessed": "Tokens processats", + "selectProvider": "@:select un proveïdor | @:select proveïdors", + "tokensProcessedForProvider": "Tokens processats per a {provider}", + "totalUsage": "Ús total", + "fromTo": "De {from} a {to}", + "crunchingTheNumbers": "S'estan fent els càlculs", + "throughputForModel": { + "title": "Rendiment de {model}", + "unit": { + "description": "Mesurat en tokens per segon" + } + }, + "latencyForModel": { + "title": "Latència de {model}", + "unit": { + "description": "Mesurat en segons" + } + }, + "total": "Total", + "min": "Mín.", + "max": "Màx.", + "avg": "Mitj.", + "summary": "Resum", + "dates": { + "today": "Avui", + "last7Days": "Últims 7 dies", + "last14Days": "Últims 14 dies", + "last30Days": "Últims 30 dies", + "last3Months": "Últims 3 mesos", + "last6Months": "Últims 6 mesos", + "last12Months": "Últims 12 mesos", + "monthToDate": "Del mes fins ara", + "yearToDate": "De l'any fins ara", + "allTime": "Des de sempre", + "selectDateRange": "@:select l'interval de dates", + "month": "Mes", + "year": "Any", + "day": "Dia", + "week": "Setmana" + }, + "insightsSummary": { + "emptyState": { + "title": "Resum d'observacions", + "description": "No hi ha dades disponibles per a l'interval de dates i els proveïdors seleccionats." + } + }, + "insightsProviderTokensProcessed": { + "emptyState": { + "title": "Tokens processats", + "description": "No hi ha dades disponibles per a l'interval de dates i el proveïdor seleccionats." + } + }, + "insightsProviderThroughput": { + "emptyState": { + "title": "Rendiment", + "description": "No hi ha dades disponibles per a l'interval de dates, el proveïdor i el model seleccionats." + } + }, + "insightsProviderLatency": { + "emptyState": { + "title": "Latència", + "description": "No hi ha dades disponibles per a l'interval de dates, el proveïdor i el model seleccionats." + } + }, + "hideItem": { + "action": "Amaga {item}", + "successMessage": { + "detail": "S'ha amagat {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut amagar {item}" + }, + "unhideParent": "Mostra el {item} pare", + "hiddenParentContentTitle": "Contingut pare amagat. Feu clic per mostrar-lo." + }, + "showItem": { + "action": "Mostra {item}" + }, + "licenseVerification": { + "errorMessage": "No s'ha pogut verificar la llicència. Torneu-ho a provar.", + "enterLicenseKey": "Introduïu la clau de llicència Aurum", + "licenseTypeInfo": "Esteu utilitzant la llicència {licenseType}.", + "licenseKey": "Clau de llicència", + "logout": "Tanca la sessió", + "licenseTypeInfoForAdmin": "Esteu utilitzant la llicència {licenseType} i heu iniciat la sessió com a propietari." + }, + "aurum": { + "activateLicense": "Activa la llicència Aurum", + "activateLicenseDescription": "Introduïu la vostra clau de llicència per desbloquejar les funcions premium", + "manageLicense": "Gestiona la llicència", + "lifetimeLicense": "Aurum de per vida", + "lifetimeLicenseDescription": "Compra única amb accés de per vida a les funcions premium", + "annualLicense": "Aurum anual", + "annualLicenseDescription": "Subscripció anual amb actualitzacions contínues i funcions premium", + "oneTimePurchase": "Compra única", + "yearlySubscription": "Subscripció anual", + "enterLicenseKey": "Clau de llicència", + "verifyAndActivate": "Verifica i activa", + "deactivateLicense": "Desactiva la llicència", + "licensedTo": "Llicència a nom de", + "expiresOn": "Caduca el", + "expired": "Caducada", + "expiresInDays": "Caduca d'aquí a {days} dies", + "needLicense": "Necessiteu una llicència?", + "purchaseLicense": "Compreu-la a msty.ai", + "hasLicense": "Ja teniu una llicència?", + "manageActivation": "Gestiona l'activació" + }, + "cloneItem": { + "action": "Clona {item}", + "successMessage": { + "detail": "S'ha clonat {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut clonar {item}" + } + }, + "cloneItemTo": { + "action": "Clona a {item}", + "successMessage": { + "detail": "S'ha clonat correctament a un nou {item} " + }, + "errorMessage": { + "detail": "No s'ha pogut clonar a un nou {item}" + } + }, + "importJson": { + "clipboardTitle": "Importa {item} des del porta-retalls JSON", + "fileTitle": "Importa {item} des d'un fitxer JSON", + "successMessage": { + "detail": "S'han importat {count} {item} correctament", + "detailDestination": "@:importJson.successMessage.detail {item} a {destination}" + }, + "successMessageWithToolsets": { + "detail": "S'han importat {count} {item} correctament i s'han creat automàticament els conjunts d'eines corresponents" + }, + "invalidConfig": { + "detail": "La configuració no és vàlida o no hi ha res a importar. Assegureu-vos que el JSON sigui vàlid i torneu-ho a provar." + }, + "errorMessage": { + "detail": "No s'ha pogut importar. Comproveu el JSON i torneu-ho a provar." + }, + "partialError": { + "detail": "No s'han pogut importar {failed} elements: {items}" + }, + "dragAndDropMessage": "Arrossegueu i deixeu anar un fitxer JSON per importar {item}." + }, + "team": { + "label": "Equip | Equips", + "createTeam": "Crea un equip", + "inviteUserLabel": "Convida un usuari", + "overview": "Resum general", + "usersLabel": "Usuaris", + "allTeamLabel": "Tots els equips", + "createSuccess": "L'equip {teamName} s'ha creat correctament.", + "member": "Membre|Membres", + "allUsers": "Tots els usuaris", + "addTeamFormHeader": "Crea un equip nou", + "updateTeamFormHeader": "Edita l'equip", + "addUsers": "Afegeix usuaris", + "updateUsers": "Actualitza els usuaris", + "addUserToTeam": "Afegeix usuaris a l'equip", + "teamNameLabel": "Nom de l'equip", + "teamNamePlaceholder": "Introduïu el nom del nou equip", + "addTeamDescription": "Creeu un equip nou per gestionar recursos.", + "noUserInTeam": "No hi ha cap usuari assignat a aquest equip.", + "editTeam": "Edita l'equip", + "invited": "Convidat", + "shortDescription": "Gestioneu els vostres equips i usuaris.", + "empty": { + "description": "Un equip s'utilitza per gestionar recursos. Podeu afegir usuaris a l'equip per col·laborar i compartir l'accés als recursos." + }, + "deleteConfirmation": { + "header": "Suprimeix l'equip", + "message": "Segur que voleu suprimir", + "inputPlaceholder": "Escriviu {name} per confirmar la supressió.", + "rejectLabel": "@:cancel", + "acceptLabel": "Suprimeix" + }, + "policies": { + "title": "Política | Polítiques", + "toolbox": { + "title": "@:toolbox.title", + "description": "Permet que l'usuari faci servir la funció Caixa d'eines" + }, + "promptsLibrary": { + "title": "@:promptsLibrary.title", + "description": "Permet que l'usuari faci servir la funció Biblioteca d'indicacions" + }, + "persona": { + "title": "@:persona.title", + "description": "Permet que l'usuari faci servir la funció Personalitat" + }, + "turnstile": { + "title": "@:turnstile.title", + "description": "Permet que l'usuari faci servir la funció Turnstile" + }, + "knowledgeStack": { + "title": "@:knowledgeStack.title", + "description": "Permet que l'usuari faci servir la funció Pila de coneixement" + }, + "remoteToolsConnector": { + "title": "@:remoteToolsConnector.title", + "description": "Permet que l'usuari faci servir la funció @:remoteToolsConnector.title" + }, + "rtd": { + "title": "@:rtd.title", + "description": "Permet que l'usuari faci servir la funció @:rtd.title" + }, + "attachments": { + "title": "@:attachments.title", + "description": "Permet que l'usuari faci servir la funció @:attachments.title" + }, + "forgeMode": { + "title": "@:forge.forgeMode.title", + "description": "Permet que l'usuari faci servir la funció @:forge.forgeMode.title" + }, + "insights": { + "title": "@:insights", + "description": "Permet que l'usuari faci servir la funció @:insights" + }, + "platformWeb": { + "title": "Accés web a Msty Studio", + "description": "Permet que l'usuari accedeixi a Msty Studio des del navegador web" + }, + "platformDesktop": { + "title": "Accés d'escriptori a Msty Studio", + "description": "Permet que l'usuari accedeixi a Msty Studio des de l'aplicació d'escriptori" + }, + "platformAccess": "Accés a la plataforma", + "modelHub": { + "description": "Gestioneu l'accés a proveïdors de models específics." + } + }, + "user": { + "noAvailableSeats": "Heu arribat al límit per convidar usuaris.", + "licenceAndAccess": { + "loggedInAsLabel": "Sessió iniciada com a", + "useSignInWithEmail": "S'enviarà un enllaç d'inici de sessió segur a l'adreça electrònica proporcionada. Els titulars d'una llicència Aurum han de verificar la seva clau de llicència abans de fer servir aquesta funció.", + "continueWithlicenseLabel": "continua amb la clau de llicència", + "sendLoginLink": "Envia l'enllaç d'inici de sessió" + }, + "teamUserFormHeader": "Usuaris de l'equip", + "invitationVerification": { + "inProgress": "S'està verificant la vostra sol·licitud d'accés. Espereu", + "info": "Us han convidat a unir-vos a un compte de Msty Studio. ", + "error": "Alguna cosa ha anat malament; contacteu amb l'administrador del vostre compte." + }, + "invitationInfo": "S'enviarà un enllaç d'inici de sessió a l'adreça electrònica proporcionada més amunt.", + "invitation": { + "successMessage": { + "detail": "S'ha convidat l'usuari {email}." + }, + "invalidEmail": "Adreça electrònica no vàlida", + "errorMessageUserExist": "L'usuari ja existeix", + "errorMessage": { + "detail": "No s'ha pogut convidar {email}." + } + }, + "fetch": { + "errorMessage": { + "detail": "No s'ha pogut carregar la llista d'usuaris" + } + }, + "delete": { + "successMessage": { + "detail": "S'ha suprimit l'usuari {email} correctament." + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir l'usuari {email}" + } + }, + "deleteConfirmation": { + "header": "Suprimeix l'usuari", + "message": "Segur que voleu suprimir {email}?", + "rejectLabel": "@:cancel", + "acceptLabel": "Suprimeix" + }, + "assignUserToTeamLabel": "Assigna usuaris a l'equip {teamName}", + "assignUserToTeamSuccess": "S'ha assignat {user} a l'equip {teamName} correctament", + "unassignUserToTeamLabel": "Treu l'usuari de l'equip", + "unassignUserToTeamMessage": "Treu {user} de l'equip {teamName}", + "selectUserToAddToTeamPlaceholder": "@:select els usuaris a afegir" + } + }, + "updateItem": { + "action": "Actualitza {item}", + "editAction": "Edita {item}", + "successMessage": { + "detail": "S'ha actualitzat {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar {item}" + } + }, + "modelPurpose": { + "text": "Text", + "tools": "Eines", + "vision": "Visió", + "coding": "Programació", + "embedding": "Embedding", + "streaming": "Transmissió en temps real", + "image": "Imatge", + "thinking": "Raonament" + }, + "editModel": { + "inputLabels": { + "label": "Etiqueta", + "purpose": "Finalitat" + } + }, + "environment": { + "selectPlaceholder": "@:select un @:environment.title", + "new": "@:environment.title nou", + "title": "Entorn | Entorns", + "empty": { + "description": "Afegiu entorns nous per començar." + }, + "save": { + "successMessage": { + "detail": "@:environment.title desat" + }, + "errorMessage": { + "detail": "No s'ha pogut desar l'@:environment.title" + } + }, + "delete": { + "title": "Suprimeix l'@:environment.title | Suprimeix els @:environment.title", + "selected": "Suprimeix l'@:environment.title seleccionat | Suprimeix els @:environment.title seleccionats", + "deleteConfirmation": { + "header": "Suprimeix l'@:environment.title", + "description": "Segur que voleu suprimir {environmentName}? | Segur que voleu suprimir {count} entorns?" + }, + "successMessage": { + "detail": "@:environment.title suprimit | @:environment.title suprimits" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir l'@:environment.title | No s'han pogut suprimir els @:environment.title" + } + }, + "backup": { + "title": "Fes una còpia de seguretat de l'@:environment.title", + "successMessage": { + "detail": "S'ha fet una còpia de seguretat de l'@:environment.title" + }, + "errorMessage": { + "detail": "No s'ha pogut fer una còpia de seguretat de l'@:environment.title" + } + }, + "restore": { + "title": "Restaura l'@:environment.title", + "dragAndDropMessage": "Arrossegueu i deixeu anar un fitxer d'entorn de Msty per restaurar els entorns. Nota: tots els entorns existents se suprimiran i es reemplaçaran pels importats.", + "successMessage": { + "detail": "@:environment.title restaurat" + }, + "errorMessage": { + "detail": "No s'ha pogut restaurar l'@:environment.title" + } + }, + "quickSelect": { + "title": "Selecció ràpida de variable d'entorn", + "selectPlaceholder": "Cerqueu o seleccioneu una variable per copiar-la al porta-retalls" + } + }, + "makeActive": { + "title": "Fes que {itemType} sigui actiu", + "isActive": "{itemType} actiu", + "successMessage": { + "detail": "Ara {itemName} és el {itemType} actiu" + }, + "errorMessage": { + "detail": "No s'ha pogut fer que {itemName} sigui el {itemType} actiu" + } + }, + "moveItem": { + "action": "Mou {item}", + "moveLocation": "Mou {count} {sourceType} a {item}", + "confirmation": { + "message": "Segur que voleu moure el {item} seleccionat?" + }, + "successMessage": { + "detail": "S'ha mogut {item} | S'han mogut {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut moure {item}" + }, + "errrorMessage": { + "detail": "No s'ha pogut moure {item}" + }, + "cannotDetermineTargetProject": "No s'ha pogut determinar el projecte de destinació.", + "cannotDetermineTargetFolder": "No s'ha pogut determinar la carpeta de destinació." + }, + "deleteItem": { + "action": "Suprimeix {item}", + "successMessage": { + "detail": "S'ha suprimit {item}" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir {item}" + } + }, + "promptsLibrary": { + "title": "Biblioteca d'indicacions", + "newPrompt": "@:prompt nova", + "search": "Cerca indicacions", + "quickPrompt": "@:prompt ràpida", + "saveToQuickPrompts": "Desa a les indicacions ràpides", + "copyPrompt": "Copia la @:prompt al porta-retalls", + "shortcutUsage": "Teclegeu / per cercar a la @:promptsLibrary.title", + "setDefaultFolder": "Estableix com a carpeta per defecte", + "unsetDefaultFolder": "Desfés la carpeta per defecte", + "createRootFolder": "Carpeta nova a l'arrel", + "folder": "@:folder", + "prompt": "@:prompt", + "deleteAllPrompt": { + "title": "Suprimeix totes les indicacions i carpetes", + "description": "Això esborrarà tota la @:promptsLibrary.title i les carpetes. No es poden recuperar després de suprimir-les.", + "successMessage": { + "detail": "S'han suprimit totes les indicacions" + } + }, + "empty": { + "title": "No hi ha cap @:persona.title disponible.", + "description": "Comenceu afegint o important una @:prompt nova{'.'} També podeu importar @:prompts per defecte per començar." + }, + "import": { + "title": "Importa les @:prompts per defecte", + "successMessage": { + "detail": "Ara podeu fer servir les indicacions importades a les vostres converses." + }, + "copyMultiplePrompts": "Copia {count} @:prompts al porta-retalls", + "errorMessage": { + "detail": "No s'han pogut importar les @:prompts per defecte" + }, + "copyErrorMessage": { + "detail": "No s'ha pogut copiar la @:prompt{'.'} Torneu-ho a provar." + } + }, + "folderForm": { + "updateSuccessMessage": { + "detail": "S'ha actualitzat la carpeta" + }, + "updateErrorMessage": { + "detail": "No s'ha pogut actualitzar la carpeta" + }, + "createSuccessMessage": { + "detail": "S'ha creat la carpeta" + }, + "createErrorMessage": { + "detail": "No s'ha pogut crear la carpeta" + }, + "deleteConfirmation": { + "header": "Suprimeix la carpeta", + "message": "Segur que voleu suprimir {folderName} amb totes les seves subcarpetes i indicacions?", + "successMessage": { + "detail": "S'ha suprimit la carpeta" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir la carpeta" + } + } + }, + "promptForm": { + "addTitle": "Afegeix una @:prompt nova", + "editTitle": "Edita la @:prompt", + "promptName": "Nom de la @:prompt", + "promptDescription": "@:description", + "updateSuccessMessage": { + "detail": "@:prompt actualitzada" + }, + "updateErrorMessage": { + "detail": "No s'ha pogut actualitzar la @:prompt" + }, + "createSuccessMessage": { + "detail": "@:prompt creada" + }, + "createErrorMessage": { + "detail": "No s'ha pogut crear la @:prompt" + }, + "deleteConfirmation": { + "header": "Suprimeix {count} @:prompt", + "message": "Segur que ho voleu suprimir?", + "successMessage": { + "detail": "@:prompt suprimida" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir la @:prompt" + } + } + } + }, + "importDefault": { + "title": "Importa {item} per defecte", + "successMessage": { + "detail": "S'ha importat {item} per defecte" + }, + "errorMessage": { + "detail": "No s'ha pogut importar {item} per defecte" + } + }, + "contextIsolation": { + "isolate": "Aïlla el @:context", + "unIsolate": "Treu l'aïllament del @:context", + "label": "@:context aïllat", + "clearAll": { + "title": "Esborra tots els aïllaments de context", + "successMessage": { + "detail": "S'han esborrat tots els aïllaments de context" + } + } + }, + "responseMetrics": { + "title": "Mètriques de la resposta", + "longPressOrAltClickToCycle": "Premeu llargament o Alt+clic per recórrer les mètriques" + }, + "quickView": "Vista ràpida", + "detailsView": "Vista de detalls", + "input": "Entrada | Entrades", + "output": "Sortida | Sortides", + "think": "Raona", + "reasoning": { + "emptyNotice": "El model ha fet un raonament intern però no ha retornat cap resum. Per activar els resums de raonament, apliqueu l'etiqueta «Raonament» a aquest model fent clic a la icona d'edició que hi ha al costat de la selecció del model." + }, + "service": "Servei | Serveis", + "localAIService": "@:service de @:localAI", + "version": "Versió | Versions", + "invalidConfig": "La configuració no és vàlida. Introduïu un objecte JSON vàlid.", + "unsavedChanges": "Canvis sense desar", + "saveChanges": "Desa els canvis", + "day": "Dia | Dies", + "every": "Cada", + "files": "Fitxers", + "file": "Fitxer | @:files", + "reallyDelete": "Segur que ho voleu suprimir?", + "similarity": "Similitud", + "saveAsDraft": "Desa com a esborrany", + "compose": "Redacta", + "embeddingModel": "Model d'embedding", + "document": "Document | Documents", + "matched": "Coincident", + "active": "Actiu", + "inactive": "Inactiu", + "folderName": "Nom de la carpeta", + "addNewFolder": "Afegeix una carpeta nova", + "editFolder": "Edita la carpeta", + "errorGeneric": "S'ha produït un error. Torneu-ho a provar més tard. Reviseu els registres per a més detalls.", + "sharedService": { + "modelsPath": { + "title": "Camí dels models", + "description": "Aquí és on {service} baixa i cerca els models. Podeu actualitzar el camí per fer servir una carpeta personalitzada.", + "edit": { + "title": "Edita el camí dels models", + "description": "Definiu la vostra ubicació preferida.", + "willRestartWarning": "Nota: canviar el camí dels models reiniciarà {service} perquè els canvis tinguin efecte.", + "selectModelsPath": "Selecciona el camí dels models", + "successMessage": { + "detail": "S'ha actualitzat el camí dels models" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar el camí dels models" + } + } + }, + "quickPromptDialog": { + "title": "Desa a les indicacions ràpides", + "description": "Poseu un títol curt a la vostra indicació del sistema. S'afegirà a les indicacions ràpides per poder-la reutilitzar fàcilment.", + "nameLabel": "Nom de la @:prompt ràpida", + "successMessage": "S'ha desat la indicació del sistema a les indicacions ràpides.", + "errorMessage": "No s'ha pogut desar la indicació del sistema a les indicacions ràpides.", + "emptyPromptMessage": "Afegiu text a la indicació del sistema abans de desar-la a les indicacions ràpides." + }, + "serviceHealth": { + "title": "Estat del servei", + "description": "Estat del {service}. Teniu problemes? Proveu de reiniciar-lo o de revisar els registres.", + "serviceAction": { + "restartService": "Reinicia el servei", + "stopService": "Atura el servei", + "startService": "Inicia el servei", + "errorMessage": { + "detail": "No s'ha pogut fer {action} a {service}. Reviseu els registres per a més detalls." + }, + "restartSuccessMessage": { + "detail": "S'ha reiniciat {service}" + } + }, + "serviceStatus": { + "starting": "S'està iniciant", + "running": "En execució", + "stopped": "Aturat" + } + }, + "serviceEndpoint": { + "title": "Punt final del servei | Punts finals del servei", + "description": { + "base": "Punt final local de {service}. Feu-lo servir per connectar-vos des d'altres aplicacions que s'executen localment al dispositiu.", + "serviceIsNotRunning": "Quan el servei estigui en execució, l'adreça es mostrarà aquí.", + "serviceIsAvailableOnNetwork": "Com que el servei està disponible a la xarxa, també us hi podeu connectar fent servir l'URL del servei de xarxa des d'altres dispositius." + }, + "copyNetworkURL": "Copia l'URL de xarxa" + }, + "serviceVersion": { + "title": "Versió del servei", + "description": "Mostra la versió actual de {service}. Per garantir un rendiment òptim i l'accés a les funcions noves, mantingueu-lo actualitzat. També podeu tornar-lo a instal·lar si cal.", + "forceUpdate": { + "title": "Força l'actualització de {service}", + "forCpu": "Força l'actualització de {service} (CPU)", + "forCuda": "Força l'actualització de {service} (CUDA)", + "forCuda124": "Força l'actualització de {service} (CUDA 12.4)", + "forCuda131": "Força l'actualització de {service} (CUDA 13.1)", + "forVulkan": "Força l'actualització de {service} (Vulkan)", + "forRocm": "Força l'actualització de {service} (ROCm)", + "forOpencl": "Força l'actualització de {service} (OpenCL)", + "forSycl": "Força l'actualització de {service} (SYCL)", + "successMessage": { + "detail": "{service} s'ha actualitzat a la darrera versió {version}" + }, + "errorMessage": { + "detail": "No s'ha pogut actualitzar {service}. Reviseu els registres per a més detalls." + } + }, + "removeService": { + "title": "Elimina {service}", + "confirmationHeader": "Elimina {service}", + "confirmationMessage": "Segur que voleu eliminar {service}? Això suprimirà el binari del servei i totes les seves configuracions. El podeu tornar a instal·lar més endavant des de la pàgina de configuració.", + "confirmationAccept": "Elimina", + "successMessage": { + "detail": "S'ha eliminat {service} correctament" + }, + "errorMessage": { + "detail": "No s'ha pogut eliminar {service}. Reviseu els registres per a més detalls." + } + } + }, + "serviceConfigurations": { + "title": "Configuracions del servei", + "description": "Aquestes configuracions s'apliquen a {service} quan s'inicia. {service} es reiniciarà automàticament després de desar qualsevol canvi.", + "enableNetworkAccess": { + "title": "Activa l'accés a la xarxa", + "description": "Permet que altres dispositius de la vostra xarxa accedeixin a aquest {service} a través de l'adreça IP d'aquest dispositiu." + }, + "allowMstyStudioAccess": { + "title": "Permet l'accés des de Msty Studio", + "description": "Permet les connexions des del web de Msty Studio a aquesta aplicació perquè pugui accedir a {service}." + }, + "captureServiceLogs": { + "title": "Captura els registres del servei", + "description": "Activeu el registre per capturar dades del servei per a la depuració. Feu servir aquesta opció només quan calgui." + }, + "unsavedChanges": { + "message": "Teniu canvis sense desar a les configuracions de {service}. Un cop els deseu, {service} es reiniciarà amb les noves configuracions.", + "saveChanges": "Desa els canvis i reinicia el servei", + "successMessage": { + "detail": "S'han desat les configuracions de {service} i s'ha reiniciat el servei" + }, + "errorMessage": { + "detail": "No s'han pogut desar les configuracions de {service}. Reviseu els registres per a més detalls." + } + } + }, + "modelConfigurations": { + "title": "Configuracions del model", + "description": "Aquestes configuracions s'apliquen a tots els models durant les sessions de xat." + } + }, + "keyboardShortcuts": { + "title": "Dreceres de teclat", + "description": "Personalitzeu les dreceres de teclat per accedir ràpidament a les funcions", + "search": "Cerca dreceres...", + "searchByShortcut": "Cerca per drecera", + "searchByName": "Cerca per nom", + "pressShortcut": "Premeu qualsevol combinació de tecles...", + "pressKeys": "Premeu tecles...", + "notSet": "Sense definir", + "edit": "Edita la drecera", + "clear": "Esborra", + "global": "Global", + "saved": "S'ha desat la drecera", + "error": "Error en desar la drecera", + "reset": "S'ha restablert la drecera", + "resetToDefault": "Restableix al valor per defecte", + "resetAll": "Restableix totes les dreceres", + "allReset": "S'han restablert totes les dreceres als valors per defecte", + "noResults": "No s'ha trobat cap drecera", + "conflictWith": "Entra en conflicte amb: {name}", + "categories": { + "all": "Tot", + "general": "General", + "navigation": "Navegació", + "appearance": "@:settings.appearance", + "conversation": "Conversa" + }, + "resetAllConfirm": { + "title": "Restableix totes les dreceres", + "message": "Segur que voleu restablir totes les dreceres de teclat als seus valors per defecte?" + }, + "help": { + "title": "Dreceres de teclat", + "customizeButton": "Personalitza les dreceres" + }, + "contextual": "Contextual", + "systemWide": "A tot el sistema", + "perSplit": "Per divisió", + "macOptionHint": "Les dreceres amb la tecla Opció funcionen a Msty. Si en comptes d'això produeixen caràcters especials, comproveu Configuració del sistema > Teclat > Fonts d'entrada", + "example": { + "title": "Exemple de dreceres de teclat", + "description": "Aquest component mostra com registrar i fer servir dreceres de teclat als vostres components.", + "registeredShortcuts": "Dreceres registrades:", + "exampleAction1": "Acció d'exemple 1", + "scopedAction": "Acció amb àmbit", + "actions": "Accions:", + "updateFirstShortcut": "Actualitza la primera drecera", + "testConflictDetection": "Prova la detecció de conflictes", + "actionLog": "Registre d'accions:", + "noActionsYet": "Encara no hi ha cap acció. Proveu de prémer les dreceres!", + "developerNotes": { + "title": "Notes per a desenvolupadors:", + "items": [ + "Les dreceres es netegen automàticament quan el component es desmunta", + "Feu servir dreceres amb àmbit de component per evitar conflictes d'ID", + "Les assignacions específiques de plataforma es gestionen automàticament (Cmd a Mac, Ctrl a Windows)", + "Comproveu si hi ha conflictes abans de registrar dreceres que puguin xocar amb les existents", + "Les dreceres poden ser globals (funcionen a tot arreu) o específiques de context" + ] + } + }, + "splitRemoval": { + "selectSplitToRemove": "Seleccioneu la divisió a eliminar", + "pressKeysToCancel": "Premeu", + "remove": "Elimina" + } + }, + "createNew": "Crea'n una de nova", + "copy": "Copia", + "miniMapActions": { + "noMessageSelectedWarning": { + "summary": "Cap missatge seleccionat", + "detail": "Seleccioneu com a mínim un missatge per fer qualsevol acció" + }, + "exportOrCopyMessage": { + "exportMessage": "Exporta el missatge | Exporta els missatges", + "copyMessage": "Copia el missatge | Copia els missatges", + "asJson": "Com a JSON", + "asMarkdown": "Com a Markdown", + "successMessage": "S'han {action} els missatges com a {format}", + "action": { + "export": "exportat", + "copy": "copiat" + } + } + }, + "reIndexItem": { + "action": "Torna a indexar {item}", + "successMessage": { + "detail": "S'ha tornat a indexar {item} correctament" + }, + "errorMessage": { + "detail": "No s'ha pogut tornar a indexar {item}" + }, + "confirmationMessage": "Segur que voleu tornar a indexar {item}?" + }, + "recent": "Recent|Recents", + "recentsPinned": "Recents i fixats", + "knowledgeStack": { + "title": "Pila de coneixement | Piles de coneixement", + "contexts": "Contextos de la @:knowledgeStack.title", + "composeProgress": { + "processing": "S'està processant: {fileName}", + "composing": "S'està redactant", + "composingEllipsis": "S'està redactant…", + "files": "Fitxers", + "notes": "Notes", + "youtube": "YouTube", + "folders": "Carpetes", + "overallProgress": "Progrés general", + "inFlight": "En curs:" + }, + "itemStatus": { + "ignoredForRetrieval": "Ignorat per a la recuperació" + }, + "cloudShare": { + "importingFolder": "S'està important la carpeta: {name}", + "processingCount": "S'estan processant {count} piles de coneixement" + }, + "saveEdits": { + "title": "Desa les edicions", + "confirmation": { + "header": "Desa les edicions i marca com a esborrany", + "message": "Segur que voleu desar les vostres edicions? Això marcarà la pila de coneixement com a esborrany i n'impedirà l'ús en producció fins que no es torni a processar." + } + }, + "selectFolderForImport": "Trieu on importar la @:knowledgeStack.title", + "newKnowledgeStack": "@:knowledgeStack.title nova", + "addDescription": "Afegeix una descripció", + "editDescription": "Edita la descripció", + "descriptionPlaceholder": "Afegiu una descripció per a aquesta pila de coneixement...", + "autoSaving": "S'està desant...", + "autoSaved": "Desat {time}", + "basicInfo": "Informació bàsica", + "similarityThreshold": "Llindar de similitud", + "similarityMatch": "Coincidència de similitud", + "unsavedChanges": { + "confirmNavigation": "Teniu canvis sense desar. Segur que voleu sortir d'aquesta pàgina? Es perdran els vostres canvis.", + "confirmReload": "Teniu canvis sense desar que es perdran si torneu a carregar la pàgina." + }, + "empty": { + "title": "No s'ha seleccionat cap @:knowledgeStack.title", + "description": "La pila de coneixement us permet incorporar fitxers, carpetes, notes i transcripcions de YouTube, i fer-los cercables i a punt per al xat mitjançant la generació augmentada per recuperació (RAG)" + }, + "selectOrCreate": "Selecciona una @:knowledgeStack.title", + "selectFromTreeOrCreate": "Seleccioneu una @:knowledgeStack.title de l'arbre o creeu-ne una de nova", + "folderForm": { + "addTitle": "Afegeix una carpeta nova", + "editTitle": "Edita la carpeta", + "editIgnoreRules": "Edita les regles d'exclusió", + "editIgnoreRulesTitle": "Regles d'exclusió", + "ignoreRulesDescription": "Definiu patrons per excloure fitxers i carpetes del processament.", + "ignoreRulesHierarchySimple": "Prioritat: .mstyignore/.gitignore locals → Regles de la carpeta → Valors per defecte del sistema", + "ignoreRulesPlaceholder": "# Introduïu els patrons aquí, un per línia\n# Exemple: *.log, node_modules/, !important.txt", + "showExamples": "Mostra exemples i ajuda", + "ignoreExample1": "Fitxers de registre", + "ignoreExample2": "Fitxers temporals a tots els directoris", + "ignoreExample3": "Tot el directori", + "ignoreExample4": "Patró d'excepció", + "ignoreExample5": "Diversos tipus d'imatge", + "ignoreExample6": "Tots els fitxers de test i subdirectoris", + "ignoreExample7": "Coincidència sense distinció de majúscules", + "ignoreExample8": "Fitxers que comencen per secret-", + "insertTemplate": "Fes servir la plantilla", + "clearContent": "Esborra-ho tot", + "ignoreRulesUpdated": "Les regles d'exclusió s'han actualitzat correctament", + "ignoreRulesUpdateError": "No s'han pogut actualitzar les regles d'exclusió", + "deleteConfirmation": { + "header": "Suprimeix la carpeta «{folderName}»", + "message": "Segur que voleu suprimir aquesta carpeta? Se n'eliminaran totes les piles de coneixement que conté. Aquesta acció no es pot desfer.", + "successMessage": { + "detail": "S'ha suprimit la carpeta" + }, + "errorMessage": { + "detail": "No s'ha pogut suprimir la carpeta" + } + }, + "updateErrorMessage": { + "detail": "No s'ha pogut actualitzar la carpeta" + }, + "createSuccessMessage": { + "detail": "S'ha creat la carpeta" + }, + "createErrorMessage": { + "detail": "No s'ha pogut crear la carpeta" + } + }, + "setDefaultFolder": "Estableix com a carpeta per defecte", + "unsetDefaultFolder": "Desfés la carpeta per defecte", + "createRootFolder": "Carpeta nova a l'arrel", + "knowledgeStackForm": { + "addTitle": "Afegeix una @:knowledgeStack.title nova", + "deleteConfirmation": { + "header": "Suprimeix la @:knowledgeStack.title", + "message": "Segur que voleu suprimir aquesta pila de coneixement? Se n'eliminaran tots els elements que conté. Aquesta acció no es pot desfer." + } + }, + "deleteAllKnowledgeStack": { + "title": "Suprimeix totes les @:knowledgeStack.title", + "description": "Això esborrarà tota la @:knowledgeStack.title{'.'} No es poden recuperar després de suprimir-les.", + "successMessage": { + "detail": "S'han suprimit totes les @:knowledgeStack.title" + }, + "errorMessage": { + "detail": "No s'han pogut suprimir totes les @:knowledgeStack.title" + } + }, + "chunksConsole": { + "chunk": "Fragment | @:knowledgeStack.chunksConsole.chunks", + "chunks": "Fragments", + "title": "Consola de @:knowledgeStack.chunksConsole.chunks", + "description": "Feu servir aquesta consola per entendre com s'utilitza la vostra pila de coneixement, { title }, i quins fragments s'envien a un model quan xategeu. També podeu suprimir un fragment si penseu que no és rellevant o útil.", + "queryText": "Text de la consulta", + "similarityFilter": { + "title": "@:similarity", + "all": "Tot", + "highest": "Molt alta", + "high": "Alta", + "medium": "Mitjana", + "low": "Baixa" + }, + "matchCount": "Nre. de @:knowledgeStack.chunksConsole.chunks", + "sourceFile": "Fitxer d'origen", + "sourceNote": "Nota d'origen", + "sourceVideo": "Vídeo d'origen", + "source": "Origen", + "score": "Puntuació", + "searchResults": "Resultats de la cerca", + "noResultsFound": "No s'ha trobat cap resultat de cerca. Proveu d'ajustar la consulta o la configuració de cerca.", + "noResultsAfterFilter": "Cap resultat coincideix amb el filtre de similitud actual. Proveu d'ajustar el filtre per mostrar més resultats.", + "deleteChunk": { + "successMessage": { + "detail": "S'ha suprimit el @:knowledgeStack.chunksConsole.chunk" + } + }, + "searchType": { + "title": "Tipus de cerca", + "hybrid": "Cerca híbrida", + "semantic": "Cerca semàntica", + "keyword": "Cerca per paraules clau" + }, + "filterDisclaimer": "Aquest filtre només afecta quins resultats es mostren a sota. No canvia la consulta real.", + "tooltip": { + "scrubbed": "S'ha netejat el contingut per eliminar la PII", + "cached": "S'ha fet servir la versió netejada de la memòria cau", + "fresh": "Contingut netejat de nou" + }, + "runQuery": "Executa la consulta" + }, + "addon": { + "title": "@:knowledgeStack.title", + "selectedCount": "{count} seleccionats", + "selectedStacks": "Piles seleccionades", + "searchPlaceholder": "Cerca piles de coneixement...", + "recentlyUpdated": "Actualitzades recentment", + "searchResults": "Resultats de la cerca", + "noResults": "No s'ha trobat cap pila de coneixement", + "noStacks": "No hi ha cap pila de coneixement disponible", + "noDescription": "Sense descripció", + "numberOfChunks": "Nombre de @:knowledgeStack.chunksConsole.chunks", + "searchType": "Tipus de cerca", + "synthesizePrompt": "Sintetitza la consulta", + "enablePiiScrubbing": "Activa la neteja de PII", + "fullContentContextLimit": "Màxim de contextos de contingut complet", + "fullContentContextWarning": "Els contextos de contingut complet poden augmentar significativament l'ús de tokens i poden afectar el rendiment", + "manageStacks": "Gestiona les piles", + "onlyCompletedStacks": "Només es poden seleccionar les piles completades" + }, + "totalFiles": "Fitxers totals", + "vectorDimensions": "Dimensions del vector", + "wordCount": "Recompte de paraules", + "readingTime": "Temps de lectura", + "embeddingModel": { + "title": "Model d'embedding", + "noModel": "No s'ha configurat cap model d'embedding", + "modelMissing": "No s'ha trobat el model {modelId}", + "providerRemapped": "El proveïdor del model s'ha reassignat automàticament", + "changeModel": "Canvia el model d'embedding de la consulta", + "selectModel": "Selecciona el model d'embedding de la consulta", + "missingModelWarning": "El model d'embedding original d'aquesta pila de coneixement no està disponible. Seleccioneu un model nou.", + "providerRemappedInfo": "El proveïdor del model d'embedding s'ha reassignat automàticament a un proveïdor compatible.", + "currentModel": "Model actual", + "noModelConfigured": "No s'ha configurat cap model", + "selectNewModel": "Selecciona un model nou", + "defaultLocal": "Per defecte (local)" + }, + "buckets": { + "files": { + "title": "@:files", + "description": "Afegiu fitxers .pdf, .csv, .md, .json, .jsonl, .xlsx, .docx, .rtf, .txt, .pptx o qualsevol altre tipus de fitxer admès.", + "dropZoneText": "Arrossegueu i deixeu anar els fitxers aquí", + "browseFiles": "Explora els fitxers", + "dropHint": "Deixeu anar els fitxers aquí" + }, + "folders": { + "title": "@:folders i magatzems d'Obsidian", + "description": "Afegiu carpetes que continguin fitxers. També podeu deixar-hi anar magatzems d'Obsidian.", + "dropZoneText": "Arrossegueu i deixeu anar les carpetes aquí", + "browseFolders": "Explora les carpetes", + "liveMode": "Mode en directe", + "liveModeDescription": "Les carpetes se supervisen per detectar canvis i actualitzen automàticament la pila de coneixement", + "duplicateFolder": "Carpeta duplicada", + "alreadyAdded": "La carpeta ja s'ha afegit", + "folderAlreadyExists": "Aquesta carpeta ja s'ha afegit a la @:knowledgeStack.title", + "folderAlreadyAdded": "La carpeta «{path}» ja s'ha afegit", + "folderProcessed": "Carpeta processada", + "filesAdded": "S'han afegit {count} fitxers correctament", + "onlyFoldersAllowed": "Aquí només s'hi poden afegir carpetes. Seleccioneu una carpeta en comptes de fitxers individuals.", + "selectFolder": "Selecciona una carpeta", + "useDirectoryPicker": "Feu servir el botó Explora per seleccionar una carpeta en mode web", + "processed": "Processat", + "processingError": "Error en processar la carpeta", + "folderExplorer": "Explorador de carpetes", + "showIgnoredFiles": "Mostra els fitxers ignorats", + "noFolders": "Encara no s'ha afegit cap carpeta", + "refresh": "Actualitza", + "showInFileManager": "Mostra al gestor de fitxers", + "remove": "Elimina", + "loadError": "No s'ha pogut carregar la carpeta", + "removed": "Carpeta eliminada", + "folderRemoved": "S'ha eliminat «{name}» de la pila de coneixement", + "removeError": "No s'ha pogut eliminar la carpeta", + "ignored": "Ignorat", + "loading": "S'està carregant...", + "loadingContents": "S'està carregant el contingut de la carpeta...", + "confirmRemove": "Segur que voleu eliminar «{name}» d'aquesta pila de coneixement? La carpeta i els seus fitxers es mantindran al vostre sistema.", + "expandFolder": "Amplia la carpeta", + "collapseFolder": "Replega la carpeta", + "folderIgnored": "Aquesta carpeta s'ignora segons les regles de .mstyignore o .gitignore", + "fileIgnored": "Aquest fitxer s'ignora segons les regles de .mstyignore o .gitignore", + "actionMenu": "Menú d'accions", + "emptyFolder": "Carpeta buida", + "itemCount": "{count} element | {count} elements", + "hiddenItemCount": "{count} element amagat | {count} elements amagats" + }, + "obsidianVaults": { + "title": "Magatzems d'Obsidian", + "description": "Afegiu magatzems d'Obsidian a la vostra pila de coneixement. Msty indexarà totes les notes del magatzem.", + "dropZoneText": "Arrossegueu i deixeu anar els magatzems d'Obsidian aquí", + "browseVaults": "Explora els magatzems d'Obsidian" + }, + "notes": { + "title": "Notes", + "description": "Afegiu les vostres pròpies notes a la pila de coneixement. Aquestes notes es fragmentaran i s'incrustaran (embedding) per a la cerca semàntica.", + "addNote": "Afegeix una nota", + "titlePlaceholder": "Introduïu el títol de la nota...", + "contentPlaceholder": "Introduïu el contingut de la nota...", + "empty": "Encara no s'ha afegit cap nota. Feu clic a «Afegeix una nota» per començar.", + "unsaved": "Encara no s'ha desat" + }, + "youTubeLinks": { + "title": "Enllaços de YouTube", + "description": "Afegiu enllaços de vídeos de YouTube per indexar-ne les transcripcions. Msty obtindrà les transcripcions i les farà cercables.", + "dropZoneText": "Arrossegueu i deixeu anar els enllaços de YouTube aquí o enganxeu-los a sota", + "inputPlaceholder": "Enganxeu els URL de YouTube aquí (separats per espais o comes)...", + "inputPlaceholderWithDetected": "Enganxeu els URL de YouTube aquí ({count} detectat) | Enganxeu els URL de YouTube aquí ({count} detectats)", + "autoDetection": "Obtén automàticament els URL detectats", + "detectedCount": "{count} URL detectat | {count} URL detectats", + "detectedUnpulledUrls": "{count} URL de YouTube detectat però encara no obtingut | {count} URL de YouTube detectats però encara no obtinguts" + } + }, + "itemActions": { + "markForReprocessing": "Marca per tornar a processar", + "lockTemporary": "Bloqueja temporalment", + "lockPermanent": "Bloqueja permanentment", + "unlock": "Desbloqueja", + "ignoreRetrieval": "Ignora per a la recuperació", + "unignoreRetrieval": "Inclou a la recuperació", + "moreActions": "Més accions" + }, + "loadMode": { + "title": "Mode de càrrega", + "dialogTitle": "Selecciona el mode de càrrega", + "distribution": "Distribució", + "dialogDescription": "Trieu com s'ha de carregar aquest fitxer durant la composició de la pila de coneixement.", + "staticFiles": "Fitxers estàtics", + "dynamicFiles": "Fitxers dinàmics", + "syncFiles": "Fitxers de sincronització", + "totalFiles": "Fitxers totals", + "specialModes": "Modes especials", + "specialModesRatio": "Proporció de modes especials", + "static": { + "label": "Mode estàtic", + "description": "Fa servir la versió de la memòria cau de quan es va afegir el fitxer. És ràpid i predictible, però no reflecteix els canvis recents.", + "shortDescription": "Contingut de la memòria cau carregat des de la indexació inicial", + "badge": "Per defecte" + }, + "dynamic": { + "label": "Mode dinàmic", + "description": "Carrega el contingut més recent del fitxer en cada composició. Una mica més lent però sempre actualitzat.", + "shortDescription": "Contingut nou carregat en cada composició", + "badge": "Recomanat" + }, + "sync": { + "label": "Mode de sincronització", + "description": "Vigila els canvis als fitxers i torna a compondre automàticament. Ideal per a fitxers petits que s'actualitzen sovint.", + "shortDescription": "Torna a compondre automàticament quan els fitxers canvien", + "badge": "Costós" + } + }, + "syncMode": { + "start": "Inicia el mode de sincronització", + "pause": "Posa en pausa el mode de sincronització", + "pauseAll": "Posa-ho tot en pausa", + "started": "S'ha iniciat el mode de sincronització", + "startedDetail": "Ara es vigilen els canvis dels fitxers de {name}", + "stopped": "S'ha posat en pausa el mode de sincronització", + "stoppedDetail": "S'ha posat en pausa la vigilància de fitxers", + "startFailed": "No s'ha pogut iniciar el mode de sincronització", + "startFailedDetail": "Assegureu-vos que la pila de coneixement té fitxers marcats per al mode de sincronització", + "allPaused": "S'han posat en pausa tots els modes de sincronització", + "allPausedDetail": "S'ha aturat la vigilància de fitxers de totes les piles de coneixement", + "active": "{count} actiu | {count} actius", + "activeTitle": "Modes de sincronització actius", + "filesWatching": "{count} fitxer | {count} fitxers", + "filesCount": "{count} fitxer | {count} fitxers", + "startedTime": "Iniciat {time}", + "totalStats": "{stacks} pila, {files} fitxers | {stacks} piles, {files} fitxers", + "hoursAgo": "fa {hours} h", + "daysAgo": "fa {days} d" + }, + "analytics": { + "title": "Analítiques i observacions", + "lastComposed": "Darrera composició", + "sections": "Seccions d'analítiques", + "performanceTimings": "Temps de rendiment", + "summaryStatistics": "Estadístiques resum", + "contentBreakdown": "Desglossament del contingut", + "querySettings": "Configuració de la consulta", + "readingStatistics": "Estadístiques de lectura", + "noAnalyticsAvailable": "No hi ha analítiques disponibles", + "noAnalyticsDescription": "Les analítiques estaran disponibles després de compondre aquesta pila de coneixement.", + "noSectionsSelected": "Cap secció d'analítiques seleccionada", + "noSectionsSelectedDescription": "Seleccioneu una o més seccions d'analítiques de dalt per veure observacions sobre la vostra pila de coneixement.", + "selectAllSections": "Selecciona totes les seccions", + "timings": { + "loadingItems": "S'estan carregant els elements", + "splittingChunks": "S'estan dividint els @:knowledgeStack.chunksConsole.chunks", + "embeddingChunks": "S'estan incrustant els @:knowledgeStack.chunksConsole.chunks", + "composingStack": "S'està component la pila", + "totalTime": "Temps total", + "parallelNote": "Algunes operacions poden executar-se en paral·lel, de manera que els temps individuals poden no sumar el temps total", + "fileReading": "Lectura de fitxers", + "databaseWrite": "Escriptura a la base de dades" + }, + "stats": { + "numberOfItems": "Nre. d'elements", + "totalChunks": "Total de @:knowledgeStack.chunksConsole.chunks", + "availableChunks": "@:knowledgeStack.chunksConsole.chunks disponibles", + "skippedChunks": "@:knowledgeStack.chunksConsole.chunks omesos", + "wordCount": "Recompte de paraules", + "characterCount": "Recompte de caràcters", + "readingTime": "Temps de lectura" + }, + "ignoredItems": "Elements ignorats", + "ignoredForRetrieval": "Ignorat per a la recuperació", + "ignoredItemsDescription": "Aquests elements s'exclouen de les operacions de cerca i recuperació", + "ignoredPercentage": "Percentatge d'elements ignorats", + "ofTotal": "de {total}", + "files": "Fitxers", + "notes": "Notes", + "youTubeLinks": "Vídeos de YouTube", + "noIgnoredItems": "Cap element ignorat", + "allItemsIncluded": "Tots els elements d'aquesta pila de coneixement s'inclouen a la cerca i la recuperació", + "recommendation": "Recomanació", + "contentTypes": { + "files": "FITXERS", + "obsidianVaults": "MAGATZEMS D'OBSIDIAN", + "folders": "CARPETES", + "notes": "NOTES", + "youTubeLinks": "ENLLAÇOS DE YOUTUBE" + }, + "piiScrubbing": { + "title": "Neteja de PII", + "totalChunks": "Total de @:knowledgeStack.chunksConsole.chunks", + "scrubbedChunks": "@:knowledgeStack.chunksConsole.chunks netejats", + "cachedChunks": "@:knowledgeStack.chunksConsole.chunks a la memòria cau", + "coverage": "Cobertura", + "progress": "Progrés de la neteja", + "loadAnalytics": "Carrega les analítiques", + "failedToLoadAnalytics": "No s'han pogut carregar les dades d'analítiques de PII", + "analyticsNotLoaded": "Analítiques de PII no carregades", + "clickToViewAnalytics": "Feu clic a «Carrega les analítiques» per veure les estadístiques de neteja de PII", + "scoreTooltip": "Aquesta puntuació reflecteix com d'exhaustivament s'aplica la neteja de PII a la vostra pila de coneixement. Una puntuació més alta significa que s'han processat més fragments per eliminar-ne la PII.", + "optionalDescription": "La neteja de PII és opcional. Activeu-la a la configuració de la consulta només si el vostre contingut conté informació personal sensible.", + "protectionDescription": "Mesura com de ben protegida està la informació sensible a la vostra pila de coneixement", + "status": { + "notEnabled": "No activat", + "wellProtected": "Ben protegit", + "partiallyProtected": "Parcialment protegit", + "limitedProtection": "Protecció limitada", + "minimalProtection": "Protecció mínima" + }, + "insights": { + "excellentPrivacy": "Protecció de la privadesa excel·lent: gairebé tot el contingut està assegurat", + "goodPrivacy": "Bona protecció de la privadesa: la major part del contingut està assegurat", + "partialPrivacy": "Protecció parcial de la privadesa: plantegeu-vos revisar la configuració", + "limitedPrivacy": "Protecció limitada de la privadesa: reviseu el contingut sensible", + "notEnabled": "La neteja de PII no està activada. Això està perfectament bé si el vostre contingut no conté informació personal sensible.", + "whenToEnable": "Plantegeu-vos activar la neteja de PII només si la vostra pila de coneixement conté noms, adreces, números de telèfon, adreces electròniques o altres dades personals.", + "significantReduction": "Reducció significativa del contingut ({percentage}%): s'ha trobat molta PII", + "moderateReduction": "Reducció moderada del contingut ({percentage}%): s'ha eliminat una mica de PII", + "minimalReduction": "Reducció mínima del contingut ({percentage}%): s'ha detectat poca PII", + "noContentChange": "Sense canvi en la mida del contingut: no s'ha detectat ni eliminat cap PII", + "allChunksProcessed": "S'han processat tots els fragments correctament", + "nearlyAllProcessed": "S'han processat gairebé tots els fragments correctament", + "mostProcessed": "S'han processat la majoria de fragments: alguns poden necessitar atenció", + "incompleteProcessing": "Processament incomplet: comproveu la configuració de la neteja de PII", + "largeKnowledgeBase": "Base de coneixement gran: plantegeu-vos augmentar la cobertura de detecció de PII", + "manyUnprocessed": "Molts fragments sense processar: reviseu la configuració de la neteja de PII", + "optionalFeature": "La neteja de PII és opcional. Activeu-la a la configuració de la consulta si el vostre contingut conté informació sensible com ara noms, adreces electròniques o números de telèfon.", + "privacyOption": "La neteja de PII ajuda a protegir la informació sensible. És opcional i es pot activar a la configuració de la consulta si cal." + }, + "labels": { + "securityStatus": "Estat de seguretat", + "privacyStatus": "Estat de privadesa", + "whenToEnable": "Quan activar-la", + "contentImpact": "Impacte en el contingut", + "processingEfficiency": "Eficiència del processament", + "scaleRecommendation": "Recomanació d'escala", + "coverageRecommendation": "Recomanació de cobertura", + "optionalFeature": "Funció opcional", + "privacyOption": "Opció de privadesa" + } + }, + "querySettingsDetails": { + "searchType": "Tipus de cerca", + "numberOfChunks": "Nombre de @:knowledgeStack.chunksConsole.chunks", + "promptPrefix": "Prefix de la indicació" + }, + "privacyOptimizationScore": "Puntuació d'optimització de la privadesa", + "piiProtectionLevel": "Nivell de protecció de PII", + "piiScrubbingStatus": "Estat de la neteja de PII", + "unscrubbedChunks": "@:knowledgeStack.chunksConsole.chunks sense netejar", + "originalSize": "Mida original", + "processedSize": "Mida processada", + "sizeReduction": "Reducció de mida", + "privacyInsights": "Privadesa", + "dataModified": "Les dades s'han modificat", + "showOutdatedData": "Mostra les dades obsoletes igualment", + "contentDistribution": "Distribució del contingut", + "contentContribution": "{label} aporten el {percentage}% de tots els fragments", + "processingIssue": "Problema de processament", + "lowEfficiency": "{label} tenen una eficiència baixa ({efficiency}%)", + "dataQualityIssue": "Problema de qualitat de les dades", + "highSkipRates": "{count} tipus de contingut tenen taxes d'omissió altes", + "contentDiversity": "Diversitat del contingut", + "singleContentType": "Un sol tipus de contingut: plantegeu-vos diversificar les fonts", + "excellentDiversity": "Excel·lent diversitat de contingut entre múltiples tipus de font", + "optimizationTip": "Consell d'optimització", + "reduceChunkSize": "Reduïu la mida dels fragments a 800-1200 caràcters per a una millor granularitat del contingut", + "increaseChunkSize": "Augmenteu la mida dels fragments a 1500-2000 caràcters per a una millor eficiència", + "embeddingThroughput": "Rendiment de l'embedding", + "chunksPerSecond": "{rate} fragments/s ({time} ms cadascun)", + "searchStrategy": "Estratègia de cerca", + "balancedSearch": "Enfocament equilibrat que combina cerca per paraules clau + semàntica", + "semanticSearch": "Cerca semàntica amb IA: ideal per a consultes conceptuals", + "keywordSearch": "Cerca tradicional per paraules clau: ideal per a termes exactes", + "retrievalVolume": "Volum de recuperació", + "lowChunkCount": "Un recompte de fragments molt baix pot ometre informació rellevant", + "highChunkCount": "Un recompte de fragments alt pot incloure soroll i alentir les respostes", + "optimalChunkCount": "Recompte de fragments òptim per a una recuperació equilibrada", + "contentFiltering": "Filtratge del contingut", + "relaxedFiltering": "Filtratge relaxat: pot incloure contingut poc relacionat", + "strictFiltering": "Filtratge estricte: resultats molt focalitzats", + "moderateFiltering": "Filtratge equilibrat per a contingut rellevant", + "guidedContext": "Context guiat", + "customPromptPrefix": "El prefix de la indicació personalitzat guiarà la interpretació de la consulta", + "lockIndicator": "Indicador de bloqueig", + "allItemsCanBeReprocessed": "Tots els elements es poden tornar a processar", + "itemsPartiallyLocked": "El {percentage}% dels elements estan bloquejats", + "mostItemsLocked": "La majoria d'elements estan bloquejats: capacitat de reprocessament limitada", + "privacySecurity": "Privadesa i seguretat", + "privacyProtectionEnabled": "Protecció de la privadesa activada per a dades sensibles", + "noPiiScrubbing": "Sense neteja de PII: assegureu-vos que el contingut no sigui sensible", + "scaleOptimization": "Optimització d'escala", + "largeKnowledgeBase": "Base de coneixement gran: augmenteu el recompte de fragments per a una millor cobertura", + "smallKnowledgeBase": "Base de coneixement petita: plantegeu-vos reduir el recompte de fragments", + "performanceProfile": "Perfil de rendiment", + "optimizedForSpeed": "Configuració optimitzada per a respostes ràpides", + "optimizedForQuality": "Configuració optimitzada per a resultats d'alta qualitat", + "highLockRate": "Taxa de bloqueig alta", + "lockedItemsPercentage": "El {percentage}% dels elements estan bloquejats i no es tornaran a processar", + "unlockRecommendation": "Plantegeu-vos desbloquejar els elements bloquejats temporalment si necessiten actualitzacions", + "overHalfLocked": "Més del 50% dels elements estan bloquejats. Això pot reduir significativament la capacitat de la base de coneixement de mantenir-se actualitzada.", + "lockStatus": "Estat del bloqueig", + "totalItems": "Elements totals", + "unlocked": "Desbloquejat", + "temporarilyLocked": "Bloquejat temporalment", + "permanentlyLocked": "Bloquejat permanentment", + "lockStatusByContentType": "Estat del bloqueig per tipus de contingut", + "tempLocked": "Bloq. temp.", + "permLocked": "Bloq. perm.", + "lockStatusInsights": "@:insights de l'estat del bloqueig", + "processingEfficiency": "Eficiència del processament", + "contentInsights": "@:insights del contingut", + "compositionOptimizationScore": "Puntuació d'optimització de la composició", + "compositionInsights": "@:insights de la composició", + "performanceInsights": "@:insights de rendiment", + "processingPhaseDetails": "Detalls de la fase de processament", + "loadingItems": "S'estan carregant els elements", + "splittingChunks": "S'estan dividint els @:knowledgeStack.chunksConsole.chunks", + "embeddingChunks": "S'estan incrustant els @:knowledgeStack.chunksConsole.chunks", + "fileReading": "Lectura de fitxers", + "databaseWrite": "Escriptura a la base de dades", + "composingStack": "S'està component la pila", + "totalProcessingTime": "Temps total de processament", + "totalLockedItems": "Elements bloquejats totals", + "efficiency": "Eficiència", + "loadMode": { + "title": "Analítiques del mode de càrrega", + "description": "Comportament de càrrega de fitxers a la vostra pila de coneixement", + "distribution": "Distribució del mode de càrrega", + "totalFiles": "Fitxers totals", + "staticFiles": "Mode estàtic", + "dynamicFiles": "Mode dinàmic", + "syncFiles": "Mode de sincronització", + "specialModes": "Modes especials", + "specialModesRatio": "% de modes especials", + "status": "Estat", + "active": "Actiu", + "inactive": "Inactiu", + "breakdown": "Desglossament visual", + "noFiles": "No hi ha fitxers en aquesta pila de coneixement", + "desktopOnly": "Les opcions del mode de càrrega només estan disponibles a l'aplicació d'escriptori", + "notAvailable": "Les opcions del mode de càrrega només estan disponibles a l'aplicació d'escriptori", + "noSpecialModes": "Tots els fitxers fan servir el mode estàtic. Activeu el mode dinàmic o de sincronització perquè els fitxers utilitzin el contingut més recent.", + "syncActive": "Mode de sincronització actiu", + "syncActiveDetails": "Es vigilen {files} • Iniciat {time}", + "staticDescription": "Contingut de la memòria cau carregat des de la indexació inicial", + "dynamicDescription": "Contingut nou carregat en cada composició", + "syncDescription": "Torna a compondre automàticament quan els fitxers canvien", + "staticBadge": "Per defecte", + "dynamicBadge": "Nou", + "syncBadge": "En directe", + "insights": { + "highSyncCount": { + "title": "Recompte alt de fitxers en sincronització", + "description": "{count} fitxers estan en mode de sincronització", + "recommendation": "Plantegeu-vos fer servir el mode dinàmic per als fitxers que s'actualitzen menys sovint per reduir l'ús de recursos" + }, + "syncEnabled": { + "title": "Mode de sincronització activat", + "description": "{count} fitxers s'actualitzen automàticament quan canvien" + }, + "highDynamicUsage": { + "title": "Ús alt del mode dinàmic", + "description": "El {percentage}% dels fitxers fan servir el mode dinàmic", + "recommendation": "El mode estàtic pot ser suficient per a fitxers que rarament canvien" + }, + "dynamicEnabled": { + "title": "Mode dinàmic actiu", + "description": "{count} fitxers carreguen contingut nou en cada composició" + }, + "staticOnly": { + "title": "Només mode estàtic", + "description": "Tots els fitxers fan servir contingut de la memòria cau de la indexació inicial", + "recommendation": "Activeu el mode dinàmic o de sincronització per als fitxers que s'actualitzen sovint per garantir contingut nou" + }, + "mixedModes": { + "title": "Modes de càrrega mixtos", + "description": "El {percentage}% dels fitxers fan servir modes de càrrega especials" + } + } + } + }, + "composeSettings": { + "title": "Configuració de la composició", + "chunkOverlapping": "Solapament de @:knowledgeStack.chunksConsole.chunk", + "embeddingModel": { + "title": "Model d'embedding", + "warning": "Canviar el model d'embedding requerirà tornar a compondre tota la pila de coneixement i, fins i tot llavors, hi ha la possibilitat que la recomposició falli.", + "learnMore": "Més informació sobre la compatibilitat del model d'embedding", + "defaultPlaceholder": "Per defecte (local)" + }, + "placeholders": { + "selectEmbeddingModel": "Seleccioneu un model d'embedding", + "selectChunkOverlapping": "Seleccioneu el solapament dels fragments", + "selectChunkSize": "Seleccioneu la mida dels fragments" + }, + "chunkingMethod": { + "title": "Mètode de fragmentació", + "recursiveCharacter": "Caràcter recursiu", + "sentence": "Frase", + "description": "Trieu com s'han de fragmentar els documents en trossos més petits per a una millor cerca i recuperació." + }, + "overlapping": { + "title": "Solapament", + "description": "Trieu quant solapament hi ha d'haver entre els fragments. Un solapament més alt pot millorar el context però augmenta l'ús de tokens." + }, + "chunkSize": { + "title": "Mida de @:knowledgeStack.chunksConsole.chunk", + "description": "Definiu la mida màxima de cada fragment en caràcters. Els fragments més petits poden millorar la precisió de la cerca però augmenten l'ús de tokens." + }, + "chunkSizesToIgnore": { + "title": "Mides de @:knowledgeStack.chunksConsole.chunk a ignorar", + "description": "Especifiqueu les mides de fragments que s'han d'ignorar durant el processament. És útil per excloure fragments molt petits o molt grans." + } + }, + "querySettings": { + "title": "Configuració de la consulta", + "numberOfChunks": "Nombre de @:knowledgeStack.chunksConsole.chunks", + "promptPrefix": "Prefix de la indicació", + "similarityThreshold": { + "low": "Baixa", + "medium": "Mitjana", + "high": "Alta", + "highest": "Molt alta" + }, + "searchTypes": { + "semantic": "Cerca semàntica", + "keyword": "Cerca per paraules clau", + "hybrid": "Cerca híbrida" + }, + "modes": { + "push": "Mode d'emissió (push)", + "pull": "Mode de recepció (pull)" + }, + "chunks": { + "title": "Context de la pila de coneixement", + "loadError": "No s'han pogut carregar els fragments de la pila de coneixement. Torneu-ho a provar.", + "searchSettings": "Configuració de la cerca", + "searchType": "Tipus de cerca", + "searchQuery": "Consulta de cerca", + "source": "Origen", + "content": "Contingut", + "fullContent": "Contingut complet", + "chunkInfo": "Informació de @:knowledgeStack.chunksConsole.chunk", + "knowledgeStack": "Pila de coneixement", + "chunks": "fragments", + "maxChunks": "Màxim de @:knowledgeStack.chunksConsole.chunks" + }, + "retrievalMode": { + "title": "Mode de recuperació de @:knowledgeStack.chunksConsole.chunk", + "description": "Trieu entre el mode d'emissió (push), on els fragments s'obtenen prèviament, o el mode de recepció (pull), on el model pot consultar les piles de coneixement directament" + } + }, + "chunks": { + "coverage": "Cobertura", + "skippedChunks": "@:knowledgeStack.chunksConsole.chunks omesos", + "availableChunks": "@:knowledgeStack.chunksConsole.chunks disponibles", + "numberOfChunks": "Nombre de @:knowledgeStack.chunksConsole.chunks", + "promptPrefix": "Prefix de la indicació", + "chunkingMethod": "Mètode de fragmentació", + "chunkSize": "Mida de @:knowledgeStack.chunksConsole.chunk", + "chunkOverlap": "Solapament de @:knowledgeStack.chunksConsole.chunk", + "totalChunks": "Total de @:knowledgeStack.chunksConsole.chunks", + "cachedChunks": "@:knowledgeStack.chunksConsole.chunks a la memòria cau", + "scrubbedChunks": "@:knowledgeStack.chunksConsole.chunks netejats", + "loadError": "No s'han pogut carregar els fragments de la pila de coneixement. Torneu-ho a provar.", + "searchSettings": "Configuració de la cerca", + "searchType": "Tipus de cerca", + "maxChunks": "Màxim de @:knowledgeStack.chunksConsole.chunks", + "searchQuery": "Consulta de cerca", + "synthesizedQuery": "Consulta sintetitzada", + "chunks": "fragment | fragments", + "source": "Origen", + "content": "Contingut", + "viewFull": "Mostra el contingut complet", + "fullContent": "Contingut complet de @:knowledgeStack.chunksConsole.chunk", + "chunkInfo": "Informació de @:knowledgeStack.chunksConsole.chunk", + "knowledgeStack": "Pila de coneixement", + "scrubbed": "Netejat", + "original": "Original", + "chunkId": "ID de @:knowledgeStack.chunksConsole.chunk", + "piiStatus": "Estat de la PII", + "piiScrubbed": "PII netejada", + "piiUnscrubbed": "PII sense netejar", + "tooltip": { + "scrubbed": "S'ha netejat el contingut per eliminar la PII", + "cached": "S'ha fet servir la versió netejada de la memòria cau", + "fresh": "Contingut netejat de nou", + "original": "Contingut original sense @:pii.scrubbing.title" + }, + "queryAnalysis": "Anàlisi de la consulta", + "fullContentRetrieved": "Context de contingut complet actiu", + "documentsRetrieved": "Documents recuperats", + "contentContext": "Context del contingut", + "keywords": "Paraules clau", + "fullDoc": "Doc. complet", + "type": "Tipus", + "fullDocument": "Document complet" + }, + "chunksVisualizer": { + "title": "Visualitzador de @:knowledgeStack.chunksConsole.chunks", + "description": "Visualitzeu com es fragmenten els documents", + "openStitcher": "Obre el visualitzador", + "viewStitcher": "Mostra el visualitzador", + "stitchableFiles": "Fitxers disponibles", + "loading": "S'estan carregant els fitxers...", + "noFiles": "No s'ha trobat cap fitxer", + "selectFile": "Selecciona un fitxer", + "selectFileDescription": "Trieu un fitxer de l'esquerra per visualitzar-ne els fragments i el contingut", + "mimeType": "Tipus MIME", + "chunks": "@:knowledgeStack.chunksConsole.chunks", + "overlaps": "Solapaments", + "stitchedSize": "Mida cosida", + "showOverlaps": "Mostra els solapaments", + "hideOverlaps": "Amaga els solapaments", + "showChunks": "Mostra els @:knowledgeStack.chunksConsole.chunks", + "showStitched": "Mostra el text cosit", + "copyContent": "Copia el contingut", + "stitchedContent": "Contingut cosit", + "scrubbedChunks": "@:knowledgeStack.chunksConsole.chunks netejats", + "unScrubbedChunks": "@:knowledgeStack.chunksConsole.chunks sense netejar", + "overlapRemoved": "S'han eliminat els solapaments per a una reconstrucció neta del text", + "chunkNumber": "@:knowledgeStack.chunksConsole.chunk {number}", + "overlapPrevious": "Solapament anterior", + "overlapNext": "Solapament següent", + "overlapWithPrevious": "Aquest text se solapa amb el fragment anterior", + "overlapWithNext": "Aquest text se solapa amb el fragment següent", + "chunkIndices": "Posicions dels caràcters al fitxer", + "coreIndices": "Contingut principal sense solapaments", + "chunkCount": "{count} fragments", + "showOriginal": "Mostra l'original", + "showScrubbed": "Mostra el netejat", + "showScrubbedOnly": "Mostra només el netejat", + "showAllChunks": "Mostra tots els @:knowledgeStack.chunksConsole.chunks", + "tooltip": { + "scrubbed": "S'ha netejat el contingut per eliminar la PII", + "cached": "S'ha fet servir la versió netejada de la memòria cau", + "fresh": "Contingut netejat de nou" + }, + "itemsPerPage": "Per pàgina", + "showingChunks": "{start}-{end} de {total} fragments", + "loadingChunks": "S'estan carregant els fragments...", + "noItems": "No s'ha trobat cap element", + "selectItem": "Selecciona un element", + "selectItemDescription": "Trieu un fitxer o una nota de l'esquerra per visualitzar-ne els fragments i el contingut", + "openConsole": "Obre la consola", + "selectedChunks": "{count} @:knowledgeStack.chunksConsole.chunk seleccionats", + "deleteSelected": "Suprimeix els seleccionats", + "clearSelection": "Esborra la selecció", + "confirmDelete": "Confirma la supressió", + "confirmDeleteMessage": "Segur que voleu suprimir {count} fragments seleccionats? Aquesta acció no es pot desfer.", + "deleteSuccess": "@:knowledgeStack.chunksConsole.chunks suprimits", + "deleteSuccessDetail": "S'han suprimit {count} fragments correctament", + "deletedChunksCount": "S'ha suprimit {count} @:knowledgeStack.chunksConsole.chunk correctament", + "deleteError": "La supressió ha fallat" + }, + "export": { + "forceCompose": "Força la composició", + "overallProgress": "Progrés general", + "itemsExported": "S'han exportat {count} elements", + "items": "Elements", + "skip": "Omet", + "exportCompleted": "L'exportació s'ha completat correctament!", + "savedTo": "Desat a: {path}", + "cancelAll": "Cancel·la-ho tot", + "done": "Fet", + "export": "Exporta", + "exporting": "S'està exportant", + "knowledgeStack": "Pila de coneixement", + "folder": "Carpeta", + "exportFailed": "L'exportació ha fallat", + "importFailed": "La importació ha fallat" + }, + "messages": { + "editsSaved": "S'han desat els vostres canvis a la pila de coneixement. Caldrà que la torneu a compondre per aplicar els canvis.", + "savedAndProcessing": "S'ha desat la pila de coneixement i ha començat el processament", + "cannotForceCompose": "No es pot forçar la composició: primer cal desar la pila de coneixement", + "failedToForceCompose": "No s'ha pogut forçar la composició de la pila de coneixement", + "forceComposeStarted": "S'ha iniciat la composició forçada: es tornaran a processar tots els elements", + "failedToUpdateQuerySettings": "No s'ha pogut actualitzar la configuració de la consulta", + "querySettingsUpdated": "S'ha actualitzat la configuració de la consulta", + "justNow": "ara mateix", + "minutesAgo": "fa {minutes} min", + "searchPlaceholder": "Cerca...", + "failedToSelectItem": "No s'ha pogut seleccionar l'element", + "failedToSelectFolder": "No s'ha pogut seleccionar la carpeta", + "processingCompleted": "El processament de la pila de coneixement {title} s'ha completat", + "processingFailed": "El processament de la pila de coneixement {title} ha fallat", + "nothingToCompose": "No hi ha res a compondre per a la pila de coneixement {title}", + "composeError": "Error en compondre la pila de coneixement {title}", + "downloadImportNotAvailableInWeb": "La importació des d'un URL només està disponible a l'aplicació d'escriptori", + "deleteSuccess": "S'han suprimit {count} @:knowledgeStack.title!", + "createError": "No s'ha pogut crear la @:knowledgeStack.title", + "saveEditsError": "No s'han pogut desar les edicions a la @:knowledgeStack.title", + "folderAdded": "S'ha afegit la carpeta «{name}» a la pila de coneixement" + }, + "folderLockedTemporary": "S'ha bloquejat la carpeta «{name}» temporalment", + "folderLockedPermanent": "S'ha bloquejat la carpeta «{name}» permanentment", + "lockFailed": "No s'ha pogut bloquejar la carpeta", + "folderUnlocked": "Folder '{name}' unlocked", + "unlockFailed": "Failed to unlock the folder", + "unlock": "Desbloqueja", + "status": { + "misc": "Divers", + "path": "Path: {path}", + "name": "Name: {name}", + "unknown": "Unknown", + "original": "Original", + "loadingPiiAnalytics": "Loading PII analytics...", + "allItemsUnlocked": "All items are unlocked and can be reprocessed when needed." + }, + "abortProcessing": "Abort Processing", + "errors": { + "processingFailed": "Processing Failed", + "errorMessage": "Error Message", + "occurredAt": "Occurred at", + "failedFile": "Failed File", + "errorSummary": "Error Summary", + "technicalDetails": "Technical Details", + "stackTrace": "Stack Trace", + "copyDetails": "Copy Details", + "detailsCopied": "Error details copied to clipboard", + "clickToSeeDetails": "Click to see error details", + "fileIsNull": "File is null", + "checkingPathError": "Error checking if path is directory", + "processingFolderError": "Error processing folder", + "lockFolderTemporaryFailed": "Failed to lock folder temporarily", + "lockFolderPermanentFailed": "Failed to lock folder permanently", + "unlockFolderFailed": "Failed to unlock folder", + "status": { + "completed": "Status: Completed", + "processing": "Status: Processing", + "pending": "Status: Pending", + "draft": "Status: Draft", + "needsReprocessing": "Status: Needs Reprocessing", + "error": "Status: Error", + "lockedTemporary": "Status: Temporarily Locked", + "lockedPermanent": "Status: Permanently Locked", + "aborted": "Status: Aborted", + "unknown": "Status: Unknown" + } + } + }, + "features": { + "showcase": { + "title": "Unlock Aurum Features", + "subtitle": "Upgrade to Aurum license for the most powerful AI features and advanced capabilities", + "eyebrow": "Everything you need", + "viewPricing": "View Pricing", + "featureMatrix": "Feature Matrix", + "activateLicense": "Activate License", + "licenses": { + "aurum": "Aurum" + } + } + }, + "images": { + "upload": "Upload image…", + "onlySupported": "Only image files are supported.", + "maxSize": "Image must be 1MB or smaller." + }, + "userAvatar": { + "updated": "Profile image updated.", + "updateFailed": "Failed to update image. Please try again.", + "changeHint": "Click to change profile image" + }, + "setting": { + "lostAndFound": { + "title": "Lost & Found", + "description": "Find and recover lost workspaces from your computer. Only workspace databases are scanned and discovered, not attachments.", + "experimentalInfo": "Lost & Found is experimental. Always keep backups of your workspace data before attempting recovery.", + "scanForLostWorkspaces": "Scan for Lost Workspaces", + "scanAppData": "Scan App Data", + "scanFolder": "Scan Folder…", + "workspace": "Workspace", + "file": "Fitxer", + "status": "Estat", + "lastModifiedColumn": "Last Modified", + "actions": "Actions", + "statusCurrent": "Actual", + "statusLinked": "Linked", + "statusFound": "Found", + "restoreCurrentWorkspace": "Restore current workspace", + "importAsNewWorkspace": "Import As New Workspace", + "restoreConfirmHeader": "Restore current workspace?", + "restoreConfirmMessage": "This will replace the data of the currently active workspace with the data from the selected recovered file. This cannot be undone.", + "restore": "Restaura", + "failedToImportWorkspace": "Failed to import workspace", + "workspaceImported": "Workspace imported", + "workspaceImportedDetail": "Recovered workspace has been imported. Switch to it from the workspace tray if needed.", + "failedToRestoreWorkspace": "Failed to restore workspace", + "workspaceRestored": "Workspace restored", + "workspaceRestoredDetail": "Current workspace has been restored from the recovered file.", + "showInFileExplorer": "Mostra a l'Explorador de fitxers", + "lastModified": "Darrera modificació", + "failedToImportRecoveredWorkspace": "Failed to import recovered workspace", + "failedToImportRecoveredWorkspaceUnexpected": "Failed to import recovered workspace (unexpected)", + "failedToRestoreFromRecoveredFile": "Failed to restore workspace from recovered file", + "failedToRestoreFromRecoveredFileUnexpected": "Failed to restore workspace from recovered file (unexpected)" + } + }, + "quickFilter": "Quick filter...", + "toggleFilter": "Toggle filter", + "toggleSidebar": "Toggle sidebar", + "adjust": "Adjust", + "experimentalInfo": "{item} is experimental and under active development. Please report any issues to the team.", + "attachmentsManager": { + "columnHeaders": { + "name": "Nom", + "fileType": "File Type", + "attachmentType": "Attachment Type", + "size": "Mida", + "actions": "Actions" + }, + "actions": { + "browseExisting": "Browse Existing Attachments", + "viewAssociations": "View Associations", + "attach": "Adjunta", + "delete": { + "title": "Delete Attachment | Delete Attachments", + "confirmationMessage": "Are you sure you want to delete the attachment? All the associations to the attachment will also be removed. This action cannot be undone. | Are you sure you want to delete the attachments? All the associations to the attachments will also be removed. This action cannot be undone.", + "successMessage": "Successfully deleted the attachment | Successfully deleted the attachments", + "errorMessage": "Failed to delete the attachment | Failed to delete the attachments" + } + }, + "search": "Search by Name", + "filter": "Filter by Attachment Type", + "title": "Attachments Manager", + "emptyState": { + "title": "No Attachments Found", + "description": "You have no attachments available." + }, + "associations": { + "title": "Associations for {attachmentName}", + "search": "Search by Association Name", + "filter": "Filter by Associated Entity", + "emptyState": { + "title": "No Associations Found", + "description": "You have not used this attachment anywhere yet." + }, + "columnHeaders": { + "associationName": "Association Name", + "associatedEntity": "Associated Entity", + "actions": "Actions" + }, + "actions": { + "jumpTo": "Jump to {entity}", + "detach": { + "action": "Desadjunta", + "title": "Detach Association", + "confirmationMessage": "Are you sure you want to detach the association from the {associationEntity}? This action cannot be undone.", + "successMessage": "Successfully detached the association", + "errorMessage": "Failed to detach the association" + } + } + } + }, + "iconSelector": { + "searchMode": "Cerca", + "aiMode": "AI Prompt", + "aiPlaceholder": "Describe what the icon represents...", + "findIcon": "Find Icon", + "finding": "Finding..." + } +}