This commit is contained in:
2025-12-01 17:21:38 +08:00
parent 32fee2b8ab
commit fab8c13cb3
7511 changed files with 996300 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'Anotaciones',
name: 'Respuesta de Anotación',
editBy: 'Respuesta editada por {{author}}',
noData: {
title: 'Sin anotaciones',
description: 'Puedes editar anotaciones durante la depuración de la aplicación o importar anotaciones en masa aquí para obtener una respuesta de alta calidad.',
},
table: {
header: {
question: 'pregunta',
answer: 'respuesta',
createdAt: 'creado el',
hits: 'aciertos',
actions: 'acciones',
addAnnotation: 'Agregar Anotación',
bulkImport: 'Importar en Masa',
bulkExport: 'Exportar en Masa',
clearAll: 'Borrar Todas las Anotaciones',
clearAllConfirm: '¿Eliminar todas las anotaciones?',
},
},
editModal: {
title: 'Editar Respuesta de Anotación',
queryName: 'Consulta del Usuario',
answerName: 'Bot Narrador',
yourAnswer: 'Tu Respuesta',
answerPlaceholder: 'Escribe tu respuesta aquí',
yourQuery: 'Tu Consulta',
queryPlaceholder: 'Escribe tu consulta aquí',
removeThisCache: 'Eliminar esta Anotación',
createdAt: 'Creado el',
},
addModal: {
title: 'Agregar Respuesta de Anotación',
queryName: 'Pregunta',
answerName: 'Respuesta',
answerPlaceholder: 'Escribe la respuesta aquí',
queryPlaceholder: 'Escribe la pregunta aquí',
createNext: 'Agregar otra respuesta anotada',
},
batchModal: {
title: 'Importación en Masa',
csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ',
browse: 'navega',
tip: 'El archivo CSV debe cumplir con la siguiente estructura:',
question: 'pregunta',
answer: 'respuesta',
contentTitle: 'contenido del fragmento',
content: 'contenido',
template: 'Descarga la plantilla aquí',
cancel: 'Cancelar',
run: 'Ejecutar Lote',
runError: 'Error al ejecutar el lote',
processing: 'En proceso de lote',
completed: 'Importación completada',
error: 'Error de importación',
ok: 'OK',
},
errorMessage: {
answerRequired: 'Se requiere una respuesta',
queryRequired: 'Se requiere una pregunta',
},
viewModal: {
annotatedResponse: 'Respuesta de Anotación',
hitHistory: 'Historial de Aciertos',
hit: 'Acierto',
hits: 'Aciertos',
noHitHistory: 'Sin historial de aciertos',
},
hitHistoryTable: {
query: 'Consulta',
match: 'Coincidencia',
response: 'Respuesta',
source: 'Fuente',
score: 'Puntuación',
time: 'Tiempo',
},
initSetup: {
title: 'Configuración Inicial de Respuesta de Anotación',
configTitle: 'Configuración de Respuesta de Anotación',
confirmBtn: 'Guardar y Habilitar',
configConfirmBtn: 'Guardar',
},
embeddingModelSwitchTip: 'Modelo de vectorización de texto de anotación, cambiar de modelo volverá a incrustar, lo que resultará en costos adicionales.',
list: {
delete: {
title: '¿Estás seguro de que deseas eliminar?',
},
},
batchAction: {
delete: 'Eliminar',
selected: 'Seleccionado',
cancel: 'Cancelar',
},
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'Servidor de API',
apiKey: 'Clave de API',
status: 'Estado',
disabled: 'Desactivado',
ok: 'En servicio',
copy: 'Copiar',
copied: 'Copiado',
play: 'Reproducir',
pause: 'Pausa',
playing: 'Reproduciendo',
loading: 'Cargando',
merMaid: {
rerender: 'Rehacer Rerender',
},
never: 'Nunca',
apiKeyModal: {
apiSecretKey: 'Clave secreta de API',
apiSecretKeyTips: 'Para evitar el abuso de la API, protege tu clave de API. Evita usarla como texto plano en el código del frontend. :)',
createNewSecretKey: 'Crear nueva clave secreta',
secretKey: 'Clave secreta',
created: 'CREADA',
lastUsed: 'ÚLTIMO USO',
generateTips: 'Guarda esta clave en un lugar seguro y accesible.',
},
actionMsg: {
deleteConfirmTitle: '¿Eliminar esta clave secreta?',
deleteConfirmTips: 'Esta acción no se puede deshacer.',
ok: 'OK',
},
completionMode: {
title: 'Completar App API',
info: 'Para generar texto de alta calidad, como artículos, resúmenes y traducciones, utiliza la API de mensajes de completado con la entrada del usuario. La generación de texto depende de los parámetros del modelo y las plantillas de inicio establecidas en Dify Prompt Engineering.',
createCompletionApi: 'Crear mensaje de completado',
createCompletionApiTip: 'Crea un mensaje de completado para admitir el modo de pregunta y respuesta.',
inputsTips: '(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.',
queryTips: 'Contenido de texto de entrada del usuario.',
blocking: 'Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)',
streaming: 'devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).',
messageFeedbackApi: 'Comentarios de mensajes (me gusta)',
messageFeedbackApiTip: 'Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.',
messageIDTip: 'ID del mensaje',
ratingTip: 'me gusta o no me gusta, null es deshacer',
parametersApi: 'Obtener información de parámetros de la aplicación',
parametersApiTip: 'Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga.',
},
chatMode: {
title: 'Chat App API',
info: 'Para aplicaciones de conversación versátiles que utilizan un formato de preguntas y respuestas, llama a la API de mensajes de chat para iniciar el diálogo. Mantén conversaciones en curso pasando el conversation_id devuelto. Los parámetros de respuesta y las plantillas dependen de la configuración de Dify Prompt Eng.',
createChatApi: 'Crear mensaje de chat',
createChatApiTip: 'Crea un nuevo mensaje de conversación o continúa un diálogo existente.',
inputsTips: '(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.',
queryTips: 'Contenido de entrada/pregunta del usuario',
blocking: 'Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)',
streaming: 'devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).',
conversationIdTip: '(Opcional) ID de conversación: dejar vacío para la primera conversación; pasar conversation_id del contexto para continuar el diálogo.',
messageFeedbackApi: 'Comentarios terminales de mensajes, me gusta',
messageFeedbackApiTip: 'Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.',
messageIDTip: 'ID del mensaje',
ratingTip: 'me gusta o no me gusta, null es deshacer',
chatMsgHistoryApi: 'Obtener el historial de mensajes de chat',
chatMsgHistoryApiTip: 'La primera página devuelve las últimas `limit` barras, en orden inverso.',
chatMsgHistoryConversationIdTip: 'ID de conversación',
chatMsgHistoryFirstId: 'ID del primer registro de chat en la página actual. El valor predeterminado es ninguno.',
chatMsgHistoryLimit: 'Cuántos chats se devuelven en una solicitud',
conversationsListApi: 'Obtener lista de conversaciones',
conversationsListApiTip: 'Obtiene la lista de sesiones del usuario actual. De forma predeterminada, se devuelven las últimas 20 sesiones.',
conversationsListFirstIdTip: 'ID del último registro en la página actual, predeterminado ninguno.',
conversationsListLimitTip: 'Cuántos chats se devuelven en una solicitud',
conversationRenamingApi: 'Renombrar conversación',
conversationRenamingApiTip: 'Cambia el nombre de las conversaciones; el nombre se muestra en las interfaces de cliente de múltiples sesiones.',
conversationRenamingNameTip: 'Nuevo nombre',
parametersApi: 'Obtener información de parámetros de la aplicación',
parametersApiTip: 'Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga.',
},
develop: {
requestBody: 'Cuerpo de la solicitud',
pathParams: 'Parámetros de ruta',
query: 'Consulta',
toc: 'Contenido',
},
regenerate: 'Regenerar',
}
export default translation

View File

@@ -0,0 +1,568 @@
const translation = {
pageTitle: {
line1: 'INDICACIÓN',
line2: 'Ingeniería',
},
orchestrate: 'Orquestar',
promptMode: {
simple: 'Cambia a Modo Experto para editar toda la INDICACIÓN',
advanced: 'Modo Experto',
switchBack: 'Volver',
advancedWarning: {
title: 'Has cambiado a Modo Experto, y una vez que modifiques la INDICACIÓN, NO PODRÁS regresar al modo básico.',
description: 'En Modo Experto, puedes editar toda la INDICACIÓN.',
learnMore: 'Aprender más',
ok: 'OK',
},
operation: {
addMessage: 'Agregar Mensaje',
},
contextMissing: 'Componente de contexto faltante, la efectividad de la indicación puede no ser buena.',
},
operation: {
applyConfig: 'Publicar',
resetConfig: 'Restablecer',
debugConfig: 'Depurar',
addFeature: 'Agregar Función',
automatic: 'Automático',
stopResponding: 'Dejar de responder',
agree: 'Me gusta',
disagree: 'No me gusta',
cancelAgree: 'Cancelar Me gusta',
cancelDisagree: 'Cancelar No me gusta',
userAction: 'Usuario ',
},
notSetAPIKey: {
title: 'La clave del proveedor LLM no se ha establecido',
trailFinished: 'Prueba terminada',
description: 'La clave del proveedor LLM no se ha establecido, y debe configurarse antes de depurar.',
settingBtn: 'Ir a configuración',
},
trailUseGPT4Info: {
title: 'No se admite GPT-4 ahora',
description: 'Para usar GPT-4, configure la clave API.',
},
feature: {
groupChat: {
title: 'Mejorar chat',
description: 'Agregar configuraciones previas a la conversación en aplicaciones puede mejorar la experiencia del usuario.',
},
groupExperience: {
title: 'Mejorar experiencia',
},
conversationOpener: {
title: 'Iniciadores de conversación',
description: 'En una aplicación de chat, la primera oración que la IA dice al usuario suele usarse como bienvenida.',
},
suggestedQuestionsAfterAnswer: {
title: 'Seguimiento',
description: 'Configurar sugerencias de próximas preguntas puede proporcionar una mejor conversación.',
resDes: '3 sugerencias para la próxima pregunta del usuario.',
tryToAsk: 'Intenta preguntar',
},
moreLikeThis: {
title: 'Más como esto',
description: 'Genera múltiples textos a la vez, luego edítalos y continúa generando',
generateNumTip: 'Número de veces generado cada vez',
tip: 'Usar esta función incurrirá en un costo adicional de tokens',
},
speechToText: {
title: 'Voz a Texto',
description: 'Una vez habilitado, puedes usar la entrada de voz.',
resDes: 'Entrada de voz habilitada',
},
textToSpeech: {
title: 'Texto a Voz',
description: 'Una vez habilitado, el texto puede convertirse en voz.',
resDes: 'Texto a Audio habilitado',
},
citation: {
title: 'Citas y Atribuciones',
description: 'Una vez habilitado, muestra el documento fuente y la sección atribuida del contenido generado.',
resDes: 'Citas y Atribuciones habilitadas',
},
annotation: {
title: 'Respuesta de Anotación',
description: 'Puedes agregar manualmente una respuesta de alta calidad a la caché para una coincidencia prioritaria con preguntas similares de los usuarios.',
resDes: 'Respuesta de Anotación habilitada',
scoreThreshold: {
title: 'Umbral de Puntuación',
description: 'Usado para establecer el umbral de similitud para la respuesta de anotación.',
easyMatch: 'Coincidencia Fácil',
accurateMatch: 'Coincidencia Precisa',
},
matchVariable: {
title: 'Variable de Coincidencia',
choosePlaceholder: 'Elige la variable de coincidencia',
},
cacheManagement: 'Anotaciones',
cached: 'Anotado',
remove: 'Eliminar',
removeConfirm: '¿Eliminar esta anotación?',
add: 'Agregar anotación',
edit: 'Editar anotación',
},
dataSet: {
title: 'Contexto',
noData: 'Puedes importar Conocimiento como contexto',
selectTitle: 'Seleccionar Conocimiento de referencia',
selected: 'Conocimiento seleccionado',
noDataSet: 'No se encontró Conocimiento',
toCreate: 'Ir a crear',
notSupportSelectMulti: 'Actualmente solo se admite un Conocimiento',
queryVariable: {
title: 'Variable de Consulta',
tip: 'Esta variable se utilizará como entrada de consulta para la recuperación de contexto, obteniendo información de contexto relacionada con la entrada de esta variable.',
choosePlaceholder: 'Elige la variable de consulta',
noVar: 'No hay variables',
noVarTip: 'por favor, crea una variable en la sección Variables',
unableToQueryDataSet: 'No se puede consultar el Conocimiento',
unableToQueryDataSetTip: 'No se puede consultar el Conocimiento con éxito, por favor elige una variable de consulta de contexto en la sección de contexto.',
ok: 'OK',
contextVarNotEmpty: 'La variable de consulta de contexto no puede estar vacía',
deleteContextVarTitle: '¿Eliminar variable "{{varName}}"?',
deleteContextVarTip: 'Esta variable ha sido establecida como una variable de consulta de contexto, y eliminarla afectará el uso normal del Conocimiento. Si aún necesitas eliminarla, por favor vuelve a seleccionarla en la sección de contexto.',
},
},
tools: {
title: 'Herramientas',
tips: 'Las herramientas proporcionan un método estándar de llamada API, tomando la entrada del usuario o variables como parámetros de solicitud para consultar datos externos como contexto.',
toolsInUse: '{{count}} herramientas en uso',
modal: {
title: 'Herramienta',
toolType: {
title: 'Tipo de Herramienta',
placeholder: 'Por favor selecciona el tipo de herramienta',
},
name: {
title: 'Nombre',
placeholder: 'Por favor ingresa el nombre',
},
variableName: {
title: 'Nombre de la Variable',
placeholder: 'Por favor ingresa el nombre de la variable',
},
},
},
conversationHistory: {
title: 'Historial de Conversaciones',
description: 'Establecer nombres de prefijo para los roles de conversación',
tip: 'El Historial de Conversaciones no está habilitado, por favor agrega <histories> en la indicación arriba.',
learnMore: 'Aprender más',
editModal: {
title: 'Editar Nombres de Roles de Conversación',
userPrefix: 'Prefijo de Usuario',
assistantPrefix: 'Prefijo de Asistente',
},
},
toolbox: {
title: 'CAJA DE HERRAMIENTAS',
},
moderation: {
title: 'Moderación de contenido',
description: 'Asegura la salida del modelo utilizando API de moderación o manteniendo una lista de palabras sensibles.',
allEnabled: 'Contenido de ENTRADA/SALIDA Habilitado',
inputEnabled: 'Contenido de ENTRADA Habilitado',
outputEnabled: 'Contenido de SALIDA Habilitado',
modal: {
title: 'Configuración de moderación de contenido',
provider: {
title: 'Proveedor',
openai: 'Moderación de OpenAI',
openaiTip: {
prefix: 'La Moderación de OpenAI requiere una clave API de OpenAI configurada en la ',
suffix: '.',
},
keywords: 'Palabras clave',
},
keywords: {
tip: 'Una por línea, separadas por saltos de línea. Hasta 100 caracteres por línea.',
placeholder: 'Una por línea, separadas por saltos de línea',
line: 'Línea',
},
content: {
input: 'Moderar Contenido de ENTRADA',
output: 'Moderar Contenido de SALIDA',
preset: 'Respuestas predefinidas',
placeholder: 'Contenido de respuestas predefinidas aquí',
condition: 'Moderar Contenido de ENTRADA y SALIDA habilitado al menos uno',
fromApi: 'Las respuestas predefinidas son devueltas por la API',
errorMessage: 'Las respuestas predefinidas no pueden estar vacías',
supportMarkdown: 'Markdown soportado',
},
openaiNotConfig: {
before: 'La Moderación de OpenAI requiere una clave API de OpenAI configurada en la',
after: '',
},
},
contentEnableLabel: 'Moderación de contenido habilitada',
},
fileUpload: {
title: 'Subida de archivos',
description: 'La caja de entrada del chat permite subir imágenes, documentos y otros archivos.',
supportedTypes: 'Tipos de archivo soportados',
numberLimit: 'Máximo de subidas',
modalTitle: 'Configuración de subida de archivos',
},
imageUpload: {
title: 'Subida de imágenes',
description: 'Permite subir imágenes.',
supportedTypes: 'Tipos de archivo soportados',
numberLimit: 'Máximo de subidas',
modalTitle: 'Configuración de subida de imágenes',
},
bar: {
empty: 'Habilitar funciones para mejorar la experiencia del usuario de la aplicación web',
enableText: 'Funciones habilitadas',
manage: 'Gestionar',
},
documentUpload: {
title: 'Documento',
description: 'Habilitar Documento permitirá al modelo aceptar documentos y responder preguntas sobre ellos.',
},
audioUpload: {
title: 'Audio',
description: 'Habilitar Audio permitirá al modelo procesar archivos de audio para transcripción y análisis.',
},
},
automatic: {
},
resetConfig: {
title: '¿Confirmar restablecimiento?',
message: 'Restablecer descarta cambios, restaurando la última configuración publicada.',
},
errorMessage: {
nameOfKeyRequired: 'nombre de la clave: {{key}} requerido',
valueOfVarRequired: 'el valor de {{key}} no puede estar vacío',
queryRequired: 'Se requiere texto de solicitud.',
waitForResponse: 'Por favor espera la respuesta al mensaje anterior para completar.',
waitForBatchResponse: 'Por favor espera la respuesta a la tarea por lotes para completar.',
notSelectModel: 'Por favor elige un modelo',
waitForImgUpload: 'Por favor espera a que la imagen se cargue',
waitForFileUpload: 'Espere a que se cargue el archivo o los archivos',
},
chatSubTitle: 'Instrucciones',
completionSubTitle: 'Prefijo de la Indicación',
promptTip: 'Las indicaciones guían las respuestas de la IA con instrucciones y restricciones. Inserta variables como {{input}}. Esta indicación no será visible para los usuarios.',
formattingChangedTitle: 'Formato cambiado',
formattingChangedText: 'Modificar el formato restablecerá el área de depuración, ¿estás seguro?',
variableTitle: 'Variables',
variableTip: 'Los usuarios completan las variables en un formulario, reemplazando automáticamente las variables en la indicación.',
notSetVar: 'Las variables permiten a los usuarios introducir palabras de indicación u observaciones de apertura al completar formularios. Puedes intentar ingresar "{{input}}" en las palabras de indicación.',
autoAddVar: 'Variables no definidas referenciadas en la pre-indicación, ¿quieres agregarlas en el formulario de entrada del usuario?',
variableTable: {
key: 'Clave de Variable',
name: 'Nombre del Campo de Entrada del Usuario',
type: 'Tipo de Entrada',
action: 'Acciones',
typeString: 'Cadena',
typeSelect: 'Seleccionar',
},
varKeyError: {
canNoBeEmpty: 'Se requiere {{key}}',
tooLong: '{{key}} demasiado larga. No puede tener más de 30 caracteres',
notValid: '{{key}} no es válida. Solo puede contener letras, números y guiones bajos',
notStartWithNumber: '{{key}} no puede comenzar con un número',
keyAlreadyExists: '{{key}} ya existe',
},
otherError: {
promptNoBeEmpty: 'La indicación no puede estar vacía',
historyNoBeEmpty: 'El historial de conversaciones debe establecerse en la indicación',
queryNoBeEmpty: 'La consulta debe establecerse en la indicación',
},
variableConfig: {
'addModalTitle': 'Agregar Campo de Entrada',
'editModalTitle': 'Editar Campo de Entrada',
'description': 'Configuración para la variable {{varName}}',
'fieldType': 'Tipo de campo',
'string': 'Texto corto',
'text-input': 'Texto corto',
'paragraph': 'Párrafo',
'select': 'Seleccionar',
'number': 'Número',
'notSet': 'No configurado, intenta escribir {{input}} en la indicación de prefijo',
'stringTitle': 'Opciones de cuadro de texto de formulario',
'maxLength': 'Longitud máxima',
'options': 'Opciones',
'addOption': 'Agregar opción',
'apiBasedVar': 'Variable basada en API',
'varName': 'Nombre de la Variable',
'labelName': 'Nombre de la Etiqueta',
'inputPlaceholder': 'Por favor ingresa',
'content': 'Contenido',
'required': 'Requerido',
'hide': 'Ocultar',
'errorMsg': {
labelNameRequired: 'Nombre de la etiqueta es requerido',
varNameCanBeRepeat: 'El nombre de la variable no puede repetirse',
atLeastOneOption: 'Se requiere al menos una opción',
optionRepeat: 'Hay opciones repetidas',
},
'defaultValue': 'Valor predeterminado',
'noDefaultValue': 'Sin valor predeterminado',
'selectDefaultValue': 'Seleccionar valor predeterminado',
'file': {
image: {
name: 'Imagen',
},
audio: {
name: 'Audio',
},
document: {
name: 'Documento',
},
video: {
name: 'Vídeo',
},
custom: {
name: 'Otros tipos de archivos',
description: 'Especifique otros tipos de archivo.',
createPlaceholder: ' Extensión de archivo, por ejemplo, .doc',
},
supportFileTypes: 'Tipos de archivos de soporte',
},
'uploadFileTypes': 'Cargar tipos de archivos',
'localUpload': 'Carga local',
'both': 'ambos',
'single-file': 'En fila india',
'maxNumberOfUploads': 'Número máximo de cargas',
'maxNumberTip': 'Documento < {{docLimit}}, imagen < {{imgLimit}}, audio < {{audioLimit}}, vídeo < {{videoLimit}}',
'multi-files': 'Lista de archivos',
'jsonSchema': 'Esquema JSON',
'json': 'Código JSON',
'checkbox': 'Checkbox',
'optional': 'opcional',
'placeholder': 'Marcador',
'uploadMethod': 'Método de carga',
'displayName': 'Nombre para mostrar',
'startSelectedOption': 'Iniciar opción seleccionada',
'noDefaultSelected': 'No seleccionar',
'startChecked': 'Empezar marcado',
'placeholderPlaceholder': 'Introduzca el texto que se mostrará cuando el campo esté vacío',
'defaultValuePlaceholder': 'Introduzca el valor predeterminado para rellenar previamente el campo',
'tooltips': 'Información sobre herramientas',
'tooltipsPlaceholder': 'Ingrese el texto útil que se muestra al pasar el cursor sobre la etiqueta',
'unitPlaceholder': 'Mostrar unidades después de números, por ejemplo, fichas',
'showAllSettings': 'Mostrar todas las configuraciones',
'unit': 'Unidad',
},
vision: {
name: 'Visión',
description: 'Habilitar Visión permitirá al modelo recibir imágenes y responder preguntas sobre ellas.',
settings: 'Configuraciones',
visionSettings: {
title: 'Configuraciones de Visión',
resolution: 'Resolución',
resolutionTooltip: `Baja resolución permitirá que el modelo reciba una versión de baja resolución de 512 x 512 de la imagen, y represente la imagen con un presupuesto de 65 tokens. Esto permite que la API devuelva respuestas más rápidas y consuma menos tokens de entrada para casos de uso que no requieren alta detalle.
\n
Alta resolución permitirá primero que el modelo vea la imagen de baja resolución y luego crea recortes detallados de las imágenes de entrada como cuadrados de 512px basados en el tamaño de la imagen de entrada. Cada uno de los recortes detallados usa el doble del presupuesto de tokens para un total de 129 tokens.`,
high: 'Alta',
low: 'Baja',
uploadMethod: 'Método de carga',
both: 'Ambos',
localUpload: 'Carga Local',
url: 'URL',
uploadLimit: 'Límite de carga',
},
onlySupportVisionModelTip: 'Solo admite modelos de visión',
},
voice: {
name: 'Voz',
defaultDisplay: 'Voz Predeterminada',
description: 'Configuraciones de voz a texto',
settings: 'Configuraciones',
voiceSettings: {
title: 'Configuraciones de Voz',
language: 'Idioma',
resolutionTooltip: 'Soporte de idioma para voz a texto.',
voice: 'Voz',
autoPlay: 'Auto-reproducción',
autoPlayEnabled: 'Abierto',
autoPlayDisabled: 'Cierre',
},
},
openingStatement: {
title: 'Apertura de Conversación',
add: 'Agregar',
writeOpener: 'Escribir apertura',
placeholder: 'Escribe tu mensaje de apertura aquí, puedes usar variables, intenta escribir {{variable}}.',
openingQuestion: 'Preguntas de Apertura',
openingQuestionPlaceholder: 'Puede usar variables, intente escribir {{variable}}.',
noDataPlaceHolder: 'Iniciar la conversación con el usuario puede ayudar a la IA a establecer una conexión más cercana con ellos en aplicaciones de conversación.',
varTip: 'Puedes usar variables, intenta escribir {{variable}}',
tooShort: 'Se requieren al menos 20 palabras en la indicación inicial para generar una apertura de conversación.',
notIncludeKey: 'La indicación inicial no incluye la variable: {{key}}. Por favor agrégala a la indicación inicial.',
},
modelConfig: {
model: 'Modelo',
setTone: 'Establecer tono de respuestas',
title: 'Modelo y Parámetros',
modeType: {
chat: 'Chat',
completion: 'Completar',
},
},
inputs: {
title: 'Depurar y Previsualizar',
noPrompt: 'Intenta escribir alguna indicación en la entrada de pre-indicación',
userInputField: 'Campo de Entrada del Usuario',
noVar: 'Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión.',
chatVarTip: 'Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión',
completionVarTip: 'Completa el valor de la variable, que se reemplazará automáticamente en las palabras de indicación cada vez que se envíe una pregunta.',
previewTitle: 'Vista previa de la indicación',
queryTitle: 'Contenido de la consulta',
queryPlaceholder: 'Por favor ingresa el texto de la solicitud.',
run: 'EJECUTAR',
},
result: 'Texto de salida',
datasetConfig: {
settingTitle: 'Configuraciones de Recuperación',
knowledgeTip: 'Haz clic en el botón “+” para agregar conocimiento',
retrieveOneWay: {
title: 'Recuperación N-a-1',
description: 'Basado en la intención del usuario y las descripciones de Conocimiento, el Agente selecciona autónomamente el mejor Conocimiento para consultar. Ideal para aplicaciones con Conocimiento limitado y distintivo.',
},
retrieveMultiWay: {
title: 'Recuperación Multi-camino',
description: 'Basado en la intención del usuario, consulta a través de todo el Conocimiento, recupera texto relevante de múltiples fuentes y selecciona los mejores resultados que coinciden con la consulta del usuario después de reordenar. Se requiere configuración de la API del modelo de Reordenar.',
},
rerankModelRequired: 'Se requiere modelo de Reordenar',
params: 'Parámetros',
top_k: 'Top K',
top_kTip: 'Usado para filtrar fragmentos que son más similares a las preguntas del usuario. El sistema también ajustará dinámicamente el valor de Top K, de acuerdo con los max_tokens del modelo seleccionado.',
score_threshold: 'Umbral de Puntuación',
score_thresholdTip: 'Usado para establecer el umbral de similitud para la filtración de fragmentos.',
retrieveChangeTip: 'Modificar el modo de índice y el modo de recuperación puede afectar las aplicaciones asociadas con este Conocimiento.',
embeddingModelRequired: 'Se requiere un modelo de incrustación configurado',
},
debugAsSingleModel: 'Depurar como Modelo Único',
debugAsMultipleModel: 'Depurar como Múltiples Modelos',
duplicateModel: 'Duplicar',
publishAs: 'Publicar como',
assistantType: {
name: 'Tipo de Asistente',
chatAssistant: {
name: 'Asistente Básico',
description: 'Construye un asistente basado en chat usando un Modelo de Lenguaje Grande',
},
agentAssistant: {
name: 'Asistente Agente',
description: 'Construye un Agente inteligente que puede elegir herramientas autónomamente para completar tareas',
},
},
agent: {
agentMode: 'Modo Agente',
agentModeDes: 'Establecer el tipo de modo de inferencia para el agente',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Llamada de Función',
},
setting: {
name: 'Configuraciones del Agente',
description: 'Las configuraciones del Asistente Agente permiten establecer el modo del agente y funciones avanzadas como indicaciones integradas, disponibles solo en el tipo Agente.',
maximumIterations: {
name: 'Iteraciones Máximas',
description: 'Limitar el número de iteraciones que un asistente agente puede ejecutar',
},
},
buildInPrompt: 'Indicación Integrada',
firstPrompt: 'Primera Indicación',
nextIteration: 'Próxima Iteración',
promptPlaceholder: 'Escribe tu indicación aquí',
tools: {
name: 'Herramientas',
description: 'El uso de herramientas puede extender las capacidades del LLM, como buscar en internet o realizar cálculos científicos',
enabled: 'Habilitado',
},
},
codegen: {
apply: 'Aplicar',
overwriteConfirmMessage: 'Esta acción sobrescribirá el código existente. ¿Quieres continuar?',
instruction: 'Instrucciones',
loading: 'Generando código...',
title: 'Generador de código',
resTitle: 'Código generado',
description: 'El Generador de código utiliza modelos configurados para generar código de alta calidad basado en sus instrucciones. Proporcione instrucciones claras y detalladas.',
noDataLine1: 'Describa su caso de uso a la izquierda,',
generate: 'Generar',
generatedCodeTitle: 'Código generado',
noDataLine2: 'La vista previa del código se mostrará aquí.',
overwriteConfirmTitle: '¿Sobrescribir el código existente?',
instructionPlaceholder: 'Introduzca una descripción detallada del código que desea generar.',
applyChanges: 'Aplicar cambios',
},
generate: {
template: {
pythonDebugger: {
name: 'Depurador de Python',
instruction: 'Un bot que puede generar y depurar el código en función de las instrucciones',
},
translation: {
instruction: 'Un traductor que puede traducir varios idiomas',
name: 'Traducción',
},
professionalAnalyst: {
instruction: 'Extraiga información, identifique riesgos y extraiga información clave de informes largos en un solo memorándum',
name: 'Analista profesional',
},
excelFormulaExpert: {
name: 'Experto en fórmulas de Excel',
instruction: 'Un chatbot que puede ayudar a los usuarios novatos a comprender, usar y crear fórmulas de Excel basadas en las instrucciones del usuario',
},
travelPlanning: {
instruction: 'El Asistente de planificación de viajes es una herramienta inteligente diseñada para ayudar a los usuarios a planificar sus viajes sin esfuerzo',
name: 'Planificación de viajes',
},
SQLSorcerer: {
instruction: 'Transforme el lenguaje cotidiano en consultas SQL',
name: 'Hechicero SQL',
},
GitGud: {
name: 'Git gud',
instruction: 'Generar comandos de Git adecuados basados en acciones de control de versiones descritas por el usuario',
},
meetingTakeaways: {
name: 'Conclusiones de la reunión',
instruction: 'Destilar las reuniones en resúmenes concisos que incluyan temas de discusión, conclusiones clave y elementos de acción',
},
writingsPolisher: {
name: 'Pulidora de escritura',
instruction: 'Utiliza técnicas avanzadas de corrección de textos para mejorar tus escritos',
},
},
apply: 'Aplicar',
instruction: 'Instrucciones',
description: 'El generador de mensajes utiliza el modelo configurado para optimizar los mensajes para una mayor calidad y una mejor estructura. Escriba instrucciones claras y detalladas.',
generate: 'Generar',
title: 'Generador de avisos',
tryIt: 'Pruébalo',
overwriteMessage: 'La aplicación de este mensaje anulará la configuración existente.',
resTitle: 'Mensaje generado',
overwriteTitle: '¿Anular la configuración existente?',
loading: 'Orquestando la aplicación para usted...',
to: 'a',
dismiss: 'Descartar',
press: 'Prensa',
versions: 'Versiones',
idealOutputPlaceholder: 'Describe tu formato de respuesta ideal, longitud, tono y requisitos de contenido...',
instructionPlaceHolderTitle: 'Describe cómo te gustaría mejorar este aviso. Por ejemplo:',
optimizationNote: 'Nota de Optimización',
optional: 'Opcional',
instructionPlaceHolderLine1: 'Haz el resultado más conciso, reteniendo los puntos clave.',
optimizePromptTooltip: 'Optimizar en el generador de mensajes',
instructionPlaceHolderLine3: 'El tono es demasiado brusco, por favor hazlo más amigable.',
instructionPlaceHolderLine2: 'El formato de salida es incorrecto, por favor siga estrictamente el formato JSON.',
version: 'Versión',
idealOutput: 'Salida Ideal',
insertContext: 'insertar contexto',
latest: 'último',
codeGenInstructionPlaceHolderLine: 'Cuanto más detallada sea la retroalimentación, como los tipos de datos de entrada y salida, así como la forma en que se procesan las variables, más precisa será la generación de código.',
newNoDataLine1: 'Escribe una instrucción en la columna de la izquierda y haz clic en Generar para ver la respuesta.',
},
warningMessage: {
timeoutExceeded: 'Los resultados no se muestran debido al tiempo de espera. Consulte los registros para obtener resultados completos.',
},
noResult: 'La salida se mostrará aquí.',
}
export default translation

