diff --git a/pkg/api/locale.go b/pkg/api/locale.go index 856f710d2..9d8593d7c 100644 --- a/pkg/api/locale.go +++ b/pkg/api/locale.go @@ -10,6 +10,7 @@ var matcher = language.NewMatcher([]language.Tag{ language.MustParse("en-US"), // The first language is used as fallback. language.MustParse("en-GB"), language.MustParse("en-AU"), + language.MustParse("es-ES"), language.MustParse("de-DE"), language.MustParse("it-IT"), language.MustParse("pt-BR"), diff --git a/ui/v2.5/src/components/Changelog/versions/v0110.md b/ui/v2.5/src/components/Changelog/versions/v0110.md index 44478def3..74061b207 100644 --- a/ui/v2.5/src/components/Changelog/versions/v0110.md +++ b/ui/v2.5/src/components/Changelog/versions/v0110.md @@ -5,6 +5,7 @@ * Added interface options to disable creating performers/studios/tags from dropdown selectors. ([#1814](https://github.com/stashapp/stash/pull/1814)) ### 🎨 Improvements +* Added es-ES language option. ([#1886](https://github.com/stashapp/stash/pull/1886)) * Show pagination at top and bottom of page. ([#1776](https://github.com/stashapp/stash/pull/1776)) * Include total duration/megapixels and filesize information on Scenes and Images pages. ([#1776](https://github.com/stashapp/stash/pull/1776)) * Added it-IT language option. ([#1875](https://github.com/stashapp/stash/pull/1875)) diff --git a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx index 6d63386bd..6965088ac 100644 --- a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx +++ b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx @@ -133,6 +133,7 @@ export const SettingsInterfacePanel: React.FC = () => { > + diff --git a/ui/v2.5/src/locales/es-ES.json b/ui/v2.5/src/locales/es-ES.json new file mode 100644 index 000000000..edb54ed36 --- /dev/null +++ b/ui/v2.5/src/locales/es-ES.json @@ -0,0 +1,702 @@ +{ + "actions": { + "add": "Añadir", + "add_directory": "Añadir directorio", + "add_entity": "Añadir {entityType}", + "add_to_entity": "Añadir a {entityType}", + "allow": "Permitir", + "allow_temporarily": "Permitir temporalmente", + "apply": "Aplicar", + "auto_tag": "Etiquetado automático", + "backup": "Copia de seguridad", + "cancel": "Cancelar", + "clean": "Limpiar", + "clear": "Eliminar", + "clear_back_image": "Eliminar contraportada", + "clear_front_image": "Eliminar portada", + "clear_image": "Eliminar imagen", + "close": "Cerrar", + "create": "Crear", + "create_entity": "Crear {entityType}", + "create_marker": "Crear marcador", + "created_entity": "{entity_type} creado: {entity_name}", + "delete": "Eliminar", + "delete_entity": "Eliminar {entityType}", + "delete_file": "Eliminar archivo", + "delete_generated_supporting_files": "Eliminar ficheros de soporte generados", + "disallow": "No permitir/Denegar", + "download": "Descargar", + "download_backup": "Descargar copia de seguridad", + "edit": "Editar", + "export": "Exportar…", + "export_all": "Exportar todo…", + "find": "Buscar", + "from_file": "Desde archivo…", + "from_url": "Desde dirección web…", + "full_export": "Exportación completa", + "full_import": "Importación completa", + "generate": "Generar", + "generate_thumb_default": "Generar miniatura por defecto", + "generate_thumb_from_current": "Generar miniatura del frame actual", + "hash_migration": "Migración hash", + "hide": "Ocultar", + "import": "Importar…", + "import_from_file": "Importar desde archivo", + "merge": "Unir", + "merge_from": "Unir desde", + "merge_into": "Unir en", + "not_running": "no está en funcionamiento", + "overwrite": "Sobreescribir", + "play_random": "Reproducir aleatoria", + "play_selected": "Reproducir seleccionada", + "preview": "Vista previa", + "refresh": "Actualizar", + "reload_plugins": "Recargar plugins", + "reload_scrapers": "Recargar scrapers", + "remove": "Borrar", + "rename_gen_files": "Renombrar archivos generados", + "rescan": "Volver a escanear", + "reshuffle": "Reorganizar", + "running": "en funcionamiento", + "save": "Guardar", + "save_filter": "Guardar filtro", + "scan": "Escanear", + "scrape_with": "Consultar con…", + "scrape_query": "Cadena de consulta", + "scrape_scene_fragment": "Consultar por fragmento", + "search": "Buscar", + "select_all": "Seleccionar todo", + "select_none": "No seleccionar nada", + "selective_auto_tag": "Etiquetado automático selectivo", + "selective_scan": "Búsqueda selectiva", + "set_as_default": "Establecer por defecto", + "set_back_image": "Contraportada…", + "set_front_image": "Portada…", + "set_image": "Foto de perfil…", + "show": "Mostrar", + "skip": "Saltar", + "stop": "Parar", + "tasks": { + "clean_confirm_message": "¿Estás seguro que quieres iniciar la limpieza? Esto eliminará la información en la base de datos, y el contenido generado para todas las escenas y galerías que ya no estén disponibles en el sistema de ficheros.", + "dry_mode_selected": "Modo de simulación seleccionado. No se eliminará información, solo se guardarán registros de las acciones a realizar.", + "import_warning": "¿Estás seguro que quieres llevar a cabo la importación? Esta acción eliminará la base de datos e importará la información desde los metadatos previamente exportados." + }, + "temp_disable": "Deshabilitar temporalmente…", + "temp_enable": "Habilitar temporalmente…", + "view_random": "Ver aleatoria", + "confirm": "Confirmar", + "select_folders": "Seleccionar carpetas", + "browse_for_image": "Explorar imagen…", + "open_random": "Abrir aleatoria" + }, + "actions_name": "Acciones", + "age": "Edad", + "aliases": "Pseudónimos", + "also_known_as": "También conocida como", + "ascending": "Ascendente", + "average_resolution": "Resolución media", + "birth_year": "Año de nacimiento", + "birthdate": "Cumpleaños", + "bitrate": "Tasa de bits", + "career_length": "Años en activo", + "subsidiary_studios": "Estudios afiliados/filiales", + "sub_tags": "Pestañas secundarias", + "sub_tag_count": "Contador de pestañas secundarias", + "component_tagger": { + "config": { + "active_instance": "Instancia activa de stash-box:", + "blacklist_desc": "Los elementos de la lista negra son excluidos de las consultas. Nota: los elementos son expresiones regulares y son insensitivos a las mayúsculas. Ciertos caracteres deben ser denotados con una barra invertida: {chars_require_escape}", + "blacklist_label": "Lista de exclusiones", + "query_mode_auto": "Auto", + "query_mode_auto_desc": "Usa metadatos, si están presentes, o el nombre del archivo", + "query_mode_dir": "Directorio", + "query_mode_dir_desc": "Solo usa el directorio que contiene el archivo de vídeo", + "query_mode_filename": "Nombre de archivo", + "query_mode_filename_desc": "Solo usa el nombre del fichero", + "query_mode_label": "Modo de consulta", + "query_mode_metadata": "Metadatos", + "query_mode_metadata_desc": "Solo usa metadatos", + "query_mode_path": "Ruta", + "query_mode_path_desc": "Emplea la ruta completa del archivo", + "set_cover_desc": "Reemplazar la carátula de la escena si alguna es encontrada.", + "set_cover_label": "Seleccionar carátula de la escena", + "set_tag_desc": "Adjuntar etiquetas a la escena, ya sea sobreescribiéndolas (elimina las que existieran previamente) o fusionando las nuevas con las que ya existían previamente.", + "set_tag_label": "Seleccionar etiquetas", + "source": "Fuente", + "show_male_desc": "Marcar esta opción hará que los actores masculinos estén disponibles para su etiquetado.", + "show_male_label": "Mostrar actores" + }, + "noun_query": "Consulta", + "results": { + "fp_found": "{fpCount, plural, =0 {No se han encontrado nuevas huellas dactilares} other {# resultados de huellas dactilares encontrados}}", + "fp_matches": "La duración coincide", + "fp_matches_multi": "La duración coincide {matchCount}/{durationsLength} huella(s) dactilar(es)", + "hash_matches": "{hash_type} coincide", + "match_failed_already_tagged": "Escena ya etiquetada", + "match_failed_no_result": "No se han encontrado resultados", + "match_success": "Escena etiquetada correctamente", + "unnamed": "Sin nombre", + "duration_off": "La duración se diferencia en, al menos, {number} segundos", + "duration_unknown": "Duración desconocida", + "phash_matches": "{count} PHash(es) coincide(n)" + }, + "verb_match_fp": " huellas dactilares", + "verb_matched": "Matched", + "verb_scrape_all": "Escrapear todo", + "verb_submit_fp": "Enviar {fpCount, plural, one{# huella dactilar} other{# huellas dactilares}}", + "verb_toggle_config": "{toggle} {configuration}", + "verb_toggle_unmatched": "{toggle} escenas sin coincidencia" + }, + "config": { + "about": { + "build_hash": "Hash de la versión:", + "build_time": "Fecha de la versión:", + "check_for_new_version": "Buscar versión actualizada", + "latest_version_build_hash": "Hash de la última versión:", + "new_version_notice": "[NUEVA]", + "stash_discord": "Únete a nuestro canal {url}", + "stash_home": "Página principal del proyecto en {url}", + "stash_open_collective": "Donaciones al proyecto a través de {url}", + "stash_wiki": "Documentación del proyecto en nuestro {url}", + "version": "Versión" + }, + "categories": { + "about": "Acerca de", + "interface": "Diseño", + "logs": "Registros", + "plugins": "Plugins", + "scraping": "Escraping", + "tasks": "Tareas", + "tools": "Herramientas" + }, + "dlna": { + "allow_temp_ip": "Permitir {tempIP}", + "allowed_ip_addresses": "Direcciones IP permitidas", + "default_ip_whitelist": "Lista de direcciones IP permitidas", + "default_ip_whitelist_desc": "Direcciones IP que tienen acceso al servidor DLNA por defecto. Escribe {wildcard} para permitir todas las direcciones IP.", + "enabled_by_default": "Activado por defecto", + "network_interfaces": "Interfaces", + "network_interfaces_desc": "Interfaces en las que se expondrá el servidor DLNA. Si no se selecciona ninguna se mostrará para todas las interfaces disponibles. Los cambios se guardarán tras reiniciar el servidor DLNA.", + "recent_ip_addresses": "Direcciones IP recientes", + "server_display_name": "Nombre del servidor", + "server_display_name_desc": "Nombre del servidor DLNA. Si no se indica un valor se usará {server_name} por defecto.", + "until_restart": "hasta reinicio" + }, + "general": { + "auth": { + "api_key": "Clave API", + "api_key_desc": "Clave API para sistemas externos. Requiere la configuración de usuario y contraseña. El nombre de usuario debe ser guardado antes de generar una clave API.", + "authentication": "Autentificación", + "clear_api_key": "Limpiar clave API", + "generate_api_key": "Generar clave API", + "log_file": "Archivo de registro", + "log_file_desc": "Ruta del archivo en el que se volcarán los registros de eventos. En blanco deshabilita el fichero de registro. Los cambios se guardarán tras reiniciar la aplicación.", + "log_http": "Registro de accesos http", + "log_http_desc": "Registro de accesos http en consola. Requiere reinicio de la aplicación.", + "log_to_terminal": "Registro de eventos en consola", + "log_to_terminal_desc": "Registro de eventos en la consola de Stash además del respaldo en fichero. Habilitado si el registro a fichero está deshabilitado. Requiere reinicio de la aplicación.", + "maximum_session_age": "Tiempo máximo de sesión", + "maximum_session_age_desc": "Tiempo máximo en segundos para que la sesión de usuario expire.", + "password": "Contraseña", + "password_desc": "Contraseña para acceder a Stash. Dejar en blanco para deshabilitar la exigencia de autentificación para acceder a la aplicación.", + "stash-box_integration": "Integración Stash-box", + "trusted_proxies": "Proxies verificados", + "trusted_proxies_desc": "Lista de proxies que tienen permitido el acceso a Stash. Dejar en blanco para permitir redes privadas.", + "username": "Usuario", + "username_desc": "Usuario para acceder a Stash. Dejar en blanco para deshabilitar la exigencia de autentificación para acceder a la aplicación." + }, + "cache_location": "Localización del directorio donde se almacenarán los ficheros de la caché.", + "cache_path_head": "Ruta para la caché", + "calculate_md5_and_ohash_desc": "Calcular comprobación MD5 en adición a oshash. Habilitar esta opción puede provocar que los escaneos iniciales resulten más lentos. Hash File naming hash must be set to oshash to disable MD5 calculation.", + "calculate_md5_and_ohash_label": "Calcular MD5 para los vídeos", + "check_for_insecure_certificates": "Comprobación para certificados no seguros", + "check_for_insecure_certificates_desc": "Algunos sitios utilizan certificados SSL inseguros. Cuando la casilla esté desmarcada el escrapeador se saltará la comprobación de certificados inseguros y permitirá el escrapeo de esos sitios web. Si el resultado es un error de certificado al escrapear entonces desmarca esta opción.", + "chrome_cdp_path": "Ruta Chrome CDP", + "chrome_cdp_path_desc": "Ruta del archivo del ejecutable Chrome o una dirección remota (comenzando por http:// o https://, por ejemplo, http://localhost:9222/json/version) para una instancia Chrome.", + "create_galleries_from_folders_desc": "Si esta opción está marcada se crearán automáticamente galerías de aquellos directorios que contienen imágenes.", + "create_galleries_from_folders_label": "Crear galerías desde directorios con imágenes", + "db_path_head": "Ruta de la base de datos", + "directory_locations_to_your_content": "Localización de los directorios que almacenan el contenido", + "exclude_image": "Excluir imagen", + "exclude_video": "Excluir vídeo", + "excluded_image_gallery_patterns_desc": "Expresiones regulares de archivos/rutas de imágenes que serán excluidas del escaneo y que serán añadidos a la tarea de depuración/limpieza", + "excluded_image_gallery_patterns_head": "Patrones de imágenes/galerías excluidos", + "excluded_video_patterns_desc": "Expresiones regulares de archivos/rutas de vídeos que serán excluidas del escaneo y que serán añadidos a la tarea de depuración/limpieza", + "excluded_video_patterns_head": "Patrones de vídeo excluidos", + "gallery_ext_desc": "Lista delimitada por comas de extensiones de archivo que serán identificados como archivos de galería en formato zip.", + "gallery_ext_head": "Extensiones de galería zip", + "generated_file_naming_hash_desc": "Usar MD5 o oshash para la los nombres de archivo generados. Cambiar esta opción requiere que todas las escenas tengan relleno el correspondiente valor MD5/oshash. Después de cambiar este valor los ficheros generados existentes tendrán que ser migrados o regenerados. Ver la página de tareas para llevar a cabo la migración.", + "generated_file_naming_hash_head": "Hash de nombre de archivo generado", + "generated_files_location": "Localización relativa del directorio para los ficheros generados (marcadores de escena, vistas previas de escena, conjuntos de imágenes o “sprites”, etc)", + "generated_path_head": "Ruta generada", + "hashing": "Hashing", + "image_ext_desc": "Lista delimitada por comas de las extensiones de archivo que serán identificadas como imágenes.", + "image_ext_head": "Extensiones de imagen", + "logging": "Logueado", + "maximum_streaming_transcode_size_desc": "Tamaño máximo para la transcodificación de archivos de vídeo en streaming en aquellos dispositivos en los que la reproducción del fichero de vídeo original no sea posible", + "maximum_streaming_transcode_size_head": "Tamaño máximo de transcodificación en streaming", + "maximum_transcode_size_desc": "Tamaño máximo para las transcodificaciones generadas y almacenadas en el sistema de archivos donde se encuentra la aplicación Stash instalada", + "maximum_transcode_size_head": "Tamaño máximo de transcodificación", + "metadata_path": { + "heading": "Ruta de metadatos", + "description": "Localización del directorio usado para llevar a cabo la exportación o importación completa de todos los metadatos" + }, + "number_of_parallel_task_for_scan_generation_desc": "Seleccionar 0 para detección automática. Advertencia: lanzar más tareas de las requeridas puede provocar una elevada utilización de la CPU pudiendo provocar lentitud en el sistema y otros problemas.", + "number_of_parallel_task_for_scan_generation_head": "Número de tareas en paralelo para escaneo/generación de ficheros", + "parallel_scan_head": "Escaneo/Generación en paralelo", + "preview_generation": "Previsualizar generación de ficheros", + "scraper_user_agent": "Identificación del navegador para escrapeo", + "scraper_user_agent_desc": "Identificación del navegador usada durante el escrapeo de peticiones http", + "scraping": "Escraping", + "sqlite_location": "Localización para la base de datos SQLite (requiere reinicio)", + "video_ext_desc": "Comma-delimited list of file extensions that will be identified as videos.", + "video_ext_head": "Extensiones de vídeo", + "video_head": "Vídeo", + "include_audio_head": "Incluir audio", + "include_audio_desc": "Incluye flujo de audio cuando se generen vistas previas." + }, + "logs": { + "log_level": "Nivel de registro" + }, + "plugins": { + "hooks": "Hooks", + "triggers_on": "Se lleva a cabo durante" + }, + "scraping": { + "entity_metadata": "{entityType} metadatos", + "entity_scrapers": "{entityType} escrapers", + "excluded_tag_patterns_desc": "Expresiones regulares de nombres de etiquetas para excluir resultados del escrapeo", + "excluded_tag_patterns_head": "Patrones de etiquetas excluidos", + "scrapers": "Escrapers", + "search_by_name": "Buscar por nombre", + "supported_types": "Tipos soportados", + "supported_urls": "Direcciones web" + }, + "stashbox": { + "add_instance": "Añadir instancia stash-box", + "api_key": "Clave API", + "description": "Stash-box permite automatizar el etiquetado automatizado de escenas, actores y actrices, basado en huellas dactilares y nombres de archivo.\nEl terminal de red y la clave API pueden ser encontrados en tu página de usuario de la instancia stash-box. Los nombres son requeridos cuando se agregue más de una instancia stash-box.", + "endpoint": "Terminal de red", + "graphql_endpoint": "Terminal de red GraphQL", + "name": "Nombre", + "title": "Terminal de red Stash-box" + }, + "tasks": { + "added_job_to_queue": "Añadido/a {operation_name} a la cola de trabajo", + "auto_tag_based_on_filenames": "Etiquetado automatizado del contenido basado en nombres de archivo.", + "auto_tagging": "Auto-Etiquetado", + "backing_up_database": "Guardando respaldo de la base de datos", + "backup_and_download": "Lleva a cabo una copia de seguridad de la base de datos y la guarda en un fichero de respaldo.", + "backup_database": "Lleva a cabo una copia de seguridad de la base de datos en el mismo directorio en que se encuentra ésta. El formato de nombre del fichero generado es {filename_format}", + "cleanup_desc": "Buscar ficheros eliminados del sistema de archivos y eliminarlos de la base de datos. PRECAUCIÓN: esta es una acción destructiva.", + "dont_include_file_extension_as_part_of_the_title": "No incluir la extensión del archivo como parte del título", + "export_to_json": "Exporta el contenido de la base de datos en formato JSON en el directorio de metadatos.", + "generate_desc": "Generar imagen de soporte, conjuntos de imágenes, vídeo, vtt y resto de archivos.", + "generate_phashes_during_scan": "Generar hashes de percepción (Phases) de los vídeos durante el escaneo (este valor es empleado para la búsqueda de archivos de vídeo duplicados y para la identificación de escenas)", + "generate_previews_during_scan": "Generar imágenes previas durante el escaneo (vistas previas WebP animadas). Solo requerido si el tipo de previsualización seleccionado es “Imágenes animadas”)", + "generate_sprites_during_scan": "Generar conjunto de imágenes o “sprites” durante el escaneo (para el depurador/limpiador de escenas)", + "generate_video_previews_during_scan": "Generar vistas previas durante el escaneo (vistas previas en vídeo que se muestran al pasar el enlace por encima de una escena)", + "generate_thumbnails_during_scan": "Generar miniaturas de las imágenes durante el escaneo.", + "generated_content": "Contenido generado", + "import_from_exported_json": "Importar desde el fichero JSON exportado al directorio de metadatos. Borrará la base de datos existente.", + "incremental_import": "Importación gradual o progresiva desde un archivo zip de exportación aportado por el usuario.", + "job_queue": "Cola de trabajo", + "maintenance": "Mantenimiento", + "migrate_hash_files": "Usado tras el cambiar el hash de nombre del fichero generado para renombrar los ficheros generados al nuevo formato hash.", + "migrations": "Migraciones", + "only_dry_run": "Llevar a cabo el modo de simulación. No eliminará nada.", + "plugin_tasks": "Tareas de plugins", + "scan_for_content_desc": "Buscar contenido nuevo y añadirlo a la base de datos.", + "set_name_date_details_from_metadata_if_present": "Establecer el nombre, fecha y detalles desde los metadatos (si se encuentran)" + }, + "tools": { + "scene_duplicate_checker": "Comprobación de escenas duplicadas", + "scene_filename_parser": { + "add_field": "Añadir campo", + "capitalize_title": "Capitalizar título (todas las palabras comienzan por mayúscula)", + "display_fields": "Mostrar campos", + "escape_chars": "Usar \\ para evitar caracteres literales", + "filename": "Nombre de archivo", + "filename_pattern": "Patrón de nombres de ficheros", + "ignore_organized": "Ignorar escenas ya clasificadas", + "ignored_words": "Palabras ignoradas", + "matches_with": "Coincide con {i}", + "select_parser_recipe": "Seleccionar fórmula para el analizador sintáctico", + "title": "Analizador sintáctico del título de escena", + "whitespace_chars": "Espacios en blanco", + "whitespace_chars_desc": "Estos caracteres se reemplazarán en el título por espacios en blanco" + }, + "scene_tools": "Herramientas de escenas" + }, + "ui": { + "custom_css": { + "description": "La página debe ser recargada para que se lleven a cabo los cambios realizados.", + "heading": "CSS personalizado", + "option_label": "Habilitar CSS personalizado" + }, + "editing": { + "disable_dropdown_create": { + "heading": "Deshabilitar creación en menú desplegable", + "description": "Eliminar la capacidad de crear nuevos recursos desde los selectores de formulario desplegables" + }, + "heading": "Edición" + }, + "handy_connection_key": { + "description": "Clave para conexión práctica que se usará en las escenas interactivas.", + "heading": "Clave para conexión práctica" + }, + "funscript_offset": { + "description": "Tiempo de compensación en milisegundos para la reproducción de scripts interactivos.", + "heading": "Tiempo de compensación Funscript (mseg)" + }, + "images": { + "options": { + "write_image_thumbnails": { + "heading": "Guardar miniaturas de imágenes", + "description": "Guardar miniaturas de imagen al sistema de ficheros cuando son generados al vuelo" + } + } + }, + "language": { + "heading": "Lenguaje" + }, + "max_loop_duration": { + "description": "Máxima duración de escena para la que el reproductor de vídeo reproducirá en bucle el vídeo. Usar “0” para deshabilitar", + "heading": "Máxima duración del bucle" + }, + "menu_items": { + "description": "Mostrar o esconder los diferentes tipos de contenido del menú de navegación", + "heading": "Elementos del menú" + }, + "performers": { + "options": { + "image_location": { + "heading": "Ruta para las imágenes personalizadas de actrices/actores", + "description": "Ruta personalizada para las imágenes de perfil de actrices/actores. Dejar en blanco para usar ruta por defecto" + } + } + }, + "preview_type": { + "description": "Configuración para los elementos del muro", + "heading": "Tipo de previsualización", + "options": { + "animated": "Imagen animada", + "static": "Imagen estática", + "video": "Vídeo" + } + }, + "scene_list": { + "heading": "Listado de escenas", + "options": { + "show_studio_as_text": "Mostrar nombres de estudio como texto" + } + }, + "scene_player": { + "heading": "Reproductor de vídeo", + "options": { + "auto_start_video": "Iniciar vídeo automáticamente" + } + }, + "scene_wall": { + "heading": "Muro de escenas/Marcadores", + "options": { + "display_title": "Mostrar título y etiquetas", + "toggle_sound": "Habilitar sonido" + } + }, + "slideshow_delay": { + "description": "Presentación de diapositivas estará disponible en las galerías al seleccionar el muro como modo de visualización", + "heading": "Retardo en la presentación de diapositivas" + }, + "title": "Interfaz de usuario" + } + }, + "configuration": "Configuración", + "countables": { + "galleries": "{count, plural, one {Galería} other {Galerías}}", + "images": "{count, plural, one {Imagen} other {Imágenes}}", + "markers": "{count, plural, one {Marcador} other {Marcadores}}", + "movies": "{count, plural, one {Película} other {Películas}}", + "performers": "{count, plural, one {Actriz/Actor} other {Actrices/Actores}}", + "scenes": "{count, plural, one {Escena} other {Escenas}}", + "studios": "{count, plural, one {Estudio} other {Estudios}}", + "tags": "{count, plural, one {Etiqueta} other {Etiquetas}}" + }, + "country": "País", + "cover_image": "Carátula", + "created_at": "Fecha de creación", + "criterion": { + "greater_than": "Mayor que", + "less_than": "Menor que", + "value": "Valor" + }, + "criterion_modifier": { + "equals": "es", + "excludes": "no incluye", + "format_string": "{criterion} {modifierString} {valueString}", + "greater_than": "es mayor que", + "includes": "incluye", + "includes_all": "incluye todos", + "is_null": "es nulo", + "less_than": "es menor que", + "matches_regex": "coincide con la expresión regular", + "not_equals": "no es", + "not_matches_regex": "no coincide con la expresión regular", + "not_null": "no es nulo", + "between": "está entre", + "not_between": "no está entre" + }, + "custom": "Personalizado", + "date": "Fecha", + "death_date": "Fallecimiento", + "death_year": "Año de fallecimiento", + "descending": "Descendente", + "detail": "Detalle", + "details": "Detalles", + "developmentVersion": "Versión de desarrollo", + "dialogs": { + "delete_confirm": "¿Estás seguro que deseas eliminar {entityName}?", + "delete_entity_desc": "{count, plural, one {¿Estás seguro que deseas eliminar esta {singularEntity}? Hasta que el archivo sea eliminado también, esta {singularEntity} se volverá a añadir cuando se lleve a cabo un escaneo.} other {¿Estás seguro que deseas eliminar {pluralEntity}? Hasta que los archivos sean eliminados del sistema de ficheros también, estas {pluralEntity} se volverán a añadir cuando se lleve a cabo un escaneo.}}", + "delete_entity_title": "{count, plural, one {Eliminar {singularEntity}} other {Eliminar {pluralEntity}}}", + "delete_object_desc": "¿Estás seguro que deseas eliminar {count, plural, one {esta {singularEntity}} other {estas {pluralEntity}}}?", + "delete_object_overflow": "…y {count} other {count, plural, one {{singularEntity}} other {{pluralEntity}}}.", + "delete_object_title": "Eliminar {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "edit_entity_title": "Editar {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "export_include_related_objects": "Incluir objetos relacionados en la exportación", + "export_title": "Exportar", + "lightbox": { + "delay": "Retardo (seg)", + "display_mode": { + "label": "Modo de visualización", + "original": "Original", + "fit_to_screen": "Ajustar a pantalla", + "fit_horizontally": "Ajustar horizontalmente" + }, + "options": "Opciones", + "reset_zoom_on_nav": "Restaurar nivel de zoom al cambiar de imagen", + "scale_up": { + "label": "Ampliación hasta ajuste", + "description": "Aumentar imágenes pequeñas hasta rellenar la pantalla" + }, + "scroll_mode": { + "label": "Modo scroll", + "zoom": "Zoom", + "pan_y": "Panorámica eje Y", + "description": "Mantener pulsado la tecla shift para cambiar de modo temporalmente." + } + }, + "merge_tags": { + "destination": "Destino", + "source": "Fuente" + }, + "overwrite_filter_confirm": "¿Estás seguro de sobreescribir la consulta guardada {entityName}?", + "scene_gen": { + "image_previews": "Imágenes previas (vistas previas WebP animadas). Solo requerido si el tipo de previsualización seleccionado es “Imágenes animadas”.", + "markers": "Marcadores (vídeos de 20 segundos que comienzan a partir del tiempo de reproducción seleccionado)", + "marker_image_previews": "Vistas previas de marcadores (vistas previas WebP animadas). Solo requerido si el tipo de previsualización seleccionado es “Imágenes animadas”.", + "marker_screenshots": "Capturas de pantalla de marcadores (imagen JPG estática). Solo requerido si el tipo de previsualización seleccionado es “Imagen estática”.", + "overwrite": "Sobreescribir archivos generados.", + "phash": "PHases o Hashes (para búsqueda de duplicados)", + "preview_exclude_end_time_desc": "Excluir los últimos X segundos de la vista previa de la escena. Puede ser un valor en segundos o un porcentaje (p.ej. 2%) de la duración total de la escena.", + "preview_exclude_end_time_head": "Excluir desde el final del vídeo", + "preview_exclude_start_time_desc": "Excluir los primeros X segundos de la vista previa de la escena. Puede ser un valor en segundos o un porcentaje (p.ej. 2%) de la duración total de la escena.", + "preview_exclude_start_time_head": "Excluir desde el inicio del vídeo", + "preview_options": "Opciones de previsualización", + "preview_preset_desc": "La configuración predeterminada regula el tamaño, calidad y tiempo de codificación de las generación de vistas previas. Ajustes por encima de “lento” pueden disminuir los resultados obtenidos y no son recomendables.", + "preview_preset_head": "Codificación predeterminada de vistas previas", + "preview_seg_count_desc": "Número de segmentos en la vista previa de los ficheros.", + "preview_seg_count_head": "Número de segmentos en la previsualización", + "preview_seg_duration_desc": "Duración en segundos de cada segmento de la vista previa.", + "preview_seg_duration_head": "Duración del segmento en la vista previa", + "sprites": "Conjunto de imágenes o “sprites” (para su uso en el depurador/limpiador de escenas)", + "transcodes": "Transcodificaciones (conversiones en MP4 de formatos de vídeo no soportados)", + "video_previews": "Vistas previas (vistas previas en vídeo que se muestran al pasar el ratón por encima sobre una escena)" + }, + "scenes_found": "{count} escenas encontradas", + "scrape_entity_query": "Consulta de escrapeo de {entity_type}", + "scrape_entity_title": "Resultados de escrapeo de {entity_type}", + "scrape_results_existing": "Existente", + "scrape_results_scraped": "Escrapeado", + "set_image_url_title": "Dirección web de la imagen", + "unsaved_changes": "Los cambios no han sido guardados. ¿Estás seguro que quieres salir?" + }, + "dimensions": "Dimensiones", + "director": "Director", + "display_mode": { + "grid": "Cuadrícula", + "list": "Lista", + "tagger": "Etiquetadora", + "unknown": "Desconocido/a", + "wall": "Muro" + }, + "donate": "Donar", + "dupe_check": { + "description": "El cálculo en los niveles por debajo de “Exacto” puede llevar más tiempo. En los niveles de menor exactitud además pueden aparecer mayor número de falsos positivos en las coincidencias.", + "found_sets": "{setCount, plural, one{# conjunto de duplicados encontrado.} other {# conjuntos de duplicados encontrados.}}", + "options": { + "exact": "Exacto", + "high": "Alto", + "low": "Bajo", + "medium": "Medio" + }, + "search_accuracy_label": "Search Accuracy", + "title": "Escenas duplicadas" + }, + "duration": "Duración", + "effect_filters": { + "aspect": "Exposición", + "blue": "Azul", + "blur": "Nitidez", + "brightness": "Brillo", + "contrast": "Contraste", + "gamma": "Corrección de la gama de colores", + "green": "Verde", + "hue": "Color", + "name": "Filtro", + "name_transforms": "Transformaciones de vídeo", + "red": "Rojo", + "reset_filters": "Restablecer filtros", + "reset_transforms": "Restablecer transformaciones", + "rotate": "Rotación", + "rotate_left_and_scale": "Rotar a la izquierda y escalar", + "rotate_right_and_scale": "Rotar a la derecha y escalar", + "saturation": "Saturación", + "scale": "Escala", + "warmth": "Calidez" + }, + "ethnicity": "Origen étnico", + "eye_color": "Color de ojos", + "fake_tits": "Pecho operado", + "favourite": "Favorita", + "file_info": "Información del archivo", + "file_mod_time": "Hora de modificación del fichero", + "filesize": "Tamaño de archivo", + "filter": "Filtro", + "filter_name": "Filtrar por nombre", + "filters": "Filtros", + "framerate": "Tasa de frames", + "frames_per_second": "{value} frames por segundo (fps)", + "galleries": "Galerías", + "gallery": "Galería", + "gallery_count": "Número de galerías", + "gender": "Género", + "hair_color": "Color de pelo", + "hasMarkers": "Tiene marcadores", + "height": "Estatura", + "help": "Ayuda", + "image": "Imagen", + "image_count": "Número de imágenes", + "images": "Imágenes", + "include_parent_tags": "Incluir etiquetas de la matriz", + "include_sub_studios": "Incluir estudios filiales", + "include_sub_tags": "Incluir sub-etiquetas", + "instagram": "Instagram", + "interactive": "Interactivo", + "isMissing": "No se encuentra", + "library": "Biblioteca", + "loading": { + "generic": "Cargando…" + }, + "marker_count": "Número de marcadores", + "markers": "Marcadores", + "measurements": "Medidas", + "media_info": { + "audio_codec": "Códec de audio", + "checksum": "Checksum", + "downloaded_from": "Descargado de", + "hash": "Hash", + "performer_card": { + "age": "{age} {years_old}", + "age_context": "{age} {years_old} en esta escena" + }, + "phash": "PHash", + "stream": "Stream", + "video_codec": "Códec de vídeo" + }, + "megabits_per_second": "{value} megabits por segundo (mbps)", + "metadata": "Metadatos", + "movie": "Película", + "movie_scene_number": "Número de escena", + "movies": "Películas", + "name": "Nombre", + "new": "Nueva", + "none": "Ninguno/a", + "o_counter": "Contador “P”", + "operations": "Acciones", + "organized": "Clasificadas", + "pagination": { + "first": "Primera", + "last": "Última", + "next": "Siguiente", + "previous": "Anterior" + }, + "parent_of": "Matriz de {children}", + "parent_studios": "Estudio matriz", + "parent_tags": "Etiqueta matriz", + "parent_tag_count": "Contador de etiqueta matriz", + "part_of": "Parte de {parent}", + "path": "Ruta", + "performer": "Actriz/Actor", + "performer_count": "Contador de ", + "performer_image": "Imagen de actriz/actor", + "performers": "Actrices/Actores", + "performerTags": "Etiquetas de actriz/actor", + "piercings": "Piercings", + "queue": "Cola", + "random": "Aleatoria", + "rating": "Puntuación", + "resolution": "Resolución", + "scene": "Escena", + "scene_count": "Contador de escenas", + "scene_id": "Indentificador de escena", + "scenes": "Escenas", + "scenes_updated_at": "Escena actualizada a las", + "sceneTagger": "Etiquetador de escenas", + "sceneTags": "Etiquetas de escena", + "search_filter": { + "add_filter": "Añadir filtro", + "name": "Filtro", + "saved_filters": "Filtros guardados", + "update_filter": "Actualizar filtro" + }, + "seconds": "Segundos", + "settings": "Preferencias", + "sub_tag_of": "Sub-etiquetas de {parent}", + "stash_id": "Identificador único Stash", + "status": "Estado: {statusText}", + "studio": "Estudio", + "studio_depth": "Niveles (en blanco para mostrar todos)", + "studios": "Estudios", + "synopsis": "Sinopsis", + "tag": "Etiqueta", + "tag_count": "Contador de etiqueta", + "tags": "Etiquetas", + "tattoos": "Tattoos", + "title": "Título", + "toast": { + "added_entity": "{entity} añadida", + "added_generation_job_to_queue": "Tarea de generación añadida a la cola", + "create_entity": "{entity} creada", + "default_filter_set": "Establecer como filtro por defecto", + "delete_entity": "Eliminar {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "delete_past_tense": "Eliminado {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "generating_screenshot": "Generando captura…", + "merged_tags": "Etiquetas combinadas", + "rescanning_entity": "Reescanear {count, plural, one {{singularEntity}} other {{pluralEntity}}}…", + "started_auto_tagging": "Auto-etiquetado iniciado", + "saved_entity": "{entity} guardada", + "updated_entity": "{entity} actualizada" + }, + "total": "Total", + "twitter": "Twitter", + "up-dir": "Ascender en el árbol de directorios", + "updated_at": "Actualizado a las", + "url": "Dirección web", + "weight": "Peso", + "years_old": "años", + "stats": { + "image_size": "Tamaño de imágenes", + "scenes_size": "Tamaño de las escenas", + "scenes_duration": "Duración de las escenas" + } +} diff --git a/ui/v2.5/src/locales/index.ts b/ui/v2.5/src/locales/index.ts index 3f2682f33..6a3534d8d 100644 --- a/ui/v2.5/src/locales/index.ts +++ b/ui/v2.5/src/locales/index.ts @@ -1,6 +1,7 @@ import deDE from "./de-DE.json"; import enGB from "./en-GB.json"; import enUS from "./en-US.json"; +import esES from "./es-ES.json"; import ptBR from "./pt-BR.json"; import itIT from "./it-IT.json"; import svSE from "./sv-SE.json"; @@ -11,6 +12,7 @@ export default { deDE, enGB, enUS, + esES, ptBR, itIT, svSE,