{
	"api_kicker": "API para desarrolladores",
	"api_title": "Crea actividades desde tu propio sistema",
	"api_intro": "Un POST por tipo de actividad. Envía tu contenido como JSON y recibe una actividad en tu cuenta de Puzzel.org y una URL que puedes dar a los jugadores o colocar en un iframe.",
	"api_search_placeholder": "Buscar endpoints, campos y ajustes",
	"api_search_results": "coinciden en esta página",
	"api_search_empty": "Nada en esta página coincide con eso. Prueba con el nombre de un endpoint, un campo como activity_key o un código de estado.",
	"api_search_clear": "Borrar búsqueda",
	"api_nav_guide": "Primeros pasos",
	"api_nav_endpoints": "Endpoints",
	"api_toc_label": "En esta página",
	"api_hero_base_label": "URL base",
	"api_hero_method_label": "Método",
	"api_hero_method_value": "POST, cuerpo JSON",
	"api_hero_auth_label": "Autenticación",
	"api_hero_auth_value": "Clave + email en el cuerpo",
	"api_hero_limit_label": "Cuota",
	"api_hero_limit_value": "[limit] actividades al día",
	"api_hero_count_label": "Endpoints",
	"api_hero_count_value": "[count] tipos de actividad",
	"api_s_quickstart_title": "Tu primera petición",
	"api_s_quickstart_body": "Envía una petición POST con tu clave de API, correo y contenido en el cuerpo JSON. No necesitas instalar nada ni establecer una conexión previa. La respuesta incluye la clave de la nueva actividad y la URL para jugar.",
	"api_s_quickstart_note": "Todos los ejemplos de esta página son peticiones completas y ejecutables. Sustituye la clave y el contenido por los tuyos y funcionan tal cual.",
	"api_s_auth_title": "Autenticación",
	"api_s_auth_body": "Envía la clave de API y el correo en el cuerpo JSON de cada petición. No necesitas cabeceras de autenticación ni un bearer token. La clave debe pertenecer a la cuenta con ese correo.",
	"api_s_auth_where": "Tu clave está en la sección de cuenta de tu panel, detrás de Mostrar.",
	"api_s_auth_where_link": "Abrir mi clave de API",
	"api_s_auth_premium": "Las claves de API se entregan cuando empieza una suscripción, así que una cuenta gratis todavía no tiene una.",
	"api_s_auth_plans": "Ver los planes",
	"api_s_auth_secret": "Trata la clave como una contraseña. Crea y sobrescribe actividades en tu cuenta, así que mantenla en el servidor y fuera de cualquier cosa que un navegador pueda leer.",
	"api_prefill_kicker": "Ejemplos",
	"api_prefill_label": "Rellenar los ejemplos con mi propia clave de API",
	"api_prefill_signed_out": "Inicia sesión y tu clave aparecerá en todos los ejemplos de esta página.",
	"api_prefill_sign_in": "Iniciar sesión",
	"api_prefill_none": "Esta cuenta todavía no tiene clave de API.",
	"api_prefill_warning": "Ahora todos los ejemplos contienen tu clave real. No pegues ninguno en un chat, una incidencia o un repositorio público.",
	"api_s_request_title": "El cuerpo de la petición",
	"api_s_request_body": "Todos los endpoints usan los mismos cinco campos básicos. El campo de contenido depende del tipo de actividad: normalmente es un array de elementos, aunque algunos reciben una oración o una imagen. Para sudoku no necesitas enviar contenido.",
	"api_s_request_settings": "settings es un objeto con opciones por endpoint. Cuáles lee cada endpoint se indica junto a él más abajo; cualquier otra cosa que pongas ahí se ignora.",
	"api_col_field": "Campo",
	"api_col_type": "Tipo",
	"api_col_notes": "Qué hace",
	"api_col_status": "Estado",
	"api_col_meaning": "Qué significa",
	"api_required": "obligatorio",
	"api_optional": "opcional",
	"api_default_label": "Por defecto",
	"api_allowed_label": "Uno de",
	"api_in_settings": "en settings",
	"api_f_account_api_key": "La clave de API de tu cuenta. Va en el cuerpo, no en una cabecera.",
	"api_f_email": "La dirección con la que inicia sesión tu cuenta de Puzzel.org. La clave solo es válida junto con ella.",
	"api_f_title": "El nombre que recibe la actividad en tu panel. Si lo omites, el endpoint usa su propio nombre por defecto.",
	"api_f_language": "Solo determina el idioma de la URL que recibes; no traduce nada de lo que envías. La sopa de letras también lo lee para cambiar sus letras de relleno al árabe cuando es \"ar\".",
	"api_f_activity_key": "Omítelo para crear una actividad nueva. Pasa la clave de una que ya sea tuya y esa actividad se reconstruye en su lugar.",
	"api_f_sentence_cryptogram": "La oración que se va a cifrar. Los jugadores la descifran carácter a carácter.",
	"api_f_sentence_calculation": "La oración que los jugadores descubren al resolver las operaciones.",
	"api_f_image": "URL absoluta de la imagen que se va a recortar. Se envía en el nivel superior, no dentro de settings.",
	"api_f_image_setting": "URL absoluta de la imagen que se va a desordenar. A diferencia del rompecabezas, esta va dentro de settings.",
	"api_s_response_title": "Qué recibes de vuelta",
	"api_s_response_body": "Una llamada correcta responde 200 con la clave de la nueva actividad y la URL en la que se juega. Cualquier otra cosa responde con success en false y una única cadena de error.",
	"api_response_success": "Éxito",
	"api_response_error": "Error",
	"api_s_response_urls": "La url que recibes es la vista para insertar. Cambia embed por play para abrirla a pantalla completa, o por build para abrirla en el editor; la clave después de p= es la misma.",
	"api_s_updating_title": "Crear frente a actualizar",
	"api_s_updating_body": "Envía activity_key para reconstruir una actividad existente. Se sustituye el contenido y se actualizan el nombre y la marca de versión. La clave no cambia, así que los enlaces compartidos y las actividades insertadas siguen funcionando. Se conservan los resultados, la carpeta y los ajustes que el endpoint no modifica.",
	"api_s_updating_own": "Solo puedes actualizar actividades que pertenezcan a tu propia cuenta. La clave de otra persona responde 403.",
	"api_s_updating_name": "title se aplica en cada actualización, incluido su valor por defecto: si lo omites, la actividad pasa a llamarse con el nombre por defecto de ese endpoint.",
	"api_s_updating_settings": "Los bloques de ajustes que un endpoint escribe por sí mismo se reescriben desde cero, así que una actualización también los restablece a los valores que envías, o a los valores por defecto del endpoint.",
	"api_s_updating_quota": "Una actualización cuesta lo mismo que una creación: una llamada de la cuota de hoy.",
	"api_s_limits_title": "Límite de peticiones",
	"api_s_limits_body": "Cada llamada correcta cuenta, tanto creaciones como actualizaciones. Si te pasas, la siguiente petición responde 429 hasta que el contador se reinicia.",
	"api_s_limits_counter": "[limit] actividades por cuenta y día",
	"api_s_limits_reset": "El contador se pone a cero una vez al día mediante una tarea programada, no en una ventana móvil de 24 horas.",
	"api_s_errors_title": "Errores",
	"api_s_errors_body": "Los errores llegan siempre como JSON con los mismos dos campos, nunca como una página HTML. La cadena error está escrita para que la lea una persona: indica el campo o el límite que falló.",
	"api_err_400": "Falta algo en el cuerpo, está mal formado o fuera de rango. El mensaje indica el campo.",
	"api_err_401": "El email es desconocido, o la clave no pertenece a esa cuenta.",
	"api_err_403": "La activity_key que enviaste pertenece a otra cuenta.",
	"api_err_429": "La cuota de hoy está agotada. Se reinicia una vez al día.",
	"api_err_500": "El generador no pudo construir un puzle con lo que enviaste; normalmente por muy pocas palabras, o por palabras que no encajan entre sí.",
	"api_endpoints_title": "Endpoints",
	"api_endpoints_intro": "Una ruta por tipo de actividad, todas POST, todas bajo la misma URL base. Cada una indica el contenido que necesita, los ajustes que lee y una petición que puedes ejecutar.",
	"api_group_words": "Palabras y letras",
	"api_group_cards": "Tarjetas y parejas",
	"api_group_questions": "Preguntas y respuestas",
	"api_group_text": "Oraciones y números",
	"api_group_images": "Imágenes",
	"api_ep_content_label": "Contenido",
	"api_ep_settings_label": "Ajustes que lee",
	"api_ep_settings_none": "Este endpoint no lee ningún ajuste.",
	"api_ep_example_label": "Petición de ejemplo",
	"api_ep_notes_label": "Conviene saber",
	"api_ep_min_items": "Al menos [count] en items",
	"api_ep_item_range": "De [min] a [max] en items",
	"api_ep_max_cards": "como máximo [max] tarjetas en total",
	"api_ep_no_items": "No acepta items",
	"api_ep_default_title": "Usa por defecto el nombre “[title]”",
	"api_copy": "Copiar",
	"api_copied": "Copiado",
	"api_toast_copied": "Copiado al portapapeles",
	"api_ep_open_builder": "Abrir el editor",
	"api_ep_back_to_top": "Volver arriba",
	"api_e_crossword": "Entrelaza tus respuestas en una cuadrícula y numera las definiciones por ti.",
	"api_c_crossword": "Un array de palabras. Cada entrada combina la respuesta con la definición que la señala.",
	"api_note_crossword_length": "Las respuestas de menos de dos caracteres se descartan antes de construir la cuadrícula, y al menos dos tienen que sobrevivir a ese filtro.",
	"api_note_crossword_layout": "Las respuestas se pasan a mayúsculas y el generador tiene veinte intentos para encajarlas. Si no consigue colocar ni una sola palabra, la llamada responde 500.",
	"api_set_crossword_hidden_solution": "Una palabra extra opcional. Sus letras se marcan en casillas de la cuadrícula terminada, para que los jugadores las recojan cuando el crucigrama esté resuelto, así que todas sus letras tienen que aparecer en las respuestas.",
	"api_e_wordseeker": "Esconde tus palabras en una cuadrícula de letras, en las direcciones y con la forma que elijas.",
	"api_c_wordseeker": "Un array de palabras. El texto de la definición se convierte en la lista de palabras con la que trabajan los jugadores.",
	"api_note_wordseeker_length": "Las respuestas de menos de dos caracteres se descartan, y todas las respuestas se pasan a mayúsculas antes de entrar en la cuadrícula.",
	"api_note_wordseeker_arabic": "La cuadrícula se rellena con letras latinas salvo que language sea \"ar\", que cambia el relleno al árabe.",
	"api_set_wordseeker_hidden_solution": "Las letras sobrantes forman esta palabra. Establecerla también indica al generador que encaje primero la solución en lugar de meter tantas palabras como pueda.",
	"api_set_wordseeker_directions": "En qué direcciones puede ir una palabra. Si lo omites, las palabras solo van hacia el este, el sureste y el sur.",
	"api_set_wordseeker_template": "Recorta la cuadrícula con una forma en lugar de dejarla cuadrada.",
	"api_e_acrostic": "Apila tus respuestas para que una columna forme una palabra oculta.",
	"api_c_acrostic": "Un array de palabras. Entre todas tienen que aportar cada letra de la palabra oculta.",
	"api_set_acrostic_hidden_solution": "La palabra que forma la columna resaltada. Este endpoint no funciona sin ella.",
	"api_note_acrostic_letters": "Si las respuestas no pueden aportar las letras que necesita la solución, la llamada responde 500 en lugar de guardar una cuadrícula a medio construir.",
	"api_note_acrostic_order": "El generador reordena tus respuestas para que la columna funcione, así que el orden que envías no es el orden que ven los jugadores.",
	"api_e_word-scramble": "Revuelve las letras de cada respuesta para que los jugadores las ordenen.",
	"api_c_word-scramble": "Un array de palabras. La definición se muestra junto a las letras revueltas.",
	"api_set_scramble_hidden_solution": "Una palabra extra opcional que los jugadores introducen cuando el resto está resuelto.",
	"api_note_scramble_random": "Las actividades creadas a través de la API siempre tienen activado el ajuste de orden aleatorio, así que el orden que envías no es el orden que reciben los jugadores.",
	"api_e_hangman": "Convierte tus palabras o frases en rondas de adivinar letras.",
	"api_c_hangman": "Un array de palabras o frases cortas. La definición es la pista que ven los jugadores.",
	"api_e_wordle": "Crea un juego de adivinar la palabra con cada palabra que envías.",
	"api_c_wordle": "Un array de palabras. Los jugadores tienen una ronda por palabra.",
	"api_note_wordle_dictionary": "Por defecto, se comprueba que las palabras introducidas estén en el diccionario. Desactiva esta opción en el editor si usas nombres propios o palabras inventadas.",
	"api_e_typing-practice": "Convierte oraciones en ejercicios de mecanografía.",
	"api_c_typing-practice": "Un array de palabras u oraciones para teclear. El campo de definición sirve también como instrucción.",
	"api_e_wheel-of-fortune": "Llena una ruleta giratoria con tus propios segmentos.",
	"api_c_wheel-of-fortune": "Un array de segmentos. Cada respuesta se convierte en una porción.",
	"api_note_wheel_outcome": "Se crea con “mostrar el resultado solo en la ruleta”, así que el resultado se lee en la ruleta en lugar de anunciarse al lado.",
	"api_e_memory": "Tarjetas boca abajo para darles la vuelta y emparejarlas.",
	"api_c_memory": "Un array de parejas. Cada pareja contiene las dos tarjetas que van juntas.",
	"api_note_cards_media": "Una tarjeta es un objeto con un type y un value. Usa \"text\" para palabras, o \"image\", \"audio\", \"youtube\" o \"link\" con una URL en value, y añade alt para una descripción.",
	"api_e_matching-pairs": "Dos columnas de tarjetas para arrastrar y juntar.",
	"api_c_matching-pairs": "Un array de parejas. La primera tarjeta de cada pareja cae en un lado y su compañera en el otro.",
	"api_e_flash-cards": "Tarjetas de dos caras para ir pasando.",
	"api_c_flash-cards": "Un array de tarjetas. La primera tarjeta es el anverso, la segunda el reverso.",
	"api_note_flashcards_sides": "El endpoint guarda tantas tarjetas como envíes, así que envía exactamente dos por entrada: primero el anverso, luego el reverso.",
	"api_e_categorize": "Tarjetas para clasificar en la categoría a la que pertenecen.",
	"api_c_categorize": "Un array de categorías, cada una con un nombre y las tarjetas que le pertenecen.",
	"api_note_categorize_name": "Una categoría enviada sin nombre se guarda como “Untitled Category”, así que envía siempre uno.",
	"api_e_reorder": "Una secuencia que los jugadores tienen que volver a ordenar.",
	"api_c_reorder": "Un array de secuencias. Cada una contiene sus tarjetas en el orden correcto.",
	"api_note_reorder_order": "El orden que envías se guarda como el orden correcto: el número uno primero.",
	"api_e_quiz": "Preguntas de opción múltiple y abiertas, puntuadas sobre la marcha.",
	"api_c_quiz": "Un array de preguntas. Las preguntas de opción múltiple llevan sus respuestas; las abiertas llevan la respuesta que aceptas.",
	"api_note_question_types": "question_type es \"multiple_choice\", donde la opción correcta lleva isCorrect true; \"true_false\", lo mismo pero con exactamente dos opciones, primero verdadero y después falso; o \"open_answer\", que usa correct_answer en su lugar. Si se omite, se trata como opción múltiple.",
	"api_note_quiz_settings": "El endpoint del quiz pasa settings directamente como bloques de ajustes de la actividad, así que no es un sitio para opciones sueltas: ajusta el quiz en el editor después.",
	"api_e_board-game": "Un tablero para recorrer a toda velocidad, con tus preguntas en las casillas.",
	"api_c_board-game": "Un array de preguntas, exactamente con la misma forma que acepta el endpoint del quiz.",
	"api_set_board_tiles": "Cuántas casillas tiene el tablero. Entre 10 y 75.",
	"api_set_board_mode": "Si los jugadores compiten por llegar a la meta o recogen objetos por el camino.",
	"api_e_cryptogram": "Convierte una oración en un código que descifrar, carácter a carácter.",
	"api_c_cryptogram": "Una oración, en el campo sentence. Este endpoint no acepta items.",
	"api_note_cryptogram_no_items": "Cualquier cosa que envíes en items se ignora: el puzle se construye solo a partir de la oración.",
	"api_set_cryptogram_helpers": "Qué caracteres se dan gratis como punto de partida: ninguno, los más comunes, las vocales o los que indiques tú.",
	"api_set_cryptogram_character_list": "El alfabeto con el que se construye el cifrado. Si se deja vacío, el cifrado elige el suyo.",
	"api_set_cryptogram_extra_letters": "Los caracteres que se dan cuando helpers es \"custom\". Se ignora en los demás modos de ayuda.",
	"api_set_cryptogram_hide_unused": "Deja fuera de la clave los caracteres que la oración nunca usa.",
	"api_e_calculation": "Esconde una oración detrás de operaciones: resuelve la operación y revela la letra.",
	"api_c_calculation": "Una oración, en el campo sentence. Este endpoint no acepta items.",
	"api_set_calc_difficulty": "El resultado más alto que puede tener una operación.",
	"api_set_calc_operators": "Qué operaciones pueden aparecer. x es multiplicar, : es dividir.",
	"api_set_calc_max_operations": "Cuántas operaciones puede encadenar un mismo cálculo.",
	"api_set_calc_number_difficulty": "Limita los números individuales dentro de una operación. Desde 5 hasta 1000.",
	"api_note_calculation_fit": "Si las restricciones son demasiado estrictas para codificar la oración, la llamada responde 400 pidiéndote que las relajes en lugar de guardar un puzle parcial.",
	"api_e_sudoku": "Genera una cuadrícula resuelta y luego quita números.",
	"api_c_sudoku": "Nada. Todo el puzle sale de sus dos ajustes.",
	"api_note_sudoku_no_items": "No envíes items ni sentence: size y difficulty son toda la entrada.",
	"api_note_sudoku_difficulty_sizes": "El editor solo ofrece la dificultad para 2x3, 3x3 y 3x4. La API la aplica a todos los tamaños, incluidos 2x2 y 4x4.",
	"api_set_sudoku_size": "El tamaño de un bloque, escrito como filas por columnas: 3x3 da la cuadrícula clásica de 9x9. El endpoint solo comprueba que se pueda leer como dos números, así que quédate con los tamaños que ofrece el editor.",
	"api_set_sudoku_difficulty": "Cuántos números quedan en el tablero para empezar.",
	"api_e_jigsaw": "Corta una imagen en piezas para volver a montarla arrastrándolas.",
	"api_c_jigsaw": "Una URL de imagen, en el campo image. Este endpoint no acepta items.",
	"api_note_jigsaw_grid": "La API siempre crea un rompecabezas de 4 por 4. El número de piezas, las piezas irregulares y los bordes rectos son ajustes del editor: enviar rows o columns aquí no hace nada.",
	"api_note_image_reachable": "La URL se guarda tal como la enviaste y el archivo nunca se copia, así que tiene que seguir siendo accesible públicamente mientras se juegue la actividad.",
	"api_e_slidingpuzzle": "Desordena una imagen en fichas que se deslizan hasta su sitio.",
	"api_c_slidingpuzzle": "Una URL de imagen, dentro de settings. Este endpoint no acepta items.",
	"api_note_sliding_image_slot": "A diferencia del rompecabezas, este endpoint lee su imagen de settings.image. Un campo image en el nivel superior se ignora y la llamada responde 400.",
	"api_help_title": "¿Algo no funciona como debería?",
	"api_help_body": "Envíanos la petición que has usado y el error que recibiste. Te responderá la persona que creó la API.",
	"api_help_cta": "Escribir a soporte",
	"api_int_kicker": "Integraciones para desarrolladores",
	"api_int_title": "Conecta Puzzel a tu propia plataforma",
	"api_int_intro": "Puzzel puede entregar el resultado de un jugador directamente a otro sistema —su puntuación, hasta dónde llegó, qué respondió— sin que ese sistema tenga que ser un LMS completo. Esta página reúne todos los canales que existen: qué sale, cuándo sale y lo mínimo que tienes que construir para recibirlo.",
	"api_int_hero_out_label": "Los resultados salen mediante",
	"api_int_hero_out_value": "Un webhook, o un mensaje a la página que rodea la actividad",
	"api_int_hero_in_label": "Tu página puede",
	"api_int_hero_in_value": "Iniciar la sesión del jugador y reiniciar la actividad",
	"api_int_hero_where_label": "Se activa",
	"api_int_hero_where_value": "Por actividad, en Desarrollador dentro del editor",
	"api_int_hero_plan_label": "Incluido con",
	"api_int_hero_plan_value": "Un plan de pago — estos ajustes están desactivados en una cuenta gratis",
	"api_int_search_placeholder": "Buscar canales, campos y ejemplos",
	"api_int_search_empty": "Nada en esta página coincide con eso. Prueba con un canal como webhook o postMessage, o un campo como progress.",
	"api_int_nav_channels": "Canales",
	"api_int_s_choose_title": "¿Qué canal necesitas?",
	"api_int_s_choose_body": "De una actividad pueden salir tres cosas, y puede entrar una. Cuál te conviene depende de una sola pregunta: ¿el jugador está dentro de tu página, o en un sitio completamente distinto?",
	"api_int_choose_out": "Sale de Puzzel",
	"api_int_choose_in": "Entra en Puzzel",
	"api_int_choose_when": "Úsalo cuando",
	"api_int_choose_needs": "Necesitas",
	"api_int_choose_setting": "Ajuste",
	"api_int_ch_webhook_name": "Webhook de resultados",
	"api_int_ch_webhook_summary": "Cada resultado guardado se envía por POST, como JSON, a una URL de tu propiedad.",
	"api_int_ch_webhook_when": "El jugador puede estar en cualquier sitio —un enlace compartido, un código QR, la página de otra persona— y quieres el resultado en tu propia base de datos.",
	"api_int_ch_webhook_needs": "Un endpoint HTTPS que acepte un POST de origen cruzado.",
	"api_int_ch_parent_name": "Resultados a la página que la rodea",
	"api_int_ch_parent_summary": "El mismo JSON, enviado a la página que inserta la actividad en lugar de a un servidor.",
	"api_int_ch_parent_when": "Insertas la actividad en la página de tu propio curso y esa página puede hacer algo con el resultado.",
	"api_int_ch_parent_needs": "Un iframe en tu página y un listener de mensajes. Sin servidor, sin CORS.",
	"api_int_ch_completion_name": "Señal de finalización",
	"api_int_ch_completion_summary": "Un mensaje cuando el jugador termina, que no lleva más información que ese hecho.",
	"api_int_ch_completion_when": "Solo quieres saber si ha terminado —para marcar la lección como hecha, desbloquear la siguiente o mostrar tu propia pantalla.",
	"api_int_ch_completion_needs": "Un iframe en tu página y un listener de mensajes.",
	"api_int_ch_trigger_name": "Reiniciar desde tu página",
	"api_int_ch_trigger_summary": "Tu página le indica a la actividad insertada que borre las respuestas del jugador y empiece de nuevo.",
	"api_int_ch_trigger_when": "Tienes tu propio botón «intentar de nuevo» fuera de la actividad.",
	"api_int_ch_trigger_needs": "Un iframe en tu página. El mensaje solo se acepta desde la página que hace la inserción.",
	"api_int_s_webhook_title": "Webhook de resultados",
	"api_int_s_webhook_body": "Activa «Enviar los resultados a un webhook» en el editor y dale una URL. A partir de ahí, cada vez que se guarda el progreso del jugador, su navegador envía por POST el resultado completo a esa URL como JSON.",
	"api_int_webhook_steps_title": "Configurarlo",
	"api_int_webhook_step_1": "Abre la actividad en el editor y ve al menú Desarrollador.",
	"api_int_webhook_step_2": "Activa «Enviar los resultados a un webhook» y pega tu endpoint en el campo de debajo. Tiene que ser una URL completa —un dominio sin más se rechaza— y tiene que ser https, porque el navegador bloquea una llamada http sin más hecha desde una página servida por https.",
	"api_int_webhook_step_3": "Juega la actividad una vez tú mismo. El primer POST llega en cuanto respondes algo.",
	"api_int_webhook_receiver": "Un receptor, de principio a fin",
	"api_int_webhook_timing_title": "Se dispara mientras juegas, no solo al final",
	"api_int_webhook_timing_body": "Sale un resultado cada vez que se guarda la entrada: tras una pausa al escribir, cuando se coloca una carta, cuando el reloj se detiene, y una vez más cuando termina la actividad. Un crucigrama largo son varias decenas de llamadas, no una sola —así que escribe tu handler como un upsert con clave en playerUid y activityKey, no como una inserción. Cada llamada lleva el estado completo, así que la más reciente siempre reemplaza a la anterior, y una llamada que se pierde queda cubierta por la siguiente.",
	"api_int_webhook_finished_title": "Distinguir un final de un simple guardado",
	"api_int_webhook_finished_body": "progress es un porcentaje: 100 significa que la actividad está completa. Algunos tipos pueden terminar sin llegar a ese valor —un quiz respondido hasta el final, un campo de solución resuelto— y en su lugar llevan hasAlternateCompletion. Trata cualquiera de los dos como terminado.",
	"api_int_webhook_cors_title": "Lo envía el navegador del jugador",
	"api_int_webhook_cors_body": "El POST llega desde la pestaña donde se está jugando la actividad, no desde un servidor de Puzzel. La mayoría de los endpoints preparados para recibir webhooks ya lo aceptan así. Si el tuyo nunca ve ninguna solicitud, esta es la razón: el navegador pide permiso antes, así que responde a la solicitud OPTIONS previa con una cabecera Access-Control-Allow-Origin, y el POST real llega después.",
	"api_int_webhook_trust_title": "Trata el payload como una afirmación, no como una prueba",
	"api_int_webhook_trust_body": "La solicitud no lleva firma, y viene de un navegador que no controlas, así que cualquiera que mire la página puede enviarte una también. Eso está bien para rellenar una barra de progreso o un panel. Para cualquier cosa que no dejarías fijar a un estudiante por su cuenta —una calificación que cuenta, un certificado, un pago— compáralo con los resultados de tu propio panel de Puzzel, o deja que los conectores de calificación del LMS se encarguen de la puntuación.",
	"api_int_s_parent_title": "Resultados a la página que la rodea",
	"api_int_s_parent_body": "Si insertas la actividad, puedes hacer que ese mismo JSON se envíe a tu propia página en lugar de a un servidor. Activa «Enviar los resultados a la página principal» y escucha el mensaje. Nada sale del navegador, así que no hay ningún endpoint que construir ni CORS del que preocuparse.",
	"api_int_parent_origin_title": "Comprueba de dónde viene el mensaje",
	"api_int_parent_origin_body": "Tu listener recibe todos los mensajes enviados a la página, incluidos los de otros marcos y extensiones del navegador. Compara event.origin con https://puzzel.org antes de confiar en su contenido.",
	"api_int_parent_same_title": "El mismo payload, el mismo momento",
	"api_int_parent_same_body": "Este es el gemelo del webhook: los mismos campos, enviados en los mismos momentos. Todo lo que dice «Qué contiene un resultado» se aplica también aquí.",
	"api_int_s_completion_title": "Señal de finalización",
	"api_int_s_completion_body": "El canal más pequeño, para cuando el resultado en sí no es asunto tuyo: activa «Enviar una señal de finalización» y tu página recibe un mensaje en el momento en que el jugador termina.",
	"api_int_completion_shape": "Qué llega",
	"api_int_completion_order_title": "El resultado ya está guardado cuando llega",
	"api_int_completion_order_body": "La señal se envía deliberadamente después de que se haya completado el guardado final, así que una página que reaccione leyendo de vuelta el resultado lo encontrará ahí.",
	"api_int_completion_embed_title": "Solo dentro de un iframe",
	"api_int_completion_embed_body": "Ambos canales de mensajes envían a la página que enmarca la actividad. Abierta en su propia pestaña no hay nadie a quien avisar, así que no se envía nada.",
	"api_int_s_payload_title": "Qué contiene un resultado",
	"api_int_s_payload_body": "Una sola forma, sea cual sea el canal que la lleve. Las respuestas del jugador tienen como clave los ids propios de cada elemento de la actividad, así que esas mismas claves aparecen en correctUids.",
	"api_int_col_when": "Cuándo está presente",
	"api_int_always": "siempre",
	"api_int_sometimes": "a veces",
	"api_int_payload_absent_title": "Ausente, no vacío",
	"api_int_payload_absent_body": "Un campo que no aplica se omite del JSON en lugar de enviarse como null o cero. Así se distingue un tipo que no puntúa una partida de una partida que obtuvo cero puntos —así que léelo con un valor por defecto y nunca des por hecho que la clave está presente.",
	"api_int_payload_example": "Un quiz terminado, tal como llega",
	"api_int_f_activity_key": "La actividad a la que pertenece el resultado. La misma clave que ves en la URL propia de la actividad, después de ?p=.",
	"api_int_f_player_uid": "Quién jugó, como id anónimo. Es estable para este jugador en este dispositivo, así que es lo que debes usar como clave de los resultados —no es una dirección de correo ni una cuenta de Puzzel.",
	"api_int_f_player": "Los campos de registro que pide la actividad, tal como los configuraste: nombre, correo, clase, student_id, etc. Está ausente hasta que el jugador se registra, y ausente por completo en una actividad que no pide nada.",
	"api_int_f_progress": "Hasta dónde ha llegado, como porcentaje. 100 significa terminado.",
	"api_int_f_time_passed": "Tiempo en la actividad, en milisegundos.",
	"api_int_f_last_played_at": "Cuándo se guardó este resultado, como marca de tiempo Unix en milisegundos.",
	"api_int_f_created": "Cuándo empezó el intento, como marca de tiempo Unix en milisegundos.",
	"api_int_f_player_input": "Lo que el jugador introdujo realmente, indexado por el id del elemento al que pertenece. La forma interna depende del tipo de actividad —una palabra, una lista de cartas colocadas, una opción elegida.",
	"api_int_f_correct_uids": "Cuáles de esos elementos son correctos, con la misma clave. Está ausente mientras no se haya respondido nada todavía.",
	"api_int_f_score": "Puntos obtenidos, en los tipos que puntúan una partida. Está ausente en el resto de casos —incluida una partida que realmente obtuvo cero puntos, así que comprueba que la clave existe antes de leerla.",
	"api_int_f_performance": "La medida propia de cada tipo de cómo le fue, cuando la tiene —palabras por minuto en práctica de mecanografía, por ejemplo.",
	"api_int_f_attempts": "Qué número de partida es: 1 la primera vez, uno más en cada reinicio. Solo en los tipos que pueden terminar una partida antes de tiempo y cuentan los reintentos.",
	"api_int_f_knocked_out": "La partida terminó con una respuesta incorrecta y acabó sin completarse.",
	"api_int_f_alternate": "La actividad se terminó de una forma que no llega al 100 % —un quiz respondido hasta el final, un campo de solución resuelto. Trátalo como una finalización.",
	"api_int_f_missed_keys": "Caracteres que el jugador seguía fallando, empezando por los más fallados. Solo en práctica de mecanografía.",
	"api_int_f_content_version": "Con qué versión del contenido de la actividad se jugó. Cambia cuando el propietario edita las preguntas, así que un resultado antiguo se puede distinguir de uno actual.",
	"api_int_s_control_title": "Reiniciar la actividad desde tu página",
	"api_int_s_control_body": "Una instrucción viaja en sentido contrario. Con «Aceptar órdenes de la página principal» activado, la página que hace la inserción puede borrar las respuestas del jugador y volver a poner la actividad al principio —para un botón «intentar de nuevo» propio, fuera del marco.",
	"api_int_control_only_title": "Reiniciar es la única orden",
	"api_int_control_only_body": "No existe ningún mensaje para enviar un resultado, abrir el mensaje final o saltar a una pregunta. Un mensaje que pida cualquier cosa que no sea un reinicio se ignora.",
	"api_int_control_guard_title": "Solo se escucha a la página que inserta",
	"api_int_control_guard_body": "La orden solo se acepta desde la página que enmarca la actividad y de ningún otro sitio —ni un marco hermano, ni un script de la página. El ajuste está desactivado por defecto, así que actívalo en las actividades que controles tú.",
	"api_int_s_identity_title": "Aportar tu propia identidad de jugador",
	"api_int_s_identity_body": "Si tu plataforma ya sabe quién está jugando, la actividad no tiene que volver a preguntárselo. Existen dos protocolos de enlace, ambos para una actividad dentro de tu página, y ambos cambian a quién pertenece un resultado. El primero lo activamos nosotros, contigo, en lugar de hacerlo desde una casilla; el segundo usa el proveedor de identidad que conectas tú mismo a tu cuenta.",
	"api_int_identity_pm_title": "Envíanos el jugador",
	"api_int_identity_pm_body": "La actividad se anuncia con 'app-loaded' y espera. Tu página envía de vuelta los datos del jugador, y el resultado queda archivado a su nombre sin que el jugador escriba nada ni vea una pantalla de registro.",
	"api_int_identity_sso_title": "Envíanos un token",
	"api_int_identity_sso_body": "El mismo protocolo, pero tu página envía el JWT emitido por tu proveedor de identidad en lugar de los campos en sí. Lo verificamos contra el proveedor de identidad conectado a tu cuenta —en el panel, en Aplicaciones conectadas → Inicio de sesión único (SSO), en los planes Escuela, Embajador, Academia y Formador— antes de dejar entrar al jugador, así que la identidad queda demostrada y no solo declarada. Es el que hay que usar cuando el resultado tiene que ser fiable. La misma conexión añade al enlace propio de la actividad un botón «Iniciar sesión con …», para los jugadores que no están en tu página.",
	"api_int_identity_sso_link": "Configurar el inicio de sesión único (SSO)",
	"api_int_identity_cta_title": "¿Quieres una mano para configurarlo?",
	"api_int_identity_cta_body": "Dinos cuál de los dos quieres y dónde se insertarán las actividades, y lo vemos contigo paso a paso —y activamos el primero en tu cuenta.",
	"api_int_identity_cta_button": "Escríbenos sobre identidad",
	"api_int_s_create_title": "Crear actividades desde tu sistema",
	"api_int_s_create_body": "Todo lo anterior trata de un resultado que sale. En sentido contrario —crear las actividades a partir de contenido que ya tienes— está la Puzzle API: un POST por tipo de actividad, y recibes de vuelta una clave y una URL para insertar.",
	"api_int_create_link": "Leer la referencia de la API",
	"api_int_s_lms_title": "Cuando un conector ya hecho es la mejor opción",
	"api_int_s_lms_body": "Si la plataforma del otro lado es un LMS de verdad, probablemente no necesites nada de esto. Las calificaciones pueden volver solas a su libro de calificaciones, sin que tengas que alojar nada.",
	"api_int_lms_lti_title": "Moodle, Canvas, Brightspace, Schoology, itslearning",
	"api_int_lms_lti_body": "Se lanza desde dentro del LMS, y la puntuación se escribe de vuelta en su libro de calificaciones.",
	"api_int_lms_gc_title": "Google Classroom",
	"api_int_lms_gc_body": "Publica una actividad como tarea y las calificaciones vuelven automáticamente.",
	"api_int_lms_not_title": "¿No es ninguno de esos?",
	"api_int_lms_not_body": "Las plataformas de cursos, los sitios de membresía, las intranets y cualquier cosa que hayas construido tú mismo son exactamente para lo que sirven los canales de esta página. Una inserción más la señal de finalización cubre la mayoría de los casos.",
	"api_int_s_limits_title": "Lo que no hay",
	"api_int_s_limits_body": "Para que no lo busques donde no está:",
	"api_int_limit_no_read": "No hay ningún endpoint para leer los resultados de vuelta. La API crea actividades; los resultados salen por los canales de esta página, o por las exportaciones de tu panel.",
	"api_int_limit_no_signature": "El webhook no lleva firma. No hay nada contra lo que verificar la solicitud, por eso un resultado no debería ser lo único que respalde algo importante.",
	"api_int_limit_per_activity": "No hay ningún webhook a nivel de cuenta. La URL es un ajuste de cada actividad, así que una actividad que copias lo lleva consigo y una nueva empieza sin él.",
	"api_int_limit_no_multiplayer": "Nada en un juego por equipos o una sala en directo. Tanto los canales de mensajes como el webhook son para juego individual, y los ajustes se desactivan solos cuando el juego por equipos está activado.",
	"api_int_limit_no_retry": "No hay ninguna cola de entrega. Nada se almacena ni se reenvía —el siguiente guardado es el reintento, y la última llamada de la partida es la que cuenta.",
	"api_nav_integrations": "Recuperar los resultados",
	"api_e_arrowword": "Un autodefinido: las definiciones van dentro de la cuadrícula, cada una con una flecha hacia su respuesta.",
	"api_c_arrowword": "Un array de palabras. Cada entrada combina la respuesta con una definición lo bastante corta para caber en una casilla.",
	"api_set_arrowword_hidden_solution": "Una palabra extra opcional. Sus letras se marcan en casillas de la cuadrícula terminada, así que todas sus letras tienen que aparecer en las respuestas.",
	"api_e_strands": "Una cuadrícula en la que cada letra pertenece a una palabra del tema, con una palabra que nombra el tema y va de un extremo a otro.",
	"api_c_strands": "Un array de palabras del tema. Junto con el spangram, sus letras tienen que llenar exactamente la cuadrícula.",
	"api_set_strands_theme": "La adivinanza que se muestra sobre la cuadrícula. Si la omites, los jugadores ven el título.",
	"api_set_strands_spangram": "La palabra o frase que nombra el tema y cruza la cuadrícula de un extremo a otro.",
	"api_note_strands_count": "Las letras de todas las palabras y del spangram juntos tienen que sumar exactamente 30, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72 u 80. Cualquier otra cifra responde 400 e indica cuántas letras añadir o quitar.",
	"api_e_fallen-phrase": "Una frase cuyas letras han caído por debajo de sus columnas, para que los jugadores las vuelvan a subir a su sitio.",
	"api_c_fallen-phrase": "Una frase, en el campo sentence. Este endpoint no acepta items.",
	"api_f_sentence_fallen_phrase": "La frase que se va a esconder: una cita, un refrán, una oración clave. Como máximo 120 letras y dígitos.",
	"api_set_fallen_phrase_columns": "Cuánto mide de ancho la cuadrícula, de 8 a 18. Cuanto más estrecha, más letras se apilan en cada columna y más difícil es.",
	"api_set_fallen_phrase_helpers": "Qué letras se quedan en la cuadrícula como punto de partida: ninguna, las más comunes, las vocales o las que indiques tú.",
	"api_set_fallen_phrase_extra_letters": "Las letras que se dan cuando helpers es \"custom\".",
	"api_e_bingo": "Un bingo para toda la clase que el anfitrión canta en directo: cada jugador recibe un cartón sacado de tus items.",
	"api_c_bingo": "Un array de items de los que se sacan los cartones. Envía bastantes más de los que caben en un cartón, para que los cartones sean distintos.",
	"api_set_bingo_mode": "Qué llena las casillas: tus items, tus items cantados por su pista, o simples números (que no necesitan items).",
	"api_set_bingo_rows": "Filas de cada cartón, de 2 a 5.",
	"api_set_bingo_columns": "Columnas de cada cartón, de 2 a 5.",
	"api_set_bingo_highest_number": "En el modo de números, los cartones se llenan desde el 1 hasta este número, 100 como máximo. Es una función de pago: sin un plan se queda en 50.",
	"api_note_bingo_item": "Un item es un objeto con un value y, opcionalmente, un type (\"text\", \"image\" o \"audio\" con una URL en value), una description (la pista que lee el anfitrión en el modo de pistas) y alt.",
	"api_e_times-tables": "Una cuadrícula de multiplicar que rellenar, tabla por tabla; las respuestas correctas van coloreando una imagen.",
	"api_c_times-tables": "Nada. Toda la cuadrícula sale de sus ajustes.",
	"api_set_times_tables_tables": "Las tablas que se practican. Si lo omites, son de la 1 a la 10; con un 11 o un 12 la cuadrícula pasa a ser de 12 por 12.",
	"api_set_times_tables_order": "Si las filas y las columnas van en orden o desordenadas.",
	"api_set_times_tables_picture": "La imagen que pintan las respuestas correctas.",
	"api_set_times_tables_players_choose_tables": "Deja que cada jugador elija cuáles de las tablas practicar.",
	"api_set_times_tables_fill_same_sums": "Una respuesta correcta rellena todas las casillas con la misma operación.",
	"api_e_i-have-who-has": "Una cadena para toda la clase: cada tarjeta responde a la pregunta anterior y plantea la siguiente.",
	"api_c_i-have-who-has": "Un array de parejas, con la pregunta primero y su respuesta después. El orden en que las envías es la cadena.",
	"api_set_i_have_who_has_chain_shape": "Un círculo se cierra sobre sí mismo, así que cualquier tarjeta puede empezar; una línea se abre con una tarjeta de inicio y termina con una tarjeta de final.",
	"api_note_ihwh_unique": "Ninguna pregunta ni ninguna respuesta puede aparecer dos veces: un estudiante que tuviera la respuesta no sabría a qué pregunta corresponde.",
	"api_e_fill-in-the-gap": "Oraciones con palabras que faltan, para que los jugadores las escriban o las elijan.",
	"api_c_fill-in-the-gap": "Un array de oraciones. Cada una se escribe entera, con cada hueco entre asteriscos.",
	"api_note_gap_syntax": "Escribe la oración completa y pon asteriscos alrededor de cada palabra que quieras dejar fuera: \"Water boils at *100* degrees.\" Varias palabras dentro de un mismo par forman un solo hueco. Una entrada también puede llevar una instrucción que se muestra encima de la oración.",
	"api_e_deconstruct": "Oraciones en las que los jugadores etiquetan las palabras: clases de palabras, partes de la oración o etiquetas propias.",
	"api_c_deconstruct": "Un array de oraciones. Cada palabra que hay que etiquetar se escribe como [word](label).",
	"api_set_deconstruct_categories": "Las etiquetas entre las que eligen los jugadores, por orden. Si lo omites, son las etiquetas usadas en las oraciones. Envíalo para añadir una etiqueta que ninguna palabra lleva, o para fijar el orden.",
	"api_note_deconstruct_syntax": "Escribe una oración como \"The [dog](noun) [barks](verb).\" Las palabras sin etiqueta se muestran, pero no se preguntan. Las etiquetas noun, verb, adjective y subject se muestran a cada jugador en su propio idioma.",
	"api_e_name-them-all": "Una lista para recordar: los jugadores nombran todos los elementos que puedan de un conjunto antes de que se acabe el tiempo.",
	"api_c_name-them-all": "Un array de nombres. Cada uno puede llevar otras grafías que también cuentan, una pista y el grupo al que pertenece.",
	"api_set_name_them_all_list_match_mode": "Si un nombre cuenta en cuanto se escribe, o solo al pulsar Intro.",
	"api_set_name_them_all_list_slot_hint": "Qué revela un hueco vacío: nada, la longitud del nombre, su primera letra o la pista que escribiste.",
	"api_set_name_them_all_list_arrange": "Una columna por grupo, o una sola lista.",
	"api_set_name_them_all_list_allow_give_up": "Muestra un botón de rendirse que termina la ronda y revela lo que faltaba.",
	"api_note_names_item": "Una entrada es un objeto con una answer y, opcionalmente, aliases (otras grafías que cuentan), una description (la pista) y un group. Al comprobar un nombre se ignoran las mayúsculas, los acentos y la puntuación.",
	"api_e_keypad": "Un candado con código: un teclado de llaves, algunas de las cuales forman juntas el código.",
	"api_c_keypad": "Un array de llaves. Las llaves que forman parte del código indican su lugar en él.",
	"api_set_keypad_instructions": "La pregunta o adivinanza a la que responde el código, que se muestra junto al teclado.",
	"api_set_keypad_force_solution_in_correct_order": "Las llaves hay que pulsarlas en orden. Si está desactivado, cualquier orden de las llaves correctas abre el candado.",
	"api_set_keypad_randomize_order": "Cada jugador recibe las llaves en una disposición distinta.",
	"api_note_keypad_item": "Una llave es un objeto con un value y, opcionalmente, un type (\"text\", \"image\" o \"audio\" con una URL en value), alt y code_position: su lugar en el código, 1 para la primera. Una llave puede aparecer una sola vez en el código, y al menos una llave tiene que estar en él.",
	"api_e_maze": "Un laberinto que recorrer: cada pregunta es una sala, y sus respuestas son las puertas.",
	"api_c_maze": "Un array de preguntas de opción múltiple o de verdadero o falso, exactamente con la forma que acepta el endpoint del quiz. Las preguntas abiertas se rechazan: una puerta necesita una respuesta escrita encima.",
	"api_set_maze_maze_width": "Cómo se distribuyen las salas: en una columna, en un cuadrado o más anchas.",
	"api_set_maze_maze_corridors": "Cuánto laberinto hay entre dos preguntas.",
	"api_set_maze_maze_fog": "Mostrar el laberinto entero, o solo lo que el jugador ha tenido al lado.",
	"api_set_maze_maze_wrong_door_pause": "Cuánto tiempo siguen cerradas las puertas después de elegir una equivocada.",
	"api_set_maze_maze_walk_there": "Ofrece un botón que lleva la ficha hasta la siguiente sala.",
	"api_set_maze_maze_seed": "La semilla a partir de la que se genera el laberinto. La misma semilla y las mismas preguntas dan el mismo laberinto; si la omites, se genera uno nuevo.",
	"api_e_jeopardy": "Un tablero de concurso: categorías arriba y, debajo, pistas que valen más cuanto más abajo están.",
	"api_c_jeopardy": "Un array de categorías, de izquierda a derecha. Cada una tiene un nombre y sus pistas, desde la fila de arriba hacia abajo.",
	"api_set_jeopardy_jeopardy_buzzer_mode": "Quién juega y cómo: el anfitrión lo dirige desde la consola, los jugadores pulsan el timbre desde el móvil, o cada jugador resuelve el tablero por su cuenta.",
	"api_set_jeopardy_jeopardy_contestants": "Si la consola habla de equipos o de jugadores.",
	"api_set_jeopardy_jeopardy_value_step": "Cuánto vale una fila: una pista vale este valor por su número de fila. De 50 a 500, de 50 en 50.",
	"api_set_jeopardy_jeopardy_answer_time": "Segundos para responder una vez abierta una pista, hasta 300. 0 es sin reloj.",
	"api_set_jeopardy_jeopardy_wrong_answer_costs": "Una respuesta incorrecta resta el valor de la pista de la puntuación.",
	"api_set_jeopardy_jeopardy_reveal_on_timeout": "El tablero muestra la respuesta cuando se acaba el tiempo.",
	"api_set_jeopardy_jeopardy_require_question_form": "Recuerda a los jugadores que respondan en forma de pregunta.",
	"api_note_jeopardy_clue": "Una pista es una pregunta tal como la acepta el endpoint del quiz, open_answer salvo que indique otra cosa, con correct_answer y, opcionalmente, aliases. También puede llevar value (su propio valor) y daily_double. null deja una casilla vacía.",
	"api_e_logic-puzzle": "Un puzle de lógica con cuadrícula: Puzzel escribe las pistas a partir de tu tabla de respuestas y comprueba que solo encaja una solución.",
	"api_c_logic-puzzle": "Un array de 3 a 5 categorías, cada una con un nombre y sus items. El item 1 de cada categoría va junto, el item 2 también, y así sucesivamente: esa es la solución.",
	"api_set_logic_puzzle_story": "La historia de fondo que se muestra encima de las pistas.",
	"api_set_logic_puzzle_difficulty": "Qué tipos de pistas puede usar el generador.",
	"api_set_logic_puzzle_hints": "Ofrece un botón que muestra el siguiente paso.",
	"api_set_logic_puzzle_auto_cross": "Al marcar una coincidencia se tacha el resto de su fila y de su columna.",
	"api_set_logic_puzzle_clue_mode": "Quién escribe las pistas que ven los jugadores: generadas a partir de la tabla, tus propias oraciones en free_clues, o ninguna.",
	"api_set_logic_puzzle_free_clues": "Tus propias pistas, mostradas tal como las escribes, con clue_mode \"free\". Nada las comprueba.",
	"api_note_logic_table": "Cada categoría necesita el mismo número de items, de 3 a 6, todos distintos. Una categoría puede marcarse como ordenada (precios, horas, edades) con una unidad opcional, lo que permite al generador escribir pistas sobre más, menos y cuánto.",
	"api_e_quartets": "El juego de cartas: los jugadores se piden cartas entre sí para reunir grupos de cuatro.",
	"api_c_quartets": "Un array de grupos. Cada uno tiene un nombre y exactamente cuatro cartas.",
	"api_set_quartets_type": "Un juego sencillo, o un juego de aprendizaje en el que cada carta muestra un dato. Si lo omites, es learn cuando alguna carta tiene una description.",
	"api_note_quartets_card": "Una carta es un nombre, o un objeto con un name y una description (el dato que se muestra en ella). Ningún nombre de carta puede aparecer dos veces en el juego: los jugadores piden las cartas por su nombre.",
	"api_e_scavenger-hunt": "Un recorrido de pasos que se resuelven en orden: cada código abre el siguiente paso.",
	"api_c_scavenger-hunt": "Un array de pasos, en orden. Cada uno tiene un título o una descripción, y el código que lo resuelve.",
	"api_note_hunt_step": "Un paso es un objeto con title, description, code y, opcionalmente, accepted_codes (otras grafías que cuentan), url y link_text. Un código se comprueba sin distinguir mayúsculas ni espacios. El mapa con chinchetas solo se puede añadir en el editor.",
	"api_e_spatial-reasoning": "Ejercicios en los que los jugadores colocan formas para que se cumpla cada regla: el cuadrado dentro del círculo, la estrella encima del corazón.",
	"api_c_spatial-reasoning": "Un array de ejercicios. Cada uno es una lista de reglas con la forma objeto, relación, destino.",
	"api_set_spatial_reasoning_clue_mode": "Reglas mostradas como imágenes o como oraciones.",
	"api_set_spatial_reasoning_unique_object_picks": "Cada forma solo se puede colocar una vez.",
	"api_set_spatial_reasoning_hide_color_picker": "Los jugadores no pueden cambiar el color de las formas.",
	"api_note_spatial_rule": "Los objetos y los destinos son square, triangle, circle, hexagon, pentagon, star, diamond o heart. Las relaciones son inside, outside, behind, in_front_of, right_of, left_of, above, below, same_color_as, different_color_from, larger_than y smaller_than. Una regla que nunca se puede cumplir responde 400.",
	"api_e_interactive-video": "Un vídeo que se detiene en los momentos que elijas, para hacer una pregunta o mostrar una nota.",
	"api_c_interactive-video": "Un array de ventanas emergentes. Cada una tiene el momento en que aparece y lo que muestra.",
	"api_set_interactive_video_video_url": "El vídeo: una página de YouTube, Vimeo o Bunny Stream, o un enlace directo a un archivo mp4, webm o mov.",
	"api_set_interactive_video_video_duration": "La duración del vídeo en segundos. Si se indica, se rechaza una ventana emergente que quede después del final.",
	"api_note_video_popup": "Una ventana emergente es un objeto con time (segundos, o \"1:23\"), kind (\"question\" salvo que indique \"note\", \"think\" o \"chapter\") y description. Una pregunta es una pregunta tal como la acepta el endpoint del quiz, y puede llevar rewind_to: el punto desde el que se vuelve a reproducir tras una respuesta incorrecta.",
	"api_e_rebus": "Oraciones escritas con imágenes: los jugadores leen las imágenes y los cambios de letras los devuelven a palabras.",
	"api_c_rebus": "Un array de oraciones. Cada una enumera las palabras dibujadas como imágenes; todas las demás palabras se quedan con sus letras.",
	"api_set_rebus_rebus_commas": "Dibuja una primera o última letra suprimida como una coma junto a la imagen.",
	"api_note_rebus_word": "Una palabra se dibuja con partes que juntas la forman. Una parte tiene las letras que representa (text), un emoji, y shows: la palabra de lo que muestra la imagen (\"broom\" para una imagen que representa \"room\"). Puzzel calcula los cambios de letras. Una parte puede ser un símbolo en su lugar, como 4 para \"for\"."
}