View File

@@ -0,0 +1,112 @@
const translation = {
title: 'Registros',
description: 'Los registros registran el estado de ejecución de la aplicación, incluyendo las entradas de usuario y las respuestas de la IA.',
dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A',
table: {
header: {
updatedTime: 'Hora actualizada',
time: 'Hora creada',
endUser: 'Usuario Final o Cuenta',
input: 'Entrada',
output: 'Salida',
summary: 'Título',
messageCount: 'Cantidad de Mensajes',
userRate: 'Tasa de Usuario',
adminRate: 'Tasa de Op.',
startTime: 'HORA DE INICIO',
status: 'ESTADO',
runtime: 'TIEMPO DE EJECUCIÓN',
tokens: 'TOKENS',
user: 'USUARIO FINAL O CUENTA',
version: 'VERSIÓN',
triggered_from: 'ACTIVADO POR',
},
pagination: {
previous: 'Anterior',
next: 'Siguiente',
},
empty: {
noChat: 'Aún no hay conversación',
noOutput: 'Sin salida',
element: {
title: '¿Hay alguien ahí?',
content: 'Observa y anota las interacciones entre los usuarios finales y las aplicaciones de IA aquí para mejorar continuamente la precisión de la IA. Puedes probar <shareLink>compartiendo</shareLink> o <testLink>probando</testLink> la aplicación web tú mismo, y luego regresar a esta página.',
},
},
},
detail: {
time: 'Tiempo',
conversationId: 'ID de Conversación',
promptTemplate: 'Plantilla de Indicación',
promptTemplateBeforeChat: 'Plantilla de Indicación Antes de la Conversación · Como Mensaje del Sistema',
annotationTip: 'Mejoras Marcadas por {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Tokens gastados',
loading: 'cargando',
operation: {
like: 'me gusta',
dislike: 'no me gusta',
addAnnotation: 'Agregar Mejora',
editAnnotation: 'Editar Mejora',
annotationPlaceholder: 'Ingresa la respuesta esperada que deseas que la IA responda, lo cual se puede utilizar para el ajuste del modelo y la mejora continua de la calidad de generación de texto en el futuro.',
},
variables: 'Variables',
uploadImages: 'Imágenes Cargadas',
modelParams: 'Parámetros del modelo',
},
filter: {
period: {
today: 'Hoy',
last7days: 'Últimos 7 Días',
last4weeks: 'Últimas 4 semanas',
last3months: 'Últimos 3 meses',
last12months: 'Últimos 12 meses',
monthToDate: 'Mes hasta la fecha',
quarterToDate: 'Trimestre hasta la fecha',
yearToDate: 'Año hasta la fecha',
allTime: 'Todo el tiempo',
custom: 'Personalizado',
last30days: 'Últimos 30 días',
},
annotation: {
all: 'Todos',
annotated: 'Mejoras Anotadas ({{count}} elementos)',
not_annotated: 'No Anotadas',
},
sortBy: 'Ordenar por:',
descending: 'descendente',
ascending: 'ascendente',
},
workflowTitle: 'Registros de Flujo de Trabajo',
workflowSubtitle: 'El registro registró la operación de Automate.',
runDetail: {
title: 'Registro de Conversación',
workflowTitle: 'Detalle del Registro',
fileListLabel: 'Detalles del archivo',
fileListDetail: 'Detalle',
testWithParams: 'Prueba con parámetros',
},
promptLog: 'Registro de Indicación',
agentLog: 'Registro de Agente',
viewLog: 'Ver Registro',
agentLogDetail: {
agentMode: 'Modo de Agente',
toolUsed: 'Herramienta Utilizada',
iterations: 'Iteraciones',
iteration: 'Iteración',
finalProcessing: 'Procesamiento Final',
},
dateFormat: 'DD/MM/YYYY',
triggerBy: {
debugging: 'Depuración',
appRun: 'Aplicación web',
webhook: 'Webhook',
schedule: 'Horario',
plugin: 'Complemento',
ragPipelineRun: 'Pipeline RAG',
ragPipelineDebugging: 'Depuración RAG',
},
}
export default translation

View File

@@ -0,0 +1,189 @@
const translation = {
welcome: {
firstStepTip: 'Para comenzar,',
enterKeyTip: 'ingresa tu clave de API de OpenAI a continuación',
getKeyTip: 'Obtén tu clave de API desde el panel de control de OpenAI',
placeholder: 'Tu clave de API de OpenAI (ej. sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Estás utilizando la cuota de prueba de {{providerName}}.',
description: 'La cuota de prueba se proporciona para su uso de prueba. Antes de que se agoten las llamadas de la cuota de prueba, configure su propio proveedor de modelos o compre cuota adicional.',
},
exhausted: {
title: 'Tu cuota de prueba se ha agotado, por favor configura tu APIKey.',
description: 'Tu cuota de prueba se ha agotado. Por favor, configure su propio proveedor de modelos o compre cuota adicional.',
},
},
selfHost: {
title: {
row1: 'Para comenzar,',
row2: 'configura primero tu proveedor de modelos.',
},
},
callTimes: 'Veces llamadas',
usedToken: 'Token utilizados',
setAPIBtn: 'Ir a configurar proveedor de modelos',
tryCloud: 'O prueba la versión en la nube de Dify con una cotización gratuita',
},
overview: {
title: 'Resumen',
appInfo: {
explanation: 'Aplicación web de IA lista para usar',
accessibleAddress: 'URL pública',
preview: 'Vista previa',
regenerate: 'Regenerar',
regenerateNotice: '¿Deseas regenerar la URL pública?',
preUseReminder: 'Por favor, habilita la aplicación web antes de continuar.',
settings: {
entry: 'Configuración',
title: 'Configuración de la aplicación web',
webName: 'Nombre de la aplicación web',
webDesc: 'Descripción de la aplicación web',
webDescTip: 'Este texto se mostrará en el lado del cliente, proporcionando una guía básica sobre cómo usar la aplicación',
webDescPlaceholder: 'Ingresa la descripción de la aplicación web',
language: 'Idioma',
workflow: {
title: 'Pasos del flujo de trabajo',
show: 'Mostrar',
hide: 'Ocultar',
subTitle: 'Detalles del flujo de trabajo',
showDesc: 'Mostrar u ocultar detalles del flujo de trabajo en web app',
},
chatColorTheme: 'Tema de color del chat',
chatColorThemeDesc: 'Establece el tema de color del chatbot',
chatColorThemeInverted: 'Invertido',
invalidHexMessage: 'Valor hexadecimal no válido',
invalidPrivacyPolicy: 'Enlace de política de privacidad no válido. Por favor, utiliza un enlace válido que comience con http o https',
more: {
entry: 'Mostrar más configuraciones',
copyright: 'Derechos de autor',
copyRightPlaceholder: 'Ingresa el nombre del autor o la organización',
privacyPolicy: 'Política de privacidad',
privacyPolicyPlaceholder: 'Ingresa el enlace de la política de privacidad',
privacyPolicyTip: 'Ayuda a los visitantes a comprender los datos que recopila la aplicación, consulta la <privacyPolicyLink>Política de privacidad</privacyPolicyLink> de Dify.',
customDisclaimer: 'Descargo de responsabilidad personalizado',
customDisclaimerPlaceholder: 'Ingresa el texto de descargo de responsabilidad personalizado',
customDisclaimerTip: 'El texto de descargo de responsabilidad personalizado se mostrará en el lado del cliente, proporcionando información adicional sobre la aplicación',
copyrightTip: 'Mostrar información de derechos de autor en la aplicación web',
copyrightTooltip: 'Actualice al plan Profesional o superior',
},
sso: {
description: 'Todos los usuarios deben iniciar sesión con SSO antes de usar web app',
tooltip: 'Póngase en contacto con el administrador para habilitar el inicio de sesión único de web app',
label: 'Autenticación SSO',
title: 'web app SSO',
},
modalTip: 'Configuración de la aplicación web del lado del cliente.',
},
embedded: {
entry: 'Incrustado',
title: 'Incrustar en el sitio web',
explanation: 'Elige la forma de incrustar la aplicación de chat en tu sitio web',
iframe: 'Para agregar la aplicación de chat en cualquier lugar de tu sitio web, agrega este iframe a tu código HTML.',
scripts: 'Para agregar una aplicación de chat en la esquina inferior derecha de tu sitio web, agrega este código a tu HTML.',
chromePlugin: 'Instalar la extensión de Chrome de Dify Chatbot',
copied: 'Copiado',
copy: 'Copiar',
},
qrcode: {
title: 'Código QR para compartir',
scan: 'Escanear para compartir la aplicación',
download: 'Descargar código QR',
},
customize: {
way: 'forma',
entry: 'Personalizar',
title: 'Personalizar la aplicación web de IA',
explanation: 'Puedes personalizar el frontend de la aplicación web para adaptarlo a tus necesidades y estilo.',
way1: {
name: 'Bifurca el código del cliente, modifícalo y despliégalo en Vercel (recomendado)',
step1: 'Bifurca el código del cliente y modifícalo',
step1Tip: 'Haz clic aquí para bifurcar el código fuente en tu cuenta de GitHub y modificar el código',
step1Operation: 'Dify-WebClient',
step2: 'Despliégalo en Vercel',
step2Tip: 'Haz clic aquí para importar el repositorio en Vercel y desplegarlo',
step2Operation: 'Importar repositorio',
step3: 'Configura las variables de entorno',
step3Tip: 'Agrega las siguientes variables de entorno en Vercel',
},
way2: {
name: 'Escribe código del lado del cliente para llamar a la API y despliégalo en un servidor',
operation: 'Documentación',
},
},
launch: 'Lanzar',
enableTooltip: {
description: 'Para habilitar esta función, por favor agrega un nodo de Entrada de Usuario al lienzo. (Puede que ya exista en el borrador, surte efecto después de publicar)',
learnMore: 'Aprender más',
},
title: 'Aplicación web',
},
apiInfo: {
title: 'API del servicio backend',
explanation: 'Fácilmente integrable en tu aplicación',
accessibleAddress: 'Punto de conexión de la API del servicio',
doc: 'Referencia de la API',
},
status: {
running: 'En servicio',
disable: 'Deshabilitar',
},
triggerInfo: {
title: 'Desencadenantes',
explanation: 'Gestión de activadores de flujo de trabajo',
triggersAdded: 'Se añadieron los disparadores de {{count}}',
noTriggerAdded: 'No se agregó ningún disparador',
triggerStatusDescription: 'El estado del nodo de activación aparece aquí. (Puede que ya exista en el borrador, surte efecto después de publicar)',
learnAboutTriggers: 'Aprende sobre los desencadenantes',
},
disableTooltip: {
triggerMode: 'La función {{feature}} no es compatible en el modo Nodo de disparo.',
},
},
analysis: {
title: 'Análisis',
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Mensajes totales',
explanation: 'Recuento diario de interacciones con IA.',
},
totalConversations: {
title: 'Conversaciones totales',
explanation: 'Recuento diario de conversaciones con IA; ingeniería/depuración de prompts excluida.',
},
activeUsers: {
title: 'Usuarios activos',
explanation: 'Usuarios únicos que interactúan en preguntas y respuestas con IA; excluye la ingeniería/depuración de prompts.',
},
tokenUsage: {
title: 'Uso de tokens',
explanation: 'Refleja el uso diario de tokens del modelo de lenguaje para la aplicación, útil para el control de costos.',
consumed: 'Consumidos',
},
avgSessionInteractions: {
title: 'Interacciones promedio por sesión',
explanation: 'Recuento continuo de comunicación usuario-IA; para aplicaciones basadas en conversaciones.',
},
avgUserInteractions: {
title: 'Interacciones promedio por usuario',
explanation: 'Refleja la frecuencia de uso diario de los usuarios. Esta métrica refleja la fidelidad del usuario.',
},
userSatisfactionRate: {
title: 'Tasa de satisfacción del usuario',
explanation: 'El número de likes por cada 1,000 mensajes. Esto indica la proporción de respuestas con las que los usuarios están muy satisfechos.',
},
avgResponseTime: {
title: 'Tiempo promedio de respuesta',
explanation: 'Tiempo (ms) que tarda la IA en procesar/responder; para aplicaciones basadas en texto.',
},
tps: {
title: 'Velocidad de salida de tokens',
explanation: 'Mide el rendimiento del LLM. Cuenta la velocidad de salida de tokens del LLM desde el inicio de la solicitud hasta la finalización de la salida.',
},
},
}
export default translation

349
dify/web/i18n/es-ES/app.ts Normal file
View File

