Compare commits

...

3 Commits

Author SHA1 Message Date
Bhagya Amarasinghe
fa715a966b docs: add CDN guidance for self-hosting 2026-03-09 20:57:58 +05:30
Balázs Úr
1da92addd2 fix: Hungarian translations (#7434)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
2026-03-09 12:31:24 +00:00
Dhruwang Jariwala
1e4aa5f54b fix: strip inline styles preserve target attr (#7441)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 12:09:51 +00:00
5 changed files with 229 additions and 77 deletions

View File

@@ -179,7 +179,7 @@
"count_contacts": "{count, plural, one {{count} partner} other {{count} partner}}",
"count_members": "{count, plural, one {{count} tag} other {{count} tag}}",
"count_responses": "{count, plural, one {{count} válasz} other {{count} válasz}}",
"count_selections": "{count, plural, one {{count} kijelölés} other {{count} kijelölés}}",
"count_selections": "{count, plural, one {{count} kiválasztás} other {{count} kiválasztás}}",
"create_new_organization": "Új szervezet létrehozása",
"create_segment": "Szakasz létrehozása",
"create_survey": "Kérdőív létrehozása",
@@ -190,7 +190,7 @@
"customer_success": "Ügyfélsiker",
"dark_overlay": "Sötét rávetítés",
"date": "Dátum",
"days": "napok",
"days": "nap",
"default": "Alapértelmezett",
"delete": "Törlés",
"delete_what": "{deleteWhat} törlése",
@@ -223,7 +223,7 @@
"error": "Hiba",
"error_component_description": "Ez az erőforrás nem létezik, vagy nem rendelkezik a hozzáféréshez szükséges jogosultságokkal.",
"error_component_title": "Hiba az erőforrások betöltésekor",
"error_loading_data": "Hiba az adatok betöltése során",
"error_loading_data": "Hiba az adatok betöltésekor",
"error_rate_limit_description": "A kérések legnagyobb száma elérve. Próbálja meg később újra.",
"error_rate_limit_title": "A sebességkorlát elérve",
"expand_rows": "Sorok kinyitása",
@@ -245,11 +245,11 @@
"hidden_field": "Rejtett mező",
"hidden_fields": "Rejtett mezők",
"hide_column": "Oszlop elrejtése",
"id": "ID",
"id": "Azonosító",
"image": "Kép",
"images": "Képek",
"import": "Importálás",
"impressions": "Benyomások",
"impressions": "Megtekintések",
"imprint": "Impresszum",
"in_progress": "Folyamatban",
"inactive_surveys": "Inaktív kérdőívek",
@@ -268,9 +268,9 @@
"license_expired": "A licenc lejárt",
"light_overlay": "Világos rávetítés",
"limits_reached": "Korlátok elérve",
"link": "Összekapcsolás",
"link_survey": "Kérdőív összekapcsolása",
"link_surveys": "Kérdőívek összekapcsolása",
"link": "Hivatkozás",
"link_survey": "Hivatkozás-kérdőív",
"link_surveys": "Hivatkozás-kérdőívek",
"load_more": "Továbbiak betöltése",
"loading": "Betöltés",
"logo": "Logó",
@@ -285,7 +285,7 @@
"mobile_overlay_app_works_best_on_desktop": "A Formbricks nagyobb képernyőn működik a legjobban. A kérdőívek kezeléséhez vagy összeállításához váltson másik eszközre.",
"mobile_overlay_surveys_look_good": "Ne aggódjon a kérdőívei minden eszközön és képernyőméretnél remekül néznek ki!",
"mobile_overlay_title": "Hoppá, apró képernyő észlelve!",
"months": "hónapok",
"months": "hónap",
"move_down": "Mozgatás le",
"move_up": "Mozgatás fel",
"multiple_languages": "Több nyelv",
@@ -323,7 +323,7 @@
"organization_settings": "Szervezet beállításai",
"organization_teams_not_found": "A szervezeti csapatok nem találhatók",
"other": "Egyéb",
"others": "Egyebek",
"others": "Mások",
"overlay_color": "Rávetítés színe",
"overview": "Áttekintés",
"password": "Jelszó",
@@ -461,7 +461,7 @@
"website_and_app_connection": "Webhely és alkalmazáskapcsolódás",
"website_app_survey": "Webhely és alkalmazás-kérdőív",
"website_survey": "Webhely kérdőív",
"weeks": "hetek",
"weeks": "hét",
"welcome_card": "Üdvözlő kártya",
"workflows": "Munkafolyamatok",
"workspace_configuration": "Munkaterület beállítása",
@@ -473,7 +473,7 @@
"workspace_not_found": "A munkaterület nem található",
"workspace_permission_not_found": "A munkaterület-jogosultság nem található",
"workspaces": "Munkaterületek",
"years": "évek",
"years": "év",
"you": "Ön",
"you_are_downgraded_to_the_community_edition": "Visszaváltott a közösségi kiadásra.",
"you_are_not_authorized_to_perform_this_action": "Nincs felhatalmazva ennek a műveletnek a végrehajtásához.",
@@ -645,12 +645,12 @@
"attribute_updated_successfully": "Az attribútum sikeresen frissítve",
"attribute_value": "Érték",
"attribute_value_placeholder": "Attribútum értéke",
"attributes_msg_attribute_limit_exceeded": "Nem sikerült létrehozni {count} új attribútumot, mivel az meghaladná a maximális {limit} attribútumosztály-korlátot. A meglévő attribútumok sikeresen frissítve lettek.",
"attributes_msg_attribute_type_validation_error": "{error} (a(z) '{key}' attribútum adattípusa: {dataType})",
"attributes_msg_email_already_exists": "Az e-mail cím már létezik ebben a környezetben, és nem lett frissítve.",
"attributes_msg_email_or_userid_required": "E-mail cím vagy felhasználói azonosító megadása kötelező. A meglévő értékek megmaradtak.",
"attributes_msg_new_attribute_created": "Új '{key}' attribútum létrehozva '{dataType}' típussal",
"attributes_msg_userid_already_exists": "A felhasználói azonosító már létezik ebben a környezetben, és nem lett frissítve.",
"attributes_msg_attribute_limit_exceeded": "Nem sikerült létrehozni {count} új attribútumot, mivel túllépte volna a(z) {limit} attribútumosztályból álló legnagyobb korlátot. A meglévő attribútumok sikeresen frissítve lettek.",
"attributes_msg_attribute_type_validation_error": "{error} (a(z) {key} attribútum a következő adattípussal rendelkezik: {dataType})",
"attributes_msg_email_already_exists": "Az e-mail-cím már létezik ennél a környezetnél, és nem lett frissítve.",
"attributes_msg_email_or_userid_required": "Vagy e-mail-cím, vagy felhasználó-azonosító szükséges. A meglévő értékek megmaradtak.",
"attributes_msg_new_attribute_created": "Az új „{dataType}” típusú „{key} attribútum létrehozva",
"attributes_msg_userid_already_exists": "A felhasználó-azonosító már létezik ennél a környezetnél, és nem lett frissítve.",
"contact_deleted_successfully": "A partner sikeresen törölve",
"contact_not_found": "Nem található ilyen partner",
"contacts_table_refresh": "Partnerek frissítése",
@@ -660,9 +660,9 @@
"create_new_attribute_description": "Új attribútum létrehozása szakaszolási célokhoz.",
"custom_attributes": "Egyéni attribútumok",
"data_type": "Adattípus",
"data_type_cannot_be_changed": "Az adattípus létrehozás után nem módosítható",
"data_type_description": "Válaszd ki, hogyan legyen tárolva és szűrve ez az attribútum",
"date_value_required": "Dátum érték megadása kötelező. Használd a törlés gombot az attribútum eltávolításához, ha nem szeretnél dátumot megadni.",
"data_type_cannot_be_changed": "Az adattípust nem lehet megváltoztatni a létrehozás után",
"data_type_description": "Annak kiválasztása, hogy ezt az attribútumot hogyan kell tárolni és szűrni",
"date_value_required": "Dátumérték szükséges. Használja a törlés gombot az attribútum eltávolításához, ha nem szeretne dátumot beállítani.",
"delete_attribute_confirmation": "{value, plural, one {Ez törölni fogja a kiválasztott attribútumot. Az ehhez az attribútumhoz hozzárendelt összes partneradat el fog veszni.} other {Ez törölni fogja a kiválasztott attribútumokat. Az ezekhez az attribútumokhoz hozzárendelt összes partneradat el fog veszni.}}",
"delete_contact_confirmation": "Ez törölni fogja az ehhez a partnerhez tartozó összes kérdőívválaszt és partnerattribútumot. A partner adatain alapuló bármilyen célzás és személyre szabás el fog veszni.",
"delete_contact_confirmation_with_quotas": "{value, plural, one {Ez törölni fogja az ehhez a partnerhez tartozó összes kérdőívválaszt és partnerattribútumot. A partner adatain alapuló bármilyen célzás és személyre szabás el fog veszni. Ha ez a partner olyan válaszokkal rendelkezik, amelyek a kérdőívkvótákba beletartoznak, akkor a kvóta számlálója csökkentve lesz, de a kvóta korlátai változatlanok maradnak.} other {Ez törölni fogja az ezekhez a partnerekhez tartozó összes kérdőívválaszt és partnerattribútumot. A partnerek adatain alapuló bármilyen célzás és személyre szabás el fog veszni. Ha ezek a partnerek olyan válaszokkal rendelkeznek, amelyek a kérdőívkvótákba beletartoznak, akkor a kvóta számlálója csökkentve lesz, de a kvóta korlátai változatlanok maradnak.}}",
@@ -675,15 +675,15 @@
"edit_attributes_success": "A partner attribútumai sikeresen frissítve",
"generate_personal_link": "Személyes hivatkozás előállítása",
"generate_personal_link_description": "Válasszon egy közzétett kérdőívet, hogy személyre szabott hivatkozást állítson elő ehhez a partnerhez.",
"invalid_csv_column_names": "Érvénytelen CSV oszlopnév(nevek): {columns}. Az új attribútumokká váló oszlopnevek csak kisbetűket, számokat és aláhúzásjeleket tartalmazhatnak, és betűvel kell kezdődniük.",
"invalid_date_format": "Érvénytelen dátumformátum. Kérlek, adj meg egy érvényes dátumot.",
"invalid_number_format": "Érvénytelen számformátum. Kérlek, adj meg egy érvényes számot.",
"no_activity_yet": "Még nincs aktivitás",
"invalid_csv_column_names": "Érvénytelen CSV-oszlopnevek: {columns}. Az új attribútumokká váló oszlopnevek csak ékezet nélküli kisbetűket, számokat és aláhúzásjeleket tartalmazhatnak, valamint betűvel kell kezdődniük.",
"invalid_date_format": "Érvénytelen dátumformátum. Használjon érvényes dátumot.",
"invalid_number_format": "Érvénytelen számformátum. Adjon meg érvényes számot.",
"no_activity_yet": "Még nincs tevékenység",
"no_published_link_surveys_available": "Nem érhetők el közzétett hivatkozás-kérdőívek. Először tegyen közzé egy hivatkozás-kérdőívet.",
"no_published_surveys": "Nincsenek közzétett kérdőívek",
"no_responses_found": "Nem találhatók válaszok",
"not_provided": "Nincs megadva",
"number_value_required": "Szám érték megadása kötelező. Használd a törlés gombot az attribútum eltávolításához.",
"number_value_required": "Számérték szükséges. Használja a törlés gombot az attribútum eltávolításához.",
"personal_link_generated": "A személyes hivatkozás sikeresen előállítva",
"personal_link_generated_but_clipboard_failed": "A személyes hivatkozás előállítva, de nem sikerült a vágólapra másolni: {url}",
"personal_survey_link": "Személyes kérdőív-hivatkozás",
@@ -692,24 +692,24 @@
"search_contact": "Partner keresése",
"select_a_survey": "Kérdőív kiválasztása",
"select_attribute": "Attribútum kiválasztása",
"select_attribute_key": "Attribútum kulcs kiválasztása",
"select_attribute_key": "Attribútum kulcsának kiválasztása",
"survey_viewed": "Kérdőív megtekintve",
"survey_viewed_at": "Megtekintve",
"system_attributes": "Rendszer attribútumok",
"survey_viewed_at": "Megtekintve ekkor:",
"system_attributes": "Rendszerattribútumok",
"unlock_contacts_description": "Partnerek kezelése és célzott kérdőívek kiküldése",
"unlock_contacts_title": "Partnerek feloldása egy magasabb csomaggal",
"upload_contacts_error_attribute_type_mismatch": "A(z) \"{key}\" attribútum típusa \"{dataType}\", de a CSV érvénytelen értékeket tartalmaz: {values}",
"upload_contacts_error_duplicate_mappings": "Duplikált leképezések találhatók a következő attribútumokhoz: {attributes}",
"upload_contacts_error_file_too_large": "A fájl mérete meghaladja a maximális 800KB-os limitet",
"upload_contacts_error_generic": "Hiba történt a kapcsolatok feltöltése során. Kérjük, próbáld újra később.",
"upload_contacts_error_invalid_file_type": "Kérjük, tölts fel egy CSV fájlt",
"upload_contacts_error_no_valid_contacts": "A feltöltött CSV fájl nem tartalmaz érvényes kapcsolatokat, kérjük, nézd meg a minta CSV fájlt a helyes formátumhoz.",
"upload_contacts_modal_attribute_header": "Formbricks attribútum",
"upload_contacts_error_attribute_type_mismatch": "A(z) {key} attribútum {dataType}” típusként van megadva, de a CSV érvénytelen értékeket tartalmaz: {values}",
"upload_contacts_error_duplicate_mappings": "Kettőzött leképezések találhatók a következő attribútumoknál: {attributes}",
"upload_contacts_error_file_too_large": "A fájlméret túllépi a 800 KB-os legnagyobb méretet",
"upload_contacts_error_generic": "Hiba történt a partnerek feltöltése során. Próbálja meg később újra.",
"upload_contacts_error_invalid_file_type": "Töltsön fel egy CSV-fájlt",
"upload_contacts_error_no_valid_contacts": "A feltöltött CSV-fájl nem tartalmaz egyetlen érvényes partnert sem. Nézze meg a példa CSV-fájlt a helyes formátumért.",
"upload_contacts_modal_attribute_header": "Formbricks-attribútum",
"upload_contacts_modal_attributes_description": "A CSV-ben lévő oszlopok leképezése a Formbricksben lévő attribútumokra.",
"upload_contacts_modal_attributes_new": "Új attribútum",
"upload_contacts_modal_attributes_search_or_add": "Attribútum keresése vagy hozzáadása",
"upload_contacts_modal_attributes_title": "Attribútumok",
"upload_contacts_modal_csv_column_header": "CSV oszlop",
"upload_contacts_modal_csv_column_header": "CSV-oszlop",
"upload_contacts_modal_description": "CSV feltöltése a partnerek attribútumokkal együtt történő gyors importálásához",
"upload_contacts_modal_download_example_csv": "Példa CSV letöltése",
"upload_contacts_modal_duplicates_description": "Hogyan kell kezelnünk, ha egy partner már szerepel a partnerek között?",
@@ -767,11 +767,11 @@
"link_new_sheet": "Új táblázat összekapcsolása",
"no_integrations_yet": "A Google Táblázatok integrációi itt fognak megjelenni, amint hozzáadja azokat. ⏲️",
"reconnect_button": "Újrakapcsolódás",
"reconnect_button_description": "A Google Táblázatok kapcsolata lejárt. Kérjük, csatlakozzon újra a válaszok szinkronizálásának folytatásához. A meglévő táblázathivatkozások és adatok megmaradnak.",
"reconnect_button_tooltip": "Csatlakoztassa újra az integrációt a hozzáférés frissítéséhez. A meglévő táblázathivatkozások és adatok megmaradnak.",
"spreadsheet_permission_error": "Nincs jogosultsága a táblázat eléréséhez. Kérjük, győződjön meg arról, hogy a táblázat meg van osztva a Google-fiókjával, és írási jogosultsággal rendelkezik a táblázathoz.",
"reconnect_button_description": "A Google Táblázatok kapcsolata lejárt. Kapcsolódjon újra a válaszok szinkronizálásának folytatásához. A meglévő táblázatok hivatkozásai és adatai megmaradnak.",
"reconnect_button_tooltip": "Csatlakoztassa újra az integrációt a hozzáférés frissítéséhez. A meglévő táblázatok hivatkozásai és adatai megmaradnak.",
"spreadsheet_permission_error": "Nincs jogosultsága hozzáférni ehhez a táblázathoz. Győződjön meg arról, hogy a táblázat meg van-e osztva a Google-fiókjával, és rendelkezik-e írási hozzáféréssel a táblázathoz.",
"spreadsheet_url": "Táblázat URL-e",
"token_expired_error": "A Google Táblázatok frissítési tokenje lejárt vagy visszavonásra került. Kérjük, csatlakoztassa újra az integrációt."
"token_expired_error": "A Google Táblázatok frissítési tokenje lejárt vagy visszavonásra került. Csatlakoztassa újra az integrációt."
},
"include_created_at": "Létrehozva felvétele",
"include_hidden_fields": "Rejtett mezők felvétele",
@@ -900,35 +900,35 @@
"operator_ends_with": "ezzel végződik",
"operator_is_after": "ez után",
"operator_is_before": "ez előtt",
"operator_is_between": "között",
"operator_is_between": "ezek között",
"operator_is_newer_than": "újabb mint",
"operator_is_not_set": "nincs beállítva",
"operator_is_older_than": "régebbi mint",
"operator_is_same_day": "ugyanazon a napon",
"operator_is_set": "beállítva",
"operator_is_same_day": "ugyanaz a nap",
"operator_is_set": "be van állítva",
"operator_starts_with": "ezzel kezdődik",
"operator_title_contains": "Tartalmazza",
"operator_title_does_not_contain": "Nem tartalmazza",
"operator_title_ends_with": "Ezzel végződik",
"operator_title_equals": "Egyenlő",
"operator_title_greater_equal": "Nagyobb vagy egyenlő",
"operator_title_greater_equal": "Nagyobb mint vagy egyenlő",
"operator_title_greater_than": "Nagyobb mint",
"operator_title_is_after": "Ez után",
"operator_title_is_before": "Ez előtt",
"operator_title_is_between": "Között",
"operator_title_is_between": "Ezek között",
"operator_title_is_newer_than": "Újabb mint",
"operator_title_is_not_set": "Nincs beállítva",
"operator_title_is_older_than": "Régebbi mint",
"operator_title_is_same_day": "Ugyanazon a napon",
"operator_title_is_same_day": "Ugyanaz a nap",
"operator_title_is_set": "Beállítva",
"operator_title_less_equal": "Kisebb vagy egyenlő",
"operator_title_less_equal": "Kisebb mint vagy egyenlő",
"operator_title_less_than": "Kisebb mint",
"operator_title_not_equals": "Nem egyenlő",
"operator_title_not_equals": "Nem egyenlő ezzel",
"operator_title_starts_with": "Ezzel kezdődik",
"operator_title_user_is_in": "A felhasználó benne van",
"operator_title_user_is_not_in": "A felhasználó nincs benne",
"operator_user_is_in": "A felhasználó benne van",
"operator_user_is_not_in": "A felhasználó nincs benne",
"operator_title_user_is_in": "Felhasználó ebben",
"operator_title_user_is_not_in": "Felhasználó nem ebben",
"operator_user_is_in": "Felhasználó ebben",
"operator_user_is_not_in": "Felhasználó nem ebben",
"person_and_attributes": "Személy és attribútumok",
"phone": "Telefon",
"please_remove_the_segment_from_these_surveys_in_order_to_delete_it": "Távolítsa el a szakaszt ezekből a kérdőívekből, hogy törölhesse azt.",
@@ -952,7 +952,7 @@
"unlock_segments_title": "Szakaszok feloldása egy magasabb csomaggal",
"user_targeting_is_currently_only_available_when": "A felhasználók megcélzása jelenleg csak akkor érhető el, ha",
"value_cannot_be_empty": "Az érték nem lehet üres.",
"value_must_be_a_number": "Az értékének számnak kell lennie.",
"value_must_be_a_number": "Az értéknek számnak kell lennie.",
"value_must_be_positive": "Az értéknek pozitív számnak kell lennie.",
"view_filters": "Szűrők megtekintése",
"where": "Ahol",
@@ -1086,7 +1086,7 @@
"email_customization_preview_email_heading": "Helló {userName}",
"email_customization_preview_email_text": "Ez egy e-mail előnézet, amely azt mutatja meg, hogy melyik logó fog megjelenni az e-mailekben.",
"error_deleting_organization_please_try_again": "Hiba a szervezet törlésekor. Próbálja meg újra.",
"from_your_organization": "{memberName} a szervezetből",
"from_your_organization": "{memberName} a szervezetéből",
"invitation_sent_once_more": "A meghívó még egyszer elküldve.",
"invite_deleted_successfully": "A meghívó sikeresen törölve",
"invite_expires_on": "A meghívó lejár ekkor: {date}",
@@ -1251,7 +1251,7 @@
"add_fallback_placeholder": "Helykitöltő hozzáadása annak megjelenítéshez, hogy nincs visszahívandó érték.",
"add_hidden_field_id": "Rejtett mezőazonosító hozzáadása",
"add_highlight_border": "Kiemelési szegély hozzáadása",
"add_highlight_border_description": "Csak a terméken belüli felmérésekre vonatkozik.",
"add_highlight_border_description": "Csak terméken belüli kérdőívekre vonatkozik.",
"add_logic": "Logika hozzáadása",
"add_none_of_the_above": "„A fentiek közül egyik sem” hozzáadása",
"add_option": "Lehetőség hozzáadása",
@@ -1622,7 +1622,7 @@
"response_limits_redirections_and_more": "Válaszkorlátok, átirányítások és egyebek.",
"response_options": "Válasz beállításai",
"roundness": "Kerekesség",
"roundness_description": "Szabályozza a sarkok lekerekítését.",
"roundness_description": "Annak vezérlése, hogy a sarkok mennyire legyenek lekerekítve.",
"row_used_in_logic_error": "Ez a sor használatban van a(z) {questionIndex}. kérdés logikájában. Először távolítsa el a logikából.",
"rows": "Sorok",
"save_and_close": "Mentés és bezárás",
@@ -1668,7 +1668,7 @@
"survey_completed_subheading": "Ez a szabad és nyílt forráskódú kérdőív le lett zárva",
"survey_display_settings": "Kérdőív megjelenítésének beállításai",
"survey_placement": "Kérdőív elhelyezése",
"survey_styling": "Űrlap stílusának beállítása",
"survey_styling": "Kérdőív stílusának beállítása",
"survey_trigger": "Kérdőív aktiválója",
"switch_multi_language_on_to_get_started": "Kapcsolja be a többnyelvűséget a kezdéshez 👉",
"target_block_not_found": "A célblokk nem található",
@@ -1813,7 +1813,7 @@
"this_response_is_in_progress": "Ez a válasz folyamatban van.",
"zip_post_code": "Irányítószám"
},
"search_by_survey_name": "Keresés kérőívnév alapján",
"search_by_survey_name": "Keresés kérdőívnév alapján",
"share": {
"anonymous_links": {
"custom_single_use_id_description": "Ha nem titkosítja az egyszer használatos azonosítókat, akkor a „suid=…” bármilyen értéke működik egy válasznál.",
@@ -1965,8 +1965,8 @@
"filtered_responses_csv": "Szűrt válaszok (CSV)",
"filtered_responses_excel": "Szűrt válaszok (Excel)",
"generating_qr_code": "QR-kód előállítása",
"impressions": "Benyomások",
"impressions_identified_only": "Csak az azonosított kapcsolatok megjelenítései láthatók",
"impressions": "Megtekintések",
"impressions_identified_only": "Csak azonosított partnerektől származó megtekintések megjelenítése",
"impressions_tooltip": "A kérdőív megtekintési alkalmainak száma.",
"in_app": {
"connection_description": "A kérdőív a webhelye azon felhasználóinak lesz megjelenítve, akik megfelelnek az alább felsorolt feltételeknek",
@@ -2009,7 +2009,7 @@
"last_quarter": "Elmúlt negyedév",
"last_year": "Elmúlt év",
"limit": "Korlát",
"no_identified_impressions": "Nincsenek megjelenítések azonosított kapcsolatoktól",
"no_identified_impressions": "Nincsenek azonosított partnerektől származó megtekintések",
"no_responses_found": "Nem találhatók válaszok",
"other_values_found": "Más értékek találhatók",
"overall": "Összesen",
@@ -2175,12 +2175,12 @@
"advanced_styling_field_headline_size_description": "Átméretezi a címsor szövegét.",
"advanced_styling_field_headline_weight": "Címsor betűvastagsága",
"advanced_styling_field_headline_weight_description": "Vékonyabbá vagy vastagabbá teszi a címsor szövegét.",
"advanced_styling_field_height": "Minimális magasság",
"advanced_styling_field_height": "Legkisebb magasság",
"advanced_styling_field_indicator_bg": "Jelző háttere",
"advanced_styling_field_indicator_bg_description": "Kiszínezi a sáv kitöltött részét.",
"advanced_styling_field_input_border_radius_description": "Lekerekíti a beviteli mező sarkait.",
"advanced_styling_field_input_font_size_description": "Átméretezi a beviteli mezőkbe beírt szöveget.",
"advanced_styling_field_input_height_description": "Szabályozza a beviteli mező minimális magasságát.",
"advanced_styling_field_input_height_description": "A beviteli mező legkisebb magasságát vezérli.",
"advanced_styling_field_input_padding_x_description": "Térközt ad hozzá balra és jobbra.",
"advanced_styling_field_input_padding_y_description": "Térközt ad hozzá fent és lent.",
"advanced_styling_field_input_placeholder_opacity_description": "Elhalványítja a helykitöltő súgószöveget.",
@@ -2190,7 +2190,7 @@
"advanced_styling_field_option_bg": "Háttér",
"advanced_styling_field_option_bg_description": "Kitölti a választási lehetőség elemeit.",
"advanced_styling_field_option_border": "Szegély színe",
"advanced_styling_field_option_border_description": "A rádiógomb és jelölőnégyzet opciók körvonalát határozza meg.",
"advanced_styling_field_option_border_description": "Körberajzolja a rádiógomb és a jelölőnégyzet lehetőségeit.",
"advanced_styling_field_option_border_radius_description": "Lekerekíti a választási lehetőség sarkait.",
"advanced_styling_field_option_font_size_description": "Átméretezi a választási lehetőség címkéjének szövegét.",
"advanced_styling_field_option_label": "Címke színe",
@@ -2228,7 +2228,7 @@
"formbricks_branding_settings_description": "Nagyra értékeljük a támogatását, de megértjük, ha kikapcsolja.",
"formbricks_branding_shown": "A Formbricks márkajel megjelenik.",
"generate_theme_btn": "Előállítás",
"generate_theme_confirmation": "Szeretne hozzáillő színtémát létrehozni a márkajel színei alapján? Ez felülírja a jelenlegi színbeállításokat.",
"generate_theme_confirmation": "Szeretne hozzáillő színtémát előállítani a márkajel színei alapján? Ez felülírja a jelenlegi színbeállításokat.",
"generate_theme_header": "Előállítja a színtémát?",
"logo_removed_successfully": "A logó sikeresen eltávolítva",
"logo_settings_description": "Vállalati logo feltöltése a kérdőívek és hivatkozások előnézeteinek márkaépítéséhez.",
@@ -2245,7 +2245,7 @@
"show_powered_by_formbricks": "Az „A gépházban: Formbricks” aláírás megjelenítése",
"styling_updated_successfully": "A stílus sikeresen frissítve",
"suggest_colors": "Színek ajánlása",
"suggested_colors_applied_please_save": "A javasolt színek sikeresen generálva. Nyomd meg a \"Mentés\" gombot a változtatások véglegesítéséhez.",
"suggested_colors_applied_please_save": "Az ajánlott színek sikeresen előállítva. Nyomja meg a Mentés gombot a változtatások mentéséhez.",
"theme": "Téma",
"theme_settings_description": "Stílustéma létrehozása az összes kérdőívhez. Egyéni stílust engedélyezhet minden egyes kérdőívhez."
},
@@ -2307,7 +2307,7 @@
"mode": {
"formbricks_cx": "Formbricks CX",
"formbricks_cx_description": "Kérdőívek és jelentések annak megértéséhez, hogy mire van szükségük az ügyfeleknek.",
"formbricks_surveys": "Formbricks kérőívek",
"formbricks_surveys": "Formbricks kérdőívek",
"formbricks_surveys_description": "Többcélú kérdőíves platform web-, alkalmazás- és e-mail-kérdőívekhez.",
"what_are_you_here_for": "Miért van itt?"
},
@@ -3012,7 +3012,7 @@
"preview_survey_question_2_subheader": "Ez egy példa a leírásra.",
"preview_survey_question_open_text_headline": "Bármi egyéb, amit meg szeretne osztani?",
"preview_survey_question_open_text_placeholder": "Írja be ide a válaszát…",
"preview_survey_question_open_text_subheader": "A visszajelzése segít nekünk a fejlődésben.",
"preview_survey_question_open_text_subheader": "A visszajelzése segít nekünk fejlődni.",
"preview_survey_welcome_card_headline": "Üdvözöljük!",
"prioritize_features_description": "A felhasználóknak leginkább és legkevésbé szükséges funkciók azonosítása.",
"prioritize_features_name": "Funkciók rangsorolása",
@@ -3263,16 +3263,16 @@
"usability_score_name": "Rendszer-használhatósági pontszám (SUS)"
},
"workflows": {
"coming_soon_description": "Köszönjük, hogy megosztotta velünk a munkafolyamat ötletét! Jelenleg ezen a funkción dolgozunk, és a visszajelzése segít nekünk pontosan azt megépíteni, amire szüksége van.",
"coming_soon_title": "Majdnem kész vagyunk!",
"follow_up_label": "Van még valami, amit hozzá szeretne tenni?",
"follow_up_placeholder": "Milyen konkrét feladatokat szeretne automatizálni? Vannak olyan eszközök vagy integrációk, amelyeket szeretne belevenni?",
"generate_button": "Munkafolyamat generálása",
"coming_soon_description": "Köszönjük, hogy megosztotta velünk a munkafolyamatra vonatkozó ötletét! Jelenleg a funkció kialakításán dolgozunk, és a visszajelzése segít nekünk abban, hogy pontosan azt alkossuk meg, amire szüksége van.",
"coming_soon_title": "Már majdnem kész vagyunk!",
"follow_up_label": "Van még bármi egyéb, amit hozzá szeretne fűzni?",
"follow_up_placeholder": "Milyen konkrét feladatokat szeretne automatizálni? Van olyan eszköz vagy integráció, amelyet szívesen látna a rendszerben?",
"generate_button": "Munkafolyamat előállítása",
"heading": "Milyen munkafolyamatot szeretne létrehozni?",
"placeholder": "Írja le a munkafolyamatot, amelyet generálni szeretne...",
"subheading": "Generálja le a munkafolyamatát másodpercek alatt.",
"placeholder": "Mutassa be az előállítani kívánt munkafolyamatot…",
"subheading": "Munkafolyamat előállítása másodpercek alatt.",
"submit_button": "Részletek hozzáadása",
"thank_you_description": "A visszajelzése segít nekünk megépíteni azt a munkafolyamatok funkciót, amelyre tényleg szüksége van. Folyamatosan tájékoztatjuk az előrehaladásról.",
"thank_you_description": "A visszajelzése segít nekünk abban, hogy olyan Munkafolyamatok funkciót alakítsunk ki, amelyre valóban szüksége van. Folyamatosan tájékoztatni fogjuk Önt a fejlesztés előrehaladásáról.",
"thank_you_title": "Köszönjük a visszajelzését!"
}
}

