Initial commit

This commit is contained in:
Zdeněk Burda
2026-01-09 21:26:40 +01:00
parent e83aec6dca
commit 41e3ce6f25
404 changed files with 61250 additions and 28 deletions

View File

@@ -0,0 +1,448 @@
{
"active": "Aktivní",
"close": "Zavřít",
"email": "Email",
"email_and_password_required": "Email and heslo jsou povinné.",
"enter_email": "Zadej svůj email",
"enter_password": "Zadej heslo",
"forgot_password": "Zapomenuté heslo?",
"inactive": "Neaktivní",
"login_dialog_label": "Přihlášení do VCM administrace",
"logout_failed": "Odhlášení se nepodařilo",
"password": "Heslo",
"qso_count_one": "{{count}} QSO",
"qso_count_few": "{{count}} QSO",
"qso_count_other": "{{count}} QSO",
"remember_me": "Zapamatovat přihlášení",
"sign_in": "Přihlásit",
"title": "VKV závody",
"unable_to_sign_in": "Přihlášení se nezdařilo.",
"yes": "Ano",
"no": "Ne",
"contest_name": "Název závodu",
"contest_description": "Popis závodu",
"rounds_loading": "Načítám kola…",
"unable_to_load_rounds": "Nepodařilo se načíst seznam kol.",
"rounds_empty": "Žádná kola nejsou k dispozici.",
"round_name": "Kolo",
"round_contest": "Závod",
"round_schedule": "Termín",
"round_active": "Aktivní",
"round_test": "Test",
"round_logs_deadline": "Logy do",
"round_logs_deadline_passed": "Termín pro nahrání logů již vypršel.",
"edit_round": "Upravit kolo",
"upload_log_title": "Nahrát log",
"select_file": "Vyber soubor",
"upload": "Nahrát soubor na server",
"upload_pband_mapped": "Hodnota PBand \"{{original}}\" z EDI souboru odpovídá \"{{mapped}}\" pásmu.",
"upload_pband_missing": "PBand není vyplněné v souboru, vyber pásmo ze seznamu.",
"upload_file_not_supported": "Soubor není podporován: chybí hlavička [REG1TEST;1].",
"upload_spowe_normalized_from": "SPowe bylo normalizováno z \"{{from}}\" na \"{{to}}\".",
"upload_spowe_normalized_to": "SPowe bylo normalizováno na \"{{value}}\".",
"upload_filename_missing_fields": "Doplň PCall, PSect a PBand, aby šlo ověřit název souboru.",
"upload_filename_unknown_code": "Nelze určit prefix názvu souboru pro zvolenou kategorii a pásmo.",
"upload_filename_valid": "Název souboru odpovídá pravidlům.",
"upload_filename_invalid": "Název souboru neodpovídá pravidlům. Doporučený tvar: {{expected}}",
"upload_filename_normalize": "Normalizovat název",
"upload_filename_used": "Při uploadu se použije: {{name}}",
"upload_error_pick_file": "Vyber soubor.",
"upload_error_pick_band": "Vyber pásmo (PBand) ze seznamu.",
"upload_error_band_unknown": "PBand \"{{band}}\" neodpovídá známým pásmům, vyber správnou hodnotu.",
"upload_error_pwwlo_required": "PWWLo je povinné.",
"upload_error_pwwlo_format": "PWWLo musí mít 6 znaků ve formátu lokátoru (AA00AA).",
"upload_error_rhbbs_required": "RHBBS je povinné.",
"upload_error_rhbbs_format": "RHBBS musí být ve formátu e-mailu.",
"upload_warning_rhbbs_required": "RHBBS chybí. Log lze nahrát, ale doporučujeme hodnotu doplnit.",
"upload_warning_rhbbs_format": "RHBBS není ve formátu e-mailu. Log lze nahrát, ale doporučujeme hodnotu opravit.",
"upload_error_tname_required": "TName je povinné.",
"upload_error_pcall_required": "PCall je povinné.",
"upload_error_pcall_format": "PCall musí být validní volací znak.",
"upload_error_psect_required": "PSect je povinné.",
"upload_error_psect_invalid": "PSect není validní.",
"upload_error_psect_not_iaru": "PSect není ve formátu IARU.",
"upload_error_spowe_required": "SPowe je povinné.",
"upload_error_spowe_format": "SPowe musí být číslo (může být desetinné, bez jednotek).",
"upload_error_spowe_length": "SPowe může mít maximálně 12 znaků.",
"upload_error_spowe_limit": "SPowe ({{value}} W) přesahuje limit pro kategorii {{category}} ({{limit}} W).",
"upload_error_sante_required": "SAnte je povinné.",
"upload_error_sante_length": "SAnte může mít maximálně 12 znaků.",
"upload_warn_sante_length": "Ve výsledcích bude zobrazeno pouze 12 znaků, váš popis antény je delší a bude oříznut.",
"upload_error_rcall_required": "RCall je povinné pro zvolenou kategorii.",
"upload_error_rcall_format": "RCall musí být validní volací znak.",
"upload_error_mope_missing": "Vyplň alespoň MOpe1 nebo MOpe2 (můžeš zadat více značek oddělených mezerou/středníkem/čárkou).",
"upload_error_mope_invalid": "Neplatné značky v MOpe1/MOpe2 ({{invalid}}).",
"upload_error_not_allowed": "Nahrávání není povoleno.",
"upload_file_drop_hint": "Přetáhni EDI soubor sem nebo klikni pro výběr.",
"upload_psect_format_button": "Upravit kategorie podle IARU",
"upload_error_psect_normalize": "PSect nelze normalizovat, oprav chyby a zkus to znovu.",
"upload_error_missing_round": "Chybí ID kola.",
"upload_error_power_band_mismatch": "PSect \"{{psect}}\" obsahuje výkonovou kategorii, ale pásmo \"{{band}}\" ji nepodporuje.",
"upload_error_file_read": "Soubor se nepodařilo přečíst.",
"upload_failed": "Nahrávání se nezdařilo.",
"files_uploaded": "Nahráno: {{files}}",
"upload_hint_authenticated": "Můžeš nahrát více souborů najednou.",
"upload_hint_closed": "Nahrávání je dostupné během závodu do uzávěrky logů, nebo se přihlas.",
"upload_hint_anonymous_once": "Anonymně lze nahrát jen jeden soubor.",
"upload_hint_anonymous": "Anonymně lze nahrát jeden soubor během závodu do uzávěrky logů.",
"edi_error_file_empty": "{{name}}: soubor je prázdný.",
"edi_error_missing_header": "{{name}}: chybí hlavička [REG1TEST;1].",
"edi_error_missing_field": "{{name}}: chybí {{field}}.",
"edi_error_tdate_format": "{{name}}: TDate musí být ve formátu YYYYMMDD;YYYYMMDD a první datum nesmí být větší než druhé.",
"edi_error_pwwlo_format": "{{name}}: PWWLo musí mít 6 znaků ve formátu lokátoru (AA00AA).",
"edi_error_pcall_format": "{{name}}: PCall musí být validní volací znak.",
"edi_error_rcall_for_psect": "{{name}}: chybí nebo je neplatné RCall pro PSect {{psect}}.",
"edi_error_mope_missing": "{{name}}: chybí MOpe1/MOpe2 pro multi operátory.",
"edi_error_mope_invalid": "{{name}}: neplatné značky v MOpe1/MOpe2 ({{invalid}}).",
"edi_error_missing_qso_records": "{{name}}: chybí sekce [QSORecords;N].",
"edi_error_qso_fields_min": "{{name}}: QSO #{{index}} má málo polí (minimálně {{min}} očekáváno).",
"edi_error_qso_date_format": "{{name}}: QSO #{{index}} má neplatné datum (YYMMDD).",
"edi_error_qso_year_out_of_range": "{{name}}: QSO #{{index}} má rok mimo rozsah TDate.",
"edi_error_qso_date_out_of_range": "{{name}}: QSO #{{index}} má datum mimo rozsah TDate.",
"edi_error_qso_time_format": "{{name}}: QSO #{{index}} má neplatný čas (HHMM UTC).",
"edi_error_qso_callsign": "{{name}}: QSO #{{index}} má neplatný volací znak.",
"edi_error_qso_edit_in_file": "{{name}}: Záznamy QSO nelze upravit ve formuláři, oprav je v souboru a zkus ho nahrát znovu.",
"edi_warning_qso_count_mismatch": "{{name}}: Deklarovaný počet QSO ({{expected}}) nesedí se skutečným ({{actual}}).",
"edi_error_psect_multiple_power": "PSect obsahuje více výkonových kategorií.",
"edi_error_psect_time_not_allowed": "PSect obsahuje časovou kategorii 6H, která není pro toto kolo povolena.",
"edi_warning_psect_time_not_allowed": "PSect obsahuje časovou kategorii 6H, která není pro toto kolo povolena. Log lze nahrát, ale doporučujeme hodnotu opravit.",
"edi_error_psect_multiple_time": "PSect obsahuje více časových kategorií.",
"edi_error_psect_missing_operator": "PSect musí obsahovat SO nebo MO.",
"edi_error_psect_check_extra": "PSect CHECK nesmí obsahovat žádné další tokeny.",
"edi_error_psect_unknown_tokens": "PSect obsahuje neznámé tokeny: {{tokens}}.",
"edi_warning_psect_unknown_tokens": "Neznámé tokeny v PSect: {{tokens}}.",
"edi_field_tname": "název soutěže (TName)",
"edi_field_tdate": "datum závodu (TDate=YYYYMMDD;YYYYMMDD)",
"edi_field_pcall": "volací znak (PCall)",
"edi_field_pwwlo": "lokátor (PWWLo)",
"edi_field_psect": "sekce/kategorie (PSect)",
"edi_field_pband": "použité pásmo (PBand)",
"edi_field_spowe": "výkon (SPowe)",
"edi_field_sante": "anténa (SAnte)",
"edi_field_cqsop": "QSO body (CQSOP)",
"edi_field_ctosc": "celkové body (CToSc)",
"declared_note_line1": "Deklarované výsledky jsou předběžné výsledky OK a OL stanic.",
"declared_note_line2": "Zobrazené mezinárodní výsledky nejsou oficiální výsledky a slouží pouze pro porovnání.",
"declared_note_line3": "Deklarované výsledky jsou uspořádány na základě údajů v hlavičce EDI souborů v řádce CQSOP=. Další sloupce rovněž zobrazují data z deníku, které jsou kontrolovány pouze na správnost formátu zápisu.",
"logs_loading": "Načítám logy…",
"logs_empty": "Žádné logy nejsou k dispozici.",
"unable_to_load_logs": "Nepodařilo se načíst logy.",
"logs_waiting_processing": "Čekám na zpracování",
"confirm_delete_log": "Opravdu smazat log?",
"edi_pcall_hint": "Volací znak použitý v závodě (PCall).",
"edi_padr1_hint": "Adresa QTH, řádek 1 (PAdr1).",
"edi_padr2_hint": "Adresa QTH, řádek 2 (PAdr2).",
"edi_mope1_hint": "Multi-operator řádek 1 (MOpe1).",
"edi_mope2_hint": "Multi-operator řádek 2 (MOpe2).",
"edi_rcall_hint": "Volací znak zodpovědného operátora (RCall).",
"edi_radr1_hint": "Adresa zodpovědného operátora, řádek 1 (RAdr1).",
"edi_radr2_hint": "Adresa zodpovědného operátora, řádek 2 (RAdr2).",
"edi_rpoco_rcity_hint": "PSČ a město zodpovědného operátora (RPoCo / RCity).",
"edi_rcoun_hint": "Země zodpovědného operátora (RCoun).",
"edi_rphon_hint": "Telefonní číslo zodpovědného operátora (RPhon).",
"edi_rhbbs_hint": "Domácí BBS zodpovědného operátora (RHBBS).",
"edi_stxeq_hint": "Použitá TX sestava (STXEq).",
"edi_srxeq_hint": "Použitá RX sestava (SRXEq).",
"edi_spowe_hint": "Výkon TX ve wattech (SPowe).",
"edi_sante_hint": "Použitá anténa (SAnte).",
"edi_santh_hint": "Výška antény nad zemí / nad mořem (SAntH).",
"six_hr_band_warning": "6H kategorie je povolena jen pro pásma 145 MHz a 435 MHz.",
"override_pre_match_title": "Ruční zásahy před matchingem",
"override_pre_match_hint": "Změny se projeví po kliknutí na „Pokračovat“. IGNORED vyřadí log z matchingu.",
"override_loading_logs": "Načítám logy…",
"override_no_logs": "Žádné logy k úpravě.",
"override_detail": "Detail",
"override_detail_title": "Detail logu",
"override_reason_prefix": "Důvod",
"override_status_label": "Status",
"override_status_auto": "AUTO",
"override_status_ignored": "IGNORED",
"override_status_check": "CHECK",
"override_status_ok": "OK",
"override_status_dq": "DQ",
"override_band_label": "Band",
"override_category_label": "Kategorie",
"override_power_label": "Výkon",
"override_sixhr_label": "6H",
"override_reason_label": "Důvod změny",
"override_auto": "AUTO",
"override_save": "Uložit",
"override_saving": "Ukládám…",
"override_saved": "Uloženo.",
"override_no_changes": "Bez změn.",
"override_reason_required": "Doplň důvod změny.",
"override_save_failed": "Nepodařilo se uložit override.",
"override_prev_page": "Předchozí",
"override_next_page": "Další",
"override_page_label": "Strana {{page}} / {{lastPage}}",
"qso_problem_label": "Problém",
"qso_problem_reason": "Důvod",
"qso_problem_errors": "Chyby",
"qso_problem_side": "Strana",
"qso_problem_confidence": "Match",
"qso_error_detail_exchange_serial_missing": "Chybí serial v exchange.",
"qso_error_detail_exchange_wwl_missing": "Chybí lokátor (WWL) v exchange.",
"qso_error_detail_exchange_custom_mismatch": "CUSTOM exchange neodpovídá očekávanému formátu.",
"qso_error_detail_exchange_serial_mismatch": "Neshoda serialu mezi stanicemi.",
"qso_error_detail_exchange_wwl_mismatch": "Neshoda lokátorů (WWL) mezi stanicemi.",
"qso_error_detail_exchange_serial_wwl_mismatch": "Neshoda serialu i lokátoru (WWL).",
"qso_error_detail_exchange_mismatch": "Neshoda exchange mezi stanicemi.",
"upload_hint_bulk_auth": "Hromadný upload je dostupný pouze pro přihlášené.",
"results_table_rank": "Pořadí",
"results_table_callsign": "Značka v závodě",
"results_table_locator": "Lokátor",
"results_table_category": "Kategorie",
"results_table_band": "Pásmo",
"results_table_power_watt": "Výkon [W]",
"results_table_power_category": "Výkonová kat.",
"results_table_score_total": "Body celkem",
"results_table_claimed_score": "Deklarované body",
"results_table_qso_count": "Počet QSO",
"results_table_discarded_qso": "Vyřazeno QSO",
"results_table_discarded_qso_help": "Počet QSO s is_valid=false.",
"results_table_discarded_points": "Vyřazeno bodů",
"results_table_unique_qso": "Unique QSO",
"results_table_score_per_qso": "Body / QSO",
"results_table_odx": "ODX",
"results_table_antenna": "Anténa",
"results_table_antenna_height": "Ant. height",
"results_table_status": "Status",
"results_table_override_reason": "Komentář rozhodčího",
"results_evaluating": "Vyhodnocuje se",
"results_tab": "Výsledky",
"declared_results_tab": "Deklarované výsledky",
"uploaded_logs_tab": "Nahrané logy",
"results_filter_all": "Všechny výsledky",
"results_filter_ok_ol": "OK/OL závodníci",
"declared_recalculate": "Přepočítat",
"declared_recalculate_started": "Přepočet byl spuštěn.",
"declared_recalculate_failed": "Nepodařilo se spustit přepočet.",
"round_detail_title": "Detail kola",
"round_detail_tabs_aria": "Záložky detailu kola",
"footer_rights": "© {{year}} VKV. Všechna práva vyhrazena.",
"footer_docs": "Dokumentace",
"footer_support": "Podpora",
"results_type_final": "Finální výsledky",
"results_type_declared": "Deklarované výsledky",
"results_type_log_collection_open": "Otevřeno pro sběr logů",
"results_type_not_started": "Závod ještě nezačal",
"results_type_preliminary": "Předběžné výsledky",
"results_type_test": "Testovací výsledky",
"evaluation_incremental_hint": "Spustit znovu převezme overrides z posledního běhu.",
"contests_title": "Závody",
"contest_rounds_title": "Kola závodu",
"open_rounds_title": "Závody:",
"contest_index_page": "Novinky a přehled závodů",
"select_none": "Žádný vybraný závod",
"select_contest": "Vyber závod",
"admin_form_close": "Zavřít formulář",
"admin_form_confirm_close": "Formulář obsahuje neuložené změny. Opravdu ho chcete zavřít?",
"value_na": "—",
"validation_number": "Musí být číslo.",
"validation_integer": "Musí být celé číslo.",
"validation_json": "Neplatný JSON.",
"validation_name_required": "Název je povinný.",
"validation_code_required": "Kód je povinný.",
"validation_range_1_100": "Rozsah 1100.",
"validation_min_one": "Musí být alespoň 1.",
"validation_min_zero": "Musí být alespoň 0.",
"validation_range_0_2": "Rozsah 02.",
"contest_new": "Nový závod",
"contest_edit": "Upravit závod",
"contest_add_new": "Přidat nový závod",
"contest_rounds_title_named": "Kola závodu \"{{name}}\":",
"round_new": "Nové kolo",
"round_edit": "Upravit kolo",
"round_add_new": "Přidat nové kolo",
"admin_news_title": "Novinky",
"admin_news_create": "Nová novinka",
"admin_news_loading": "Načítám novinky…",
"admin_news_load_failed": "Nepodařilo se načíst novinky.",
"admin_news_title_required": "Vyplň nadpis alespoň v jednom jazyce.",
"admin_news_content_required": "Vyplň obsah alespoň v jednom jazyce.",
"admin_news_created": "Novinka byla vytvořena.",
"admin_news_updated": "Novinka byla upravena.",
"admin_news_save_failed": "Chyba při ukládání novinky.",
"admin_news_table_aria": "Tabulka novinek",
"admin_news_title_cs": "Název (cs)",
"admin_news_title_en": "Název (en)",
"admin_news_published_at": "Publikováno",
"admin_news_published_flag": "Zveřejněno",
"admin_news_edit_aria": "Upravit novinku",
"admin_news_form_title_cs": "Nadpis (cs)",
"admin_news_form_title_en": "Nadpis (en)",
"admin_news_form_excerpt_cs": "Perex (cs)",
"admin_news_form_excerpt_en": "Perex (en)",
"admin_news_form_content_cs": "Obsah (cs)",
"admin_news_form_content_en": "Obsah (en)",
"admin_news_form_published_from": "Publikováno od",
"admin_news_form_publish": "Publikovat",
"admin_news_form_save": "Uložit změny",
"admin_news_form_create": "Vytvořit novinku",
"admin_rulesets_title": "Rulesety",
"admin_rulesets_loading": "Načítám rulesety…",
"admin_rulesets_load_failed": "Nepodařilo se načíst rulesety.",
"admin_rulesets_fix_errors": "Opravte chyby ve formuláři.",
"admin_rulesets_options_invalid_json": "Options nejsou validní JSON.",
"admin_rulesets_updated": "Ruleset byl upraven.",
"admin_rulesets_created": "Ruleset byl vytvořen.",
"admin_rulesets_save_failed": "Chyba při ukládání rulesetu.",
"admin_rulesets_help": "Nápověda",
"admin_rulesets_help_title": "Dokumentace rulesetu",
"admin_rulesets_table_aria": "Tabulka rulesetů",
"admin_rulesets_table_name": "Název",
"admin_rulesets_table_code": "Kód",
"admin_rulesets_table_scoring": "Bodování",
"admin_rulesets_table_multiplier": "Multiplikátor",
"admin_rulesets_table_updated": "Aktualizace",
"admin_rulesets_edit_aria": "Upravit ruleset",
"admin_rulesets_section_base_title": "Základ",
"admin_rulesets_section_base_desc": "Identita rulesetu a krátký popis pro rozhodčí.",
"admin_rulesets_label_name": "Název",
"admin_rulesets_label_code": "Kód",
"admin_rulesets_label_description": "Popis",
"admin_rulesets_section_scoring_title": "Bodování",
"admin_rulesets_section_scoring_desc": "Jak se počítají body a jak se zaokrouhluje vzdálenost.",
"admin_rulesets_label_scoring_mode": "Režim bodování",
"admin_rulesets_label_points_per_qso": "Body / QSO",
"admin_rulesets_label_points_per_km": "Body / km",
"admin_rulesets_label_distance_rounding": "Zaokrouhlení vzdálenosti",
"admin_rulesets_label_min_distance_km": "Min. vzdálenost (km)",
"admin_rulesets_section_operating_window_title": "Operating window",
"admin_rulesets_section_operating_window_desc": "Nastavení výběru nejlepšího 6H okna (max. 2 segmenty s pauzou >= 2 h).",
"admin_rulesets_label_operating_window_enabled": "6H operating window",
"admin_rulesets_label_operating_window_hours": "Operating window (hodiny)",
"admin_rulesets_label_sixhr_ranking_mode": "Režim pořadí 6H",
"admin_rulesets_section_matching_title": "Matching",
"admin_rulesets_section_matching_desc": "Pravidla pro párování a normalizaci volacích znaků.",
"admin_rulesets_label_time_tolerance_sec": "Tolerace času (s)",
"admin_rulesets_label_allow_time_shift": "Povolit posun času",
"admin_rulesets_label_time_shift_seconds": "Posun času (s)",
"admin_rulesets_label_time_mismatch_policy": "Politika časové neshody",
"admin_rulesets_label_allow_time_mismatch_pairing": "Párovat mimo toleranci",
"admin_rulesets_label_time_mismatch_max_sec": "Max. odchylka času (s)",
"admin_rulesets_label_dup_resolution_strategy": "Pořadí řešení duplicit",
"admin_rulesets_label_dup_resolution_placeholder": "paired_first, ok_first, earlier_time, lower_id",
"admin_rulesets_label_callsign_suffix_len": "Max délka suffixu",
"admin_rulesets_label_callsign_levenshtein": "Levenshtein max",
"admin_rulesets_label_callsign_normalization": "Normalizace volacího znaku",
"admin_rulesets_label_checklog_matching": "CHECK logy v matchingu",
"admin_rulesets_label_time_diff_dq_percent": "Časový rozdíl DQ %",
"admin_rulesets_label_time_diff_dq_sec": "Časový rozdíl DQ (s)",
"admin_rulesets_label_bad_qso_dq_percent": "Bad QSO DQ %",
"admin_rulesets_label_match_require_locator": "Matching vyžaduje lokátor",
"admin_rulesets_label_match_require_exchange": "Matching vyžaduje exchange",
"admin_rulesets_label_tiebreak_order": "Pořadí tie-breaku",
"admin_rulesets_label_tiebreak_placeholder": "time_diff, exchange_match, locator_match",
"admin_rulesets_label_ignore_suffix": "Ignorovat suffix v call",
"admin_rulesets_label_ignore_third_part": "Ignorovat 3. část call",
"admin_rulesets_label_rst_ignore_third_char": "Ignorovat 3. znak RST",
"admin_rulesets_label_letters_in_rst": "RST s písmeny",
"admin_rulesets_section_exchange_title": "Výměna",
"admin_rulesets_section_exchange_desc": "Nastavení typu exchange a povinných částí výměny.",
"admin_rulesets_label_exchange_type": "Typ exchange",
"admin_rulesets_label_exchange_requires_wwl": "Vyžadovat WWL",
"admin_rulesets_label_exchange_requires_serial": "Vyžadovat serial",
"admin_rulesets_label_exchange_requires_report": "Report součástí výměny",
"admin_rulesets_label_exchange_pattern": "Regex pro exchange",
"admin_rulesets_warning_report_required": "Busted RST se vyhodnocuje jen pokud je zapnuté „Report součástí výměny“.",
"admin_rulesets_section_errors_title": "Duplicity a busted",
"admin_rulesets_section_errors_desc": "Jak se označují a bodují DUP/NIL/BUSTED situace.",
"admin_rulesets_label_dupe_scope": "Rozsah DUP",
"admin_rulesets_label_unique_qso": "Unikátní QSO",
"admin_rulesets_label_busted_call_rx": "Busted call (RX)",
"admin_rulesets_label_busted_call_tx": "Busted call (TX)",
"admin_rulesets_label_busted_rst_rx": "Busted RST (RX)",
"admin_rulesets_label_busted_rst_tx": "Busted RST (TX)",
"admin_rulesets_label_busted_serial_rx": "Busted serial (RX)",
"admin_rulesets_label_busted_serial_tx": "Busted serial (TX)",
"admin_rulesets_label_busted_wwl_rx": "Busted WWL (RX)",
"admin_rulesets_label_busted_wwl_tx": "Busted WWL (TX)",
"admin_rulesets_label_busted_exchange_rx": "Busted exchange (RX)",
"admin_rulesets_label_busted_exchange_tx": "Busted exchange (TX)",
"admin_rulesets_label_dup_policy": "DUP policy",
"admin_rulesets_label_nil_policy": "NIL policy",
"admin_rulesets_label_no_counterpart_policy": "No counterpart policy",
"admin_rulesets_label_not_in_counterpart_policy": "Not in counterpart policy",
"admin_rulesets_label_unique_policy": "Unique policy",
"admin_rulesets_label_busted_call_policy": "Busted call policy",
"admin_rulesets_label_busted_rst_policy": "Busted RST policy",
"admin_rulesets_label_busted_exchange_policy": "Busted exchange policy",
"admin_rulesets_label_busted_serial_policy": "Busted serial policy",
"admin_rulesets_label_busted_locator_policy": "Busted locator policy",
"admin_rulesets_section_out_of_window_title": "Out-of-window",
"admin_rulesets_section_out_of_window_desc": "Chování pro QSO mimo časové okno kola.",
"admin_rulesets_label_out_of_window_policy": "Out-of-window policy",
"admin_rulesets_label_out_of_window_dq_threshold": "DQ práh (out-of-window)",
"admin_rulesets_label_require_locators": "Požadovat lokátory",
"admin_rulesets_section_multipliers_title": "Multiplikátory",
"admin_rulesets_section_multipliers_desc": "Nastavení typu a rozsahu multiplikátorů.",
"admin_rulesets_label_use_multipliers": "Používat multiplikátory",
"admin_rulesets_label_multiplier_type": "Typ multiplikátoru",
"admin_rulesets_label_multiplier_scope": "Rozsah multiplikátoru",
"admin_rulesets_label_multiplier_source": "Zdroj multiplikátoru",
"admin_rulesets_label_wwl_level": "Úroveň WWL",
"admin_rulesets_section_penalties_title": "Penalizace",
"admin_rulesets_section_penalties_desc": "Výše penalizací pro jednotlivé typy chyb.",
"admin_rulesets_label_penalty_dup": "Penalty DUP",
"admin_rulesets_label_penalty_nil": "Penalty NIL",
"admin_rulesets_label_penalty_busted_call": "Penalty busted call",
"admin_rulesets_label_penalty_busted_rst": "Penalty busted RST",
"admin_rulesets_label_penalty_busted_exchange": "Penalty busted exchange",
"admin_rulesets_label_penalty_busted_serial": "Penalty busted serial",
"admin_rulesets_label_penalty_busted_locator": "Penalty busted locator",
"admin_rulesets_label_penalty_out_of_window": "Penalty out-of-window",
"admin_rulesets_section_advanced_title": "Pokročilé",
"admin_rulesets_section_advanced_desc": "Volitelné rozšíření pravidel v JSON.",
"admin_rulesets_label_options_json": "Options (JSON)",
"admin_rulesets_create": "Nová sada pravidel",
"admin_rulesets_save": "Uložit změny",
"admin_rulesets_form_create_title": "Nová sada pravidel",
"admin_rulesets_form_edit_title": "Upravit sadu pravidel",
"about_link": "O aplikaci",
"admin_contests_link": "Správa závodů",
"admin_news_link": "Novinky",
"admin_rulesets_link": "Rulesety",
"admin_users_link": "Uživatelé",
"admin_users_title": "Uživatelé",
"admin_users_create": "Nový uživatel",
"admin_users_load_failed": "Nepodařilo se načíst uživatele.",
"admin_users_save_failed": "Chyba při ukládání uživatele.",
"admin_users_deactivate_failed": "Nepodařilo se deaktivovat uživatele.",
"admin_users_search": "Hledat jméno nebo email",
"admin_users_name": "Jméno",
"admin_users_email": "Email",
"admin_users_password": "Heslo",
"admin_users_password_hint": "Nech prázdné pro beze změny",
"admin_users_is_admin": "Admin",
"admin_users_is_active": "Aktivní",
"admin_users_actions": "Akce",
"admin_users_loading": "Načítám...",
"admin_users_empty": "Žádní uživatelé.",
"admin_users_edit": "Upravit",
"admin_users_deactivate": "Deaktivovat",
"admin_users_edit_title": "Upravit uživatele",
"admin_users_create_title": "Nový uživatel",
"admin_users_saving": "Ukládám…",
"admin_users_save": "Uložit",
"home_link": "Domů",
"contests_link": "Závody",
"contests_left_title": "Závody",
"login_link": "Přihlášení",
"logout_link": "Odhlášení",
"back": "Zpět",
"log": "Log",
"news_show_more": "Zobrazit další"
}