@@ -0,0 +1,349 @@
const translation = {
createApp: 'CREAR APP',
types: {
all: 'Todos',
chatbot: 'Chatbot',
agent: 'Agente',
workflow: 'Flujo de trabajo',
completion: 'Finalización',
basic: 'Básico',
advanced: 'Flujo de chat',
},
duplicate: 'Duplicar',
duplicateTitle: 'Duplicar App',
export: 'Exportar DSL',
exportFailed: 'Error al exportar DSL.',
importDSL: 'Importar archivo DSL',
createFromConfigFile: 'Crear desde archivo DSL',
deleteAppConfirmTitle: '¿Eliminar esta app?',
deleteAppConfirmContent:
'Eliminar la app es irreversible. Los usuarios ya no podrán acceder a tu app y todas las configuraciones y registros de prompts se eliminarán permanentemente.',
appDeleted: 'App eliminada',
appDeleteFailed: 'Error al eliminar app',
join: 'Únete a la comunidad',
communityIntro:
'Discute con miembros del equipo, colaboradores y desarrolladores en diferentes canales.',
roadmap: 'Ver nuestro plan de desarrollo',
newApp: {
startFromBlank: 'Crear desde cero',
startFromTemplate: 'Crear desde plantilla',
workflowWarning: 'Actualmente en beta',
captionName: 'Icono y nombre de la app',
appNamePlaceholder: 'Asigna un nombre a tu app',
captionDescription: 'Descripción',
appDescriptionPlaceholder: 'Ingresa la descripción de la app',
useTemplate: 'Usar esta plantilla',
previewDemo: 'Vista previa de demostración',
chatApp: 'Asistente',
chatAppIntro:
'Quiero construir una aplicación basada en chat. Esta app utiliza un formato de pregunta y respuesta, permitiendo múltiples rondas de conversación continua.',
agentAssistant: 'Nuevo Asistente de Agente',
completeApp: 'Generador de Texto',
completeAppIntro:
'Quiero crear una aplicación que genera texto de alta calidad basado en prompts, como la generación de artículos, resúmenes, traducciones y más.',
showTemplates: 'Quiero elegir una plantilla',
hideTemplates: 'Volver a la selección de modo',
Create: 'Crear',
Cancel: 'Cancelar',
nameNotEmpty: 'El nombre no puede estar vacío',
appTemplateNotSelected: 'Por favor, selecciona una plantilla',
appTypeRequired: 'Por favor, selecciona un tipo de app',
appCreated: 'App creada',
appCreateFailed: 'Error al crear app',
Confirm: 'Confirmar',
caution: 'Cautela',
appCreateDSLErrorTitle: 'Incompatibilidad de versiones',
appCreateDSLErrorPart2: '¿Quieres continuar?',
appCreateDSLErrorPart4: 'Versión de DSL compatible con el sistema:',
appCreateDSLErrorPart1: 'Se ha detectado una diferencia significativa en las versiones de DSL. Forzar la importación puede hacer que la aplicación no funcione correctamente.',
appCreateDSLWarning: 'Precaución: La diferencia de versión de DSL puede afectar a determinadas funciones',
appCreateDSLErrorPart3: 'Versión actual de DSL de la aplicación:',
forBeginners: 'Tipos de aplicación más básicos',
learnMore: 'Aprende más',
noTemplateFoundTip: 'Intente buscar usando diferentes palabras clave.',
chatbotShortDescription: 'Chatbot basado en LLM con una configuración sencilla',
chooseAppType: 'Elija un tipo de aplicación',
noAppsFound: 'No se han encontrado aplicaciones',
workflowUserDescription: 'Construya flujos de trabajo autónomos de IA con la simplicidad de arrastrar y soltar.',
advancedShortDescription: 'Flujo de trabajo mejorado para chats de múltiples turnos',
forAdvanced: 'PARA USUARIOS AVANZADOS',
completionShortDescription: 'Asistente de IA para tareas de generación de texto',
optional: 'Opcional',
noIdeaTip: '¿No tienes ideas? Echa un vistazo a nuestras plantillas',
agentUserDescription: 'Un agente inteligente capaz de realizar un razonamiento iterativo y un uso autónomo de las herramientas para alcanzar los objetivos de las tareas.',
workflowShortDescription: 'Flujo agéntico para automatizaciones inteligentes',
advancedUserDescription: 'Flujo de trabajo con funciones de memoria y una interfaz de chatbot.',
agentShortDescription: 'Agente inteligente con razonamiento y uso autónomo de herramientas',
foundResults: '{{conteo}} Resultados',
noTemplateFound: 'No se han encontrado plantillas',
foundResult: '{{conteo}} Resultado',
chatbotUserDescription: 'Cree rápidamente un chatbot basado en LLM con una configuración sencilla. Puedes cambiar a Chatflow más tarde.',
completionUserDescription: 'Cree rápidamente un asistente de IA para tareas de generación de texto con una configuración sencilla.',
dropDSLToCreateApp: 'Suelta el archivo DSL aquí para crear la aplicación',
import: 'Importación',
},
editApp: 'Editar información',
editAppTitle: 'Editar información de la app',
editDone: 'Información de la app actualizada',
editFailed: 'Error al actualizar información de la app',
iconPicker: {
ok: 'OK',
cancel: 'Cancelar',
emoji: 'Emoji',
image: 'Imagen',
},
switch: 'Cambiar a Orquestación de Flujo de Trabajo',
switchTipStart: 'Se creará una nueva copia de la app para ti y la nueva copia cambiará a Orquestación de Flujo de Trabajo. La nueva copia no permitirá',
switchTip: 'volver',
switchTipEnd: ' a la Orquestación Básica.',
switchLabel: 'La copia de la app a crear',
removeOriginal: 'Eliminar la app original',
switchStart: 'Iniciar cambio',
typeSelector: {
all: 'Todos los tipos',
chatbot: 'Chatbot',
agent: 'Agente',
workflow: 'Flujo de trabajo',
completion: 'Finalización',
advanced: 'Flujo de chat',
},
tracing: {
title: 'Rastreo del rendimiento de la app',
description: 'Configuración de un proveedor de LLMOps de terceros y rastreo del rendimiento de la app.',
config: 'Configurar',
collapse: 'Contraer',
expand: 'Expandir',
tracing: 'Rastreo',
disabled: 'Deshabilitado',
disabledTip: 'Por favor, configura el proveedor primero',
enabled: 'En servicio',
tracingDescription: 'Captura el contexto completo de la ejecución de la app, incluyendo llamadas LLM, contexto, prompts, solicitudes HTTP y más, en una plataforma de rastreo de terceros.',
configProviderTitle: {
configured: 'Configurado',
notConfigured: 'Configurar proveedor para habilitar el rastreo',
moreProvider: 'Más proveedores',
},
arize: {
title: 'Arize',
description: 'Observabilidad de LLM de nivel empresarial, evaluación en línea y fuera de línea, monitoreo y experimentación—impulsada por OpenTelemetry. Diseñada específicamente para aplicaciones impulsadas por LLM y agentes.',
},
phoenix: {
title: 'Phoenix',
description: 'Plataforma de observabilidad, evaluación, ingeniería de prompts y experimentación de código abierto basada en OpenTelemetry para sus flujos de trabajo y agentes de LLM.',
},
langsmith: {
title: 'LangSmith',
description: 'Una plataforma de desarrollo todo en uno para cada paso del ciclo de vida de la aplicación impulsada por LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'Rastrea, evalúa, gestiona prompts y métricas para depurar y mejorar tu aplicación LLM.',
},
inUse: 'En uso',
configProvider: {
title: 'Configurar ',
placeholder: 'Ingresa tu {{key}}',
project: 'Proyecto',
publicKey: 'Clave pública',
secretKey: 'Clave secreta',
viewDocsLink: 'Ver documentación de {{key}}',
removeConfirmTitle: '¿Eliminar la configuración de {{key}}?',
removeConfirmContent: 'La configuración actual está en uso, eliminarla desactivará la función de rastreo.',
password: 'Contraseña',
experimentId: 'ID del experimento',
trackingUri: 'URI de seguimiento',
username: 'Nombre de usuario',
databricksHost: 'URL del espacio de trabajo de Databricks',
clientSecret: 'Secreto del cliente OAuth',
clientId: 'ID de cliente OAuth',
personalAccessToken: 'Token de Acceso Personal (antiguo)',
},
view: 'Vista',
opik: {
description: 'Opik es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones LLM.',
title: 'Opik',
},
weave: {
description: 'Weave es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones de LLM.',
title: 'Tejer',
},
aliyun: {
title: 'Monitor de Nubes',
description: 'La plataforma de observabilidad totalmente gestionada y sin mantenimiento proporcionada por Alibaba Cloud, permite la monitorización, trazado y evaluación de aplicaciones Dify de manera inmediata.',
},
mlflow: {
title: 'MLflow',
description: 'Plataforma LLMOps de código abierto para seguimiento de experimentos, observabilidad y evaluación, para construir aplicaciones de IA/LLM con confianza.',
},
databricks: {
title: 'Databricks',
description: 'Databricks ofrece MLflow completamente gestionado con fuerte gobernanza y seguridad para almacenar datos de trazabilidad.',
},
tencent: {
title: 'Tencent APM',
description: 'Tencent Application Performance Monitoring proporciona rastreo integral y análisis multidimensional para aplicaciones LLM.',
},
},
answerIcon: {
title: 'Usar el icono de la aplicación web para reemplazar 🤖',
descriptionInExplore: 'Si se debe usar el icono de la aplicación web para reemplazarlo 🤖 en Explore',
description: 'Si se va a usar el icono de la aplicación web para reemplazarlo 🤖 en la aplicación compartida',
},
importFromDSLUrl: 'URL de origen',
importFromDSLUrlPlaceholder: 'Pegar enlace DSL aquí',
dslUploader: {
button: 'Arrastrar y soltar archivo, o',
browse: 'Examinar',
},
importFromDSL: 'Importar desde DSL',
importFromDSLFile: 'Desde el archivo DSL',
mermaid: {
handDrawn: 'Dibujado a mano',
classic: 'Clásico',
},
openInExplore: 'Abrir en Explorar',
newAppFromTemplate: {
sidebar: {
Programming: 'Programación',
Agent: 'Agente',
Writing: 'Escritura',
Assistant: 'Asistente',
Recommended: 'Recomendado',
HR: 'HR',
Workflow: 'Flujo de trabajo',
},
byCategories: 'POR CATEGORÍAS',
searchAllTemplate: 'Buscar todas las plantillas...',
},
showMyCreatedAppsOnly: 'Mostrar solo mis aplicaciones creadas',
appSelector: {
label: 'APLICACIÓN',
placeholder: 'Selecciona una aplicación...',
noParams: 'No se necesitan parámetros',
params: 'PARÁMETROS DE LA APLICACIÓN',
},
structOutput: {
notConfiguredTip: 'La salida estructurada aún no ha sido configurada.',
required: 'Requerido',
configure: 'Configurar',
LLMResponse: 'Respuesta del LLM',
moreFillTip: 'Mostrando un máximo de 10 niveles de anidación',
modelNotSupportedTip: 'El modelo actual no admite esta función y se degrada automáticamente a inyección de comandos.',
structuredTip: 'Las Salidas Estructuradas son una función que garantiza que el modelo siempre generará respuestas que se ajusten a su esquema JSON proporcionado.',
modelNotSupported: 'Modelo no soportado',
structured: 'sistemático',
},
accessItemsDescription: {
anyone: 'Cualquiera puede acceder a la aplicación web.',
specific: 'Solo grupos o miembros específicos pueden acceder a la aplicación web',
organization: 'Cualquiera en la organización puede acceder a la aplicación web',
external: 'Solo los usuarios externos autenticados pueden acceder a la aplicación web.',
},
accessControlDialog: {
accessItems: {
anyone: 'Cualquiera con el enlace',
specific: 'Grupos o miembros específicos',
organization: 'Solo miembros dentro de la empresa',
external: 'Usuarios externos autenticados',
},
operateGroupAndMember: {
searchPlaceholder: 'Buscar grupos y miembros',
allMembers: 'Todos los miembros',
expand: 'Expandir',
noResult: 'Sin resultado',
},
title: 'Control de Acceso a la Aplicación Web',
description: 'Establecer permisos de acceso a la aplicación web',
accessLabel: '¿Quién tiene acceso?',
groups_one: '{{count}} GRUPO',
groups_other: '{{count}} GRUPOS',
members_one: '{{count}} MIEMBRO',
members_other: '{{count}} MIEMBROS',
noGroupsOrMembers: 'No grupos o miembros seleccionados',
webAppSSONotEnabledTip: 'Por favor, contacte al administrador de la empresa para configurar el método de autenticación de la aplicación web.',
updateSuccess: 'Actualización exitosa',
},
publishApp: {
title: '¿Quién puede acceder a la aplicación web?',
notSet: 'No establecido',
notSetDesc: 'Actualmente nadie puede acceder a la aplicación web. Por favor, configure los permisos.',
},
accessControl: 'Control de Acceso a la Aplicación Web',
noAccessPermission: 'No se permite el acceso a la aplicación web',
maxActiveRequestsPlaceholder: 'Introduce 0 para ilimitado',
maxActiveRequests: 'Máximas solicitudes concurrentes',
maxActiveRequestsTip: 'Número máximo de solicitudes activas concurrentes por aplicación (0 para ilimitado)',
gotoAnything: {
actions: {
searchApplications: 'Buscar aplicaciones',
searchKnowledgeBasesDesc: 'Busque y navegue por sus bases de conocimiento',
searchWorkflowNodes: 'Buscar nodos de flujo de trabajo',
searchPlugins: 'Buscar complementos',
searchWorkflowNodesDesc: 'Buscar y saltar a nodos en el flujo de trabajo actual por nombre o tipo',
searchKnowledgeBases: 'Buscar en las bases de conocimiento',
searchApplicationsDesc: 'Buscar y navegar a sus aplicaciones',
searchPluginsDesc: 'Busca y navega a tus plugins',
searchWorkflowNodesHelp: 'Esta función solo funciona cuando se visualiza un flujo de trabajo. Primero vaya a un flujo de trabajo.',
languageCategoryTitle: 'Idioma',
runDesc: 'Ejecutar comandos rápidos (tema, idioma, ...)',
runTitle: 'Comandos',
themeSystem: 'Tema del sistema',
themeDark: 'Tema oscuro',
themeLight: 'Tema Claro',
themeCategoryTitle: 'Tema',
themeLightDesc: 'Usar apariencia clara',
themeSystemDesc: 'Sigue la apariencia de tu sistema operativo',
languageChangeDesc: 'Cambiar el idioma de la interfaz',
themeDarkDesc: 'Usar apariencia oscura',
languageCategoryDesc: 'Cambiar el idioma de la interfaz',
themeCategoryDesc: 'Cambiar el tema de la aplicación',
slashDesc: 'Ejecuta comandos como /tema, /idioma',
accountDesc: 'Navegar a la página de cuenta',
communityDesc: 'Abrir comunidad de Discord',
feedbackDesc: 'Discusiones de retroalimentación de la comunidad abierta',
docDesc: 'Abrir la documentación de ayuda',
},
emptyState: {
noAppsFound: 'No se encontraron aplicaciones',
noPluginsFound: 'No se encontraron complementos',
noWorkflowNodesFound: 'No se encontraron nodos de flujo de trabajo',
noKnowledgeBasesFound: 'No se han encontrado bases de conocimiento',
tryDifferentTerm: 'Intenta un término de búsqueda diferente o elimina el filtro {{mode}}',
trySpecificSearch: 'Prueba {{shortcuts}} para búsquedas específicas',
},
groups: {
apps: 'Aplicaciones',
workflowNodes: 'Nodos de flujo de trabajo',
knowledgeBases: 'Bases de conocimiento',
plugins: 'Complementos',
commands: 'Comandos',
},
clearToSearchAll: 'Borrar @ para buscar todo',
noResults: 'No se han encontrado resultados',
searching: 'Buscando...',
searchTemporarilyUnavailable: 'La búsqueda no está disponible temporalmente',
searchFailed: 'Error de búsqueda',
useAtForSpecific: 'Use @ para tipos específicos',
searchPlaceholder: 'Busque o escriba @ para los comandos...',
searchTitle: 'Busca cualquier cosa',
someServicesUnavailable: 'Algunos servicios de búsqueda no están disponibles',
servicesUnavailableMessage: 'Algunos servicios de búsqueda pueden estar experimentando problemas. Inténtalo de nuevo en un momento.',
searchHint: 'Empieza a escribir para buscar todo al instante',
commandHint: 'Escriba @ para buscar por categoría',
selectSearchType: 'Elige qué buscar',
resultCount: '{{count}} resultado',
resultCount_other: '{{count}} resultados',
inScope: 'en {{scope}}s',
tryDifferentSearch: 'Prueba con un término de búsqueda diferente',
noMatchingCommands: 'No se encontraron comandos coincidentes',
slashHint: 'Escribe / para ver todos los comandos disponibles',
selectToNavigate: 'Seleccionar para navegar',
pressEscToClose: 'Presiona ESC para cerrar',
startTyping: 'Empieza a escribir para buscar',
tips: 'Presiona ↑↓ para navegar',
},
notPublishedYet: 'La aplicación aún no está publicada',
noUserInputNode: 'Nodo de entrada de usuario faltante',
}
export default translation

View File

@@ -0,0 +1,203 @@
const translation = {
currentPlan: 'Plan Actual',
upgradeBtn: {
plain: 'Actualizar Plan',
encourage: 'Actualizar Ahora',
encourageShort: 'Actualizar',
},
viewBilling: 'Administrar facturación y suscripciones',
buyPermissionDeniedTip: 'Por favor, contacta al administrador de tu empresa para suscribirte',
plansCommon: {
yearlyTip: '¡Obtén 2 meses gratis al suscribirte anualmente!',
mostPopular: 'Más Popular',
planRange: {
monthly: 'Mensual',
yearly: 'Anual',
},
month: 'mes',
year: 'año',
save: 'Ahorra ',
free: 'Gratis',
currentPlan: 'Plan Actual',
contractSales: 'Contactar ventas',
contractOwner: 'Contactar al administrador del equipo',
startForFree: 'Empezar gratis',
contactSales: 'Contactar Ventas',
talkToSales: 'Hablar con Ventas',
modelProviders: 'Proveedores de Modelos',
annotationQuota: 'Cuota de Anotación',
buildApps: 'Crear Aplicaciones',
vectorSpace: 'Espacio Vectorial',
vectorSpaceTooltip: 'El Espacio Vectorial es el sistema de memoria a largo plazo necesario para que los LLMs comprendan tus datos.',
documentProcessingPriority: 'Prioridad de Procesamiento de Documentos',
documentProcessingPriorityUpgrade: 'Procesa más datos con mayor precisión y velocidad.',
priority: {
'standard': 'Estándar',
'priority': 'Prioridad',
'top-priority': 'Prioridad Máxima',
},
logsHistory: 'Historial de Registros',
customTools: 'Herramientas Personalizadas',
unavailable: 'No disponible',
days: 'días',
unlimited: 'Ilimitado',
support: 'Soporte',
supportItems: {
communityForums: 'Foros Comunitarios',
emailSupport: 'Soporte por Correo Electrónico',
priorityEmail: 'Soporte Prioritario por Correo Electrónico y Chat',
logoChange: 'Cambio de Logotipo',
SSOAuthentication: 'Autenticación SSO',
personalizedSupport: 'Soporte Personalizado',
dedicatedAPISupport: 'Soporte API Dedicado',
customIntegration: 'Integración y Soporte Personalizado',
ragAPIRequest: 'Solicitudes API RAG',
bulkUpload: 'Carga Masiva de Documentos',
agentMode: 'Modo Agente',
workflow: 'Flujo de Trabajo',
llmLoadingBalancing: 'Balanceo de Carga LLM',
llmLoadingBalancingTooltip: 'Agrega múltiples claves API a los modelos, evitando efectivamente los límites de velocidad de API.',
},
comingSoon: 'Próximamente',
member: 'Miembro',
memberAfter: 'Miembro',
messageRequest: {
title: 'Créditos de Mensajes',
tooltip: 'Cuotas de invocación de mensajes para varios planes utilizando modelos de OpenAI (excepto gpt4). Los mensajes que excedan el límite utilizarán tu clave API de OpenAI.',
titlePerMonth: '{{count,number}} mensajes/mes',
},
annotatedResponse: {
title: 'Límites de Cuota de Anotación',
tooltip: 'Edición manual y anotación de respuestas proporciona habilidades de respuesta a preguntas personalizadas y de alta calidad para aplicaciones (aplicable solo en aplicaciones de chat).',
},
ragAPIRequestTooltip: 'Se refiere al número de llamadas API que invocan solo las capacidades de procesamiento de base de conocimientos de Dify.',
receiptInfo: 'Solo el propietario del equipo y el administrador del equipo pueden suscribirse y ver la información de facturación.',
priceTip: 'por espacio de trabajo/',
teamMember_one: '{{count, número}} Miembro del Equipo',
getStarted: 'Comenzar',
apiRateLimitUnit: '{{count, número}}',
freeTrialTipSuffix: 'No se requiere tarjeta de crédito',
unlimitedApiRate: 'Sin límite de tasa de API',
apiRateLimit: 'Límite de tasa de API',
documentsTooltip: 'Cuota sobre el número de documentos importados desde la Fuente de Datos del Conocimiento.',
comparePlanAndFeatures: 'Compara planes y características',
cloud: 'Servicio en la nube',
teamMember_other: '{{count,number}} Miembros del equipo',
annualBilling: 'Facturación Anual',
self: 'Autoalojado',
freeTrialTip: 'prueba gratuita de 200 llamadas de OpenAI.',
teamWorkspace: '{{count,number}} Espacio de Trabajo en Equipo',
documents: '{{count,number}} Documentos de Conocimiento',
documentsRequestQuota: '{{count,number}}/min Límite de tasa de solicitud de conocimiento',
freeTrialTipPrefix: 'Regístrate y obtén un',
apiRateLimitTooltip: 'El límite de tasa de la API se aplica a todas las solicitudes realizadas a través de la API de Dify, incluidos la generación de texto, las conversaciones de chat, las ejecuciones de flujo de trabajo y el procesamiento de documentos.',
documentsRequestQuotaTooltip: 'Especifica el número total de acciones que un espacio de trabajo puede realizar por minuto dentro de la base de conocimientos, incluyendo la creación, eliminación, actualización de conjuntos de datos, carga de documentos, modificaciones, archivo y consultas a la base de conocimientos. Esta métrica se utiliza para evaluar el rendimiento de las solicitudes a la base de conocimientos. Por ejemplo, si un usuario de Sandbox realiza 10 pruebas consecutivas en un minuto, su espacio de trabajo será temporalmente restringido de realizar las siguientes acciones durante el siguiente minuto: creación de conjuntos de datos, eliminación, actualizaciones y carga o modificaciones de documentos.',
startBuilding: 'Empezar a construir',
taxTip: 'Todos los precios de suscripción (mensuales/anuales) excluyen los impuestos aplicables (por ejemplo, IVA, impuesto sobre ventas).',
taxTipSecond: 'Si su región no tiene requisitos fiscales aplicables, no se mostrará ningún impuesto en su pago y no se le cobrará ninguna tarifa adicional durante todo el período de suscripción.',
triggerEvents: {
unlimited: 'Eventos de Disparo Ilimitados',
tooltip: 'El número de eventos que inician automáticamente flujos de trabajo mediante desencadenadores de Plugin, Programación o Webhook.',
sandbox: '{{count,number}} Eventos de activación',
professional: '{{count,number}} Eventos activadores/mes',
},
workflowExecution: {
tooltip: 'Prioridad y velocidad de la cola de ejecución de flujos de trabajo.',
standard: 'Ejecución estándar del flujo de trabajo',
priority: 'Ejecución de flujo de trabajo prioritaria',
faster: 'Ejecución de flujo de trabajo más rápida',
},
startNodes: {
unlimited: 'Disparadores/flujo de trabajo ilimitados',
limited: 'Hasta {{count}} Disparadores/flujo de trabajo',
},
title: {
plans: 'planes',
description: 'Selecciona el plan que mejor se adapte a las necesidades de tu equipo.',
},
},
plans: {
sandbox: {
name: 'Sandbox',
description: 'Prueba gratuita de 200 veces GPT',
for: 'Prueba gratuita de capacidades básicas',
},
professional: {
name: 'Profesional',
description: 'Para individuos y pequeños equipos que desean desbloquear más poder de manera asequible.',
for: 'Para desarrolladores independientes/equipos pequeños',
},
team: {
name: 'Equipo',
description: 'Colabora sin límites y disfruta de un rendimiento de primera categoría.',
for: 'Para equipos de tamaño mediano',
},
enterprise: {
name: 'Empresa',
description: 'Obtén capacidades completas y soporte para sistemas críticos a gran escala.',
includesTitle: 'Todo en el plan Equipo, más:',
btnText: 'Contactar ventas',
for: 'Para equipos de gran tamaño',
price: 'Personalizado',
priceTip: 'Facturación Anual Solo',
features: ['Soluciones de Despliegue Escalables de Nivel Empresarial', 'Autorización de Licencia Comercial', 'Funciones Exclusivas para Empresas', 'Múltiples espacios de trabajo y gestión empresarial', 'SSO', 'Acuerdos de nivel de servicio negociados por socios de Dify', 'Seguridad y Controles Avanzados', 'Actualizaciones y Mantenimiento por Dify Oficialmente', 'Soporte Técnico Profesional'],
},
community: {
includesTitle: 'Características gratuitas:',
for: 'Para usuarios individuales, pequeños equipos o proyectos no comerciales',
price: 'Gratis',
btnText: 'Comienza con la Comunidad',
name: 'Comunidad',
description: 'Para usuarios individuales, pequeños equipos o proyectos no comerciales',
features: ['Todas las características principales se publican en el repositorio público', 'Espacio de trabajo único', 'Cumple con la Licencia de Código Abierto de Dify'],
},
premium: {
description: 'Para organizaciones y equipos de tamaño mediano',
comingSoon: 'Soporte de Microsoft Azure y Google Cloud disponible próximamente',
btnText: 'Obtén Premium en',
priceTip: 'Basado en el Mercado de la Nube',
price: 'Escalable',
includesTitle: 'Todo de Community, además:',
name: 'Premium',
for: 'Para organizaciones y equipos de tamaño mediano',
features: ['Confiabilidad autogestionada por varios proveedores de la nube', 'Espacio de trabajo único', 'Personalización de Logotipo y Marca de la Aplicación Web', 'Soporte prioritario por correo electrónico y chat'],
},
},
vectorSpace: {
fullTip: 'El Espacio Vectorial está lleno.',
fullSolution: 'Actualiza tu plan para obtener más espacio.',
},
apps: {
fullTip1des: 'Has alcanzado el límite de aplicaciones de construcción en este plan',
fullTip2des: 'Se recomienda limpiar las aplicaciones inactivas para liberar espacio de uso, o contactarnos.',
fullTip1: 'Actualiza para crear más aplicaciones',
fullTip2: 'Límite de plan alcanzado',
contactUs: 'Contáctanos',
},
annotatedResponse: {
fullTipLine1: 'Actualiza tu plan para',
fullTipLine2: 'anotar más conversaciones.',
quotaTitle: 'Cuota de Respuesta Anotada',
},
usagePage: {
buildApps: 'Construir aplicaciones',
documentsUploadQuota: 'Cuota de carga de documentos',
vectorSpace: 'Almacenamiento de Datos de Conocimiento',
teamMembers: 'Miembros del equipo',
annotationQuota: 'Cuota de anotación',
vectorSpaceTooltip: 'Los documentos con el modo de indexación de alta calidad consumirán recursos de Almacenamiento de Datos de Conocimiento. Cuando el Almacenamiento de Datos de Conocimiento alcanza el límite, no se subirán nuevos documentos.',
triggerEvents: 'Eventos desencadenantes',
perMonth: 'por mes',
resetsIn: 'Se reinicia en {{count,number}} días',
},
teamMembers: 'Miembros del equipo',
triggerLimitModal: {
dismiss: 'Descartar',
upgrade: 'Actualizar',
usageTitle: 'EVENTOS DESENCADENANTES',
title: 'Actualiza para desbloquear más eventos desencadenantes',
description: 'Has alcanzado el límite de activadores de eventos de flujo de trabajo para este plan.',
},
}
export default translation

View File