View File

@@ -233,6 +233,7 @@
"self-hosting/configuration/smtp",
"self-hosting/configuration/file-uploads",
"self-hosting/configuration/domain-configuration",
"self-hosting/configuration/cdn",
"self-hosting/configuration/custom-subpath",
{
"group": "Auth & SSO",

View File

@@ -0,0 +1,145 @@
---
title: "CDN"
description: "Use a CDN in front of public Formbricks traffic without serving stale survey assets after upgrades."
icon: "globe"
---
### Why a CDN is recommended
A CDN is recommended for production self-hosting when you expose Formbricks surveys publicly. It helps you:
- reduce latency for survey respondents in different regions
- absorb traffic spikes on public survey links and embedded surveys
- terminate TLS and use provider features such as DDoS protection, WAF rules, and bot filtering
- serve static assets such as `/_next/*`, `/css/*`, and `/js/surveys.umd.cjs` closer to end users
You can run Formbricks without a CDN, but it is usually the better production setup once surveys are reachable from
the public internet.
## Recommended topology
The cleanest setup is to put the **public survey domain** behind the CDN and keep the **admin domain** separate:
```bash
# Private admin domain
WEBAPP_URL=https://admin.formbricks.example.com
NEXTAUTH_URL=https://admin.formbricks.example.com
# Public survey domain
PUBLIC_URL=https://surveys.example.com
```
In this setup:
- `PUBLIC_URL` handles survey traffic, embed traffic, and public assets
- `WEBAPP_URL` handles the admin UI, authentication, and other private routes
Please refer to the [Domain Configuration](/self-hosting/configuration/domain-configuration) guide first if you have
not set up a dedicated public domain yet.
## What the CDN should do
Configure your CDN to proxy requests to your Formbricks origin while preserving the original `Host` header and HTTPS
scheme. As a baseline, the CDN should:
- cache static assets and respect origin cache headers
- forward query strings
- bypass cache when cookies or authorization headers are present
- avoid rewriting paths or stripping prefixes
<Warning>
Do not enable a blanket "cache everything" rule for all Formbricks routes. That can cause stale survey pages,
stale client state, broken authentication flows, or outdated JavaScript bundles after an upgrade.
</Warning>
## What is safe to cache
In most setups, you should only cache static public assets aggressively:
- `/_next/*`
- `/js/*`
- `/css/*`
- `/images/*`
- `/fonts/*`
- `/icons/*`
- `/favicon.ico`
- `/storage/{environmentId}/public/*`
If you place the full public domain behind a CDN, keep HTML and API traffic proxied but not force-cached unless you
have a very deliberate invalidation strategy.
## What should bypass cache
These routes should generally not be cached:
- admin routes served from `WEBAPP_URL`
- authentication routes such as `/api/auth/*`
- public client API routes such as `/api/v1/client/*` and `/api/v2/client/*`
- survey HTML routes such as `/s/*`, `/c/*`, and `/p/*` unless your CDN strictly honors short origin cache headers
This is especially important if your CDN vendor offers features like "Cache Everything", "Edge Cache TTL", or
"Ignore origin headers". Those features can easily keep old Formbricks responses alive longer than intended.
## Important detail for upgrades
Formbricks serves the survey runtime bundle from a stable public path:
```text
/js/surveys.umd.cjs
```
That bundle is used by the website/app survey SDK. If your CDN keeps serving an older copy after you deploy a new
Formbricks version, respondents may receive outdated survey code even though the rest of the app has already been
updated.
This is the most common CDN-related upgrade issue for self-hosters: the application is updated, but the CDN still
serves cached JavaScript from the previous release.
## Upgrade checklist
Every time you update Formbricks, include CDN cache handling in your rollout:
<Steps>
<Step title="Deploy the new Formbricks version">
Update Formbricks as usual by following the [Migration Guide](/self-hosting/advanced/migration) or your normal
deployment process.
</Step>
<Step title="Purge or revalidate public assets">
Purge the CDN cache for at least <code>/js/*</code>, <code>/_next/*</code>, and <code>/css/*</code>. If your CDN
supports targeted purges, make sure <code>/js/surveys.umd.cjs</code> is included every time.
</Step>
<Step title="Check the public domain after the purge">
Open a survey or embedded survey through the public domain and verify in the browser network tab that the
JavaScript assets are fetched fresh from the updated release.
</Step>
<Step title="Hard refresh during validation">
Browser caches can hide CDN issues. During verification, use a hard refresh or disable the browser cache in
DevTools to confirm the new assets are really being served.
</Step>
</Steps>
## Practical setup guidance
Most CDN providers can be configured safely with the following approach:
1. Put only the public Formbricks domain behind the CDN.
2. Forward all requests to your reverse proxy or load balancer.
3. Cache static asset paths only.
4. Bypass cache for authenticated traffic, API traffic, and survey HTML.
5. Add a purge step to every Formbricks deployment or upgrade.
If you use a single-domain deployment, the same advice still applies, but you need more careful cache rules because
admin and public traffic share the same hostname.
## Troubleshooting stale content
If users still see outdated surveys or broken embeds after an upgrade, check the following:
- the CDN is not overriding origin cache headers with a long fixed TTL
- `/js/surveys.umd.cjs` has been purged or revalidated
- the public domain in your SDK configuration points to `PUBLIC_URL`, not the admin domain
- the browser cache is cleared during verification
- your reverse proxy is forwarding the correct `Host` and `X-Forwarded-Proto` headers
If problems remain, temporarily bypass the CDN for the public domain. If the issue disappears immediately, the CDN
cache policy is the first place to investigate.

View File

@@ -31,6 +31,9 @@ export const stripInlineStyles = (html: string): string => {
// This is more secure than regex-based approaches and handles edge cases properly
return DOMPurify.sanitize(html, {
FORBID_ATTR: ["style"],
// Preserve the target attribute (e.g. target="_blank" on links) which is not
// in DOMPurify's default allow-list but is explicitly required downstream.
ADD_ATTR: ["target"],
// Keep other attributes and tags as-is, only remove style attributes
KEEP_CONTENT: true,
});

View File

@@ -14,6 +14,9 @@ export const stripInlineStyles = (html: string): string => {
// This is more secure than regex-based approaches and handles edge cases properly
return DOMPurify.sanitize(html, {
FORBID_ATTR: ["style"],
// Preserve the target attribute (e.g. target="_blank" on links) which is not
// in DOMPurify's default allow-list but is explicitly required downstream.
ADD_ATTR: ["target"],
// Keep other attributes and tags as-is, only remove style attributes
KEEP_CONTENT: true,
});