Merge branch 'develop' of codeberg.org:calckey/calckey into develop

This commit is contained in:
ThatOneCalculator 2023-06-27 19:25:14 -07:00
commit 23da13edac
No known key found for this signature in database
GPG Key ID: 8703CACD01000000
22 changed files with 391 additions and 305 deletions

View File

@ -1053,6 +1053,7 @@ recommendedInstancesDescription: "Recommended servers separated by line breaks t
caption: "Auto Caption" caption: "Auto Caption"
splash: "Splash Screen" splash: "Splash Screen"
updateAvailable: "There might be an update available!" updateAvailable: "There might be an update available!"
swipeOnMobile: "Allow swiping between pages"
swipeOnDesktop: "Allow mobile-style swiping on desktop" swipeOnDesktop: "Allow mobile-style swiping on desktop"
logoImageUrl: "Logo image URL" logoImageUrl: "Logo image URL"
showAdminUpdates: "Indicate a new Calckey version is avaliable (admin only)" showAdminUpdates: "Indicate a new Calckey version is avaliable (admin only)"

View File

@ -1,8 +1,8 @@
_lang_: "Español" _lang_: "Español"
headlineMisskey: "¡Un proyecto de código abierto y una plataforma de medios de comunicación\ headlineMisskey: "¡Un proyecto de código abierto y una plataforma de medios de comunicación
\ descentralizada que es gratis para siempre! \U0001F680" descentralizada que es gratis para siempre! 🚀"
introMisskey: "¡Bienvenido! ¡Calckey es un proyecto de código abierto, plataforma\ introMisskey: "¡Bienvenido! ¡Calckey es un proyecto de código abierto, plataforma
\ descentralizado medios de comunicación social que es gratis para siempre! \U0001F680" descentralizado medios de comunicación social que es gratis para siempre! 🚀"
monthAndDay: "{day}/{month}" monthAndDay: "{day}/{month}"
search: "Buscar" search: "Buscar"
notifications: "Notificaciones" notifications: "Notificaciones"
@ -17,7 +17,7 @@ enterUsername: "Introduce el nombre de usuario"
renotedBy: "Impulsado por {user}" renotedBy: "Impulsado por {user}"
noNotes: "No hay publicaciones" noNotes: "No hay publicaciones"
noNotifications: "No hay notificaciones" noNotifications: "No hay notificaciones"
instance: "Instancia" instance: "Servidor"
settings: "Configuración" settings: "Configuración"
basicSettings: "Configuración Básica" basicSettings: "Configuración Básica"
otherSettings: "Configuración avanzada" otherSettings: "Configuración avanzada"
@ -45,8 +45,8 @@ copyContent: "Copiar contenido"
copyLink: "Copiar enlace" copyLink: "Copiar enlace"
delete: "Borrar" delete: "Borrar"
deleteAndEdit: "Borrar y editar" deleteAndEdit: "Borrar y editar"
deleteAndEditConfirm: "¿Estás seguro de que quieres borrar esta publicación y editarla?\ deleteAndEditConfirm: "¿Estás seguro de que quieres borrar esta publicación y editarla?
\ Perderás todas las reacciones, impulsos y respuestas." Perderás todas las reacciones, impulsos y respuestas."
addToList: "Agregar a lista" addToList: "Agregar a lista"
sendMessage: "Enviar un mensaje" sendMessage: "Enviar un mensaje"
copyUsername: "Copiar nombre de usuario" copyUsername: "Copiar nombre de usuario"
@ -66,11 +66,11 @@ import: "Importar"
export: "Exportar" export: "Exportar"
files: "Archivos" files: "Archivos"
download: "Descargar" download: "Descargar"
driveFileDeleteConfirm: "¿Desea borrar el archivo \"{name}\"? Las publicaciones que\ driveFileDeleteConfirm: "¿Desea borrar el archivo \"{name}\"? Será removido de todas
\ tengan este archivo como adjunto serán eliminadas." las publicaciones que tengan este archivo adjunto."
unfollowConfirm: "¿Desea dejar de seguir a {name}?" unfollowConfirm: "¿Desea dejar de seguir a {name}?"
exportRequested: "Se ha solicitado la exportación. Puede tomar un tiempo. Cuando termine\ exportRequested: "Se ha solicitado la exportación. Puede tomar un tiempo. Cuando termine
\ la exportación, se añadirá en el drive." la exportación, se añadirá en el drive."
importRequested: "Se ha solicitado la importación. Puede tomar un tiempo." importRequested: "Se ha solicitado la importación. Puede tomar un tiempo."
lists: "Listas" lists: "Listas"
noLists: "No tiene listas" noLists: "No tiene listas"
@ -85,11 +85,11 @@ error: "Error"
somethingHappened: "Ocurrió un error" somethingHappened: "Ocurrió un error"
retry: "Reintentar" retry: "Reintentar"
pageLoadError: "Error al cargar la página." pageLoadError: "Error al cargar la página."
pageLoadErrorDescription: "Normalmente es debido a la red o al caché del navegador.\ pageLoadErrorDescription: "Normalmente es debido a la red o al caché del navegador.
\ Por favor limpie el caché o intente más tarde." Por favor limpie el caché o intente más tarde."
serverIsDead: "No hay respuesta del servidor. Espere un momento y vuelva a intentarlo." serverIsDead: "No hay respuesta del servidor. Espere un momento y vuelva a intentarlo."
youShouldUpgradeClient: "Para ver esta página, por favor refrezca el navegador y utiliza\ youShouldUpgradeClient: "Para ver esta página, por favor refrezca el navegador y utiliza
\ una versión más reciente del cliente." una versión más reciente del cliente."
enterListName: "Ingrese nombre de lista" enterListName: "Ingrese nombre de lista"
privacy: "Privacidad" privacy: "Privacidad"
makeFollowManuallyApprove: "Aprobar manualmente las solicitudes de seguimiento" makeFollowManuallyApprove: "Aprobar manualmente las solicitudes de seguimiento"
@ -114,8 +114,8 @@ sensitive: "Marcado como sensible"
add: "Agregar" add: "Agregar"
reaction: "Reacción" reaction: "Reacción"
reactionSetting: "Reacciones para mostrar en el menú de reacciones" reactionSetting: "Reacciones para mostrar en el menú de reacciones"
reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete\ reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete
\ la tecla + para añadir." la tecla + para añadir."
rememberNoteVisibility: "Recordar la configuración de visibilidad de la publicación" rememberNoteVisibility: "Recordar la configuración de visibilidad de la publicación"
attachCancel: "Quitar adjunto" attachCancel: "Quitar adjunto"
markAsSensitive: "Marcar como sensible" markAsSensitive: "Marcar como sensible"
@ -144,24 +144,24 @@ emojiUrl: "URL de la imágen del emoji"
addEmoji: "Agregar emoji" addEmoji: "Agregar emoji"
settingGuide: "Configuración sugerida" settingGuide: "Configuración sugerida"
cacheRemoteFiles: "Mantener en cache los archivos remotos" cacheRemoteFiles: "Mantener en cache los archivos remotos"
cacheRemoteFilesDescription: "Si desactiva esta configuración, Los archivos remotos\ cacheRemoteFilesDescription: "Si desactiva esta configuración, los archivos remotos
\ se cargarán desde el link directo sin usar la caché. Con eso se puede ahorrar\ se cargarán desde el servidor remoto sin usar la caché. Con eso se puede ahorrar
\ almacenamiento del servidor, pero eso aumentará el tráfico al no crear miniaturas." almacenamiento del servidor, pero eso aumentará el tráfico al no crear miniaturas."
flagAsBot: "Esta cuenta es un bot" flagAsBot: "Esta cuenta es un bot"
flagAsBotDescription: "En caso de que esta cuenta fuera usada por un programa, active\ flagAsBotDescription: "En caso de que esta cuenta fuera usada por un programa, active
\ esta opción. Al hacerlo, esta opción servirá para otros desarrolladores para evitar\ esta opción. Al hacerlo, esta opción servirá para otros desarrolladores para evitar
\ cadenas infinitas de reacciones, y ajustará los sistemas internos de Calckey para\ cadenas infinitas de reacciones, y ajustará los sistemas internos de Calckey para
\ que trate a esta cuenta como un bot." que trate a esta cuenta como un bot."
flagAsCat: "Esta cuenta es un gato" flagAsCat: "Esta cuenta es un gato"
flagAsCatDescription: "Vas a tener orejas de gato y hablar como un gato!" flagAsCatDescription: "Vas a tener orejas de gato y hablar como un gato!"
flagShowTimelineReplies: "Mostrar respuestas a las notas en la biografía" flagShowTimelineReplies: "Mostrar respuestas a las notas en la biografía"
flagShowTimelineRepliesDescription: "Cuando se marca, la línea de tiempo muestra respuestas\ flagShowTimelineRepliesDescription: "Cuando se marca, la línea de tiempo muestra respuestas
\ a otras publicaciones además de las publicaciones del usuario." a otras publicaciones además de las publicaciones del usuario."
autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los\ autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los
\ usuarios que sigues" usuarios que sigues"
addAccount: "Agregar Cuenta" addAccount: "Agregar Cuenta"
loginFailed: "Error al iniciar sesión" loginFailed: "Error al iniciar sesión"
showOnRemote: "Ver en una instancia remota" showOnRemote: "Ver en servidor remoto"
general: "General" general: "General"
wallpaper: "Fondo de pantalla" wallpaper: "Fondo de pantalla"
setWallpaper: "Establecer fondo de pantalla" setWallpaper: "Establecer fondo de pantalla"
@ -170,17 +170,17 @@ searchWith: "Buscar: {q}"
youHaveNoLists: "No tienes listas" youHaveNoLists: "No tienes listas"
followConfirm: "¿Desea seguir a {name}?" followConfirm: "¿Desea seguir a {name}?"
proxyAccount: "Cuenta proxy" proxyAccount: "Cuenta proxy"
proxyAccountDescription: "Una cuenta proxy es una cuenta que actúa como un seguidor\ proxyAccountDescription: "Una cuenta proxy es una cuenta que actúa como un seguidor
\ remoto de un usuario bajo ciertas condiciones. Por ejemplo, cuando un usuario\ remoto de un usuario bajo ciertas condiciones. Por ejemplo, cuando un usuario añade
\ añade un usuario remoto a una lista, si ningún usuario local sigue al usuario\ un usuario remoto a una lista, si ningún usuario local sigue al usuario agregado
\ agregado a la lista, la instancia no puede obtener su actividad. Así que la cuenta\ a la lista, el servidor no puede obtener su actividad. Así que la cuenta proxy sigue
\ proxy sigue al usuario añadido a la lista." al usuario añadido a la lista."
host: "Host" host: "Host"
selectUser: "Elegir usuario" selectUser: "Elegir usuario"
recipient: "Recipiente" recipient: "Recipiente"
annotation: "Anotación" annotation: "Anotación"
federation: "Federación" federation: "Federación"
instances: "Instancia" instances: "Servidores"
registeredAt: "Registrado en" registeredAt: "Registrado en"
latestRequestSentAt: "Ultimo pedido enviado" latestRequestSentAt: "Ultimo pedido enviado"
latestRequestReceivedAt: "Ultimo pedido recibido" latestRequestReceivedAt: "Ultimo pedido recibido"
@ -190,7 +190,7 @@ charts: "Chat"
perHour: "por hora" perHour: "por hora"
perDay: "por día" perDay: "por día"
stopActivityDelivery: "Dejar de enviar actividades" stopActivityDelivery: "Dejar de enviar actividades"
blockThisInstance: "Bloquear instancia" blockThisInstance: "Bloquear este servidor"
operations: "Operaciones" operations: "Operaciones"
software: "Software" software: "Software"
version: "Versión" version: "Versión"
@ -200,18 +200,17 @@ jobQueue: "Cola de trabajos"
cpuAndMemory: "CPU y Memoria" cpuAndMemory: "CPU y Memoria"
network: "Red" network: "Red"
disk: "Disco" disk: "Disco"
instanceInfo: "información de la instancia" instanceInfo: "Información del servidor"
statistics: "Estadísticas" statistics: "Estadísticas"
clearQueue: "Limpiar cola" clearQueue: "Limpiar cola"
clearQueueConfirmTitle: "¿Desea limpiar la cola?" clearQueueConfirmTitle: "¿Desea limpiar la cola?"
clearQueueConfirmText: "Las publicaciones aún no entregadas no se federarán. Normalmente\ clearQueueConfirmText: "Las publicaciones aún no entregadas no se federarán. Normalmente
\ no se necesita ejecutar esta operación." no se necesita ejecutar esta operación."
clearCachedFiles: "Limpiar caché" clearCachedFiles: "Limpiar caché"
clearCachedFilesConfirm: "¿Desea borrar todos los archivos remotos cacheados?" clearCachedFilesConfirm: "¿Desea borrar todos los archivos remotos cacheados?"
blockedInstances: "Instancias bloqueadas" blockedInstances: "Servidores bloqueados"
blockedInstancesDescription: "Seleccione los hosts de las instancias que desea bloquear,\ blockedInstancesDescription: "Escriba los hosts de los servidores que desea bloquear.
\ separadas por una linea nueva. Las instancias bloqueadas no podrán comunicarse\ Los servidores bloqueados no podrán comunicarse con este servidor."
\ con esta instancia."
muteAndBlock: "Silenciar y bloquear" muteAndBlock: "Silenciar y bloquear"
mutedUsers: "Usuarios silenciados" mutedUsers: "Usuarios silenciados"
blockedUsers: "Usuarios bloqueados" blockedUsers: "Usuarios bloqueados"
@ -234,9 +233,9 @@ all: "Todo"
subscribing: "Suscribiendo" subscribing: "Suscribiendo"
publishing: "Publicando" publishing: "Publicando"
notResponding: "Sin respuestas" notResponding: "Sin respuestas"
instanceFollowing: "Siguiendo instancias" instanceFollowing: "Siguiendo en este servidor"
instanceFollowers: "Seguidores de la instancia" instanceFollowers: "Seguidores del servidor"
instanceUsers: "Usuarios de la instancia" instanceUsers: "Usuarios de este servidor"
changePassword: "Cambiar contraseña" changePassword: "Cambiar contraseña"
security: "Seguridad" security: "Seguridad"
retypedNotMatch: "No hay coincidencia." retypedNotMatch: "No hay coincidencia."
@ -260,9 +259,9 @@ saved: "Guardado"
messaging: "Chat" messaging: "Chat"
upload: "Subir" upload: "Subir"
keepOriginalUploading: "Mantener la imagen original" keepOriginalUploading: "Mantener la imagen original"
keepOriginalUploadingDescription: "Mantener la versión original al cargar imágenes.\ keepOriginalUploadingDescription: "Mantener la versión original al cargar imágenes.
\ Si está desactivado, el navegador generará imágenes para la publicación web en\ Si está desactivado, el navegador generará imágenes para la publicación web en el
\ el momento de recargar la página." momento de recargar la página."
fromDrive: "Desde el drive" fromDrive: "Desde el drive"
fromUrl: "Desde la URL" fromUrl: "Desde la URL"
uploadFromUrl: "Subir desde una URL" uploadFromUrl: "Subir desde una URL"
@ -311,8 +310,8 @@ unableToDelete: "No se puede borrar"
inputNewFileName: "Ingrese un nuevo nombre de archivo" inputNewFileName: "Ingrese un nuevo nombre de archivo"
inputNewDescription: "Ingrese nueva descripción" inputNewDescription: "Ingrese nueva descripción"
inputNewFolderName: "Ingrese un nuevo nombre de la carpeta" inputNewFolderName: "Ingrese un nuevo nombre de la carpeta"
circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que\ circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que
\ quieres mover." quieres mover."
hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía." hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía."
copyUrl: "Copiar URL" copyUrl: "Copiar URL"
rename: "Renombrar" rename: "Renombrar"
@ -329,8 +328,8 @@ unwatch: "Dejar de ver"
accept: "Aceptar" accept: "Aceptar"
reject: "Rechazar" reject: "Rechazar"
normal: "Normal" normal: "Normal"
instanceName: "Nombre de la instancia" instanceName: "Nombre del servidor"
instanceDescription: "Descripción de la instancia" instanceDescription: "Descripción del servidor"
maintainerName: "Nombre del administrador" maintainerName: "Nombre del administrador"
maintainerEmail: "Correo del administrador" maintainerEmail: "Correo del administrador"
tosUrl: "URL de los términos de uso" tosUrl: "URL de los términos de uso"
@ -346,8 +345,8 @@ connectService: "Conectar"
disconnectService: "Desconectar" disconnectService: "Desconectar"
enableLocalTimeline: "Habilitar linea de tiempo local" enableLocalTimeline: "Habilitar linea de tiempo local"
enableGlobalTimeline: "Habilitar linea de tiempo global" enableGlobalTimeline: "Habilitar linea de tiempo global"
disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia\ disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia
\ el administrador y los moderadores pueden seguir usándolos" el administrador y los moderadores pueden seguir usándolos"
registration: "Registro" registration: "Registro"
enableRegistration: "Permitir nuevos registros" enableRegistration: "Permitir nuevos registros"
invite: "Invitar" invite: "Invitar"
@ -359,11 +358,11 @@ bannerUrl: "URL de la imagen del banner"
backgroundImageUrl: "URL de la imagen de fondo" backgroundImageUrl: "URL de la imagen de fondo"
basicInfo: "Información básica" basicInfo: "Información básica"
pinnedUsers: "Usuarios fijados" pinnedUsers: "Usuarios fijados"
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\"\ pinnedUsersDescription: "Describir los usuarios que quiere fijar en la pestaña \"\
\ separados por una linea nueva" Explorar\" separados por líneas nuevas."
pinnedPages: "Páginas fijadas" pinnedPages: "Páginas fijadas"
pinnedPagesDescription: "Describa las rutas de las páginas que desea fijar a la página\ pinnedPagesDescription: "Describa las rutas de las páginas que desea fijar a la página
\ principal de la instancia, separadas por lineas nuevas" principal del servidor, separadas por líneas nuevas."
pinnedClipId: "Id del clip fijado" pinnedClipId: "Id del clip fijado"
pinnedNotes: "Publicación fijada" pinnedNotes: "Publicación fijada"
hcaptcha: "hCaptcha" hcaptcha: "hCaptcha"
@ -374,17 +373,17 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "activar reCAPTCHA" enableRecaptcha: "activar reCAPTCHA"
recaptchaSiteKey: "Clave del sitio" recaptchaSiteKey: "Clave del sitio"
recaptchaSecretKey: "Clave secreta" recaptchaSecretKey: "Clave secreta"
avoidMultiCaptchaConfirm: "El uso de múltiples Captchas puede causar interferencia.\ avoidMultiCaptchaConfirm: "El uso de múltiples Captchas puede causar interferencia.
\ ¿Desea desactivar el otro Captcha? Puede dejar múltiples Captchas habilitadas\ ¿Desea desactivar el otro Captcha? Puede dejar múltiples Captchas habilitadas presionando
\ presionando cancelar." cancelar."
antennas: "Antenas" antennas: "Antenas"
manageAntennas: "Administrar antenas" manageAntennas: "Administrar antenas"
name: "Nombre" name: "Nombre"
antennaSource: "Origen de la antena" antennaSource: "Origen de la antena"
antennaKeywords: "Palabras clave para recibir" antennaKeywords: "Palabras clave para recibir"
antennaExcludeKeywords: "Palabras clave para excluir" antennaExcludeKeywords: "Palabras clave para excluir"
antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar\ antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar
\ con una linea nueva es una declaración OR" con una linea nueva es una declaración OR"
notifyAntenna: "Notificar nueva publicación" notifyAntenna: "Notificar nueva publicación"
withFileAntenna: "Sólo publicaciones con archivos adjuntados" withFileAntenna: "Sólo publicaciones con archivos adjuntados"
enableServiceworker: "Activar ServiceWorker" enableServiceworker: "Activar ServiceWorker"
@ -472,8 +471,8 @@ strongPassword: "Muy buena contraseña"
passwordMatched: "Correcto" passwordMatched: "Correcto"
passwordNotMatched: "Las contraseñas no son las mismas" passwordNotMatched: "Las contraseñas no son las mismas"
signinWith: "Inicie sesión con {x}" signinWith: "Inicie sesión con {x}"
signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario\ signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario
\ y contraseña correctos." y contraseña correctos."
tapSecurityKey: "Toque la clave de seguridad" tapSecurityKey: "Toque la clave de seguridad"
or: "O" or: "O"
language: "Idioma" language: "Idioma"
@ -483,8 +482,8 @@ aboutX: "Acerca de {x}"
useOsNativeEmojis: "Usa los emojis nativos de la plataforma" useOsNativeEmojis: "Usa los emojis nativos de la plataforma"
disableDrawer: "No mostrar los menús en cajones" disableDrawer: "No mostrar los menús en cajones"
youHaveNoGroups: "Sin grupos" youHaveNoGroups: "Sin grupos"
joinOrCreateGroup: "Obtenga una invitación para unirse al grupos o puede crear su\ joinOrCreateGroup: "Obtenga una invitación para unirse al grupos o puede crear su
\ propio grupo." propio grupo."
noHistory: "No hay datos en el historial" noHistory: "No hay datos en el historial"
signinHistory: "Historial de ingresos" signinHistory: "Historial de ingresos"
disableAnimatedMfm: "Deshabilitar MFM que tiene animaciones" disableAnimatedMfm: "Deshabilitar MFM que tiene animaciones"
@ -515,28 +514,28 @@ showFeaturedNotesInTimeline: "Mostrar publicaciones destacadas en la línea de t
objectStorage: "Almacenamiento de objetos" objectStorage: "Almacenamiento de objetos"
useObjectStorage: "Usar almacenamiento de objetos" useObjectStorage: "Usar almacenamiento de objetos"
objectStorageBaseUrl: "Base URL" objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "Prefijo de URL utilizado para construir URL para hacer\ objectStorageBaseUrlDesc: "Prefijo de URL utilizado para construir URL para hacer
\ referencia a objetos (medios). Especifique su URL si está utilizando un CDN o\ referencia a objetos (medios). Especifique su URL si está utilizando un CDN o Proxy;
\ Proxy; de lo contrario, especifique la dirección a la que se puede acceder públicamente\ de lo contrario, especifique la dirección a la que se puede acceder públicamente
\ de acuerdo con la guía de servicio que va a utilizar. i.g 'https://<bucket>.s3.amazonaws.com'\ de acuerdo con la guía de servicio que va a utilizar. i.g 'https://<bucket>.s3.amazonaws.com'
\ para AWS S3 y 'https://storage.googleapis.com/<bucket>' para GCS." para AWS S3 y 'https://storage.googleapis.com/<bucket>' para GCS."
objectStorageBucket: "Bucket" objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Especifique el nombre del depósito utilizado en el servicio\ objectStorageBucketDesc: "Especifique el nombre del depósito utilizado en el servicio
\ configurado." configurado."
objectStoragePrefix: "Prefix" objectStoragePrefix: "Prefix"
objectStoragePrefixDesc: "Los archivos se almacenarán en el directorio de este prefijo." objectStoragePrefixDesc: "Los archivos se almacenarán en el directorio de este prefijo."
objectStorageEndpoint: "Endpoint" objectStorageEndpoint: "Endpoint"
objectStorageEndpointDesc: "Deje esto en blanco si está utilizando AWS S3; de lo contrario,\ objectStorageEndpointDesc: "Deje esto en blanco si está utilizando AWS S3; de lo contrario,
\ especifique el punto final como '<host>' o '<host>: <port>' de acuerdo con la\ especifique el punto final como '<host>' o '<host>: <port>' de acuerdo con la guía
\ guía de servicio que va a utilizar." de servicio que va a utilizar."
objectStorageRegion: "Region" objectStorageRegion: "Region"
objectStorageRegionDesc: "Especifique una región como 'xx-east-1'. Si su servicio\ objectStorageRegionDesc: "Especifique una región como 'xx-east-1'. Si su servicio
\ no tiene distinción sobre regiones, déjelo en blanco o complete con 'us-east-1'." no tiene distinción sobre regiones, déjelo en blanco o complete con 'us-east-1'."
objectStorageUseSSL: "Usar SSL" objectStorageUseSSL: "Usar SSL"
objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión API" objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión API"
objectStorageUseProxy: "Conectarse a través de Proxy" objectStorageUseProxy: "Conectarse a través de Proxy"
objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión\ objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión
\ de Almacenamiento de objetos" de Almacenamiento de objetos"
objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir " objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir "
serverLogs: "Registros del servidor" serverLogs: "Registros del servidor"
deleteAll: "Eliminar todos" deleteAll: "Eliminar todos"
@ -564,8 +563,8 @@ sort: "Ordenar"
ascendingOrder: "Ascendente" ascendingOrder: "Ascendente"
descendingOrder: "Descendente" descendingOrder: "Descendente"
scratchpad: "Scratch pad" scratchpad: "Scratch pad"
scratchpadDescription: "Scratchpad proporciona un entorno experimental para AiScript.\ scratchpadDescription: "Scratchpad proporciona un entorno experimental para AiScript.
\ Puede escribir, ejecutar y verificar los resultados que interactúan con Calckey." Puede escribir, ejecutar y verificar los resultados que interactúan con Calckey."
output: "Salida" output: "Salida"
script: "Script" script: "Script"
disablePagesScript: "Deshabilitar AiScript en Páginas" disablePagesScript: "Deshabilitar AiScript en Páginas"
@ -573,14 +572,14 @@ updateRemoteUser: "Actualizar información de usuario remoto"
deleteAllFiles: "Borrar todos los archivos" deleteAllFiles: "Borrar todos los archivos"
deleteAllFilesConfirm: "¿Desea borrar todos los archivos?" deleteAllFilesConfirm: "¿Desea borrar todos los archivos?"
removeAllFollowing: "Retener todos los siguientes" removeAllFollowing: "Retener todos los siguientes"
removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}.\ removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}.
\ Ejecutar en caso de que esta instancia haya dejado de existir." Ejecutar en caso de que esta instancia haya dejado de existir."
userSuspended: "Este usuario ha sido suspendido." userSuspended: "Este usuario ha sido suspendido."
userSilenced: "Este usuario ha sido silenciado." userSilenced: "Este usuario ha sido silenciado."
yourAccountSuspendedTitle: "Esta cuenta ha sido suspendida" yourAccountSuspendedTitle: "Esta cuenta ha sido suspendida"
yourAccountSuspendedDescription: "Esta cuenta ha sido suspendida debido a violaciones\ yourAccountSuspendedDescription: "Esta cuenta ha sido suspendida debido a violaciones
\ de los términos de servicio del servidor y otras razones. Para más información,\ de los términos de servicio del servidor y otras razones. Para más información,
\ póngase en contacto con el administrador. Por favor, no cree una nueva cuenta." póngase en contacto con el administrador. Por favor, no cree una nueva cuenta."
menu: "Menú" menu: "Menú"
divider: "Divisor" divider: "Divisor"
addItem: "Agregar elemento" addItem: "Agregar elemento"
@ -634,15 +633,15 @@ smtpHost: "Host"
smtpPort: "Puerto" smtpPort: "Puerto"
smtpUser: "Nombre de usuario" smtpUser: "Nombre de usuario"
smtpPass: "Contraseña" smtpPass: "Contraseña"
emptyToDisableSmtpAuth: "Deje el nombre del usuario y la contraseña en blanco para\ emptyToDisableSmtpAuth: "Deje el nombre del usuario y la contraseña en blanco para
\ deshabilitar la autenticación SMTP" deshabilitar la autenticación SMTP"
smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP" smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP"
smtpSecureInfo: "Apagar cuando se use STARTTLS" smtpSecureInfo: "Apagar cuando se use STARTTLS"
testEmail: "Prueba de envío" testEmail: "Prueba de envío"
wordMute: "Silenciar palabras" wordMute: "Silenciar palabras"
regexpError: "Error de la expresión regular" regexpError: "Error de la expresión regular"
regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line}\ regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line}
\ de las palabras muteadas {tab}" de las palabras muteadas {tab}"
instanceMute: "Instancias silenciadas" instanceMute: "Instancias silenciadas"
userSaysSomething: "{name} dijo algo" userSaysSomething: "{name} dijo algo"
makeActive: "Activar" makeActive: "Activar"
@ -658,13 +657,13 @@ create: "Crear"
notificationSetting: "Ajustes de Notificaciones" notificationSetting: "Ajustes de Notificaciones"
notificationSettingDesc: "Por favor elija el tipo de notificación a mostrar" notificationSettingDesc: "Por favor elija el tipo de notificación a mostrar"
useGlobalSetting: "Usar ajustes globales" useGlobalSetting: "Usar ajustes globales"
useGlobalSettingDesc: "Al activarse, se usará la configuración de notificaciones de\ useGlobalSettingDesc: "Al activarse, se usará la configuración de notificaciones de
\ la cuenta, al desactivarse se pueden hacer configuraciones particulares." la cuenta, al desactivarse se pueden hacer configuraciones particulares."
other: "Otro" other: "Otro"
regenerateLoginToken: "Regenerar token de login" regenerateLoginToken: "Regenerar token de login"
regenerateLoginTokenDescription: "Regenerar el token usado internamente durante el\ regenerateLoginTokenDescription: "Regenerar el token usado internamente durante el
\ login. No siempre es necesario hacerlo. Al hacerlo de nuevo, se deslogueará en\ login. No siempre es necesario hacerlo. Al hacerlo de nuevo, se deslogueará en todos
\ todos los dispositivos." los dispositivos."
setMultipleBySeparatingWithSpace: "Puedes añadir mas de uno, separado por espacios." setMultipleBySeparatingWithSpace: "Puedes añadir mas de uno, separado por espacios."
fileIdOrUrl: "Id del archivo o URL" fileIdOrUrl: "Id del archivo o URL"
behavior: "Comportamiento" behavior: "Comportamiento"
@ -672,15 +671,15 @@ sample: "Muestra"
abuseReports: "Reportes" abuseReports: "Reportes"
reportAbuse: "Reportar" reportAbuse: "Reportar"
reportAbuseOf: "Reportar a {name}" reportAbuseOf: "Reportar a {name}"
fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en\ fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en
\ particular, ingrese la URL de esta." particular, ingrese la URL de esta."
abuseReported: "Se ha enviado el reporte. Muchas gracias." abuseReported: "Se ha enviado el reporte. Muchas gracias."
reporter: "Reportador" reporter: "Reportador"
reporteeOrigin: "Reportar a" reporteeOrigin: "Reportar a"
reporterOrigin: "Origen del reporte" reporterOrigin: "Origen del reporte"
forwardReport: "Transferir un informe a una instancia remota" forwardReport: "Transferir un informe a una instancia remota"
forwardReportIsAnonymous: "No puede ver su información de la instancia remota y aparecerá\ forwardReportIsAnonymous: "No puede ver su información de la instancia remota y aparecerá
\ como una cuenta anónima del sistema" como una cuenta anónima del sistema"
send: "Enviar" send: "Enviar"
abuseMarkAsResolved: "Marcar reporte como resuelto" abuseMarkAsResolved: "Marcar reporte como resuelto"
openInNewTab: "Abrir en una Nueva Pestaña" openInNewTab: "Abrir en una Nueva Pestaña"
@ -701,8 +700,8 @@ unclip: "Quitar clip"
confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\"\ confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\"\
. ¿Quiere quitar la nota del clip?" . ¿Quiere quitar la nota del clip?"
public: "Público" public: "Público"
i18nInfo: "Calckey está siendo traducido a varios idiomas gracias a voluntarios. Se\ i18nInfo: "Calckey está siendo traducido a varios idiomas gracias a voluntarios. Se
\ puede colaborar traduciendo en {link}" puede colaborar traduciendo en {link}"
manageAccessTokens: "Administrar tokens de acceso" manageAccessTokens: "Administrar tokens de acceso"
accountInfo: "Información de la Cuenta" accountInfo: "Información de la Cuenta"
notesCount: "Cantidad de notas" notesCount: "Cantidad de notas"
@ -721,18 +720,18 @@ no: "No"
driveFilesCount: "Cantidad de archivos en el drive" driveFilesCount: "Cantidad de archivos en el drive"
driveUsage: "Uso del drive" driveUsage: "Uso del drive"
noCrawle: "Rechazar indexación del crawler" noCrawle: "Rechazar indexación del crawler"
noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas,\ noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas,
\ páginas, etc." páginas, etc."
lockedAccountInfo: "A menos que configures la visibilidad de tus notas como \"Sólo\ lockedAccountInfo: "A menos que configures la visibilidad de tus notas como \"Sólo
\ seguidores\", tus notas serán visibles para cualquiera, incluso si requieres que\ seguidores\", tus notas serán visibles para cualquiera, incluso si requieres que
\ los seguidores sean aprobados manualmente." los seguidores sean aprobados manualmente."
alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por\ alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por
\ defecto" defecto"
loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas" loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas"
disableShowingAnimatedImages: "No reproducir imágenes animadas" disableShowingAnimatedImages: "No reproducir imágenes animadas"
verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por\ verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por
\ favor, acceda al enlace proporcionado en el correo electrónico para completar\ favor, acceda al enlace proporcionado en el correo electrónico para completar la
\ la configuración." configuración."
notSet: "Sin especificar" notSet: "Sin especificar"
emailVerified: "Su dirección de correo electrónico ha sido verificada." emailVerified: "Su dirección de correo electrónico ha sido verificada."
noteFavoritesCount: "Número de notas favoritas" noteFavoritesCount: "Número de notas favoritas"
@ -744,16 +743,16 @@ clips: "Clip"
experimentalFeatures: "Características experimentales" experimentalFeatures: "Características experimentales"
developer: "Desarrolladores" developer: "Desarrolladores"
makeExplorable: "Hacer visible la cuenta en \"Explorar\"" makeExplorable: "Hacer visible la cuenta en \"Explorar\""
makeExplorableDescription: "Si desactiva esta opción, su cuenta no aparecerá en la\ makeExplorableDescription: "Si desactiva esta opción, su cuenta no aparecerá en la
\ sección \"Explorar\"." sección \"Explorar\"."
showGapBetweenNotesInTimeline: "Mostrar un intervalo entre notas en la línea de tiempo" showGapBetweenNotesInTimeline: "Mostrar un intervalo entre notas en la línea de tiempo"
duplicate: "Duplicar" duplicate: "Duplicar"
left: "Izquierda" left: "Izquierda"
center: "Centrar" center: "Centrar"
wide: "Ancho" wide: "Ancho"
narrow: "Estrecho" narrow: "Estrecho"
reloadToApplySetting: "Esta configuración sólo se aplicará después de recargar la\ reloadToApplySetting: "Esta configuración sólo se aplicará después de recargar la
\ página. ¿Recargar ahora?" página. ¿Recargar ahora?"
needReloadToApply: "Se requiere un reinicio para la aplicar los cambios" needReloadToApply: "Se requiere un reinicio para la aplicar los cambios"
showTitlebar: "Mostrar la barra de título" showTitlebar: "Mostrar la barra de título"
clearCache: "Limpiar caché" clearCache: "Limpiar caché"
@ -761,11 +760,11 @@ onlineUsersCount: "{n} usuarios en línea"
nUsers: "{n} Usuarios" nUsers: "{n} Usuarios"
nNotes: "{n} Notas" nNotes: "{n} Notas"
sendErrorReports: "Envíar informe de errores" sendErrorReports: "Envíar informe de errores"
sendErrorReportsDescription: "Si habilita esta opción, los detalles de los errores\ sendErrorReportsDescription: "Si habilita esta opción, los detalles de los errores
\ serán compartidos con Calckey cuando ocurra un problema, lo que ayudará a mejorar\ serán compartidos con Calckey cuando ocurra un problema, lo que ayudará a mejorar
\ la calidad de Calckey. \nEsto incluye información como la versión del sistema\ la calidad de Calckey. \nEsto incluye información como la versión del sistema operativo,
\ operativo, el tipo de navegador que está utilizando y su historial en Calckey,\ el tipo de navegador que está utilizando y su historial en Calckey, entre otros
\ entre otros datos." datos."
myTheme: "Mi Tema" myTheme: "Mi Tema"
backgroundColor: "Fondo" backgroundColor: "Fondo"
accentColor: "Acento" accentColor: "Acento"
@ -793,8 +792,8 @@ receiveAnnouncementFromInstance: "Recibir notificaciones de la instancia"
emailNotification: "Notificaciones por correo electrónico" emailNotification: "Notificaciones por correo electrónico"
publish: "Publicar" publish: "Publicar"
inChannelSearch: "Buscar en el canal" inChannelSearch: "Buscar en el canal"
useReactionPickerForContextMenu: "Haga clic con el botón derecho para abrir el menu\ useReactionPickerForContextMenu: "Haga clic con el botón derecho para abrir el menu
\ de reacciones" de reacciones"
typingUsers: "{users} está escribiendo" typingUsers: "{users} está escribiendo"
jumpToSpecifiedDate: "Saltar a una fecha específica" jumpToSpecifiedDate: "Saltar a una fecha específica"
showingPastTimeline: "Mostrar líneas de tiempo antiguas" showingPastTimeline: "Mostrar líneas de tiempo antiguas"
@ -805,16 +804,16 @@ unlikeConfirm: "¿Quitar como favorito?"
fullView: "Vista completa" fullView: "Vista completa"
quitFullView: "quitar vista completa" quitFullView: "quitar vista completa"
addDescription: "Agregar descripción" addDescription: "Agregar descripción"
userPagePinTip: "Puede mantener sus notas visibles aquí seleccionando Pin en el menú\ userPagePinTip: "Puede mantener sus notas visibles aquí seleccionando Pin en el menú
\ de notas individuales" de notas individuales"
notSpecifiedMentionWarning: "Algunas menciones no están incluidas en el destino" notSpecifiedMentionWarning: "Algunas menciones no están incluidas en el destino"
info: "Información" info: "Información"
userInfo: "Información del usuario" userInfo: "Información del usuario"
unknown: "Desconocido" unknown: "Desconocido"
onlineStatus: "En línea" onlineStatus: "En línea"
hideOnlineStatus: "mostrarse como desconectado" hideOnlineStatus: "mostrarse como desconectado"
hideOnlineStatusDescription: "Ocultar su estado en línea puede reducir la eficacia\ hideOnlineStatusDescription: "Ocultar su estado en línea puede reducir la eficacia
\ de algunas funciones, como la búsqueda" de algunas funciones, como la búsqueda"
online: "En línea" online: "En línea"
active: "Activo" active: "Activo"
offline: "Sin conexión" offline: "Sin conexión"
@ -849,8 +848,8 @@ emailNotConfiguredWarning: "No se ha configurado una dirección de correo electr
ratio: "Proporción" ratio: "Proporción"
previewNoteText: "Mostrar vista preliminar" previewNoteText: "Mostrar vista preliminar"
customCss: "CSS personalizado" customCss: "CSS personalizado"
customCssWarn: "Este ajuste sólo debe utilizarse si se sabe lo que hace. Introducir\ customCssWarn: "Este ajuste sólo debe utilizarse si se sabe lo que hace. Introducir
\ valores inadecuados puede hacer que el cliente deje de funcionar con normalidad." valores inadecuados puede hacer que el cliente deje de funcionar con normalidad."
global: "Global" global: "Global"
squareAvatars: "Mostrar iconos cuadrados" squareAvatars: "Mostrar iconos cuadrados"
sent: "Enviar" sent: "Enviar"
@ -865,9 +864,9 @@ whatIsNew: "Mostrar cambios"
translate: "Traducir" translate: "Traducir"
translatedFrom: "Traducido de {x}" translatedFrom: "Traducido de {x}"
accountDeletionInProgress: "La eliminación de la cuenta está en curso" accountDeletionInProgress: "La eliminación de la cuenta está en curso"
usernameInfo: "Un nombre que identifique su cuenta de otras en este servidor. Puede\ usernameInfo: "Un nombre que identifique su cuenta de otras en este servidor. Puede
\ utilizar el alfabeto (a~z, A~Z), dígitos (0~9) o guiones bajos (_). Los nombres\ utilizar el alfabeto (a~z, A~Z), dígitos (0~9) o guiones bajos (_). Los nombres
\ de usuario no se pueden cambiar posteriormente." de usuario no se pueden cambiar posteriormente."
aiChanMode: "Modo Ai" aiChanMode: "Modo Ai"
keepCw: "Mantener la advertencia de contenido" keepCw: "Mantener la advertencia de contenido"
pubSub: "Cuentas Pub/Sub" pubSub: "Cuentas Pub/Sub"
@ -877,21 +876,21 @@ unresolved: "Sin resolver"
breakFollow: "Dejar de seguir" breakFollow: "Dejar de seguir"
itsOn: "¡Está encendido!" itsOn: "¡Está encendido!"
itsOff: "¡Está apagado!" itsOff: "¡Está apagado!"
emailRequiredForSignup: "Se requere una dirección de correo electrónico para el registro\ emailRequiredForSignup: "Se requere una dirección de correo electrónico para el registro
\ de la cuenta" de la cuenta"
unread: "No leído" unread: "No leído"
filter: "Filtro" filter: "Filtro"
controlPanel: "Panel de control" controlPanel: "Panel de control"
manageAccounts: "Administrar cuenta" manageAccounts: "Administrar cuenta"
makeReactionsPublic: "Hacer el historial de reacciones público" makeReactionsPublic: "Hacer el historial de reacciones público"
makeReactionsPublicDescription: "Todas las reacciones que hayas hecho serán públicamente\ makeReactionsPublicDescription: "Todas las reacciones que hayas hecho serán públicamente
\ visibles." visibles."
classic: "Clásico" classic: "Clásico"
muteThread: "Ocultar hilo" muteThread: "Ocultar hilo"
unmuteThread: "Mostrar hilo" unmuteThread: "Mostrar hilo"
ffVisibility: "Visibilidad de seguidores y seguidos" ffVisibility: "Visibilidad de seguidores y seguidos"
ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes\ ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes
\ te siguen" te siguen"
continueThread: "Ver la continuación del hilo" continueThread: "Ver la continuación del hilo"
deleteAccountConfirm: "La cuenta será borrada. ¿Está seguro?" deleteAccountConfirm: "La cuenta será borrada. ¿Está seguro?"
incorrectPassword: "La contraseña es incorrecta" incorrectPassword: "La contraseña es incorrecta"
@ -932,16 +931,16 @@ thereIsUnresolvedAbuseReportWarning: "Hay reportes sin resolver"
recommended: "Recomendado" recommended: "Recomendado"
check: "Verificar" check: "Verificar"
driveCapOverrideLabel: "Cambiar la capacidad de la unidad para este usuario" driveCapOverrideLabel: "Cambiar la capacidad de la unidad para este usuario"
driveCapOverrideCaption: "Restablecer la capacidad a su predeterminado ingresando\ driveCapOverrideCaption: "Restablecer la capacidad a su predeterminado ingresando
\ un valor de 0 o menos" un valor de 0 o menos"
requireAdminForView: "Necesitas iniciar sesión como administrador para ver esto." requireAdminForView: "Necesitas iniciar sesión como administrador para ver esto."
isSystemAccount: "Cuenta creada y operada automáticamente por el sistema" isSystemAccount: "Cuenta creada y operada automáticamente por el sistema"
typeToConfirm: "Ingrese {x} para confirmar" typeToConfirm: "Ingrese {x} para confirmar"
deleteAccount: "Borrar cuenta" deleteAccount: "Borrar cuenta"
document: "Documento" document: "Documento"
numberOfPageCache: "Cantidad de páginas cacheadas" numberOfPageCache: "Cantidad de páginas cacheadas"
numberOfPageCacheDescription: "Al aumentar el número mejora la conveniencia pero tambien\ numberOfPageCacheDescription: "Al aumentar el número mejora la conveniencia pero tambien
\ puede aumentar la carga y la memoria a usarse" puede aumentar la carga y la memoria a usarse"
logoutConfirm: "¿Cerrar sesión?" logoutConfirm: "¿Cerrar sesión?"
lastActiveDate: "Utilizado por última vez el" lastActiveDate: "Utilizado por última vez el"
statusbar: "Barra de estado" statusbar: "Barra de estado"
@ -958,37 +957,36 @@ sensitiveMediaDetection: "Detección de contenido NSFW"
localOnly: "Solo local" localOnly: "Solo local"
remoteOnly: "Sólo remoto" remoteOnly: "Sólo remoto"
failedToUpload: "La subida falló" failedToUpload: "La subida falló"
cannotUploadBecauseInappropriate: "Este archivo no se puede subir debido a que algunas\ cannotUploadBecauseInappropriate: "Este archivo no se puede subir debido a que algunas
\ partes han sido detectadas comoNSFW." partes han sido detectadas comoNSFW."
cannotUploadBecauseNoFreeSpace: "La subida falló debido a falta de espacio libre en\ cannotUploadBecauseNoFreeSpace: "La subida falló debido a falta de espacio libre en
\ la unidad del usuario." la unidad del usuario."
beta: "Beta" beta: "Beta"
enableAutoSensitive: "Marcar automáticamente contenido NSFW" enableAutoSensitive: "Marcar automáticamente contenido NSFW"
enableAutoSensitiveDescription: "Permite la detección y marcado automático de contenido\ enableAutoSensitiveDescription: "Permite la detección y marcado automático de contenido
\ NSFW usando 'Machine Learning' cuando sea posible. Incluso si esta opción está\ NSFW usando 'Machine Learning' cuando sea posible. Incluso si esta opción está desactivada,
\ desactivada, puede ser activado para toda la instancia." puede ser activado para toda la instancia."
activeEmailValidationDescription: "Habilita la validación estricta de direcciones\ activeEmailValidationDescription: "Habilita la validación estricta de direcciones
\ de correo electrónico, lo cual incluye la revisión de direcciones desechables\ de correo electrónico, lo cual incluye la revisión de direcciones desechables y
\ y si se puede comunicar con éstas. Cuando está deshabilitado, sólo el formato\ si se puede comunicar con éstas. Cuando está deshabilitado, sólo el formato de la
\ de la dirección es validado." dirección es validado."
navbar: "Barra de navegación" navbar: "Barra de navegación"
shuffle: "Aleatorio" shuffle: "Aleatorio"
account: "Cuentas" account: "Cuentas"
move: "Mover" move: "Mover"
_sensitiveMediaDetection: _sensitiveMediaDetection:
description: "Reduce el esfuerzo de la moderación el el servidor a través del reconocimiento\ description: "Reduce el esfuerzo de la moderación el el servidor a través del reconocimiento
\ automático de contenido NSFW usando 'Machine Learning'. Esto puede incrementar\ automático de contenido NSFW usando 'Machine Learning'. Esto puede incrementar
\ ligeramente la carga en el servidor." ligeramente la carga en el servidor."
sensitivity: "Sensibilidad de detección" sensitivity: "Sensibilidad de detección"
sensitivityDescription: "Reducir la sensibilidad puede acarrear a varios falsos\ sensitivityDescription: "Reducir la sensibilidad puede acarrear a varios falsos
\ positivos, mientras que incrementarla puede reducir las detecciones (falsos\ positivos, mientras que incrementarla puede reducir las detecciones (falsos negativos)."
\ negativos)."
setSensitiveFlagAutomatically: "Marcar como NSFW" setSensitiveFlagAutomatically: "Marcar como NSFW"
setSensitiveFlagAutomaticallyDescription: "Los resultados de la detección interna\ setSensitiveFlagAutomaticallyDescription: "Los resultados de la detección interna
\ pueden ser retenidos incluso si la opción está desactivada." pueden ser retenidos incluso si la opción está desactivada."
analyzeVideos: "Habilitar el análisis de videos" analyzeVideos: "Habilitar el análisis de videos"
analyzeVideosDescription: "Analizar videos en adición a las imágenes. Esto puede\ analyzeVideosDescription: "Analizar videos en adición a las imágenes. Esto puede
\ incrementar ligeramente la carga del servidor." incrementar ligeramente la carga del servidor."
_emailUnavailable: _emailUnavailable:
used: "Ya fue usado" used: "Ya fue usado"
format: "El formato de este correo electrónico no es válido" format: "El formato de este correo electrónico no es válido"
@ -1002,15 +1000,15 @@ _ffVisibility:
_signup: _signup:
almostThere: "Ya falta poco" almostThere: "Ya falta poco"
emailAddressInfo: "Ingrese el correo electrónico que usa. Este no se hará público." emailAddressInfo: "Ingrese el correo electrónico que usa. Este no se hará público."
emailSent: "Se envió un correo de verificación a la dirección {email}. Acceda al\ emailSent: "Se envió un correo de verificación a la dirección {email}. Acceda al
\ link enviado en el correo para completar el ingreso." link enviado en el correo para completar el ingreso."
_accountDelete: _accountDelete:
accountDelete: "Eliminar Cuenta" accountDelete: "Eliminar Cuenta"
mayTakeTime: "La eliminación de la cuenta es un proceso que precisa de carga. Puede\ mayTakeTime: "La eliminación de la cuenta es un proceso que precisa de carga. Puede
\ pasar un tiempo hasta que se complete si es mucho el contenido creado y los\ pasar un tiempo hasta que se complete si es mucho el contenido creado y los archivos
\ archivos subidos." subidos."
sendEmail: "Cuando se termine de borrar la cuenta, se enviará un correo a la dirección\ sendEmail: "Cuando se termine de borrar la cuenta, se enviará un correo a la dirección
\ usada para el registro." usada para el registro."
requestAccountDelete: "Pedir la eliminación de la cuenta." requestAccountDelete: "Pedir la eliminación de la cuenta."
started: "El proceso de eliminación ha comenzado." started: "El proceso de eliminación ha comenzado."
inProgress: "La eliminación está en proceso." inProgress: "La eliminación está en proceso."
@ -1018,12 +1016,11 @@ _ad:
back: "Deseleccionar" back: "Deseleccionar"
reduceFrequencyOfThisAd: "Mostrar menos este anuncio." reduceFrequencyOfThisAd: "Mostrar menos este anuncio."
_forgotPassword: _forgotPassword:
enterEmail: "Ingrese el correo usado para registrar la cuenta. Se enviará un link\ enterEmail: "Ingrese el correo usado para registrar la cuenta. Se enviará un link
\ para resetear la contraseña." para resetear la contraseña."
ifNoEmail: "Si no utilizó un correo para crear la cuenta, contáctese con el administrador." ifNoEmail: "Si no utilizó un correo para crear la cuenta, contáctese con el administrador."
contactAdmin: "Esta instancia no admite el uso de direcciones de correo electrónico,\ contactAdmin: "Esta instancia no admite el uso de direcciones de correo electrónico,
\ póngase en contacto con el administrador de la instancia para restablecer su\ póngase en contacto con el administrador de la instancia para restablecer su contraseña"
\ contraseña"
_gallery: _gallery:
my: "Mi galería" my: "Mi galería"
liked: "Publicaciones que me gustan" liked: "Publicaciones que me gustan"
@ -1046,15 +1043,15 @@ _preferencesBackups:
save: "Guardar cambios" save: "Guardar cambios"
inputName: "Por favor, ingresa un nombre para este respaldo" inputName: "Por favor, ingresa un nombre para este respaldo"
cannotSave: "Fallo al guardar" cannotSave: "Fallo al guardar"
nameAlreadyExists: "Un respaldo llamado \"{name}\" ya existe. Por favor ingresa\ nameAlreadyExists: "Un respaldo llamado \"{name}\" ya existe. Por favor ingresa
\ un nombre diferente" un nombre diferente"
applyConfirm: "¿Realmente quieres aplicar los cambios desde el archivo \"{name}\"\ applyConfirm: "¿Realmente quieres aplicar los cambios desde el archivo \"{name}\"\
\ a este dispositivo? Las configuraciones existentes serán sobreescritas. " \ a este dispositivo? Las configuraciones existentes serán sobreescritas. "
saveConfirm: "¿Guardar respaldo como \"{name}\"?" saveConfirm: "¿Guardar respaldo como \"{name}\"?"
deleteConfirm: "¿Borrar el respaldo \"{name}\"?" deleteConfirm: "¿Borrar el respaldo \"{name}\"?"
renameConfirm: "¿Renombrar este respaldo de \"{old}\" a \"{new}\"?" renameConfirm: "¿Renombrar este respaldo de \"{old}\" a \"{new}\"?"
noBackups: "No existen respaldos. Deberás respaldar las configuraciones del cliente\ noBackups: "No existen respaldos. Deberás respaldar las configuraciones del cliente
\ en este servidor usando \"Crear nuevo respaldo\"" en este servidor usando \"Crear nuevo respaldo\""
createdAt: "Creado: {date} {time}" createdAt: "Creado: {date} {time}"
updatedAt: "Actualizado: {date} {time}" updatedAt: "Actualizado: {date} {time}"
cannotLoad: "La carga falló" cannotLoad: "La carga falló"
@ -1066,15 +1063,15 @@ _registry:
domain: "Dominio" domain: "Dominio"
createKey: "Crear una llave" createKey: "Crear una llave"
_aboutMisskey: _aboutMisskey:
about: "Calckey es una bifurcación de Misskey creada por ThatOneCalculator, que\ about: "Calckey es una bifurcación de Misskey creada por ThatOneCalculator, que
\ ha estado en desarrollo desde el 2022." ha estado en desarrollo desde el 2022."
contributors: "Principales colaboradores" contributors: "Principales colaboradores"
allContributors: "Todos los colaboradores" allContributors: "Todos los colaboradores"
source: "Código fuente" source: "Código fuente"
translation: "Traducir Calckey" translation: "Traducir Calckey"
donate: "Donar a Calckey" donate: "Donar a Calckey"
morePatrons: "También apreciamos el apoyo de muchos más que no están enlistados\ morePatrons: "También apreciamos el apoyo de muchos más que no están enlistados
\ aquí. ¡Gracias! \U0001F970" aquí. ¡Gracias! 🥰"
patrons: "Mecenas de Calckey" patrons: "Mecenas de Calckey"
_nsfw: _nsfw:
respect: "Ocultar medios NSFW" respect: "Ocultar medios NSFW"
@ -1082,13 +1079,13 @@ _nsfw:
force: "Ocultar todos los medios" force: "Ocultar todos los medios"
_mfm: _mfm:
cheatSheet: "Hoja de referencia de MFM" cheatSheet: "Hoja de referencia de MFM"
intro: "MFM es un lenguaje de marcado dedicado que se puede usar en varios lugares\ intro: "MFM es un lenguaje de marcado dedicado que se puede usar en varios lugares
\ dentro de Misskey, Calckey, Akkoma, y mucho más. Aquí puede ver una lista de\ dentro de Misskey, Calckey, Akkoma, y mucho más. Aquí puede ver una lista de sintaxis
\ sintaxis disponibles en MFM." disponibles en MFM."
dummy: "Calckey expande el mundo de la Fediverso" dummy: "Calckey expande el mundo de la Fediverso"
mention: "Menciones" mention: "Menciones"
mentionDescription: "El signo @ seguido de un nombre de usuario se puede utilizar\ mentionDescription: "El signo @ seguido de un nombre de usuario se puede utilizar
\ para notificar a un usuario en particular." para notificar a un usuario en particular."
hashtag: "Hashtag" hashtag: "Hashtag"
hashtagDescription: "Puede especificar un hashtag con un numeral y el texto." hashtagDescription: "Puede especificar un hashtag con un numeral y el texto."
url: "URL" url: "URL"
@ -1104,8 +1101,8 @@ _mfm:
inlineCode: "Código (insertado)" inlineCode: "Código (insertado)"
inlineCodeDescription: "Muestra el código de un programa resaltando su sintaxis" inlineCodeDescription: "Muestra el código de un programa resaltando su sintaxis"
blockCode: "Código (bloque)" blockCode: "Código (bloque)"
blockCodeDescription: "Código de resaltado de sintaxis, como programas de varias\ blockCodeDescription: "Código de resaltado de sintaxis, como programas de varias
\ líneas con bloques." líneas con bloques."
inlineMath: "Fórmula (insertado)" inlineMath: "Fórmula (insertado)"
inlineMathDescription: "Muestra fórmulas (KaTeX) insertadas" inlineMathDescription: "Muestra fórmulas (KaTeX) insertadas"
blockMath: "Fórmula (bloque)" blockMath: "Fórmula (bloque)"
@ -1117,8 +1114,8 @@ _mfm:
search: "Buscar" search: "Buscar"
searchDescription: "Muestra una caja de búsqueda con texto pre-escrito" searchDescription: "Muestra una caja de búsqueda con texto pre-escrito"
flip: "Echar de un capirotazo" flip: "Echar de un capirotazo"
flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda\ flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda
\ / derecha." / derecha."
jelly: "Animación (gelatina)" jelly: "Animación (gelatina)"
jellyDescription: "Aplica un efecto de animación tipo gelatina" jellyDescription: "Aplica un efecto de animación tipo gelatina"
tada: "Animación (tadá)" tada: "Animación (tadá)"
@ -1140,8 +1137,8 @@ _mfm:
x4: "Totalmente grande" x4: "Totalmente grande"
x4Description: "Muestra el contenido totalmente grande" x4Description: "Muestra el contenido totalmente grande"
blur: "Desenfoque" blur: "Desenfoque"
blurDescription: "Para desenfocar el contenido. Se muestra claramente al colocar\ blurDescription: "Para desenfocar el contenido. Se muestra claramente al colocar
\ el puntero encima." el puntero encima."
font: "Fuente" font: "Fuente"
fontDescription: "Elegir la fuente del contenido" fontDescription: "Elegir la fuente del contenido"
rainbow: "Arcoíris" rainbow: "Arcoíris"
@ -1151,8 +1148,8 @@ _mfm:
rotate: "Rotar" rotate: "Rotar"
rotateDescription: "Rota el contenido a un ángulo especificado." rotateDescription: "Rota el contenido a un ángulo especificado."
plain: "Plano" plain: "Plano"
plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto\ plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto
\ MFM." MFM."
position: Posición position: Posición
_instanceTicker: _instanceTicker:
none: "No mostrar" none: "No mostrar"
@ -1182,20 +1179,19 @@ _menuDisplay:
hide: "Ocultar" hide: "Ocultar"
_wordMute: _wordMute:
muteWords: "Palabras que silenciar" muteWords: "Palabras que silenciar"
muteWordsDescription: "Separar con espacios indica una declaracion And, separar\ muteWordsDescription: "Separar con espacios indica una declaracion And, separar
\ con lineas nuevas indica una declaracion Or。" con lineas nuevas indica una declaracion Or。"
muteWordsDescription2: "Encerrar las palabras clave entre numerales para usar expresiones\ muteWordsDescription2: "Encerrar las palabras clave entre numerales para usar expresiones
\ regulares" regulares"
softDescription: "Ocultar en la linea de tiempo las notas que cumplen las condiciones" softDescription: "Ocultar en la linea de tiempo las notas que cumplen las condiciones"
hardDescription: "Evitar que se agreguen a la linea de tiempo las notas que cumplen\ hardDescription: "Evitar que se agreguen a la linea de tiempo las notas que cumplen
\ las condiciones. Las notas no agregadas seguirán quitadas aunque cambien las\ las condiciones. Las notas no agregadas seguirán quitadas aunque cambien las condiciones."
\ condiciones."
soft: "Suave" soft: "Suave"
hard: "Duro" hard: "Duro"
mutedNotes: "Notas silenciadas" mutedNotes: "Notas silenciadas"
_instanceMute: _instanceMute:
instanceMuteDescription: "Silencia todas las notas y reposts de la instancias seleccionadas,\ instanceMuteDescription: "Silencia todas las notas y reposts de la instancias seleccionadas,
\ incluyendo respuestas a los usuarios de las mismas" incluyendo respuestas a los usuarios de las mismas"
instanceMuteDescription2: "Separar por líneas" instanceMuteDescription2: "Separar por líneas"
title: "Oculta las notas de las instancias listadas." title: "Oculta las notas de las instancias listadas."
heading: "Instancias a silenciar" heading: "Instancias a silenciar"
@ -1301,47 +1297,47 @@ _tutorial:
step1_1: "¡Bienvenido!" step1_1: "¡Bienvenido!"
step1_2: "Vamos a configurarte. Estarás listo y funcionando en poco tiempo" step1_2: "Vamos a configurarte. Estarás listo y funcionando en poco tiempo"
step2_1: "En primer lugar, rellena tu perfil" step2_1: "En primer lugar, rellena tu perfil"
step2_2: "Proporcionar algo de información sobre quién eres hará que sea más fácil\ step2_2: "Proporcionar algo de información sobre quién eres hará que sea más fácil
\ para los demás saber si quieren ver tus notas o seguirte." para los demás saber si quieren ver tus notas o seguirte."
step3_1: "¡Ahora es el momento de seguir a algunas personas!" step3_1: "¡Ahora es el momento de seguir a algunas personas!"
step3_2: "Tu página de inicio y tus líneas de tiempo sociales se basan en quién\ step3_2: "Tu página de inicio y tus líneas de tiempo sociales se basan en quién
\ sigues, así que intenta seguir un par de cuentas para empezar.\nHaz clic en\ sigues, así que intenta seguir un par de cuentas para empezar.\nHaz clic en el
\ el círculo más en la parte superior derecha de un perfil para seguirlos." círculo más en la parte superior derecha de un perfil para seguirlos."
step4_1: "Vamos a salir a la calle" step4_1: "Vamos a salir a la calle"
step4_2: "Para tu primer post, a algunas personas les gusta hacer un post de {introduction}\ step4_2: "Para tu primer post, a algunas personas les gusta hacer un post de {introduction}
\ o un simple \"¡Hola mundo!\"" o un simple \"¡Hola mundo!\""
step5_1: "¡Líneas de tiempo, líneas de tiempo por todas partes!" step5_1: "¡Líneas de tiempo, líneas de tiempo por todas partes!"
step5_2: "Su instancia tiene {timelines} diferentes líneas de tiempo habilitadas" step5_2: "Su instancia tiene {timelines} diferentes líneas de tiempo habilitadas"
step5_3: "La línea de tiempo Inicio {icon} es donde puedes ver las publicaciones\ step5_3: "La línea de tiempo Inicio {icon} es donde puedes ver las publicaciones
\ de tus seguidores." de tus seguidores."
step5_4: "La línea de tiempo Local {icon} es donde puedes ver las publicaciones\ step5_4: "La línea de tiempo Local {icon} es donde puedes ver las publicaciones
\ de todos los demás en esta instancia." de todos los demás en esta instancia."
step5_5: "La línea de tiempo {icon} recomendada es donde puedes ver las publicaciones\ step5_5: "La línea de tiempo {icon} recomendada es donde puedes ver las publicaciones
\ de las instancias que los administradores recomiendan." de las instancias que los administradores recomiendan."
step5_6: "La línea de tiempo Social {icon} es donde puedes ver las publicaciones\ step5_6: "La línea de tiempo Social {icon} es donde puedes ver las publicaciones
\ de los amigos de tus seguidores." de los amigos de tus seguidores."
step5_7: "La línea de tiempo Global {icon} es donde puedes ver las publicaciones\ step5_7: "La línea de tiempo Global {icon} es donde puedes ver las publicaciones
\ de todas las demás instancias conectadas." de todas las demás instancias conectadas."
step6_1: "Entonces, ¿qué es este lugar?" step6_1: "Entonces, ¿qué es este lugar?"
step6_2: "Bueno, no sólo te has unido a Calckey. Te has unido a un portal del Fediverso,\ step6_2: "Bueno, no sólo te has unido a Calckey. Te has unido a un portal del Fediverso,
\ una red interconectada de miles de servidores, llamada \"instancias\"" una red interconectada de miles de servidores, llamada \"instancias\""
step6_3: "Cada servidor funciona de forma diferente, y no todos los servidores ejecutan\ step6_3: "Cada servidor funciona de forma diferente, y no todos los servidores ejecutan
\ Calckey. Sin embargo, ¡éste lo hace! Es un poco complicado, pero le cogerás\ Calckey. Sin embargo, ¡éste lo hace! Es un poco complicado, pero le cogerás el
\ el tranquillo enseguida" tranquillo enseguida"
step6_4: "¡Ahora ve, explora y diviértete!" step6_4: "¡Ahora ve, explora y diviértete!"
_2fa: _2fa:
alreadyRegistered: "Ya has completado la configuración." alreadyRegistered: "Ya has completado la configuración."
registerTOTP: "Registrar dispositivo" registerTOTP: "Registrar dispositivo"
registerSecurityKey: "Registrar clave" registerSecurityKey: "Registrar clave"
step1: "Primero, instale en su dispositivo la aplicación de autenticación {a} o\ step1: "Primero, instale en su dispositivo la aplicación de autenticación {a} o
\ {b} u otra." {b} u otra."
step2: "Luego, escanee con la aplicación el código QR mostrado en pantalla." step2: "Luego, escanee con la aplicación el código QR mostrado en pantalla."
step2Url: "En una aplicación de escritorio se puede ingresar la siguiente URL:" step2Url: "En una aplicación de escritorio se puede ingresar la siguiente URL:"
step3: "Para terminar, ingrese el token mostrado en la aplicación." step3: "Para terminar, ingrese el token mostrado en la aplicación."
step4: "Ahora cuando inicie sesión, ingrese el mismo token" step4: "Ahora cuando inicie sesión, ingrese el mismo token"
securityKeyInfo: "Se puede configurar el inicio de sesión usando una clave de seguridad\ securityKeyInfo: "Se puede configurar el inicio de sesión usando una clave de seguridad
\ de hardware que soporte FIDO2 o con un certificado de huella digital o con un\ de hardware que soporte FIDO2 o con un certificado de huella digital o con un
\ PIN" PIN"
_permissions: _permissions:
"read:account": "Ver información de la cuenta" "read:account": "Ver información de la cuenta"
"write:account": "Editar información de la cuenta" "write:account": "Editar información de la cuenta"
@ -1377,8 +1373,8 @@ _permissions:
"write:gallery-likes": "Editar favoritos de la galería" "write:gallery-likes": "Editar favoritos de la galería"
_auth: _auth:
shareAccess: "¿Desea permitir el acceso a la cuenta \"{name}\"?" shareAccess: "¿Desea permitir el acceso a la cuenta \"{name}\"?"
shareAccessAsk: "¿Está seguro de que desea autorizar esta aplicación para acceder\ shareAccessAsk: "¿Está seguro de que desea autorizar esta aplicación para acceder
\ a su cuenta?" a su cuenta?"
permissionAsk: "Esta aplicación requiere los siguientes permisos" permissionAsk: "Esta aplicación requiere los siguientes permisos"
pleaseGoBack: "Por favor, vuelve a la aplicación" pleaseGoBack: "Por favor, vuelve a la aplicación"
callback: "Volviendo a la aplicación" callback: "Volviendo a la aplicación"
@ -1772,8 +1768,8 @@ _pages:
_seedRandomPick: _seedRandomPick:
arg1: "Semilla" arg1: "Semilla"
arg2: "Listas" arg2: "Listas"
DRPWPM: "Elegir aleatoriamente de la lista ponderada (Diariamente para cada\ DRPWPM: "Elegir aleatoriamente de la lista ponderada (Diariamente para cada
\ usuario)" usuario)"
_DRPWPM: _DRPWPM:
arg1: "Lista de texto" arg1: "Lista de texto"
pick: "Elegir de la lista" pick: "Elegir de la lista"
@ -1804,8 +1800,8 @@ _pages:
_for: _for:
arg1: "Cantidad de repeticiones" arg1: "Cantidad de repeticiones"
arg2: "Acción" arg2: "Acción"
typeError: "El slot {slot} acepta el tipo {expect} pero fue ingresado el tipo\ typeError: "El slot {slot} acepta el tipo {expect} pero fue ingresado el tipo
\ {actual}" {actual}"
thereIsEmptySlot: "El slot {slot} está vacío" thereIsEmptySlot: "El slot {slot} está vacío"
types: types:
string: "Texto" string: "Texto"
@ -1869,10 +1865,10 @@ _deck:
newProfile: "Nuevo perfil" newProfile: "Nuevo perfil"
deleteProfile: "Eliminar perfil" deleteProfile: "Eliminar perfil"
introduction: "¡Crea la interfaz perfecta para tí organizando las columnas libremente!" introduction: "¡Crea la interfaz perfecta para tí organizando las columnas libremente!"
introduction2: "Presiona en la + de la derecha de la pantalla para añadir nuevas\ introduction2: "Presiona en la + de la derecha de la pantalla para añadir nuevas
\ columnas donde quieras." columnas donde quieras."
widgetsIntroduction: "Por favor selecciona \"Editar Widgets\" en el menú columna\ widgetsIntroduction: "Por favor selecciona \"Editar Widgets\" en el menú columna
\ y agrega un widget." y agrega un widget."
_columns: _columns:
main: "Principal" main: "Principal"
widgets: "Widgets" widgets: "Widgets"
@ -1885,11 +1881,11 @@ _deck:
manageGroups: Administrar grupos manageGroups: Administrar grupos
replayTutorial: Repetir Tutorial replayTutorial: Repetir Tutorial
privateMode: Modo privado privateMode: Modo privado
addInstance: Añadir una instancia addInstance: Añadir un servidor
renoteMute: Silenciar impulsos renoteMute: Silenciar impulsos
renoteUnmute: Dejar de silenciar impulsos renoteUnmute: Dejar de silenciar impulsos
flagSpeakAsCat: Habla como un gato flagSpeakAsCat: Habla como un gato
selectInstance: Selectiona una instancia selectInstance: Selecciona un servidor
flagSpeakAsCatDescription: Tu publicación se "nyanified" cuando esté en modo gato flagSpeakAsCatDescription: Tu publicación se "nyanified" cuando esté en modo gato
allowedInstances: Instancias en la lista blanca allowedInstances: Instancias en la lista blanca
breakFollowConfirm: ¿Estás seguro de que quieres eliminar el seguidor? breakFollowConfirm: ¿Estás seguro de que quieres eliminar el seguidor?
@ -1905,7 +1901,7 @@ license: Licencia
noThankYou: No gracias noThankYou: No gracias
userSaysSomethingReason: '{name} dijo {reason}' userSaysSomethingReason: '{name} dijo {reason}'
hiddenTags: Etiquetas Ocultas hiddenTags: Etiquetas Ocultas
noInstances: No hay instancias noInstances: No hay servidores
accountMoved: 'Usuario ha movido a una cuenta nueva:' accountMoved: 'Usuario ha movido a una cuenta nueva:'
caption: Auto Subtítulos caption: Auto Subtítulos
showAds: Mostrar Anuncios showAds: Mostrar Anuncios
@ -1924,6 +1920,24 @@ silenced: Silenciado
deleted: Eliminado deleted: Eliminado
edited: 'Editado a las {date} {time}' edited: 'Editado a las {date} {time}'
editNote: Editar nota editNote: Editar nota
silenceThisInstance: Silenciar esta instancia silenceThisInstance: Silenciar este servidor
findOtherInstance: Buscar otro servidor findOtherInstance: Buscar otro servidor
userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]' userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]'
enableRecommendedTimeline: Habilitar línea de tiempo "Recomendado"
searchPlaceholder: Buscar en Calckey
listsDesc: Las listas te permiten crear líneas de tiempo con usuarios específicos.
Puedes acceder a ellas desde la pestaña "Línea de tiempo".
removeReaction: Quitar tu reacción
selectChannel: Seleccionar canal
showEmojisInReactionNotifications: Mostrar emojis en notificaciones de reacciones
silencedInstancesDescription: Escriba los hosts de los servidores que desea bloquear.
Las cuentas en estos servidores serán tratadas como "silenciadas", solo podrán hacer
solicitudes de seguimiento, y no podrán mencionar a usuarios de este servidor si
no les siguen. Esto no afecta los servidores bloqueados.
silencedInstances: Servidores silenciados
hiddenTagsDescription: 'Escriba los hashtags (sin el #) que desea ocultar de las secciones
de Tendencias y Explorar. Los hashtags ocultos seguirán siendo descubribles por
otros métodos.'
jumpToPrevious: Ver anterior
enableEmojiReactions: Habilitar reacciones de emoji
cw: Aviso de contenido