@@ -0,0 +1,788 @@
const translation = {
api: {
success: 'Éxito',
actionSuccess: 'Acción exitosa',
saved: 'Guardado',
create: 'Creado',
remove: 'Eliminado',
},
operation: {
create: 'Crear',
confirm: 'Confirmar',
cancel: 'Cancelar',
clear: 'Limpiar',
save: 'Guardar',
saveAndEnable: 'Guardar y habilitar',
edit: 'Editar',
add: 'Agregar',
added: 'Agregado',
refresh: 'Reiniciar',
reset: 'Restablecer',
search: 'Buscar',
change: 'Cambiar',
remove: 'Eliminar',
send: 'Enviar',
copy: 'Copiar',
lineBreak: 'Salto de línea',
sure: 'Estoy seguro',
download: 'Descargar',
delete: 'Eliminar',
settings: 'Configuraciones',
setup: 'Configurar',
getForFree: 'Obtener gratis',
reload: 'Recargar',
ok: 'OK',
log: 'Registro',
learnMore: 'Aprender más',
params: 'Parámetros',
duplicate: 'Duplicar',
rename: 'Renombrar',
audioSourceUnavailable: 'AudioSource no está disponible',
zoomOut: 'Alejar',
zoomIn: 'Acercar',
openInNewTab: 'Abrir en una nueva pestaña',
copyImage: 'Copiar imagen',
viewMore: 'VER MÁS',
regenerate: 'Regenerar',
close: 'Cerrar',
saveAndRegenerate: 'Guardar y regenerar fragmentos secundarios',
view: 'Vista',
submit: 'Enviar',
skip: 'Navío',
imageCopied: 'Imagen copiada',
deleteApp: 'Eliminar aplicación',
in: 'en',
viewDetails: 'Ver detalles',
copied: 'Copiado',
more: 'Más',
downloadSuccess: 'Descarga completada.',
downloadFailed: 'La descarga ha fallado. Por favor, inténtalo de nuevo más tarde.',
format: 'Formato',
deSelectAll: 'Deseleccionar todo',
selectAll: 'Seleccionar todo',
config: 'Config',
confirmAction: 'Por favor, confirme su acción.',
deleteConfirmTitle: '¿Eliminar?',
yes: 'Sí',
no: 'No',
noSearchResults: 'No se encontraron {{content}}',
resetKeywords: 'Restablecer palabras clave',
selectCount: '{{count}} Seleccionado',
searchCount: 'Encuentra {{count}} {{content}}',
noSearchCount: '0 {{content}}',
now: 'Ahora',
},
errorMsg: {
fieldRequired: '{{field}} es requerido',
urlError: 'la URL debe comenzar con http:// o https://',
},
placeholder: {
input: 'Por favor ingresa',
select: 'Por favor selecciona',
search: 'Buscar...',
},
voice: {
language: {
zhHans: 'Chino',
zhHant: 'Chino Tradicional',
enUS: 'Inglés',
deDE: 'Alemán',
frFR: 'Francés',
esES: 'Español',
itIT: 'Italiano',
thTH: 'Tailandés',
idID: 'Indonesio',
jaJP: 'Japonés',
koKR: 'Coreano',
ptBR: 'Portugués',
ruRU: 'Ruso',
ukUA: 'Ucraniano',
viVN: 'Vietnamita',
plPL: 'Polaco',
roRO: 'Rumano',
hiIN: 'Hindi',
trTR: 'Turco',
faIR: 'Persa',
},
},
unit: {
char: 'caracteres',
},
actionMsg: {
noModification: 'No hay modificaciones en este momento.',
modifiedSuccessfully: 'Modificado exitosamente',
modifiedUnsuccessfully: 'Modificación no exitosa',
copySuccessfully: 'Copiado exitosamente',
paySucceeded: 'Pago exitoso',
payCancelled: 'Pago cancelado',
generatedSuccessfully: 'Generado exitosamente',
generatedUnsuccessfully: 'Generación no exitosa',
},
model: {
params: {
temperature: 'Temperatura',
temperatureTip:
'Controla la aleatoriedad: Reducir resulta en completaciones menos aleatorias. A medida que la temperatura se acerca a cero, el modelo se vuelve determinista y repetitivo.',
top_p: 'Top P',
top_pTip:
'Controla la diversidad mediante el muestreo de núcleo: 0.5 significa que se consideran la mitad de todas las opciones ponderadas por probabilidad.',
presence_penalty: 'Penalización por presencia',
presence_penaltyTip:
'Cuánto penalizar los nuevos tokens según si aparecen en el texto hasta ahora.\nAumenta la probabilidad del modelo de hablar sobre nuevos temas.',
frequency_penalty: 'Penalización por frecuencia',
frequency_penaltyTip:
'Cuánto penalizar los nuevos tokens según su frecuencia existente en el texto hasta ahora.\nDisminuye la probabilidad del modelo de repetir la misma línea literalmente.',
max_tokens: 'Tokens máximos',
max_tokensTip:
'Se usa para limitar la longitud máxima de la respuesta, en tokens. \nValores más grandes pueden limitar el espacio disponible para palabras de indicación, registros de chat y Conocimiento. \nSe recomienda configurarlo por debajo de dos tercios\ngpt-4-1106-preview, gpt-4-vision-preview tokens máximos (entrada 128k salida 4k)',
maxTokenSettingTip: 'Tu configuración de tokens máximos es alta, lo que puede limitar el espacio para indicaciones, consultas y datos. Considera configurarlo por debajo de 2/3.',
setToCurrentModelMaxTokenTip: 'Tokens máximos actualizados al 80% del máximo de tokens del modelo actual {{maxToken}}.',
stop_sequences: 'Secuencias de parada',
stop_sequencesTip: 'Hasta cuatro secuencias donde la API dejará de generar más tokens. El texto devuelto no contendrá la secuencia de parada.',
stop_sequencesPlaceholder: 'Ingresa la secuencia y presiona Tab',
},
tone: {
Creative: 'Creativo',
Balanced: 'Equilibrado',
Precise: 'Preciso',
Custom: 'Personalizado',
},
addMoreModel: 'Ir a configuraciones para agregar más modelos',
capabilities: 'Capacidades multimodales',
settingsLink: 'Configuración del proveedor de modelos',
},
menus: {
status: 'beta',
explore: 'Explorar',
apps: 'Estudio',
plugins: 'Plugins',
pluginsTips: 'Integrar plugins de terceros o crear Plugins AI compatibles con ChatGPT.',
datasets: 'Conocimiento',
datasetsTips: 'PRÓXIMAMENTE: Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para la mejora del contexto LLM.',
newApp: 'Nueva App',
newDataset: 'Crear Conocimiento',
tools: 'Herramientas',
exploreMarketplace: 'Explora el mercado',
appDetail: 'Detalles de la aplicación',
account: 'Cuenta',
},
userProfile: {
settings: 'Configuraciones',
emailSupport: 'Soporte de Correo Electrónico',
workspace: 'Espacio de trabajo',
createWorkspace: 'Crear espacio de trabajo',
helpCenter: 'Ayuda',
roadmap: 'Hoja de ruta',
community: 'Comunidad',
about: 'Acerca de',
logout: 'Cerrar sesión',
support: 'Apoyo',
compliance: 'Cumplimiento',
github: 'GitHub',
contactUs: 'Contáctenos',
forum: 'Foro',
},
settings: {
accountGroup: 'CUENTA',
workplaceGroup: 'ESPACIO DE TRABAJO',
account: 'Mi cuenta',
members: 'Miembros',
billing: 'Facturación',
integrations: 'Integraciones',
language: 'Idioma',
provider: 'Proveedor de Modelo',
dataSource: 'Fuente de Datos',
plugin: 'Plugins',
apiBasedExtension: 'Extensión basada en API',
generalGroup: 'GENERAL',
},
account: {
avatar: 'Avatar',
name: 'Nombre',
email: 'Correo electrónico',
password: 'Contraseña',
passwordTip: 'Puedes establecer una contraseña permanente si no deseas usar códigos de inicio de sesión temporales',
setPassword: 'Establecer una contraseña',
resetPassword: 'Restablecer contraseña',
currentPassword: 'Contraseña actual',
newPassword: 'Nueva contraseña',
confirmPassword: 'Confirmar contraseña',
notEqual: 'Las dos contraseñas son diferentes.',
langGeniusAccount: 'Cuenta Dify',
langGeniusAccountTip: 'Tu cuenta Dify y los datos de usuario asociados.',
editName: 'Editar Nombre',
showAppLength: 'Mostrar {{length}} apps',
delete: 'Eliminar cuenta',
deleteTip: 'Eliminar tu cuenta borrará permanentemente todos tus datos y no se podrán recuperar.',
account: 'Cuenta',
myAccount: 'Mi Cuenta',
studio: 'Estudio Dify',
deletePrivacyLinkTip: 'Para obtener más información sobre cómo manejamos sus datos, consulte nuestra',
deletePrivacyLink: 'Política de privacidad.',
deleteSuccessTip: 'Su cuenta necesita tiempo para terminar de eliminarse. Te enviaremos un correo electrónico cuando todo esté listo.',
deleteLabel: 'Para confirmar, escriba su correo electrónico a continuación',
deletePlaceholder: 'Por favor, introduzca su correo electrónico',
sendVerificationButton: 'Enviar código de verificación',
verificationLabel: 'Código de verificación',
verificationPlaceholder: 'Pega el código de 6 dígitos',
permanentlyDeleteButton: 'Eliminar cuenta de forma permanente',
feedbackTitle: 'Retroalimentación',
feedbackLabel: '¿Cuéntanos por qué eliminaste tu cuenta?',
feedbackPlaceholder: 'Opcional',
workspaceIcon: 'Icono de espacio de trabajo',
editWorkspaceInfo: 'Editar información del espacio de trabajo',
workspaceName: 'Nombre del espacio de trabajo',
changeEmail: {
continue: 'Continuar',
content3: 'Introduce un nuevo correo electrónico y te enviaremos un código de verificación.',
emailPlaceholder: 'Introduce un nuevo correo electrónico',
emailLabel: 'Nuevo correo electrónico',
sendVerifyCode: 'Enviar código de verificación',
changeTo: 'Cambia a {{email}}',
resendTip: '¿No recibiste un código?',
codePlaceholder: 'Pegue el código de 6 dígitos',
content4: 'Acabamos de enviarte un código de verificación temporal a <email>{{email}}</email>.',
newEmail: 'Configura una nueva dirección de correo electrónico',
resend: 'Reenviar',
resendCount: 'Reenviar en {{count}}s',
content2: 'Tu correo electrónico actual es <email>{{email}}</email>. Se ha enviado un código de verificación a esta dirección de correo electrónico.',
content1: 'Si continúas, enviaremos un código de verificación a <email>{{email}}</email> para la reautenticación.',
title: 'Cambiar Correo Electrónico',
verifyEmail: 'Verifica tu correo electrónico actual',
existingEmail: 'Ya existe un usuario con este correo electrónico.',
verifyNew: 'Verifica tu nuevo correo electrónico',
codeLabel: 'Código de verificación',
authTip: 'Una vez que tu correo electrónico sea cambiado, las cuentas de Google o GitHub vinculadas a tu antiguo correo electrónico ya no podrán iniciar sesión en esta cuenta.',
unAvailableEmail: 'Este correo electrónico no está disponible temporalmente.',
},
},
members: {
team: 'Equipo',
invite: 'Agregar',
name: 'NOMBRE',
lastActive: 'ÚLTIMA ACTIVIDAD',
role: 'ROLES',
pending: 'Pendiente...',
owner: 'Propietario',
admin: 'Administrador',
adminTip: 'Puede crear aplicaciones y administrar configuraciones del equipo',
normal: 'Normal',
normalTip: 'Solo puede usar aplicaciones, no puede crear aplicaciones',
builder: 'Constructor',
builderTip: 'Puede crear y editar sus propias aplicaciones',
editor: 'Editor',
editorTip: 'Puede crear y editar aplicaciones',
datasetOperator: 'Administrador de Conocimiento',
datasetOperatorTip: 'Solo puede administrar la base de conocimiento',
inviteTeamMember: 'Agregar miembro del equipo',
inviteTeamMemberTip: 'Pueden acceder a tus datos del equipo directamente después de iniciar sesión.',
emailNotSetup: 'El servidor de correo no está configurado, por lo que no se pueden enviar correos de invitación. En su lugar, notifique a los usuarios el enlace de invitación que se emitirá después de la invitación.',
email: 'Correo electrónico',
emailInvalid: 'Formato de correo electrónico inválido',
emailPlaceholder: 'Por favor ingresa correos electrónicos',
sendInvite: 'Enviar invitación',
invitedAsRole: 'Invitado como usuario {{role}}',
invitationSent: 'Invitación enviada',
invitationSentTip: 'Invitación enviada, y pueden iniciar sesión en Dify para acceder a tus datos del equipo.',
invitationLink: 'Enlace de invitación',
failedInvitationEmails: 'Los siguientes usuarios no fueron invitados exitosamente',
ok: 'OK',
removeFromTeam: 'Eliminar del espacio de trabajo',
removeFromTeamTip: 'Se eliminará el acceso al equipo',
setAdmin: 'Establecer como administrador',
setMember: 'Establecer como miembro ordinario',
setBuilder: 'Establecer como constructor',
setEditor: 'Establecer como editor',
disInvite: 'Cancelar la invitación',
deleteMember: 'Eliminar miembro',
you: '(Tú)',
transferModal: {
continue: 'Continuar',
codeLabel: 'Código de verificación',
verifyEmail: 'Verifica tu correo electrónico actual',
transfer: 'Transferir la propiedad del espacio de trabajo',
transferPlaceholder: 'Selecciona un miembro del espacio de trabajo...',
verifyContent: 'Tu correo electrónico actual es <email>{{email}}</email>.',
resendCount: 'Reenviar en {{count}}s',
resendTip: '¿No recibiste un código?',
sendVerifyCode: 'Enviar código de verificación',
title: 'Transferir la propiedad del espacio de trabajo',
verifyContent2: 'Enviaremos un código de verificación temporal a este correo electrónico para la re-autenticación.',
transferLabel: 'Transferir la propiedad del espacio de trabajo a',
resend: 'Reenviar',
sendTip: 'Si continúas, enviaremos un código de verificación a <email>{{email}}</email> para la reautenticación.',
warningTip: 'Te convertirás en un miembro administrador, y el nuevo propietario tendrá el control total.',
codePlaceholder: 'Pegue el código de 6 dígitos',
warning: 'Estás a punto de transferir la propiedad de “{{workspace}}”. Esto tendrá efecto inmediato y no se puede deshacer.',
},
transferOwnership: 'Transferir propiedad',
},
integrations: {
connected: 'Conectado',
google: 'Google',
googleAccount: 'Iniciar sesión con cuenta de Google',
github: 'GitHub',
githubAccount: 'Iniciar sesión con cuenta de GitHub',
connect: 'Conectar',
},
language: {
displayLanguage: 'Idioma de visualización',
timezone: 'Zona horaria',
},
provider: {
apiKey: 'Clave API',
enterYourKey: 'Ingresa tu clave API aquí',
invalidKey: 'Clave API de OpenAI inválida',
validatedError: 'Validación fallida: ',
validating: 'Validando clave...',
saveFailed: 'Error al guardar la clave API',
apiKeyExceedBill: 'Esta CLAVE API no tiene cuota disponible, por favor lee',
addKey: 'Agregar Clave',
comingSoon: 'Próximamente',
editKey: 'Editar',
invalidApiKey: 'Clave API inválida',
azure: {
apiBase: 'Base API',
apiBasePlaceholder: 'La URL base de la API de tu Endpoint de Azure OpenAI.',
apiKey: 'Clave API',
apiKeyPlaceholder: 'Ingresa tu clave API aquí',
helpTip: 'Aprender sobre el Servicio Azure OpenAI',
},
openaiHosted: {
openaiHosted: 'OpenAI Hospedado',
onTrial: 'EN PRUEBA',
exhausted: 'CUOTA AGOTADA',
desc: 'El servicio de hospedaje OpenAI proporcionado por Dify te permite usar modelos como GPT-3.5. Antes de que se agote tu cuota de prueba, necesitas configurar otros proveedores de modelos.',
callTimes: 'Tiempos de llamada',
usedUp: 'Cuota de prueba agotada. Agrega tu propio proveedor de modelos.',
useYourModel: 'Actualmente usando tu propio proveedor de modelos.',
close: 'Cerrar',
},
anthropicHosted: {
anthropicHosted: 'Claude de Anthropíc',
onTrial: 'EN PRUEBA',
exhausted: 'CUOTA AGOTADA',
desc: 'Modelo poderoso, que se destaca en una amplia gama de tareas, desde diálogos sofisticados y generación de contenido creativo hasta instrucciones detalladas.',
callTimes: 'Tiempos de llamada',
usedUp: 'Cuota de prueba agotada. Agrega tu propio proveedor de modelos.',
useYourModel: 'Actualmente usando tu propio proveedor de modelos.',
close: 'Cerrar',
trialQuotaTip: 'Su cuota de prueba antrópica caducará el 11/03/2025 y ya no estará disponible a partir de entonces. Por favor, aprovéchelo a tiempo.',
},
anthropic: {
using: 'La capacidad de incrustación está usando',
enableTip: 'Para habilitar el modelo de Anthropíc, primero necesitas vincularte al Servicio OpenAI o Azure OpenAI.',
notEnabled: 'No habilitado',
keyFrom: 'Obtén tu clave API de Anthropíc',
},
encrypted: {
front: 'Tu CLAVE API será encriptada y almacenada usando',
back: ' tecnología.',
},
},
modelProvider: {
notConfigured: 'El modelo del sistema aún no ha sido completamente configurado, y algunas funciones pueden no estar disponibles.',
systemModelSettings: 'Configuraciones del Modelo del Sistema',
systemModelSettingsLink: '¿Por qué es necesario configurar un modelo del sistema?',
selectModel: 'Selecciona tu modelo',
setupModelFirst: 'Por favor configura tu modelo primero',
systemReasoningModel: {
key: 'Modelo de Razonamiento del Sistema',
tip: 'Establece el modelo de inferencia predeterminado para ser usado en la creación de aplicaciones, así como características como la generación de nombres de diálogo y sugerencias de la próxima pregunta también usarán el modelo de inferencia predeterminado.',
},
embeddingModel: {
key: 'Modelo de Incrustación',
tip: 'Establece el modelo predeterminado para el procesamiento de incrustación de documentos del Conocimiento, tanto la recuperación como la importación del Conocimiento utilizan este modelo de Incrustación para el procesamiento de vectorización. Cambiarlo causará que la dimensión del vector entre el Conocimiento importado y la pregunta sea inconsistente, resultando en fallos en la recuperación. Para evitar fallos en la recuperación, por favor no cambies este modelo a voluntad.',
required: 'El Modelo de Incrustación es requerido',
},
speechToTextModel: {
key: 'Modelo de Voz a Texto',
tip: 'Establece el modelo predeterminado para la entrada de voz a texto en la conversación.',
},
ttsModel: {
key: 'Modelo de Texto a Voz',
tip: 'Establece el modelo predeterminado para la entrada de texto a voz en la conversación.',
},
rerankModel: {
key: 'Modelo de Reordenar',
tip: 'El modelo de reordenar reordenará la lista de documentos candidatos basada en la coincidencia semántica con la consulta del usuario, mejorando los resultados de clasificación semántica',
},
apiKey: 'CLAVE API',
quota: 'Cuota',
searchModel: 'Modelo de búsqueda',
noModelFound: 'No se encontró modelo para {{model}}',
models: 'Modelos',
showMoreModelProvider: 'Mostrar más proveedores de modelos',
selector: {
tip: 'Este modelo ha sido eliminado. Por favor agrega un modelo o selecciona otro modelo.',
emptyTip: 'No hay modelos disponibles',
emptySetting: 'Por favor ve a configuraciones para configurar',
rerankTip: 'Por favor configura el modelo de Reordenar',
},
card: {
quota: 'CUOTA',
onTrial: 'En prueba',
paid: 'Pagado',
quotaExhausted: 'Cuota agotada',
callTimes: 'Tiempos de llamada',
tokens: 'Tokens',
buyQuota: 'Comprar Cuota',
priorityUse: 'Uso prioritario',
removeKey: 'Eliminar CLAVE API',
tip: 'Se dará prioridad al uso de la cuota pagada. La cuota de prueba se utilizará después de que se agote la cuota pagada.',
},
item: {
deleteDesc: '{{modelName}} se está utilizando como modelo de razonamiento del sistema. Algunas funciones no estarán disponibles después de la eliminación. Por favor confirma.',
freeQuota: 'CUOTA GRATUITA',
},
addApiKey: 'Agrega tu CLAVE API',
invalidApiKey: 'Clave API inválida',
encrypted: {
front: 'Tu CLAVE API será encriptada y almacenada usando',
back: ' tecnología.',
},
freeQuota: {
howToEarn: 'Cómo ganar',
},
addMoreModelProvider: 'AGREGAR MÁS PROVEEDORES DE MODELOS',
addModel: 'Agregar Modelo',
modelsNum: '{{num}} Modelos',
showModels: 'Mostrar Modelos',
showModelsNum: 'Mostrar {{num}} Modelos',
collapse: 'Colapsar',
config: 'Configurar',
modelAndParameters: 'Modelo y Parámetros',
model: 'Modelo',
featureSupported: '{{feature}} soportado',
callTimes: 'Tiempos de llamada',
credits: 'Créditos de Mensaje',
buyQuota: 'Comprar Cuota',
getFreeTokens: 'Obtener Tokens gratis',
priorityUsing: 'Uso prioritario',
deprecated: 'Desaprobado',
confirmDelete: '¿Confirmar eliminación?',
quotaTip: 'Tokens gratuitos restantes disponibles',
loadPresets: 'Cargar Presets',
parameters: 'PARÁMETROS',
loadBalancing: 'Balanceo de carga',
loadBalancingDescription: 'Reduce la presión con múltiples conjuntos de credenciales.',
loadBalancingHeadline: 'Balanceo de Carga',
configLoadBalancing: 'Configurar Balanceo de Carga',
modelHasBeenDeprecated: 'Este modelo ha sido desaprobado',
providerManaged: 'Gestionado por el proveedor',
providerManagedDescription: 'Usa el único conjunto de credenciales proporcionado por el proveedor del modelo.',
defaultConfig: 'Configuración Predeterminada',
apiKeyStatusNormal: 'El estado de la CLAVE API es normal',
apiKeyRateLimit: 'Se alcanzó el límite de velocidad, disponible después de {{seconds}}s',
addConfig: 'Agregar Configuración',
editConfig: 'Editar Configuración',
loadBalancingLeastKeyWarning: 'Para habilitar el balanceo de carga se deben habilitar al menos 2 claves.',
loadBalancingInfo: 'Por defecto, el balanceo de carga usa la estrategia Round-robin. Si se activa el límite de velocidad, se aplicará un período de enfriamiento de 1 minuto.',
upgradeForLoadBalancing: 'Actualiza tu plan para habilitar el Balanceo de Carga.',
configureTip: 'Configurar la clave de API o agregar el modelo que se va a usar',
discoverMore: 'Descubre más en',
toBeConfigured: 'A configurar',
emptyProviderTip: 'Instale primero un proveedor de modelos.',
installProvider: 'Instalación de proveedores de modelos',
emptyProviderTitle: 'Proveedor de modelos no configurado',
auth: {
apiKeyModal: {
addModel: 'Agregar modelo',
title: 'Configuración de Autorización de Clave API',
desc: 'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar este modelo al orquestar aplicaciones.',
},
configModel: 'Modelo de configuración',
authorizationError: 'Error de autorización',
specifyModelCredential: 'Especificar las credenciales del modelo',
addModelCredential: 'Agregar credenciales del modelo',
authRemoved: 'Autorización retirada',
unAuthorized: 'No autorizado',
addApiKey: 'Agregar clave API',
apiKeys: 'Claves de API',
providerManagedTip: 'La configuración actual es hospedada por el proveedor.',
providerManaged: 'Proveedor gestionado',
specifyModelCredentialTip: 'Utiliza una credencial de modelo configurada.',
addNewModel: 'Agregar nuevo modelo',
modelCredentials: 'Credenciales del modelo',
addCredential: 'Agregar credencial',
configLoadBalancing: 'Configuración de balanceo de carga',
modelCredential: 'Credencial modelo',
selectModelCredential: 'Seleccione una credencial de modelo',
addModel: 'Agregar modelo',
removeModel: 'Eliminar modelo',
customModelCredentials: 'Credenciales de modelo personalizadas',
addNewModelCredential: 'Agregar nueva credencial de modelo',
manageCredentials: 'Administrar credenciales',
customModelCredentialsDeleteTip: 'La credencial está en uso y no se puede eliminar',
editModelCredential: 'Editar credencial de modelo',
},
parametersInvalidRemoved: 'Algunos parámetros son inválidos y han sido eliminados',
installDataSourceProvider: 'Instalar proveedores de fuentes de datos',
},
dataSource: {
add: 'Agregar una fuente de datos',
connect: 'Conectar',
configure: 'Configurar',
notion: {
title: 'Notion',
description: 'Usando Notion como fuente de datos para el Conocimiento.',
connectedWorkspace: 'Espacio de trabajo conectado',
addWorkspace: 'Agregar espacio de trabajo',
connected: 'Conectado',
disconnected: 'Desconectado',
changeAuthorizedPages: 'Cambiar páginas autorizadas',
pagesAuthorized: 'Páginas autorizadas',
sync: 'Sincronizar',
remove: 'Eliminar',
selector: {
pageSelected: 'Páginas seleccionadas',
searchPages: 'Buscar páginas...',
noSearchResult: 'No hay resultados de búsqueda',
addPages: 'Agregar páginas',
preview: 'VISTA PREVIA',
},
integratedAlert: 'Notion está integrado a través de credenciales internas, no es necesario volver a autorizar.',
},
website: {
title: 'Sitio web',
description: 'Importar contenido de sitios web usando un rastreador web.',
with: 'Con',
configuredCrawlers: 'Rastreadores configurados',
active: 'Activo',
inactive: 'Inactivo',
},
},
plugin: {
serpapi: {
apiKey: 'Clave API',
apiKeyPlaceholder: 'Ingresa tu clave API',
keyFrom: 'Obtén tu clave API de SerpAPI en la página de cuenta de SerpAPI',
},
},
apiBasedExtension: {
title: 'Las extensiones basadas en API proporcionan una gestión centralizada de API, simplificando la configuración para su fácil uso en las aplicaciones de Dify.',
link: 'Aprende cómo desarrollar tu propia Extensión API.',
add: 'Agregar Extensión API',
selector: {
title: 'Extensión API',
placeholder: 'Por favor selecciona extensión API',
manage: 'Gestionar Extensión API',
},
modal: {
title: 'Agregar Extensión API',
editTitle: 'Editar Extensión API',
name: {
title: 'Nombre',
placeholder: 'Por favor ingresa el nombre',
},
apiEndpoint: {
title: 'Punto final de la API',
placeholder: 'Por favor ingresa el punto final de la API',
},
apiKey: {
title: 'Clave API',
placeholder: 'Por favor ingresa la clave API',
lengthError: 'La longitud de la clave API no puede ser menor a 5 caracteres',
},
},
type: 'Tipo',
},
about: {
changeLog: 'Registro de cambios',
updateNow: 'Actualizar ahora',
nowAvailable: 'Dify {{version}} ya está disponible.',
latestAvailable: 'Dify {{version}} es la última versión disponible.',
},
appMenus: {
overview: 'Monitoreo',
promptEng: 'Orquestar',
apiAccess: 'Acceso API',
logAndAnn: 'Registros y Anuncios',
logs: 'Registros',
},
environment: {
testing: 'PRUEBAS',
development: 'DESARROLLO',
},
appModes: {
completionApp: 'Generador de Texto',
chatApp: 'Aplicación de Chat',
},
datasetMenus: {
documents: 'Documentos',
hitTesting: 'Pruebas de Recuperación',
settings: 'Configuraciones',
emptyTip: 'El Conocimiento no ha sido asociado, por favor ve a la aplicación o plugin para completar la asociación.',
viewDoc: 'Ver documentación',
relatedApp: 'aplicaciones vinculadas',
noRelatedApp: 'No hay aplicaciones vinculadas',
pipeline: 'Tubería',
},
voiceInput: {
speaking: 'Habla ahora...',
converting: 'Convirtiendo a texto...',
notAllow: 'micrófono no autorizado',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Renombrar Conversación',
conversationName: 'Nombre de la conversación',
conversationNamePlaceholder: 'Por favor ingresa el nombre de la conversación',
conversationNameCanNotEmpty: 'Nombre de la conversación requerido',
citation: {
title: 'CITAS',
linkToDataset: 'Enlace al Conocimiento',
characters: 'Caracteres:',
hitCount: 'Conteo de recuperaciones:',
vectorHash: 'Hash de vector:',
hitScore: 'Puntuación de recuperación:',
},
inputPlaceholder: 'Hablar con el {{botName}}',
thinking: 'Pensamiento...',
thought: 'Pensamiento',
resend: 'Reenviar',
},
promptEditor: {
placeholder: 'Escribe tu palabra de indicación aquí, ingresa \'{\' para insertar una variable, ingresa \'/\' para insertar un bloque de contenido de indicación',
context: {
item: {
title: 'Contexto',
desc: 'Insertar plantilla de contexto',
},
modal: {
title: '{{num}} Conocimiento en Contexto',
add: 'Agregar Contexto ',
footer: 'Puedes gestionar contextos en la sección de Contexto abajo.',
},
},
history: {
item: {
title: 'Historial de Conversación',
desc: 'Insertar plantilla de mensaje histórico',
},
modal: {
title: 'EJEMPLO',
user: 'Hola',
assistant: '¡Hola! ¿Cómo puedo asistirte hoy?',
edit: 'Editar Nombres de Roles de Conversación',
},
},
variable: {
item: {
title: 'Variables y Herramientas Externas',
desc: 'Insertar Variables y Herramientas Externas',
},
outputToolDisabledItem: {
title: 'Variables',
desc: 'Insertar Variables',
},
modal: {
add: 'Nueva variable',
addTool: 'Nueva herramienta',
},
},
query: {
item: {
title: 'Consulta',
desc: 'Insertar plantilla de consulta del usuario',
},
},
existed: 'Ya existe en la indicación',
},
imageUploader: {
uploadFromComputer: 'Cargar desde la Computadora',
uploadFromComputerReadError: 'Lectura de imagen fallida, por favor intenta nuevamente.',
uploadFromComputerUploadError: 'Carga de imagen fallida, por favor carga nuevamente.',
uploadFromComputerLimit: 'Las imágenes cargadas no pueden exceder {{size}} MB',
pasteImageLink: 'Pegar enlace de imagen',
pasteImageLinkInputPlaceholder: 'Pega el enlace de imagen aquí',
pasteImageLinkInvalid: 'Enlace de imagen inválido',
imageUpload: 'Carga de Imagen',
},
tag: {
placeholder: 'Todas las Etiquetas',
addNew: 'Agregar nueva etiqueta',
noTag: 'Sin etiquetas',
noTagYet: 'Aún sin etiquetas',
addTag: 'Agregar etiquetas',
editTag: 'Editar etiquetas',
manageTags: 'Gestionar Etiquetas',
selectorPlaceholder: 'Escribe para buscar o crear',
create: 'Crear',
delete: 'Eliminar etiqueta',
deleteTip: 'La etiqueta se está utilizando, ¿eliminarla?',
created: 'Etiqueta creada exitosamente',
failed: 'Creación de etiqueta fallida',
},
fileUploader: {
uploadFromComputer: 'Carga local',
pasteFileLink: 'Pegar enlace de archivo',
uploadFromComputerReadError: 'Error en la lectura del archivo, inténtelo de nuevo.',
uploadFromComputerUploadError: 'Error en la carga del archivo, vuelva a cargarlo.',
pasteFileLinkInvalid: 'Enlace de archivo no válido',
fileExtensionNotSupport: 'Extensión de archivo no compatible',
pasteFileLinkInputPlaceholder: 'Introduzca la URL...',
uploadFromComputerLimit: 'El archivo de carga no puede exceder {{size}}',
fileExtensionBlocked: 'Este tipo de archivo está bloqueado por motivos de seguridad',
},
license: {
expiring: 'Caduca en un día',
expiring_plural: 'Caducando en {{count}} días',
unlimited: 'Ilimitado',
},
pagination: {
perPage: 'Elementos por página',
},
theme: {
auto: 'sistema',
light: 'luz',
theme: 'Tema',
dark: 'noche',
},
compliance: {
iso27001: 'Certificación ISO 27001:2022',
gdpr: 'GDPR DPA',
soc2Type1: 'Informe SOC 2 Tipo I',
sandboxUpgradeTooltip: 'Solo disponible con un plan Profesional o de Equipo.',
professionalUpgradeTooltip: 'Solo disponible con un plan de equipo o superior.',
soc2Type2: 'Informe SOC 2 Tipo II',
},
imageInput: {
supportedFormats: 'Soporta PNG, JPG, JPEG, WEBP y GIF',
browse: 'navegar',
dropImageHere: 'Deja tu imagen aquí, o',
},
you: 'Tú',
avatar: {
deleteTitle: 'Eliminar Avatar',
deleteDescription: '¿Estás seguro de que deseas eliminar tu foto de perfil? Tu cuenta usará el avatar inicial predeterminado.',
},
feedback: {
title: 'Proporcionar retroalimentación',
subtitle: 'Por favor, díganos qué salió mal con esta respuesta.',
placeholder: 'Por favor, describe qué salió mal o cómo podemos mejorar...',
content: 'Contenido de retroalimentación',
},
label: {
optional: '(opcional)',
},
noData: 'Sin datos',
dynamicSelect: {
error: 'Error al cargar las opciones',
noData: 'No hay opciones disponibles',
loading: 'Cargando opciones...',
selected: '{{count}} seleccionado',
},
}
export default translation

