{
	"api_kicker": "API pentru dezvoltatori",
	"api_title": "Creează activități direct din sistemul tău",
	"api_intro": "Un POST pentru fiecare tip de activitate. Trimiți conținutul ca JSON și primești înapoi o activitate în contul tău Puzzel.org, plus un URL pe care îl poți da jucătorilor sau îl poți pune într-un iframe.",
	"api_search_placeholder": "Caută endpointuri, câmpuri și setări",
	"api_search_results": "care corespund pe această pagină",
	"api_search_empty": "Nimic de pe această pagină nu se potrivește. Încearcă numele unui endpoint, un câmp precum activity_key sau un cod de stare.",
	"api_search_clear": "Șterge căutarea",
	"api_nav_guide": "Primii pași",
	"api_nav_endpoints": "Endpointuri",
	"api_toc_label": "Pe această pagină",
	"api_hero_base_label": "URL de bază",
	"api_hero_method_label": "Metodă",
	"api_hero_method_value": "POST, corp JSON",
	"api_hero_auth_label": "Autentificare",
	"api_hero_auth_value": "Cheie + e-mail în corpul cererii",
	"api_hero_limit_label": "Cotă",
	"api_hero_limit_value": "[limit] activități pe zi",
	"api_hero_count_label": "Endpointuri",
	"api_hero_count_value": "[count] tipuri de activități",
	"api_s_quickstart_title": "Prima ta cerere",
	"api_s_quickstart_body": "Nu ai nimic de instalat și nu e nevoie de niciun handshake: trimiți un corp JSON cu cheia ta, e-mailul tău și conținutul tău. Răspunsul conține cheia noii activități și URL-ul la care se joacă.",
	"api_s_quickstart_note": "Fiecare exemplu de pe această pagină este o cerere completă, care poate fi rulată. Înlocuiește cheia și conținutul cu ale tale și funcționează ca atare.",
	"api_s_auth_title": "Autentificare",
	"api_s_auth_body": "Nu există anteturi și niciun token bearer. Ambele credențiale călătoresc în corpul JSON al fiecărei cereri, iar cheia este acceptată doar pentru contul căruia îi aparține acel e-mail.",
	"api_s_auth_where": "Cheia ta se află în secțiunea de cont a tabloului tău de bord, după butonul Arată.",
	"api_s_auth_where_link": "Deschide cheia mea API",
	"api_s_auth_premium": "Cheile API sunt oferite când începe un abonament, așa că un cont gratuit nu are încă una.",
	"api_s_auth_plans": "Vezi planurile",
	"api_s_auth_secret": "Tratează cheia ca pe o parolă. Ea creează și suprascrie activități în contul tău, așa că păstreaz-o pe server și departe de orice poate citi un browser.",
	"api_prefill_kicker": "Exemple",
	"api_prefill_label": "Completează exemplele cu propria mea cheie API",
	"api_prefill_signed_out": "Conectează-te și cheia ta apare automat în fiecare exemplu de pe această pagină.",
	"api_prefill_sign_in": "Conectează-te",
	"api_prefill_none": "Acest cont nu are încă o cheie API.",
	"api_prefill_warning": "Fiecare exemplu conține acum cheia ta reală. Nu o lipi într-un chat, un issue sau un repo public.",
	"api_s_request_title": "Corpul cererii",
	"api_s_request_body": "Fiecare endpoint primește aceleași cinci câmpuri. Ce diferă este câmpul de conținut de sub ele: majoritatea primesc un array de elemente, câteva primesc o singură propoziție sau o singură imagine, iar sudoku nu primește nimic.",
	"api_s_request_settings": "settings este un obiect cu opțiuni specifice fiecărui endpoint. Care dintre ele sunt citite de un endpoint este listat mai jos, la el; orice altceva pui acolo este ignorat.",
	"api_col_field": "Câmp",
	"api_col_type": "Tip",
	"api_col_notes": "Ce face",
	"api_col_status": "Stare",
	"api_col_meaning": "Ce înseamnă",
	"api_required": "obligatoriu",
	"api_optional": "opțional",
	"api_default_label": "Implicit",
	"api_allowed_label": "Una dintre",
	"api_in_settings": "în settings",
	"api_f_account_api_key": "Cheia API a contului tău. Se pune în corpul cererii, nu într-un antet.",
	"api_f_email": "Adresa cu care te conectezi la contul tău Puzzel.org. Cheia este valabilă doar împreună cu ea.",
	"api_f_title": "Numele pe care îl primește activitatea în tabloul tău de bord. Dacă îl omiți, endpointul folosește propriul nume implicit.",
	"api_f_language": "Decide doar limba din URL-ul pe care îl primești înapoi — nu traduce nimic din ce trimiți. Cuvintele ascunse îl citesc și pentru a comuta literele de umplutură la arabă, atunci când valoarea este \"ar\".",
	"api_f_activity_key": "Omite-l ca să creezi o activitate nouă. Trimite cheia uneia pe care deja o deții și acea activitate este reconstruită în loc.",
	"api_f_sentence_cryptogram": "Propoziția de criptat. Jucătorii o decodează literă cu literă.",
	"api_f_sentence_calculation": "Propoziția pe care jucătorii o descoperă rezolvând calculele.",
	"api_f_image": "URL absolut al imaginii de tăiat în bucăți. Se trimite la nivelul de sus, nu în interiorul settings.",
	"api_f_image_setting": "URL absolut al imaginii de amestecat. Spre deosebire de cel de la puzzle, acesta se află în interiorul settings.",
	"api_s_response_title": "Ce primești înapoi",
	"api_s_response_body": "Un apel reușit răspunde cu 200, cu cheia noii activități și URL-ul la care se joacă. Orice altceva răspunde cu success setat pe false și un singur șir de eroare.",
	"api_response_success": "Succes",
	"api_response_error": "Eșec",
	"api_s_response_urls": "URL-ul primit înapoi este vizualizarea de încorporare. Înlocuiește embed cu play ca să-l deschizi pe pagină întreagă, sau cu build ca să-l deschizi în editor — cheia de după p= rămâne aceeași.",
	"api_s_updating_title": "Creare vs. actualizare",
	"api_s_updating_body": "Trimite activity_key și activitatea din spatele ei este reconstruită pe loc: conținutul îi este înlocuit, numele și marcajul de versiune sunt reîmprospătate, iar cheia în sine rămâne aceeași — așa că linkurile și încorporările pe care le-ai partajat deja continuă să funcționeze. Rezultatele, plasarea în folder și orice setare pe care endpointul nu o scrie el însuși rămân neschimbate.",
	"api_s_updating_own": "Poți actualiza doar activități deținute chiar de contul tău. Cheia altcuiva primește răspuns 403.",
	"api_s_updating_name": "title este aplicat la fiecare actualizare, inclusiv valoarea lui implicită — dacă îl omiți, activitatea este redenumită cu numele implicit al acelui endpoint.",
	"api_s_updating_settings": "Blocurile de setări pe care un endpoint le scrie el însuși sunt rescrise de la zero, așa că o actualizare le resetează și pe acestea la valorile pe care le trimiți, sau la valorile implicite ale endpointului.",
	"api_s_updating_quota": "O actualizare costă la fel ca o creare: un apel scăzut din cota de azi.",
	"api_s_limits_title": "Limită de trafic",
	"api_s_limits_body": "Fiecare apel reușit se contorizează, la fel creările ca și actualizările. Dacă depășești limita, următoarea cerere primește răspuns 429 până când contorul este resetat.",
	"api_s_limits_counter": "[limit] activități per cont pe zi",
	"api_s_limits_reset": "Contorul este șters o dată pe zi de un job programat, nu pe o fereastră glisantă de 24 de ore.",
	"api_s_errors_title": "Erori",
	"api_s_errors_body": "Erorile sosesc întotdeauna ca JSON, cu aceleași două câmpuri, niciodată ca pagină HTML. Șirul de eroare este scris pentru a fi citit de o persoană — numește câmpul sau limita care a eșuat.",
	"api_err_400": "Ceva din corpul cererii lipsește, este malformat sau este în afara intervalului permis. Mesajul numește câmpul.",
	"api_err_401": "E-mailul este necunoscut, sau cheia nu aparține acelui cont.",
	"api_err_403": "activity_key pe care l-ai trimis aparține unui alt cont.",
	"api_err_429": "Cota de azi este epuizată. Se resetează o dată pe zi.",
	"api_err_500": "Generatorul nu a putut construi un joc din ce ai trimis — de obicei prea puține cuvinte, sau cuvinte care nu pot fi îmbinate.",
	"api_endpoints_title": "Endpointuri",
	"api_endpoints_intro": "O cale pentru fiecare tip de activitate, toate POST, toate sub același URL de bază. Fiecare listează conținutul de care are nevoie, setările pe care le citește și o cerere pe care o poți rula.",
	"api_group_words": "Cuvinte și litere",
	"api_group_cards": "Cartonașe și perechi",
	"api_group_questions": "Întrebări și răspunsuri",
	"api_group_text": "Propoziții și numere",
	"api_group_images": "Imagini",
	"api_ep_content_label": "Conținut",
	"api_ep_settings_label": "Setări pe care le citește",
	"api_ep_settings_none": "Acest endpoint nu citește nicio setare.",
	"api_ep_example_label": "Exemplu de cerere",
	"api_ep_notes_label": "Bine de știut",
	"api_ep_min_items": "Cel puțin [count] în items",
	"api_ep_no_items": "Nu primește items",
	"api_ep_default_title": "Revine implicit la numele “[title]”",
	"api_copy": "Copiază",
	"api_copied": "Copiat",
	"api_toast_copied": "Copiat în clipboard",
	"api_ep_open_builder": "Deschide editorul",
	"api_ep_back_to_top": "Înapoi sus",
	"api_e_crossword": "Îmbină răspunsurile tale într-o grilă și numerotează definițiile pentru tine.",
	"api_c_crossword": "Un array de cuvinte. Fiecare intrare asociază răspunsul cu definiția care indică spre el.",
	"api_note_crossword_length": "Răspunsurile mai scurte de două caractere sunt eliminate înainte de construirea grilei, iar cel puțin două trebuie să supraviețuiască acestui pas.",
	"api_note_crossword_layout": "Răspunsurile sunt convertite cu majuscule, iar generatorul are douăzeci de încercări să le potrivească. Dacă nu poate plasa niciun cuvânt, apelul răspunde cu 500.",
	"api_e_wordseeker": "Ascunde cuvintele tale într-o grilă de litere, în direcțiile și forma pe care le alegi.",
	"api_c_wordseeker": "Un array de cuvinte. Textul definiției devine lista de cuvinte de la care pornesc jucătorii.",
	"api_note_wordseeker_length": "Răspunsurile sub două caractere sunt eliminate, iar fiecare răspuns este convertit cu majuscule înainte de a intra în grilă.",
	"api_note_wordseeker_arabic": "Grila este completată cu litere latine, cu excepția cazului în care language este \"ar\", ceea ce comută umplutura la arabă.",
	"api_set_wordseeker_hidden_solution": "Literele rămase formează acest cuvânt. Setarea lui îi spune și generatorului să potrivească mai întâi soluția, în loc să încadreze cât mai multe cuvinte posibil.",
	"api_set_wordseeker_directions": "În ce direcții poate merge un cuvânt. Dacă îl omiți, cuvintele merg doar spre est, sud-est și sud.",
	"api_set_wordseeker_template": "Decupează grila într-o formă, în loc să o lase pătrată.",
	"api_e_acrostic": "Stivuiește răspunsurile tale astfel încât o coloană să formeze un cuvânt ascuns.",
	"api_c_acrostic": "Un array de cuvinte. Împreună trebuie să furnizeze fiecare literă a cuvântului ascuns.",
	"api_set_acrostic_hidden_solution": "Cuvântul pe care îl formează coloana evidențiată. Acest endpoint nu funcționează fără el.",
	"api_note_acrostic_letters": "Dacă răspunsurile nu pot furniza literele de care are nevoie soluția, apelul răspunde cu 500, în loc să salveze o grilă construită pe jumătate.",
	"api_note_acrostic_order": "Generatorul reordonează răspunsurile tale ca să facă să funcționeze coloana, așa că ordinea pe care o trimiți nu este ordinea pe care o văd jucătorii.",
	"api_e_word-scramble": "Amestecă literele fiecărui răspuns, pentru ca jucătorii să le descurce.",
	"api_c_word-scramble": "Un array de cuvinte. Indiciul este afișat lângă literele amestecate.",
	"api_set_scramble_hidden_solution": "Un cuvânt bonus opțional pe care jucătorii îl introduc după ce rezolvă restul.",
	"api_note_scramble_random": "Activitățile create prin API au mereu activată setarea de amestecare a ordinii, așa că ordinea pe care o trimiți nu este ordinea pe care o primesc jucătorii.",
	"api_e_hangman": "Transformă cuvintele sau expresiile tale în runde de ghicit litere.",
	"api_c_hangman": "Un array de cuvinte sau expresii scurte. Indiciul este sugestia pe care o văd jucătorii.",
	"api_e_wordle": "Creează un joc de ghicit cuvântul din fiecare cuvânt pe care îl trimiți.",
	"api_c_wordle": "Un array de cuvinte. Jucătorii primesc câte o rundă pentru fiecare cuvânt.",
	"api_note_wordle_dictionary": "Creat cu setarea de verificare-că-răspunsurile-sunt-cuvinte-reale activată. Dezactiveaz-o în editor dacă cuvintele tale sunt nume sau inventate.",
	"api_e_typing-practice": "Transformă propoziții în exerciții de tastare.",
	"api_c_typing-practice": "Un array de cuvinte sau propoziții de tastat. Indiciul funcționează și ca instrucțiune.",
	"api_e_wheel-of-fortune": "Umple o roată rotitoare cu propriile tale segmente.",
	"api_c_wheel-of-fortune": "Un array de segmente. Fiecare răspuns devine o felie.",
	"api_note_wheel_outcome": "Creat cu opțiunea “arată rezultatul doar pe roată” activată, așa că rezultatul se citește de pe roată, nu este anunțat lângă ea.",
	"api_e_memory": "Cartonașe cu fața în jos, de întors și potrivit în perechi.",
	"api_c_memory": "Un array de perechi. Fiecare pereche conține cele două cartonașe care merg împreună.",
	"api_note_cards_media": "Un cartonaș este un obiect cu un type și o value. Folosește \"text\" pentru cuvinte, sau \"image\", \"audio\", \"youtube\" ori \"link\" cu un URL în value, și adaugă alt pentru o descriere.",
	"api_e_matching-pairs": "Două coloane de cartonașe de tras unele spre celelalte.",
	"api_c_matching-pairs": "Un array de perechi. Primul cartonaș din fiecare pereche ajunge pe o parte, iar partenerul lui pe cealaltă.",
	"api_e_flash-cards": "Cartonașe cu două fețe, de răsfoit.",
	"api_c_flash-cards": "Un array de cartonașe. Primul cartonaș este fața, al doilea este spatele.",
	"api_note_flashcards_sides": "Endpointul stochează exact atâtea cartonașe câte trimiți, așa că trimite exact două per intrare — fața, apoi spatele.",
	"api_e_categorize": "Cartonașe de sortat în categoria din care fac parte.",
	"api_c_categorize": "Un array de categorii, fiecare cu un nume și cartonașele care fac parte din ea.",
	"api_note_categorize_name": "O categorie trimisă fără nume este salvată ca “Categorie fără titlu”, așa că trimite mereu unul.",
	"api_e_reorder": "O secvență pe care jucătorii trebuie să o pună din nou în ordine.",
	"api_c_reorder": "Un array de secvențe. Fiecare conține cartonașele sale în ordinea corectă.",
	"api_note_reorder_order": "Ordinea pe care o trimiți este stocată ca ordine corectă — numărul unu primul.",
	"api_e_quiz": "Întrebări cu variante multiple și întrebări deschise, punctate pe măsură ce jucătorii avansează.",
	"api_c_quiz": "Un array de întrebări. Întrebările cu variante multiple conțin răspunsurile lor; întrebările deschise conțin răspunsul pe care îl accepți.",
	"api_note_question_types": "question_type este fie \"multiple_choice\", caz în care opțiunea corectă are isCorrect pe true, fie \"open_answer\", care folosește în schimb correct_answer. Dacă îl omiți, este tratat ca variante multiple.",
	"api_note_quiz_settings": "Endpointul quiz transmite settings direct, ca blocuri de setări ale activității, așa că nu e locul pentru opțiuni disparate — ajustează quizul ulterior în editor.",
	"api_e_board-game": "Un joc de societate de parcurs în cursă, cu întrebările tale pe căsuțe.",
	"api_c_board-game": "Un array de întrebări, exact în forma pe care o primește endpointul quiz.",
	"api_set_board_tiles": "Câte căsuțe are jocul de societate. Între 10 și 75.",
	"api_set_board_mode": "Dacă jucătorii se întrec spre final sau colectează obiecte pe parcurs.",
	"api_e_cryptogram": "Transformă o propoziție într-un cod de spart, un caracter pe rând.",
	"api_c_cryptogram": "O singură propoziție, în câmpul sentence. Acest endpoint nu primește items.",
	"api_note_cryptogram_no_items": "Orice trimiți în items este ignorat — jocul este construit doar din sentence.",
	"api_set_cryptogram_helpers": "Ce caractere sunt dezvăluite gratuit ca punct de plecare: niciunul, cele mai frecvente, vocalele, sau cele pe care le listezi tu însuți.",
	"api_set_cryptogram_character_list": "Alfabetul din care este construit cifrul. Lăsat gol, criptarea își alege propriul alfabet.",
	"api_set_cryptogram_extra_letters": "Caracterele dezvăluite când helpers este \"custom\". Ignorat pentru celelalte moduri.",
	"api_set_cryptogram_hide_unused": "Lasă în afara cheii caracterele pe care propoziția nu le folosește niciodată.",
	"api_e_calculation": "Ascunde o propoziție în spatele unor calcule — rezolvi calculul, dezvălui litera.",
	"api_c_calculation": "O singură propoziție, în câmpul sentence. Acest endpoint nu primește items.",
	"api_set_calc_difficulty": "Cel mai mare rezultat pe care îl poate avea un calcul.",
	"api_set_calc_operators": "Ce operații pot apărea. x înseamnă înmulțire, : înseamnă împărțire.",
	"api_set_calc_max_operations": "Câte operații poate înlănțui un calcul.",
	"api_set_calc_number_difficulty": "Limitează numerele individuale din interiorul unui calcul. Undeva între 5 și 1000.",
	"api_note_calculation_fit": "Dacă restricțiile sunt prea stricte pentru a coda propoziția, apelul răspunde cu 400 și te roagă să le relaxezi, în loc să salveze un joc parțial.",
	"api_e_sudoku": "Generează o grilă rezolvată, apoi scoate din nou numerele.",
	"api_c_sudoku": "Nimic. Tot jocul rezultă din cele două setări ale sale.",
	"api_note_sudoku_no_items": "Nu trimite items și nici sentence — size și difficulty sunt toată intrarea.",
	"api_note_sudoku_difficulty_sizes": "Editorul oferă dificultatea doar pentru 2x3, 3x3 și 3x4. API-ul o aplică pentru fiecare dimensiune, inclusiv 2x2 și 4x4.",
	"api_set_sudoku_size": "Dimensiunea unui bloc, scrisă ca rânduri pe coloane — 3x3 dă grila clasică 9x9. Endpointul verifică doar că se poate interpreta ca două numere, așa că rămâi la dimensiunile oferite de editor.",
	"api_set_sudoku_difficulty": "Câte numere rămân pe grilă ca punct de plecare.",
	"api_e_jigsaw": "Taie o imagine în piese, de tras înapoi la un loc.",
	"api_c_jigsaw": "Un URL de imagine, în câmpul image. Acest endpoint nu primește items.",
	"api_note_jigsaw_grid": "API-ul creează întotdeauna un puzzle de 4 pe 4. Numărul de piese, piesele neregulate și marginile drepte sunt setări din editor — trimiterea de rows sau columns aici nu are niciun efect.",
	"api_note_image_reachable": "URL-ul este stocat exact așa cum l-ai trimis, iar fișierul nu este copiat niciodată, așa că trebuie să rămână accesibil public atât timp cât activitatea este jucată.",
	"api_e_slidingpuzzle": "Amestecă o imagine în piese care alunecă la locul lor.",
	"api_c_slidingpuzzle": "Un URL de imagine, în interiorul settings. Acest endpoint nu primește items.",
	"api_note_sliding_image_slot": "Spre deosebire de puzzle, acest endpoint își citește imaginea din settings.image. Un câmp image la nivelul de sus este ignorat, iar apelul răspunde cu 400.",
	"api_help_title": "Ceva nu funcționează cum trebuie?",
	"api_help_body": "Trimite cererea pe care ai încercat-o și eroarea pe care ai primit-o înapoi și vei primi un răspuns real, de la persoana care a scris endpointul.",
	"api_help_cta": "Trimite un e-mail suportului",
	"api_int_kicker": "Integrări pentru dezvoltatori",
	"api_int_title": "Conectează Puzzel la propria ta platformă",
	"api_int_intro": "Puzzel poate trimite rezultatul unui jucător direct către un alt sistem — scorul lui, cât a parcurs, ce a răspuns — fără ca acel sistem să fie un LMS complet. Această pagină este fiecare canal care există: ce iese, când iese și cel mai mic lucru pe care trebuie să-l construiești ca să îl preiei.",
	"api_int_hero_out_label": "Rezultatele ies prin",
	"api_int_hero_out_value": "Un webhook, sau un mesaj către pagina din jurul activității",
	"api_int_hero_in_label": "Pagina ta poate",
	"api_int_hero_in_value": "Să conecteze jucătorul și să reseteze activitatea",
	"api_int_hero_where_label": "Se activează",
	"api_int_hero_where_value": "Per activitate, la Dezvoltator, în editor",
	"api_int_hero_plan_label": "Inclus în",
	"api_int_hero_plan_value": "Un plan cu plată — aceste setări sunt dezactivate pe un cont gratuit",
	"api_int_search_placeholder": "Caută canale, câmpuri și exemple",
	"api_int_search_empty": "Nimic pe această pagină nu se potrivește. Încearcă un canal precum webhook sau postMessage, sau un câmp precum progress.",
	"api_int_nav_channels": "Canale",
	"api_int_s_choose_title": "De care canal ai nevoie?",
	"api_int_s_choose_body": "Trei lucruri pot ieși dintr-o activitate și unul poate intra. Care ți se potrivește depinde de o singură întrebare: jucătorul stă în pagina ta sau cu totul altundeva?",
	"api_int_choose_out": "Din Puzzel",
	"api_int_choose_in": "În Puzzel",
	"api_int_choose_when": "Folosește-l când",
	"api_int_choose_needs": "Ai nevoie de",
	"api_int_choose_setting": "Setare",
	"api_int_ch_webhook_name": "Webhook pentru rezultate",
	"api_int_ch_webhook_summary": "Fiecare rezultat salvat este trimis (POST) ca JSON către un URL deținut de tine.",
	"api_int_ch_webhook_when": "Jucătorul poate fi oriunde — un link partajat, un cod QR, site-ul altcuiva — și vrei rezultatul în propria bază de date.",
	"api_int_ch_webhook_needs": "Un endpoint HTTPS care acceptă un POST cross-origin.",
	"api_int_ch_parent_name": "Rezultate către pagina din jur",
	"api_int_ch_parent_summary": "Același JSON, trimis către pagina care încorporează activitatea în loc de către un server.",
	"api_int_ch_parent_when": "Încorporezi activitatea în propria pagină de curs, iar pagina în sine poate face ceva cu rezultatul.",
	"api_int_ch_parent_needs": "Un iframe pe pagina ta și un listener de mesaje. Fără server, fără CORS.",
	"api_int_ch_completion_name": "Semnal de finalizare",
	"api_int_ch_completion_summary": "Un singur mesaj când jucătorul termină, care nu poartă altceva decât acest fapt.",
	"api_int_ch_completion_when": "Tot ce vrei să știi e dacă a terminat — ca să bifezi lecția, să deblochezi următoarea sau să afișezi propriul ecran.",
	"api_int_ch_completion_needs": "Un iframe pe pagina ta și un listener de mesaje.",
	"api_int_ch_trigger_name": "Resetare din pagina ta",
	"api_int_ch_trigger_summary": "Pagina ta îi spune activității încorporate să șteargă răspunsurile jucătorului și să o ia de la capăt.",
	"api_int_ch_trigger_when": "Ai propriul buton „încearcă din nou” în afara activității.",
	"api_int_ch_trigger_needs": "Un iframe pe pagina ta. Mesajul este acceptat doar de la pagina care face încorporarea.",
	"api_int_s_webhook_title": "Webhook pentru rezultate",
	"api_int_s_webhook_body": "Activează „Trimite rezultatele către un webhook” în editor și dă-i un URL. Din acel moment, de fiecare dată când progresul jucătorului este salvat, browserul lui trimite (POST) întregul rezultat către acel URL, ca JSON.",
	"api_int_webhook_steps_title": "Configurarea",
	"api_int_webhook_step_1": "Deschide activitatea în editor și mergi la meniul Dezvoltator.",
	"api_int_webhook_step_2": "Activează „Trimite rezultatele către un webhook” și lipește endpoint-ul tău în câmpul de mai jos. Trebuie să fie un URL complet — un domeniu simplu este refuzat — și trebuie să fie https, pentru că browserul blochează un apel http simplu făcut dintr-o pagină servită prin https.",
	"api_int_webhook_step_3": "Joacă activitatea o dată, tu însuți. Primul POST ajunge imediat ce răspunzi la ceva.",
	"api_int_webhook_receiver": "Un receptor, de la un capăt la altul",
	"api_int_webhook_timing_title": "Se declanșează pe măsură ce joci, nu doar la final",
	"api_int_webhook_timing_body": "Un rezultat iese de fiecare dată când intrarea este salvată: după o pauză în tastare, când un cartonaș este plasat, când cronometrul se oprește și încă o dată când activitatea este terminată. Un careu lung de cuvinte încrucișate înseamnă câteva zeci de apeluri, nu unul singur — așa că scrie-ți handlerul ca un upsert cu playerUid și activityKey drept cheie, nu ca o inserare. Fiecare apel poartă starea completă, așa că cel mai nou o înlocuiește mereu pe ultima, iar un apel pierdut este compensat de următorul.",
	"api_int_webhook_finished_title": "Cum deosebești o finalizare de o simplă salvare",
	"api_int_webhook_finished_body": "progress este un procentaj: 100 înseamnă că activitatea e completă. Câteva tipuri se pot încheia fără să ajungă acolo — un quiz răspuns integral, un câmp de soluție rezolvat — și acestea poartă în schimb hasAlternateCompletion. Tratează oricare dintre cele două ca finalizat.",
	"api_int_webhook_cors_title": "Este trimis de browserul jucătorului",
	"api_int_webhook_cors_body": "POST-ul vine din tab-ul în care se joacă activitatea, nu de la un server Puzzel. Majoritatea endpoint-urilor construite să primească webhook-uri îl acceptă deja. Dacă al tău nu vede niciodată o cerere, iată de ce: browserul cere mai întâi permisiune, așa că răspunde cererii preflight OPTIONS cu un header Access-Control-Allow-Origin, iar POST-ul real urmează.",
	"api_int_webhook_trust_title": "Tratează payload-ul ca pe o afirmație, nu ca pe o dovadă",
	"api_int_webhook_trust_body": "Cererea nu are nicio semnătură și vine dintr-un browser pe care nu îl controlezi, așa că oricine se uită la pagină îți poate trimite și el unul. E în regulă pentru a completa o bară de progres sau un tablou de bord. Pentru orice n-ai lăsa un elev să-și seteze singur — o notă care contează, un certificat, o plată — verifică-l în raport cu rezultatele din propriul tablou de bord Puzzel, sau lasă conectorii de note ai LMS-ului să poarte scorul în locul lui.",
	"api_int_s_parent_title": "Rezultate către pagina din jur",
	"api_int_s_parent_body": "Dacă încorporezi activitatea, poți primi același JSON trimis către propria pagină în loc de către un server. Activează „Trimite rezultatele către pagina părinte” și ascultă mesajul. Nimic nu iese din browser, așa că nu ai niciun endpoint de construit și niciun CORS la care să te gândești.",
	"api_int_parent_origin_title": "Verifică de unde a venit mesajul",
	"api_int_parent_origin_body": "Listener-ul tău aude fiecare mesaj trimis către pagină, inclusiv din alte cadre sau extensii de browser. Compară event.origin cu https://puzzel.org înainte să ai încredere în ce conține.",
	"api_int_parent_same_title": "Același payload, aceeași cadență",
	"api_int_parent_same_body": "Acesta este geamănul webhook-ului: aceleași câmpuri, trimise în aceleași momente. Tot ce se află sub „Ce conține un rezultat” se aplică și aici.",
	"api_int_s_completion_title": "Semnal de finalizare",
	"api_int_s_completion_body": "Cel mai mic canal, pentru când rezultatul în sine nu te privește: activează „Trimite un semnal de finalizare”, iar pagina ta primește un singur mesaj în clipa în care jucătorul termină.",
	"api_int_completion_shape": "Ce sosește",
	"api_int_completion_order_title": "Rezultatul este deja salvat când sosește",
	"api_int_completion_order_body": "Semnalul este trimis intenționat după ce salvarea de finalizare s-a produs, așa că o pagină care reacționează citind rezultatul înapoi îl va găsi acolo.",
	"api_int_completion_embed_title": "Doar în interiorul unui iframe",
	"api_int_completion_embed_body": "Ambele canale de mesaje trimit către pagina care încadrează activitatea. Deschisă în propriul tab, nu are cui să-i spună, așa că nu se trimite nimic.",
	"api_int_s_payload_title": "Ce conține un rezultat",
	"api_int_s_payload_body": "O singură formă, indiferent de canalul care o poartă. Răspunsurile jucătorului sunt indexate după id-urile proprii ale elementelor activității, așa că aceleași chei apar și în correctUids.",
	"api_int_col_when": "Când e prezent",
	"api_int_always": "mereu",
	"api_int_sometimes": "uneori",
	"api_int_payload_absent_title": "Absent, nu gol",
	"api_int_payload_absent_body": "Un câmp care nu se aplică este omis din JSON, nu trimis ca null sau zero. Așa se deosebește un tip care nu punctează o rundă de o rundă care a punctat zero — așa că citește cu o valoare implicită și nu presupune niciodată că o cheie e prezentă.",
	"api_int_payload_example": "Un quiz terminat, așa cum sosește",
	"api_int_f_activity_key": "Activitatea căreia îi aparține rezultatul. Aceeași cheie pe care o vezi în URL-ul propriu al activității, după ?p=.",
	"api_int_f_player_uid": "Cine a jucat, ca id anonim. Stabil pentru acest jucător pe acest dispozitiv, deci e ceea ce folosești ca cheie pentru rezultate — nu este o adresă de e-mail și nu este un cont Puzzel.",
	"api_int_f_player": "Câmpurile de înregistrare pe care le cere activitatea, așa cum le-ai configurat: nume, e-mail, clasă, student_id și așa mai departe. Absent până când jucătorul s-a înregistrat, și absent complet la o activitate care nu cere nimic.",
	"api_int_f_progress": "Cât de departe a ajuns, ca procentaj. 100 înseamnă terminat.",
	"api_int_f_time_passed": "Timpul petrecut pe activitate, în milisecunde.",
	"api_int_f_last_played_at": "Când a fost salvat acest rezultat, ca timestamp Unix în milisecunde.",
	"api_int_f_created": "Când a început încercarea, ca timestamp Unix în milisecunde.",
	"api_int_f_player_input": "Ce a introdus efectiv jucătorul, indexat după id-ul elementului căruia îi aparține. Forma din interior depinde de tipul activității — un cuvânt, o listă de cartonașe plasate, o opțiune aleasă.",
	"api_int_f_correct_uids": "Care dintre acele elemente sunt corecte, indexate la fel. Absent cât timp nu s-a răspuns încă la nimic.",
	"api_int_f_score": "Puncte obținute, la tipurile care punctează o rundă. Absent peste tot în rest — inclusiv la o rundă care a obținut cu adevărat zero, așa că verifică dacă cheia există înainte să o citești.",
	"api_int_f_performance": "Măsura proprie a unui tip pentru cât de bine a mers, acolo unde ține una — cuvinte pe minut la exercițiul de tastare, de exemplu.",
	"api_int_f_attempts": "Care rundă este aceasta: 1 prima dată, câte una în plus la fiecare reluare. Doar la tipurile care încheie o rundă devreme și numără reluările.",
	"api_int_f_knocked_out": "Runda s-a încheiat pe un răspuns greșit și s-a terminat fără să fie completă.",
	"api_int_f_alternate": "Activitatea a fost terminată într-un fel care nu ajunge la 100% — un quiz răspuns integral, un câmp de soluție rezolvat. Tratează-l ca pe o finalizare.",
	"api_int_f_missed_keys": "Caracterele la care jucătorul a greșit constant, cele mai ratate primele. Doar la exercițiul de tastare.",
	"api_int_f_content_version": "Ce versiune a conținutului activității a fost jucată. Se schimbă când proprietarul editează întrebările, așa că un rezultat vechi poate fi deosebit de unul actual.",
	"api_int_s_control_title": "Resetarea activității din pagina ta",
	"api_int_s_control_body": "O singură instrucțiune circulă în celălalt sens. Cu „Acceptă comenzi de la pagina părinte” activat, pagina care face încorporarea poate șterge răspunsurile jucătorului și poate readuce activitatea la început — pentru propriul tău buton „încearcă din nou”, din afara cadrului.",
	"api_int_control_only_title": "Resetarea este singura comandă",
	"api_int_control_only_body": "Nu există niciun mesaj pentru trimiterea unui rezultat, deschiderea mesajului de final sau sărirea la o întrebare. Un mesaj care cere altceva decât o resetare este ignorat.",
	"api_int_control_guard_title": "Doar pagina de încorporare este auzită",
	"api_int_control_guard_body": "Comanda este acceptată de la pagina care încadrează activitatea și de nicăieri altundeva — nu de la un cadru vecin, nu de la un script de pe pagină. Setarea este dezactivată implicit, așa că activeaz-o pentru activitățile pe care le conduci tu.",
	"api_int_s_identity_title": "Aducerea propriei identități de jucător",
	"api_int_s_identity_body": "Dacă platforma ta știe deja cine joacă, activitatea nu mai trebuie să întrebe din nou. Există două tipuri de handshake, ambele pentru o activitate din interiorul paginii tale, și ambele activate de noi, nu din editor — schimbă cui îi aparține un rezultat, așa că se configurează împreună cu tine, nu dintr-o casetă de bifat.",
	"api_int_identity_pm_title": "Trimite-ne jucătorul",
	"api_int_identity_pm_body": "Activitatea se anunță cu 'app-loaded' și așteaptă. Pagina ta trimite înapoi datele jucătorului, iar rezultatul este înregistrat pe numele lui fără ca jucătorul să tasteze ceva sau să vadă un ecran de înregistrare.",
	"api_int_identity_sso_title": "Trimite-ne un token",
	"api_int_identity_sso_body": "Același handshake, dar pagina ta trimite JWT-ul emis de furnizorul tău de identitate, în loc de câmpurile în sine. Îl verificăm în raport cu emitenții configurați pentru contul tău înainte ca jucătorul să fie lăsat să intre, așa că identitatea este dovedită, nu doar afirmată — acesta e cel de cerut atunci când rezultatul trebuie să fie de încredere.",
	"api_int_identity_cta_title": "Cere-ne să-l activăm",
	"api_int_identity_cta_body": "Spune-ne pe care dintre cele două îl vrei și unde vor fi încorporate activitățile, iar noi îți configurăm contul și trecem prin proces împreună cu tine.",
	"api_int_identity_cta_button": "Scrie-ne despre identitate",
	"api_int_s_create_title": "Crearea activităților din sistemul tău",
	"api_int_s_create_body": "Tot ce e mai sus se referă la un rezultat care iese. În celălalt sens — crearea activităților în sine din conținut pe care îl ai deja — este Puzzle API: un POST pentru fiecare tip de activitate, iar tu primești înapoi o cheie și un URL de încorporat.",
	"api_int_create_link": "Citește referința API",
	"api_int_s_lms_title": "Când un conector gata făcut e răspunsul mai bun",
	"api_int_s_lms_body": "Dacă platforma de cealaltă parte este un LMS adevărat, probabil nu ai nevoie de nimic din toate acestea. Notele pot ajunge singure în carnetul lui de note, fără nimic de găzduit din partea ta.",
	"api_int_lms_lti_title": "Moodle, Canvas, Brightspace, Schoology, itslearning",
	"api_int_lms_lti_body": "Lansată din interiorul LMS-ului, cu scorul scris înapoi în carnetul lui de note.",
	"api_int_lms_gc_title": "Google Classroom",
	"api_int_lms_gc_body": "Postează o activitate ca temă și notele revin automat.",
	"api_int_lms_not_title": "Niciunul dintre acestea?",
	"api_int_lms_not_body": "Platformele de curs, site-urile pe bază de abonament, intraneturile și orice ai construit tu însuți sunt exact pentru ce există canalele de pe această pagină. O încorporare plus semnalul de finalizare acoperă majoritatea cazurilor.",
	"api_int_s_limits_title": "Ce nu există",
	"api_int_s_limits_body": "Ca să nu îl cauți degeaba:",
	"api_int_limit_no_read": "Niciun endpoint pentru citirea rezultatelor înapoi. API-ul creează activități; rezultatele ies prin canalele de pe această pagină, sau prin exporturile din tabloul tău de bord.",
	"api_int_limit_no_signature": "Nicio semnătură pe webhook. Nu există nimic în raport cu care să verifici cererea, motiv pentru care un rezultat nu ar trebui să fie singurul lucru din spatele a ceva ce contează.",
	"api_int_limit_per_activity": "Niciun webhook la nivel de cont. URL-ul este o setare pe o activitate, așa că o activitate pe care o copiezi îl duce cu ea, iar una nouă pornește fără el.",
	"api_int_limit_no_multiplayer": "Nimic într-un joc pe echipe sau într-o cameră live. Ambele canale de mesaje și webhook-ul sunt pentru joc solo, iar setările se dezactivează singure când modul pe echipe este activ.",
	"api_int_limit_no_retry": "Nicio coadă de livrare. Nimic nu este stocat și retrimis — următoarea salvare este reîncercarea, iar ultimul apel al rundei este cel care contează.",
	"api_nav_integrations": "Cum ies rezultatele"
}