View File

@@ -0,0 +1,78 @@
{
"ruleset_help_name": "Název rulesetu pro administraci; nemá vliv na výpočet.",
"ruleset_help_code": "Stálý identifikátor rulesetu pro vazby, exporty a API; změna může rozbít reference.",
"ruleset_help_description": "Popis pravidel pro rozhodčí; výpočet neovlivňuje.",
"ruleset_help_scoring_mode": "Způsob bodování: DISTANCE = body z km; FIXED_POINTS = fixní body za valid QSO.",
"ruleset_help_points_per_qso": "Použije se jen ve FIXED_POINTS; valid QSO dostane tuto hodnotu bodů.",
"ruleset_help_points_per_km": "Použije se jen v DISTANCE; body = distance_km * points_per_km (po zaokrouhlení).",
"ruleset_help_use_multipliers": "Zapne multiplikátory v agregaci; při vypnutí se počítá multiplier_count=1.",
"ruleset_help_multiplier_type": "Typ multiplikátoru (WWL/DXCC/SECTION/COUNTRY), který se sbírá z QSO.",
"ruleset_help_multiplier_scope": "PER_BAND = multiplikátory se počítají zvlášť pro pásma; OVERALL = společně.",
"ruleset_help_multiplier_source": "VALID_ONLY bere jen valid QSO; ALL_MATCHED bere všechny matched (i nevalidní).",
"ruleset_help_wwl_multiplier_level": "Úroveň WWL (2/4/6) použitá pro počítání unikátů.",
"ruleset_help_checklog_matching": "Pokud je vypnuto, CHECK logy se z matchingu vyřadí a netvoří páry.",
"ruleset_help_dupe_scope": "Rozsah duplicity: BAND jen v rámci pásma; BAND_MODE i podle módu.",
"ruleset_help_callsign_normalization": "Jak se normalizují volací znaky pro matching a busted kontroly.",
"ruleset_help_callsign_suffix_max_len": "Maximální délka suffixu za lomítkem, která se má ignorovat (delší suffix se ponechá).",
"ruleset_help_callsign_levenshtein_max": "Maximální Levenshtein vzdálenost pro tolerantní matching callsignů (02).",
"ruleset_help_distance_rounding": "Jak se zaokrouhluje distance_km před bodováním (FLOOR/ROUND/CEIL).",
"ruleset_help_min_distance_km": "QSO pod touto vzdáleností nedostanou body nebo se označí jako nevalidní.",
"ruleset_help_operating_window_mode": "Zapne 6H operating window: započítají se max. 2 segmenty s pauzou >= 2 h a celkovou délkou <= 6 h.",
"ruleset_help_operating_window_hours": "Celková doba provozu je pevná (6 hodin).",
"ruleset_help_sixhr_ranking_mode": "IARU = jedna společná 6H tabulka bez SO/MO; CRK = samostatné pořadí pro SO a MO.",
"ruleset_help_time_tolerance_sec": "Maximální časový rozdíl pro matching; mimo toleranci se QSO spáruje hůř/není matched.",
"ruleset_help_allow_time_shift_one_hour": "Umožní tolerovat posun času (typicky +1h) při matchingu a označí QSO jako TIME_SHIFT.",
"ruleset_help_time_shift_seconds": "Posun v sekundách, který se zkouší jako alternativní časové okno (např. 3600).",
"ruleset_help_time_mismatch_policy": "Jak naložit s nesouladem času: INVALID označí QSO jako nevalidní; ZERO_POINTS = validní s 0 body; FLAG_ONLY ponechá body; PENALTY nastaví 0 bodů + penalizaci.",
"ruleset_help_allow_time_mismatch_pairing": "Povolí párování mimo časovou toleranci; výsledné QSO se označí TIME_MISMATCH.",
"ruleset_help_time_mismatch_max_sec": "Maximální odchylka času (v sekundách) pro párování mimo toleranci; NULL = bez limitu.",
"ruleset_help_time_diff_dq_threshold_percent": "Pokud je více než tento podíl matched QSO nad časovým prahem, log se označí jako DQ.",
"ruleset_help_time_diff_dq_threshold_sec": "Časový práh v sekundách pro výpočet podílu QSO s velkým rozdílem času.",
"ruleset_help_bad_qso_dq_threshold_percent": "Pokud podíl špatných QSO (NIL/DUP/BUSTED/OUT) dosáhne této hodnoty, log se vyřadí (DQ).",
"ruleset_help_out_of_window_dq_threshold": "Počet QSO mimo časové okno, po kterém se log přepne na DQ.",
"ruleset_help_require_locators": "Bez lokátorů se QSO označí jako nevalidní nebo nedostane body.",
"ruleset_help_require_unique_qso": "Duplicitní QSO se označí jako DUP a další už nebudou bodovat.",
"ruleset_help_out_of_window_policy": "Jak naložit s QSO mimo čas: IGNORE/0 bodů/PENALTY/INVALID.",
"ruleset_help_exchange_type": "Určuje, co je součást exchange a co se porovnává pro busted_exchange.",
"ruleset_help_exchange_requires_wwl": "Pokud chybí WWL, QSO se označí jako nevalidní/busted podle pravidel.",
"ruleset_help_exchange_requires_serial": "Pokud chybí serial, QSO se označí jako nevalidní/busted podle pravidel.",
"ruleset_help_exchange_requires_report": "RST je součást výměny; neshoda může vést na BUSTED_RST.",
"ruleset_help_exchange_pattern": "Regex pro CUSTOM exchange; nevyhovující hodnota => busted_exchange.",
"ruleset_help_match_tiebreak_order": "Pořadí kritérií při výběru kandidáta (čas, exchange, locator...).",
"ruleset_help_match_require_locator_match": "Matching povolí jen kandidáty se shodným lokátorem; jinak NIL.",
"ruleset_help_match_require_exchange_match": "Matching povolí jen kandidáty se shodnou výměnou; jinak NIL.",
"ruleset_help_letters_in_rst": "Povolí alfanumerický RST; jinak se validují jen čísla.",
"ruleset_help_ignore_slash_part": "Při normalizaci ignoruje suffix za / (např. /P).",
"ruleset_help_ignore_third_part": "Ignoruje třetí část volací značky (např. OK1ABC/0/P).",
"ruleset_help_rst_ignore_third_char": "Při porovnání RST ignoruje třetí znak (např. 59X).",
"ruleset_help_discard_qso_rec_diff_call": "Pokud se liší přijatý callsign (DX call) od odeslaného callsignu protistanice, QSO dostane error_code=BUSTED_CALL a error_side=RX. Body se neudělí; penalizace se aplikuje podle busted_call_policy.",
"ruleset_help_discard_qso_sent_diff_call": "Pokud se liší odeslaný callsign od přijatého callsignu protistanice, QSO dostane error_code=BUSTED_CALL a error_side=TX. Pro aktuální stanici se body nekrátí; penalizace se týká protistanice.",
"ruleset_help_discard_qso_rec_diff_rst": "Neshoda přijatého RST vůči protistanici označí QSO jako BUSTED_RST s error_side=RX. Body 0; penalizace dle busted_rst_policy.",
"ruleset_help_discard_qso_sent_diff_rst": "Neshoda odeslaného RST vůči protistanici označí QSO jako BUSTED_RST s error_side=TX. Pro aktuální stanici se body nekrátí; penalizace patří protistanici.",
"ruleset_help_discard_qso_rec_diff_serial": "Neshoda přijatého serialu vůči protistanici označí QSO jako BUSTED_SERIAL s error_side=RX. Politika podle busted_serial_policy.",
"ruleset_help_discard_qso_sent_diff_serial": "Neshoda odeslaného serialu vůči protistanici označí QSO jako BUSTED_SERIAL s error_side=TX. Pro aktuální stanici se body nekrátí; penalizace patří protistanici.",
"ruleset_help_discard_qso_rec_diff_wwl": "Neshoda přijatého WWL vůči protistanici označí QSO jako BUSTED_LOCATOR s error_side=RX. Politika podle busted_locator_policy.",
"ruleset_help_discard_qso_sent_diff_wwl": "Neshoda odeslaného WWL vůči protistanici označí QSO jako BUSTED_LOCATOR s error_side=TX. Pro aktuální stanici se body nekrátí; penalizace patří protistanici.",
"ruleset_help_discard_qso_rec_diff_code": "Neshoda přijatého exchange vůči protistanici označí QSO jako BUSTED_SERIAL nebo BUSTED_LOCATOR (dle typu exchange) s error_side=RX. Politiky podle busted_serial_policy/busted_locator_policy.",
"ruleset_help_discard_qso_sent_diff_code": "Neshoda odeslaného exchange vůči protistanici označí QSO jako BUSTED_SERIAL nebo BUSTED_LOCATOR (dle typu exchange) s error_side=TX. Pro aktuální stanici se body nekrátí; penalizace patří protistanici.",
"ruleset_help_dup_resolution_strategy": "Pořadí pravidel pro výběr survivor u duplicit (paired_first, ok_first, earlier_time, lower_id).",
"ruleset_help_dup_qso_policy": "DUP: ZERO_POINTS = 0; PENALTY = 0 + penalizace.",
"ruleset_help_nil_qso_policy": "NIL: ZERO_POINTS = 0; PENALTY = 0 + penalizace.",
"ruleset_help_no_counterpart_log_policy": "Bez protistanice: INVALID = nevalidní; ZERO_POINTS = validní s 0 body; FLAG_ONLY ponechá body; PENALTY = 0 + penalizace.",
"ruleset_help_not_in_counterpart_log_policy": "Není v logu protistanice: INVALID = nevalidní; ZERO_POINTS = validní s 0 body; FLAG_ONLY ponechá body; PENALTY = 0 + penalizace.",
"ruleset_help_unique_qso_policy": "Unikátní QSO: INVALID = nevalidní; ZERO_POINTS = validní s 0 body; FLAG_ONLY ponechá body.",
"ruleset_help_busted_call_policy": "BUSTED_CALL: ZERO_POINTS = 0; PENALTY = 0 + penalizace.",
"ruleset_help_busted_rst_policy": "BUSTED_RST: ZERO_POINTS = 0; PENALTY = ponechá body + penalizace.",
"ruleset_help_busted_exchange_policy": "BUSTED exchange fallback: ZERO_POINTS = 0; PENALTY = 0 + penalizace.",
"ruleset_help_busted_serial_policy": "BUSTED_SERIAL: ZERO_POINTS = 0; PENALTY = 0 + penalizace.",
"ruleset_help_busted_locator_policy": "BUSTED_LOCATOR: ZERO_POINTS = 0; PENALTY = 0 + penalizace.",
"ruleset_help_penalty_dup_points": "Výše penalizace (záporné body) za DUP, pokud je policy= PENALTY.",
"ruleset_help_penalty_nil_points": "Výše penalizace (záporné body) za NIL, pokud je policy= PENALTY.",
"ruleset_help_penalty_busted_call_points": "Výše penalizace (záporné body) za BUSTED_CALL, pokud je policy= PENALTY.",
"ruleset_help_penalty_busted_rst_points": "Výše penalizace (záporné body) za BUSTED_RST, pokud je policy= PENALTY.",
"ruleset_help_penalty_busted_exchange_points": "Výše penalizace (záporné body) za BUSTED exchange fallback, pokud je policy= PENALTY.",
"ruleset_help_penalty_busted_serial_points": "Výše penalizace (záporné body) za BUSTED_SERIAL, pokud je policy= PENALTY.",
"ruleset_help_penalty_busted_locator_points": "Výše penalizace (záporné body) za BUSTED_LOCATOR, pokud je policy= PENALTY.",
"ruleset_help_penalty_out_of_window_points": "Výše penalizace za QSO mimo časové okno, když out_of_window_policy= PENALTY.",
"ruleset_help_options_json": "Volitelná rozšíření pravidel v JSON; ovlivní výpočet jen pokud kód čte daný klíč."
}