View File

@@ -0,0 +1,32 @@
const translation = {
custom: 'Personalización',
upgradeTip: {
prefix: 'Actualiza tu plan para',
suffix: 'personalizar tu marca.',
des: 'Actualiza tu plan para personalizar tu marca',
title: 'Actualiza tu plan',
},
webapp: {
title: 'Personalizar marca de web app',
removeBrand: 'Eliminar Powered by Dify',
changeLogo: 'Cambiar Imagen de Marca Powered by',
changeLogoTip: 'Formato SVG o PNG con un tamaño mínimo de 40x40px',
},
app: {
title: 'Personalizar encabezado de la aplicación',
changeLogoTip: 'Formato SVG o PNG con un tamaño mínimo de 80x80px',
},
upload: 'Subir',
uploading: 'Subiendo',
uploadedFail: 'Error al subir la imagen, por favor vuelve a intentar.',
change: 'Cambiar',
apply: 'Aplicar',
restore: 'Restaurar valores predeterminados',
customize: {
contactUs: ' contáctanos ',
prefix: 'Para personalizar el logotipo de la marca dentro de la aplicación, por favor',
suffix: 'para actualizar a la edición Enterprise.',
},
}
export default translation

View File

@@ -0,0 +1,217 @@
const translation = {
steps: {
header: {
fallbackRoute: 'Conocimiento',
},
one: 'Elegir fuente de datos',
two: 'Preprocesamiento y limpieza de texto',
three: 'Ejecutar y finalizar',
},
error: {
unavailable: 'Este conocimiento no está disponible',
},
firecrawl: {
configFirecrawl: 'Configurar 🔥Firecrawl',
apiKeyPlaceholder: 'Clave de API de firecrawl.dev',
getApiKeyLinkText: 'Obtener tu clave de API de firecrawl.dev',
},
stepOne: {
filePreview: 'Vista previa del archivo',
pagePreview: 'Vista previa de la página',
dataSourceType: {
file: 'Importar desde archivo',
notion: 'Sincronizar desde Notion',
web: 'Sincronizar desde sitio web',
},
uploader: {
title: 'Cargar archivo',
button: 'Arrastre y suelte archivos o carpetas, o',
buttonSingleFile: 'Arrastre y suelte archivo, o',
browse: 'Buscar',
tip: 'Soporta {{supportTypes}}. Máximo {{size}}MB cada uno.',
validation: {
typeError: 'Tipo de archivo no soportado',
size: 'Archivo demasiado grande. El máximo es {{size}}MB',
count: 'No se admiten varios archivos',
filesNumber: 'Has alcanzado el límite de carga por lotes de {{filesNumber}}.',
},
cancel: 'Cancelar',
change: 'Cambiar',
failed: 'Error al cargar',
},
notionSyncTitle: 'Notion no está conectado',
notionSyncTip: 'Para sincronizar con Notion, primero se debe establecer la conexión con Notion.',
connect: 'Ir a conectar',
button: 'Siguiente',
emptyDatasetCreation: 'Quiero crear un conocimiento vacío',
modal: {
title: 'Crear un conocimiento vacío',
tip: 'Un conocimiento vacío no contendrá documentos y podrás cargar documentos en cualquier momento.',
input: 'Nombre del conocimiento',
placeholder: 'Por favor ingresa',
nameNotEmpty: 'El nombre no puede estar vacío',
nameLengthInvalid: 'El nombre debe tener entre 1 y 40 caracteres',
cancelButton: 'Cancelar',
confirmButton: 'Crear',
failed: 'Error al crear',
},
website: {
fireCrawlNotConfigured: 'Firecrawl no está configurado',
fireCrawlNotConfiguredDescription: 'Configura Firecrawl con la clave de API para poder utilizarlo.',
configure: 'Configurar',
run: 'Ejecutar',
firecrawlTitle: 'Extraer contenido web con 🔥Firecrawl',
firecrawlDoc: 'Documentación de Firecrawl',
options: 'Opciones',
crawlSubPage: 'Rastrear subpáginas',
limit: 'Límite',
maxDepth: 'Profundidad máxima',
excludePaths: 'Excluir rutas',
includeOnlyPaths: 'Incluir solo rutas',
extractOnlyMainContent: 'Extraer solo el contenido principal (sin encabezados, navegación, pies de página, etc.)',
exceptionErrorTitle: 'Se produjo una excepción al ejecutar el trabajo de Firecrawl:',
unknownError: 'Error desconocido',
totalPageScraped: 'Total de páginas extraídas:',
selectAll: 'Seleccionar todo',
resetAll: 'Restablecer todo',
scrapTimeInfo: 'Se extrajeron {{total}} páginas en total en {{time}}s',
preview: 'Vista previa',
maxDepthTooltip: 'Profundidad máxima para rastrear en relación con la URL ingresada. La profundidad 0 solo extrae la página de la URL ingresada, la profundidad 1 extrae la URL y todo lo después de la URL ingresada + una /, y así sucesivamente.',
jinaReaderDocLink: 'https://jina.ai/reader',
jinaReaderNotConfigured: 'Jina Reader no está configurado',
useSitemap: 'Usar el mapa del sitio',
jinaReaderTitle: 'Convertir todo el sitio a Markdown',
jinaReaderNotConfiguredDescription: 'Configura Jina Reader introduciendo tu clave API gratuita para acceder.',
useSitemapTooltip: 'Siga el mapa del sitio para rastrear el sitio. De lo contrario, Jina Reader rastreará de forma iterativa en función de la relevancia de la página, lo que producirá menos páginas pero de mayor calidad.',
chooseProvider: 'Seleccione un proveedor',
jinaReaderDoc: 'Más información sobre Jina Reader',
watercrawlTitle: 'Extraer contenido web con Watercrawl',
waterCrawlNotConfigured: 'Watercrawl no está configurado',
configureFirecrawl: 'Configurar Firecrawl',
watercrawlDoc: 'Documentos de Watercrawl',
configureJinaReader: 'Configurar Jina Reader',
configureWatercrawl: 'Configurar Watercrawl',
waterCrawlNotConfiguredDescription: 'Configura Watercrawl con la clave de API para usarlo.',
running: 'Corriente',
},
cancel: 'Cancelar',
},
stepTwo: {
segmentation: 'Configuración de fragmentos',
auto: 'Automático',
autoDescription: 'Configura automáticamente las reglas de fragmentación y preprocesamiento. Se recomienda seleccionar esto para usuarios no familiarizados.',
custom: 'Personalizado',
customDescription: 'Personaliza las reglas de fragmentación, longitud de fragmentos y reglas de preprocesamiento, etc.',
separator: 'Identificador de segmento',
separatorPlaceholder: 'Por ejemplo, salto de línea (\\\\n) o separador especial (como "***")',
maxLength: 'Longitud máxima del fragmento',
overlap: 'Superposición de fragmentos',
overlapTip: 'Configurar la superposición de fragmentos puede mantener la relevancia semántica entre ellos, mejorando el efecto de recuperación. Se recomienda configurar el 10%-25% del tamaño máximo del fragmento.',
overlapCheck: 'La superposición de fragmentos no debe ser mayor que la longitud máxima del fragmento',
rules: 'Reglas de preprocesamiento de texto',
removeExtraSpaces: 'Reemplazar espacios, saltos de línea y tabulaciones consecutivas',
removeUrlEmails: 'Eliminar todas las URL y direcciones de correo electrónico',
removeStopwords: 'Eliminar palabras vacías como "un", "una", "el"',
preview: 'Confirmar y vista previa',
reset: 'Restablecer',
indexMode: 'Modo de índice',
qualified: 'Alta calidad',
recommend: 'Recomendado',
qualifiedTip: 'Llama a la interfaz de incrustación del sistema por defecto para proporcionar una mayor precisión cuando los usuarios realizan consultas.',
warning: 'Por favor, configura primero la clave de API del proveedor del modelo.',
click: 'Ir a configuración',
economical: 'Económico',
economicalTip: 'Utiliza motores de vector sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens',
QATitle: 'Segmentación en formato de pregunta y respuesta',
QATip: 'Habilitar esta opción consumirá más tokens',
QALanguage: 'Segmentar usando',
estimateCost: 'Estimación',
estimateSegment: 'Fragmentos estimados',
segmentCount: 'fragmentos',
calculating: 'Calculando...',
fileSource: 'Preprocesar documentos',
notionSource: 'Preprocesar páginas',
websiteSource: 'Preprocesar sitio web',
other: 'y otros ',
fileUnit: ' archivos',
notionUnit: ' páginas',
webpageUnit: ' páginas',
previousStep: 'Paso anterior',
nextStep: 'Guardar y procesar',
save: 'Guardar y procesar',
cancel: 'Cancelar',
sideTipTitle: '¿Por qué fragmentar y preprocesar?',
sideTipP1: 'Al procesar datos de texto, la fragmentación y la limpieza son dos pasos de preprocesamiento importantes.',
sideTipP2: 'La segmentación divide el texto largo en párrafos para que los modelos puedan entenderlo mejor. Esto mejora la calidad y relevancia de los resultados del modelo.',
sideTipP3: 'La limpieza elimina caracteres y formatos innecesarios, haciendo que el conocimiento sea más limpio y fácil de analizar.',
sideTipP4: 'Una fragmentación y limpieza adecuadas mejoran el rendimiento del modelo, proporcionando resultados más precisos y valiosos.',
previewTitle: 'Vista previa',
previewTitleButton: 'Vista previa',
previewButton: 'Cambiar a formato de pregunta y respuesta',
previewSwitchTipStart: 'La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta',
previewSwitchTipEnd: ' consumirá tokens adicionales',
characters: 'caracteres',
indexSettingTip: 'Para cambiar el método de índice, por favor ve a la ',
retrievalSettingTip: 'Para cambiar el método de índice, por favor ve a la ',
datasetSettingLink: 'configuración del conocimiento.',
separatorTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n y \\n son delimitadores comúnmente utilizados para separar párrafos y líneas. Combinado con comas (\\n\\n,\\n), los párrafos se segmentarán por líneas cuando excedan la longitud máxima del fragmento. También puede utilizar delimitadores especiales definidos por usted mismo (por ejemplo, ***).',
maxLengthCheck: 'La longitud máxima del fragmento debe ser inferior a {{limit}}',
previewChunkTip: 'Haga clic en el botón \'Vista previa de fragmento\' a la izquierda para cargar la vista previa',
parentChildChunkDelimiterTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n se recomienda para dividir fragmentos primarios en fragmentos secundarios pequeños. También puede utilizar delimitadores especiales definidos por usted mismo.',
parentChildTip: 'Cuando se utiliza el modo padre-hijo, el fragmento secundario se utiliza para la recuperación y el fragmento primario se utiliza para la recuperación como contexto.',
switch: 'Interruptor',
parentChild: 'Padre-hijo',
childChunkForRetrieval: 'Fragmento secundario para la recuperación',
previewChunk: 'Fragmento de vista previa',
notAvailableForParentChild: 'No disponible para el índice de elementos primarios y secundarios',
paragraph: 'Párrafo',
parentChunkForContext: 'Fragmento primario para contexto',
fullDoc: 'Documento completo',
parentChildDelimiterTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n se recomienda para dividir el documento original en grandes fragmentos principales. También puede utilizar delimitadores especiales definidos por usted mismo.',
generalTip: 'Modo de fragmentación de texto general, los fragmentos recuperados y recuperados son los mismos.',
qaSwitchHighQualityTipContent: 'Actualmente, solo el método de índice de alta calidad admite la fragmentación en formato de preguntas y respuestas. ¿Le gustaría cambiar al modo de alta calidad?',
useQALanguage: 'Fragmento usando el formato de preguntas y respuestas en',
fullDocTip: 'Todo el documento se utiliza como fragmento principal y se recupera directamente. Tenga en cuenta que, por razones de rendimiento, el texto que supere los 10000 tokens se trunqueará automáticamente.',
paragraphTip: 'Este modo divide el texto en párrafos en función de los delimitadores y la longitud máxima del fragmento, utilizando el texto dividido como fragmento principal para la recuperación.',
highQualityTip: 'Una vez finalizada la incrustación en el modo de alta calidad, no está disponible volver al modo económico.',
notAvailableForQA: 'No disponible para el índice de preguntas y respuestas',
qaSwitchHighQualityTipTitle: 'El formato de preguntas y respuestas requiere un método de indexación de alta calidad',
previewChunkCount: '{{conteo}} Fragmentos estimados',
general: 'General',
qaTip: 'Al usar datos estructurados de preguntas y respuestas, puede crear documentos que combinen preguntas con respuestas. Estos documentos se indexan en función de la parte de la pregunta, lo que permite que el sistema recupere respuestas relevantes en función de la similitud de la consulta.',
},
stepThree: {
creationTitle: '🎉 Conocimiento creado',
creationContent: 'Hemos asignado automáticamente un nombre al conocimiento, puedes modificarlo en cualquier momento',
label: 'Nombre del conocimiento',
additionTitle: '🎉 Documento cargado',
additionP1: 'El documento se ha cargado en el conocimiento',
additionP2: ', puedes encontrarlo en la lista de documentos del conocimiento.',
stop: 'Detener procesamiento',
resume: 'Reanudar procesamiento',
navTo: 'Ir al documento',
sideTipTitle: '¿Qué sigue?',
sideTipContent: 'Después de que el documento termine de indexarse, el conocimiento se puede integrar en la aplicación como contexto. Puedes encontrar la configuración de contexto en la página de orquestación de indicaciones. También puedes crearlo como un plugin de indexación ChatGPT independiente para su lanzamiento.',
modelTitle: '¿Estás seguro de detener la incrustación?',
modelContent: 'Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.',
modelButtonConfirm: 'Confirmar',
modelButtonCancel: 'Cancelar',
},
jinaReader: {
configJinaReader: 'Configurar Jina Reader',
apiKeyPlaceholder: 'Clave de API de jina.ai',
getApiKeyLinkText: 'Obtén tu clave API gratuita en jina.ai',
},
otherDataSource: {
learnMore: 'Aprende más',
description: 'Actualmente, la base de conocimientos de Ifiy solo tiene fuentes de datos limitadas. Contribuir con una fuente de datos a la base de conocimientos de Dify es una manera fantástica de ayudar a mejorar la flexibilidad y el poder de la plataforma para todos los usuarios. Nuestra guía de contribuciones hace que sea fácil comenzar. Haga clic en el enlace a continuación para obtener más información.',
title: '¿Conectarse a otras fuentes de datos?',
},
watercrawl: {
getApiKeyLinkText: 'Obtén tu clave API de watercrawl.dev',
apiKeyPlaceholder: 'Clave API de watercrawl.dev',
configWatercrawl: 'Configurar Watercrawl',
},
}
export default translation

View File

@@ -0,0 +1,407 @@
const translation = {
list: {
title: 'Documentos',
desc: 'Aquí se muestran todos los archivos del Conocimiento, y todo el Conocimiento se puede vincular a citas de Dify o indexarse a través del complemento de Chat.',
addFile: 'Agregar archivo',
addPages: 'Agregar páginas',
addUrl: 'Agregar URL',
table: {
header: {
fileName: 'NOMBRE DEL ARCHIVO',
words: 'PALABRAS',
hitCount: 'CANTIDAD DE RECUPERACIÓN',
uploadTime: 'TIEMPO DE CARGA',
status: 'ESTADO',
action: 'ACCIÓN',
chunkingMode: 'MODO DE FRAGMENTACIÓN',
},
rename: 'Renombrar',
name: 'Nombre',
},
action: {
uploadFile: 'Subir nuevo archivo',
settings: 'Configuración de segmento',
addButton: 'Agregar fragmento',
add: 'Agregar un fragmento',
batchAdd: 'Agregar en lotes',
archive: 'Archivar',
unarchive: 'Desarchivar',
delete: 'Eliminar',
enableWarning: 'El archivo archivado no puede habilitarse',
sync: 'Sincronizar',
resume: 'Reanudar',
pause: 'Pausa',
},
index: {
enable: 'Habilitar',
disable: 'Deshabilitar',
all: 'Todos',
enableTip: 'El archivo se puede indexar',
disableTip: 'El archivo no se puede indexar',
},
status: {
queuing: 'En cola',
indexing: 'Indexando',
paused: 'Pausado',
error: 'Error',
available: 'Disponible',
enabled: 'Habilitado',
disabled: 'Deshabilitado',
archived: 'Archivado',
},
empty: {
title: 'Aún no hay documentación',
upload: {
tip: 'Puedes subir archivos, sincronizar desde el sitio web o desde aplicaciones web como Notion, GitHub, etc.',
},
sync: {
tip: 'Dify descargará periódicamente archivos desde tu Notion y completará el procesamiento.',
},
},
delete: {
title: '¿Seguro que deseas eliminar?',
content: 'Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.',
},
batchModal: {
title: 'Agregar fragmentos en lotes',
csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ',
browse: 'navega',
tip: 'El archivo CSV debe cumplir con la siguiente estructura:',
question: 'pregunta',
answer: 'respuesta',
contentTitle: 'contenido del fragmento',
content: 'contenido',
template: 'Descarga la plantilla aquí',
cancel: 'Cancelar',
run: 'Ejecutar en lotes',
runError: 'Error al ejecutar en lotes',
processing: 'Procesamiento en lotes',
completed: 'Importación completada',
error: 'Error de importación',
ok: 'Aceptar',
},
learnMore: 'Aprende más',
sort: {
uploadTime: 'Hora de subida',
hitCount: 'Conteo de Recuperaciones',
},
},
metadata: {
title: 'Metadatos',
desc: 'Etiquetar metadatos para documentos permite que la IA acceda a ellos de manera oportuna y expone la fuente de referencias para los usuarios.',
dateTimeFormat: 'MMMM D, YYYY hh:mm A',
docTypeSelectTitle: 'Por favor, selecciona un tipo de documento',
docTypeChangeTitle: 'Cambiar tipo de documento',
docTypeSelectWarning:
'Si se cambia el tipo de documento, los metadatos ahora llenos ya no se conservarán.',
firstMetaAction: 'Vamos D',
placeholder: {
add: 'Agregar ',
select: 'Seleccionar ',
},
source: {
upload_file: 'Subir archivo',
notion: 'Sincronizar desde Notion',
github: 'Sincronizar desde GitHub',
online_document: 'Documento en línea',
local_file: 'Archivo local',
website_crawl: 'Rastreo del sitio web',
},
type: {
book: 'Libro',
webPage: 'Página Web',
paper: 'Artículo',
socialMediaPost: 'Publicación en Redes Sociales',
personalDocument: 'Documento Personal',
businessDocument: 'Documento de Negocios',
IMChat: 'Chat IM',
wikipediaEntry: 'Entrada de Wikipedia',
notion: 'Sincronizar desde Notion',
github: 'Sincronizar desde GitHub',
technicalParameters: 'Parámetros Técnicos',
},
field: {
processRule: {
processDoc: 'Procesar documento',
segmentRule: 'Regla de segmentación',
segmentLength: 'Longitud de fragmentos',
processClean: 'Limpieza de texto procesado',
},
book: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
publisher: 'Editorial',
publicationDate: 'Fecha de publicación',
ISBN: 'ISBN',
category: 'Categoría',
},
webPage: {
title: 'Título',
url: 'URL',
language: 'Idioma',
authorPublisher: 'Autor/Editorial',
publishDate: 'Fecha de publicación',
topicKeywords: 'Temas/Palabras clave',
description: 'Descripción',
},
paper: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
publishDate: 'Fecha de publicación',
journalConferenceName: 'Nombre de la revista/conferencia',
volumeIssuePage: 'Volumen/Número/Página',
DOI: 'DOI',
topicsKeywords: 'Temas/Palabras clave',
abstract: 'Resumen',
},
socialMediaPost: {
platform: 'Plataforma',
authorUsername: 'Autor/Nombre de usuario',
publishDate: 'Fecha de publicación',
postURL: 'URL de la publicación',
topicsTags: 'Temas/Etiquetas',
},
personalDocument: {
title: 'Título',
author: 'Autor',
creationDate: 'Fecha de creación',
lastModifiedDate: 'Última fecha de modificación',
documentType: 'Tipo de documento',
tagsCategory: 'Etiquetas/Categoría',
},
businessDocument: {
title: 'Título',
author: 'Autor',
creationDate: 'Fecha de creación',
lastModifiedDate: 'Última fecha de modificación',
documentType: 'Tipo de documento',
departmentTeam: 'Departamento/Equipo',
},
IMChat: {
chatPlatform: 'Plataforma de chat',
chatPartiesGroupName: 'Partes de chat/Nombre del grupo',
participants: 'Participantes',
startDate: 'Fecha de inicio',
endDate: 'Fecha de fin',
topicsKeywords: 'Temas/Palabras clave',
fileType: 'Tipo de archivo',
},
wikipediaEntry: {
title: 'Título',
language: 'Idioma',
webpageURL: 'URL de la página web',
editorContributor: 'Editor/Contribuidor',
lastEditDate: 'Última fecha de edición',
summaryIntroduction: 'Resumen/Introducción',
},
notion: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
createdTime: 'Fecha de creación',
lastModifiedTime: 'Última fecha de modificación',
url: 'URL',
tag: 'Etiqueta',
description: 'Descripción',
},
github: {
repoName: 'Nombre del repositorio',
repoDesc: 'Descripción del repositorio',
repoOwner: 'Propietario del repositorio',
fileName: 'Nombre del archivo',
filePath: 'Ruta del archivo',
programmingLang: 'Lenguaje de programación',
url: 'URL',
license: 'Licencia',
lastCommitTime: 'Última hora de compromiso',
lastCommitAuthor: 'Último autor del compromiso',
},
originInfo: {
originalFilename: 'Nombre de archivo original',
originalFileSize: 'Tamaño de archivo original',
uploadDate: 'Fecha de carga',
lastUpdateDate: 'Última fecha de actualización',
source: 'Fuente',
},
technicalParameters: {
segmentSpecification: 'Especificación de fragmentos',
segmentLength: 'Longitud de fragmentos',
avgParagraphLength: 'Longitud promedio del párrafo',
paragraphs: 'Párrafos',
hitCount: 'Cantidad de recuperación',
embeddingTime: 'Tiempo de incrustación',
embeddedSpend: 'Gasto incrustado',
},
},
languageMap: {
zh: 'Chino',
en: 'Inglés',
es: 'Español',
fr: 'Francés',
de: 'Alemán',
ja: 'Japonés',
ko: 'Coreano',
ru: 'Ruso',
ar: 'Árabe',
pt: 'Portugués',
it: 'Italiano',
nl: 'Holandés',
pl: 'Polaco',
sv: 'Sueco',
tr: 'Turco',
he: 'Hebreo',
hi: 'Hindi',
da: 'Danés',
fi: 'Finlandés',
no: 'Noruego',
hu: 'Húngaro',
el: 'Griego',
cs: 'Checo',
th: 'Tailandés',
id: 'Indonesio',
},
categoryMap: {
book: {
fiction: 'Ficción',
biography: 'Biografía',
history: 'Historia',
science: 'Ciencia',
technology: 'Tecnología',
education: 'Educación',
philosophy: 'Filosofía',
religion: 'Religión',
socialSciences: 'Ciencias Sociales',
art: 'Arte',
travel: 'Viaje',
health: 'Salud',
selfHelp: 'Autoayuda',
businessEconomics: 'Negocios y Economía',
cooking: 'Cocina',
childrenYoungAdults: 'Niños y Jóvenes Adultos',
comicsGraphicNovels: 'Cómics y Novelas Gráficas',
poetry: 'Poesía',
drama: 'Drama',
other: 'Otros',
},
personalDoc: {
notes: 'Notas',
blogDraft: 'Borrador de blog',
diary: 'Diario',
researchReport: 'Informe de investigación',
bookExcerpt: 'Extracto de libro',
schedule: 'Horario',
list: 'Lista',
projectOverview: 'Visión general del proyecto',
photoCollection: 'Colección de fotos',
creativeWriting: 'Escritura creativa',
codeSnippet: 'Fragmento de código',
designDraft: 'Borrador de diseño',
personalResume: 'Currículum personal',
other: 'Otros',
},
businessDoc: {
meetingMinutes: 'Minutos de reunión',
researchReport: 'Informe de investigación',
proposal: 'Propuesta',
employeeHandbook: 'Manual del empleado',
trainingMaterials: 'Materiales de capacitación',
requirementsDocument: 'Documento de requisitos',
designDocument: 'Documento de diseño',
productSpecification: 'Especificación del producto',
financialReport: 'Informe financiero',
marketAnalysis: 'Análisis de mercado',
projectPlan: 'Plan de proyecto',
teamStructure: 'Estructura del equipo',
policiesProcedures: 'Políticas y procedimientos',
contractsAgreements: 'Contratos y acuerdos',
emailCorrespondence: 'Correspondencia por correo electrónico',
other: 'Otros',
},
},
},
embedding: {
processing: 'Procesando incrustación...',
paused: 'Incrustación pausada',
completed: 'Incrustación completada',
error: 'Error de incrustación',
docName: 'Preprocesamiento del documento',
mode: 'Regla de segmentación',
segmentLength: 'Longitud de fragmentos',
textCleaning: 'Definición de texto y limpieza previa',
segments: 'Párrafos',
highQuality: 'Modo de alta calidad',
economy: 'Modo económico',
estimate: 'Consumo estimado',
stop: 'Detener procesamiento',
resume: 'Reanudar procesamiento',
automatic: 'Automático',
custom: 'Personalizado',
previewTip: 'La vista previa del párrafo estará disponible después de que se complete la incrustación',
pause: 'Pausa',
childMaxTokens: 'Niño',
hierarchical: 'Padre-hijo',
parentMaxTokens: 'Padre',
waiting: 'Esperando incrustación...',
},
segment: {
paragraphs: 'Párrafos',
keywords: 'Palabras clave',
addKeyWord: 'Agregar palabra clave',
keywordError: 'La longitud máxima de la palabra clave es 20',
hitCount: 'Cantidad de recuperación',
vectorHash: 'Hash de vector: ',
questionPlaceholder: 'agregar pregunta aquí',
questionEmpty: 'La pregunta no puede estar vacía',
answerPlaceholder: 'agregar respuesta aquí',
answerEmpty: 'La respuesta no puede estar vacía',
contentPlaceholder: 'agregar contenido aquí',
contentEmpty: 'El contenido no puede estar vacío',
newTextSegment: 'Nuevo segmento de texto',
newQaSegment: 'Nuevo segmento de preguntas y respuestas',
delete: '¿Eliminar este fragmento?',
chunks_one: 'PEDAZO',
childChunks_one: 'FRAGMENTO SECUNDARIO',
searchResults_other: 'RESULTADOS',
newChunk: 'Nuevo fragmento',
childChunk: 'Fragmento secundario',
addChunk: 'Agregar fragmento',
editParentChunk: 'Editar fragmento principal',
regenerationConfirmMessage: 'La regeneración de fragmentos secundarios sobrescribirá los fragmentos secundarios actuales, incluidos los fragmentos editados y los fragmentos recién agregados. La regeneración no se puede deshacer.',
addAnother: 'Añade otro',
regeneratingMessage: 'Esto puede tardar un momento, por favor espere...',
addChildChunk: 'Agregar fragmento secundario',
chunks_other: 'TROZOS',
editChunk: 'Editar fragmento',
searchResults_one: 'RESULTADO',
parentChunks_one: 'FRAGMENTO PRIMARIO',
edited: 'EDITADO',
childChunkAdded: 'Se ha añadido 1 fragmento secundario',
childChunks_other: 'FRAGMENTOS SECUNDARIOS',
chunkAdded: '1 trozo añadido',
parentChunk: 'Fragmento primario',
editChildChunk: 'Editar fragmento secundario',
regeneratingTitle: 'Regeneración de fragmentos secundarios',
editedAt: 'Editado en',
dateTimeFormat: 'MM/DD/YYYY h:mm',
searchResults_zero: 'RESULTADO',
clearFilter: 'Borrar filtro',
newChildChunk: 'Nuevo fragmento secundario',
chunkDetail: 'Detalle de fragmentos',
chunk: 'Pedazo',
parentChunks_other: 'FRAGMENTOS PRINCIPALES',
expandChunks: 'Expandir fragmentos',
empty: 'No se ha encontrado ningún fragmento',
regenerationSuccessTitle: 'Regeneración completada',
collapseChunks: 'Contraer fragmentos',
characters_other: 'Caracteres',
characters_one: 'carácter',
regenerationSuccessMessage: 'Puede cerrar esta ventana.',
regenerationConfirmTitle: '¿Desea regenerar fragmentos secundarios?',
keywordEmpty: 'La palabra clave no puede estar vacía',
keywordDuplicate: 'La palabra clave ya existe',
},
}
export default translation

