diff --git a/.config/example.yml b/.config/example.yml index 16fa67142e..ee61ebe25c 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -60,6 +60,7 @@ redis: #pass: example-pass #prefix: example-prefix #db: 1 + #user: default # Please configure either MeiliSearch *or* Sonic. # If both MeiliSearch and Sonic configurations are present, MeiliSearch will take precedence. diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index b732fa5a4b..62ff2f8ff0 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -153,6 +153,7 @@ redis: pass: {{ .Values.redis.auth.password | quote }} #prefix: example-prefix #db: 1 + #user: default # ┌─────────────────────┐ #───┘ Sonic configuration └───────────────────────────────────── diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 9aabc2d46e..455a091306 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -385,12 +385,13 @@ _cw: chars: '{count} caràcters' _visibility: followers: "Seguidors" - publicDescription: La teva publicació serà visible per a tots els usuaris + publicDescription: La teva publicació serà visible per a totes les línies de temps + públiques localOnly: Només Local specified: Directe home: Sense llistar homeDescription: Publica només a la línea de temps local - followersDescription: Fes visible només per als teus seguidors + followersDescription: Fes visible només per als teus seguidors i usuaris mencionats specifiedDescription: Fer visible només per a usuaris determinats public: Públic localOnlyDescription: No és visible per als usuaris remots @@ -2133,3 +2134,4 @@ _dialog: charactersBelow: 'No hi ha caràcters suficients! Corrent: {current}/Limit: {min}' removeReaction: Elimina la teva reacció reactionPickerSkinTone: To de pell d'emoji preferit +alt: ALT diff --git a/locales/en-US.yml b/locales/en-US.yml index e9580b9d51..c1854ba066 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1053,6 +1053,7 @@ recommendedInstancesDescription: "Recommended servers separated by line breaks t caption: "Auto Caption" splash: "Splash Screen" updateAvailable: "There might be an update available!" +swipeOnMobile: "Allow swiping between pages" swipeOnDesktop: "Allow mobile-style swiping on desktop" logoImageUrl: "Logo image URL" showAdminUpdates: "Indicate a new Calckey version is avaliable (admin only)" @@ -2074,7 +2075,13 @@ _experiments: postImportsCaption: "Allows users to import their posts from past Calckey,\ \ Misskey, Mastodon, Akkoma, and Pleroma accounts. It may cause slowdowns during\ \ load if your queue is bottlenecked." - _dialog: charactersExceeded: "Max characters exceeded! Current: {current}/Limit: {max}" charactersBelow: "Not enough characters! Current: {current}/Limit: {min}" +_skinTones: + yellow: "Yellow" + light: "Light" + mediumLight: "Medium Light" + medium: "Medium" + mediumDark: "Medium Dark" + dark: "Dark" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 6d1d88ffe2..0bd874f331 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -1,8 +1,8 @@ _lang_: "Español" -headlineMisskey: "¡Un proyecto de código abierto y una plataforma de medios de comunicación\ - \ descentralizada que es gratis para siempre! \U0001F680" -introMisskey: "¡Bienvenido! ¡Calckey es un proyecto de código abierto, plataforma\ - \ descentralizado medios de comunicación social que es gratis para siempre! \U0001F680" +headlineMisskey: "¡Un proyecto de código abierto y una plataforma de medios de comunicación + descentralizada que es gratis para siempre! 🚀" +introMisskey: "¡Bienvenido! ¡Calckey es un proyecto de código abierto, plataforma + descentralizado medios de comunicación social que es gratis para siempre! 🚀" monthAndDay: "{day}/{month}" search: "Buscar" notifications: "Notificaciones" @@ -17,7 +17,7 @@ enterUsername: "Introduce el nombre de usuario" renotedBy: "Impulsado por {user}" noNotes: "No hay publicaciones" noNotifications: "No hay notificaciones" -instance: "Instancia" +instance: "Servidor" settings: "Configuración" basicSettings: "Configuración Básica" otherSettings: "Configuración avanzada" @@ -45,8 +45,8 @@ copyContent: "Copiar contenido" copyLink: "Copiar enlace" delete: "Borrar" deleteAndEdit: "Borrar y editar" -deleteAndEditConfirm: "¿Estás seguro de que quieres borrar esta publicación y editarla?\ - \ Perderás todas las reacciones, impulsos y respuestas." +deleteAndEditConfirm: "¿Estás seguro de que quieres borrar esta publicación y editarla? + Perderás todas las reacciones, impulsos y respuestas." addToList: "Agregar a lista" sendMessage: "Enviar un mensaje" copyUsername: "Copiar nombre de usuario" @@ -66,11 +66,11 @@ import: "Importar" export: "Exportar" files: "Archivos" download: "Descargar" -driveFileDeleteConfirm: "¿Desea borrar el archivo \"{name}\"? Las publicaciones que\ - \ tengan este archivo como adjunto serán eliminadas." +driveFileDeleteConfirm: "¿Desea borrar el archivo \"{name}\"? Será removido de todas + las publicaciones que tengan este archivo adjunto." unfollowConfirm: "¿Desea dejar de seguir a {name}?" -exportRequested: "Se ha solicitado la exportación. Puede tomar un tiempo. Cuando termine\ - \ la exportación, se añadirá en el drive." +exportRequested: "Se ha solicitado la exportación. Puede tomar un tiempo. Cuando termine + la exportación, se añadirá en el drive." importRequested: "Se ha solicitado la importación. Puede tomar un tiempo." lists: "Listas" noLists: "No tiene listas" @@ -85,11 +85,11 @@ error: "Error" somethingHappened: "Ocurrió un error" retry: "Reintentar" pageLoadError: "Error al cargar la página." -pageLoadErrorDescription: "Normalmente es debido a la red o al caché del navegador.\ - \ Por favor limpie el caché o intente más tarde." +pageLoadErrorDescription: "Normalmente es debido a la red o al caché del navegador. + Por favor limpie el caché o intente más tarde." 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\ - \ una versión más reciente del cliente." +youShouldUpgradeClient: "Para ver esta página, por favor refrezca el navegador y utiliza + una versión más reciente del cliente." enterListName: "Ingrese nombre de lista" privacy: "Privacidad" makeFollowManuallyApprove: "Aprobar manualmente las solicitudes de seguimiento" @@ -114,8 +114,8 @@ sensitive: "Marcado como sensible" add: "Agregar" reaction: "Reacción" reactionSetting: "Reacciones para mostrar en el menú de reacciones" -reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete\ - \ la tecla + para añadir." +reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete + la tecla + para añadir." rememberNoteVisibility: "Recordar la configuración de visibilidad de la publicación" attachCancel: "Quitar adjunto" markAsSensitive: "Marcar como sensible" @@ -144,24 +144,24 @@ emojiUrl: "URL de la imágen del emoji" addEmoji: "Agregar emoji" settingGuide: "Configuración sugerida" cacheRemoteFiles: "Mantener en cache 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\ - \ almacenamiento del servidor, pero eso aumentará el tráfico al no crear miniaturas." +cacheRemoteFilesDescription: "Si desactiva esta configuración, los archivos remotos + 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." flagAsBot: "Esta cuenta es un bot" -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\ - \ cadenas infinitas de reacciones, y ajustará los sistemas internos de Calckey para\ - \ que trate a esta cuenta como un bot." +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 + cadenas infinitas de reacciones, y ajustará los sistemas internos de Calckey para + que trate a esta cuenta como un bot." flagAsCat: "Esta cuenta es un gato" flagAsCatDescription: "Vas a tener orejas de gato y hablar como un gato!" flagShowTimelineReplies: "Mostrar respuestas a las notas en la biografía" -flagShowTimelineRepliesDescription: "Cuando se marca, la línea de tiempo muestra respuestas\ - \ a otras publicaciones además de las publicaciones del usuario." -autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los\ - \ usuarios que sigues" +flagShowTimelineRepliesDescription: "Cuando se marca, la línea de tiempo muestra respuestas + a otras publicaciones además de las publicaciones del usuario." +autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los + usuarios que sigues" addAccount: "Agregar Cuenta" loginFailed: "Error al iniciar sesión" -showOnRemote: "Ver en una instancia remota" +showOnRemote: "Ver en servidor remoto" general: "General" wallpaper: "Fondo de pantalla" setWallpaper: "Establecer fondo de pantalla" @@ -170,17 +170,17 @@ searchWith: "Buscar: {q}" youHaveNoLists: "No tienes listas" followConfirm: "¿Desea seguir a {name}?" proxyAccount: "Cuenta proxy" -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\ - \ añade un usuario remoto a una lista, si ningún usuario local sigue al usuario\ - \ agregado a la lista, la instancia no puede obtener su actividad. Así que la cuenta\ - \ proxy sigue al usuario añadido a la lista." +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 añade + un usuario remoto a una lista, si ningún usuario local sigue al usuario agregado + a la lista, el servidor no puede obtener su actividad. Así que la cuenta proxy sigue + al usuario añadido a la lista." host: "Host" selectUser: "Elegir usuario" recipient: "Recipiente" annotation: "Anotación" federation: "Federación" -instances: "Instancia" +instances: "Servidores" registeredAt: "Registrado en" latestRequestSentAt: "Ultimo pedido enviado" latestRequestReceivedAt: "Ultimo pedido recibido" @@ -190,7 +190,7 @@ charts: "Chat" perHour: "por hora" perDay: "por día" stopActivityDelivery: "Dejar de enviar actividades" -blockThisInstance: "Bloquear instancia" +blockThisInstance: "Bloquear este servidor" operations: "Operaciones" software: "Software" version: "Versión" @@ -200,18 +200,17 @@ jobQueue: "Cola de trabajos" cpuAndMemory: "CPU y Memoria" network: "Red" disk: "Disco" -instanceInfo: "información de la instancia" +instanceInfo: "Información del servidor" statistics: "Estadísticas" clearQueue: "Limpiar cola" clearQueueConfirmTitle: "¿Desea limpiar la cola?" -clearQueueConfirmText: "Las publicaciones aún no entregadas no se federarán. Normalmente\ - \ no se necesita ejecutar esta operación." +clearQueueConfirmText: "Las publicaciones aún no entregadas no se federarán. Normalmente + no se necesita ejecutar esta operación." clearCachedFiles: "Limpiar caché" clearCachedFilesConfirm: "¿Desea borrar todos los archivos remotos cacheados?" -blockedInstances: "Instancias bloqueadas" -blockedInstancesDescription: "Seleccione los hosts de las instancias que desea bloquear,\ - \ separadas por una linea nueva. Las instancias bloqueadas no podrán comunicarse\ - \ con esta instancia." +blockedInstances: "Servidores bloqueados" +blockedInstancesDescription: "Escriba los hosts de los servidores que desea bloquear. + Los servidores bloqueados no podrán comunicarse con este servidor." muteAndBlock: "Silenciar y bloquear" mutedUsers: "Usuarios silenciados" blockedUsers: "Usuarios bloqueados" @@ -234,9 +233,9 @@ all: "Todo" subscribing: "Suscribiendo" publishing: "Publicando" notResponding: "Sin respuestas" -instanceFollowing: "Siguiendo instancias" -instanceFollowers: "Seguidores de la instancia" -instanceUsers: "Usuarios de la instancia" +instanceFollowing: "Siguiendo en este servidor" +instanceFollowers: "Seguidores del servidor" +instanceUsers: "Usuarios de este servidor" changePassword: "Cambiar contraseña" security: "Seguridad" retypedNotMatch: "No hay coincidencia." @@ -260,9 +259,9 @@ saved: "Guardado" messaging: "Chat" upload: "Subir" keepOriginalUploading: "Mantener la imagen original" -keepOriginalUploadingDescription: "Mantener la versión original al cargar imágenes.\ - \ Si está desactivado, el navegador generará imágenes para la publicación web en\ - \ el momento de recargar la página." +keepOriginalUploadingDescription: "Mantener la versión original al cargar imágenes. + Si está desactivado, el navegador generará imágenes para la publicación web en el + momento de recargar la página." fromDrive: "Desde el drive" fromUrl: "Desde la URL" uploadFromUrl: "Subir desde una URL" @@ -311,8 +310,8 @@ unableToDelete: "No se puede borrar" inputNewFileName: "Ingrese un nuevo nombre de archivo" inputNewDescription: "Ingrese nueva descripción" inputNewFolderName: "Ingrese un nuevo nombre de la carpeta" -circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que\ - \ quieres mover." +circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que + quieres mover." hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía." copyUrl: "Copiar URL" rename: "Renombrar" @@ -329,8 +328,8 @@ unwatch: "Dejar de ver" accept: "Aceptar" reject: "Rechazar" normal: "Normal" -instanceName: "Nombre de la instancia" -instanceDescription: "Descripción de la instancia" +instanceName: "Nombre del servidor" +instanceDescription: "Descripción del servidor" maintainerName: "Nombre del administrador" maintainerEmail: "Correo del administrador" tosUrl: "URL de los términos de uso" @@ -346,8 +345,8 @@ connectService: "Conectar" disconnectService: "Desconectar" enableLocalTimeline: "Habilitar linea de tiempo local" enableGlobalTimeline: "Habilitar linea de tiempo global" -disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia\ - \ el administrador y los moderadores pueden seguir usándolos" +disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia + el administrador y los moderadores pueden seguir usándolos" registration: "Registro" enableRegistration: "Permitir nuevos registros" invite: "Invitar" @@ -359,11 +358,11 @@ bannerUrl: "URL de la imagen del banner" backgroundImageUrl: "URL de la imagen de fondo" basicInfo: "Información básica" pinnedUsers: "Usuarios fijados" -pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\"\ - \ separados por una linea nueva" +pinnedUsersDescription: "Describir los usuarios que quiere fijar en la pestaña \"\ + Explorar\" separados por líneas nuevas." pinnedPages: "Páginas fijadas" -pinnedPagesDescription: "Describa las rutas de las páginas que desea fijar a la página\ - \ principal de la instancia, separadas por lineas nuevas" +pinnedPagesDescription: "Describa las rutas de las páginas que desea fijar a la página + principal del servidor, separadas por líneas nuevas." pinnedClipId: "Id del clip fijado" pinnedNotes: "Publicación fijada" hcaptcha: "hCaptcha" @@ -374,17 +373,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "activar reCAPTCHA" recaptchaSiteKey: "Clave del sitio" recaptchaSecretKey: "Clave secreta" -avoidMultiCaptchaConfirm: "El uso de múltiples Captchas puede causar interferencia.\ - \ ¿Desea desactivar el otro Captcha? Puede dejar múltiples Captchas habilitadas\ - \ presionando cancelar." +avoidMultiCaptchaConfirm: "El uso de múltiples Captchas puede causar interferencia. + ¿Desea desactivar el otro Captcha? Puede dejar múltiples Captchas habilitadas presionando + cancelar." antennas: "Antenas" manageAntennas: "Administrar antenas" name: "Nombre" antennaSource: "Origen de la antena" antennaKeywords: "Palabras clave para recibir" antennaExcludeKeywords: "Palabras clave para excluir" -antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar\ - \ con una linea nueva es una declaración OR" +antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar + con una linea nueva es una declaración OR" notifyAntenna: "Notificar nueva publicación" withFileAntenna: "Sólo publicaciones con archivos adjuntados" enableServiceworker: "Activar ServiceWorker" @@ -472,8 +471,8 @@ strongPassword: "Muy buena contraseña" passwordMatched: "Correcto" passwordNotMatched: "Las contraseñas no son las mismas" signinWith: "Inicie sesión con {x}" -signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario\ - \ y contraseña correctos." +signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario + y contraseña correctos." tapSecurityKey: "Toque la clave de seguridad" or: "O" language: "Idioma" @@ -483,8 +482,8 @@ aboutX: "Acerca de {x}" useOsNativeEmojis: "Usa los emojis nativos de la plataforma" disableDrawer: "No mostrar los menús en cajones" youHaveNoGroups: "Sin grupos" -joinOrCreateGroup: "Obtenga una invitación para unirse al grupos o puede crear su\ - \ propio grupo." +joinOrCreateGroup: "Obtenga una invitación para unirse al grupos o puede crear su + propio grupo." noHistory: "No hay datos en el historial" signinHistory: "Historial de ingresos" disableAnimatedMfm: "Deshabilitar MFM que tiene animaciones" @@ -515,28 +514,28 @@ showFeaturedNotesInTimeline: "Mostrar publicaciones destacadas en la línea de t objectStorage: "Almacenamiento de objetos" useObjectStorage: "Usar almacenamiento de objetos" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "Prefijo de URL utilizado para construir URL para hacer\ - \ referencia a objetos (medios). Especifique su URL si está utilizando un CDN o\ - \ Proxy; 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://.s3.amazonaws.com'\ - \ para AWS S3 y 'https://storage.googleapis.com/' para GCS." +objectStorageBaseUrlDesc: "Prefijo de URL utilizado para construir URL para hacer + referencia a objetos (medios). Especifique su URL si está utilizando un CDN o Proxy; + 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://.s3.amazonaws.com' + para AWS S3 y 'https://storage.googleapis.com/' para GCS." objectStorageBucket: "Bucket" -objectStorageBucketDesc: "Especifique el nombre del depósito utilizado en el servicio\ - \ configurado." +objectStorageBucketDesc: "Especifique el nombre del depósito utilizado en el servicio + configurado." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Los archivos se almacenarán en el directorio de este prefijo." objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Deje esto en blanco si está utilizando AWS S3; de lo contrario,\ - \ especifique el punto final como '' o ': ' de acuerdo con la\ - \ guía de servicio que va a utilizar." +objectStorageEndpointDesc: "Deje esto en blanco si está utilizando AWS S3; de lo contrario, + especifique el punto final como '' o ': ' de acuerdo con la guía + de servicio que va a utilizar." objectStorageRegion: "Region" -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'." +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'." objectStorageUseSSL: "Usar SSL" objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión API" objectStorageUseProxy: "Conectarse a través de Proxy" -objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión\ - \ de Almacenamiento de objetos" +objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión + de Almacenamiento de objetos" objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir " serverLogs: "Registros del servidor" deleteAll: "Eliminar todos" @@ -564,8 +563,8 @@ sort: "Ordenar" ascendingOrder: "Ascendente" descendingOrder: "Descendente" scratchpad: "Scratch pad" -scratchpadDescription: "Scratchpad proporciona un entorno experimental para AiScript.\ - \ Puede escribir, ejecutar y verificar los resultados que interactúan con Calckey." +scratchpadDescription: "Scratchpad proporciona un entorno experimental para AiScript. + Puede escribir, ejecutar y verificar los resultados que interactúan con Calckey." output: "Salida" script: "Script" disablePagesScript: "Deshabilitar AiScript en Páginas" @@ -573,14 +572,14 @@ updateRemoteUser: "Actualizar información de usuario remoto" deleteAllFiles: "Borrar todos los archivos" deleteAllFilesConfirm: "¿Desea borrar todos los archivos?" removeAllFollowing: "Retener todos los siguientes" -removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}.\ - \ Ejecutar en caso de que esta instancia haya dejado de existir." +removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}. + Ejecutar en caso de que esta instancia haya dejado de existir." userSuspended: "Este usuario ha sido suspendido." userSilenced: "Este usuario ha sido silenciado." yourAccountSuspendedTitle: "Esta cuenta ha sido suspendida" -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,\ - \ póngase en contacto con el administrador. Por favor, no cree una nueva cuenta." +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, + póngase en contacto con el administrador. Por favor, no cree una nueva cuenta." menu: "Menú" divider: "Divisor" addItem: "Agregar elemento" @@ -634,15 +633,15 @@ smtpHost: "Host" smtpPort: "Puerto" smtpUser: "Nombre de usuario" smtpPass: "Contraseña" -emptyToDisableSmtpAuth: "Deje el nombre del usuario y la contraseña en blanco para\ - \ deshabilitar la autenticación SMTP" +emptyToDisableSmtpAuth: "Deje el nombre del usuario y la contraseña en blanco para + deshabilitar la autenticación SMTP" smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP" smtpSecureInfo: "Apagar cuando se use STARTTLS" testEmail: "Prueba de envío" wordMute: "Silenciar palabras" regexpError: "Error de la expresión regular" -regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line}\ - \ de las palabras muteadas {tab}" +regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} + de las palabras muteadas {tab}" instanceMute: "Instancias silenciadas" userSaysSomething: "{name} dijo algo" makeActive: "Activar" @@ -658,13 +657,13 @@ create: "Crear" notificationSetting: "Ajustes de Notificaciones" notificationSettingDesc: "Por favor elija el tipo de notificación a mostrar" useGlobalSetting: "Usar ajustes globales" -useGlobalSettingDesc: "Al activarse, se usará la configuración de notificaciones de\ - \ la cuenta, al desactivarse se pueden hacer configuraciones particulares." +useGlobalSettingDesc: "Al activarse, se usará la configuración de notificaciones de + la cuenta, al desactivarse se pueden hacer configuraciones particulares." other: "Otro" regenerateLoginToken: "Regenerar token de login" -regenerateLoginTokenDescription: "Regenerar el token usado internamente durante el\ - \ login. No siempre es necesario hacerlo. Al hacerlo de nuevo, se deslogueará en\ - \ todos los dispositivos." +regenerateLoginTokenDescription: "Regenerar el token usado internamente durante el + login. No siempre es necesario hacerlo. Al hacerlo de nuevo, se deslogueará en todos + los dispositivos." setMultipleBySeparatingWithSpace: "Puedes añadir mas de uno, separado por espacios." fileIdOrUrl: "Id del archivo o URL" behavior: "Comportamiento" @@ -672,15 +671,15 @@ sample: "Muestra" abuseReports: "Reportes" reportAbuse: "Reportar" reportAbuseOf: "Reportar a {name}" -fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en\ - \ particular, ingrese la URL de esta." +fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en + particular, ingrese la URL de esta." abuseReported: "Se ha enviado el reporte. Muchas gracias." reporter: "Reportador" reporteeOrigin: "Reportar a" reporterOrigin: "Origen del reporte" forwardReport: "Transferir un informe a una instancia remota" -forwardReportIsAnonymous: "No puede ver su información de la instancia remota y aparecerá\ - \ como una cuenta anónima del sistema" +forwardReportIsAnonymous: "No puede ver su información de la instancia remota y aparecerá + como una cuenta anónima del sistema" send: "Enviar" abuseMarkAsResolved: "Marcar reporte como resuelto" openInNewTab: "Abrir en una Nueva Pestaña" @@ -701,8 +700,8 @@ unclip: "Quitar clip" confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\"\ . ¿Quiere quitar la nota del clip?" public: "Público" -i18nInfo: "Calckey está siendo traducido a varios idiomas gracias a voluntarios. Se\ - \ puede colaborar traduciendo en {link}" +i18nInfo: "Calckey está siendo traducido a varios idiomas gracias a voluntarios. Se + puede colaborar traduciendo en {link}" manageAccessTokens: "Administrar tokens de acceso" accountInfo: "Información de la Cuenta" notesCount: "Cantidad de notas" @@ -721,18 +720,18 @@ no: "No" driveFilesCount: "Cantidad de archivos en el drive" driveUsage: "Uso del drive" noCrawle: "Rechazar indexación del crawler" -noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas,\ - \ páginas, etc." -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\ - \ los seguidores sean aprobados manualmente." -alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por\ - \ defecto" +noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas, + páginas, etc." +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 + los seguidores sean aprobados manualmente." +alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por + defecto" loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas" disableShowingAnimatedImages: "No reproducir imágenes animadas" -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\ - \ la configuración." +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 la + configuración." notSet: "Sin especificar" emailVerified: "Su dirección de correo electrónico ha sido verificada." noteFavoritesCount: "Número de notas favoritas" @@ -744,16 +743,16 @@ clips: "Clip" experimentalFeatures: "Características experimentales" developer: "Desarrolladores" makeExplorable: "Hacer visible la cuenta en \"Explorar\"" -makeExplorableDescription: "Si desactiva esta opción, su cuenta no aparecerá en la\ - \ sección \"Explorar\"." +makeExplorableDescription: "Si desactiva esta opción, su cuenta no aparecerá en la + sección \"Explorar\"." showGapBetweenNotesInTimeline: "Mostrar un intervalo entre notas en la línea de tiempo" duplicate: "Duplicar" left: "Izquierda" center: "Centrar" wide: "Ancho" narrow: "Estrecho" -reloadToApplySetting: "Esta configuración sólo se aplicará después de recargar la\ - \ página. ¿Recargar ahora?" +reloadToApplySetting: "Esta configuración sólo se aplicará después de recargar la + página. ¿Recargar ahora?" needReloadToApply: "Se requiere un reinicio para la aplicar los cambios" showTitlebar: "Mostrar la barra de título" clearCache: "Limpiar caché" @@ -761,11 +760,11 @@ onlineUsersCount: "{n} usuarios en línea" nUsers: "{n} Usuarios" nNotes: "{n} Notas" sendErrorReports: "Envíar informe de 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\ - \ la calidad de Calckey. \nEsto incluye información como la versión del sistema\ - \ operativo, el tipo de navegador que está utilizando y su historial en Calckey,\ - \ entre otros datos." +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 + la calidad de Calckey. \nEsto incluye información como la versión del sistema operativo, + el tipo de navegador que está utilizando y su historial en Calckey, entre otros + datos." myTheme: "Mi Tema" backgroundColor: "Fondo" accentColor: "Acento" @@ -793,8 +792,8 @@ receiveAnnouncementFromInstance: "Recibir notificaciones de la instancia" emailNotification: "Notificaciones por correo electrónico" publish: "Publicar" inChannelSearch: "Buscar en el canal" -useReactionPickerForContextMenu: "Haga clic con el botón derecho para abrir el menu\ - \ de reacciones" +useReactionPickerForContextMenu: "Haga clic con el botón derecho para abrir el menu + de reacciones" typingUsers: "{users} está escribiendo" jumpToSpecifiedDate: "Saltar a una fecha específica" showingPastTimeline: "Mostrar líneas de tiempo antiguas" @@ -805,16 +804,16 @@ unlikeConfirm: "¿Quitar como favorito?" fullView: "Vista completa" quitFullView: "quitar vista completa" addDescription: "Agregar descripción" -userPagePinTip: "Puede mantener sus notas visibles aquí seleccionando Pin en el menú\ - \ de notas individuales" +userPagePinTip: "Puede mantener sus notas visibles aquí seleccionando Pin en el menú + de notas individuales" notSpecifiedMentionWarning: "Algunas menciones no están incluidas en el destino" info: "Información" userInfo: "Información del usuario" unknown: "Desconocido" onlineStatus: "En línea" hideOnlineStatus: "mostrarse como desconectado" -hideOnlineStatusDescription: "Ocultar su estado en línea puede reducir la eficacia\ - \ de algunas funciones, como la búsqueda" +hideOnlineStatusDescription: "Ocultar su estado en línea puede reducir la eficacia + de algunas funciones, como la búsqueda" online: "En línea" active: "Activo" offline: "Sin conexión" @@ -849,8 +848,8 @@ emailNotConfiguredWarning: "No se ha configurado una dirección de correo electr ratio: "Proporción" previewNoteText: "Mostrar vista preliminar" customCss: "CSS personalizado" -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." +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." global: "Global" squareAvatars: "Mostrar iconos cuadrados" sent: "Enviar" @@ -865,9 +864,9 @@ whatIsNew: "Mostrar cambios" translate: "Traducir" translatedFrom: "Traducido de {x}" accountDeletionInProgress: "La eliminación de la cuenta está en curso" -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\ - \ de usuario no se pueden cambiar posteriormente." +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 + de usuario no se pueden cambiar posteriormente." aiChanMode: "Modo Ai" keepCw: "Mantener la advertencia de contenido" pubSub: "Cuentas Pub/Sub" @@ -877,21 +876,21 @@ unresolved: "Sin resolver" breakFollow: "Dejar de seguir" itsOn: "¡Está encendido!" itsOff: "¡Está apagado!" -emailRequiredForSignup: "Se requere una dirección de correo electrónico para el registro\ - \ de la cuenta" +emailRequiredForSignup: "Se requere una dirección de correo electrónico para el registro + de la cuenta" unread: "No leído" filter: "Filtro" controlPanel: "Panel de control" manageAccounts: "Administrar cuenta" makeReactionsPublic: "Hacer el historial de reacciones público" -makeReactionsPublicDescription: "Todas las reacciones que hayas hecho serán públicamente\ - \ visibles." +makeReactionsPublicDescription: "Todas las reacciones que hayas hecho serán públicamente + visibles." classic: "Clásico" muteThread: "Ocultar hilo" unmuteThread: "Mostrar hilo" ffVisibility: "Visibilidad de seguidores y seguidos" -ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes\ - \ te siguen" +ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes + te siguen" continueThread: "Ver la continuación del hilo" deleteAccountConfirm: "La cuenta será borrada. ¿Está seguro?" incorrectPassword: "La contraseña es incorrecta" @@ -932,16 +931,16 @@ thereIsUnresolvedAbuseReportWarning: "Hay reportes sin resolver" recommended: "Recomendado" check: "Verificar" driveCapOverrideLabel: "Cambiar la capacidad de la unidad para este usuario" -driveCapOverrideCaption: "Restablecer la capacidad a su predeterminado ingresando\ - \ un valor de 0 o menos" +driveCapOverrideCaption: "Restablecer la capacidad a su predeterminado ingresando + un valor de 0 o menos" requireAdminForView: "Necesitas iniciar sesión como administrador para ver esto." isSystemAccount: "Cuenta creada y operada automáticamente por el sistema" typeToConfirm: "Ingrese {x} para confirmar" deleteAccount: "Borrar cuenta" document: "Documento" numberOfPageCache: "Cantidad de páginas cacheadas" -numberOfPageCacheDescription: "Al aumentar el número mejora la conveniencia pero tambien\ - \ puede aumentar la carga y la memoria a usarse" +numberOfPageCacheDescription: "Al aumentar el número mejora la conveniencia pero tambien + puede aumentar la carga y la memoria a usarse" logoutConfirm: "¿Cerrar sesión?" lastActiveDate: "Utilizado por última vez el" statusbar: "Barra de estado" @@ -958,37 +957,36 @@ sensitiveMediaDetection: "Detección de contenido NSFW" localOnly: "Solo local" remoteOnly: "Sólo remoto" failedToUpload: "La subida falló" -cannotUploadBecauseInappropriate: "Este archivo no se puede subir debido a que algunas\ - \ partes han sido detectadas comoNSFW." -cannotUploadBecauseNoFreeSpace: "La subida falló debido a falta de espacio libre en\ - \ la unidad del usuario." +cannotUploadBecauseInappropriate: "Este archivo no se puede subir debido a que algunas + partes han sido detectadas comoNSFW." +cannotUploadBecauseNoFreeSpace: "La subida falló debido a falta de espacio libre en + la unidad del usuario." beta: "Beta" enableAutoSensitive: "Marcar automáticamente contenido NSFW" -enableAutoSensitiveDescription: "Permite la detección y marcado automático de contenido\ - \ NSFW usando 'Machine Learning' cuando sea posible. Incluso si esta opción está\ - \ desactivada, puede ser activado para toda la instancia." -activeEmailValidationDescription: "Habilita la validación estricta de direcciones\ - \ de correo electrónico, lo cual incluye la revisión de direcciones desechables\ - \ y si se puede comunicar con éstas. Cuando está deshabilitado, sólo el formato\ - \ de la dirección es validado." +enableAutoSensitiveDescription: "Permite la detección y marcado automático de contenido + NSFW usando 'Machine Learning' cuando sea posible. Incluso si esta opción está desactivada, + puede ser activado para toda la instancia." +activeEmailValidationDescription: "Habilita la validación estricta de direcciones + de correo electrónico, lo cual incluye la revisión de direcciones desechables y + si se puede comunicar con éstas. Cuando está deshabilitado, sólo el formato de la + dirección es validado." navbar: "Barra de navegación" shuffle: "Aleatorio" account: "Cuentas" move: "Mover" _sensitiveMediaDetection: - 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\ - \ ligeramente la carga en el servidor." + 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 + ligeramente la carga en el servidor." sensitivity: "Sensibilidad de detección" - sensitivityDescription: "Reducir la sensibilidad puede acarrear a varios falsos\ - \ positivos, mientras que incrementarla puede reducir las detecciones (falsos\ - \ negativos)." + sensitivityDescription: "Reducir la sensibilidad puede acarrear a varios falsos + positivos, mientras que incrementarla puede reducir las detecciones (falsos negativos)." setSensitiveFlagAutomatically: "Marcar como NSFW" - setSensitiveFlagAutomaticallyDescription: "Los resultados de la detección interna\ - \ pueden ser retenidos incluso si la opción está desactivada." + setSensitiveFlagAutomaticallyDescription: "Los resultados de la detección interna + pueden ser retenidos incluso si la opción está desactivada." analyzeVideos: "Habilitar el análisis de videos" - analyzeVideosDescription: "Analizar videos en adición a las imágenes. Esto puede\ - \ incrementar ligeramente la carga del servidor." + analyzeVideosDescription: "Analizar videos en adición a las imágenes. Esto puede + incrementar ligeramente la carga del servidor." _emailUnavailable: used: "Ya fue usado" format: "El formato de este correo electrónico no es válido" @@ -1002,15 +1000,15 @@ _ffVisibility: _signup: almostThere: "Ya falta poco" 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\ - \ link enviado en el correo para completar el ingreso." + emailSent: "Se envió un correo de verificación a la dirección {email}. Acceda al + link enviado en el correo para completar el ingreso." _accountDelete: accountDelete: "Eliminar Cuenta" - 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\ - \ archivos subidos." - sendEmail: "Cuando se termine de borrar la cuenta, se enviará un correo a la dirección\ - \ usada para el registro." + 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 archivos + subidos." + sendEmail: "Cuando se termine de borrar la cuenta, se enviará un correo a la dirección + usada para el registro." requestAccountDelete: "Pedir la eliminación de la cuenta." started: "El proceso de eliminación ha comenzado." inProgress: "La eliminación está en proceso." @@ -1018,12 +1016,11 @@ _ad: back: "Deseleccionar" reduceFrequencyOfThisAd: "Mostrar menos este anuncio." _forgotPassword: - enterEmail: "Ingrese el correo usado para registrar la cuenta. Se enviará un link\ - \ para resetear la contraseña." + enterEmail: "Ingrese el correo usado para registrar la cuenta. Se enviará un link + para resetear la contraseña." 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,\ - \ póngase en contacto con el administrador de la instancia para restablecer su\ - \ contraseña" + 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 contraseña" _gallery: my: "Mi galería" liked: "Publicaciones que me gustan" @@ -1046,15 +1043,15 @@ _preferencesBackups: save: "Guardar cambios" inputName: "Por favor, ingresa un nombre para este respaldo" cannotSave: "Fallo al guardar" - nameAlreadyExists: "Un respaldo llamado \"{name}\" ya existe. Por favor ingresa\ - \ un nombre diferente" + nameAlreadyExists: "Un respaldo llamado \"{name}\" ya existe. Por favor ingresa + un nombre diferente" applyConfirm: "¿Realmente quieres aplicar los cambios desde el archivo \"{name}\"\ \ a este dispositivo? Las configuraciones existentes serán sobreescritas. " saveConfirm: "¿Guardar respaldo como \"{name}\"?" deleteConfirm: "¿Borrar el respaldo \"{name}\"?" renameConfirm: "¿Renombrar este respaldo de \"{old}\" a \"{new}\"?" - noBackups: "No existen respaldos. Deberás respaldar las configuraciones del cliente\ - \ en este servidor usando \"Crear nuevo respaldo\"" + noBackups: "No existen respaldos. Deberás respaldar las configuraciones del cliente + en este servidor usando \"Crear nuevo respaldo\"" createdAt: "Creado: {date} {time}" updatedAt: "Actualizado: {date} {time}" cannotLoad: "La carga falló" @@ -1066,15 +1063,15 @@ _registry: domain: "Dominio" createKey: "Crear una llave" _aboutMisskey: - about: "Calckey es una bifurcación de Misskey creada por ThatOneCalculator, que\ - \ ha estado en desarrollo desde el 2022." + about: "Calckey es una bifurcación de Misskey creada por ThatOneCalculator, que + ha estado en desarrollo desde el 2022." contributors: "Principales colaboradores" allContributors: "Todos los colaboradores" source: "Código fuente" translation: "Traducir Calckey" donate: "Donar a Calckey" - morePatrons: "También apreciamos el apoyo de muchos más que no están enlistados\ - \ aquí. ¡Gracias! \U0001F970" + morePatrons: "También apreciamos el apoyo de muchos más que no están enlistados + aquí. ¡Gracias! 🥰" patrons: "Mecenas de Calckey" _nsfw: respect: "Ocultar medios NSFW" @@ -1082,13 +1079,13 @@ _nsfw: force: "Ocultar todos los medios" _mfm: cheatSheet: "Hoja de referencia de MFM" - 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\ - \ sintaxis disponibles en MFM." + 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 sintaxis + disponibles en MFM." dummy: "Calckey expande el mundo de la Fediverso" mention: "Menciones" - mentionDescription: "El signo @ seguido de un nombre de usuario se puede utilizar\ - \ para notificar a un usuario en particular." + mentionDescription: "El signo @ seguido de un nombre de usuario se puede utilizar + para notificar a un usuario en particular." hashtag: "Hashtag" hashtagDescription: "Puede especificar un hashtag con un numeral y el texto." url: "URL" @@ -1104,8 +1101,8 @@ _mfm: inlineCode: "Código (insertado)" inlineCodeDescription: "Muestra el código de un programa resaltando su sintaxis" blockCode: "Código (bloque)" - blockCodeDescription: "Código de resaltado de sintaxis, como programas de varias\ - \ líneas con bloques." + blockCodeDescription: "Código de resaltado de sintaxis, como programas de varias + líneas con bloques." inlineMath: "Fórmula (insertado)" inlineMathDescription: "Muestra fórmulas (KaTeX) insertadas" blockMath: "Fórmula (bloque)" @@ -1117,8 +1114,8 @@ _mfm: search: "Buscar" searchDescription: "Muestra una caja de búsqueda con texto pre-escrito" flip: "Echar de un capirotazo" - flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda\ - \ / derecha." + flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda + / derecha." jelly: "Animación (gelatina)" jellyDescription: "Aplica un efecto de animación tipo gelatina" tada: "Animación (tadá)" @@ -1140,8 +1137,8 @@ _mfm: x4: "Totalmente grande" x4Description: "Muestra el contenido totalmente grande" blur: "Desenfoque" - blurDescription: "Para desenfocar el contenido. Se muestra claramente al colocar\ - \ el puntero encima." + blurDescription: "Para desenfocar el contenido. Se muestra claramente al colocar + el puntero encima." font: "Fuente" fontDescription: "Elegir la fuente del contenido" rainbow: "Arcoíris" @@ -1151,8 +1148,8 @@ _mfm: rotate: "Rotar" rotateDescription: "Rota el contenido a un ángulo especificado." plain: "Plano" - plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto\ - \ MFM." + plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto + MFM." position: Posición _instanceTicker: none: "No mostrar" @@ -1182,20 +1179,19 @@ _menuDisplay: hide: "Ocultar" _wordMute: muteWords: "Palabras que silenciar" - muteWordsDescription: "Separar con espacios indica una declaracion And, separar\ - \ con lineas nuevas indica una declaracion Or。" - muteWordsDescription2: "Encerrar las palabras clave entre numerales para usar expresiones\ - \ regulares" + muteWordsDescription: "Separar con espacios indica una declaracion And, separar + con lineas nuevas indica una declaracion Or。" + muteWordsDescription2: "Encerrar las palabras clave entre numerales para usar expresiones + regulares" 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\ - \ las condiciones. Las notas no agregadas seguirán quitadas aunque cambien las\ - \ condiciones." + 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 condiciones." soft: "Suave" hard: "Duro" mutedNotes: "Notas silenciadas" _instanceMute: - instanceMuteDescription: "Silencia todas las notas y reposts de la instancias seleccionadas,\ - \ incluyendo respuestas a los usuarios de las mismas" + instanceMuteDescription: "Silencia todas las notas y reposts de la instancias seleccionadas, + incluyendo respuestas a los usuarios de las mismas" instanceMuteDescription2: "Separar por líneas" title: "Oculta las notas de las instancias listadas." heading: "Instancias a silenciar" @@ -1301,47 +1297,47 @@ _tutorial: step1_1: "¡Bienvenido!" step1_2: "Vamos a configurarte. Estarás listo y funcionando en poco tiempo" 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\ - \ para los demás saber si quieren ver tus notas o seguirte." + 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." 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\ - \ sigues, así que intenta seguir un par de cuentas para empezar.\nHaz clic en\ - \ el círculo más en la parte superior derecha de un perfil para seguirlos." + 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 el + círculo más en la parte superior derecha de un perfil para seguirlos." step4_1: "Vamos a salir a la calle" - step4_2: "Para tu primer post, a algunas personas les gusta hacer un post de {introduction}\ - \ o un simple \"¡Hola mundo!\"" + step4_2: "Para tu primer post, a algunas personas les gusta hacer un post de {introduction} + o un simple \"¡Hola mundo!\"" 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_3: "La línea de tiempo Inicio {icon} es donde puedes ver las publicaciones\ - \ de tus seguidores." - step5_4: "La línea de tiempo Local {icon} es donde puedes ver las publicaciones\ - \ de todos los demás en esta instancia." - step5_5: "La línea de tiempo {icon} recomendada es donde puedes ver las publicaciones\ - \ de las instancias que los administradores recomiendan." - step5_6: "La línea de tiempo Social {icon} es donde puedes ver las publicaciones\ - \ de los amigos de tus seguidores." - step5_7: "La línea de tiempo Global {icon} es donde puedes ver las publicaciones\ - \ de todas las demás instancias conectadas." + step5_3: "La línea de tiempo Inicio {icon} es donde puedes ver las publicaciones + de tus seguidores." + step5_4: "La línea de tiempo Local {icon} es donde puedes ver las publicaciones + de todos los demás en esta instancia." + step5_5: "La línea de tiempo {icon} recomendada es donde puedes ver las publicaciones + de las instancias que los administradores recomiendan." + step5_6: "La línea de tiempo Social {icon} es donde puedes ver las publicaciones + de los amigos de tus seguidores." + step5_7: "La línea de tiempo Global {icon} es donde puedes ver las publicaciones + de todas las demás instancias conectadas." 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,\ - \ una red interconectada de miles de servidores, llamada \"instancias\"" - 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\ - \ el tranquillo enseguida" + 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\"" + 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 el + tranquillo enseguida" step6_4: "¡Ahora ve, explora y diviértete!" _2fa: alreadyRegistered: "Ya has completado la configuración." registerTOTP: "Registrar dispositivo" registerSecurityKey: "Registrar clave" - step1: "Primero, instale en su dispositivo la aplicación de autenticación {a} o\ - \ {b} u otra." + step1: "Primero, instale en su dispositivo la aplicación de autenticación {a} o + {b} u otra." 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:" step3: "Para terminar, ingrese el token mostrado en la aplicación." step4: "Ahora cuando inicie sesión, ingrese el mismo token" - 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\ - \ PIN" + 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 + PIN" _permissions: "read:account": "Ver 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" _auth: shareAccess: "¿Desea permitir el acceso a la cuenta \"{name}\"?" - shareAccessAsk: "¿Está seguro de que desea autorizar esta aplicación para acceder\ - \ a su cuenta?" + shareAccessAsk: "¿Está seguro de que desea autorizar esta aplicación para acceder + a su cuenta?" permissionAsk: "Esta aplicación requiere los siguientes permisos" pleaseGoBack: "Por favor, vuelve a la aplicación" callback: "Volviendo a la aplicación" @@ -1772,8 +1768,8 @@ _pages: _seedRandomPick: arg1: "Semilla" arg2: "Listas" - DRPWPM: "Elegir aleatoriamente de la lista ponderada (Diariamente para cada\ - \ usuario)" + DRPWPM: "Elegir aleatoriamente de la lista ponderada (Diariamente para cada + usuario)" _DRPWPM: arg1: "Lista de texto" pick: "Elegir de la lista" @@ -1804,8 +1800,8 @@ _pages: _for: arg1: "Cantidad de repeticiones" arg2: "Acción" - typeError: "El slot {slot} acepta el tipo {expect} pero fue ingresado el tipo\ - \ {actual}" + typeError: "El slot {slot} acepta el tipo {expect} pero fue ingresado el tipo + {actual}" thereIsEmptySlot: "El slot {slot} está vacío" types: string: "Texto" @@ -1869,10 +1865,10 @@ _deck: newProfile: "Nuevo perfil" deleteProfile: "Eliminar perfil" 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\ - \ columnas donde quieras." - widgetsIntroduction: "Por favor selecciona \"Editar Widgets\" en el menú columna\ - \ y agrega un widget." + introduction2: "Presiona en la + de la derecha de la pantalla para añadir nuevas + columnas donde quieras." + widgetsIntroduction: "Por favor selecciona \"Editar Widgets\" en el menú columna + y agrega un widget." _columns: main: "Principal" widgets: "Widgets" @@ -1885,11 +1881,11 @@ _deck: manageGroups: Administrar grupos replayTutorial: Repetir Tutorial privateMode: Modo privado -addInstance: Añadir una instancia +addInstance: Añadir un servidor renoteMute: Silenciar impulsos renoteUnmute: Dejar de silenciar impulsos flagSpeakAsCat: Habla como un gato -selectInstance: Selectiona una instancia +selectInstance: Selecciona un servidor flagSpeakAsCatDescription: Tu publicación se "nyanified" cuando esté en modo gato allowedInstances: Instancias en la lista blanca breakFollowConfirm: ¿Estás seguro de que quieres eliminar el seguidor? @@ -1905,7 +1901,7 @@ license: Licencia noThankYou: No gracias userSaysSomethingReason: '{name} dijo {reason}' hiddenTags: Etiquetas Ocultas -noInstances: No hay instancias +noInstances: No hay servidores accountMoved: 'Usuario ha movido a una cuenta nueva:' caption: Auto Subtítulos showAds: Mostrar Anuncios @@ -1924,6 +1920,24 @@ silenced: Silenciado deleted: Eliminado edited: 'Editado a las {date} {time}' editNote: Editar nota -silenceThisInstance: Silenciar esta instancia +silenceThisInstance: Silenciar este servidor findOtherInstance: Buscar otro servidor 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 diff --git a/packages/backend/ormconfig.js b/packages/backend/ormconfig.js index 5f85cead8a..c230e09fd5 100644 --- a/packages/backend/ormconfig.js +++ b/packages/backend/ormconfig.js @@ -12,4 +12,8 @@ export default new DataSource({ extra: config.db.extra, entities: entities, migrations: ["migration/*.js"], + ssl: { + rejectUnauthorized: false, + ca: process.env.DB_SSL_CERT, + }, }); diff --git a/packages/backend/src/config/types.ts b/packages/backend/src/config/types.ts index 54332c9932..e9d1dbb645 100644 --- a/packages/backend/src/config/types.ts +++ b/packages/backend/src/config/types.ts @@ -23,6 +23,7 @@ export type Source = { pass: string; db?: number; prefix?: string; + user?: string; }; elasticsearch: { host: string; diff --git a/packages/backend/src/db/postgre.ts b/packages/backend/src/db/postgre.ts index 0fa5fdff67..0a0802a3a8 100644 --- a/packages/backend/src/db/postgre.ts +++ b/packages/backend/src/db/postgre.ts @@ -207,9 +207,14 @@ export const db = new DataSource({ host: config.redis.host, port: config.redis.port, family: config.redis.family == null ? 0 : config.redis.family, + user: config.redis.user ?? "default", password: config.redis.pass, keyPrefix: `${config.redis.prefix}:query:`, db: config.redis.db || 0, + tls: { + host: config.redis.host, + rejectUnauthorized: false, + }, }, } : false, @@ -218,6 +223,10 @@ export const db = new DataSource({ maxQueryExecutionTime: 300, entities: entities, migrations: ["../../migration/*.js"], + ssl: { + rejectUnauthorized: false, + ca: process.env.DB_SSL_CERT, + }, }); export async function initDb(force = false) { diff --git a/packages/backend/src/db/redis.ts b/packages/backend/src/db/redis.ts index 6ad3de386f..a54bad2e7a 100644 --- a/packages/backend/src/db/redis.ts +++ b/packages/backend/src/db/redis.ts @@ -5,10 +5,15 @@ export function createConnection() { return new Redis({ port: config.redis.port, host: config.redis.host, - family: config.redis.family == null ? 0 : config.redis.family, + family: config.redis.family ?? 0, password: config.redis.pass, + username: config.redis.user ?? "default", keyPrefix: `${config.redis.prefix}:`, db: config.redis.db || 0, + tls: { + rejectUnauthorized: false, + host: config.redis.host, + }, }); } diff --git a/packages/backend/src/queue/initialize.ts b/packages/backend/src/queue/initialize.ts index 0686fe9cd3..5d96f7747d 100644 --- a/packages/backend/src/queue/initialize.ts +++ b/packages/backend/src/queue/initialize.ts @@ -7,8 +7,12 @@ export function initialize(name: string, limitPerSec = -1) { port: config.redis.port, host: config.redis.host, family: config.redis.family == null ? 0 : config.redis.family, + user: config.redis.user ?? "default", password: config.redis.pass, db: config.redis.db || 0, + tls: { + host: config.redis.host, + }, }, prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : "queue", limiter: diff --git a/packages/client/src/components/MkEmojiPicker.section.vue b/packages/client/src/components/MkEmojiPicker.section.vue index c6052c60ee..1a9bccb149 100644 --- a/packages/client/src/components/MkEmojiPicker.section.vue +++ b/packages/client/src/components/MkEmojiPicker.section.vue @@ -22,7 +22,14 @@ > @@ -49,6 +56,7 @@ const props = defineProps<{ initialShown?: boolean; skinToneSelector?: boolean; skinTones?: string[]; + skinToneLabels?: string[]; }>(); const localEmojis = ref([...props.emojis]); diff --git a/packages/client/src/components/MkEmojiPicker.vue b/packages/client/src/components/MkEmojiPicker.vue index 260898e6e6..88eaf3eedd 100644 --- a/packages/client/src/components/MkEmojiPicker.vue +++ b/packages/client/src/components/MkEmojiPicker.vue @@ -115,6 +115,7 @@ :key="category" :skin-tone-selector="category === 'people'" :skin-tones="unicodeEmojiSkinTones" + :skin-tone-labels="unicodeEmojiSkinToneLabels" :emojis=" emojilist .filter((e) => e.category === category) @@ -168,7 +169,6 @@ import XSection from "@/components/MkEmojiPicker.section.vue"; import { emojilist, unicodeEmojiCategories, - unicodeEmojiSkinTones, UnicodeEmojiDef, getNicelyLabeledCategory, } from "@/scripts/emojilist"; @@ -210,6 +210,24 @@ const { recentlyUsedEmojis, } = defaultStore.reactiveState; +const unicodeEmojiSkinTones = [ + "#FFDC5E", + "#F7DFCF", + "#F3D3A3", + "#D6AE89", + "#B17F56", + "#7D523C", +]; + +const unicodeEmojiSkinToneLabels = [ + i18n.ts._skinTones.yellow, + i18n.ts._skinTones.light, + i18n.ts._skinTones.mediumLight, + i18n.ts._skinTones.medium, + i18n.ts._skinTones.mediumDark, + i18n.ts._skinTones.dark, +]; + const size = computed(() => props.asReactionPicker ? reactionPickerSize.value : 1 ); diff --git a/packages/client/src/components/MkMediaImage.vue b/packages/client/src/components/MkMediaImage.vue index df2c75e14c..cbd5c0515e 100644 --- a/packages/client/src/components/MkMediaImage.vue +++ b/packages/client/src/components/MkMediaImage.vue @@ -55,7 +55,6 @@ import { defaultStore } from "@/store"; import { i18n } from "@/i18n"; import * as os from "@/os"; - const props = defineProps<{ image: misskey.entities.DriveFile; raw?: boolean; @@ -73,8 +72,8 @@ const url = function captionPopup() { os.alert({ type: "info", - text: props.image.comment - }) + text: props.image.comment, + }); } // Plugin:register_note_view_interruptor を使って書き換えられる可能性があるためwatchする diff --git a/packages/client/src/components/MkMediaVideo.vue b/packages/client/src/components/MkMediaVideo.vue index f743b1359b..53dc6a8ab8 100644 --- a/packages/client/src/components/MkMediaVideo.vue +++ b/packages/client/src/components/MkMediaVideo.vue @@ -85,8 +85,8 @@ const hide = ref( function captionPopup() { os.alert({ type: "info", - text: props.video.comment - }) + text: props.video.comment, + }); } onMounted(() => { diff --git a/packages/client/src/components/MkVisibilityPicker.vue b/packages/client/src/components/MkVisibilityPicker.vue index d724f94b70..ce51f851e4 100644 --- a/packages/client/src/components/MkVisibilityPicker.vue +++ b/packages/client/src/components/MkVisibilityPicker.vue @@ -225,7 +225,7 @@ function choose(visibility: (typeof misskey.noteVisibilities)[number]): void { } .itemDescription { - opacity: .6; + opacity: 0.6; display: block; line-height: 1.5; } diff --git a/packages/client/src/pages/about.vue b/packages/client/src/pages/about.vue index 3e951c00b1..9234273a65 100644 --- a/packages/client/src/pages/about.vue +++ b/packages/client/src/pages/about.vue @@ -16,10 +16,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/admin-file.vue b/packages/client/src/pages/admin-file.vue index 63a8132861..de47377043 100644 --- a/packages/client/src/pages/admin-file.vue +++ b/packages/client/src/pages/admin-file.vue @@ -16,10 +16,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/channels.vue b/packages/client/src/pages/channels.vue index b79985bafb..c871655b67 100644 --- a/packages/client/src/pages/channels.vue +++ b/packages/client/src/pages/channels.vue @@ -19,10 +19,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/explore.vue b/packages/client/src/pages/explore.vue index 9202d78878..b23998c417 100644 --- a/packages/client/src/pages/explore.vue +++ b/packages/client/src/pages/explore.vue @@ -17,10 +17,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/gallery/index.vue b/packages/client/src/pages/gallery/index.vue index 92fb22354b..aa9141acc7 100644 --- a/packages/client/src/pages/gallery/index.vue +++ b/packages/client/src/pages/gallery/index.vue @@ -17,10 +17,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/instance-info.vue b/packages/client/src/pages/instance-info.vue index 73c1051e1f..111717459d 100644 --- a/packages/client/src/pages/instance-info.vue +++ b/packages/client/src/pages/instance-info.vue @@ -21,10 +21,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/messaging/index.vue b/packages/client/src/pages/messaging/index.vue index ba385e3958..0e3ea6e42a 100644 --- a/packages/client/src/pages/messaging/index.vue +++ b/packages/client/src/pages/messaging/index.vue @@ -17,10 +17,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/notifications.vue b/packages/client/src/pages/notifications.vue index bda42a8b4a..37548c9802 100644 --- a/packages/client/src/pages/notifications.vue +++ b/packages/client/src/pages/notifications.vue @@ -18,10 +18,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/pages.vue b/packages/client/src/pages/pages.vue index 1724ab27f0..36fd6c0d76 100644 --- a/packages/client/src/pages/pages.vue +++ b/packages/client/src/pages/pages.vue @@ -16,10 +16,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/search.vue b/packages/client/src/pages/search.vue index be09daebcf..4604c69f76 100644 --- a/packages/client/src/pages/search.vue +++ b/packages/client/src/pages/search.vue @@ -17,10 +17,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/settings/general.vue b/packages/client/src/pages/settings/general.vue index 36a4e2a13c..0add2b9df9 100644 --- a/packages/client/src/pages/settings/general.vue +++ b/packages/client/src/pages/settings/general.vue @@ -45,7 +45,10 @@ class="_formBlock" >{{ i18n.ts.useReactionPickerForContextMenu }} - {{ + {{ + i18n.ts.swipeOnMobile + }} + {{ i18n.ts.swipeOnDesktop }} {{ @@ -253,6 +256,7 @@ import * as os from "@/os"; import { unisonReload } from "@/scripts/unison-reload"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; +import { deviceKind } from "@/scripts/device-kind"; const lang = ref(localStorage.getItem("lang")); const fontSize = ref(localStorage.getItem("fontSize")); @@ -339,6 +343,7 @@ const showUpdates = computed(defaultStore.makeGetterSetter("showUpdates")); const swipeOnDesktop = computed( defaultStore.makeGetterSetter("swipeOnDesktop") ); +const swipeOnMobile = computed(defaultStore.makeGetterSetter("swipeOnMobile")); const showAdminUpdates = computed( defaultStore.makeGetterSetter("showAdminUpdates") ); @@ -346,6 +351,10 @@ const showTimelineReplies = computed( defaultStore.makeGetterSetter("showTimelineReplies") ); +watch(swipeOnDesktop, () => { + defaultStore.set("swipeOnMobile", true); +}); + watch(lang, () => { localStorage.setItem("lang", lang.value as string); localStorage.removeItem("locale"); @@ -379,6 +388,7 @@ watch( overridedDeviceKind, showAds, showUpdates, + swipeOnMobile, swipeOnDesktop, seperateRenoteQuote, showAdminUpdates, diff --git a/packages/client/src/pages/settings/preferences-backups.vue b/packages/client/src/pages/settings/preferences-backups.vue index 313024d869..15fd804bf9 100644 --- a/packages/client/src/pages/settings/preferences-backups.vue +++ b/packages/client/src/pages/settings/preferences-backups.vue @@ -110,6 +110,7 @@ const defaultStoreSaveKeys: (keyof (typeof defaultStore)["state"])[] = [ "squareAvatars", "numberOfPageCache", "showUpdates", + "swipeOnMobile", "swipeOnDesktop", "showAdminUpdates", "enableCustomKaTeXMacro", diff --git a/packages/client/src/pages/settings/reaction.vue b/packages/client/src/pages/settings/reaction.vue index 65abaaa765..9f6d264079 100644 --- a/packages/client/src/pages/settings/reaction.vue +++ b/packages/client/src/pages/settings/reaction.vue @@ -47,22 +47,22 @@ - - - - - - @@ -137,6 +137,7 @@ import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import { deepClone } from "@/scripts/clone"; import { unisonReload } from "@/scripts/unison-reload"; +import { addSkinTone } from "@/scripts/emojilist"; async function reloadAsk() { const { canceled } = await os.confirm({ @@ -239,8 +240,11 @@ watch(enableEmojiReactions, async () => { }); watch(reactionPickerSkinTone, async () => { + reactions.forEach((emoji) => { + addSkinTone(emoji, reactionPickerSkinTone.value); + }); await reloadAsk(); -}) +}); const headerActions = $computed(() => []); diff --git a/packages/client/src/pages/tag.vue b/packages/client/src/pages/tag.vue index e5d8c674b1..ce353457d0 100644 --- a/packages/client/src/pages/tag.vue +++ b/packages/client/src/pages/tag.vue @@ -17,10 +17,9 @@ :space-between="20" :virtual="true" :allow-touch-move=" - !( - deviceKind === 'desktop' && - !defaultStore.state.swipeOnDesktop - ) + defaultStore.state.swipeOnMobile && + (deviceKind !== 'desktop' || + defaultStore.state.swipeOnDesktop) " @swiper="setSwiperRef" @slide-change="onSlideChange" diff --git a/packages/client/src/pages/timeline.vue b/packages/client/src/pages/timeline.vue index 88c41d2831..3b3a08c0ab 100644 --- a/packages/client/src/pages/timeline.vue +++ b/packages/client/src/pages/timeline.vue @@ -17,8 +17,8 @@ />
-