{
	"api_kicker": "Entwickler-API",
	"api_title": "Erstelle Aktivitäten aus deinem eigenen System",
	"api_intro": "Ein POST pro Aktivitätstyp. Schick deine Inhalte als JSON und du bekommst eine Aktivität in deinem Puzzel.org-Konto zurück, dazu eine URL, die du an Spieler weitergeben oder in ein iframe setzen kannst.",
	"api_search_placeholder": "Endpunkte, Felder und Einstellungen durchsuchen",
	"api_search_results": "Treffer auf dieser Seite",
	"api_search_empty": "Dazu passt auf dieser Seite nichts. Probier einen Endpunktnamen, ein Feld wie activity_key oder einen Statuscode.",
	"api_search_clear": "Suche zurücksetzen",
	"api_nav_guide": "Erste Schritte",
	"api_nav_endpoints": "Endpunkte",
	"api_toc_label": "Auf dieser Seite",
	"api_hero_base_label": "Basis-URL",
	"api_hero_method_label": "Methode",
	"api_hero_method_value": "POST, JSON-Body",
	"api_hero_auth_label": "Auth",
	"api_hero_auth_value": "Schlüssel + E-Mail im Body",
	"api_hero_limit_label": "Kontingent",
	"api_hero_limit_value": "[limit] Aktivitäten pro Tag",
	"api_hero_count_label": "Endpunkte",
	"api_hero_count_value": "[count] Aktivitätstypen",
	"api_s_quickstart_title": "Deine erste Anfrage",
	"api_s_quickstart_body": "Du musst nichts installieren. Sende eine POST-Anfrage mit deinem API-Schlüssel, deiner E-Mail-Adresse und deinen Inhalten als JSON-Body. Die Antwort enthält den Schlüssel der neuen Aktivität und ihre Spiel-URL.",
	"api_s_quickstart_note": "Jedes Beispiel auf dieser Seite ist eine vollständige, lauffähige Anfrage. Setz deinen eigenen Schlüssel und deine eigenen Inhalte ein und es funktioniert genau so.",
	"api_s_auth_title": "Authentifizierung",
	"api_s_auth_body": "Du brauchst keinen Authentifizierungs-Header und kein Bearer-Token. API-Schlüssel und E-Mail-Adresse stehen im JSON-Body jeder Anfrage. Der Schlüssel muss zu dem Konto mit dieser E-Mail-Adresse gehören.",
	"api_s_auth_where": "Deinen Schlüssel findest du im Kontobereich deines Dashboards, hinter Anzeigen.",
	"api_s_auth_where_link": "Meinen API-Schlüssel öffnen",
	"api_s_auth_premium": "API-Schlüssel werden mit dem Start eines Abos vergeben, ein kostenloses Konto hat also noch keinen.",
	"api_s_auth_plans": "Tarife ansehen",
	"api_s_auth_secret": "Behandle den Schlüssel wie ein Passwort. Er erstellt und überschreibt Aktivitäten in deinem Konto, halte ihn also serverseitig und aus allem heraus, was ein Browser lesen kann.",
	"api_prefill_kicker": "Beispiele",
	"api_prefill_label": "Beispiele mit meinem eigenen API-Schlüssel füllen",
	"api_prefill_signed_out": "Melde dich an und dein Schlüssel steht in jedem Beispiel auf dieser Seite.",
	"api_prefill_sign_in": "Anmelden",
	"api_prefill_none": "Für dieses Konto gibt es noch keinen API-Schlüssel.",
	"api_prefill_warning": "Jedes Beispiel enthält jetzt deinen echten Schlüssel. Füg keines davon in einen Chat, ein Issue oder ein öffentliches Repo ein.",
	"api_s_request_title": "Der Request-Body",
	"api_s_request_body": "Alle Endpunkte verwenden dieselben fünf gemeinsamen Felder. Die zusätzlichen Inhaltsfelder unterscheiden sich je nach Aktivität: meist ein Array mit Einträgen, manchmal ein einzelner Satz oder ein Bild. Für Sudoku brauchst du keine Inhalte mitzusenden.",
	"api_s_request_settings": "settings ist ein Objekt mit Optionen pro Endpunkt. Welche ein Endpunkt liest, steht unten bei ihm; alles andere, was du dort hineinschreibst, wird ignoriert.",
	"api_col_field": "Feld",
	"api_col_type": "Typ",
	"api_col_notes": "Was es macht",
	"api_col_status": "Status",
	"api_col_meaning": "Was es bedeutet",
	"api_required": "erforderlich",
	"api_optional": "optional",
	"api_default_label": "Standard",
	"api_allowed_label": "Eines von",
	"api_in_settings": "in den Einstellungen",
	"api_f_account_api_key": "Der API-Schlüssel deines Kontos. Er gehört in den Body, nicht in einen Header.",
	"api_f_email": "Die Adresse, mit der sich dein Puzzel.org-Konto anmeldet. Der Schlüssel ist nur zusammen mit ihr gültig.",
	"api_f_title": "Der Name, den die Aktivität in deinem Dashboard bekommt. Lässt du ihn weg, nimmt der Endpunkt seinen eigenen Ersatznamen.",
	"api_f_language": "Bestimmt nur die Sprache in der URL, die du zurückbekommst — es übersetzt nichts von dem, was du schickst. Das Wortsuchrätsel liest es außerdem, um seine Füllbuchstaben auf Arabisch umzustellen, wenn es \"ar\" ist.",
	"api_f_activity_key": "Lass es weg, um eine neue Aktivität zu erstellen. Gib den Schlüssel einer Aktivität an, die dir schon gehört, und diese wird stattdessen neu aufgebaut.",
	"api_f_sentence_cryptogram": "Der Satz, der verschlüsselt wird. Spieler entschlüsseln ihn Zeichen für Zeichen.",
	"api_f_sentence_calculation": "Der Satz, den Spieler aufdecken, indem sie die Rechenaufgaben lösen.",
	"api_f_image": "Absolute URL des Bildes, das zerschnitten wird. Wird auf oberster Ebene geschickt, nicht in settings.",
	"api_f_image_setting": "Absolute URL des Bildes, das zerlegt wird. Anders als beim Puzzle steht es hier in settings.",
	"api_s_response_title": "Was zurückkommt",
	"api_s_response_body": "Ein erfolgreicher Aufruf antwortet mit 200, dem Schlüssel der neuen Aktivität und der URL, unter der sie gespielt wird. Alles andere antwortet mit success auf false und einem einzelnen error-String.",
	"api_response_success": "Erfolg",
	"api_response_error": "Fehler",
	"api_s_response_urls": "Die url, die du zurückbekommst, ist die Einbettungsansicht. Ersetz embed durch play, um sie als ganze Seite zu öffnen, oder durch build, um sie im Editor zu öffnen — der Schlüssel hinter p= bleibt gleich.",
	"api_s_updating_title": "Erstellen vs. Aktualisieren",
	"api_s_updating_body": "Wenn du activity_key mitsendest, wird die bestehende Aktivität aktualisiert: Ihr Inhalt wird ersetzt, Name und Versionsstempel werden aktualisiert. Der Schlüssel bleibt gleich, sodass bereits geteilte Links und Einbettungen weiter funktionieren. Ergebnisse, die Zuordnung zu einem Ordner und Einstellungen, die der Endpunkt nicht überschreibt, bleiben erhalten.",
	"api_s_updating_own": "Du kannst nur Aktivitäten aktualisieren, die deinem eigenen Konto gehören. Der Schlüssel einer fremden Aktivität antwortet mit 403.",
	"api_s_updating_name": "title wird bei jeder Aktualisierung angewendet, sein Standard eingeschlossen — lässt du es weg, wird die Aktivität in den Ersatznamen dieses Endpunkts umbenannt.",
	"api_s_updating_settings": "Die Einstellungsblöcke, die ein Endpunkt selbst schreibt, werden von Grund auf neu geschrieben. Eine Aktualisierung setzt sie also ebenfalls auf die Werte, die du schickst, oder auf die Standardwerte des Endpunkts.",
	"api_s_updating_quota": "Eine Aktualisierung kostet genauso viel wie ein Erstellen: einen Aufruf vom heutigen Kontingent.",
	"api_s_limits_title": "Rate-Limit",
	"api_s_limits_body": "Jeder erfolgreiche Aufruf zählt, erstellen wie aktualisieren. Gehst du darüber, antwortet die nächste Anfrage mit 429, bis der Zähler zurückgesetzt ist.",
	"api_s_limits_counter": "[limit] Aktivitäten pro Konto und Tag",
	"api_s_limits_reset": "Der Zähler wird einmal am Tag von einem geplanten Job geleert, nicht in einem gleitenden 24-Stunden-Fenster.",
	"api_s_errors_title": "Fehler",
	"api_s_errors_body": "Fehler kommen immer als JSON mit denselben zwei Feldern, nie als HTML-Seite. Der error-String ist so geschrieben, dass ein Mensch ihn lesen kann — er nennt das Feld oder das Limit, an dem es gescheitert ist.",
	"api_err_400": "Im Body fehlt etwas, ist fehlerhaft oder außerhalb des zulässigen Bereichs. Die Meldung nennt das Feld.",
	"api_err_401": "Die E-Mail-Adresse ist unbekannt oder der Schlüssel gehört nicht zu diesem Konto.",
	"api_err_403": "Der activity_key, den du geschickt hast, gehört zu einem anderen Konto.",
	"api_err_429": "Das heutige Kontingent ist aufgebraucht. Es wird einmal am Tag zurückgesetzt.",
	"api_err_500": "Der Generator konnte aus dem, was du geschickt hast, kein Rätsel bauen — meist zu wenige Wörter oder Wörter, die sich nicht zusammenfügen lassen.",
	"api_endpoints_title": "Endpunkte",
	"api_endpoints_intro": "Ein Pfad pro Aktivitätstyp, alle POST, alle unter derselben Basis-URL. Bei jedem stehen die Inhalte, die er braucht, die Einstellungen, die er liest, und eine Anfrage, die du ausführen kannst.",
	"api_group_words": "Wörter & Buchstaben",
	"api_group_cards": "Karten & Paare",
	"api_group_questions": "Fragen & Antworten",
	"api_group_text": "Sätze & Zahlen",
	"api_group_images": "Bilder",
	"api_ep_content_label": "Inhalt",
	"api_ep_settings_label": "Einstellungen, die er liest",
	"api_ep_settings_none": "Dieser Endpunkt liest keine Einstellungen.",
	"api_ep_example_label": "Beispielanfrage",
	"api_ep_notes_label": "Gut zu wissen",
	"api_ep_min_items": "Mindestens [count] in items",
	"api_ep_no_items": "Nimmt keine items",
	"api_ep_default_title": "Nutzt ersatzweise den Namen “[title]”",
	"api_copy": "Kopieren",
	"api_copied": "Kopiert",
	"api_toast_copied": "In die Zwischenablage kopiert",
	"api_ep_open_builder": "Editor öffnen",
	"api_ep_back_to_top": "Nach oben",
	"api_e_crossword": "Verzahnt deine Antworten zu einem Raster und nummeriert die Hinweise für dich.",
	"api_c_crossword": "Ein Array aus Wörtern. Jeder Eintrag verbindet die Antwort mit dem Hinweis, der auf sie zeigt.",
	"api_note_crossword_length": "Antworten mit weniger als zwei Zeichen fallen raus, bevor das Raster gebaut wird, und mindestens zwei müssen das überstehen.",
	"api_note_crossword_layout": "Antworten werden in Großbuchstaben umgewandelt und der Generator hat zwanzig Versuche, sie unterzubringen. Kann er kein einziges Wort platzieren, antwortet der Aufruf mit 500.",
	"api_e_wordseeker": "Versteckt deine Wörter in einem Buchstabenraster, in den Richtungen und der Form, die du wählst.",
	"api_c_wordseeker": "Ein Array aus Wörtern. Der Hinweistext wird zur Wortliste, mit der die Spieler arbeiten.",
	"api_note_wordseeker_length": "Antworten unter zwei Zeichen fallen raus, und jede Antwort wird in Großbuchstaben umgewandelt, bevor sie ins Raster kommt.",
	"api_note_wordseeker_arabic": "Das Raster wird mit lateinischen Buchstaben aufgefüllt, es sei denn, language ist \"ar\" — dann sind die Füllbuchstaben arabisch.",
	"api_set_wordseeker_hidden_solution": "Die übrigen Buchstaben ergeben diese Lösung. Setzt du sie, baut der Generator außerdem zuerst die Lösung ein, statt so viele Wörter wie möglich unterzubringen.",
	"api_set_wordseeker_directions": "In welche Richtungen ein Wort verlaufen darf. Lässt du es weg, verlaufen Wörter nur nach Osten, Südosten und Süden.",
	"api_set_wordseeker_template": "Schneidet das Raster in eine Form, statt es quadratisch zu lassen.",
	"api_e_acrostic": "Stapelt deine Antworten so, dass eine Spalte ein verstecktes Wort ergibt.",
	"api_c_acrostic": "Ein Array aus Wörtern. Zusammen müssen sie jeden Buchstaben des versteckten Wortes liefern.",
	"api_set_acrostic_hidden_solution": "Das Wort, das die hervorgehobene Spalte ergibt. Ohne es läuft dieser Endpunkt nicht.",
	"api_note_acrostic_letters": "Können die Antworten die Buchstaben der Lösung nicht liefern, antwortet der Aufruf mit 500, statt ein halbfertiges Raster zu speichern.",
	"api_note_acrostic_order": "Der Generator sortiert deine Antworten um, damit die Spalte aufgeht, die Reihenfolge, die du schickst, ist also nicht die, die Spieler sehen.",
	"api_e_word-scramble": "Würfelt die Buchstaben jeder Antwort durcheinander, damit Spieler sie ordnen.",
	"api_c_word-scramble": "Ein Array aus Wörtern. Der Hinweis steht neben den durcheinandergewürfelten Buchstaben.",
	"api_set_scramble_hidden_solution": "Ein optionales Bonuswort, das Spieler eingeben, sobald der Rest gelöst ist.",
	"api_note_scramble_random": "Über die API erstellte Aktivitäten haben die Einstellung zum Mischen der Reihenfolge immer an, die Reihenfolge, die du schickst, ist also nicht die, die Spieler bekommen.",
	"api_e_hangman": "Macht aus deinen Wörtern oder Sätzen Runden zum Buchstabenraten.",
	"api_c_hangman": "Ein Array aus Wörtern oder kurzen Sätzen. Der Hinweis ist der Tipp, den Spieler sehen.",
	"api_e_wordle": "Macht aus jedem Wort, das du schickst, ein Ratespiel.",
	"api_c_wordle": "Ein Array aus Wörtern. Spieler bekommen eine Runde pro Wort.",
	"api_note_wordle_dictionary": "Wird mit der Einstellung erstellt, die prüft, ob die geratenen Wörter echt sind. Schalte sie im Editor aus, wenn deine Wörter Namen oder erfunden sind.",
	"api_e_typing-practice": "Macht aus Sätzen Tippübungen.",
	"api_c_typing-practice": "Ein Array aus Wörtern oder Sätzen zum Abtippen. Das Hinweisfeld dient zugleich als Anweisung.",
	"api_e_wheel-of-fortune": "Füllt ein drehendes Rad mit deinen eigenen Segmenten.",
	"api_c_wheel-of-fortune": "Ein Array aus Segmenten. Jede Antwort wird zu einem Feld des Rads.",
	"api_note_wheel_outcome": "Wird mit “Ergebnis nur im Rad anzeigen” erstellt, das Ergebnis wird also am Rad abgelesen und nicht daneben angesagt.",
	"api_e_memory": "Verdeckte Karten, die umgedreht und zu Paaren zusammengeführt werden.",
	"api_c_memory": "Ein Array aus Paaren. Jedes Paar enthält die zwei Karten, die zusammengehören.",
	"api_note_cards_media": "Eine Karte ist ein Objekt mit type und value. Nimm \"text\" für Wörter oder \"image\", \"audio\", \"youtube\" bzw. \"link\" mit einer URL in value, und ergänze alt für eine Beschreibung.",
	"api_e_matching-pairs": "Zwei Spalten mit Karten, die zusammengezogen werden.",
	"api_c_matching-pairs": "Ein Array aus Paaren. Die erste Karte jedes Paares landet auf der einen Seite, ihr Partner auf der anderen.",
	"api_e_flash-cards": "Zweiseitige Karten zum Durchblättern.",
	"api_c_flash-cards": "Ein Array aus Karten. Die erste Karte ist die Vorderseite, die zweite die Rückseite.",
	"api_note_flashcards_sides": "Der Endpunkt speichert so viele Karten, wie du schickst, schick also genau zwei pro Eintrag — Vorderseite, dann Rückseite.",
	"api_e_categorize": "Karten, die in die passende Kategorie sortiert werden.",
	"api_c_categorize": "Ein Array aus Kategorien, jede mit einem Namen und den Karten, die dazugehören.",
	"api_note_categorize_name": "Eine Kategorie ohne Namen wird als “Untitled Category” gespeichert, schick also immer einen.",
	"api_e_reorder": "Eine Reihenfolge, die Spieler wiederherstellen müssen.",
	"api_c_reorder": "Ein Array aus Reihenfolgen. Jede enthält ihre Karten in der richtigen Reihenfolge.",
	"api_note_reorder_order": "Die Reihenfolge, die du schickst, wird als die richtige gespeichert — Nummer eins zuerst.",
	"api_e_quiz": "Multiple-Choice-Fragen und offene Fragen, die beim Spielen direkt bewertet werden.",
	"api_c_quiz": "Ein Array aus Fragen. Multiple-Choice-Fragen bringen ihre Antworten mit, offene Fragen die Antwort, die du gelten lässt.",
	"api_note_question_types": "question_type kann \"multiple_choice\" oder \"open_answer\" sein. Bei \"multiple_choice\" kennzeichnest du die richtige Option mit isCorrect: true. Bei \"open_answer\" gibst du die Lösung in correct_answer an. Ohne question_type wird die Frage als Multiple Choice behandelt.",
	"api_note_quiz_settings": "Der quiz-Endpunkt reicht settings direkt als Einstellungsblöcke der Aktivität durch, es ist also kein Ort für lose Optionen — pass das Quiz danach im Editor an.",
	"api_e_board-game": "Ein Brett, über das gerannt wird, mit deinen Fragen auf den Feldern.",
	"api_c_board-game": "Ein Array aus Fragen, genau in der Form, die der quiz-Endpunkt nimmt.",
	"api_set_board_tiles": "Wie viele Felder das Brett hat. Zwischen 10 und 75.",
	"api_set_board_mode": "Ob Spieler zum Ziel rennen oder unterwegs Gegenstände sammeln.",
	"api_e_cryptogram": "Macht aus einem Satz einen Code zum Knacken, Zeichen für Zeichen.",
	"api_c_cryptogram": "Ein Satz, im Feld sentence. Dieser Endpunkt nimmt keine items.",
	"api_note_cryptogram_no_items": "Alles, was du in items schickst, wird ignoriert — das Rätsel entsteht allein aus sentence.",
	"api_set_cryptogram_helpers": "Welche Zeichen als Einstieg von vornherein verraten werden: keine, die häufigsten, die Vokale oder die, die du selbst angibst.",
	"api_set_cryptogram_character_list": "Das Alphabet, aus dem die Verschlüsselung gebaut wird. Bleibt es leer, wählt die Verschlüsselung ihr eigenes.",
	"api_set_cryptogram_extra_letters": "Die Zeichen, die verraten werden, wenn helpers auf \"custom\" steht. Bei den anderen Hilfe-Modi wird es ignoriert.",
	"api_set_cryptogram_hide_unused": "Lässt Zeichen, die im Satz nie vorkommen, aus der Legende weg.",
	"api_e_calculation": "Versteckt einen Satz hinter Rechenaufgaben — löse die Aufgabe, deck den Buchstaben auf.",
	"api_c_calculation": "Ein Satz, im Feld sentence. Dieser Endpunkt nimmt keine items.",
	"api_set_calc_difficulty": "Das höchste Ergebnis, das eine Rechenaufgabe haben darf.",
	"api_set_calc_operators": "Welche Rechenarten vorkommen dürfen. x ist mal, : ist geteilt.",
	"api_set_calc_max_operations": "Wie viele Rechenschritte eine Aufgabe aneinanderreihen darf.",
	"api_set_calc_number_difficulty": "Begrenzt die einzelnen Zahlen in einer Aufgabe. Von 5 bis 1000.",
	"api_note_calculation_fit": "Sind die Vorgaben zu eng, um den Satz zu verschlüsseln, antwortet der Aufruf mit 400 und bittet dich, sie zu lockern, statt ein halbes Rätsel zu speichern.",
	"api_e_sudoku": "Erzeugt ein gelöstes Raster und nimmt dann wieder Zahlen heraus.",
	"api_c_sudoku": "Nichts. Das ganze Rätsel entsteht aus seinen zwei Einstellungen.",
	"api_note_sudoku_no_items": "Schick keine items und kein sentence — size und difficulty sind die gesamte Eingabe.",
	"api_note_sudoku_difficulty_sizes": "Der Editor bietet die Schwierigkeit nur für 2x3, 3x3 und 3x4 an. Die API wendet sie auf jede Größe an, 2x2 und 4x4 eingeschlossen.",
	"api_set_sudoku_size": "Die Größe eines Blocks, geschrieben als Zeilen mal Spalten — 3x3 ergibt das klassische 9x9-Raster. Der Endpunkt prüft nur, ob sich das als zwei Zahlen lesen lässt, bleib also bei den Größen, die der Editor anbietet.",
	"api_set_sudoku_difficulty": "Wie viele Zahlen zu Beginn im Raster stehen bleiben.",
	"api_e_jigsaw": "Zerschneidet ein Bild in Teile, die wieder zusammengezogen werden.",
	"api_c_jigsaw": "Eine Bild-URL, im Feld image. Dieser Endpunkt nimmt keine items.",
	"api_note_jigsaw_grid": "Die API erstellt immer ein Puzzle mit 4 mal 4 Teilen. Teilezahl, unregelmäßige Teile und glatte Ränder sind Einstellungen im Editor — rows oder columns hierher zu schicken bewirkt nichts.",
	"api_note_image_reachable": "Die URL wird so gespeichert, wie du sie geschickt hast, und die Datei wird nie kopiert. Sie muss also öffentlich erreichbar bleiben, solange die Aktivität gespielt wird.",
	"api_e_slidingpuzzle": "Zerlegt ein Bild in Kacheln, die an ihren Platz geschoben werden.",
	"api_c_slidingpuzzle": "Eine Bild-URL, in settings. Dieser Endpunkt nimmt keine items.",
	"api_note_sliding_image_slot": "Anders als beim Puzzle liest dieser Endpunkt sein Bild aus settings.image. Ein image-Feld auf oberster Ebene wird ignoriert und der Aufruf antwortet mit 400.",
	"api_help_title": "Etwas macht nicht, was es soll?",
	"api_help_body": "Schick deine Anfrage und die erhaltene Fehlermeldung. Du bekommst persönlich Hilfe von der Person, die den Endpunkt entwickelt hat.",
	"api_help_cta": "Support per E-Mail",
	"api_int_kicker": "Entwickler-Integrationen",
	"api_int_title": "Puzzel in deine eigene Plattform einbinden",
	"api_int_intro": "Puzzel kann das Ergebnis eines Spielers direkt an ein anderes System übergeben — die Punktzahl, wie weit er gekommen ist, was er geantwortet hat —, ohne dass dieses System ein vollständiges LMS sein muss. Diese Seite zeigt jeden Kanal, den es gibt: was rausgeht, wann es rausgeht, und das Kleinste, was du bauen musst, um es aufzufangen.",
	"api_int_hero_out_label": "Ergebnisse gehen raus über",
	"api_int_hero_out_value": "Einen Webhook oder eine Nachricht an die Seite rund um die Aktivität",
	"api_int_hero_in_label": "Deine Seite kann",
	"api_int_hero_in_value": "Den Spieler anmelden und die Aktivität zurücksetzen",
	"api_int_hero_where_label": "Aktiviert",
	"api_int_hero_where_value": "Pro Aktivität, unter Entwickler im Editor",
	"api_int_hero_plan_label": "Enthalten bei",
	"api_int_hero_plan_value": "Einem bezahlten Tarif — bei einem kostenlosen Konto sind diese Einstellungen deaktiviert",
	"api_int_search_placeholder": "Kanäle, Felder und Beispiele durchsuchen",
	"api_int_search_empty": "Dazu passt nichts auf dieser Seite. Versuch es mit einem Kanal wie webhook oder postMessage, oder einem Feld wie progress.",
	"api_int_nav_channels": "Kanäle",
	"api_int_s_choose_title": "Welchen Kanal brauchst du?",
	"api_int_s_choose_body": "Drei Dinge können eine Aktivität verlassen, eines kann hineinkommen. Was passt, hängt von einer einzigen Frage ab: Sitzt der Spieler auf deiner eigenen Seite oder ganz woanders?",
	"api_int_choose_out": "Aus Puzzel heraus",
	"api_int_choose_in": "In Puzzel hinein",
	"api_int_choose_when": "Nutze es, wenn",
	"api_int_choose_needs": "Du brauchst",
	"api_int_choose_setting": "Einstellung",
	"api_int_ch_webhook_name": "Ergebnis-Webhook",
	"api_int_ch_webhook_summary": "Jedes gespeicherte Ergebnis wird als JSON per POST an eine URL deiner Wahl geschickt.",
	"api_int_ch_webhook_when": "Der Spieler kann überall sein — ein geteilter Link, ein QR-Code, die Seite von jemand anderem — und du willst das Ergebnis in deiner eigenen Datenbank.",
	"api_int_ch_webhook_needs": "Einen HTTPS-Endpunkt, der einen Cross-Origin-POST annimmt.",
	"api_int_ch_parent_name": "Ergebnisse an die umgebende Seite",
	"api_int_ch_parent_summary": "Dasselbe JSON, gesendet an die Seite, die die Aktivität einbettet, statt an einen Server.",
	"api_int_ch_parent_when": "Du bettest die Aktivität in deine eigene Kursseite ein, und die Seite selbst kann mit dem Ergebnis etwas anfangen.",
	"api_int_ch_parent_needs": "Ein iframe auf deiner Seite und ein Message-Listener. Kein Server, kein CORS.",
	"api_int_ch_completion_name": "Abschlusssignal",
	"api_int_ch_completion_summary": "Eine Nachricht, wenn der Spieler fertig ist — sie enthält nichts außer genau dieser Tatsache.",
	"api_int_ch_completion_when": "Du willst nur wissen, ob er fertig ist — um die Lektion abzuhaken, die nächste freizuschalten oder deinen eigenen Bildschirm zu zeigen.",
	"api_int_ch_completion_needs": "Ein iframe auf deiner Seite und ein Message-Listener.",
	"api_int_ch_trigger_name": "Zurücksetzen von deiner Seite aus",
	"api_int_ch_trigger_summary": "Deine Seite sagt der eingebetteten Aktivität, die Antworten des Spielers zu löschen und von vorn zu beginnen.",
	"api_int_ch_trigger_when": "Du hast außerhalb der Aktivität eine eigene \"Nochmal versuchen\"-Schaltfläche.",
	"api_int_ch_trigger_needs": "Ein iframe auf deiner Seite. Die Nachricht wird nur von der einbettenden Seite angenommen.",
	"api_int_s_webhook_title": "Ergebnis-Webhook",
	"api_int_s_webhook_body": "Aktivier \"Ergebnisse an einen Webhook senden\" im Editor und gib eine URL an. Von da an sendet der Browser des Spielers bei jedem Speichern des Fortschritts das komplette Ergebnis als JSON per POST an diese URL.",
	"api_int_webhook_steps_title": "Einrichtung",
	"api_int_webhook_step_1": "Öffne die Aktivität im Editor und geh zum Menü Entwickler.",
	"api_int_webhook_step_2": "Aktivier \"Ergebnisse an einen Webhook senden\" und füg deinen Endpunkt in das Feld darunter ein. Es muss eine vollständige URL sein — eine reine Domain wird abgelehnt — und sie muss https sein, weil der Browser einen reinen HTTP-Aufruf von einer über https ausgelieferten Seite aus blockiert.",
	"api_int_webhook_step_3": "Spiel die Aktivität einmal selbst durch. Der erste POST kommt an, sobald du etwas beantwortest.",
	"api_int_webhook_receiver": "Ein Empfänger, von Anfang bis Ende",
	"api_int_webhook_timing_title": "Es feuert während des Spielens, nicht erst am Ende",
	"api_int_webhook_timing_body": "Ein Ergebnis geht jedes Mal raus, wenn der Eintrag gespeichert wird: nach einer Tipppause, wenn eine Karte platziert wird, wenn die Uhr stoppt, und noch einmal, wenn die Aktivität abgeschlossen ist. Bei einem langen Kreuzworträtsel sind das ein paar Dutzend Aufrufe, nicht einer — schreib deinen Handler also als Upsert mit playerUid und activityKey als Schlüssel, nicht als Insert. Jeder Aufruf enthält den vollständigen Zustand, sodass der neueste immer den letzten ersetzt und ein verlorener Aufruf vom nächsten wieder ausgeglichen wird.",
	"api_int_webhook_finished_title": "Einen Abschluss von einem normalen Speichern unterscheiden",
	"api_int_webhook_finished_body": "progress ist ein Prozentwert: 100 bedeutet, die Aktivität ist abgeschlossen. Ein paar Typen können enden, ohne das zu erreichen — ein bis zum Ende beantwortetes Quiz, ein gelöstes Lösungsfeld — und tragen stattdessen hasAlternateCompletion. Behandle beides als abgeschlossen.",
	"api_int_webhook_cors_title": "Es wird vom Browser des Spielers gesendet",
	"api_int_webhook_cors_body": "Der POST kommt aus dem Tab, in dem die Aktivität gespielt wird, nicht von einem Puzzel-Server. Die meisten Endpunkte, die für den Empfang von Webhooks gebaut wurden, akzeptieren das bereits. Wenn deiner nie eine Anfrage sieht, liegt es daran: Der Browser fragt zuerst um Erlaubnis, also beantworte den OPTIONS-Preflight mit einem Access-Control-Allow-Origin-Header, dann folgt der eigentliche POST.",
	"api_int_webhook_trust_title": "Behandle die Nutzdaten als Behauptung, nicht als Beweis",
	"api_int_webhook_trust_body": "Die Anfrage trägt keine Signatur und kommt aus einem Browser, den du nicht kontrollierst — jeder, der sich die Seite ansieht, kann dir also auch eine schicken. Das ist völlig in Ordnung, um einen Fortschrittsbalken oder ein Dashboard zu füllen. Für alles, was du einen Schüler nicht selbst festlegen lassen würdest — eine zählende Note, ein Zertifikat, eine Zahlung — gleich es mit den Ergebnissen in deinem eigenen Puzzel-Dashboard ab, oder lass stattdessen die LMS-Notenanbindung die Punktzahl übertragen.",
	"api_int_s_parent_title": "Ergebnisse an die umgebende Seite",
	"api_int_s_parent_body": "Wenn du die Aktivität einbettest, kannst du dasselbe JSON an deine eigene Seite senden lassen statt an einen Server. Aktivier \"Ergebnisse an die übergeordnete Seite senden\" und lausche auf die Nachricht. Nichts verlässt den Browser, also musst du keinen Endpunkt bauen und dir keine Gedanken über CORS machen.",
	"api_int_parent_origin_title": "Prüfe, woher die Nachricht kommt",
	"api_int_parent_origin_body": "Dein Listener hört jede Nachricht, die an die Seite gesendet wird — auch von anderen Frames und Browser-Erweiterungen. Vergleich event.origin mit https://puzzel.org, bevor du dem Inhalt vertraust.",
	"api_int_parent_same_title": "Dieselben Nutzdaten, derselbe Zeitpunkt",
	"api_int_parent_same_body": "Das ist das Gegenstück zum Webhook: dieselben Felder, gesendet zu denselben Zeitpunkten. Alles unter \"Was ein Ergebnis enthält\" gilt auch hier.",
	"api_int_s_completion_title": "Abschlusssignal",
	"api_int_s_completion_body": "Der kleinste Kanal, für den Fall, dass dich das Ergebnis selbst nichts angeht: Aktivier \"Abschlusssignal senden\" und deine Seite bekommt eine Nachricht in dem Moment, in dem der Spieler fertig ist.",
	"api_int_completion_shape": "Was ankommt",
	"api_int_completion_order_title": "Das Ergebnis ist bereits gespeichert, wenn es ankommt",
	"api_int_completion_order_body": "Das Signal wird bewusst erst gesendet, nachdem der abschließende Speichervorgang abgeschlossen ist — eine Seite, die daraufhin das Ergebnis abruft, findet es dort bereits vor.",
	"api_int_completion_embed_title": "Nur innerhalb eines iframe",
	"api_int_completion_embed_body": "Beide Nachrichtenkanäle senden an die Seite, die die Aktivität einbettet. In einem eigenen Tab geöffnet gibt es niemanden, dem man es mitteilen könnte — also wird nichts gesendet.",
	"api_int_s_payload_title": "Was ein Ergebnis enthält",
	"api_int_s_payload_body": "Eine Form, egal welcher Kanal sie trägt. Die Antworten des Spielers sind nach den eigenen Element-IDs der Aktivität geschlüsselt, sodass dieselben Schlüssel auch in correctUids auftauchen.",
	"api_int_col_when": "Wann es vorhanden ist",
	"api_int_always": "immer",
	"api_int_sometimes": "manchmal",
	"api_int_payload_absent_title": "Fehlend, nicht leer",
	"api_int_payload_absent_body": "Ein Feld, das nicht zutrifft, wird aus dem JSON weggelassen, statt als null oder 0 gesendet zu werden. So unterscheidet sich ein Typ, der einen Durchlauf gar nicht bewertet, von einem Durchlauf, der null Punkte erzielt hat — lies also immer mit einem Standardwert und geh nie davon aus, dass ein Schlüssel vorhanden ist.",
	"api_int_payload_example": "Ein abgeschlossenes Quiz, so wie es ankommt",
	"api_int_f_activity_key": "Die Aktivität, zu der das Ergebnis gehört. Derselbe Schlüssel, den du in der URL der Aktivität selbst siehst, nach ?p=.",
	"api_int_f_player_uid": "Wer gespielt hat, als anonyme ID. Für diesen Spieler auf diesem Gerät stabil, also der Wert, über den du Ergebnisse zuordnest — keine E-Mail-Adresse und kein Puzzel-Konto.",
	"api_int_f_player": "Die Registrierungsfelder, nach denen die Aktivität fragt, so wie du sie konfiguriert hast: name, email, class, student_id und so weiter. Fehlt, solange sich der Spieler nicht registriert hat, und fehlt komplett bei einer Aktivität, die nichts abfragt.",
	"api_int_f_progress": "Wie weit fortgeschritten, als Prozentwert. 100 bedeutet fertig.",
	"api_int_f_time_passed": "Zeit auf der Aktivität, in Millisekunden.",
	"api_int_f_last_played_at": "Wann dieses Ergebnis gespeichert wurde, als Unix-Zeitstempel in Millisekunden.",
	"api_int_f_created": "Wann der Versuch begonnen wurde, als Unix-Zeitstempel in Millisekunden.",
	"api_int_f_player_input": "Was der Spieler tatsächlich eingegeben hat, geschlüsselt nach der ID des zugehörigen Elements. Die Form darin hängt vom Aktivitätstyp ab — ein Wort, eine Liste platzierter Karten, eine gewählte Option.",
	"api_int_f_correct_uids": "Welche dieser Elemente richtig sind, auf dieselbe Weise geschlüsselt. Fehlt, solange noch nichts beantwortet wurde.",
	"api_int_f_score": "Erzielte Punkte, bei den Typen, die einen Durchlauf bewerten. Fehlt überall sonst — auch bei einem Durchlauf, der tatsächlich null Punkte erzielt hat, also prüf, ob der Schlüssel existiert, bevor du ihn ausliest.",
	"api_int_f_performance": "Das eigene Maß eines Typs dafür, wie gut es lief, sofern er eines führt — zum Beispiel Wörter pro Minute beim Tipptraining.",
	"api_int_f_attempts": "Der wievielte Durchlauf das ist: 1 beim ersten Mal, jeweils eins mehr bei jedem Neustart. Nur bei Typen, die einen Durchlauf vorzeitig beenden und die Versuche zählen.",
	"api_int_f_knocked_out": "Der Durchlauf endete bei einer falschen Antwort und ist vorbei, ohne abgeschlossen zu sein.",
	"api_int_f_alternate": "Die Aktivität wurde auf eine Weise beendet, die nicht 100 % erreicht — ein bis zum Ende beantwortetes Quiz, ein gelöstes Lösungsfeld. Behandle das als Abschluss.",
	"api_int_f_missed_keys": "Zeichen, die der Spieler immer wieder falsch getippt hat, die häufigsten zuerst. Nur beim Tipptraining.",
	"api_int_f_content_version": "Gegen welche Version des Aktivitätsinhalts das gespielt wurde. Sie ändert sich, wenn der Eigentümer die Fragen bearbeitet, sodass sich ein altes Ergebnis von einem aktuellen unterscheiden lässt.",
	"api_int_s_control_title": "Die Aktivität von deiner Seite aus zurücksetzen",
	"api_int_s_control_body": "Eine Anweisung geht den umgekehrten Weg. Ist \"Auslöser von der übergeordneten Seite annehmen\" aktiviert, kann die einbettende Seite die Antworten des Spielers löschen und die Aktivität auf den Anfang zurücksetzen — für eine eigene \"Nochmal versuchen\"-Schaltfläche außerhalb des Frames.",
	"api_int_control_only_title": "Zurücksetzen ist der einzige Auslöser",
	"api_int_control_only_body": "Es gibt keine Nachricht zum Einreichen eines Ergebnisses, zum Öffnen der Abschlussnachricht oder zum Springen zu einer Frage. Eine Nachricht, die etwas anderes als ein Zurücksetzen verlangt, wird ignoriert.",
	"api_int_control_guard_title": "Nur die einbettende Seite wird gehört",
	"api_int_control_guard_body": "Der Auslöser wird nur von der Seite akzeptiert, die die Aktivität einbettet, und von nirgendwo sonst — kein benachbarter Frame, kein Skript auf der Seite. Die Einstellung ist standardmäßig deaktiviert, also aktivier sie für die Aktivitäten, die du steuerst.",
	"api_int_s_identity_title": "Deine eigene Spieleridentität mitbringen",
	"api_int_s_identity_body": "Wenn deine Plattform schon weiß, wer spielt, muss die Aktivität nicht noch einmal danach fragen. Es gibt zwei Handshakes, beide für eine Aktivität innerhalb deiner Seite, und beide werden von uns aktiviert statt im Editor — sie ändern, wem ein Ergebnis zugeordnet wird, deshalb werden sie gemeinsam mit dir eingerichtet und nicht über eine Checkbox.",
	"api_int_identity_pm_title": "Den Spieler an uns senden",
	"api_int_identity_pm_body": "Die Aktivität meldet sich mit 'app-loaded' und wartet. Deine Seite sendet die Angaben des Spielers zurück, und das Ergebnis wird unter ihnen abgelegt, ohne dass der Spieler etwas eintippen oder einen Registrierungsbildschirm sehen muss.",
	"api_int_identity_sso_title": "Ein Token an uns senden",
	"api_int_identity_sso_body": "Derselbe Handshake, aber deine Seite sendet statt der einzelnen Felder das JWT, das dein Identity-Provider ausgestellt hat. Wir prüfen es gegen die für dein Konto eingerichteten Aussteller, bevor der Spieler hereingelassen wird — die Identität ist also nachgewiesen und nicht nur behauptet. Das ist die richtige Wahl, wenn das Ergebnis vertrauenswürdig sein muss.",
	"api_int_identity_cta_title": "Bitte uns, es zu aktivieren",
	"api_int_identity_cta_body": "Sag uns, welche der beiden Varianten du möchtest und wo die Aktivitäten eingebettet werden, und wir richten dein Konto ein und gehen es gemeinsam mit dir durch.",
	"api_int_identity_cta_button": "E-Mail zum Thema Identität senden",
	"api_int_s_create_title": "Aktivitäten aus deinem eigenen System erstellen",
	"api_int_s_create_body": "Alles oben dreht sich darum, dass ein Ergebnis rauskommt. Der umgekehrte Weg — die Aktivitäten selbst aus Inhalten zu erstellen, die du schon hast — ist die Puzzle-API: ein POST pro Aktivitätstyp, und du bekommst einen Schlüssel und eine URL zum Einbetten zurück.",
	"api_int_create_link": "API-Referenz lesen",
	"api_int_s_lms_title": "Wenn ein fertiger Connector die bessere Antwort ist",
	"api_int_s_lms_body": "Wenn die Plattform auf der anderen Seite ein echtes LMS ist, brauchst du wahrscheinlich nichts von alldem. Noten können von allein ins Notenbuch zurückfließen, ohne dass du etwas hosten musst.",
	"api_int_lms_lti_title": "Moodle, Canvas, Brightspace, Schoology, itslearning",
	"api_int_lms_lti_body": "Gestartet aus dem LMS heraus, mit der Punktzahl, die zurück ins Notenbuch geschrieben wird.",
	"api_int_lms_gc_title": "Google Classroom",
	"api_int_lms_gc_body": "Eine Aktivität als Aufgabe posten und die Noten automatisch zurückbekommen.",
	"api_int_lms_not_title": "Keins von diesen?",
	"api_int_lms_not_body": "Kursplattformen, Mitgliederseiten, Intranets und alles, was du selbst gebaut hast, sind genau das, wofür die Kanäle auf dieser Seite da sind. Eine Einbettung plus Abschlusssignal deckt das meiste davon ab.",
	"api_int_s_limits_title": "Was es nicht gibt",
	"api_int_s_limits_body": "Damit du nicht danach suchst:",
	"api_int_limit_no_read": "Kein Endpunkt zum Auslesen von Ergebnissen. Die API erstellt Aktivitäten; Ergebnisse verlassen das System über die Kanäle auf dieser Seite oder über die Exporte in deinem Dashboard.",
	"api_int_limit_no_signature": "Keine Signatur beim Webhook. Es gibt nichts, wogegen du die Anfrage prüfen könntest — deshalb sollte ein Ergebnis nie das Einzige sein, was hinter etwas Wichtigem steht.",
	"api_int_limit_per_activity": "Kein kontoweiter Webhook. Die URL ist eine Einstellung an einer Aktivität — eine kopierte Aktivität übernimmt sie, eine neue startet ohne sie.",
	"api_int_limit_no_multiplayer": "Nichts bei einem Team-Spiel oder einem Live-Raum. Beide Nachrichtenkanäle und der Webhook sind für Einzelspiel gedacht, und die Einstellungen schalten sich selbst aus, sobald der Team-Modus aktiv ist.",
	"api_int_limit_no_retry": "Keine Zustellwarteschlange. Nichts wird gespeichert und erneut gesendet — das nächste Speichern ist der Wiederholungsversuch, und der letzte Aufruf des Durchlaufs zählt.",
	"api_nav_integrations": "Ergebnisse wieder herausbekommen"
}