View File

@ -1,12 +1,16 @@
pub use sea_orm_migration::prelude::*; pub use sea_orm_migration::prelude::*;
mod m20230531_180824_drop_reversi; mod m20230531_180824_drop_reversi;
mod m20230627_185451_index_note_url;
pub struct Migrator; pub struct Migrator;
#[async_trait::async_trait] #[async_trait::async_trait]
impl MigratorTrait for Migrator { impl MigratorTrait for Migrator {
fn migrations() -> Vec<Box<dyn MigrationTrait>> { fn migrations() -> Vec<Box<dyn MigrationTrait>> {
vec![Box::new(m20230531_180824_drop_reversi::Migration)] vec![
Box::new(m20230531_180824_drop_reversi::Migration),
Box::new(m20230627_185451_index_note_url::Migration),
]
} }
} }

View File

@ -0,0 +1,38 @@
use sea_orm_migration::prelude::*;
#[derive(DeriveMigrationName)]
pub struct Migration;
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.create_index(
Index::create()
.name("IDX_note_url")
.table(Note::Table)
.col(Note::Url)
.if_not_exists()
.to_owned(),
)
.await
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_index(
Index::drop()
.name("IDX_note_url")
.table(Note::Table)
.to_owned(),
)
.await
}
}
/// Learn more at https://docs.rs/sea-query#iden
#[derive(Iden)]
enum Note {
Table,
Url,
}