View File

@@ -0,0 +1,34 @@
const translation = {
title: 'Prueba de recuperación',
desc: 'Prueba del efecto de impacto del conocimiento basado en el texto de consulta proporcionado.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
source: 'Fuente',
text: 'Texto',
time: 'Tiempo',
},
},
input: {
title: 'Texto fuente',
placeholder: 'Por favor ingrese un texto, se recomienda una oración declarativa corta.',
countWarning: 'Hasta 200 caracteres.',
indexWarning: 'Solo conocimiento de alta calidad.',
testing: 'Prueba',
},
hit: {
title: 'PÁRRAFOS DE RECUPERACIÓN',
emptyTip: 'Los resultados de la prueba de recuperación se mostrarán aquí',
},
noRecentTip: 'No hay resultados de consulta recientes aquí',
viewChart: 'Ver GRÁFICO VECTORIAL',
viewDetail: 'Ver Detalle',
settingTitle: 'Configuración de recuperación',
open: 'Abrir',
records: 'Archivo',
chunkDetail: 'Detalle de fragmentos',
keyword: 'Palabras clave',
hitChunks: 'Golpea {{num}} fragmentos secundarios',
}
export default translation

View File

@@ -0,0 +1,166 @@
const translation = {
creation: {
createFromScratch: {
title: 'Canalización de conocimiento en blanco',
description: 'Cree una canalización personalizada desde cero con control total sobre el procesamiento y la estructura de datos.',
},
caution: 'Cautela',
backToKnowledge: 'Volver al conocimiento',
successTip: 'Creó con éxito una base de conocimientos',
createKnowledge: 'Crear conocimiento',
errorTip: 'No se pudo crear una base de conocimiento',
importDSL: 'Importar desde un archivo DSL',
},
templates: {
customized: 'Personalizado',
},
operations: {
preview: 'Vista previa',
details: 'Detalles',
dataSource: 'Fuente de datos',
convert: 'Convertir',
choose: 'Elegir',
process: 'Proceso',
backToDataSource: 'Volver a la fuente de datos',
editInfo: 'Editar información',
exportPipeline: 'Canalización de exportación',
useTemplate: 'Utilice esta canalización de conocimiento',
saveAndProcess: 'Guardar y procesar',
},
deletePipeline: {
content: 'La eliminación de la plantilla de canalización es irreversible.',
title: '¿Está seguro de eliminar esta plantilla de canalización?',
},
publishPipeline: {
success: {
message: 'Publicación de Knowledge Pipeline',
tip: '<CustomLink>Ve a Documentos</CustomLink> para agregar o gestionar documentos.',
},
error: {
message: 'No se pudo publicar la canalización de conocimiento',
},
},
publishTemplate: {
success: {
learnMore: 'Aprende más',
message: 'Plantilla de canalización publicada',
tip: 'Puede usar esta plantilla en la página de creación.',
},
error: {
message: 'No se pudo publicar la plantilla de canalización',
},
},
exportDSL: {
successTip: 'Exportar DSL de canalización correctamente',
errorTip: 'No se pudo exportar DSL de canalización',
},
details: {
structure: 'Structure',
structureTooltip: 'La estructura de fragmentos determina cómo se dividen e indexan los documentos, ofreciendo modos General, Principal-Secundario y Preguntas y respuestas, y es única para cada base de conocimiento.',
createdBy: 'Por {{author}}',
},
testRun: {
steps: {
documentProcessing: 'Procesamiento de documentos',
dataSource: 'Fuente de datos',
},
dataSource: {
localFiles: 'Archivos locales',
},
notion: {
docTitle: 'Documentos de Notion',
title: 'Elegir páginas de nociones',
},
title: 'Ejecución de prueba',
tooltip: 'En el modo de ejecución de prueba, solo se permite importar un documento a la vez para facilitar la depuración y la observación.',
},
inputFieldPanel: {
uniqueInputs: {
title: 'Entradas únicas para cada entrada',
tooltip: 'Las entradas únicas solo son accesibles para la fuente de datos seleccionada y sus nodos posteriores. Los usuarios no tendrán que rellenarlo al elegir otros orígenes de datos. Solo los campos de entrada a los que hacen referencia las variables de origen de datos aparecerán en el primer paso (Origen de datos). Todos los demás campos se mostrarán en el segundo paso (Procesar documentos).',
},
globalInputs: {
title: 'Entradas globales para todas las entradas',
tooltip: 'Las entradas globales se comparten entre todos los nodos. Los usuarios deberán completarlos al seleccionar cualquier fuente de datos. Por ejemplo, campos como el delimitador y la longitud máxima del fragmento se pueden aplicar de manera uniforme en varias fuentes de datos. Solo los campos de entrada a los que hacen referencia las variables de origen de datos aparecen en el primer paso (origen de datos). Todos los demás campos aparecen en el segundo paso (Procesar documentos).',
},
preview: {
stepTwoTitle: 'Documentos de proceso',
stepOneTitle: 'Fuente de datos',
},
error: {
variableDuplicate: 'El nombre de la variable ya existe. Por favor, elija un nombre diferente.',
},
addInputField: 'Agregar campo de entrada',
title: 'Campos de entrada de usuario',
editInputField: 'Editar campo de entrada',
description: 'Los campos de entrada del usuario se utilizan para definir y recopilar las variables necesarias durante el proceso de ejecución de la canalización. Los usuarios pueden personalizar el tipo de campo y configurar de forma flexible el valor de entrada para satisfacer las necesidades de diferentes fuentes de datos o pasos de procesamiento de documentos.',
},
addDocuments: {
steps: {
processingDocuments: 'Procesamiento de documentos',
processDocuments: 'Documentos de proceso',
chooseDatasource: 'Elegir una fuente de datos',
},
stepOne: {
preview: 'Vista previa',
},
stepTwo: {
chunkSettings: 'Configuración de fragmentos',
previewChunks: 'Vista previa de fragmentos',
},
stepThree: {
learnMore: 'Aprende más',
},
characters: 'Caracteres',
title: 'Agregar documentos',
backToDataSource: 'Fuente de datos',
selectOnlineDocumentTip: 'Procesar hasta {{count}} páginas',
selectOnlineDriveTip: 'Procesar hasta {{count}} archivos, máximo {{fileSize}} MB cada uno',
},
documentSettings: {
title: 'Parametrizaciones de documentos',
},
onlineDocument: {
pageSelectorTitle: '{{name}} páginas',
},
onlineDrive: {
breadcrumbs: {
allBuckets: 'Todos los depósitos de Cloud Storage',
allFiles: 'Todos los archivos',
searchPlaceholder: 'Buscar archivos...',
searchResult: 'Encontrar {{searchResultsLength}} elementos en la carpeta "{{folderName}}"',
},
emptySearchResult: 'No se encontraron artículos',
resetKeywords: 'Restablecer palabras clave',
emptyFolder: 'Esta carpeta está vacía',
notSupportedFileType: 'Este tipo de archivo no es compatible',
notConnected: '{{name}} no está conectado',
notConnectedTip: 'Para sincronizar con {{name}}, primero se debe establecer conexión con {{name}}.',
},
credentialSelector: {
name: '{{credentialName}} de {{pluginName}}',
},
conversion: {
confirm: {
title: 'Confirmación',
content: 'Esta acción es permanente. No podrá volver al método anterior. Por favor, confirme para convertir.',
},
title: 'Convertir en canalización de conocimiento',
successMessage: 'Convertir correctamente el conjunto de datos en una canalización',
warning: 'Esta acción no se puede deshacer.',
errorMessage: 'No se pudo convertir el conjunto de datos en una canalización',
descriptionChunk2: '— un enfoque más abierto y flexible con acceso a complementos de nuestro mercado. Esto aplicará el nuevo método de procesamiento a todos los documentos futuros.',
descriptionChunk1: 'Ahora puede convertir su base de conocimientos existente para usar la canalización de conocimientos para el procesamiento de documentos',
},
knowledgeDescription: 'Descripción del conocimiento',
knowledgeNameAndIcon: 'Nombre e icono de conocimiento',
inputField: 'Campo de entrada',
knowledgeNameAndIconPlaceholder: 'Ingrese el nombre de la base de conocimientos',
knowledgeDescriptionPlaceholder: 'Describa lo que hay en esta base de conocimientos. Una descripción detallada permite a la IA acceder al contenido del conjunto de datos con mayor precisión. Si está vacío, Dify usará la estrategia de golpe predeterminada. (Opcional)',
pipelineNameAndIcon: 'Nombre e icono de la tubería',
knowledgePermissions: 'Permisos',
editPipelineInfo: 'Editar información de canalización',
configurationTip: 'Configurar {{pluginName}}',
}
export default translation

View File

@@ -0,0 +1,51 @@
const translation = {
title: 'Configuración del conjunto de datos',
desc: 'Aquí puedes modificar las propiedades y los métodos de trabajo del conjunto de datos.',
form: {
name: 'Nombre del conjunto de datos',
namePlaceholder: 'Por favor ingresa el nombre del conjunto de datos',
nameError: 'El nombre no puede estar vacío',
desc: 'Descripción del conjunto de datos',
descInfo: 'Por favor escribe una descripción textual clara para delinear el contenido del conjunto de datos. Esta descripción se utilizará como base para la coincidencia al seleccionar entre múltiples conjuntos de datos para la inferencia.',
descPlaceholder: 'Describe lo que hay en este conjunto de datos. Una descripción detallada permite que la IA acceda al contenido del conjunto de datos de manera oportuna. Si está vacío, Dify utilizará la estrategia de coincidencia predeterminada.',
descWrite: 'Aprende cómo escribir una buena descripción del conjunto de datos.',
permissions: 'Permisos',
permissionsOnlyMe: 'Solo yo',
permissionsAllMember: 'Todos los miembros del equipo',
permissionsInvitedMembers: 'Miembros del equipo invitados',
me: '(Tú)',
indexMethod: 'Método de indexación',
indexMethodHighQuality: 'Alta calidad',
indexMethodHighQualityTip: 'Llama al modelo de incrustación para procesar y proporcionar una mayor precisión cuando los usuarios realizan consultas.',
indexMethodEconomy: 'Económico',
indexMethodEconomyTip: 'Utiliza motores de vectores sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens.',
embeddingModel: 'Modelo de incrustación',
embeddingModelTip: 'Cambia el modelo de incrustación, por favor ve a ',
embeddingModelTipLink: 'Configuración',
retrievalSetting: {
title: 'Configuración de recuperación',
learnMore: 'Aprende más',
description: ' sobre el método de recuperación.',
longDescription: ' sobre el método de recuperación, puedes cambiar esto en cualquier momento en la configuración del conjunto de datos.',
method: 'Método de recuperación',
},
save: 'Guardar',
retrievalSettings: 'Configuración de recuperación',
externalKnowledgeID: 'ID de conocimiento externo',
externalKnowledgeAPI: 'API de conocimiento externo',
indexMethodChangeToEconomyDisabledTip: 'No disponible para degradar de HQ a ECO',
helpText: 'Aprenda a escribir una buena descripción del conjunto de datos.',
upgradeHighQualityTip: 'Una vez que se actualiza al modo de alta calidad, no está disponible volver al modo económico',
searchModel: 'Buscar modelo',
chunkStructure: {
learnMore: 'Aprende más',
description: 'sobre la estructura de fragmentos.',
title: 'Estructura de fragmentos',
},
numberOfKeywords: 'Número de palabras clave',
nameAndIcon: 'Nombre e icono',
onSearchResults: 'Ningún miembro coincide con su consulta de búsqueda.\nIntente su búsqueda nuevamente.',
},
}
export default translation

View File

@@ -0,0 +1,243 @@
const translation = {
knowledge: 'Conocimiento',
documentCount: ' documentos',
wordCount: ' mil palabras',
appCount: ' aplicaciones vinculadas',
createDataset: 'Crear Conocimiento',
createDatasetIntro: 'Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para mejorar el contexto de LLM.',
deleteDatasetConfirmTitle: '¿Eliminar este Conocimiento?',
deleteDatasetConfirmContent:
'Eliminar el Conocimiento es irreversible. Los usuarios ya no podrán acceder a tu Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.',
datasetUsedByApp: 'El conocimiento está siendo utilizado por algunas aplicaciones. Las aplicaciones ya no podrán utilizar este Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.',
datasetDeleted: 'Conocimiento eliminado',
datasetDeleteFailed: 'Error al eliminar el Conocimiento',
didYouKnow: '¿Sabías?',
intro1: 'El Conocimiento se puede integrar en la aplicación Dify ',
intro2: 'como contexto',
intro3: ',',
intro4: 'o ',
intro5: 'se puede crear',
intro6: ' como un complemento independiente de ChatGPT para publicar',
unavailable: 'No disponible',
datasets: 'CONOCIMIENTO',
datasetsApi: 'ACCESO A LA API',
retrieval: {
semantic_search: {
title: 'Búsqueda Vectorial',
description: 'Genera incrustaciones de consulta y busca el fragmento de texto más similar a su representación vectorial.',
},
full_text_search: {
title: 'Búsqueda de Texto Completo',
description: 'Indexa todos los términos del documento, lo que permite a los usuarios buscar cualquier término y recuperar el fragmento de texto relevante que contiene esos términos.',
},
hybrid_search: {
title: 'Búsqueda Híbrida',
description: 'Ejecuta búsquedas de texto completo y búsquedas vectoriales simultáneamente, reordena para seleccionar la mejor coincidencia para la consulta del usuario. Es necesaria la configuración de las API del modelo de reordenamiento.',
recommend: 'Recomendar',
},
invertedIndex: {
},
change: 'Cambiar',
changeRetrievalMethod: 'Cambiar método de recuperación',
keyword_search: {
title: 'Índice invertido',
description: 'El índice invertido es una estructura utilizada para una recuperación eficiente. Organizado por términos, cada término apunta a documentos o páginas web que lo contienen.',
},
},
docsFailedNotice: 'no se pudieron indexar los documentos',
retry: 'Reintentar',
indexingTechnique: {
high_quality: 'AC',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'VECTOR',
full_text_search: 'TEXTO COMPLETO',
hybrid_search: 'HÍBRIDO',
invertedIndex: 'INVERTIDO',
},
mixtureHighQualityAndEconomicTip: 'Se requiere el modelo de reclasificación para la mezcla de bases de conocimiento de alta calidad y económicas.',
inconsistentEmbeddingModelTip: 'Se requiere el modelo de reclasificación si los modelos de incrustación de las bases de conocimiento seleccionadas son inconsistentes.',
retrievalSettings: 'Configuración de recuperación',
rerankSettings: 'Configuración de reclasificación',
weightedScore: {
title: 'Puntuación ponderada',
description: 'Al ajustar los pesos asignados, esta estrategia de reclasificación determina si se debe priorizar la coincidencia semántica o de palabras clave.',
semanticFirst: 'Semántica primero',
keywordFirst: 'Palabra clave primero',
customized: 'Personalizado',
semantic: 'Semántico',
keyword: 'Palabra clave',
},
nTo1RetrievalLegacy: 'La recuperación N-a-1 será oficialmente obsoleta a partir de septiembre. Se recomienda utilizar la última recuperación de múltiples rutas para obtener mejores resultados.',
nTo1RetrievalLegacyLink: 'Más información',
nTo1RetrievalLegacyLinkText: 'La recuperación N-a-1 será oficialmente obsoleta en septiembre.',
defaultRetrievalTip: 'De forma predeterminada, se utiliza la recuperación de varias rutas. El conocimiento se recupera de múltiples bases de conocimiento y luego se vuelve a clasificar.',
editExternalAPIConfirmWarningContent: {
front: 'Esta API de conocimiento externo está vinculada a',
end: 'conocimiento externo, y esta modificación se aplicará a todos ellos. ¿Estás seguro de que quieres guardar este cambio?',
},
editExternalAPIFormWarning: {
end: 'Conocimiento externo',
front: 'Esta API externa está vinculada a',
},
deleteExternalAPIConfirmWarningContent: {
title: {
end: '?',
front: 'Borrar',
},
content: {
end: 'conocimiento externo. Al eliminar esta API, se invalidarán todos ellos. ¿Estás seguro de que quieres eliminar esta API?',
front: 'Esta API de conocimiento externo está vinculada a',
},
noConnectionContent: '¿Está seguro de eliminar esta API?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Elegir una API de conocimiento externa',
},
connectDatasetIntro: {
content: {
link: 'Más información sobre cómo crear una API externa',
front: 'Para conectarse a una base de conocimientos externa, primero debe crear una API externa. Por favor, lea atentamente y consulte',
end: '. A continuación, busque el ID de conocimiento correspondiente y rellénelo en el formulario de la izquierda. Si toda la información es correcta, saltará automáticamente a la prueba de recuperación en la base de conocimientos después de hacer clic en el botón conectar.',
},
learnMore: 'Aprende más',
title: 'Cómo conectarse a una base de conocimientos externa',
},
connectHelper: {
helper5: 'con cuidado antes de usar esta función.',
helper2: 'Solo se admite la funcionalidad de recuperación',
helper1: 'Conéctese a bases de conocimiento externas a través de la API y el ID de la base de conocimiento. Actualmente,',
helper3: '. Le recomendamos encarecidamente que',
helper4: 'Leer la documentación de ayuda',
},
externalKnowledgeForm: {
connect: 'Conectar',
cancel: 'Cancelar',
},
externalAPIForm: {
encrypted: {
front: 'Su token de API se cifrará y almacenará mediante',
end: 'Tecnología.',
},
cancel: 'Cancelar',
apiKey: 'Clave de API',
save: 'Salvar',
edit: 'Editar',
name: 'Nombre',
endpoint: 'Punto de conexión de API',
},
externalTag: 'Externo',
externalKnowledgeDescriptionPlaceholder: 'Describa lo que hay en esta base de conocimientos (opcional)',
externalKnowledgeNamePlaceholder: 'Introduzca el nombre de la base de conocimientos',
noExternalKnowledge: 'Todavía no hay una API de conocimiento externo, haga clic aquí para crear',
editExternalAPIFormTitle: 'Editar la API de conocimiento externo',
externalKnowledgeName: 'Nombre del conocimiento externo',
allExternalTip: 'Al usar solo conocimiento externo, el usuario puede elegir si desea habilitar el modelo Rerank. Si no se habilita, los fragmentos recuperados se ordenarán en función de las puntuaciones. Cuando las estrategias de recuperación de diferentes bases de conocimiento son inconsistentes, serán inexactas.',
createExternalAPI: 'Adición de una API de conocimiento externa',
externalKnowledgeId: 'ID de conocimiento externo',
connectDataset: 'Conéctese a una base de conocimientos externa',
createNewExternalAPI: 'Creación de una nueva API de conocimiento externo',
editExternalAPITooltipTitle: 'CONOCIMIENTO VINCULADO',
externalAPIPanelTitle: 'API de conocimiento externo',
externalKnowledgeDescription: 'Descripción del conocimiento',
externalAPIPanelDescription: 'La API de conocimiento externo se utiliza para conectarse a una base de conocimiento fuera de Dify y recuperar conocimiento de esa base de conocimiento.',
externalAPI: 'API externa',
externalKnowledgeIdPlaceholder: 'Introduzca el ID de conocimiento',
learnHowToWriteGoodKnowledgeDescription: 'Aprende a escribir una buena descripción del conocimiento',
externalAPIPanelDocumentation: 'Más información sobre cómo crear una API de conocimiento externo',
mixtureInternalAndExternalTip: 'El modelo de Rerank es necesario para la mezcla de conocimiento interno y externo.',
chunkingMode: {
parentChild: 'Padre-hijo',
general: 'General',
graph: 'gráfico',
qa: 'Preguntas y respuestas',
},
parentMode: {
fullDoc: 'Documento completo',
paragraph: 'Párrafo',
},
batchAction: {
selected: 'Seleccionado',
enable: 'Habilitar',
disable: 'Inutilizar',
cancel: 'Cancelar',
archive: 'Archivo',
delete: 'Borrar',
},
enable: 'Habilitar',
documentsDisabled: '{{num}} Documentos desactivados - inactivos durante más de 30 días',
preprocessDocument: '{{num}} Documentos de preprocesamiento',
localDocs: 'Documentos locales',
allKnowledgeDescription: 'Seleccione esta opción para mostrar todos los conocimientos de este espacio de trabajo. Solo el propietario del espacio de trabajo puede administrar todo el conocimiento.',
allKnowledge: 'Todo el conocimiento',
metadata: {
createMetadata: {
title: 'Nuevos Metadatos',
back: 'Atrás',
type: 'Escribe',
namePlaceholder: 'Agregar nombre de metadatos',
name: 'Nombre',
},
checkName: {
empty: 'El nombre de metadatos no puede estar vacío',
invalid: 'El nombre de los metadatos solo puede contener letras minúsculas, números y guiones bajos, y debe comenzar con una letra minúscula.',
tooLong: 'El nombre de los metadatos no puede exceder {{max}} caracteres.',
},
batchEditMetadata: {
multipleValue: 'Valor Múltiple',
editMetadata: 'Editar Metadatos',
editDocumentsNum: 'Editando {{num}} documentos',
applyToAllSelectDocument: 'Aplicar a todos los documentos seleccionados',
applyToAllSelectDocumentTip: 'Cree automáticamente todos los metadatos editados y nuevos anteriores para todos los documentos seleccionados, de lo contrario, la edición de metadatos solo se aplicará a los documentos que ya los tengan.',
},
selectMetadata: {
manageAction: 'Gestionar',
search: 'Buscar metadatos',
newAction: 'Nuevos Metadatos',
},
datasetMetadata: {
addMetaData: 'Agregar Metadatos',
values: '{{num}} Valores',
deleteContent: '¿Estás seguro de que quieres eliminar los metadatos "{{name}}"?',
rename: 'Renombrar',
deleteTitle: 'Confirme para eliminar',
namePlaceholder: 'Nombre de metadatos',
builtInDescription: 'Los metadatos integrados se extraen y generan automáticamente. Deben estar habilitados antes de su uso y no se pueden editar.',
name: 'Nombre',
description: 'Puedes gestionar todos los metadatos en este conocimiento aquí. Las modificaciones se sincronizarán en todos los documentos.',
disabled: 'desactivar',
builtIn: 'Integrado',
},
documentMetadata: {
technicalParameters: 'Parámetros técnicos',
startLabeling: 'Comenzar a etiquetar',
documentInformation: 'Información del documento',
metadataToolTip: 'Los metadatos sirven como un filtro crítico que mejora la precisión y relevancia de la recuperación de información. Puede modificar y agregar metadatos para este documento aquí.',
},
metadata: 'Metadatos',
chooseTime: 'Elige una hora...',
addMetadata: 'Agregar Metadatos',
},
embeddingModelNotAvailable: 'El modelo de embeddings no está disponible.',
externalKnowledgeBase: 'Base de conocimientos externa',
createFromPipeline: 'Crear desde Knowledge Pipeline',
updated: 'Actualizado',
serviceApi: {
card: {
apiReference: 'Referencia de la API',
apiKey: 'Clave API',
endpoint: 'Punto de enlace de la API de servicio',
title: 'API del servicio de backend',
},
enabled: 'En servicio',
title: 'API de servicios',
disabled: 'Discapacitado',
},
docAllEnabled_one: 'Documento {{count}} activado',
docAllEnabled_other: 'Todos los documentos {{count}} habilitados',
partialEnabled_one: 'Total de {{count}} documentos, {{num}} disponibles',
partialEnabled_other: 'Total de {{count}} documentos, {{num}} disponibles',
}
export default translation