View File

@@ -0,0 +1,444 @@
{
"active": "Active",
"close": "Close",
"email": "Email",
"email_and_password_required": "Email and password are required.",
"enter_email": "Enter your email",
"enter_password": "Enter your password",
"forgot_password": "Forgot password?",
"inactive": "Inactive",
"login_dialog_label": "Login to VCM admin",
"logout_failed": "Logout failed",
"password": "Password",
"qso_count_one": "{{count}} QSO",
"qso_count_other": "{{count}} QSOs",
"remember_me": "Remember me",
"sign_in": "Sign in",
"title": "VKV Contests",
"unable_to_sign_in": "Unable to sign in.",
"yes": "Yes",
"no": "No",
"rounds_loading": "Loading rounds…",
"unable_to_load_rounds": "Unable to load rounds.",
"rounds_empty": "No rounds available.",
"round_name": "Round",
"round_contest": "Contest",
"round_schedule": "Schedule",
"round_active": "Active",
"round_test": "Test",
"round_logs_deadline": "Logs deadline",
"round_logs_deadline_passed": "The deadline for uploading logs has passed.",
"edit_round": "Edit round",
"upload_log_title": "Upload log",
"select_file": "Select file",
"upload": "Upload file to server",
"upload_pband_mapped": "PBand \"{{original}}\" from EDI matches band \"{{mapped}}\".",
"upload_pband_missing": "PBand is missing in the file, choose a band.",
"upload_file_not_supported": "Unsupported file: missing [REG1TEST;1] header.",
"upload_spowe_normalized_from": "SPowe normalized from \"{{from}}\" to \"{{to}}\".",
"upload_spowe_normalized_to": "SPowe normalized to \"{{value}}\".",
"upload_filename_missing_fields": "Fill in PCall, PSect, and PBand so the filename can be checked.",
"upload_filename_unknown_code": "Unable to determine the filename prefix for the selected category and band.",
"upload_filename_valid": "The filename matches the required format.",
"upload_filename_invalid": "The filename does not match the required format. Suggested: {{expected}}",
"upload_filename_normalize": "Normalize name",
"upload_filename_used": "Upload will use: {{name}}",
"upload_error_pick_file": "Select a file.",
"upload_error_pick_band": "Select a band (PBand).",
"upload_error_band_unknown": "PBand \"{{band}}\" does not match known bands, choose a valid one.",
"upload_error_pwwlo_required": "PWWLo is required.",
"upload_error_pwwlo_format": "PWWLo must have 6 characters in locator format (AA00AA).",
"upload_error_rhbbs_required": "RHBBS is required.",
"upload_error_rhbbs_format": "RHBBS must be a valid email.",
"upload_warning_rhbbs_required": "RHBBS is missing. The log can be uploaded, but we recommend filling it in.",
"upload_warning_rhbbs_format": "RHBBS is not a valid email address. The log can be uploaded, but we recommend fixing it.",
"upload_error_tname_required": "TName is required.",
"upload_error_pcall_required": "PCall is required.",
"upload_error_pcall_format": "PCall must be a valid callsign.",
"upload_error_psect_required": "PSect is required.",
"upload_error_psect_invalid": "PSect is not valid.",
"upload_error_psect_not_iaru": "PSect is not in IARU format.",
"upload_error_spowe_required": "SPowe is required.",
"upload_error_spowe_format": "SPowe must be a number (decimals allowed, without units).",
"upload_error_spowe_length": "SPowe can be at most 12 characters.",
"upload_error_spowe_limit": "SPowe ({{value}} W) exceeds limit for category {{category}} ({{limit}} W).",
"upload_error_sante_required": "SAnte is required.",
"upload_error_sante_length": "SAnte can be at most 12 characters.",
"upload_warn_sante_length": "Only the first 12 characters will be shown in results; your antenna description is longer and will be truncated.",
"upload_error_rcall_required": "RCall is required for this category.",
"upload_error_rcall_format": "RCall must be a valid callsign.",
"upload_error_mope_missing": "Fill at least MOpe1 or MOpe2 (you can enter multiple calls separated by space/semicolon/comma).",
"upload_error_mope_invalid": "Invalid calls in MOpe1/MOpe2 ({{invalid}}).",
"upload_error_not_allowed": "Uploading is not allowed.",
"upload_file_drop_hint": "Drag & drop an EDI file here or click to choose.",
"upload_psect_format_button": "Adjust categories by IARU",
"upload_error_psect_normalize": "PSect cannot be normalized, fix errors and try again.",
"upload_error_missing_round": "Missing round ID.",
"upload_error_power_band_mismatch": "PSect \"{{psect}}\" contains a power category, but band \"{{band}}\" does not support it.",
"upload_error_file_read": "The file could not be read.",
"upload_failed": "Upload failed.",
"files_uploaded": "Uploaded: {{files}}",
"upload_hint_authenticated": "You can upload multiple files at once.",
"upload_hint_closed": "Uploads are allowed during contest until logs deadline, or sign in.",
"upload_hint_anonymous_once": "Anonymous upload allows only one file.",
"upload_hint_anonymous": "Anonymous upload allows one file during contest until logs deadline.",
"declared_note_line1": "Declared results are preliminary results for OK and OL stations.",
"declared_note_line2": "Displayed international results are not official and are for comparison only.",
"declared_note_line3": "Declared results are ordered based on the EDI header field CQSOP=. Other columns also show log data that are only checked for proper format.",
"logs_loading": "Loading logs…",
"logs_empty": "No logs available.",
"unable_to_load_logs": "Unable to load logs.",
"logs_waiting_processing": "Waiting for processing",
"confirm_delete_log": "Really delete the log?",
"edi_pcall_hint": "Callsign used during contest (PCall).",
"edi_padr1_hint": "QTH address line 1 (PAdr1).",
"edi_padr2_hint": "QTH address line 2 (PAdr2).",
"edi_mope1_hint": "Multi-operator line 1 (MOpe1).",
"edi_mope2_hint": "Multi-operator line 2 (MOpe2).",
"edi_rcall_hint": "Responsible operator callsign (RCall).",
"edi_radr1_hint": "Responsible operator address line 1 (RAdr1).",
"edi_radr2_hint": "Responsible operator address line 2 (RAdr2).",
"edi_rpoco_rcity_hint": "Postal code / city of responsible operator (RPoCo / RCity).",
"edi_rcoun_hint": "Country of responsible operator (RCoun).",
"edi_rphon_hint": "Phone of responsible operator (RPhon).",
"edi_rhbbs_hint": "Home BBS of responsible operator (RHBBS).",
"edi_stxeq_hint": "TX equipment (STXEq).",
"edi_srxeq_hint": "RX equipment (SRXEq).",
"edi_spowe_hint": "TX power in watts (SPowe).",
"edi_sante_hint": "Antenna used (SAnte).",
"edi_santh_hint": "Antenna height above ground/sea (SAntH).",
"six_hr_band_warning": "6H category is allowed only for bands 145 MHz and 435 MHz.",
"override_pre_match_title": "Manual overrides before matching",
"override_pre_match_hint": "Changes take effect after clicking “Continue”. IGNORED excludes the log from matching.",
"override_loading_logs": "Loading logs…",
"override_no_logs": "No logs to edit.",
"override_detail": "Detail",
"override_detail_title": "Log detail",
"override_reason_prefix": "Reason",
"override_status_label": "Status",
"override_status_auto": "AUTO",
"override_status_ignored": "IGNORED",
"override_status_check": "CHECK",
"override_status_ok": "OK",
"override_status_dq": "DQ",
"override_band_label": "Band",
"override_category_label": "Category",
"override_power_label": "Power",
"override_sixhr_label": "6H",
"override_reason_label": "Reason for change",
"override_auto": "AUTO",
"override_save": "Save",
"override_saving": "Saving…",
"override_saved": "Saved.",
"override_no_changes": "No changes.",
"override_reason_required": "Please provide a reason for the change.",
"override_save_failed": "Failed to save override.",
"override_prev_page": "Previous",
"override_next_page": "Next",
"override_page_label": "Page {{page}} / {{lastPage}}",
"qso_problem_label": "Problem",
"qso_problem_reason": "Reason",
"qso_problem_errors": "Errors",
"qso_problem_side": "Side",
"qso_problem_confidence": "Match",
"qso_error_detail_exchange_serial_missing": "Serial is missing in the exchange.",
"qso_error_detail_exchange_wwl_missing": "Locator (WWL) is missing in the exchange.",
"qso_error_detail_exchange_custom_mismatch": "CUSTOM exchange does not match the expected format.",
"qso_error_detail_exchange_serial_mismatch": "Serial mismatch between stations.",
"qso_error_detail_exchange_wwl_mismatch": "Locator (WWL) mismatch between stations.",
"qso_error_detail_exchange_serial_wwl_mismatch": "Serial and locator (WWL) mismatch.",
"qso_error_detail_exchange_mismatch": "Exchange mismatch between stations.",
"upload_hint_bulk_auth": "Bulk upload is available only for signed-in users.",
"results_table_rank": "Rank",
"results_table_callsign": "Callsign",
"results_table_locator": "Locator",
"results_table_category": "Category",
"results_table_band": "Band",
"results_table_power_watt": "Power [W]",
"results_table_power_category": "Power category",
"results_table_score_total": "Total score",
"results_table_claimed_score": "Declared score",
"results_table_qso_count": "QSO count",
"results_table_discarded_qso": "Discarded QSOs",
"results_table_discarded_qso_help": "Count of QSOs with is_valid=false.",
"results_table_discarded_points": "Discarded points",
"results_table_unique_qso": "Unique QSOs",
"results_table_score_per_qso": "Score / QSO",
"results_table_odx": "ODX",
"results_table_antenna": "Antenna",
"results_table_antenna_height": "Antenna height",
"results_table_status": "Status",
"results_table_override_reason": "Referee note",
"results_evaluating": "Evaluation in progress",
"results_tab": "Results",
"declared_results_tab": "Declared results",
"uploaded_logs_tab": "Uploaded logs",
"results_filter_all": "All results",
"results_filter_ok_ol": "OK/OL competitors",
"declared_recalculate": "Recalculate",
"declared_recalculate_started": "Recalculation started.",
"declared_recalculate_failed": "Failed to start recalculation.",
"round_detail_title": "Round detail",
"round_detail_tabs_aria": "Round detail tabs",
"footer_rights": "© {{year}} VKV. All rights reserved.",
"footer_docs": "Documentation",
"footer_support": "Support",
"results_type_final": "Final results",
"results_type_declared": "Declared results",
"results_type_log_collection_open": "Open for log collection",
"results_type_not_started": "Contest not started yet",
"results_type_preliminary": "Preliminary results",
"results_type_test": "Test results",
"evaluation_incremental_hint": "Restarting will reuse overrides from the last run.",
"contests_title": "Contests",
"contest_rounds_title": "Contest rounds",
"open_rounds_title": "Contests:",
"contest_index_page": "Contests overview",
"select_none": "No contest selected",
"select_contest": "Select contest",
"admin_form_close": "Close form",
"admin_form_confirm_close": "The form has unsaved changes. Do you really want to close it?",
"value_na": "—",
"validation_number": "Must be a number.",
"validation_integer": "Must be an integer.",
"validation_json": "Invalid JSON.",
"validation_name_required": "Name is required.",
"validation_code_required": "Code is required.",
"validation_range_1_100": "Range 1100.",
"validation_min_one": "Must be at least 1.",
"validation_min_zero": "Must be at least 0.",
"validation_range_0_2": "Range 02.",
"contest_new": "New contest",
"contest_edit": "Edit contest",
"contest_add_new": "Add new contest",
"contest_rounds_title_named": "Contest rounds \"{{name}}\":",
"round_new": "New round",
"round_edit": "Edit round",
"round_add_new": "Add new round",
"admin_news_title": "News",
"admin_news_create": "New news",
"admin_news_loading": "Loading news…",
"admin_news_load_failed": "Failed to load news.",
"admin_news_title_required": "Fill in the title in at least one language.",
"admin_news_content_required": "Fill in the content in at least one language.",
"admin_news_created": "News item created.",
"admin_news_updated": "News item updated.",
"admin_news_save_failed": "Failed to save news item.",
"admin_news_table_aria": "News table",
"admin_news_title_cs": "Title (cs)",
"admin_news_title_en": "Title (en)",
"admin_news_published_at": "Published",
"admin_news_published_flag": "Visible",
"admin_news_edit_aria": "Edit news item",
"admin_news_form_title_cs": "Title (cs)",
"admin_news_form_title_en": "Title (en)",
"admin_news_form_excerpt_cs": "Excerpt (cs)",
"admin_news_form_excerpt_en": "Excerpt (en)",
"admin_news_form_content_cs": "Content (cs)",
"admin_news_form_content_en": "Content (en)",
"admin_news_form_published_from": "Published from",
"admin_news_form_publish": "Publish",
"admin_news_form_save": "Save changes",
"admin_news_form_create": "Create news",
"admin_rulesets_title": "Rule sets",
"admin_rulesets_loading": "Loading rule sets…",
"admin_rulesets_load_failed": "Failed to load rule sets.",
"admin_rulesets_fix_errors": "Fix the errors in the form.",
"admin_rulesets_options_invalid_json": "Options are not valid JSON.",
"admin_rulesets_updated": "Rule set updated.",
"admin_rulesets_created": "Rule set created.",
"admin_rulesets_save_failed": "Failed to save rule set.",
"admin_rulesets_help": "Help",
"admin_rulesets_help_title": "Ruleset documentation",
"admin_rulesets_table_aria": "Rule sets table",
"admin_rulesets_table_name": "Name",
"admin_rulesets_table_code": "Code",
"admin_rulesets_table_scoring": "Scoring",
"admin_rulesets_table_multiplier": "Multiplier",
"admin_rulesets_table_updated": "Updated",
"admin_rulesets_edit_aria": "Edit rule set",
"admin_rulesets_section_base_title": "Basics",
"admin_rulesets_section_base_desc": "Rule set identity and a short description for referees.",
"admin_rulesets_label_name": "Name",
"admin_rulesets_label_code": "Code",
"admin_rulesets_label_description": "Description",
"admin_rulesets_section_scoring_title": "Scoring",
"admin_rulesets_section_scoring_desc": "How points are calculated and distance rounding.",
"admin_rulesets_label_scoring_mode": "Scoring mode",
"admin_rulesets_label_points_per_qso": "Points / QSO",
"admin_rulesets_label_points_per_km": "Points / km",
"admin_rulesets_label_distance_rounding": "Distance rounding",
"admin_rulesets_label_min_distance_km": "Min. distance (km)",
"admin_rulesets_section_operating_window_title": "Operating window",
"admin_rulesets_section_operating_window_desc": "Best 6H operating window selection (up to two segments separated by >=2h).",
"admin_rulesets_label_operating_window_enabled": "6H operating window",
"admin_rulesets_label_operating_window_hours": "Operating window (hours)",
"admin_rulesets_label_sixhr_ranking_mode": "6H ranking mode",
"admin_rulesets_section_matching_title": "Matching",
"admin_rulesets_section_matching_desc": "Rules for pairing and callsign normalization.",
"admin_rulesets_label_time_tolerance_sec": "Time tolerance (s)",
"admin_rulesets_label_allow_time_shift": "Allow time shift",
"admin_rulesets_label_time_shift_seconds": "Time shift (s)",
"admin_rulesets_label_time_mismatch_policy": "Time mismatch policy",
"admin_rulesets_label_allow_time_mismatch_pairing": "Pair outside tolerance",
"admin_rulesets_label_time_mismatch_max_sec": "Max time mismatch (s)",
"admin_rulesets_label_dup_resolution_strategy": "Dup resolution order",
"admin_rulesets_label_dup_resolution_placeholder": "paired_first, ok_first, earlier_time, lower_id",
"admin_rulesets_label_callsign_suffix_len": "Max suffix length",
"admin_rulesets_label_callsign_levenshtein": "Levenshtein max",
"admin_rulesets_label_callsign_normalization": "Callsign normalization",
"admin_rulesets_label_checklog_matching": "Include CHECK logs in matching",
"admin_rulesets_label_time_diff_dq_percent": "Time diff DQ %",
"admin_rulesets_label_time_diff_dq_sec": "Time diff DQ (s)",
"admin_rulesets_label_bad_qso_dq_percent": "Bad QSO DQ %",
"admin_rulesets_label_match_require_locator": "Matching requires locator",
"admin_rulesets_label_match_require_exchange": "Matching requires exchange",
"admin_rulesets_label_tiebreak_order": "Tiebreak order",
"admin_rulesets_label_tiebreak_placeholder": "time_diff, exchange_match, locator_match",
"admin_rulesets_label_ignore_suffix": "Ignore suffix in call",
"admin_rulesets_label_ignore_third_part": "Ignore 3rd part of call",
"admin_rulesets_label_rst_ignore_third_char": "Ignore 3rd RST character",
"admin_rulesets_label_letters_in_rst": "RST with letters",
"admin_rulesets_section_exchange_title": "Exchange",
"admin_rulesets_section_exchange_desc": "Exchange type and required parts.",
"admin_rulesets_label_exchange_type": "Exchange type",
"admin_rulesets_label_exchange_requires_wwl": "Require WWL",
"admin_rulesets_label_exchange_requires_serial": "Require serial",
"admin_rulesets_label_exchange_requires_report": "Report is part of exchange",
"admin_rulesets_label_exchange_pattern": "Exchange regex",
"admin_rulesets_warning_report_required": "Busted RST is evaluated only when “Report is part of exchange” is enabled.",
"admin_rulesets_section_errors_title": "Duplicates and busted",
"admin_rulesets_section_errors_desc": "How DUP/NIL/BUSTED situations are marked and scored.",
"admin_rulesets_label_dupe_scope": "Dupe scope",
"admin_rulesets_label_unique_qso": "Unique QSO",
"admin_rulesets_label_busted_call_rx": "Busted call (RX)",
"admin_rulesets_label_busted_call_tx": "Busted call (TX)",
"admin_rulesets_label_busted_rst_rx": "Busted RST (RX)",
"admin_rulesets_label_busted_rst_tx": "Busted RST (TX)",
"admin_rulesets_label_busted_serial_rx": "Busted serial (RX)",
"admin_rulesets_label_busted_serial_tx": "Busted serial (TX)",
"admin_rulesets_label_busted_wwl_rx": "Busted WWL (RX)",
"admin_rulesets_label_busted_wwl_tx": "Busted WWL (TX)",
"admin_rulesets_label_busted_exchange_rx": "Busted exchange (RX)",
"admin_rulesets_label_busted_exchange_tx": "Busted exchange (TX)",
"admin_rulesets_label_dup_policy": "DUP policy",
"admin_rulesets_label_nil_policy": "NIL policy",
"admin_rulesets_label_no_counterpart_policy": "No counterpart policy",
"admin_rulesets_label_not_in_counterpart_policy": "Not in counterpart policy",
"admin_rulesets_label_unique_policy": "Unique policy",
"admin_rulesets_label_busted_call_policy": "Busted call policy",
"admin_rulesets_label_busted_rst_policy": "Busted RST policy",
"admin_rulesets_label_busted_exchange_policy": "Busted exchange policy",
"admin_rulesets_label_busted_serial_policy": "Busted serial policy",
"admin_rulesets_label_busted_locator_policy": "Busted locator policy",
"admin_rulesets_section_out_of_window_title": "Out-of-window",
"admin_rulesets_section_out_of_window_desc": "Behavior for QSOs outside the contest time window.",
"admin_rulesets_label_out_of_window_policy": "Out-of-window policy",
"admin_rulesets_label_out_of_window_dq_threshold": "DQ threshold (out-of-window)",
"admin_rulesets_label_require_locators": "Require locators",
"admin_rulesets_section_multipliers_title": "Multipliers",
"admin_rulesets_section_multipliers_desc": "Multiplier type and scope settings.",
"admin_rulesets_label_use_multipliers": "Use multipliers",
"admin_rulesets_label_multiplier_type": "Multiplier type",
"admin_rulesets_label_multiplier_scope": "Multiplier scope",
"admin_rulesets_label_multiplier_source": "Multiplier source",
"admin_rulesets_label_wwl_level": "WWL level",
"admin_rulesets_section_penalties_title": "Penalties",
"admin_rulesets_section_penalties_desc": "Penalty values per error type.",
"admin_rulesets_label_penalty_dup": "Penalty DUP",
"admin_rulesets_label_penalty_nil": "Penalty NIL",
"admin_rulesets_label_penalty_busted_call": "Penalty busted call",
"admin_rulesets_label_penalty_busted_rst": "Penalty busted RST",
"admin_rulesets_label_penalty_busted_exchange": "Penalty busted exchange",
"admin_rulesets_label_penalty_busted_serial": "Penalty busted serial",
"admin_rulesets_label_penalty_busted_locator": "Penalty busted locator",
"admin_rulesets_label_penalty_out_of_window": "Penalty out-of-window",
"admin_rulesets_section_advanced_title": "Advanced",
"admin_rulesets_section_advanced_desc": "Optional JSON rules extensions.",
"admin_rulesets_label_options_json": "Options (JSON)",
"admin_rulesets_create": "New rule set",
"admin_rulesets_save": "Save changes",
"admin_rulesets_form_create_title": "New rule set",
"admin_rulesets_form_edit_title": "Edit rule set",
"edi_error_file_empty": "{{name}}: file is empty.",
"edi_error_missing_header": "{{name}}: missing header [REG1TEST;1].",
"edi_error_missing_field": "{{name}}: missing {{field}}.",
"edi_error_tdate_format": "{{name}}: TDate must be in YYYYMMDD;YYYYMMDD format and the first date must not be after the second.",
"edi_error_pwwlo_format": "{{name}}: PWWLo must be a 6-character locator (AA00AA).",
"edi_error_pcall_format": "{{name}}: PCall must be a valid callsign.",
"edi_error_rcall_for_psect": "{{name}}: missing or invalid RCall for PSect {{psect}}.",
"edi_error_mope_missing": "{{name}}: MOpe1/MOpe2 is required for multi operators.",
"edi_error_mope_invalid": "{{name}}: invalid callsigns in MOpe1/MOpe2 ({{invalid}}).",
"edi_error_missing_qso_records": "{{name}}: missing section [QSORecords;N].",
"edi_error_qso_fields_min": "{{name}}: QSO #{{index}} has too few fields (at least {{min}} expected).",
"edi_error_qso_date_format": "{{name}}: QSO #{{index}} has invalid date (YYMMDD).",
"edi_error_qso_year_out_of_range": "{{name}}: QSO #{{index}} year is outside TDate range.",
"edi_error_qso_date_out_of_range": "{{name}}: QSO #{{index}} date is outside TDate range.",
"edi_error_qso_time_format": "{{name}}: QSO #{{index}} has invalid time (HHMM UTC).",
"edi_error_qso_callsign": "{{name}}: QSO #{{index}} has invalid callsign.",
"edi_error_qso_edit_in_file": "{{name}}: QSO records cannot be edited in the form, fix them in the file and upload again.",
"edi_warning_qso_count_mismatch": "{{name}}: Declared QSO count ({{expected}}) does not match actual ({{actual}}).",
"edi_error_psect_multiple_power": "PSect contains multiple power categories.",
"edi_error_psect_time_not_allowed": "PSect contains 6H time category which is not allowed for this round.",
"edi_warning_psect_time_not_allowed": "PSect contains 6H time category which is not allowed for this round. Upload is allowed, but we recommend fixing the value.",
"edi_error_psect_multiple_time": "PSect contains multiple time categories.",
"edi_error_psect_missing_operator": "PSect must contain SO or MO.",
"edi_error_psect_check_extra": "PSect CHECK must not contain any other tokens.",
"edi_error_psect_unknown_tokens": "PSect contains unknown tokens: {{tokens}}.",
"edi_warning_psect_unknown_tokens": "Unknown tokens in PSect: {{tokens}}.",
"edi_field_tname": "contest name (TName)",
"edi_field_tdate": "contest date (TDate=YYYYMMDD;YYYYMMDD)",
"edi_field_pcall": "callsign (PCall)",
"edi_field_pwwlo": "locator (PWWLo)",
"edi_field_psect": "section/category (PSect)",
"edi_field_pband": "band used (PBand)",
"edi_field_spowe": "power (SPowe)",
"edi_field_sante": "antenna (SAnte)",
"edi_field_cqsop": "QSO points (CQSOP)",
"edi_field_ctosc": "total score (CToSc)",
"about_link": "About",
"admin_contests_link": "Contests",
"admin_news_link": "News",
"admin_rulesets_link": "Rule sets",
"admin_users_link": "Users",
"admin_users_title": "Users",
"admin_users_create": "New user",
"admin_users_load_failed": "Failed to load users.",
"admin_users_save_failed": "Failed to save user.",
"admin_users_deactivate_failed": "Failed to deactivate user.",
"admin_users_search": "Search name or email",
"admin_users_name": "Name",
"admin_users_email": "Email",
"admin_users_password": "Password",
"admin_users_password_hint": "Leave empty to keep unchanged",
"admin_users_is_admin": "Admin",
"admin_users_is_active": "Active",
"admin_users_actions": "Actions",
"admin_users_loading": "Loading...",
"admin_users_empty": "No users.",
"admin_users_edit": "Edit",
"admin_users_deactivate": "Deactivate",
"admin_users_edit_title": "Edit user",
"admin_users_create_title": "New user",
"admin_users_saving": "Saving…",
"admin_users_save": "Save",
"admin_link": "Administration",
"contests_link": "Contests",
"contests_left_title": "Contests",
"home_link": "Home",
"login_link": "Login",
"logout_link": "Logout",
"back": "Back",
"log": "Log",
"news_show_more": "Show more"
}