View File

@ -80,8 +80,15 @@ export default class DbResolver {
id: parsed.id, id: parsed.id,
}); });
} else { } else {
return await Notes.findOneBy({ return await Notes.findOne({
where: [
{
uri: parsed.uri, uri: parsed.uri,
},
{
url: parsed.uri,
},
],
}); });
} }
} }

View File

@ -36,6 +36,10 @@ const props = defineProps<{
note: misskey.entities.Note; note: misskey.entities.Note;
}>(); }>();
const emit = defineEmits<{
(ev: "reacted", v): void;
}>();
const buttonRef = ref<HTMLElement>(); const buttonRef = ref<HTMLElement>();
const canToggle = computed(() => !props.reaction.match(/@\w/) && $i); const canToggle = computed(() => !props.reaction.match(/@\w/) && $i);
@ -60,6 +64,7 @@ const toggleReaction = () => {
noteId: props.note.id, noteId: props.note.id,
reaction: props.reaction, reaction: props.reaction,
}); });
emit("reacted");
} }
}; };
@ -101,6 +106,7 @@ useTooltip(
padding: 0 6px; padding: 0 6px;
border-radius: 4px; border-radius: 4px;
pointer-events: all; pointer-events: all;
min-width: max-content;
&.newlyAdded { &.newlyAdded {
animation: scaleInSmall 0.3s cubic-bezier(0, 0, 0, 1.2); animation: scaleInSmall 0.3s cubic-bezier(0, 0, 0, 1.2);
:deep(.mk-emoji) { :deep(.mk-emoji) {
@ -132,6 +138,7 @@ useTooltip(
} }
&.reacted { &.reacted {
order: -1;
background: var(--accent); background: var(--accent);
&:hover { &:hover {

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="tdflqwzn" :class="{ isMe }"> <div ref="reactionsEl" class="reactions-list tdflqwzn" :class="{ isMe }">
<XReaction <XReaction
v-for="(count, reaction) in note.reactions" v-for="(count, reaction) in note.reactions"
:key="reaction" :key="reaction"
@ -7,12 +7,13 @@
:count="count" :count="count"
:is-initial="initialReactions.has(reaction)" :is-initial="initialReactions.has(reaction)"
:note="note" :note="note"
@reacted="reactionsEl.scrollTo(0,0)"
/> />
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from "vue"; import { computed, ref } from "vue";
import * as misskey from "calckey-js"; import * as misskey from "calckey-js";
import { $i } from "@/account"; import { $i } from "@/account";
import XReaction from "@/components/MkReactionsViewer.reaction.vue"; import XReaction from "@/components/MkReactionsViewer.reaction.vue";
@ -21,16 +22,27 @@ const props = defineProps<{
note: misskey.entities.Note; note: misskey.entities.Note;
}>(); }>();
const reactionsEl = ref<HTMLElement>();
const initialReactions = new Set(Object.keys(props.note.reactions)); const initialReactions = new Set(Object.keys(props.note.reactions));
const isMe = computed(() => $i && $i.id === props.note.userId); const isMe = computed(() => $i && $i.id === props.note.userId);
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.tdflqwzn { .reactions-list {
margin-inline: -2px;
margin-top: 0.2em; margin-top: 0.2em;
width: 100%; width: 100%;
display: flex;
overflow-x: auto;
margin-inline: -24px;
padding-inline: 22px 160px;
mask: linear-gradient(to right, transparent, black 24px calc(100% - 160px), transparent);
-webkit-mask: linear-gradient(to right, transparent, black 24px calc(100% - 160px), transparent);
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
&:empty { &:empty {
display: none; display: none;

View File

@ -16,10 +16,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -16,10 +16,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -19,10 +19,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -17,10 +17,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -17,10 +17,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -21,10 +21,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -17,10 +17,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -18,10 +18,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -16,10 +16,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -17,10 +17,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -45,7 +45,10 @@
class="_formBlock" class="_formBlock"
>{{ i18n.ts.useReactionPickerForContextMenu }}</FormSwitch >{{ i18n.ts.useReactionPickerForContextMenu }}</FormSwitch
> >
<FormSwitch v-model="swipeOnDesktop" class="_formBlock">{{ <FormSwitch v-if="deviceKind !== 'desktop'" v-model="swipeOnMobile" class="_formBlock">{{
i18n.ts.swipeOnMobile
}}</FormSwitch>
<FormSwitch v-if="deviceKind === 'desktop'" v-model="swipeOnDesktop" class="_formBlock">{{
i18n.ts.swipeOnDesktop i18n.ts.swipeOnDesktop
}}</FormSwitch> }}</FormSwitch>
<FormSwitch v-model="enterSendsMessage" class="_formBlock">{{ <FormSwitch v-model="enterSendsMessage" class="_formBlock">{{
@ -253,6 +256,7 @@ import * as os from "@/os";
import { unisonReload } from "@/scripts/unison-reload"; import { unisonReload } from "@/scripts/unison-reload";
import { i18n } from "@/i18n"; import { i18n } from "@/i18n";
import { definePageMetadata } from "@/scripts/page-metadata"; import { definePageMetadata } from "@/scripts/page-metadata";
import { deviceKind } from "@/scripts/device-kind";
const lang = ref(localStorage.getItem("lang")); const lang = ref(localStorage.getItem("lang"));
const fontSize = ref(localStorage.getItem("fontSize")); const fontSize = ref(localStorage.getItem("fontSize"));
@ -339,6 +343,7 @@ const showUpdates = computed(defaultStore.makeGetterSetter("showUpdates"));
const swipeOnDesktop = computed( const swipeOnDesktop = computed(
defaultStore.makeGetterSetter("swipeOnDesktop") defaultStore.makeGetterSetter("swipeOnDesktop")
); );
const swipeOnMobile = computed(defaultStore.makeGetterSetter("swipeOnMobile"));
const showAdminUpdates = computed( const showAdminUpdates = computed(
defaultStore.makeGetterSetter("showAdminUpdates") defaultStore.makeGetterSetter("showAdminUpdates")
); );
@ -346,6 +351,10 @@ const showTimelineReplies = computed(
defaultStore.makeGetterSetter("showTimelineReplies") defaultStore.makeGetterSetter("showTimelineReplies")
); );
watch(swipeOnDesktop, () => {
defaultStore.set("swipeOnMobile", true);
});
watch(lang, () => { watch(lang, () => {
localStorage.setItem("lang", lang.value as string); localStorage.setItem("lang", lang.value as string);
localStorage.removeItem("locale"); localStorage.removeItem("locale");
@ -379,6 +388,7 @@ watch(
overridedDeviceKind, overridedDeviceKind,
showAds, showAds,
showUpdates, showUpdates,
swipeOnMobile,
swipeOnDesktop, swipeOnDesktop,
seperateRenoteQuote, seperateRenoteQuote,
showAdminUpdates, showAdminUpdates,

View File

@ -110,6 +110,7 @@ const defaultStoreSaveKeys: (keyof (typeof defaultStore)["state"])[] = [
"squareAvatars", "squareAvatars",
"numberOfPageCache", "numberOfPageCache",
"showUpdates", "showUpdates",
"swipeOnMobile",
"swipeOnDesktop", "swipeOnDesktop",
"showAdminUpdates", "showAdminUpdates",
"enableCustomKaTeXMacro", "enableCustomKaTeXMacro",

View File

@ -17,10 +17,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -46,10 +46,9 @@
:space-between="20" :space-between="20"
:virtual="true" :virtual="true"
:allow-touch-move=" :allow-touch-move="
!( defaultStore.state.swipeOnMobile &&
deviceKind === 'desktop' && (deviceKind !== 'desktop' ||
!defaultStore.state.swipeOnDesktop defaultStore.state.swipeOnDesktop)
)
" "
@swiper="setSwiperRef" @swiper="setSwiperRef"
@slide-change="onSlideChange" @slide-change="onSlideChange"

View File

@ -314,6 +314,10 @@ export const defaultStore = markRaw(
where: "device", where: "device",
default: false, default: false,
}, },
swipeOnMobile: {
where: "device",
default: true,
},
showAdminUpdates: { showAdminUpdates: {
where: "account", where: "account",
default: true, default: true,
@ -336,7 +340,7 @@ export const defaultStore = markRaw(
}, },
showTimelineReplies: { showTimelineReplies: {
where: "device", where: "device",
default: true, default: false,
}, },
}), }),
); );