View File

@@ -0,0 +1,76 @@
const translation = {
toVerifiedTip: {
coupon: 'cupón exclusivo del 100%',
end: 'para el Plan Profesional de Dify.',
front: 'Ahora eres elegible para el estado de Educación Verificada. Por favor, introduce tu información educativa a continuación para completar el proceso y recibir un',
},
form: {
schoolName: {
title: 'El nombre de tu escuela',
placeholder: 'Ingrese el nombre oficial y completo de su escuela',
},
schoolRole: {
option: {
student: 'Estudiante',
administrator: 'Administrador escolar',
teacher: 'Profesor',
},
title: 'Tu rol en la escuela',
},
terms: {
desc: {
termsOfService: 'Términos de Servicio',
privacyPolicy: 'Política de privacidad',
and: 'y',
front: 'Su información y uso del estado de Educación Verificada están sujetos a nuestra',
end: '. Al enviar:',
},
option: {
age: 'Confirmo que tengo al menos 18 años',
inSchool: 'Confirmo que estoy inscrito o empleado en la institución indicada. Dify puede solicitar prueba de inscripción/empleo. Si falseo mi elegibilidad, acepto pagar cualquier tarifa que se haya eximido inicialmente en función de mi estado educativo.',
},
title: 'Términos y Acuerdos',
},
},
emailLabel: 'Tu correo electrónico actual',
submit: 'Enviar',
submitError: 'Error en el envío del formulario. Por favor, inténtelo de nuevo más tarde.',
successTitle: 'Tienes la educación Dify verificada',
toVerified: 'Verifica la educación',
successContent: 'Hemos emitido un cupón de descuento del 100% para el plan Dify Professional en tu cuenta. El cupón es válido por un año, por favor utilízalo dentro del período de validez.',
learn: 'Aprende cómo obtener la verificación de la educación',
rejectTitle: 'Su verificación educativa de Dify ha sido rechazada.',
currentSigned: 'ACTUALMENTE CONECTADO COMO',
rejectContent: 'Desafortunadamente, no eres elegible para el estado de Educación Verificada y, por lo tanto, no puedes recibir el exclusivo cupón del 100% para el Plan Profesional de Dify si utilizas esta dirección de correo electrónico.',
notice: {
expired: {
summary: {
line1: 'Todavía puedes acceder y usar Dify.',
line2: 'Sin embargo, ya no eres elegible para nuevos cupones de descuento educativo.',
},
title: 'Tu estado de educación ha expirado',
},
isAboutToExpire: {
summary: 'No te preocupes, esto no afectará tu suscripción actual, pero no obtendrás el descuento educativo cuando se renueve a menos que verifiques tu estado nuevamente.',
title: 'Tu estado educativo expirará el {{date}}',
},
stillInEducation: {
title: '¿Aún en educación?',
expired: 'Verifica de nuevo ahora para obtener un nuevo cupón para el próximo año académico. Lo añadiremos a tu cuenta y podrás usarlo para la próxima actualización.',
isAboutToExpire: 'Verifica de nuevo ahora para obtener un nuevo cupón para el próximo año académico. Se guardará en tu cuenta y estará listo para usar en tu próxima renovación.',
},
alreadyGraduated: {
title: '¿Ya te has graduado?',
isAboutToExpire: 'Tu suscripción actual seguirá activa. Cuando termine, serás trasladado al plan Sandbox, o puedes actualizar en cualquier momento para restaurar el acceso completo a las funciones de pago.',
expired: 'Siéntete libre de actualizar en cualquier momento para obtener acceso completo a las funciones de pago.',
},
action: {
reVerify: 'Re-verificar',
upgrade: 'Actualizar',
dismiss: 'Descartar',
},
dateFormat: 'DD/MM/YYYY',
},
}
export default translation

View File

@@ -0,0 +1,44 @@
const translation = {
title: 'Explorar',
sidebar: {
discovery: 'Descubrimiento',
chat: 'Chat',
workspace: 'Espacio de trabajo',
action: {
pin: 'Anclar',
unpin: 'Desanclar',
rename: 'Renombrar',
delete: 'Eliminar',
},
delete: {
title: 'Eliminar aplicación',
content: '¿Estás seguro de que quieres eliminar esta aplicación?',
},
},
apps: {
title: 'Explorar aplicaciones de Dify',
description: 'Utiliza estas aplicaciones de plantilla al instante o personaliza tus propias aplicaciones basadas en las plantillas.',
allCategories: 'Recomendado',
},
appCard: {
addToWorkspace: 'Agregar al espacio de trabajo',
customize: 'Personalizar',
},
appCustomize: {
title: 'Crear aplicación a partir de {{name}}',
subTitle: 'Icono y nombre de la aplicación',
nameRequired: 'El nombre de la aplicación es obligatorio',
},
category: {
Assistant: 'Asistente',
Writing: 'Escritura',
Translate: 'Traducción',
Programming: 'Programación',
HR: 'Recursos Humanos',
Agent: 'Agente',
Workflow: 'Flujo de trabajo',
Entertainment: 'Entretenimiento',
},
}
export default translation

View File

@@ -0,0 +1,8 @@
const translation = {
sidebar: {
collapseSidebar: 'Contraer barra lateral',
expandSidebar: 'Expandir barra lateral',
},
}
export default translation

View File

@@ -0,0 +1,126 @@
const translation = {
pageTitle: '¡Hola, vamos a empezar!👋',
welcome: 'Bienvenido a Dify, por favor inicia sesión para continuar.',
email: 'Correo electrónico',
emailPlaceholder: 'Tu correo electrónico',
password: 'Contraseña',
passwordPlaceholder: 'Tu contraseña',
name: 'Nombre de usuario',
namePlaceholder: 'Tu nombre de usuario',
forget: '¿Olvidaste tu contraseña?',
signBtn: 'Iniciar sesión',
installBtn: 'Configurar',
setAdminAccount: 'Configurando una cuenta de administrador',
setAdminAccountDesc: 'Privilegios máximos para la cuenta de administrador, que se puede utilizar para crear aplicaciones y administrar proveedores de LLM, etc.',
createAndSignIn: 'Crear e iniciar sesión',
oneMoreStep: 'Un paso más',
createSample: 'Con esta información, crearemos una aplicación de muestra para ti',
invitationCode: 'Código de invitación',
invitationCodePlaceholder: 'Tu código de invitación',
interfaceLanguage: 'Idioma de interfaz',
timezone: 'Zona horaria',
go: 'Ir a Dify',
sendUsMail: 'Envíanos un correo electrónico con tu presentación y nosotros nos encargaremos de la solicitud de invitación.',
acceptPP: 'He leído y acepto la política de privacidad',
reset: 'Por favor, ejecuta el siguiente comando para restablecer tu contraseña',
withGitHub: 'Continuar con GitHub',
withGoogle: 'Continuar con Google',
rightTitle: 'Desbloquea todo el potencial de LLM',
rightDesc: 'Construye de manera sencilla aplicaciones de IA visualmente cautivadoras, operables y mejorables.',
tos: 'Términos de servicio',
pp: 'Política de privacidad',
tosDesc: 'Al registrarte, aceptas nuestros',
goToInit: 'Si no has inicializado la cuenta, por favor ve a la página de inicialización',
dontHave: '¿No tienes?',
invalidInvitationCode: 'Código de invitación inválido',
accountAlreadyInited: 'La cuenta ya está inicializada',
forgotPassword: '¿Olvidaste tu contraseña?',
resetLinkSent: 'Enlace de restablecimiento enviado',
sendResetLink: 'Enviar enlace de restablecimiento',
backToSignIn: 'Volver a iniciar sesión',
forgotPasswordDesc: 'Por favor, ingresa tu dirección de correo electrónico para restablecer tu contraseña. Te enviaremos un correo electrónico con instrucciones sobre cómo restablecer tu contraseña.',
checkEmailForResetLink: 'Por favor, revisa tu correo electrónico para encontrar un enlace para restablecer tu contraseña. Si no aparece en unos minutos, asegúrate de revisar tu carpeta de spam.',
passwordChanged: 'Inicia sesión ahora',
changePassword: 'Cambiar contraseña',
changePasswordTip: 'Por favor, ingresa una nueva contraseña para tu cuenta',
invalidToken: 'Token inválido o expirado',
confirmPassword: 'Confirmar contraseña',
confirmPasswordPlaceholder: 'Confirma tu nueva contraseña',
passwordChangedTip: 'Tu contraseña se ha cambiado correctamente',
error: {
emailEmpty: 'Se requiere una dirección de correo electrónico',
emailInValid: 'Por favor, ingresa una dirección de correo electrónico válida',
nameEmpty: 'Se requiere un nombre',
passwordEmpty: 'Se requiere una contraseña',
passwordLengthInValid: 'La contraseña debe tener al menos 8 caracteres',
passwordInvalid: 'La contraseña debe contener letras y números, y tener una longitud mayor a 8',
registrationNotAllowed: 'Cuenta no encontrada. Póngase en contacto con el administrador del sistema para registrarse.',
invalidEmailOrPassword: 'Correo electrónico o contraseña inválidos.',
},
license: {
tip: 'Antes de comenzar con Dify Community Edition, lee la',
link: 'Licencia de código abierto de GitHub',
},
join: 'Unirse',
joinTipStart: 'Te invita a unirte al equipo de',
joinTipEnd: 'en Dify',
invalid: 'El enlace ha expirado',
explore: 'Explorar Dify',
activatedTipStart: 'Te has unido al equipo de',
activatedTipEnd: '',
activated: 'Inicia sesión ahora',
adminInitPassword: 'Contraseña de inicialización de administrador',
validate: 'Validar',
checkCode: {
verify: 'Verificar',
didNotReceiveCode: '¿No recibiste el código?',
verificationCodePlaceholder: 'Ingresa el código de 6 dígitos',
checkYourEmail: 'Revisa tu correo electrónico',
emptyCode: 'Se requiere código',
useAnotherMethod: 'Usar otro método',
resend: 'Reenviar',
verificationCode: 'Código de verificación',
validTime: 'Ten en cuenta que el código es válido durante 5 minutos',
invalidCode: 'Código no válido',
tipsPrefix: 'Enviamos un código de verificación a',
},
or: 'O',
back: 'Atrás',
continueWithCode: 'Continuar con el código',
usePassword: 'Usar contraseña',
changePasswordBtn: 'Establecer una contraseña',
withSSO: 'Continuar con SSO',
sendVerificationCode: 'Enviar código de verificación',
backToLogin: 'Volver al inicio de sesión',
resetPassword: 'Restablecer contraseña',
enterYourName: 'Por favor, introduzca su nombre de usuario',
useVerificationCode: 'Usar código de verificación',
resetPasswordDesc: 'Escriba el correo electrónico que utilizó para registrarse en Dify y le enviaremos un correo electrónico de restablecimiento de contraseña.',
noLoginMethod: 'Método de autenticación no configurado',
setYourAccount: 'Configura tu cuenta',
noLoginMethodTip: 'Póngase en contacto con el administrador del sistema para agregar un método de autenticación.',
licenseInactive: 'Licencia inactiva',
licenseInactiveTip: 'La licencia de Dify Enterprise para su espacio de trabajo está inactiva. Póngase en contacto con su administrador para seguir utilizando Dify.',
licenseExpired: 'Licencia caducada',
licenseLost: 'Licencia perdida',
licenseExpiredTip: 'La licencia de Dify Enterprise para su espacio de trabajo ha caducado. Póngase en contacto con su administrador para seguir utilizando Dify.',
licenseLostTip: 'No se pudo conectar el servidor de licencias de Dife. Póngase en contacto con su administrador para seguir utilizando Dify.',
webapp: {
disabled: 'La autenticación de la aplicación web está desactivada. Por favor, contacte al administrador del sistema para habilitarla. Puede intentar usar la aplicación directamente.',
noLoginMethodTip: 'Por favor, contacta al administrador del sistema para agregar un método de autenticación.',
noLoginMethod: 'Método de autenticación no configurado para la aplicación web',
login: 'Iniciar sesión',
},
signup: {
signIn: 'Iniciar sesión',
haveAccount: '¿Ya tienes una cuenta?',
createAccount: 'Crea tu cuenta',
noAccount: '¿No tienes una cuenta?',
signUp: 'Regístrate',
welcome: '👋 ¡Bienvenido! Por favor, completa los detalles para comenzar.',
verifyMail: 'Continuar con el código de verificación',
},
pageTitleForE: '¡Hola, vamos a empezar!',
}
export default translation

View File

@@ -0,0 +1,27 @@
const translation = {
tips: {
needLogin: 'Por favor inicie sesión para autorizar',
notLoggedIn: 'Esta aplicación quiere acceder a su cuenta de Dify Cloud',
loggedIn: 'Esta aplicación quiere acceder a la siguiente información de su cuenta de Dify Cloud.',
common: 'Respetamos su privacidad y solo utilizaremos esta información para mejorar su experiencia con nuestras herramientas para desarrolladores.',
},
scopes: {
avatar: 'Avatar',
name: 'Nombre',
timezone: 'Zona horaria',
languagePreference: 'Preferencia de idioma',
email: 'Correo electrónico',
},
error: {
authAppInfoFetchFailed: 'No se pudo obtener la información de la aplicación para la autorización',
authorizeFailed: 'La autorización falló',
invalidParams: 'Parámetros inválidos',
},
continue: 'Continuar',
unknownApp: 'Aplicación Desconocida',
switchAccount: 'Cambiar de cuenta',
login: 'Iniciar sesión',
connect: 'Conectar a',
}
export default translation

View File

@@ -0,0 +1,40 @@
const translation = {
common: {
publishAsPipeline: {
name: 'Nombre e icono de la tubería',
description: 'Descripción del conocimiento',
namePlaceholder: 'Ingrese el nombre de esta canalización de conocimiento. (Obligatorio)',
descriptionPlaceholder: 'Ingrese la descripción de este canal de conocimiento. (Opcional)',
},
reRun: 'Repetición',
processing: 'Tratamiento',
publishAs: 'Publicar como una canalización de conocimiento',
confirmPublish: 'Confirmar publicación',
goToAddDocuments: 'Ir a agregar documentos',
confirmPublishContent: 'Después de publicar correctamente la canalización de conocimiento, la estructura de fragmentos de esta base de conocimiento no se puede modificar. ¿Estás seguro de que quieres publicarlo?',
preparingDataSource: 'Preparar el origen de datos',
testRun: 'Ejecución de prueba',
},
inputField: {
manage: 'Gestionar',
create: 'Crear campo de entrada de usuario',
},
publishToast: {
title: 'Este pipeline aún no se ha publicado',
desc: 'Cuando la canalización no se publica, puede modificar la estructura de fragmentos en el nodo de la base de conocimiento y la orquestación y los cambios de la canalización se guardarán automáticamente como borrador.',
},
result: {
resultPreview: {
loading: 'Tratamiento... Espera',
viewDetails: 'Ver detalles',
error: 'Error ocurrido durante la ejecución',
footerTip: 'En modo de prueba, previsualiza hasta {{count}} fragmentos',
},
},
ragToolSuggestions: {
title: 'Sugerencias para el GAR',
noRecommendationPlugins: 'No hay complementos recomendados, encuentra más en <CustomLink>Marketplace</CustomLink>',
},
}
export default translation

View File

@@ -0,0 +1,26 @@
const translation = {
tags: {
image: 'Imagen',
agent: 'Agente',
medical: 'Médico',
weather: 'Tiempo',
design: 'Diseño',
videos: 'Vídeos',
education: 'Educación',
finance: 'Finanzas',
entertainment: 'Diversión',
social: 'Social',
travel: 'Viajar',
utilities: 'Utilidades',
search: 'Buscar',
news: 'Noticia',
business: 'Negocio',
other: 'Otro',
productivity: 'Productividad',
rag: 'TRAPO',
},
allTags: 'Todas las etiquetas',
searchTags: 'Etiquetas de búsqueda',
}
export default translation

View File

@@ -0,0 +1,186 @@
const translation = {
subscription: {
title: 'Suscripciones',
listNum: 'suscripciones de {{num}}',
empty: {
title: 'Sin suscripciones',
button: 'Nueva suscripción',
},
createButton: {
oauth: 'Nueva suscripción con OAuth',
apiKey: 'Nueva suscripción con clave API',
manual: 'Pega la URL para crear una nueva suscripción',
},
createSuccess: 'Suscripción creada con éxito',
createFailed: 'No se pudo crear la suscripción',
maxCount: 'Máximo {{num}} suscripciones',
selectPlaceholder: 'Seleccionar suscripción',
noSubscriptionSelected: 'No se ha seleccionado ninguna suscripción',
subscriptionRemoved: 'Suscripción eliminada',
list: {
title: 'Suscripciones',
addButton: 'Agregar',
tip: 'Recibir eventos mediante suscripción',
item: {
enabled: 'Habilitado',
disabled: 'Desactivado',
credentialType: {
api_key: 'Clave de API',
oauth2: 'OAuth',
unauthorized: 'Manual',
},
actions: {
delete: 'Eliminar',
deleteConfirm: {
title: '¿Eliminar {{name}}?',
success: 'Suscripción {{name}} eliminada con éxito',
error: 'Error al eliminar la suscripción {{name}}',
content: 'Una vez eliminada, esta suscripción no se puede recuperar. Por favor, confirme.',
contentWithApps: 'La suscripción actual está referenciada por {{count}} aplicaciones. Eliminarla hará que las aplicaciones configuradas dejen de recibir eventos de suscripción.',
confirm: 'Confirmar eliminación',
cancel: 'Cancelar',
confirmInputWarning: 'Por favor, ingrese el nombre correcto para confirmar.',
confirmInputPlaceholder: 'Introduce "{{name}}" para confirmar.',
confirmInputTip: 'Por favor, introduzca “{{name}}” para confirmar.',
},
},
status: {
active: 'activo',
inactive: 'inactivo',
},
usedByNum: 'Utilizado por {{num}} flujos de trabajo',
noUsed: 'No se utilizó ningún flujo de trabajo',
},
},
addType: {
title: 'Añadir suscripción',
description: 'Elige cómo quieres crear tu suscripción de activador',
options: {
apikey: {
title: 'Crear con clave API',
description: 'Crear suscripción automáticamente usando credenciales de API',
},
oauth: {
title: 'Crear con OAuth',
description: 'Autorizar con una plataforma de terceros para crear una suscripción',
clientSettings: 'Configuración del cliente OAuth',
clientTitle: 'Cliente OAuth',
default: 'predeterminado',
custom: 'Personalizado',
},
manual: {
title: 'Configuración manual',
description: 'Pega la URL para crear una nueva suscripción',
tip: 'Configurar la URL en la plataforma de terceros manualmente',
},
},
},
},
modal: {
steps: {
verify: 'Verificar',
configuration: 'Configuración',
},
common: {
cancel: 'Cancelar',
back: 'Atrás',
next: 'Siguiente',
create: 'Crear',
verify: 'Verificar',
authorize: 'Autorizar',
creating: 'Creando...',
verifying: 'Verificando...',
authorizing: 'Autorizando...',
},
oauthRedirectInfo: 'Dado que no se encontraron secretos de cliente del sistema para este proveedor de herramientas, es necesario configurarlo manualmente; para redirect_uri, por favor use',
apiKey: {
title: 'Crear con clave API',
verify: {
title: 'Verificar credenciales',
description: 'Por favor, proporciona tus credenciales de API para verificar el acceso',
error: 'La verificación de las credenciales falló. Por favor, revisa tu clave API.',
success: 'Credenciales verificadas con éxito',
},
configuration: {
title: 'Configurar suscripción',
description: 'Configura los parámetros de tu suscripción',
},
},
oauth: {
title: 'Crear con OAuth',
authorization: {
title: 'Autorización OAuth',
description: 'Autoriza a Dify para acceder a tu cuenta',
redirectUrl: 'URL de redirección',
redirectUrlHelp: 'Utiliza esta URL en la configuración de tu aplicación OAuth',
authorizeButton: 'Autorizar con {{provider}}',
waitingAuth: 'Esperando autorización...',
authSuccess: 'Autorización exitosa',
authFailed: 'Error al obtener la información de autorización OAuth',
waitingJump: 'Autorizado, esperando para saltar',
},
configuration: {
title: 'Configurar suscripción',
description: 'Configura los parámetros de tu suscripción después de la autorización',
success: 'Configuración de OAuth exitosa',
failed: 'La configuración de OAuth falló',
},
remove: {
success: 'Eliminación de OAuth exitosa',
failed: 'Error al eliminar OAuth',
},
save: {
success: 'Configuración de OAuth guardada con éxito',
},
},
manual: {
title: 'Configuración manual',
description: 'Configura tu suscripción al webhook manualmente',
logs: {
title: 'Registros de solicitudes',
request: 'Solicitud',
loading: 'Esperando solicitud de {{pluginName}}...',
},
},
form: {
subscriptionName: {
label: 'Nombre de la suscripción',
placeholder: 'Ingrese el nombre de la suscripción',
required: 'Se requiere el nombre de la suscripción',
},
callbackUrl: {
label: 'URL de retorno de llamada',
description: 'Esta URL recibirá eventos de webhook',
tooltip: 'Proporcione un endpoint accesible públicamente que pueda recibir solicitudes de devolución de llamada del proveedor del activador.',
placeholder: 'Generando...',
privateAddressWarning: 'Esta URL parece ser una dirección interna, lo que puede hacer que las solicitudes del webhook fallen. Puede cambiar TRIGGER_URL a una dirección pública.',
},
},
errors: {
createFailed: 'No se pudo crear la suscripción',
verifyFailed: 'No se pudieron verificar las credenciales',
authFailed: 'Autorización fallida',
networkError: 'Error de red, por favor intenta de nuevo',
},
},
events: {
title: 'Eventos Disponibles',
description: 'Eventos a los que este complemento de activación puede suscribirse',
empty: 'No hay eventos disponibles',
event: 'Evento',
events: 'Eventos',
actionNum: '{{num}} {{event}} INCLUIDO',
item: {
parameters: 'parámetros {{count}}',
noParameters: 'Sin parámetros',
},
output: 'Salida',
},
node: {
status: {
warning: 'Desconectar',
},
},
}
export default translation

View File

