{
	"api_kicker": "Vývojářské API",
	"api_title": "Vytvářej aktivity z vlastního systému",
	"api_intro": "Jeden POST požadavek na každý typ aktivity. Pošli svůj obsah jako JSON a získáš zpět aktivitu ve svém účtu Puzzel.org a URL adresu, kterou můžeš předat hráčům nebo vložit do iframe.",
	"api_search_placeholder": "Hledat endpointy, pole a nastavení",
	"api_search_results": "odpovídajících této stránce",
	"api_search_empty": "Na této stránce tomu nic neodpovídá. Zkus název endpointu, pole jako activity_key nebo stavový kód.",
	"api_search_clear": "Vymazat hledání",
	"api_nav_guide": "Začínáme",
	"api_nav_endpoints": "Endpointy",
	"api_toc_label": "Na této stránce",
	"api_hero_base_label": "Základní URL",
	"api_hero_method_label": "Metoda",
	"api_hero_method_value": "POST, tělo požadavku JSON",
	"api_hero_auth_label": "Ověření",
	"api_hero_auth_value": "Klíč + e-mail v těle požadavku",
	"api_hero_limit_label": "Kvóta",
	"api_hero_limit_value": "[limit] aktivit denně",
	"api_hero_count_label": "Endpointy",
	"api_hero_count_value": "[count] typů aktivit",
	"api_s_quickstart_title": "Tvůj první požadavek",
	"api_s_quickstart_body": "Nic se neinstaluje a žádné handshake není potřeba: pošli tělo JSON se svým klíčem, e-mailem a obsahem. Odpověď obsahuje klíč nové aktivity a URL adresu, na které se hraje.",
	"api_s_quickstart_note": "Každý příklad na této stránce je kompletní, spustitelný požadavek. Stačí dosadit vlastní klíč a obsah a funguje tak, jak je.",
	"api_s_auth_title": "Ověření",
	"api_s_auth_body": "Nejsou tu žádné hlavičky ani bearer token. Oba údaje cestují v těle JSON každého požadavku a klíč je přijat jen pro účet, ke kterému ten e-mail patří.",
	"api_s_auth_where": "Tvůj klíč najdeš v sekci účtu na nástěnce, za tlačítkem Zobrazit.",
	"api_s_auth_where_link": "Otevřít můj klíč API",
	"api_s_auth_premium": "Klíče API se přidělují při aktivaci předplatného, takže bezplatný účet ho ještě nemá.",
	"api_s_auth_plans": "Zobrazit tarify",
	"api_s_auth_secret": "Zacházej s klíčem jako s heslem. Vytváří a přepisuje aktivity ve tvém účtu, takže ho drž na straně serveru a mimo dosah čehokoliv, co může číst prohlížeč.",
	"api_prefill_kicker": "Příklady",
	"api_prefill_label": "Doplnit příklady mým vlastním klíčem API",
	"api_prefill_signed_out": "Přihlas se a tvůj klíč se doplní do každého příkladu na této stránce.",
	"api_prefill_sign_in": "Přihlásit se",
	"api_prefill_none": "Tento účet zatím nemá klíč API.",
	"api_prefill_warning": "Každý příklad teď obsahuje tvůj skutečný klíč. Nevkládej ho do chatu, issue ani veřejného repozitáře.",
	"api_s_request_title": "Tělo požadavku",
	"api_s_request_body": "Každý endpoint přijímá stejných pět polí. Liší se obsahové pole pod nimi: většina bere pole items, pár z nich jednu větu nebo jeden obrázek, a sudoku nebere vůbec nic.",
	"api_s_request_settings": "settings je objekt s možnostmi pro jednotlivé endpointy. Které z nich endpoint čte, je uvedeno níže u něj; cokoliv dalšího tam vložíš, se ignoruje.",
	"api_col_field": "Pole",
	"api_col_type": "Typ",
	"api_col_notes": "Co dělá",
	"api_col_status": "Stav",
	"api_col_meaning": "Co to znamená",
	"api_required": "povinné",
	"api_optional": "volitelné",
	"api_default_label": "Výchozí",
	"api_allowed_label": "Jedno z",
	"api_in_settings": "v settings",
	"api_f_account_api_key": "Klíč API tvého účtu. Patří do těla požadavku, ne do hlavičky.",
	"api_f_email": "Adresa, kterou se přihlašuje tvůj účet Puzzel.org. Klíč je platný jen společně s ní.",
	"api_f_title": "Název, který aktivita dostane na tvé nástěnce. Když ho vynecháš, endpoint použije svůj vlastní výchozí název.",
	"api_f_language": "Rozhoduje jen o jazykové verzi v URL adrese, kterou dostaneš zpět — nepřekládá nic, co pošleš. Osmisměrka ho navíc používá k přepnutí výplňových písmen na arabštinu, když je \"ar\".",
	"api_f_activity_key": "Vynech ho a vytvoří se nová aktivita. Pošli klíč aktivity, kterou už vlastníš, a místo toho se ta aktivita přestaví.",
	"api_f_sentence_cryptogram": "Věta, která se zašifruje. Hráči ji dekódují znak po znaku.",
	"api_f_sentence_calculation": "Věta, kterou hráči odhalí řešením příkladů.",
	"api_f_image": "Absolutní URL adresa obrázku, který se rozřeže. Posílá se na nejvyšší úrovni, ne uvnitř settings.",
	"api_f_image_setting": "Absolutní URL adresa obrázku, který se rozseká na posuvné dílky. Na rozdíl od puzzle je tahle uvnitř settings.",
	"api_s_response_title": "Co se vrátí",
	"api_s_response_body": "Úspěšné volání odpoví 200 s klíčem nové aktivity a URL adresou, na které se hraje. Cokoliv jiného odpoví se success nastaveným na false a jedním řetězcem s chybou.",
	"api_response_success": "Úspěch",
	"api_response_error": "Selhání",
	"api_s_response_urls": "URL adresa, kterou dostaneš zpět, je pohled embed. Nahraď embed za play a otevřeš ji na celou stránku, nebo za build a otevřeš ji v editoru — klíč za p= zůstává stejný.",
	"api_s_updating_title": "Vytváření vs. aktualizace",
	"api_s_updating_body": "Pošli activity_key a aktivita za ním se přestaví na místě: její obsah se nahradí, název a časové razítko verze se obnoví a samotný klíč zůstává stejný — takže odkazy a vložení, které jsi už sdílel, dál fungují. Výsledky, umístění ve složce a každé nastavení, které endpoint sám nezapisuje, zůstávají beze změny.",
	"api_s_updating_own": "Aktualizovat můžeš jen aktivity, které vlastní tvůj účet. Cizí klíč odpoví 403.",
	"api_s_updating_name": "title se použije při každé aktualizaci, včetně výchozí hodnoty — když ho vynecháš, aktivita se přejmenuje na výchozí název daného endpointu.",
	"api_s_updating_settings": "Bloky nastavení, které endpoint zapisuje sám, se přepíšou od základu, takže aktualizace je zároveň resetuje na hodnoty, které pošleš, nebo na výchozí hodnoty endpointu.",
	"api_s_updating_quota": "Aktualizace stojí stejně jako vytvoření: jedno volání z dnešní kvóty.",
	"api_s_limits_title": "Limit požadavků",
	"api_s_limits_body": "Počítá se každé úspěšné volání, vytvoření i aktualizace stejně. Když limit překročíš, další požadavek odpoví 429, dokud se počítadlo nevynuluje.",
	"api_s_limits_counter": "[limit] aktivit na účet a den",
	"api_s_limits_reset": "Počítadlo vynuluje jednou denně naplánovaná úloha, ne plovoucí 24hodinové okno.",
	"api_s_errors_title": "Chyby",
	"api_s_errors_body": "Chyby vždy přicházejí jako JSON se stejnými dvěma poli, nikdy jako stránka HTML. Řetězec s chybou je napsaný tak, aby ho přečetl člověk — pojmenovává pole nebo limit, který selhal.",
	"api_err_400": "Něco v těle chybí, je špatně formátované nebo mimo rozsah. Zpráva pojmenovává dané pole.",
	"api_err_401": "E-mail není známý, nebo klíč nepatří k danému účtu.",
	"api_err_403": "activity_key, který jsi poslal, patří jinému účtu.",
	"api_err_429": "Dnešní kvóta je vyčerpaná. Vynuluje se jednou denně.",
	"api_err_500": "Generátor nedokázal z toho, co jsi poslal, sestavit hlavolam — obvykle je slov málo, nebo je nejde poskládat dohromady.",
	"api_endpoints_title": "Endpointy",
	"api_endpoints_intro": "Jedna cesta pro každý typ aktivity, všechny POST, všechny pod stejnou základní URL adresou. Ke každé je uvedený obsah, který potřebuje, nastavení, které čte, a požadavek, který si můžeš vyzkoušet.",
	"api_group_words": "Slova a písmena",
	"api_group_cards": "Karty a dvojice",
	"api_group_questions": "Otázky a odpovědi",
	"api_group_text": "Věty a čísla",
	"api_group_images": "Obrázky",
	"api_ep_content_label": "Obsah",
	"api_ep_settings_label": "Nastavení, které čte",
	"api_ep_settings_none": "Tento endpoint nečte žádné nastavení.",
	"api_ep_example_label": "Ukázkový požadavek",
	"api_ep_notes_label": "Co je dobré vědět",
	"api_ep_min_items": "Alespoň [count] v items",
	"api_ep_no_items": "Nebere žádné items",
	"api_ep_default_title": "Bez zadání se použije záložní název “[title]”",
	"api_copy": "Kopírovat",
	"api_copied": "Zkopírováno",
	"api_toast_copied": "Zkopírováno do schránky",
	"api_ep_open_builder": "Otevřít editor",
	"api_ep_back_to_top": "Zpět nahoru",
	"api_e_crossword": "Propojí tvé odpovědi do mřížky a definice očísluje za tebe.",
	"api_c_crossword": "Pole slov. Každá položka spojuje odpověď s definicí, která na ni odkazuje.",
	"api_note_crossword_length": "Odpovědi kratší než dva znaky se před sestavením mřížky vyřadí a alespoň dvě to musí přežít.",
	"api_note_crossword_layout": "Odpovědi se převedou na velká písmena a generátor má dvacet pokusů, jak je umístit. Pokud se mu nepodaří umístit ani jedno slovo, volání odpoví 500.",
	"api_e_wordseeker": "Skryje tvá slova v mřížce písmen ve směrech a tvaru, které si vybereš.",
	"api_c_wordseeker": "Pole slov. Text definice se stane seznamem slov, se kterým hráči pracují.",
	"api_note_wordseeker_length": "Odpovědi kratší než dva znaky se vyřadí a každá odpověď se před vložením do mřížky převede na velká písmena.",
	"api_note_wordseeker_arabic": "Mřížka se doplňuje latinskými písmeny, pokud language není \"ar\" — pak se výplň přepne na arabštinu.",
	"api_set_wordseeker_hidden_solution": "Zbylá písmena tvoří tenhle text. Nastavením zároveň řekneš generátoru, aby nejdřív umístil řešení, místo aby napěchoval co nejvíc slov.",
	"api_set_wordseeker_directions": "Kterými směry může slovo vést. Když ho vynecháš, slova vedou jen na východ, jihovýchod a jih.",
	"api_set_wordseeker_template": "Vyřízne z mřížky tvar, místo aby zůstala čtvercová.",
	"api_e_acrostic": "Naskládá tvé odpovědi tak, aby jeden sloupec skládal skryté slovo.",
	"api_c_acrostic": "Pole slov. Dohromady musí obsahovat každé písmeno skrytého slova.",
	"api_set_acrostic_hidden_solution": "Slovo, které skládá zvýrazněný sloupec. Bez něj tenhle endpoint neproběhne.",
	"api_note_acrostic_letters": "Pokud odpovědi nedokážou dodat písmena, která řešení potřebuje, volání odpoví 500, místo aby uložilo napůl sestavenou mřížku.",
	"api_note_acrostic_order": "Generátor přeuspořádá tvé odpovědi, aby sloupec fungoval, takže pořadí, které pošleš, není pořadí, které vidí hráči.",
	"api_e_word-scramble": "Zpřehází písmena každé odpovědi, aby je hráči rozluštili.",
	"api_c_word-scramble": "Pole slov. Definice se zobrazuje vedle zpřeházených písmen.",
	"api_set_scramble_hidden_solution": "Volitelné bonusové slovo, které hráči zadají, jakmile vyřeší zbytek.",
	"api_note_scramble_random": "Aktivity vytvořené přes API mají vždy zapnuté nastavení pro zamíchání pořadí, takže pořadí, které pošleš, není pořadí, které dostanou hráči.",
	"api_e_hangman": "Změní tvá slova nebo fráze na kola hádání písmen.",
	"api_c_hangman": "Pole slov nebo krátkých frází. Definice je nápověda, kterou vidí hráči.",
	"api_e_wordle": "Z každého slova, které pošleš, udělá hru na hádání slova.",
	"api_c_wordle": "Pole slov. Hráči dostanou jedno kolo na slovo.",
	"api_note_wordle_dictionary": "Vytvořeno se zapnutým nastavením pro kontrolu, že tipy jsou skutečná slova. Pokud jsou tvá slova jména nebo vymyšlená, vypni ho v editoru.",
	"api_e_typing-practice": "Změní věty na cvičení psaní.",
	"api_c_typing-practice": "Pole slov nebo vět k přepsání. Pole definice zároveň slouží jako instrukce.",
	"api_e_wheel-of-fortune": "Naplní roztáčecí kolo vlastními segmenty.",
	"api_c_wheel-of-fortune": "Pole segmentů. Každá odpověď se stane jednou výsečí.",
	"api_note_wheel_outcome": "Vytvořeno s možností “zobrazit výsledek jen v kole”, takže výsledek se čte z kola, místo aby byl oznámen vedle něj.",
	"api_e_memory": "Karty lícem dolů, které se otáčí a spojují do dvojic.",
	"api_c_memory": "Pole dvojic. Každá dvojice obsahuje dvě karty, které k sobě patří.",
	"api_note_cards_media": "Karta je objekt s type a value. Použij \"text\" pro slova, nebo \"image\", \"audio\", \"youtube\" či \"link\" s URL adresou ve value, a přidej alt pro popis.",
	"api_e_matching-pairs": "Dva sloupce karet, které se táhnou k sobě.",
	"api_c_matching-pairs": "Pole dvojic. První karta každé dvojice skončí na jedné straně, její partner na druhé.",
	"api_e_flash-cards": "Oboustranné kartičky, kterými se listuje.",
	"api_c_flash-cards": "Pole kartiček. První kartička je přední strana, druhá zadní.",
	"api_note_flashcards_sides": "Endpoint uloží tolik kartiček, kolik jich pošleš, takže pošli přesně dvě na položku — přední a pak zadní stranu.",
	"api_e_categorize": "Karty, které se třídí do skupiny, kam patří.",
	"api_c_categorize": "Pole kategorií, každá s názvem a kartami, které do ní patří.",
	"api_note_categorize_name": "Kategorie poslaná bez názvu se uloží jako “Untitled Category”, takže ho vždy pošli.",
	"api_e_reorder": "Posloupnost, kterou hráči musí seřadit zpátky do pořadí.",
	"api_c_reorder": "Pole posloupností. Každá obsahuje své karty ve správném pořadí.",
	"api_note_reorder_order": "Pořadí, které pošleš, se uloží jako správné pořadí — číslo jedna první.",
	"api_e_quiz": "Otázky s výběrem odpovědi i otevřené otázky, bodované za chodu.",
	"api_c_quiz": "Pole otázek. Otázky s výběrem odpovědi nesou své možnosti; otevřené otázky nesou odpověď, kterou uznáš.",
	"api_note_question_types": "question_type je buď \"multiple_choice\", kde správná možnost nese isCorrect true, nebo \"open_answer\", které místo toho používá correct_answer. Když ho vynecháš, bere se to jako výběr z možností.",
	"api_note_quiz_settings": "Endpoint pro kvíz předává settings rovnou jako bloky nastavení aktivity, takže to není místo pro volné možnosti — kvíz doladíš dodatečně v editoru.",
	"api_e_board-game": "Herní plán, po kterém se závodí, s tvými otázkami na políčkách.",
	"api_c_board-game": "Pole otázek přesně ve tvaru, jaký přijímá endpoint pro kvíz.",
	"api_set_board_tiles": "Kolik políček má herní plán. Mezi 10 a 75.",
	"api_set_board_mode": "Jestli hráči závodí do cíle, nebo cestou sbírají předměty.",
	"api_e_cryptogram": "Změní větu na šifru k rozluštění, znak po znaku.",
	"api_c_cryptogram": "Jedna věta v poli sentence. Tento endpoint nebere žádné items.",
	"api_note_cryptogram_no_items": "Cokoliv pošleš v items, se ignoruje — hlavolam se sestaví jen z věty.",
	"api_set_cryptogram_helpers": "Které znaky se prozradí zdarma jako vstup do hry: žádné, nejčastější, samohlásky, nebo ty, které si sám vypíšeš.",
	"api_set_cryptogram_character_list": "Abeceda, ze které se šifra sestavuje. Když ji necháš prázdnou, šifrování si vybere vlastní.",
	"api_set_cryptogram_extra_letters": "Znaky, které se prozradí, když je helpers \"custom\". U ostatních režimů nápovědy se ignoruje.",
	"api_set_cryptogram_hide_unused": "Vynechá z klíče znaky, které věta vůbec nepoužívá.",
	"api_e_calculation": "Skryje větu za příklady — vyřeš příklad, odhalíš písmeno.",
	"api_c_calculation": "Jedna věta v poli sentence. Tento endpoint nebere žádné items.",
	"api_set_calc_difficulty": "Nejvyšší výsledek, jaký může mít příklad.",
	"api_set_calc_operators": "Které operace se mohou objevit. x je násobení, : je dělení.",
	"api_set_calc_max_operations": "Kolik operací může jeden příklad řetězit za sebou.",
	"api_set_calc_number_difficulty": "Omezuje jednotlivá čísla uvnitř příkladu. Od 5 do 1000.",
	"api_note_calculation_fit": "Pokud jsou omezení příliš přísná na to, aby se věta dala zakódovat, volání odpoví 400 a požádá tě, ať je uvolníš, místo aby uložilo neúplný hlavolam.",
	"api_e_sudoku": "Vygeneruje vyřešenou mřížku a pak z ní zase vezme čísla zpátky.",
	"api_c_sudoku": "Nic. Celý hlavolam vzejde ze svých dvou nastavení.",
	"api_note_sudoku_no_items": "Nepošli žádné items ani sentence — size a difficulty jsou celý vstup.",
	"api_note_sudoku_difficulty_sizes": "Editor nabízí obtížnost jen pro 2x3, 3x3 a 3x4. API ji použije pro každou velikost, včetně 2x2 a 4x4.",
	"api_set_sudoku_size": "Velikost jednoho bloku, zapsaná jako řádky krát sloupce — 3x3 dá klasickou mřížku 9x9. Endpoint jen kontroluje, že se to dá rozebrat na dvě čísla, takže zůstaň u velikostí, které nabízí editor.",
	"api_set_sudoku_difficulty": "Kolik čísel zůstane na startu na herní ploše.",
	"api_e_jigsaw": "Rozřeže obrázek na dílky, které se skládají zpátky.",
	"api_c_jigsaw": "Jedna URL adresa obrázku v poli image. Tento endpoint nebere žádné items.",
	"api_note_jigsaw_grid": "API vždy vytvoří puzzle 4×4. Počet dílků, nepravidelné dílky a rovné okraje jsou nastavení editoru — poslání rows nebo columns sem nic neudělá.",
	"api_note_image_reachable": "URL adresa se uloží přesně tak, jak ji pošleš, a soubor se nikdy nekopíruje, takže musí zůstat veřejně dostupná po celou dobu, kdy se aktivita hraje.",
	"api_e_slidingpuzzle": "Rozseká obrázek na dílky, které se posouvají na místo.",
	"api_c_slidingpuzzle": "Jedna URL adresa obrázku uvnitř settings. Tento endpoint nebere žádné items.",
	"api_note_sliding_image_slot": "Na rozdíl od puzzle tento endpoint čte obrázek z settings.image. Pole image na nejvyšší úrovni se ignoruje a volání odpoví 400.",
	"api_help_title": "Něco se nechová, jak má?",
	"api_help_body": "Pošli požadavek, který jsi zkusil, a chybu, kterou jsi dostal zpátky, a dostaneš skutečnou odpověď od člověka, který ten endpoint napsal.",
	"api_help_cta": "Napsat podpoře",
	"api_int_kicker": "Integrace pro vývojáře",
	"api_int_title": "Napoj Puzzel na vlastní platformu",
	"api_int_intro": "Puzzel umí předat výsledek hráče rovnou jinému systému — jeho skóre, jak daleko se dostal, co odpověděl — aniž by ten systém musel být plnohodnotný LMS. Tahle stránka popisuje úplně všechny kanály: co z ní jde ven, kdy to jde ven a co nejmenšího musíš postavit, abys to zachytil.",
	"api_int_hero_out_label": "Výsledky odcházejí přes",
	"api_int_hero_out_value": "Webhook, nebo zprávu stránce kolem aktivity",
	"api_int_hero_in_label": "Tvoje stránka umí",
	"api_int_hero_in_value": "Přihlásit hráče a resetovat aktivitu",
	"api_int_hero_where_label": "Zapíná se",
	"api_int_hero_where_value": "Pro každou aktivitu zvlášť, v sekci Vývojář v editoru",
	"api_int_hero_plan_label": "Součástí",
	"api_int_hero_plan_value": "Placeného tarifu — na účtu zdarma jsou tato nastavení vypnutá",
	"api_int_search_placeholder": "Hledej kanály, pole a příklady",
	"api_int_search_empty": "Tomu na téhle stránce nic neodpovídá. Zkus kanál jako webhook nebo postMessage, nebo pole jako progress.",
	"api_int_nav_channels": "Kanály",
	"api_int_s_choose_title": "Který kanál potřebuješ?",
	"api_int_s_choose_body": "Z aktivity můžou odejít tři věci a jedna může přijít dovnitř. Který kanál sedí, záleží na jediné otázce: sedí hráč přímo na tvojí stránce, nebo úplně jinde?",
	"api_int_choose_out": "Ven z Puzzel",
	"api_int_choose_in": "Dovnitř do Puzzel",
	"api_int_choose_when": "Použij, když",
	"api_int_choose_needs": "Potřebuješ",
	"api_int_choose_setting": "Nastavení",
	"api_int_ch_webhook_name": "Webhook s výsledky",
	"api_int_ch_webhook_summary": "Každý uložený výsledek se metodou POST odešle jako JSON na URL, kterou vlastníš.",
	"api_int_ch_webhook_when": "Hráč může být kdekoli — na sdíleném odkazu, přes QR kód, na cizím webu — a ty chceš mít výsledek ve vlastní databázi.",
	"api_int_ch_webhook_needs": "Koncový bod HTTPS, který přijme POST z jiné domény.",
	"api_int_ch_parent_name": "Výsledky stránce kolem ní",
	"api_int_ch_parent_summary": "Stejný JSON, odeslaný stránce, do které je aktivita vložená, místo na server.",
	"api_int_ch_parent_when": "Aktivitu vkládáš do vlastní stránky kurzu a ta stránka sama umí s výsledkem něco udělat.",
	"api_int_ch_parent_needs": "Iframe na tvojí stránce a naslouchání zprávám. Žádný server, žádné CORS.",
	"api_int_ch_completion_name": "Signál o dokončení",
	"api_int_ch_completion_summary": "Jedna zpráva ve chvíli, kdy hráč skončí, a nenese nic jiného než tuhle informaci.",
	"api_int_ch_completion_when": "Chceš vědět jenom to, jestli je hotovo — abys mohl odškrtnout lekci, odemknout další, nebo zobrazit vlastní obrazovku.",
	"api_int_ch_completion_needs": "Iframe na tvojí stránce a naslouchání zprávám.",
	"api_int_ch_trigger_name": "Reset z tvojí stránky",
	"api_int_ch_trigger_summary": "Tvoje stránka řekne vložené aktivitě, ať smaže hráčovy odpovědi a začne znovu.",
	"api_int_ch_trigger_when": "Máš vlastní tlačítko \"zkusit znovu\" mimo aktivitu.",
	"api_int_ch_trigger_needs": "Iframe na tvojí stránce. Zpráva se přijme jen od stránky, která aktivitu vkládá.",
	"api_int_s_webhook_title": "Webhook s výsledky",
	"api_int_s_webhook_body": "V editoru zapni \"Odesílat výsledky na webhook\" a zadej URL. Od té chvíle při každém uložení hráčova postupu odešle jeho prohlížeč metodou POST celý výsledek jako JSON na tuhle adresu.",
	"api_int_webhook_steps_title": "Jak to nastavit",
	"api_int_webhook_step_1": "Otevři aktivitu v editoru a přejdi do sekce Vývojář.",
	"api_int_webhook_step_2": "Zapni \"Odesílat výsledky na webhook\" a do pole pod ním vlož adresu svého koncového bodu. Musí to být úplná URL — samotná doména se odmítne — a musí být https, protože prohlížeč blokuje čisté http volání ze stránky, která je sama podávaná přes https.",
	"api_int_webhook_step_3": "Jednou si aktivitu sám zahraj. První POST dorazí, jakmile na něco odpovíš.",
	"api_int_webhook_receiver": "Příjemce od začátku do konce",
	"api_int_webhook_timing_title": "Spouští se za hry, ne až na konci",
	"api_int_webhook_timing_body": "Výsledek odejde při každém uložení záznamu: po pauze v psaní, když se položí karta, když se zastaví čas, a ještě jednou, když je aktivita dokončená. Dlouhá křížovka je pár desítek volání, ne jedno — takže handler napiš jako upsert podle klíče playerUid a activityKey, ne jako insert. Každé volání nese kompletní stav, takže nejnovější vždy nahradí to poslední a chybějící volání dožene to následující.",
	"api_int_webhook_finished_title": "Jak poznat dokončení od pouhého uložení",
	"api_int_webhook_finished_body": "progress je procento: 100 znamená, že je aktivita dokončená. Pár typů může skončit, aniž by ho dosáhly — kvíz odpovězený až do konce, vyřešené pole s řešením — a ty místo toho nesou hasAlternateCompletion. Obojí považuj za dokončení.",
	"api_int_webhook_cors_title": "Odesílá ho hráčův prohlížeč",
	"api_int_webhook_cors_body": "POST přichází z karty, ve které se aktivita hraje, ne ze serveru Puzzel. Většina koncových bodů postavených na příjem webhooků to už zvládá. Pokud ten tvůj požadavek nikdy nevidí, je to tímhle: prohlížeč si nejdřív vyžádá svolení, takže na preflight OPTIONS odpověz hlavičkou Access-Control-Allow-Origin a skutečný POST bude následovat.",
	"api_int_webhook_trust_title": "Ber obsah zprávy jako tvrzení, ne jako důkaz",
	"api_int_webhook_trust_body": "Požadavek nemá žádný podpis a přichází z prohlížeče, který nemáš pod kontrolou, takže ho ti může poslat i kdokoli, kdo si stránku prohlédne. Na naplnění ukazatele postupu nebo nástěnky to stačí. U všeho, co bys žákovi nedovolil nastavit si sám — známka, která se počítá, certifikát, platba — si to ověř proti výsledkům ve vlastní nástěnce Puzzel, nebo nech skóre přenést konektory pro známky do LMS.",
	"api_int_s_parent_title": "Výsledky stránce kolem ní",
	"api_int_s_parent_body": "Když aktivitu vkládáš, můžeš nechat stejný JSON odeslat vlastní stránce místo na server. Zapni \"Odesílat výsledky nadřazené stránce\" a naslouchej zprávě. Z prohlížeče nic neodchází, takže nemusíš stavět žádný koncový bod ani řešit CORS.",
	"api_int_parent_origin_title": "Zkontroluj, odkud zpráva přišla",
	"api_int_parent_origin_body": "Tvůj listener zaslechne každou zprávu odeslanou na stránku, včetně těch z jiných rámců a rozšíření prohlížeče. Než obsahu uvěříš, porovnej event.origin s https://puzzel.org.",
	"api_int_parent_same_title": "Stejný obsah, stejné načasování",
	"api_int_parent_same_body": "Je to dvojče webhooku: stejná pole, odeslaná ve stejných okamžicích. Všechno z části \"Co obsahuje výsledek\" platí i tady.",
	"api_int_s_completion_title": "Signál o dokončení",
	"api_int_s_completion_body": "Nejmenší kanál, pro chvíle, kdy ti do samotného výsledku nic není: zapni \"Odeslat signál o dokončení\" a tvoje stránka dostane jednu zprávu ve chvíli, kdy hráč skončí.",
	"api_int_completion_shape": "Co dorazí",
	"api_int_completion_order_title": "Výsledek je v okamžiku doručení už uložený",
	"api_int_completion_order_body": "Signál se záměrně posílá až po tom, co dorazí dokončující uložení, takže stránka, která na něj zareaguje čtením výsledku zpátky, ho tam najde.",
	"api_int_completion_embed_title": "Jen uvnitř iframe",
	"api_int_completion_embed_body": "Oba zprávové kanály posílají na stránku, která aktivitu rámuje. Otevřená ve vlastní kartě nemá komu to oznámit, takže se nic neodešle.",
	"api_int_s_payload_title": "Co obsahuje výsledek",
	"api_int_s_payload_body": "Jeden tvar, ať ho nese jakýkoli kanál. Hráčovy odpovědi jsou klíčované id položek dané aktivity, takže stejné klíče se objeví i v correctUids.",
	"api_int_col_when": "Kdy tam je",
	"api_int_always": "vždy",
	"api_int_sometimes": "někdy",
	"api_int_payload_absent_title": "Chybí, ne prázdné",
	"api_int_payload_absent_body": "Pole, které se netýká dané aktivity, se z JSON prostě vynechá, místo aby se poslalo jako null nebo nula. Tak se pozná typ, který běh vůbec neskóruje, od běhu, který získal nula bodů — takže čti s výchozí hodnotou a nikdy nepředpokládej, že klíč existuje.",
	"api_int_payload_example": "Dokončený kvíz, tak jak dorazí",
	"api_int_f_activity_key": "Aktivita, které výsledek patří. Stejný klíč, jaký vidíš v URL aktivity za ?p=.",
	"api_int_f_player_uid": "Kdo hrál, jako anonymní id. Pro tohoto hráče na tomto zařízení je stálé, takže podle něj výsledky klíčuj — není to e-mailová adresa ani účet Puzzel.",
	"api_int_f_player": "Registrační pole, na která se aktivita ptá, přesně jak jsi je nastavil: jméno, e-mail, třída, student_id a podobně. Chybí, dokud se hráč nezaregistruje, a chybí úplně u aktivity, která se na nic neptá.",
	"api_int_f_progress": "Jak daleko se dostal, v procentech. 100 znamená dokončeno.",
	"api_int_f_time_passed": "Čas strávený na aktivitě, v milisekundách.",
	"api_int_f_last_played_at": "Kdy byl tento výsledek uložen, jako unixové časové razítko v milisekundách.",
	"api_int_f_created": "Kdy byl pokus zahájen, jako unixové časové razítko v milisekundách.",
	"api_int_f_player_input": "Co hráč skutečně zadal, klíčované id položky, ke které to patří. Tvar uvnitř závisí na typu aktivity — slovo, seznam umístěných karet, vybraná možnost.",
	"api_int_f_correct_uids": "Které z těch položek jsou správně, klíčované stejným způsobem. Chybí, dokud není zodpovězeno vůbec nic.",
	"api_int_f_score": "Získané body, u typů, které běh bodují. Jinde chybí — i u běhu, který opravdu získal nula bodů, takže si před čtením ověř, že klíč existuje.",
	"api_int_f_performance": "Vlastní měřítko typu, jak dobře to dopadlo, pokud si nějaké vede — třeba slova za minutu u nácviku psaní.",
	"api_int_f_attempts": "Kolikátý je to běh: 1 poprvé, o jednu víc při každém novém startu. Jen u typů, které umí běh ukončit předčasně a počítají opakování.",
	"api_int_f_knocked_out": "Běh skončil na špatné odpovědi a je u konce, aniž by byl dokončený.",
	"api_int_f_alternate": "Aktivita byla dokončena způsobem, který nedosáhne 100 % — kvíz zodpovězený až do konce, vyřešené pole s řešením. Ber to jako dokončení.",
	"api_int_f_missed_keys": "Znaky, které hráč opakovaně plete, nejčastěji chybované první. Jen u nácviku psaní.",
	"api_int_f_content_version": "Proti které verzi obsahu aktivity se hrálo. Mění se, když vlastník upraví otázky, takže starý výsledek jde poznat od aktuálního.",
	"api_int_s_control_title": "Reset aktivity z tvojí stránky",
	"api_int_s_control_body": "Jedním směrem jde příkaz opačně. Když je zapnuté \"Přijímat příkazy z nadřazené stránky\", stránka, která aktivitu vkládá, může smazat hráčovy odpovědi a vrátit aktivitu na začátek — pro vlastní tlačítko \"zkusit znovu\" mimo rámec.",
	"api_int_control_only_title": "Reset je jediný příkaz",
	"api_int_control_only_body": "Neexistuje zpráva pro odeslání výsledku, otevření závěrečné zprávy ani přeskok na otázku. Zpráva žádající o cokoli jiného než reset se ignoruje.",
	"api_int_control_guard_title": "Slyší se jen vkládající stránka",
	"api_int_control_guard_body": "Příkaz se přijme jen od stránky, která aktivitu rámuje, a odnikud jinud — ne od sourozeneckého rámce, ne od skriptu na stránce. Nastavení je ve výchozím stavu vypnuté, takže ho zapni u aktivit, které řídíš.",
	"api_int_s_identity_title": "Vlastní identita hráče",
	"api_int_s_identity_body": "Pokud tvoje platforma už ví, kdo hraje, aktivita se ho nemusí ptát znovu. Existují dva způsoby handshaku, oba pro aktivitu uvnitř tvojí stránky, a oba zapínáme my, ne editor — mění totiž, komu výsledek patří, takže se nastavují s námi, ne zaškrtnutím políčka.",
	"api_int_identity_pm_title": "Pošli nám hráče",
	"api_int_identity_pm_body": "Aktivita se ohlásí zprávou 'app-loaded' a čeká. Tvoje stránka pošle zpátky údaje hráče a výsledek se pod nimi založí, aniž by hráč cokoli psal nebo viděl registrační obrazovku.",
	"api_int_identity_sso_title": "Pošli nám token",
	"api_int_identity_sso_body": "Stejný handshake, ale tvoje stránka místo samotných polí pošle JWT vydaný tvým poskytovatelem identity. Než hráče pustíme dovnitř, ověříme ho proti vydavatelům nastaveným pro tvůj účet, takže identita je prokázaná, ne jen tvrzená — o tenhle způsob si řekni, když výsledek musí být důvěryhodný.",
	"api_int_identity_cta_title": "Požádej nás o zapnutí",
	"api_int_identity_cta_body": "Napiš nám, který ze dvou způsobů chceš a kam budou aktivity vložené, a účet ti nastavíme a projdeme to spolu s tebou.",
	"api_int_identity_cta_button": "Napsat nám o identitě",
	"api_int_s_create_title": "Vytváření aktivit z tvého systému",
	"api_int_s_create_body": "Všechno výše se týkalo výsledku, který jde ven. Opačným směrem — vytvoření samotných aktivit z obsahu, který už máš — slouží Puzzle API: jeden POST na typ aktivity, a zpátky dostaneš klíč a URL pro vložení.",
	"api_int_create_link": "Přečíst referenci API",
	"api_int_s_lms_title": "Kdy je lepší odpovědí hotový konektor",
	"api_int_s_lms_body": "Pokud je na druhé straně skutečný LMS, nic z tohohle asi nepotřebuješ. Známky se do jeho třídní knihy dostanou samy, aniž bys musel cokoli hostovat.",
	"api_int_lms_lti_title": "Moodle, Canvas, Brightspace, Schoology, itslearning",
	"api_int_lms_lti_body": "Spuštěno zevnitř LMS, se skóre zapsaným zpátky do jeho třídní knihy.",
	"api_int_lms_gc_title": "Google Classroom",
	"api_int_lms_gc_body": "Zveřejni aktivitu jako úkol a známky se vrátí samy.",
	"api_int_lms_not_title": "Nic z toho?",
	"api_int_lms_not_body": "Platformy pro kurzy, členské weby, intranety a cokoli, co sis postavil sám — přesně na to jsou kanály na téhle stránce. Vložení plus signál o dokončení pokryje většinu případů.",
	"api_int_s_limits_title": "Co tu není",
	"api_int_s_limits_body": "Ať to zbytečně nehledáš:",
	"api_int_limit_no_read": "Žádný koncový bod pro čtení výsledků zpátky. API aktivity vytváří; výsledky odcházejí přes kanály na téhle stránce nebo přes exporty ve tvojí nástěnce.",
	"api_int_limit_no_signature": "Webhook nemá žádný podpis. Není proti čemu požadavek ověřit, a proto by výsledek neměl být jediné, co stojí za něčím důležitým.",
	"api_int_limit_per_activity": "Žádný webhook platný pro celý účet. URL je nastavení jednotlivé aktivity, takže zkopírovaná aktivita si ho ponese s sebou a nová začíná bez něj.",
	"api_int_limit_no_multiplayer": "Nic v týmové hře ani v živé místnosti. Oba zprávové kanály i webhook jsou pro hru jednoho hráče a nastavení se samy vypnou, jakmile je zapnutá týmová hra.",
	"api_int_limit_no_retry": "Žádná fronta pro doručování. Nic se neukládá a znovu neposílá — dalším pokusem je další uložení a záleží jen na posledním volání běhu.",
	"api_nav_integrations": "Jak dostat výsledky ven"
}