View File

@@ -0,0 +1,78 @@
{
"ruleset_help_name": "Ruleset name for administration; it does not affect scoring.",
"ruleset_help_code": "Stable ruleset identifier for links, exports, and API; changing it can break references.",
"ruleset_help_description": "Description for referees; it does not change the calculation.",
"ruleset_help_scoring_mode": "Scoring method: DISTANCE = points from km; FIXED_POINTS = fixed points per valid QSO.",
"ruleset_help_points_per_qso": "Used only in FIXED_POINTS; valid QSO gets this many points.",
"ruleset_help_points_per_km": "Used only in DISTANCE; points = distance_km * points_per_km (after rounding).",
"ruleset_help_use_multipliers": "Enables multipliers in aggregation; when off, multiplier_count=1.",
"ruleset_help_multiplier_type": "Multiplier type to collect from QSOs (WWL/DXCC/SECTION/COUNTRY).",
"ruleset_help_multiplier_scope": "PER_BAND counts per band; OVERALL counts all together.",
"ruleset_help_multiplier_source": "VALID_ONLY uses valid QSOs; ALL_MATCHED uses all matched (even invalid).",
"ruleset_help_wwl_multiplier_level": "WWL level (2/4/6) used to count uniques.",
"ruleset_help_checklog_matching": "When off, CHECK logs are excluded from matching and cannot form pairs.",
"ruleset_help_dupe_scope": "Duplicate scope: BAND within band only; BAND_MODE also by mode.",
"ruleset_help_callsign_normalization": "How callsigns are normalized for matching and busted checks.",
"ruleset_help_callsign_suffix_max_len": "Max suffix length after slash to ignore (longer suffix is kept).",
"ruleset_help_callsign_levenshtein_max": "Maximum Levenshtein distance for tolerant callsign matching (02).",
"ruleset_help_distance_rounding": "How distance_km is rounded before scoring (FLOOR/ROUND/CEIL).",
"ruleset_help_min_distance_km": "QSOs below this distance get 0 points or can be marked invalid.",
"ruleset_help_operating_window_mode": "Enables the 6H operating window: up to two segments separated by >=2h are counted (total duration <= 6 hours).",
"ruleset_help_operating_window_hours": "Total operating time is fixed (6 hours).",
"ruleset_help_sixhr_ranking_mode": "IARU = one combined 6H table without SO/MO; CRK = separate SO and MO rankings.",
"ruleset_help_time_tolerance_sec": "Max time delta for matching; outside tolerance reduces matching or yields NIL.",
"ruleset_help_allow_time_shift_one_hour": "Allows time shift (typically +1h) during matching and flags QSOs as TIME_SHIFT.",
"ruleset_help_time_shift_seconds": "Time shift in seconds used as an alternative matching window (e.g. 3600).",
"ruleset_help_time_mismatch_policy": "How to handle time mismatch: INVALID marks QSO invalid; ZERO_POINTS keeps valid but 0 points; FLAG_ONLY keeps points; PENALTY sets 0 points and adds penalty.",
"ruleset_help_allow_time_mismatch_pairing": "Allow pairing outside time tolerance; resulting QSO is flagged TIME_MISMATCH.",
"ruleset_help_time_mismatch_max_sec": "Maximum time delta (seconds) for pairing outside tolerance; NULL = unlimited.",
"ruleset_help_time_diff_dq_threshold_percent": "If more than this share of matched QSOs exceeds the time threshold, the log is marked DQ.",
"ruleset_help_time_diff_dq_threshold_sec": "Time threshold in seconds used to compute the share of QSOs with large time difference.",
"ruleset_help_bad_qso_dq_threshold_percent": "If the share of bad QSOs (NIL/DUP/BUSTED/OUT) reaches this value, the log is disqualified (DQ).",
"ruleset_help_out_of_window_dq_threshold": "Out-of-window QSO count that flips the log to DQ.",
"ruleset_help_require_locators": "Without locators, QSOs are marked invalid or score 0.",
"ruleset_help_require_unique_qso": "Duplicate QSOs are marked DUP and do not score.",
"ruleset_help_out_of_window_policy": "How to handle out-of-window QSOs: IGNORE/0 points/PENALTY/INVALID.",
"ruleset_help_exchange_type": "Defines what is part of the exchange and checked for busted_exchange.",
"ruleset_help_exchange_requires_wwl": "If WWL is missing, the QSO is marked invalid/busted per rules.",
"ruleset_help_exchange_requires_serial": "If serial is missing, the QSO is marked invalid/busted per rules.",
"ruleset_help_exchange_requires_report": "RST is part of the exchange; mismatch can lead to BUSTED_RST.",
"ruleset_help_exchange_pattern": "Regex for CUSTOM exchange; non-matching value => busted_exchange.",
"ruleset_help_match_tiebreak_order": "Tie-break order when choosing a candidate (time, exchange, locator...).",
"ruleset_help_match_require_locator_match": "Matching allows only candidates with matching locator; otherwise NIL.",
"ruleset_help_match_require_exchange_match": "Matching allows only candidates with matching exchange; otherwise NIL.",
"ruleset_help_letters_in_rst": "Allow alphanumeric RST; otherwise only digits are valid.",
"ruleset_help_ignore_slash_part": "Ignore suffix after slash during normalization (e.g. /P).",
"ruleset_help_ignore_third_part": "Ignore the third part of a callsign (e.g. OK1ABC/0/P).",
"ruleset_help_rst_ignore_third_char": "Ignores the 3rd character of RST when comparing (e.g. 59X).",
"ruleset_help_discard_qso_rec_diff_call": "If the received callsign (DX call) differs from the other stations sent callsign, the QSO is flagged BUSTED_CALL with error_side=RX. Points are zero; penalties apply per busted_call_policy.",
"ruleset_help_discard_qso_sent_diff_call": "If the sent callsign differs from the other stations received callsign, the QSO is flagged BUSTED_CALL with error_side=TX. Points for the current station stay; penalties belong to the counterpart.",
"ruleset_help_discard_qso_rec_diff_rst": "Received RST mismatch flags BUSTED_RST with error_side=RX. Points 0; penalty per busted_rst_policy.",
"ruleset_help_discard_qso_sent_diff_rst": "Sent RST mismatch flags BUSTED_RST with error_side=TX. Points stay for current station; penalties belong to the counterpart.",
"ruleset_help_discard_qso_rec_diff_serial": "Received serial mismatch flags BUSTED_SERIAL with error_side=RX. Policy uses busted_serial_policy.",
"ruleset_help_discard_qso_sent_diff_serial": "Sent serial mismatch flags BUSTED_SERIAL with error_side=TX. Points stay for current station; penalties belong to the counterpart.",
"ruleset_help_discard_qso_rec_diff_wwl": "Received locator mismatch flags BUSTED_LOCATOR with error_side=RX. Policy uses busted_locator_policy.",
"ruleset_help_discard_qso_sent_diff_wwl": "Sent locator mismatch flags BUSTED_LOCATOR with error_side=TX. Points stay for current station; penalties belong to the counterpart.",
"ruleset_help_discard_qso_rec_diff_code": "Received exchange mismatch flags BUSTED_SERIAL or BUSTED_LOCATOR (by exchange type) with error_side=RX. Policies use busted_serial_policy/busted_locator_policy.",
"ruleset_help_discard_qso_sent_diff_code": "Sent exchange mismatch flags BUSTED_SERIAL or BUSTED_LOCATOR (by exchange type) with error_side=TX. Points stay for current station; penalties belong to the counterpart.",
"ruleset_help_dup_resolution_strategy": "Order of rules for selecting the survivor among duplicates (paired_first, ok_first, earlier_time, lower_id).",
"ruleset_help_dup_qso_policy": "DUP: ZERO_POINTS = 0; PENALTY = 0 + penalty.",
"ruleset_help_nil_qso_policy": "NIL: ZERO_POINTS = 0; PENALTY = 0 + penalty.",
"ruleset_help_no_counterpart_log_policy": "No counterpart log: INVALID = invalid; ZERO_POINTS = valid with 0; FLAG_ONLY = keep points; PENALTY = 0 + penalty.",
"ruleset_help_not_in_counterpart_log_policy": "Not in counterpart log: INVALID = invalid; ZERO_POINTS = valid with 0; FLAG_ONLY = keep points; PENALTY = 0 + penalty.",
"ruleset_help_unique_qso_policy": "Unique QSO: INVALID = invalid; ZERO_POINTS = valid with 0; FLAG_ONLY = keep points.",
"ruleset_help_busted_call_policy": "BUSTED_CALL: ZERO_POINTS = 0; PENALTY = 0 + penalty.",
"ruleset_help_busted_rst_policy": "BUSTED_RST: ZERO_POINTS = 0; PENALTY = keep points + penalty.",
"ruleset_help_busted_exchange_policy": "BUSTED exchange fallback: ZERO_POINTS = 0; PENALTY = 0 + penalty.",
"ruleset_help_busted_serial_policy": "BUSTED_SERIAL: ZERO_POINTS = 0; PENALTY = 0 + penalty.",
"ruleset_help_busted_locator_policy": "BUSTED_LOCATOR: ZERO_POINTS = 0; PENALTY = 0 + penalty.",
"ruleset_help_penalty_dup_points": "Penalty points (negative) for DUP when policy= PENALTY.",
"ruleset_help_penalty_nil_points": "Penalty points (negative) for NIL when policy= PENALTY.",
"ruleset_help_penalty_busted_call_points": "Penalty points (negative) for BUSTED_CALL when policy= PENALTY.",
"ruleset_help_penalty_busted_rst_points": "Penalty points (negative) for BUSTED_RST when policy= PENALTY.",
"ruleset_help_penalty_busted_exchange_points": "Penalty points (negative) for BUSTED exchange fallback when policy= PENALTY.",
"ruleset_help_penalty_busted_serial_points": "Penalty points (negative) for BUSTED_SERIAL when policy= PENALTY.",
"ruleset_help_penalty_busted_locator_points": "Penalty points (negative) for BUSTED_LOCATOR when policy= PENALTY.",
"ruleset_help_penalty_out_of_window_points": "Penalty points for out-of-window QSOs when out_of_window_policy= PENALTY.",
"ruleset_help_options_json": "Optional rule extensions in JSON; they affect scoring only if code reads the key."
}