@@ -0,0 +1,354 @@
const translation = {
category: {
bundles: 'Paquetes',
all: 'Todo',
extensions: 'Extensiones',
tools: 'Herramientas',
agents: 'Estrategias de los agentes',
models: 'Modelos',
datasources: 'Fuentes de datos',
triggers: 'Desencadenantes',
},
categorySingle: {
bundle: 'Haz',
extension: 'Extensión',
tool: 'Herramienta',
model: 'Modelo',
agent: 'Estrategia del agente',
datasource: 'Fuente de datos',
trigger: 'Disparador',
},
list: {
source: {
marketplace: 'Instalar desde Marketplace',
github: 'Instalar desde GitHub',
local: 'Instalar desde el archivo de paquete local',
},
noInstalled: 'No hay plugins instalados',
notFound: 'No se han encontrado plugins',
},
source: {
marketplace: 'Mercado',
local: 'Archivo de paquete local',
github: 'GitHub (en inglés)',
},
detailPanel: {
categoryTip: {
local: 'Plugin Local',
marketplace: 'Instalado desde Marketplace',
github: 'Instalado desde Github',
debugging: 'Complemento de depuración',
},
operation: {
viewDetail: 'Ver Detalle',
detail: 'Detalles',
checkUpdate: 'Comprobar actualización',
install: 'Instalar',
remove: 'Eliminar',
info: 'Información del plugin',
update: 'Actualizar',
back: 'Atrás',
},
toolSelector: {
toolLabel: 'Herramienta',
paramsTip1: 'Controla los parámetros de inferencia de LLM.',
settings: 'CONFIGURACIÓN DEL USUARIO',
unsupportedContent2: 'Haga clic para cambiar de versión.',
descriptionPlaceholder:
'Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura para una ubicación específica.',
empty:
'Haga clic en el botón \'+\' para agregar herramientas. Puede agregar varias herramientas.',
paramsTip2:
'Cuando \'Auto\' está desactivado, se utiliza el valor predeterminado.',
uninstalledTitle: 'Herramienta no instalada',
descriptionLabel: 'Descripción de la herramienta',
unsupportedContent:
'La versión del plugin instalado no proporciona esta acción.',
auto: 'Auto',
title: 'Agregar herramienta',
placeholder: 'Seleccione una herramienta...',
uninstalledContent:
'Este plugin se instala desde el repositorio local/GitHub. Úselo después de la instalación.',
unsupportedTitle: 'Acción no admitida',
params: 'CONFIGURACIÓN DE RAZONAMIENTO',
uninstalledLink: 'Administrar en Plugins',
toolSetting: 'Configuraciones de la herramienta',
unsupportedMCPTool:
'La versión actual del plugin de estrategia del agente seleccionado no es compatible con las herramientas MCP.',
},
endpointDeleteContent: '¿Te gustaría eliminar {{nombre}}?',
endpointDisableTip: 'Deshabilitar punto de conexión',
endpointDeleteTip: 'Eliminar punto de conexión',
strategyNum: '{{num}} {{estrategia}} INCLUIDO',
disabled: 'Deshabilitado',
serviceOk: 'Servicio OK',
endpointDisableContent: '¿Te gustaría desactivar {{name}}?',
switchVersion: 'Versión del interruptor',
endpointsTip:
'Este complemento proporciona funcionalidades específicas a través de puntos finales, y puede configurar varios conjuntos de puntos finales para el espacio de trabajo actual.',
configureModel: 'Configurar modelo',
actionNum: '{{num}} {{acción}} INCLUIDO',
configureTool: 'Herramienta de configuración',
endpointModalDesc:
'Una vez configurado, se pueden utilizar las funciones proporcionadas por el complemento a través de los puntos finales de la API.',
modelNum: '{{num}} MODELOS INCLUIDOS',
endpoints: 'Extremos',
endpointModalTitle: 'Punto de conexión de configuración',
endpointsDocLink: 'Ver el documento',
endpointsEmpty:
'Haga clic en el botón \'+\' para agregar un punto de conexión',
configureApp: 'Configurar la aplicación',
deprecation: {
reason: {
ownershipTransferred: 'propiedad transferida',
noMaintainer: 'sin mantenedor',
businessAdjustments: 'ajustes comerciales',
},
noReason:
'Este complemento ha sido descontinuado y ya no se actualizará.',
onlyReason:
'Este complemento ha sido desaprobado debido a {{deprecatedReason}} y ya no se actualizará.',
fullMessage:
'Este complemento ha sido descontinuado debido a {{deprecatedReason}}, y ya no será actualizado. Por favor, utilice <CustomLink href=\'https://example.com/\'>{{-alternativePluginId}}</CustomLink> en su lugar.',
},
},
debugInfo: {
title: 'Depuración',
viewDocs: 'Ver documentos',
},
privilege: {
everyone: 'Todos',
title: 'Preferencias del plugin',
whoCanDebug: '¿Quién puede depurar plugins?',
admins: 'Administradores',
whoCanInstall: '¿Quién puede instalar y administrar complementos?',
noone: 'Nadie',
},
pluginInfoModal: {
repository: 'Depósito',
title: 'Información del plugin',
packageName: 'Paquete',
release: 'Lanzamiento',
},
action: {
checkForUpdates: 'Buscar actualizaciones',
deleteContentLeft: '¿Le gustaría eliminar',
deleteContentRight: '¿Complemento?',
usedInApps: 'Este plugin se está utilizando en las aplicaciones {{num}}.',
delete: 'Eliminar plugin',
pluginInfo: 'Información del plugin',
},
installModal: {
labels: {
repository: 'Depósito',
version: 'Versión',
package: 'Paquete',
},
installPlugin: 'Instalar plugin',
close: 'Cerrar',
uploadingPackage: 'Subiendo {{packageName}}...',
installComplete: 'Instalación completa',
installFailed: 'Error de instalación',
fromTrustSource:
'Por favor, asegúrate de que sólo instalas plugins de una <trustSource>fuente de confianza</trustSource>.',
installedSuccessfullyDesc: 'El plugin se ha instalado correctamente.',
back: 'Atrás',
installFailedDesc: 'El plugin ha fallado en la instalación.',
installing: 'Instalar...',
next: 'Próximo',
readyToInstallPackages:
'A punto de instalar los siguientes plugins {{num}}',
cancel: 'Cancelar',
uploadFailed: 'Error de carga',
install: 'Instalar',
pluginLoadError: 'Error de carga del plugin',
pluginLoadErrorDesc: 'Este plugin no se instalará',
readyToInstall: 'A punto de instalar el siguiente plugin',
dropPluginToInstall:
'Suelte el paquete del complemento aquí para instalarlo',
readyToInstallPackage: 'A punto de instalar el siguiente plugin',
installedSuccessfully: 'Instalación exitosa',
installWarning: 'Este plugin no está permitido para instalar.',
},
installFromGitHub: {
uploadFailed: 'Error de carga',
updatePlugin: 'Actualizar plugin desde GitHub',
selectPackagePlaceholder: 'Por favor, seleccione un paquete',
installedSuccessfully: 'Instalación exitosa',
installNote:
'Por favor, asegúrate de que sólo instalas plugins de una fuente de confianza.',
gitHubRepo: 'Repositorio de GitHub',
selectPackage: 'Seleccionar paquete',
selectVersion: 'Seleccionar versión',
selectVersionPlaceholder: 'Por favor, seleccione una versión',
installPlugin: 'Instalar plugin desde GitHub',
installFailed: 'Error de instalación',
},
upgrade: {
upgrading: 'Instalar...',
close: 'Cerrar',
description: 'A punto de instalar el siguiente plugin',
upgrade: 'Instalar',
title: 'Instalar plugin',
successfulTitle: 'Instalación correcta',
usedInApps: 'Usado en aplicaciones {{num}}',
},
error: {
fetchReleasesError:
'No se pueden recuperar las versiones. Por favor, inténtelo de nuevo más tarde.',
noReleasesFound:
'No se han encontrado versiones. Compruebe el repositorio de GitHub o la URL de entrada.',
inValidGitHubUrl:
'URL de GitHub no válida. Introduzca una URL válida en el formato: https://github.com/owner/repo',
},
marketplace: {
sortOption: {
recentlyUpdated: 'Actualizado recientemente',
newlyReleased: 'Recién estrenado',
firstReleased: 'Lanzado por primera vez',
mostPopular: 'Lo más popular',
},
empower: 'Potencie su desarrollo de IA',
moreFrom: 'Más de Marketplace',
viewMore: 'Ver más',
sortBy: 'Ordenar por',
noPluginFound: 'No se ha encontrado ningún plugin',
pluginsResult: '{{num}} resultados',
discover: 'Descubrir',
and: 'y',
difyMarketplace: 'Mercado de Dify',
verifiedTip: 'Verificado por Dify',
partnerTip: 'Verificado por un socio de Dify',
},
task: {
installing: 'Instalando plugins {{installingLength}}, 0 hecho.',
clearAll: 'Borrar todo',
installingWithSuccess:
'Instalando plugins {{installingLength}}, {{successLength}} éxito.',
installedError: 'Los complementos {{errorLength}} no se pudieron instalar',
installError:
'Los complementos {{errorLength}} no se pudieron instalar, haga clic para ver',
installingWithError:
'Instalando plugins {{installingLength}}, {{successLength}} éxito, {{errorLength}} fallido',
},
fromMarketplace: 'De Marketplace',
endpointsEnabled: '{{num}} conjuntos de puntos finales habilitados',
from: 'De',
installAction: 'Instalar',
install: '{{num}} instalaciones',
allCategories: 'Todas las categorías',
searchCategories: 'Categorías de búsqueda',
installFrom: 'INSTALAR DESDE',
search: 'Buscar',
searchInMarketplace: 'Buscar en Marketplace',
searchTools: 'Herramientas de búsqueda...',
findMoreInMarketplace: 'Más información en Marketplace',
installPlugin: 'Instalar plugin',
searchPlugins: 'Plugins de búsqueda',
metadata: {
title: 'Complementos',
},
difyVersionNotCompatible:
'La versión actual de Dify no es compatible con este plugin, por favor actualiza a la versión mínima requerida: {{minimalDifyVersion}}',
requestAPlugin: 'Solicitar un plugin',
publishPlugins: 'Publicar plugins',
auth: {
oauthClient: 'Cliente OAuth',
authorizationName: 'Nombre de autorización',
authorization: 'Autorización',
addApi: 'Agregar clave API',
useApiAuth: 'Configuración de Autorización de Clave API',
addOAuth: 'Agregar OAuth',
authorizations: 'Autorizaciones',
authRemoved: 'Autorización retirada',
useOAuthAuth: 'Usar autorización OAuth',
setupOAuth: 'Configurar el cliente OAuth',
saveAndAuth: 'Guardar y autorizar',
useApi: 'Usa la clave de API',
workspaceDefault: 'Espacio de trabajo predeterminado',
custom: 'Personalizado',
useOAuth: 'Usa OAuth',
setDefault: 'Establecer como predeterminado',
useApiAuthDesc:
'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones.',
saveOnly: 'Guardar solo',
clientInfo:
'Como no se encontraron secretos de cliente del sistema para este proveedor de herramientas, se requiere configurarlo manualmente. Para redirect_uri, por favor utiliza',
oauthClientSettings: 'Configuración del cliente OAuth',
default: 'Predeterminado',
customCredentialUnavailable:
'Las credenciales personalizadas no están disponibles actualmente.',
unavailable: 'No disponible',
credentialUnavailable:
'Credenciales actualmente no disponibles. Por favor, contacte al administrador.',
credentialUnavailableInButton: 'Credencial no disponible',
emptyAuth: 'Configure la autenticación',
connectedWorkspace: 'Espacio de trabajo conectado',
},
deprecated: 'Obsoleto',
autoUpdate: {
strategy: {
disabled: {
description: 'Los plugins no se actualizarán automáticamente',
name: 'Discapacitado',
},
fixOnly: {
name: 'Arreglar Solo',
selectedDescription:
'Actualización automática solo para versiones de parches',
description:
'Actualización automática solo para versiones de parche (por ejemplo, 1.0.1 → 1.0.2). Los cambios de versión menor no activarán actualizaciones.',
},
latest: {
selectedDescription: 'Siempre actualiza a la última versión',
description: 'Siempre actualiza a la última versión',
name: 'último',
},
},
upgradeMode: {
partial: 'Solo seleccionado',
all: 'Actualizar todo',
exclude: 'Excluir seleccionado',
},
upgradeModePlaceholder: {
exclude: 'Los plugins seleccionados no se actualizarán automáticamente',
partial:
'Solo los plugins seleccionados se actualizarán automáticamente. Actualmente no hay plugins seleccionados, por lo que no se actualizarán automáticamente.',
},
operation: {
clearAll: 'Borrar todo',
select: 'Seleccionar complementos',
},
pluginDowngradeWarning: {
title: 'Degradar plugin',
exclude: 'Excluir de la actualización automática',
downgrade: 'De todas formas, degradar',
description:
'La actualización automática está actualmente habilitada para este complemento. Downgradear la versión puede hacer que tus cambios se sobrescriban durante la próxima actualización automática.',
},
noPluginPlaceholder: {
noFound: 'No se encontraron complementos',
noInstalled: 'No hay plugins instalados',
},
updateTimeTitle: 'Hora de actualización',
nextUpdateTime: 'Próxima autoactualización: {{time}}',
specifyPluginsToUpdate: 'Especifique qué complementos actualizar',
updateTime: 'Actualizar tiempo',
updateSettings: 'Actualizar configuraciones',
excludeUpdate:
'Los siguientes {{num}} complementos no se actualizarán automáticamente',
partialUPdate:
'Solo los siguientes {{num}} complementos se actualizarán automáticamente',
changeTimezone:
'Para cambiar la zona horaria, ve a <setTimezone>Configuración</setTimezone>.',
automaticUpdates: 'Actualizaciones automáticas',
},
readmeInfo: {
title: 'LEEME',
needHelpCheckReadme: '¿Necesitas ayuda? Revisa el README.',
noReadmeAvailable: 'No hay archivo README disponible',
failedToFetch: 'No se pudo obtener el README',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'ENTRADA',
result: 'RESULTADO',
detail: 'DETALLE',
tracing: 'TRAZADO',
resultPanel: {
status: 'ESTADO',
time: 'TIEMPO TRANSCURRIDO',
tokens: 'TOTAL DE TOKENS',
},
meta: {
title: 'METADATOS',
status: 'Estado',
version: 'Versión',
executor: 'Ejecutor',
startTime: 'Hora de inicio',
time: 'Tiempo transcurrido',
tokens: 'Total de tokens',
steps: 'Pasos de ejecución',
},
resultEmpty: {
title: 'Esta ejecución solo produce formato JSON,',
tipLeft: 'por favor ve al ',
link: 'panel de detalle',
tipRight: ' para verlo.',
},
actionLogs: 'Registros de acciones',
circularInvocationTip: 'Hay una invocación circular de herramientas/nodos en el flujo de trabajo actual.',
}
export default translation

View File

@@ -0,0 +1,86 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'La aplicación no está disponible',
appUnknownError: 'La aplicación no está disponible',
},
chat: {
newChat: 'Nuevo chat',
pinnedTitle: 'Fijados',
unpinnedTitle: 'Chats',
newChatDefaultName: 'Nueva conversación',
resetChat: 'Reiniciar conversación',
poweredBy: 'Desarrollado por',
prompt: 'Indicación',
privatePromptConfigTitle: 'Configuración de la conversación',
publicPromptConfigTitle: 'Indicación inicial',
configStatusDes: 'Antes de comenzar, puedes modificar la configuración de la conversación',
configDisabled:
'Se han utilizado las configuraciones de la sesión anterior para esta sesión.',
startChat: 'Iniciar chat',
privacyPolicyLeft:
'Por favor, lee la ',
privacyPolicyMiddle:
'política de privacidad',
privacyPolicyRight:
' proporcionada por el desarrollador de la aplicación.',
deleteConversation: {
title: 'Eliminar conversación',
content: '¿Estás seguro/a de que quieres eliminar esta conversación?',
},
tryToSolve: 'Intentar resolver',
temporarySystemIssue: 'Lo sentimos, hay un problema temporal del sistema.',
expand: 'Ampliar',
collapse: 'Contraer',
viewChatSettings: 'Ver configuraciones de chat',
newChatTip: 'Ya en un nuevo chat',
chatFormTip: 'No se pueden modificar los ajustes del chat después de que el chat ha comenzado.',
chatSettingsTitle: 'Nueva configuración de chat',
},
generation: {
tabs: {
create: 'Ejecutar una vez',
batch: 'Ejecutar en lote',
saved: 'Guardado',
},
savedNoData: {
title: '¡Aún no has guardado ningún resultado!',
description: 'Comienza a generar contenido y encuentra tus resultados guardados aquí.',
startCreateContent: 'Comenzar a crear contenido',
},
title: 'Completado por IA',
queryTitle: 'Contenido de la consulta',
completionResult: 'Resultado del completado',
queryPlaceholder: 'Escribe tu contenido de consulta...',
run: 'Ejecutar',
copy: 'Copiar',
resultTitle: 'Completado por IA',
noData: 'La IA te dará lo que deseas aquí.',
csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ',
browse: 'navega',
csvStructureTitle: 'El archivo CSV debe cumplir con la siguiente estructura:',
downloadTemplate: 'Descarga la plantilla aquí',
field: 'Campo',
batchFailed: {
info: '{{num}} ejecuciones fallidas',
retry: 'Reintentar',
outputPlaceholder: 'Sin contenido de salida',
},
errorMsg: {
empty: 'Por favor, ingresa contenido en el archivo cargado.',
fileStructNotMatch: 'El archivo CSV cargado no coincide con la estructura.',
emptyLine: 'La fila {{rowIndex}} está vacía',
invalidLine: 'Fila {{rowIndex}}: el valor de {{varName}} no puede estar vacío',
moreThanMaxLengthLine: 'Fila {{rowIndex}}: el valor de {{varName}} no puede tener más de {{maxLength}} caracteres',
atLeastOne: 'Por favor, ingresa al menos una fila en el archivo cargado.',
},
execution: 'Ejecutar',
executions: '{{num}} ejecuciones',
stopRun: 'Detener ejecución',
},
login: {
backToHome: 'Volver a Inicio',
},
}
export default translation

View File

@@ -0,0 +1,44 @@
const translation = {
daysInWeek: {
Sun: 'Sol',
Thu: 'Jue',
Tue: 'Mar',
Sat: 'Sáb',
Mon: 'Mon',
Fri: 'Viernes',
Wed: 'Miércoles',
},
months: {
August: 'Agosto',
September: 'Septiembre',
April: 'Abril',
February: 'Febrero',
January: 'Enero',
November: 'Noviembre',
October: 'octubre',
May: 'Mayo',
June: 'Junio',
December: 'Diciembre',
July: 'Julio',
March: 'Marzo',
},
operation: {
ok: 'De acuerdo',
pickDate: 'Seleccionar fecha',
cancel: 'Cancelar',
now: 'Ahora',
},
title: {
pickTime: 'Elegir hora',
},
defaultPlaceholder: 'Elige una hora...',
dateFormats: {
input: 'AAAA-MM-DD',
output: 'AAAA-MM-DD',
display: 'MMMM D, AAAA',
outputWithTime: 'AAAA-MM-DDTHH:mm:ss.SSSZ',
displayWithTime: 'MMMM D, YYYY hh:mm A',
},
}
export default translation

View File

@@ -0,0 +1,257 @@
const translation = {
title: 'Herramientas',
createCustomTool: 'Crear Herramienta Personalizada',
customToolTip: 'Aprende más sobre las herramientas personalizadas de Dify',
type: {
builtIn: 'Incorporadas',
custom: 'Personalizadas',
workflow: 'Flujo de Trabajo',
},
contribute: {
line1: 'Estoy interesado en ',
line2: 'contribuir herramientas a Dify.',
viewGuide: 'Ver la guía',
},
author: 'Por',
auth: {
authorized: 'Autorizado',
setup: 'Configurar la autorización para usar',
setupModalTitle: 'Configurar Autorización',
setupModalTitleDescription: 'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones.',
},
includeToolNum: '{{num}} herramientas incluidas',
addToolModal: {
type: 'tipo',
category: 'categoría',
added: 'agregada',
custom: {
title: 'No hay herramienta personalizada disponible',
tip: 'Crear una herramienta personalizada',
},
workflow: {
title: 'No hay herramienta de flujo de trabajo disponible',
tip: 'Publicar flujos de trabajo como herramientas en el Estudio',
},
mcp: {
title: 'No hay herramienta MCP disponible',
tip: 'Añadir un servidor MCP',
},
agent: {
title: 'No hay estrategia de agente disponible',
},
},
createTool: {
title: 'Crear Herramienta Personalizada',
editAction: 'Configurar',
editTitle: 'Editar Herramienta Personalizada',
name: 'Nombre',
toolNamePlaceHolder: 'Ingresa el nombre de la herramienta',
nameForToolCall: 'Nombre de llamada de la herramienta',
nameForToolCallPlaceHolder: 'Utilizado para el reconocimiento automático, como getCurrentWeather, list_pets',
nameForToolCallTip: 'Solo soporta números, letras y guiones bajos.',
description: 'Descripción',
descriptionPlaceholder: 'Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura de una ubicación específica.',
schema: 'Esquema',
schemaPlaceHolder: 'Ingresa tu esquema OpenAPI aquí',
viewSchemaSpec: 'Ver la Especificación OpenAPI-Swagger',
importFromUrl: 'Importar desde URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Por favor, ingresa una URL válida',
examples: 'Ejemplos',
exampleOptions: {
json: 'Clima (JSON)',
yaml: 'Tienda de Mascotas (YAML)',
blankTemplate: 'Plantilla en Blanco',
},
availableTools: {
title: 'Herramientas Disponibles',
name: 'Nombre',
description: 'Descripción',
method: 'Método',
path: 'Ruta',
action: 'Acciones',
test: 'Probar',
},
authMethod: {
title: 'Método de Autorización',
type: 'Tipo de Autorización',
keyTooltip: 'Clave del encabezado HTTP, puedes dejarla como "Authorization" si no tienes idea de qué es o configurarla con un valor personalizado',
types: {
none: 'Ninguno',
apiKeyPlaceholder: 'Nombre del encabezado HTTP para la Clave API',
apiValuePlaceholder: 'Ingresa la Clave API',
api_key_header: 'Encabezado',
api_key_query: 'Parámetro de consulta',
queryParamPlaceholder: 'Nombre del parámetro de consulta para la clave de API',
},
key: 'Clave',
value: 'Valor',
queryParam: 'Parámetro de consulta',
queryParamTooltip: 'El nombre del parámetro de consulta de clave de API que se debe pasar, por ejemplo, "key" en "https://example.com/test?key=API_KEY".',
},
authHeaderPrefix: {
title: 'Tipo de Autenticación',
types: {
basic: 'Básica',
bearer: 'Bearer',
custom: 'Personalizada',
},
},
privacyPolicy: 'Política de Privacidad',
privacyPolicyPlaceholder: 'Por favor, ingresa la política de privacidad',
toolInput: {
title: 'Entrada de la Herramienta',
name: 'Nombre',
required: 'Requerido',
method: 'Método',
methodSetting: 'Configuración',
methodSettingTip: 'El usuario completa la configuración de la herramienta',
methodParameter: 'Parámetro',
methodParameterTip: 'LLM completa durante la inferencia',
label: 'Etiquetas',
labelPlaceholder: 'Elige etiquetas (opcional)',
description: 'Descripción',
descriptionPlaceholder: 'Descripción del significado del parámetro',
},
customDisclaimer: 'Descargo de responsabilidad personalizado',
customDisclaimerPlaceholder: 'Por favor, ingresa el descargo de responsabilidad personalizado',
confirmTitle: '¿Confirmar para guardar?',
confirmTip: 'Las aplicaciones que usen esta herramienta se verán afectadas',
deleteToolConfirmTitle: '¿Eliminar esta Herramienta?',
deleteToolConfirmContent: 'Eliminar la herramienta es irreversible. Los usuarios ya no podrán acceder a tu herramienta.',
},
test: {
title: 'Probar',
parametersValue: 'Parámetros y Valor',
parameters: 'Parámetros',
value: 'Valor',
testResult: 'Resultados de la Prueba',
testResultPlaceholder: 'El resultado de la prueba se mostrará aquí',
},
thought: {
using: 'Usando',
used: 'Usado',
requestTitle: 'Solicitud a',
responseTitle: 'Respuesta de',
},
setBuiltInTools: {
info: 'Información',
setting: 'Ajuste',
toolDescription: 'Descripción de la herramienta',
parameters: 'parámetros',
string: 'cadena',
number: 'número',
required: 'Requerido',
infoAndSetting: 'Información y Ajustes',
file: 'archivo',
},
noCustomTool: {
title: '¡Sin herramientas personalizadas!',
content: 'Agrega y administra tus herramientas personalizadas aquí para construir aplicaciones de inteligencia artificial.',
createTool: 'Crear Herramienta',
},
noSearchRes: {
title: '¡Lo sentimos, no hay resultados!',
content: 'No encontramos herramientas que coincidan con tu búsqueda.',
reset: 'Restablecer Búsqueda',
},
builtInPromptTitle: 'Aviso',
toolRemoved: 'Herramienta eliminada',
notAuthorized: 'Herramienta no autorizada',
howToGet: 'Cómo obtener',
openInStudio: 'Abrir en Studio',
toolNameUsageTip: 'Nombre de llamada de la herramienta para razonamiento y promoción de agentes',
copyToolName: 'Nombre de la copia',
noTools: 'No se han encontrado herramientas',
mcp: {
create: {
cardTitle: 'Añadir servidor MCP (HTTP)',
cardLink: 'Más información sobre integración de servidores MCP',
},
noConfigured: 'Servidor no configurado',
updateTime: 'Actualizado',
toolsCount: '{{count}} herramientas',
noTools: 'No hay herramientas disponibles',
modal: {
title: 'Añadir servidor MCP (HTTP)',
editTitle: 'Editar servidor MCP (HTTP)',
name: 'Nombre e Icono',
namePlaceholder: 'Nombre de su servidor MCP',
serverUrl: 'URL del servidor',
serverUrlPlaceholder: 'URL del endpoint del servidor',
serverUrlWarning: 'Actualizar la dirección del servidor puede interrumpir aplicaciones que dependan de él',
serverIdentifier: 'Identificador del servidor',
serverIdentifierTip: 'Identificador único del servidor MCP en el espacio de trabajo. Solo letras minúsculas, números, guiones bajos y guiones. Máximo 24 caracteres.',
serverIdentifierPlaceholder: 'Identificador único, ej. mi-servidor-mcp',
serverIdentifierWarning: 'El servidor no será reconocido por aplicaciones existentes tras cambiar la ID',
cancel: 'Cancelar',
save: 'Guardar',
confirm: 'Añadir y Autorizar',
sseReadTimeout: 'Tiempo de espera de lectura SSE',
timeout: 'Tiempo de espera',
timeoutPlaceholder: 'treinta',
headers: 'Encabezados',
addHeader: 'Agregar encabezado',
headerValuePlaceholder: 'por ejemplo, token de portador123',
headersTip: 'Encabezados HTTP adicionales para enviar con las solicitudes del servidor MCP',
maskedHeadersTip: 'Los valores del encabezado están enmascarados por seguridad. Los cambios actualizarán los valores reales.',
headerKeyPlaceholder: 'por ejemplo, Autorización',
headerValue: 'Valor del encabezado',
noHeaders: 'No se han configurado encabezados personalizados',
headerKey: 'Nombre del encabezado',
authentication: 'Autenticación',
clientID: 'ID del Cliente',
clientSecretPlaceholder: 'Secreto del Cliente',
useDynamicClientRegistration: 'Usar registro dinámico de clientes',
clientSecret: 'Secreto del Cliente',
configurations: 'Configuraciones',
redirectUrlWarning: 'Por favor, configure su URL de redireccionamiento OAuth a:',
},
delete: 'Eliminar servidor MCP',
deleteConfirmTitle: '¿Eliminar {{mcp}}?',
operation: {
edit: 'Editar',
remove: 'Eliminar',
},
authorize: 'Autorizar',
authorizing: 'Autorizando...',
authorizingRequired: 'Se requiere autorización',
authorizeTip: 'Tras la autorización, las herramientas se mostrarán aquí.',
update: 'Actualizar',
updating: 'Actualizando',
gettingTools: 'Obteniendo herramientas...',
updateTools: 'Actualizando herramientas...',
toolsEmpty: 'Herramientas no cargadas',
getTools: 'Obtener herramientas',
toolUpdateConfirmTitle: 'Actualizar lista de herramientas',
toolUpdateConfirmContent: 'Actualizar la lista puede afectar a aplicaciones existentes. ¿Continuar?',
toolsNum: '{{count}} herramientas incluidas',
onlyTool: '1 herramienta incluida',
identifier: 'Identificador del servidor (Haz clic para copiar)',
server: {
title: 'Servidor MCP',
url: 'URL del servidor',
reGen: '¿Regenerar URL del servidor?',
addDescription: 'Añadir descripción',
edit: 'Editar descripción',
modal: {
addTitle: 'Añade descripción para habilitar el servidor MCP',
editTitle: 'Editar descripción',
description: 'Descripción',
descriptionPlaceholder: 'Explica qué hace esta herramienta y cómo debe usarla el LLM',
parameters: 'Parámetros',
parametersTip: 'Añade descripciones de cada parámetro para ayudar al LLM a entender su propósito y restricciones.',
parametersPlaceholder: 'Propósito y restricciones del parámetro',
confirm: 'Habilitar servidor MCP',
},
publishTip: 'App no publicada. Publícala primero.',
},
toolItem: {
noDescription: 'Sin descripción',
parameters: 'Parámetros',
},
},
allTools: 'Todas las herramientas',
}
export default translation

File diff suppressed because it is too large Load Diff