Files
filament-short-url/resources/lang/pl/default.php

982 lines
73 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
return [
'navigation_label' => 'Linki',
'navigation_group' => 'Skracacz linków',
'resource_title' => 'Krótki URL',
'empty_state_heading' => 'Brak linków',
'empty_state_description' => 'Zacznij tworzyć krótkie linki dla swoich kampanii marketingowych, programów partnerskich i nie tylko.',
'empty_state_action' => 'Utwórz link',
'empty_state_pixel_heading' => 'Brak pikseli',
'empty_state_pixel_description' => 'Dodaj piksele śledzące z Meta, Google, TikTok i innych platform, aby kierować reklamy do użytkowników klikających Twoje linki.',
'empty_state_pixel_action' => 'Utwórz piksel',
// Form Tabs
'tab_link' => 'Szczegóły linku',
'tab_tracking' => 'Śledzenie',
'tab_qr_design' => 'Wygląd kodu QR',
'tab_app_linking' => 'Autootwieranie aplikacji',
// App Linking
'form_section_app_linking' => 'Autootwieranie aplikacji / Głębokie linkowanie',
'auto_open_app_mobile' => 'Automatycznie otwieraj aplikację na urządzeniach mobilnych',
'auto_open_app_mobile_helper' => 'Włącz tę opcję, jeśli chcesz, aby po kliknięciu linku na telefonie automatycznie otwierała się dedykowana aplikacja mobilna zamiast przeglądarki.',
// Link Form Fields
'destination_type' => 'Typ docelowy',
'destination_type_single' => 'Pojedynczy URL',
'destination_type_split' => 'Rotator / Test A/B',
'destination_url' => 'Docelowy URL',
'destination_url_helper' => 'Oryginalny adres URL, na który chcesz przekierować odwiedzających.',
'url_key' => 'Krótki klucz',
'url_key_helper' => 'Własny klucz dla krótkiego linku (zostaw puste dla automatycznego klucza).',
'redirect_code' => 'Kod przekierowania',
'redirect_code_301' => '301 (Przekierowanie stałe - lepsze SEO)',
'redirect_code_302' => '302 (Przekierowanie tymczasowe - lepsze śledzenie)',
'status' => 'Status aktywności',
'single_use' => 'Jednorazowy link',
'single_use_helper' => 'Automatycznie dezaktywuj ten link po pierwszej wizycie.',
'forward_query_params' => 'Przekaż parametry URL',
'forward_query_params_helper' => 'Dołącz parametry wejściowe (np. tagi UTM) do docelowego adresu URL.',
'expires_at' => 'Wygasa dnia',
'activated_at' => 'Aktywny od',
'max_visits' => 'Maksymalny limit wejść',
'max_visits_helper' => 'Opcjonalny limit liczby wejść, po osiągnięciu którego link zostanie automatycznie wyłączony.',
'max_visits_no_limit' => 'Bez limitu',
'max_visits_suffix' => 'wejść',
'number_stepper_decrease' => 'Zmniejsz wartość',
'number_stepper_increase' => 'Zwiększ wartość',
'expiration_redirect_url' => 'URL przekierowania po wygaśnięciu',
'expiration_redirect_url_helper' => 'Adres URL, na który nastąpi przekierowanie, gdy link wygaśnie lub będzie nieaktywny (pozostaw puste, aby wyświetlić błąd 410 Gone).',
'form_section_validity' => 'Ważność i limity',
'use_date_validity' => 'Ustaw limity datowe',
'use_date_validity_helper' => 'Zaplanuj, kiedy link ma się włączyć i kiedy przestać działać.',
'validity_tab_intro' => 'Kontroluj dostępność linku w czasie oraz liczbę dozwolonych kliknięć. Wyłączone opcje oznaczają link bez ograniczeń czasowych i ilościowych.',
'validity_schedule_card_title' => 'Harmonogram dostępności',
'validity_schedule_card_subtitle' => 'Opcjonalna data startu i końca — idealne na kampanie, premiery i oferty limitowane.',
'validity_schedule_empty_title' => 'Dostępny bezterminowo',
'validity_schedule_empty_desc' => 'Włącz przełącznik powyżej, aby ustawić datę aktywacji, wygaśnięcia lub obie.',
'validity_schedule_timeline_label' => 'Okno aktywności',
'validity_activated_at_helper' => 'Pozostaw puste, aby link był aktywny od razu po zapisaniu.',
'validity_expires_at_helper' => 'Opcjonalnie. Po tym momencie link przestaje przekierowywać.',
'validity_single_use_toggle' => 'Włącz tryb jednorazowy',
'validity_single_use_active_note' => 'Tryb jednorazowy jest włączony — link wyłączy się po pierwszej udanej wizycie. Limit wejść nie ma zastosowania.',
'validity_max_visits_locked' => 'Niedostępne przy włączonym trybie jednorazowym',
'tracking_visit_card_title' => 'Analityka wizyt',
'tracking_visit_card_subtitle' => 'Zbieraj statystyki kliknięć dla tego linku — wyłącz dla linków prywatnościowych lub samych przekierowań.',
'tracking_visit_empty_title' => 'Śledzenie wyłączone',
'tracking_visit_empty_desc' => 'Włącz przełącznik powyżej, aby rejestrować wizyty i wybrać zapisywane dane.',
'tracking_fields_identity_title' => 'Tożsamość i źródło',
'tracking_fields_device_title' => 'Urządzenie i przeglądarka',
'track_ip_desc' => 'Adres IP do geolokalizacji i wykrywania nadużyć.',
'track_referer_desc' => 'Adres strony odsyłającej, gdy użytkownik przychodzi z innej witryny.',
'track_browser_desc' => 'Rodzina przeglądarki, np. Chrome, Safari lub Firefox.',
'track_browser_version_desc' => 'Dokładna wersja przeglądarki z user agenta.',
'track_os_desc' => 'System operacyjny, np. iOS, Windows lub Android.',
'track_os_version_desc' => 'Wersja systemu operacyjnego urządzenia.',
'track_device_type_desc' => 'Typ urządzenia — desktop, mobile, tablet lub bot.',
'track_browser_language_desc' => 'Preferowany język z nagłówka Accept-Language.',
'tracking_utm_card_title' => 'Parametry kampanii',
'tracking_utm_card_subtitle' => 'Dołącz tagi UTM do docelowego URL. Zmiany synchronizują się od razu z adresem linku.',
'tracking_ga_card_title' => 'Google Analytics 4',
'tracking_ga_card_subtitle' => 'Opcjonalny identyfikator pomiaru do zdarzeń przekierowań po stronie serwera (GA4 Measurement Protocol).',
'link_destination_card_title' => 'Docelowy adres',
'link_destination_card_subtitle' => 'Kieruj odwiedzających na jeden URL lub dziel ruch między warianty testu A/B.',
'link_short_url_card_title' => 'Krótki link',
'link_short_url_card_subtitle' => 'Wybierz domenę i dostosuj końcówkę adresu skróconego linku.',
'link_behavior_card_title' => 'Zachowanie',
'link_behavior_card_subtitle' => 'Steruj aktywnością linku i sposobem przekazywania parametrów URL.',
'link_status_desc' => 'Po wyłączeniu odwiedzający zobaczą stronę błędu zamiast przekierowania.',
'link_tags_card_title' => 'Tagi',
'link_tags_card_subtitle' => 'Dodaj do pięciu etykiet, aby organizować, filtrować i raportować linki.',
'link_notes_card_title' => 'Notatki wewnętrzne',
'link_notes_card_subtitle' => 'Prywatna notatka w panelu — nigdy niewidoczna dla odwiedzających.',
'link_notes_placeholder' => 'Dodaj przypomnienie dla zespołu…',
'targeting_rules_card_title' => 'Warunkowe przekierowania',
'targeting_rules_card_subtitle' => 'Kieruj odwiedzających na różne URL-e w zależności od urządzenia, kraju, języka lub platformy.',
'targeting_rules_empty_title' => 'Brak reguł targetowania',
'targeting_rules_empty_desc' => 'Dodaj regułę poniżej, aby nadpisać domyślny cel linku, gdy spełnione są określone warunki.',
'add_targeting_rule' => 'Dodaj regułę',
'targeting_rule_conditions_title' => 'Kiedy zastosować',
'targeting_rule_destination_title' => 'Przekieruj na',
'filter_duplicate_error' => 'Każdy typ filtra (Urządzenie, Platforma, Kraj, Język) można dodać tylko raz.',
'app_linking_card_title' => 'Linkowanie aplikacji',
'app_linking_card_subtitle' => 'Otwieraj natywną aplikację mobilną zamiast przeglądarki, gdy wykryto pasującą aplikację.',
'app_linking_empty_title' => 'Autootwieranie aplikacji wyłączone',
'app_linking_empty_desc' => 'Włącz przełącznik powyżej, aby podejrzeć i włączyć zachowanie deep link na urządzeniach mobilnych.',
'notes' => 'Wewnętrzne notatki',
'ga_tracking_id' => 'Identyfikator śledzenia Google Analytics 4',
'ga_tracking_id_helper' => 'Opcjonalny identyfikator G-XXXXXXXXXX do śledzenia przekierowań po stronie serwera.',
// UTM Builder
'utm_builder' => 'Kreator parametrów UTM',
'utm_builder_helper' => 'Dynamicznie twórz i dołączaj parametry UTM do adresu docelowego. Zmiany są synchronizowane w czasie rzeczywistym.',
'utm_source' => 'Źródło kampanii (utm_source)',
'utm_source_placeholder' => 'google, newsletter, facebook...',
'utm_medium' => 'Medium kampanii (utm_medium)',
'utm_medium_placeholder' => 'cpc, email, social...',
'utm_campaign' => 'Nazwa kampanii (utm_campaign)',
'utm_campaign_placeholder' => 'spring_sale, promo_2026...',
'utm_term' => 'Słowo kluczowe kampanii (utm_term)',
'utm_term_placeholder' => 'czarter_jachtow, kupno_jachtu...',
'utm_content' => 'Treść kampanii (utm_content)',
'utm_content_placeholder' => 'link_w_logo, reklama_tekstowa...',
// Tracking Form Fields
'track_visits' => 'Włącz śledzenie wizyt',
'track_ip' => 'Śledź adres IP',
'track_browser' => 'Śledź nazwę przeglądarki',
'track_browser_version' => 'Śledź wersję przeglądarki',
'track_os' => 'Śledź system operacyjny',
'track_os_version' => 'Śledź wersję systemu operacyjnego',
'track_device_type' => 'Śledź typ urządzenia (desktop/mobile/tablet)',
'track_referer' => 'Śledź referer URL',
'track_browser_language' => 'Śledź język przeglądarki',
// QR Design Fields
'qr_size' => 'Rozmiar kodu QR (px)',
'qr_margin' => 'Margines (Quiet Zone)',
'qr_dot_style' => 'Styl punktów',
'qr_fg_color' => 'Kolor główny (Foreground)',
'qr_bg_color' => 'Kolor tła',
'qr_gradient_enabled' => 'Włącz gradient',
'qr_gradient_from' => 'Kolor gradientu od',
'qr_gradient_to' => 'Kolor gradientu do',
'qr_gradient_type' => 'Typ gradientu',
'qr_gradient_linear' => 'Liniowy',
'qr_gradient_radial' => 'Radialny',
'qr_download' => 'Pobierz kod QR',
'qr_copied' => 'Skopiowano krótki URL do schowka!',
// QR Designer Panel UI Labels
'qr_label_size' => 'Rozmiar (px)',
'qr_label_margin' => 'Margines',
'qr_label_style' => 'Styl',
'qr_label_color' => 'Kolor',
'qr_label_from' => 'Od',
'qr_label_to' => 'Do',
'qr_label_foreground_color' => 'Kolor główny',
'qr_label_single_color' => 'Jednolity kolor',
'qr_label_gradient' => 'Gradient',
'qr_label_gradient_type' => 'Typ gradientu',
'qr_label_background' => 'Tło',
'qr_label_transparent' => 'Przezroczyste',
'qr_label_eye_config' => 'Konfiguracja oczu',
'qr_label_eye_square_style' => 'Styl kwadratu oka',
'qr_label_eye_dot_style' => 'Styl punktu oka',
'qr_label_eye_color' => 'Kolor oka',
'qr_label_preview' => 'Podgląd',
'qr_option_none' => 'Brak',
'qr_option_square' => 'Kwadrat',
'qr_option_dots' => 'Kropki',
'qr_option_dot' => 'Okrągły',
'qr_option_rounded' => 'Zaokrąglony',
'qr_option_classy' => 'Elegancki',
'qr_option_classy_rounded' => 'Zaokrąglony elegancki',
'qr_option_extra_rounded' => 'Bardzo zaokrąglony',
'qr_chart_visits_label' => 'Wizyty',
'qr_label_dots_background' => 'Punkty i tło',
'qr_label_custom_eye_config' => 'Własny styl oczu',
'qr_label_logo_overlay' => 'Nakładka logo',
'qr_label_drag_drop_upload' => 'Przeciągnij i upuść lub kliknij, aby wgrać logo',
'qr_label_upload_supports' => 'Obsługuje PNG, JPG, SVG do 10MB',
'qr_label_drag_drop_replace' => 'Przeciągnij i upuść lub kliknij, aby zastąpić logo',
'qr_label_uploading_logo' => 'Wgrywanie logo...',
'qr_logo_upload_parse_error' => 'Błąd przetwarzania odpowiedzi serwera!',
'qr_logo_upload_error' => 'Błąd podczas wgrywania pliku logo!',
'qr_logo_upload_connection_error' => 'Błąd połączenia podczas wgrywania pliku logo!',
'qr_label_remove_logo' => 'Usuń logo',
'qr_label_logo_shape' => 'Kształt logo',
'qr_label_logo_size' => 'Rozmiar logo',
'qr_label_logo_margin' => 'Margines logo',
'qr_label_clear_dots' => 'Usuń punkty pod logo',
'qr_label_live_preview' => 'Podgląd na żywo',
'qr_option_circle' => 'Koło',
'qr_label_png' => 'PNG',
'qr_label_svg' => 'SVG',
'qr_save_design' => 'Zapisz projekt',
// Table Columns
'col_short_url' => 'Krótki URL',
'col_destination_url' => 'Docelowy URL',
'col_total_visits' => 'Wizyty',
'col_status' => 'Status',
'col_expires_at' => 'Wygasa',
'col_created_at' => 'Utworzono',
// Actions
'action_stats' => 'Statystyki',
'action_copy' => 'Kopiuj link',
'action_qr' => 'Kod QR',
'action_edit' => 'Edytuj URL',
'action_delete' => 'Usuń URL',
'url_key_change_confirmation_heading' => 'Zastąpić link?',
'url_key_change_confirmation' => 'Zmieniłeś krótki klucz (Short Key) tego linku. Zapisanie tych zmian spowoduje, że dotychczasowy krótki URL przestanie działać, a wszelkie udostępnione wcześniej linki z poprzednim kluczem wygasną.',
'action_share' => 'Udostępnij link',
'action_move' => 'Przenieś',
'share_title' => 'Udostępnij Link',
'share_description' => 'Udostępnij ten krótki link przez:',
'share_copy' => 'Skopiuj',
'share_copied' => 'Krótki link skopiowany do schowka!',
'qr_modal_helper' => 'Zeskanuj, skopiuj lub pobierz swój spersonalizowany kod QR.',
'qr_download_svg' => 'Pobierz SVG',
'qr_download_png' => 'Pobierz PNG',
'success_modal_title' => 'Twój link i kod QR są gotowe!',
'success_modal_subtitle' => 'Czas na kliknięcia 🎉',
'success_modal_helper' => 'Skopiuj i udostępnij ręcznie lub wybierz platformę.',
'open_link' => 'Otwórz link',
'close_button' => 'Zamknij',
'dont_show_again' => 'Nie pokazuj opcji udostępniania po utworzeniu linku',
// Stats Page
'stats_title' => 'Statystyki',
'stats_tab_statistics' => 'Statystyki',
'stats_tab_visit_logs' => 'Logi odwiedzin',
'stats_card_total' => 'Wszystkie wizyty',
'stats_card_unique' => 'Unikalni goście',
'stats_card_today' => 'Dzisiaj',
'stats_card_today_clicks' => 'Kliknięcia dzisiaj',
'stats_card_week' => 'W tym tygodniu',
'stats_card_month' => 'W tym miesiącu',
'stats_chart_title' => 'Wizyty — Ostatnie 30 dni',
'stats_no_chart_data' => 'Brak wizyt w ostatnich 30 dniach.',
'stats_breakdown_countries' => 'Najpopularniejsze kraje',
'stats_breakdown_devices' => 'Typy urządzeń',
'stats_breakdown_browsers' => 'Przeglądarki',
'stats_breakdown_os' => 'Systemy operacyjne',
'stats_breakdown_referers' => 'Źródła (Referer)',
'stats_no_country_data' => 'Brak danych o krajach.',
'stats_no_device_data' => 'Brak danych o urządzeniach.',
'stats_no_browser_data' => 'Brak danych o przeglądarkach.',
'stats_no_os_data' => 'Brak danych o systemach.',
'stats_no_referer_data' => 'Brak danych o refererach.',
'stats_table_title' => 'Logi odwiedzin',
'stats_btn_back' => 'Wróć do listy',
'stats_btn_copy' => 'Kopiuj krótki URL',
'stats_btn_refresh' => 'Odśwież',
'stats_refresh_success' => 'Statystyki zostały zaktualizowane w czasie rzeczywistym!',
'stats_col_time' => 'Czas',
'stats_col_country' => 'Kraj',
'stats_col_device' => 'Urządzenie',
'stats_col_browser' => 'Przeglądarka',
'stats_col_os' => 'System operacyjny',
'stats_col_ip' => 'IP',
'stats_no_visits' => 'Nie zarejestrowano jeszcze żadnych wizyt.',
// Settings Page
'settings_nav_label' => 'Ustawienia',
'settings_save_btn' => 'Zapisz ustawienia',
'settings_saved' => 'Ustawienia zostały zapisane!',
'settings_tab_general' => 'Ogólne',
'settings_tab_geoip' => 'Geo-IP',
'settings_tab_ga4' => 'Google Analytics 4',
'settings_section_routing' => 'Routing i przekierowania',
'settings_section_queue' => 'Kolejka',
'settings_section_geoip' => 'Wykrywanie Geo-IP',
'settings_section_ga4' => 'GA4 Measurement Protocol',
'settings_ga4_description' => 'Skonfiguruj serwerowe śledzenie zdarzeń GA4 przez Measurement Protocol. Zdarzenia są wysyłane w tle bez blokowania przekierowania.',
'settings_site_name' => 'Niestandardowa nazwa witryny',
'settings_site_name_helper' => 'Własna nazwa witryny/marki wyświetlana na ekranach przekierowań (monit o hasło, ostrzeżenia, piksele). W przypadku braku wartości, zostanie użyta nazwa z konfiguracji config("app.name").',
'settings_route_prefix' => 'Prefiks trasy',
'settings_route_prefix_helper' => 'Segment URL przed kluczem, np. "/s/abc123". Pozostaw puste, aby serwować linki bezpośrednio w głównej domenie (np. "domena.com/abc123"). Zmiana wymaga php artisan config:clear.',
'settings_lock_url_key' => 'Blokuj krótki klucz (Short Key)',
'settings_lock_url_key_helper' => 'Globalnie wyłącz możliwość edycji krótkiego klucza po utworzeniu linku.',
'settings_disable_default_domain' => 'Wyłącz domyślną domenę',
'settings_disable_default_domain_helper' => 'Ukryj domyślną domenę aplikacji na liście wyboru podczas tworzenia i edycji linków.',
'settings_redirect_code_helper' => 'Przekierowanie tymczasowe (302) zmusza przeglądarki do każdorazowego odpytywania serwera, co pozwala na dokładne zliczanie wszystkich wizyt. Przekierowanie stałe (301) jest zapisywane w pamięci podręcznej przeglądarek i wyszukiwarek (lepsze pod SEO), przez co kolejne przejścia tego samego użytkownika mogą nie być rejestrowane w statystykach.',
'settings_key_length' => 'Długość auto-generowanego klucza',
'settings_key_length_helper' => 'Liczba znaków klucza (base62). 6 znaków = ~56 miliardów unikalnych kluczy.',
'settings_cache_ttl' => 'TTL cache przekierowania',
'settings_cache_ttl_helper' => 'Sekundy cachowania rekordów krótkich URL. Ustaw 0 aby wyłączyć (niezalecane na produkcji).',
'settings_queue_connection' => 'Połączenie kolejki',
'settings_queue_connection_helper' => 'Połączenie kolejki Laravel do asynchronicznego śledzenia wizyt. Każdy sterownik ma inne wymagania — zobacz infobox poniżej po zmianie wartości.',
'settings_redis_test' => 'Testuj połączenie Redis',
'settings_redis_test_ok' => 'Połączenie Redis OK',
'settings_redis_test_fail' => 'Połączenie Redis nieudane',
'settings_queue_worker_test' => 'Testuj workera kolejki',
'settings_queue_worker_test_ok' => 'Worker kolejki OK',
'settings_queue_worker_test_fail' => 'Worker kolejki nie odpowiada',
'settings_section_redis' => 'Połączenie Redis',
'settings_section_redis_description' => 'Te wartości nadpisują database.redis i queue.connections.redis w runtime, gdy Queue Connection = redis. Zapisz ustawienia po zmianie.',
'settings_redis_host' => 'Host Redis',
'settings_redis_host_helper' => 'Host lub IP serwera Redis dla kolejek, liczników, statystyk i live feed.',
'settings_redis_port' => 'Port Redis',
'settings_redis_port_helper' => 'Domyślnie: 6379.',
'settings_redis_password' => 'Hasło Redis',
'settings_redis_password_helper' => 'Pozostaw puste, jeśli Redis nie wymaga hasła. Przechowywane bezpiecznie w ustawieniach.',
'settings_redis_database' => 'Baza Redis (DB index)',
'settings_redis_database_helper' => 'Indeks logicznej bazy Redis (015). Domyślnie: 0.',
'settings_redis_key_prefix' => 'Prefix kluczy',
'settings_redis_key_prefix_helper' => 'Opcjonalny prefix dla kluczy pluginu w Redis. Puste = domyślny z config.',
'settings_queue_worker_command' => '<strong>Wymagany proces w tle (Queue Worker):</strong> Uruchom workera na tym samym połączeniu i nazwie kolejki co powyżej (niezależnie od <code>QUEUE_CONNECTION</code> w <code>.env</code>): <code class="px-1.5 py-0.5 rounded bg-gray-200 dark:bg-gray-800 text-xs">php artisan queue:work :connection --queue=:queue</code>',
'settings_queue_mode_desc_redis' => '<strong>redis</strong> — tryb produkcyjny: async joby, dedykowane liczniki/statystyki/live feed w Redis (phpredis lub Predis), auto buforowanie. Skonfiguruj Redis poniżej (nadpisuje .env w runtime). Użyj przycisków testu przed zapisem.',
'settings_queue_mode_desc_database' => '<strong>database</strong> — joby w tabeli <code>jobs</code>. Bez dedykowanego Redis — chyba że włączysz buforowanie ręcznie.',
'settings_queue_mode_desc_sqs' => '<strong>sqs</strong> — joby przez AWS SQS. Wymaga poprawnych credentiali AWS w <code>config/queue.php</code>.',
'settings_queue_mode_desc_beanstalkd' => '<strong>beanstalkd</strong> — joby przez Beanstalkd. Wymaga działającego serwera beanstalkd.',
'settings_queue_mode_desc_deferred' => '<strong>deferred</strong> — joby po odpowiedzi HTTP w tym samym procesie PHP. Bez workera, ale większe obciążenie po response przy ruchu.',
'settings_queue_mode_desc_background' => '<strong>background</strong> — sterownik background Laravel: joby po response bez workera (podobnie jak deferred).',
'settings_queue_mode_desc_failover' => '<strong>failover</strong> — łańcuch failover z <code>config/queue.php</code>. Upewnij się, że co najmniej jeden backend działa.',
'settings_queue_mode_desc_default' => '<strong>:connection</strong> — async tracking przez to połączenie Laravel. Skonfiguruj je w <code>config/queue.php</code>.',
'settings_queue_mode_info_sync' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-white/10" data-callout-type="info"><div class="text-sm text-neutral-800 dark:text-neutral-300"><strong>sync</strong> — wizyty zapisywane podczas przekierowania (bez workera). Dev i niski ruch. Opcjonalne ręczne buforowanie liczników poniżej.</div></div>',
'settings_geoip_enabled' => 'Włącz wykrywanie Geo-IP',
'settings_geoip_enabled_helper' => 'Wykrywaj i zapisuj kraj odwiedzającego przy każdej wizycie.',
'settings_geoip_driver' => 'Sterownik wykrywania',
'settings_geoip_driver_helper' => 'Metoda rozwiązywania kraju odwiedzającego na podstawie adresu IP.',
'settings_geoip_driver_headers' => 'Nagłówki CDN (najszybsze — Cloudflare, CloudFront)',
'settings_geoip_driver_maxmind' => 'MaxMind lokalna baza (offline, zerowe opóźnienie)',
'settings_geoip_driver_ipapi' => 'ip-api.com (darmowe API, limit 45 req/min)',
'settings_geoip_cache_ttl' => 'Czas życia (TTL) pamięci podręcznej IP',
'settings_geoip_cache_ttl_helper' => 'Czas (w sekundach) przechowywania wyniku wykrywania lokalizacji dla danego IP. Zapobiega to wielokrotnemu odpytywaniu API lub baz danych przy kolejnych kliknięciach tej samej osoby. Domyślnie: 86400 (24 godziny). Maksymalnie: 31536000 (1 rok).',
'settings_geoip_timeout' => 'Timeout API',
'settings_geoip_timeout_helper' => 'Maksymalna liczba sekund oczekiwania na odpowiedź zewnętrznego API Geo-IP.',
'settings_maxmind_path' => 'Ścieżka bazy MaxMind',
'settings_maxmind_path_helper' => 'Bezwzględna ścieżka do pliku GeoLite2-Country.mmdb lub GeoIP2-Country.mmdb. Wymagana gdy sterownik to MaxMind.',
'settings_maxmind_info_callout' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-white/10" data-callout-type="info"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="flex-none size-5 text-neutral-800 dark:text-neutral-300" aria-label="Info"><path d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm.75-11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm0 2.5a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0v-4a.75.75 0 0 1 .75-.75Z"></path></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full text-neutral-800 dark:text-neutral-300" data-component-part="callout-content"><span><strong>Jak skonfigurować MaxMind (Offline Geo-IP):</strong><br>1. Zarejestruj darmowe konto na <a href="https://www.maxmind.com" target="_blank" class="underline text-primary-600 dark:text-primary-400">maxmind.com</a>.<br>2. Pobierz bezpłatną bazę danych <strong>GeoLite2 Country</strong> lub <strong>GeoLite2 City</strong> w formacie binarnym (plik z rozszerzeniem <code class="px-1 py-0.5 rounded bg-gray-200 dark:bg-gray-800 text-xs">.mmdb</code>).<br>3. Prześlij plik na swój serwer, np. do katalogu <code class="px-1 py-0.5 rounded bg-gray-200 dark:bg-gray-800 text-xs">storage/geoip/GeoLite2-Country.mmdb</code>.<br>4. Wpisz pełną ścieżkę bezwzględną poniżej i kliknij przycisk <strong>Zweryfikuj plik</strong> z prawej strony pola.</span></div></div>',
'settings_maxmind_verify' => 'Weryfikuj plik',
'settings_maxmind_verify_ok' => '✅ Plik znaleziony i dostępny',
'settings_maxmind_verify_fail' => '❌ Plik nie istnieje lub jest niedostępny',
'settings_maxmind_verify_empty' => 'Najpierw podaj ścieżkę do pliku.',
'settings_ga4_api_secret' => 'Klucz API Measurement Protocol',
'settings_ga4_api_secret_helper' => 'Wygeneruj w GA4 → Admin → Strumienie danych → twój strumień → Klucze API Measurement Protocol.',
'settings_ga4_firebase_app_id' => 'Firebase App ID (opcjonalne)',
'settings_ga4_firebase_app_id_helper' => 'Wymagane tylko przy śledzeniu strumienia Firebase/aplikacji. Zostaw puste dla standardowych strumieni GA4.',
'settings_ga4_verify' => 'Testuj połączenie',
'settings_ga4_verify_ok' => '✅ Klucz API jest prawidłowy — połączenie z GA4 udane',
'settings_ga4_verify_fail' => '❌ Nieprawidłowy klucz API — GA4 odrzuciło żądanie',
'settings_ga4_verify_empty' => 'Najpierw wprowadź klucz API.',
'settings_ga4_verify_measurement_id' => 'Measurement ID do testu połączenia',
'settings_ga4_verify_measurement_id_helper' => 'Podaj dokładny G-XXXXXXXXXX ze strumienia GA4 powiązanego z kluczem API. Wymagane, chyba że używasz Firebase App ID.',
'settings_ga4_verify_measurement_required' => 'Podaj Measurement ID (G-XXXXXXXXXX) lub Firebase App ID, aby przetestować połączenie.',
'settings_ga4_verify_error' => '⚠️ Błąd połączenia — nie można nawiązać kontaktu z GA4',
'settings_section_buffering' => 'Buforowanie liczników wizyt',
'settings_buffering_enabled' => 'Buforuj kliknięcia w pamięci podręcznej (Cache)',
'settings_buffering_helper' => 'Po włączeniu, zliczenia kliknięć będą buforowane w pamięci podręcznej aplikacji i muszą być okresowo synchronizowane z bazą danych za pomocą komendy "php artisan short-url:sync-counters". Zapobiega to blokowaniu wierszy bazy danych i spadkom wydajności przy masowym ruchu.',
'settings_buffering_redis_auto' => 'Włączane automatycznie przy kolejce Redis. Liczniki linków, statystyki „dziś” i live feed korzystaj z dedykowanego połączenia Redis kolejki (phpredis lub Predis) — niezależnie od CACHE_STORE. Zaplanuj short-url:sync-counters co minutę.',
'settings_buffering_worker_info' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-white/10" data-callout-type="info"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="flex-none size-5 text-neutral-800 dark:text-neutral-300" aria-label="Info"><path d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm.75-11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm0 2.5a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0v-4a.75.75 0 0 1 .75-.75Z"></path></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full [&_kbd]:bg-background-light dark:[&_kbd]:bg-background-dark [_code]:!text-current [_kbd]:!text-current [_a]:!text-current [_a]:border-current [_strong]:!text-current text-neutral-800 dark:text-neutral-300" data-component-part="callout-content"><span><strong>Wymagane zadanie Cron (Scheduler):</strong> Włączyłeś buforowanie kliknięć. Musisz dodać do harmonogramu zadań (cron) komendę synchronizującą liczniki z bazą danych:<br><code class="px-1.5 py-0.5 rounded bg-gray-200 dark:bg-gray-800 text-xs">* * * * * cd /sciezka-do-twojego-projektu && php artisan schedule:run >> /dev/null 2>&1</code><br>Komenda uruchamiana automatycznie w tle przez harmonogram:<br><code class="px-1.5 py-0.5 rounded bg-gray-200 dark:bg-gray-800 text-xs">php artisan short-url:sync-counters</code></span></div></div>',
// CDN Trust Settings
'settings_trust_cdn_headers' => 'Ufaj nagłówkom CDN i proxy',
'settings_trust_cdn_headers_helper' => 'Włącz tę opcję, jeśli Twoja aplikacja działa za CDN (np. Cloudflare, AWS CloudFront) lub reverse proxy. Pozwala to na pobieranie prawdziwego adresu IP klienta i kodu kraju z nagłówków CDN. Uwaga: włączaj tylko wtedy, gdy faktycznie korzystasz z proxy, w przeciwnym razie adresy IP mogą być sfałszowane!',
'settings_trust_cdn_headers_info_callout' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-amber-200 bg-amber-50 dark:border-amber-700 dark:bg-amber-950/20" data-callout-type="warning"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="flex-none size-5 text-amber-800 dark:text-amber-300" aria-label="Warning"><path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-8-5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0v-4.5A.75.75 0 0 1 10 5Zm0 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full text-amber-900 dark:text-amber-200" data-component-part="callout-content"><span><strong>Uwaga (Bezpieczeństwo adresów IP):</strong> Włączyłeś ufanie nagłówkom proxy. Włączaj tę opcję <u>wyłącznie</u> wtedy, gdy Twoja strona jest podpięta pod:<br>• <strong>Cloudflare</strong> (odczyt z nagłówka CF-Connecting-IP)<br>• <strong>AWS CloudFront</strong> lub inny system CDN<br>• <strong>Nginx/Apache reverse proxy</strong> przekazujący nagłówki X-Forwarded-For.<br><br><strong>Wyłącz tę opcję</strong>, jeśli Twój serwer łączy się z użytkownikami bezpośrednio. Jeśli pozostawisz ją włączoną bez CDN, złośliwi użytkownicy mogą łatwo sfałszować swój adres IP, wysyłając własny nagłówek.</span></div></div>',
'settings_geoip_headers_warning' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-amber-200 bg-amber-50 dark:border-amber-700 dark:bg-amber-950/20" data-callout-type="warning"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="flex-none size-5 text-amber-800 dark:text-amber-300" aria-label="Warning"><path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-8-5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0v-4.5A.75.75 0 0 1 10 5Zm0 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full text-amber-900 dark:text-amber-200" data-component-part="callout-content"><span><strong>Brak zaufania do nagłówków proxy:</strong> Wybrałeś <em>Nagłówki CDN</em> jako sterownik wykrywania lokalizacji, ale opcja <strong>„Ufaj nagłówkom CDN i proxy”</strong> w zakładce <em>Ogólne</em> jest wyłączona. Wykrywanie kraju nie będzie działać, dopóki jej nie włączysz.</span></div></div>',
'settings_geoip_headers_info' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-blue-200 bg-blue-50 dark:border-blue-700 dark:bg-blue-950/20" data-callout-type="info"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="flex-none size-5 text-blue-800 dark:text-blue-300" aria-label="Info"><path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z" clip-rule="evenodd" /></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full text-blue-900 dark:text-blue-200" data-component-part="callout-content"><span><strong>Sterownik Nagłówki CDN:</strong> Zapis ustawień z tym sterownikiem automatycznie włącza opcję <strong>Ufaj nagłówkom CDN i proxy</strong>. Gdy brakuje nagłówków kraju z CDN, wtyczka korzysta z MaxMind, a następnie ip-api.com (z limitem zapytań) zamiast zwracać puste dane geo.</span></div></div>',
// Stats View & Export Localization
'stats_filter_visited_from' => 'Odwiedzono od',
'stats_filter_visited_until' => 'Odwiedzono do',
'stats_filter_counted_in_stats' => 'Tylko wizyty w statystykach',
'stats_action_export' => 'Eksportuj CSV',
'stats_csv_time' => 'Czas',
'stats_csv_ip' => 'Adres IP',
'stats_csv_country' => 'Kraj',
'stats_csv_device' => 'Urządzenie',
'stats_csv_browser' => 'Przeglądarka',
'stats_csv_os' => 'System operacyjny',
'stats_csv_referer' => 'Źródło (Referer)',
'stats_csv_utm_source' => 'Źródło UTM (utm_source)',
'stats_csv_utm_medium' => 'Medium UTM (utm_medium)',
'stats_csv_utm_campaign' => 'Kampania UTM (utm_campaign)',
'stats_csv_utm_term' => 'Słowo kluczowe UTM (utm_term)',
'stats_csv_utm_content' => 'Treść UTM (utm_content)',
'stats_csv_variant' => 'Wariant A/B',
'stats_csv_qr_scan' => 'Skan QR',
'stats_csv_bot' => 'Bot',
'stats_csv_proxy' => 'Proxy/VPN',
// Bulk Actions Localization
'action_enable_selected' => 'Włącz zaznaczone',
'action_disable_selected' => 'Wyłącz zaznaczone',
// Form Sections Localization
'form_section_options' => 'Opcje',
'form_section_notes' => 'Wewnętrzne notatki',
'form_section_tracking' => 'Śledzenie wizyt',
'form_section_tracking_desc' => 'Włącz lub wyłącz śledzenie wizyt i statystyki dla tego skróconego linku.',
'form_section_tracked_fields' => 'Śledzone pola',
'form_section_tracked_fields_desc' => 'Wybierz, które metryki są zbierane dla tego linku — przydatne pod kątem analityki i prywatności.',
'form_section_analytics' => 'Zewnętrzne systemy analityczne',
'form_section_analytics_desc' => 'Zintegruj ten link z Google Analytics, podając identyfikator strumienia danych.',
// New Dashboard Analytics Keys
'stats_card_top_source' => 'Główne źródło UTM',
'stats_card_top_country' => 'Główny kraj',
'stats_filter_date_range' => 'Zakres dat',
'stats_preset_24_hours' => 'Ostatnie 24 godziny',
'stats_preset_7_days' => 'Ostatnie 7 dni',
'stats_preset_30_days' => 'Ostatnie 30 dni',
'stats_preset_90_days' => 'Ostatnie 90 dni',
'stats_preset_custom' => 'Własny zakres',
'stats_breakdown_cities' => 'Najpopularniejsze miasta',
'stats_no_city_data' => 'Brak danych o miastach.',
'stats_breakdown_utm_source' => 'Źródło',
'stats_breakdown_utm_medium' => 'Medium',
'stats_breakdown_utm_campaign' => 'Kampania',
'stats_breakdown_utm_term' => 'Słowo kluczowe',
'stats_breakdown_utm_content' => 'Treść',
'stats_no_utm_data' => 'Brak danych o parametrach UTM.',
// New Targeting & Security Tab and fields
'tab_targeting' => 'Targetowanie',
'tab_password' => 'Hasło',
'tab_validity' => 'Wygasanie',
'expiration_dates_section_title' => 'Wygasanie czasowe',
'visit_limits_section_title' => 'Limity wizyt',
'security_section_title' => 'Kontrola bezpieczeństwa',
'password' => 'Hasło dostępu',
'password_helper' => 'Wymagaj od odwiedzających wprowadzenia hasła przed przekierowaniem.',
'password_card_title' => 'Ochrona hasłem',
'password_card_subtitle' => 'Wymagaj od odwiedzających wprowadzenia hasła przed przekierowaniem.',
'warning_page_card_title' => 'Strona ostrzegająca przed przekierowaniem',
'warning_page_card_subtitle' => 'Pokaż ekran pośredni przed przekierowaniem odwiedzających na docelowy adres.',
'warning_page_empty_title' => 'Strona ostrzegająca wyłączona',
'warning_page_empty_desc' => 'Włącz przełącznik powyżej, aby pokazać ekran bezpieczeństwa przed zewnętrznym przekierowaniem.',
'warning_page_active_title' => 'Strona ostrzegająca włączona',
'confirm_password' => 'Potwierdź hasło',
'new_password' => 'Nowe hasło',
'change_password' => 'Zmień hasło',
'remove_password' => 'Usuń hasło',
'password_status_active' => 'Ochrona hasłem jest włączona.',
'password_status_active_desc' => 'Link jest zabezpieczony. Dostęp wymaga podania prawidłowego hasła.',
'password_empty_state_title' => 'Brak zabezpieczeń',
'password_empty_state_desc' => 'Dodaj hasło, aby ograniczyć dostęp do tego skróconego linku tylko dla wybranych osób.',
'password_settings_section' => 'Ustawienia hasła',
'password_change_short' => 'Zmień',
'password_remove_short' => 'Usuń',
'save_password' => 'Zapisz hasło',
'expiration_dates_section_desc' => 'Zarządzaj dostępnością linku w czasie. Możesz zaplanować start kampanii lub jej automatyczne zakończenie.',
'visit_limits_section_desc' => 'Ogranicz maksymalną liczbę kliknięć. Idealne do biletów jednorazowych lub ofert limitowanych.',
'set_password' => 'Ustaw hasło',
'cancel' => 'Anuluj',
'confirm' => 'Potwierdź',
'password_required_error' => 'Hasło jest wymagane.',
'password_mismatch_error' => 'Hasła nie są identyczne.',
'show_warning_page' => 'Pokaż stronę ostrzegającą przed przekierowaniem',
'show_warning_page_helper' => 'Pokaż ekran pośredni ostrzegający o przekierowaniu na zewnętrzny adres (ochrona przed phishingiem/bezpieczeństwo NSFW).',
'targeting_type' => 'Strategia targetowania',
'targeting_type_none' => 'Brak (Bezpośrednie przekierowanie)',
'targeting_type_device' => 'Przekierowania zależne od urządzenia',
'targeting_type_country' => 'Przekierowania zależne od kraju (Geo-IP)',
'targeting_type_rotation' => 'Podział ruchu A/B (Rotacja)',
'targeting_type_language' => 'Przekierowania zależne od języka przeglądarki',
'device_targeting_rules' => 'Reguły urządzeń',
'country_targeting_rules' => 'Reguły krajów',
'language_targeting_rules' => 'Reguły języków',
'rotation_targeting_rules' => 'Cele rotacji',
'device_mobile' => 'Docelowy URL dla urządzeń mobilnych',
'device_tablet' => 'Docelowy URL dla tabletów',
'device_desktop' => 'Docelowy URL dla komputerów stacjonarnych',
'country_code' => 'Kod kraju',
'language_code' => 'Kod języka',
'rotation_url' => 'Docelowy URL',
'rotation_weight' => 'Waga ruchu',
'rotation_weight_helper' => 'Procent ruchu kierowany na ten URL (np. 50 dla 50%). Wagi są bilansowane proporcjonalnie.',
'rotation_variants' => 'Warianty rotacji A/B',
'rotation_variants_helper' => 'Zdefiniuj adresy URL oraz podział ruchu dla testów split A/B.',
'variant_label' => 'Etykieta wariantu',
'variant_url' => 'Docelowy URL wariantu',
'variant_weight' => 'Udział w ruchu (%)',
'safe_browsing_error' => 'Ten adres URL został oznaczony przez Google Safe Browsing jako niebezpieczny.',
// New Advanced Targeting Builder
'targeting_rules' => 'Reguły targetowania',
'add_filter' => 'Dodaj filtr',
'match' => 'Warunek dopasowania',
'match_or' => 'Dowolny z poniższych filtrów (OR)',
'match_and' => 'Wszystkie poniższe filtry (AND)',
'filter_device' => 'Urządzenie',
'filter_platform' => 'Platforma (System operacyjny)',
'filter_country' => 'Kraj',
'filter_language' => 'Język przeglądarki',
'direct_to_url' => 'Przekieruj na URL',
'select_devices' => 'Wybierz urządzenia',
'select_platforms' => 'Wybierz systemy operacyjne',
'select_countries' => 'Wybierz kraje',
'select_languages' => 'Wybierz języki przeglądarki',
'device_desktop_label' => 'Komputer stacjonarny',
'device_mobile_label' => 'Smartfon',
'device_tablet_label' => 'Tablet',
// New Settings Page Fields
'settings_tab_advanced' => 'Wydajność i bezpieczeństwo',
'settings_section_aggregation' => 'Zarządzanie logami o dużym natężeniu ruchu',
'settings_retention_days' => 'Czas retencji surowych logów',
'settings_retention_days_helper' => 'Wybierz, przez jaki okres czasu chcesz przechowywać szczegółowe logi pojedynczych wizyt przed ich usunięciem.',
'settings_aggregation_enabled' => 'Włącz automatyczne usuwanie surowych logów',
'settings_aggregation_enabled_helper' => 'Codzienne zadanie o 02:00 zawsze agreguje wizyty do statystyk dziennych. Ten przełącznik kontroluje wyłącznie usuwanie surowych logów starszych niż wybrany okres retencji.',
'retention_30_days' => '30 dni',
'retention_60_days' => '60 dni',
'retention_90_days' => '90 dni',
'retention_180_days' => '180 dni (pół roku)',
'retention_365_days' => '365 dni (rok)',
'retention_730_days' => '2 lata',
'settings_section_rate_limiting' => 'Ograniczanie częstotliwości żądań / Ochrona przed botami',
'settings_rate_limiting_enabled' => 'Włącz ochronę limitów',
'settings_rate_limiting_enabled_helper' => 'Ograniczaj liczbę przekierowań na adres IP klienta.',
'settings_rate_limiting_route_info' => '<div class="callout my-2 px-4 py-3 rounded-xl border border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950/30 text-sm text-blue-900 dark:text-blue-200"><strong>Dwa poziomy:</strong> trasy przekierowań mają też domyślny limit middleware pakietu (<code>120/min</code> na IP). Po włączeniu limitera poniżej <em>oba</em> mogą zwrócić HTTP 429 — pierwszy osiągnięty limit wygrywa.</div>',
'settings_rate_limiting_max_attempts' => 'Maksymalna dopuszczalna liczba przekierowań',
'settings_rate_limiting_max_attempts_helper' => 'Maksymalna liczba żądań w oknie wygasania.',
'settings_rate_limiting_decay_seconds' => 'Okno wygasania (sekundy)',
'settings_rate_limiting_decay_seconds_helper' => 'Przedział czasowy dla ograniczenia liczby żądań.',
// Queue Settings Additions
'settings_queue_name' => 'Nazwa kolejki',
'settings_queue_name_helper' => 'Docelowa nazwa kolejki, do której wysyłane są zadania śledzenia i synchronizacji liczników. Domyślnie: "default".',
'settings_queue_worker_info' => '<div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-neutral-200 bg-neutral-50 dark:border-neutral-700 dark:bg-white/10" data-callout-type="info"><div class="mt-0.5 w-4" data-component-part="callout-icon"><svg viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="flex-none size-5 text-neutral-800 dark:text-neutral-300" aria-label="Info"><path d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm.75-11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm0 2.5a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0v-4a.75.75 0 0 1 .75-.75Z"></path></svg></div><div class="text-sm prose dark:prose-invert min-w-0 w-full [&_kbd]:bg-background-light dark:[&_kbd]:bg-background-dark [_code]:!text-current [_kbd]:!text-current [_a]:!text-current [_a]:border-current [_strong]:!text-current text-neutral-800 dark:text-neutral-300" data-component-part="callout-content"><span><strong>Wymagany proces w tle (Queue Worker):</strong> Wybrane połączenie działa asynchronicznie. Uruchom workera na tym samym połączeniu i nazwie kolejki co powyżej (niezależnie od <code>QUEUE_CONNECTION</code> w <code>.env</code>):<br><code class="px-1.5 py-0.5 rounded bg-gray-200 dark:bg-gray-800 text-xs">php artisan queue:work :connection --queue=:queue</code></span></div></div>',
'settings_geoip_stats_cache_ttl' => 'Czas życia (TTL) pamięci podręcznej statystyk',
'settings_geoip_stats_cache_ttl_helper' => 'Czas (w sekundach) buforowania obliczeń statystyk linków na pulpicie. Kiedy przeglądasz statystyki, system pobiera dane z cache zamiast każdorazowo przeliczać miliony rekordów w bazie danych. Domyślnie: 300 (5 minut). Maksymalnie: 86400 (24 godziny).',
// Default Tracking Tab
'settings_tab_tracking_defaults' => 'Domyślne śledzenie',
'settings_section_tracking_defaults' => 'Domyślne ustawienia śledzenia wizyt',
'settings_section_tracking_defaults_helper' => 'Ustawienia te określają domyślny status śledzenia dla nowo tworzonych krótkich adresów URL.',
'settings_track_visits_default' => 'Śledź wizyty domyślnie',
'settings_track_ip_default' => 'Domyślne śledzenie adresu IP',
'settings_track_browser_default' => 'Domyślne śledzenie przeglądarki',
'settings_track_browser_version_default' => 'Domyślne śledzenie wersji przeglądarki',
'settings_track_os_default' => 'Domyślne śledzenie systemu operacyjnego',
'settings_track_os_version_default' => 'Domyślne śledzenie wersji systemu operacyjnego',
'settings_track_referer_default' => 'Domyślne śledzenie adresu referera',
'settings_track_device_type_default' => 'Domyślne śledzenie typu urządzenia',
'settings_track_browser_language_default' => 'Domyślne śledzenie języka przeglądarki',
'settings_track_anonymize_ips' => 'Anonimizacja adresów IP (RODO/GDPR)',
'settings_track_anonymize_ips_helper' => 'Zastępuje ostatni oktet adresów IPv4 lub ostatnie 80 bitów adresów IPv6 zerami przed zapisaniem ich w bazie danych w celu zapewnienia zgodności z RODO/GDPR. Surowy adres IP jest nadal prywatnie haszowany (SHA-256), co gwarantuje poprawność zliczania unikalnych odwiedzin.',
'stats_filter_limit_exceeded' => 'Maksymalnie 5 filtrów może być nałożonych jednocześnie.',
// QR Defaults Tab
'settings_tab_qr' => 'Domyślne QR',
'settings_section_qr_defaults' => 'Domyślne opcje wyglądu kodów QR',
'settings_section_qr_defaults_helper' => 'Skonfiguruj standardowy styl wyglądu automatycznie ładowany dla nowo generowanych kodów QR.',
'settings_qr_size' => 'Domyślny rozmiar (px)',
'settings_qr_margin' => 'Domyślny margines',
'settings_qr_dot_style' => 'Domyślny styl kropek',
'settings_qr_foreground_color' => 'Domyślny kolor pierwszego planu',
'settings_qr_background_color' => 'Domyślny kolor tła',
'settings_qr_gradient_enabled' => 'Domyślnie włącz gradient',
'settings_qr_gradient_from' => 'Kolor gradientu od',
'settings_qr_gradient_to' => 'Kolor gradientu do',
'settings_qr_gradient_type' => 'Domyślny typ gradientu',
// Views
'password_title' => 'Wymagane hasło',
'password_description' => 'Ten link jest chroniony hasłem. Wprowadź poprawne hasło, aby kontynuować.',
'password_placeholder' => 'Wpisz hasło',
'password_btn_unlock' => 'Odblokuj i przekieruj',
'password_error' => 'Nieprawidłowe hasło.',
'warning_title' => 'Ostrzeżenie o przekierowaniu',
'warning_description' => 'Opuszczasz ten bezpieczny portal i zostajesz przekierowany na zewnętrzny link docelowy. Upewnij się, że ufasz poniższemu adresowi:',
'warning_btn_continue' => 'Kontynuuj do celu',
'warning_btn_back' => 'Wróć',
'pixel_loading_title' => 'Łączenie...',
'pixel_loading_description' => 'Przygotowujemy połączenie i za chwilę zostaniesz przekierowany.',
// Marketing & API Tab
'tab_marketing' => 'Marketing i API',
'marketing_pixels_title' => 'Piksele retargetingowe (Client-Side)',
'marketing_pixels_desc' => 'Dodaj skrypty śledzące, aby dołączać ciasteczka odwiedzających i budować grupy remarketingowe reklam.',
'marketing_pixels_empty_title' => 'Brak przypisanych pikseli',
'marketing_pixels_empty_desc' => 'Wybierz piksele retargetingowe, które mają uruchamiać skrypty śledzące po kliknięciu w ten link.',
'marketing_pixels_select_placeholder' => 'Wybierz piksele retargetingowe…',
'marketing_webhook_empty_title' => 'Brak skonfigurowanego webhooka',
'marketing_webhook_empty_desc' => 'Dodaj docelowy adres URL, aby otrzymywać powiadomienia HTTP POST w czasie rzeczywistym po każdym kliknięciu.',
'pixel_meta' => 'Meta Pixel ID',
'pixel_google' => 'Google Tag / GA4 ID',
'pixel_linkedin' => 'LinkedIn Partner ID',
'marketing_webhooks_title' => 'Integracja Webhook linku',
'marketing_webhooks_desc' => 'Skonfiguruj niestandardowy adres URL, pod który wysłane zostanie natychmiastowe powiadomienie HTTP POST po kliknięciu.',
'webhook_url' => 'Dedykowany Webhook URL',
'webhook_helper_alert' => 'Po skonfigurowaniu adresu URL webhooka, przy każdym kliknięciu w ten skrócony link wyślemy żądanie HTTP POST w tle w czasie rzeczywistym. Payload zawiera szczegółowe metadane wizyty w JSON (klucz linku, docelowy URL, urządzenie, przeglądarka, system operacyjny, geolokalizacja, referer, parametry UTM i flagę skanowania QR). Adresy IP nie są uwzględniane w payloadzie webhooka.',
'webhook_show_payload' => 'Pokaż przykładowy payload JSON',
'webhook_payload_modal_title' => 'Przykładowy payload webhooka',
'webhook_payload_modal_desc' => 'Przykładowe body JSON dla zdarzenia visited. Rzeczywiste wartości zależą od każdego kliknięcia.',
'webhook_payload_copy' => 'Kopiuj payload do schowka',
// Settings tab additions
'settings_tab_developer' => 'API i Webhooki',
'settings_section_rest_api' => 'Dostęp do REST API',
'settings_api_enabled' => 'Włącz Developer REST API',
'settings_api_enabled_helper' => 'Zezwól zewnętrznym systemom na tworzenie, listowanie i usuwanie krótkich linków przez REST API. Wyłącz, aby zablokować wszystkie endpointy /api/short-url/* odpowiedzią 503.',
'settings_section_global_webhook' => 'Konfiguracja globalnego Webhooka',
'settings_global_webhook_enabled' => 'Włącz globalny webhook',
'settings_global_webhook_enabled_helper' => 'Gdy włączone, wtyczka będzie wysyłać powiadomienia HTTP POST w tle przy zdarzeniach wszystkich linków.',
'settings_global_webhook_url' => 'Globalny Webhook URL',
'settings_global_webhook_url_helper' => 'Adres URL, pod który wysyłane będą w tle powiadomienia o zdarzeniach ze wszystkich linków.',
'settings_webhook_events' => 'Monitorowane zdarzenia Webhooka',
'settings_webhook_events_helper' => 'Wybierz zdarzenia, które powinny wyzwalać wysłanie powiadomienia POST.',
'webhook_event_visited' => 'Odwiedziny linku (Wizyta)',
'webhook_event_created' => 'Utworzenie linku',
'webhook_event_expired' => 'Wygaśnięcie linku (Data)',
'webhook_event_limit_reached' => 'Osiągnięcie limitu kliknięć',
'settings_section_api_keys' => 'Klucze API Dewelopera',
'settings_api_keys_description' => 'Zarządzaj kluczami API do integracji z zewnętrznymi systemami (np. CRM, Zapier, Make). Autoryzacja odbywa się za pomocą nagłówka X-Api-Key.',
'settings_api_keys' => 'Aktywne klucze API',
'api_key_name' => 'Nazwa klucza (Opis)',
'api_key' => 'Klucz API',
'active' => 'Aktywny',
'api_key_generated' => 'Wygenerowano klucz API',
'api_key_warning' => 'Skopiuj ten klucz teraz. Nie będzie możliwości ponownego jego wyświetlenia!',
// Ochrona v2.0
'settings_section_security_v2' => 'Bezpieczeństwo i ochrona przed nadużyciami v2.0',
'settings_section_security_v2_desc' => 'Skonfiguruj wykrywanie sieci VPN/Proxy oraz walidację adresów przez Google Safe Browsing.',
'settings_section_analytics_security' => 'Analityka i wykrywanie botów',
'settings_section_analytics_security_desc' => 'Opcjonalna deduplikacja kliknięć i zaawansowane ustawienia botów.',
'settings_click_dedup_enabled' => 'Włącz deduplikację kliknięć',
'settings_click_dedup_enabled_helper' => 'Ignoruj powtarzające się kliknięcia z tego samego IP w określonym oknie czasu.',
'settings_click_dedup_hours' => 'Okno deduplikacji (godziny)',
'settings_click_dedup_hours_helper' => 'Jak długo traktować powtarzające się kliknięcia z tego samego IP jako duplikaty.',
'settings_bot_verify_googlebot' => 'Weryfikuj IP Googlebota',
'settings_bot_verify_googlebot_helper' => 'Reverse-DNS + forward IP dla user agentów Googlebota.',
'settings_bot_debug_secret' => 'Sekret debugowania botów',
'settings_bot_debug_secret_helper' => 'Wymagana wartość dla ?bot=1 poza local/testing.',
'outbound_url_blocked' => 'Ten adres URL wychodzący jest niedozwolony.',
'api_key_owner_user_id' => 'ID właściciela',
'api_key_owner_user_id_helper' => 'Wymagane, gdy włączone jest scope linków do użytkownika (domyślnie). Ogranicza klucz do linków tego użytkownika.',
'settings_vpn_detection_enabled' => 'Włącz wykrywanie VPN i Proxy',
'settings_vpn_detection_enabled_helper' => 'Po włączeniu każda wizyta będzie sprawdzana pod kątem korzystania z połączeń VPN, proxy lub sieci Tor.',
'settings_vpn_driver' => 'Sterownik wykrywania',
'settings_vpn_driver_helper' => 'Wybierz darmową usługę IP-API lub platformę VPNAPI.io.',
'settings_vpn_driver_ipapi' => 'IP-API (Darmowy)',
'settings_vpn_driver_vpnapi' => 'VPNAPI.io (Premium / Darmowy)',
'settings_vpnapi_key' => 'Klucz VPNAPI.io',
'settings_vpnapi_key_helper' => 'Twój klucz API pobrany z vpnapi.io (wymagany dla sterownika vpnapi).',
'settings_vpn_block_action' => 'Akcja blokowania VPN',
'settings_vpn_block_action_helper' => 'Wybierz, czy ruch z sieci VPN ma być jedynie flagowany w statystykach, czy aktywnie blokowany stroną 403 Forbidden.',
'settings_vpn_block_social_warning' => '<div class="callout my-2 px-4 py-3 rounded-xl border border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/30 text-sm text-amber-900 dark:text-amber-200"><strong>Podglądy linków:</strong> tryb blokowania zwraca HTTP 403 dla IP VPN/proxy/hostingu. Znane boty social (Facebook, LinkedIn, Google preview) są <em>nadal wpuszczane</em>, aby OG i cloaking działały. Ludzie na VPN mogą dostać 403.</div>',
'settings_vpn_detection_timeout' => 'Timeout detekcji VPN',
'settings_vpn_detection_timeout_helper' => 'Maksymalny czas oczekiwania (w sekundach) na odpowiedź API VPN/proxy przy przekierowaniu.',
'settings_vpn_detection_cache_ttl' => 'TTL cache detekcji VPN',
'settings_vpn_detection_cache_ttl_helper' => 'Jak długo (w sekundach) cacheować wynik lookupu VPN/proxy dla danego IP.',
'settings_trust_cdn_headers_auto_enabled' => '<div class="callout my-2 px-4 py-3 rounded-xl border border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950/30 text-sm text-blue-900 dark:text-blue-200">Sterownik <strong>Nagłówki CDN</strong> (zakładka Geo-IP) wymaga ufania nagłówkom proxy. Opcja jest <strong>automatycznie włączana</strong> przy tym sterowniku i przy zapisie ustawień.</div>',
'settings_vpn_block_flag_only' => 'Tylko flaguj w statystykach (zezwól na przekierowanie)',
'settings_vpn_block_block_403' => 'Blokuj ruch (wyświetl błąd 403 Forbidden)',
'settings_safe_browsing_enabled' => 'Włącz weryfikację przez Google Safe Browsing',
'settings_safe_browsing_enabled_helper' => 'Automatycznie sprawdzaj docelowe adresy URL pod kątem phishingu, złośliwego oprogramowania i oszustw.',
'settings_safe_browsing_api_key' => 'Klucz API Google Safe Browsing',
'settings_safe_browsing_api_key_helper' => 'Klucz API Web Developer pobrany z Google Cloud Console.',
'settings_safe_browsing_test' => 'Testuj połączenie API',
'settings_safe_browsing_test_empty' => 'Najpierw wprowadź klucz API.',
'settings_safe_browsing_test_ok' => 'Połączenie z Google Safe Browsing powiodło się (API jest aktywne).',
'settings_safe_browsing_test_fail' => 'Weryfikacja klucza Google Safe Browsing nie powiodła się.',
'settings_safe_browsing_test_error' => 'Błąd połączenia z API.',
// World Map Widget
'world_map_title' => 'Mapa odwiedzin',
'world_map_total_clicks' => 'wszystkich kliknięć',
'world_map_countries' => 'krajów',
'world_map_fewer' => 'Mniej',
'world_map_more' => 'Więcej',
'world_map_top_countries' => 'Najpopularniejsze kraje',
'world_map_no_data' => 'Brak danych geograficznych.',
'world_map_no_data_sub' => 'Włącz wykrywanie Geo-IP, aby zacząć rejestrować lokalizacje odwiedzających.',
'stats_card_qr_scans' => 'Zeskanowania QR',
'stats_card_qr_rate' => 'Konwersja kodów QR',
'stats_breakdown_languages' => 'Najpopularniejsze języki',
'stats_no_language_data' => 'Brak danych o językach.',
'badge_clicks' => 'kliknięć',
'badge_unique' => 'unikalnych',
'badge_qr' => 'QR',
'badge_qr_scans' => 'odczytów QR',
'badge_expires' => 'Wygasa: :date',
'badge_no_expiry' => 'Bez wygasania',
'badge_redirect' => 'Przekierowanie :code',
'pixels_navigation_label' => 'Piksele retargetingowe',
'pixel_resource_title' => 'Piksel retargetingowy',
'pixel_name' => 'Nazwa piksela',
'pixel_type' => 'Dostawca',
'pixel_id_label' => 'ID Piksela / Tagu',
'pixel_status_active' => 'Aktywny',
'settings_tab_deep_linking' => 'Głębokie linkowanie',
'settings_section_deep_linking' => 'Pliki powiązań Universal Links & App Links',
'settings_deep_linking_enabled' => 'Włącz serwowanie plików powiązań',
'settings_deep_linking_enabled_helper' => 'Po włączeniu wtyczka będzie serwować pliki konfiguracyjne AASA (iOS) oraz AssetLinks (Android) z poziomu domeny głównej.',
'settings_aasa_json' => 'apple-app-site-association (iOS)',
'settings_aasa_json_helper' => 'Wprowadź prawidłowy kod JSON dla Apple App Site Association. Nie dołączaj znaczników HTML/JavaScript.',
'settings_assetlinks_json' => 'assetlinks.json (Android)',
'settings_assetlinks_json_helper' => 'Wprowadź prawidłową tablicę JSON dla Android Digital Asset Links.',
'validation_invalid_json' => 'Wprowadzony tekst nie jest poprawnym ciągiem JSON.',
// App Linking Preview
'app_linking_supported_os' => 'Wspierane systemy operacyjne:',
'app_linking_supported_apps' => 'Wspierane aplikacje',
'app_linking_supported_apps_helper' => 'Jeśli nie znajdziesz swojej aplikacji na liście, możesz użyć funkcji Targetowania, aby przekierować użytkownika za pomocą własnego głębokiego linku (Deep Link).',
'app_linking_matched' => 'Dopasowano',
'app_linking_preconfigured_count' => ':count gotowych aplikacji do automatycznego przekierowania.',
'app_linking_redirect_active' => 'Otwiera się bezpośrednio w :app',
'app_linking_auto_open' => 'Autootwieranie',
'app_linking_matched_description' => 'Po kliknięciu na telefonie lub tablecie, ten link otworzy się od razu w dedykowanej aplikacji <strong>:app</strong> zamiast w zwykłej przeglądarce.',
'app_linking_deep_link_scheme' => 'Używany schemat (Deep Link): :scheme',
'app_linking_deep_link_label' => 'Adres deep link',
'app_linking_standard_redirect' => 'Ten link otworzy się w zwykłej przeglądarce internetowej (brak dopasowanej aplikacji mobilnej).',
// App Redirect Page
'app_redirect_title' => 'Otwieranie aplikacji...',
'app_redirect_opening_in' => 'Otwieranie w: :app',
'app_redirect_waiting_text' => 'Przekierowujemy Cię do natywnej aplikacji. Proszę czekać...',
'app_redirect_btn_open' => 'Otwórz aplikację',
'app_redirect_btn_browser' => 'Otwórz w przeglądarce',
'app_redirect_in_app_warning_title' => 'Wykryto przeglądarkę wewnątrz aplikacji',
'app_redirect_in_app_warning_desc' => 'Przekierowania mogą być blokowane wewnątrz Instagrama lub Facebooka. Kliknij ikonę trzech kropek (•••) w prawym górnym rogu i wybierz „Otwórz w Safari” lub „Otwórz w Chrome”, aby uruchomić aplikację.',
// Link Expired Page
'expired_title' => 'Link nieaktywny lub wygasł',
'expired_description' => 'Ten link jest już nieaktywny. Mógł osiągnąć limit kliknięć, minął jego termin ważności lub został wyłączony.',
'expired_btn_home' => 'Przejdź do strony głównej',
'weights_sum_error' => 'Suma udziałów w ruchu musi wynosić dokładnie 100%. Obecna suma: :sum%.',
'balance_weights' => 'Wyreguluj do 100%',
'url_key_locked_error' => 'Klucz URL jest zablokowany i nie może być zmieniony.',
'custom_domain_locked_error' => 'Domena niestandardowa jest zablokowana i nie może być zmieniona.',
'custom_domain_not_owned_error' => 'Nie masz uprawnień do użycia tej domeny niestandardowej.',
'resource_not_owned_error' => 'Nie masz uprawnień do użycia tego zasobu.',
'webhook_signing_secret_required' => 'Włączenie globalnego webhooka wymaga ustawienia sekretu podpisu HMAC.',
'webhook_signing_secret' => 'Sekret podpisu webhooka',
'webhook_signing_secret_helper' => 'Wymagany, gdy włączony jest globalny webhook. Żądania wychodzące zawierają HMAC-SHA256 w nagłówku X-ShortUrl-Signature.',
// Stats View & Granularity & PoP Trends
'stats_prev_period' => 'poprzedni okres',
'stats_granularity_hourly' => 'Godzinowo',
'stats_granularity_daily' => 'Dziennie',
'stats_granularity_weekly' => 'Tygodniowo',
'stats_granularity_monthly' => 'Miesięcznie',
// Stats Security Widget
'stats_security_title' => 'Bezpieczeństwo i ruch botów',
'stats_security_real_users' => 'Prawdziwi użytkownicy',
'stats_security_bots' => 'Boty i skanery',
'stats_security_vpn_blocked' => 'Zablokowany ruch VPN/Proxy',
'stats_security_no_vpn_blocks' => 'Brak zablokowanych wejść z VPN',
'stats_security_bot_ratio' => 'Wskaźnik ruchu botów',
'stats_security_human_clicks' => 'kliknięć ludzi',
'stats_security_bot_clicks' => 'kliknięć botów',
'stats_security_proxy_clicks' => 'wykrytych VPN/Proxy',
// Visit Logs Column & Modal translation enhancements
'stats_col_link' => 'Link',
'stats_col_referrer' => 'Źródło (Referer)',
'stats_col_language' => 'Język',
'stats_col_utm_source' => 'Źródło UTM (utm_source)',
'stats_col_utm_medium' => 'Medium UTM (utm_medium)',
'stats_col_utm_campaign' => 'Kampania UTM (utm_campaign)',
'stats_col_utm_term' => 'Słowo kluczowe UTM (utm_term)',
'stats_col_utm_content' => 'Treść UTM (utm_content)',
'stats_col_variant' => 'Wariant A/B',
'stats_col_qr_scan' => 'Skan QR',
'stats_col_bot' => 'Bot',
'stats_col_proxy' => 'Proxy/VPN',
'stats_referer_direct' => '(bezpośrednie)',
'stats_device_desktop' => 'Komputer stacjonarny',
'stats_device_mobile' => 'Smartfon',
'stats_device_tablet' => 'Tablet',
'stats_device_bot' => 'Robot / Bot',
'stats_action_view_details' => 'Szczegóły',
'stats_modal_visit_details' => 'Szczegóły wizyty',
'stats_detail_location' => 'Lokalizacja',
'stats_detail_is_bot' => 'Czy bot?',
'stats_detail_is_proxy' => 'Czy Proxy/VPN?',
'stats_detail_is_qr' => 'Czy skan QR?',
'stats_detail_visited_at' => 'Czas wizyty',
'stats_yes' => 'Tak',
'stats_no' => 'Nie',
'add_url' => 'Dodaj URL',
'traffic_split' => 'Podział ruchu',
'delete_confirmation_desc' => 'Czy na pewno chcesz usunąć ten link? Usunięcie spowoduje bezpowrotne skasowanie wszystkich statystyk i analiz. Tej operacji nie można cofnąć postępuj ostrożnie.',
'delete_verification_label' => 'Aby zweryfikować, wpisz poniżej <strong>:short_url</strong>',
'delete_verification_error' => 'Wpisany adres URL się nie zgadza.',
// Custom Domains
'empty_state_domain_heading' => 'Brak własnych domen',
'empty_state_domain_description' => 'Dodaj własne domeny, aby skrócone linki były serwowane pod Twoją marką (np. links.acme.com) zamiast domyślnej domeny.',
'empty_state_domain_action' => 'Dodaj domenę',
'dns_configuration_guide' => 'Przewodnik konfiguracji DNS',
'dns_for_subdomains' => 'Dla subdomen (CNAME)',
'dns_for_root_domains' => 'Dla domen głównych (Rekord A)',
'copied' => 'Skopiowano!',
'domains_navigation_label' => 'Własne domeny',
'domain_resource_title' => 'Własna domena',
'domain_label' => 'Nazwa domeny',
'domain_status_active' => 'Aktywna',
'domain_status_verified' => 'DNS Zweryfikowany',
'domain_verification_status' => 'Status weryfikacji',
'action_verify_dns' => 'Zweryfikuj DNS',
'dns_verify_success' => 'Rekord DNS zweryfikowany pomyślnie!',
'dns_verify_fail' => 'Weryfikacja DNS nie powiodła się. Sprawdź konfigurację i spróbuj ponownie.',
'dns_instructions_title' => 'Instrukcje DNS',
'default_domain_label' => 'Domyślna domena aplikacji',
'dns_tab_a' => 'Rekord A (rekomendowany)',
'dns_tab_cname' => 'Rekord CNAME',
'dns_instructions_apex' => 'Aby skonfigurować domenę główną (apex) :domain, ustaw następujący rekord A u swojego dostawcy DNS:',
'dns_instructions_subdomain' => 'Aby skonfigurować subdomenę :domain, ustaw następujący rekord CNAME u swojego dostawcy DNS:',
'dns_table_type' => 'Typ',
'dns_table_name' => 'Nazwa',
'dns_table_value' => 'Wartość',
'dns_table_ttl' => 'TTL',
'dns_warning_ttl' => 'Jeśli wartość TTL 86400 nie jest dostępna, wybierz najwyższą dostępną wartość. Propagacja domeny może potrwać do 12 godzin.',
'dns_setup_title' => ':domain - Konfiguracja DNS',
'domain_status_valid' => 'Zweryfikowana',
'domain_status_invalid' => 'Niezweryfikowana',
'domain_no_redirects' => 'Brak przypisanych linków',
'domain_mapped_links' => 'Przypisano :count krótki link|Przypisano :count krótkie linki|Przypisano :count krótkich linków',
'action_delete_domain' => 'Usuń domenę',
'delete_domain_confirmation_desc' => 'Czy na pewno chcesz usunąć tę własną domenę? Ta akcja nie może zostać cofnięta postępuj ostrożnie.',
'short_link_label' => 'Krótki link',
// API Scopes & Rate Limits
'api_key_scope' => 'Uprawnienia (Scope)',
'api_key_scope_helper' => 'Wybierz poziom dostępu dla tego klucza API.',
'api_key_scope_read_write' => 'Odczyt i Zapis (Pełny dostęp)',
'api_key_scope_read_only' => 'Tylko Odczyt (Read-Only)',
'api_key_rate_limit' => 'Limit zapytań',
'api_key_rate_limit_helper' => 'Zdefiniuj maksymalną liczbę zapytań na minutę dopuszczalną dla tego klucza.',
'api_key_rate_limit_unlimited' => 'Bez limitu',
'api_key_rate_limit_rpm' => ':count zapytań / min',
// Folders
'folders_navigation_label' => 'Foldery',
'folder_resource_title' => 'Folder',
'folder_name' => 'Nazwa folderu',
'folder_slug' => 'Uproszczona nazwa (Slug)',
'folder_color' => 'Kolor',
'empty_state_folder_action' => 'Utwórz folder',
'empty_state_folders_heading' => 'Brak folderów',
'empty_state_folders_description' => 'Uporządkuj swoje krótkie linki w folderach.',
'action_edit_folder' => 'Edytuj folder',
'action_delete_folder' => 'Usuń folder',
'link_count_one' => '1 link',
'link_count_many' => ':count linków',
// Tagi
'tags_navigation_label' => 'Tagi',
'tag_resource_title' => 'Tag',
'tag_name' => 'Nazwa tagu',
'tag_slug' => 'Uproszczona nazwa (Slug)',
'tag_color' => 'Kolor',
'empty_state_tag_action' => 'Utwórz tag',
'empty_state_tags_heading' => 'Brak tagów',
'empty_state_tags_description' => 'Oznaczaj swoje krótkie linki tagami, by łatwo je filtrować.',
'action_edit_tag' => 'Edytuj tag',
'action_delete_tag' => 'Usuń tag',
// Archiving
'is_archived' => 'Zarchiwizowany',
'is_archived_helper' => 'Zarchiwizowane linki są ukrywane z głównej listy, ale nadal przekierowują użytkowników.',
'action_archive' => 'Archiwizuj',
'action_restore' => 'Przywróć',
'action_archive_selected' => 'Zarchiwizuj zaznaczone',
'action_restore_selected' => 'Przywróć zaznaczone',
'tab_active_links' => 'Aktywne',
'tab_archived_links' => 'Zarchiwizowane',
// Live Feed
'stats_tab_live_feed' => 'Strumień aktywności',
'stats_live_feed_empty' => 'Brak wizyt. Nowe wizyty pojawią się tutaj w czasie rzeczywistym.',
'stats_live_feed_poll_interval' => 'Na żywo (SSE)',
'stats_live_feed_mode_redis' => 'Na żywo · Redis push',
'stats_live_feed_mode_poll' => 'Na żywo · SSE poll',
'stats_col_visitor' => 'Odwiedzający / Lokalizacja',
// Puste stany - makiety
'empty_state_tags_mock_redirecting' => 'Przekierowywanie...',
'empty_state_tags_mock_promo' => 'promocja',
'empty_state_tags_mock_social' => 'social-media',
'empty_state_tags_mock_dev' => 'programisci',
// Liczba linków w folderze
'folder_one_link' => '1 link',
'folder_many_links' => ':count linków',
// Colors
'color_gray' => 'Szary',
'color_red' => 'Czerwony',
'color_blue' => 'Niebieski',
'color_green' => 'Zielony',
'color_yellow' => 'Żółty',
'color_indigo' => 'Indygo',
'color_purple' => 'Fioletowy',
'color_pink' => 'Różowy',
// SEO & Social
'tab_seo_social' => 'SEO i Social',
'is_cloaked' => 'Maskowanie linku (Cloaking)',
'is_cloaked_helper' => 'Maskuj adres docelowy w pasku adresu przeglądarki za pomocą ramki iframe na domenie krótkiego linku.',
'is_cloaked_iframeable_hint' => 'Niektóre strony docelowe blokują osadzanie w iframe (X-Frame-Options). Przed włączeniem cloakingu użyj testu iframeable.',
'do_index' => 'Indeksowanie w wyszukiwarkach',
'do_index_helper' => 'Zezwól wyszukiwarkom (np. Google) na indeksowanie tego krótkiego linku. W przeciwnym razie będzie on serwowany z tagiem noindex.',
'og_title' => 'Niestandardowy tytuł',
'og_description' => 'Niestandardowy opis',
'og_image' => 'Niestandardowy obrazek',
'og_section_title' => 'Podgląd w mediach społecznościowych (Open Graph)',
'og_section_desc' => 'Dostosuj wygląd tego linku po udostępnieniu na Facebooku, X (Twitterze), LinkedIn, WhatsApp czy Slacku.',
'seo_section_title' => 'Indeksowanie i maskowanie linków',
'seo_section_desc' => 'Zarządzaj widocznością w wyszukiwarkach oraz parametrami maskowania linków docelowych.',
'live_social_preview' => 'Podgląd karty społecznościowej',
'live_qr_preview' => 'Podgląd kodu QR',
'advanced_options_section' => 'Zaawansowane opcje przekierowań i stanu',
'fetching_metadata' => 'Pobieranie podglądu...',
// HTTP / API messages (visitor-facing & REST)
'api_disabled' => 'API deweloperskie jest wyłączone. Włącz je w Ustawieniach skrótów → API i webhooki.',
'api_key_missing' => 'Brak autoryzacji. Nie podano klucza API.',
'api_key_invalid' => 'Brak autoryzacji. Nieprawidłowy lub nieaktywny klucz API.',
'api_key_owner_required' => 'Brak dostępu. Ten klucz API musi mieć owner_user_id, gdy włączone jest scope linków do użytkownika.',
'api_key_read_only' => 'Brak dostępu. Ten klucz API ma uprawnienia tylko do odczytu.',
'api_rate_limit_exceeded' => 'Zbyt wiele żądań. Przekroczono limit klucza API.',
'short_url_not_found' => 'Nie znaleziono skrótu URL.',
'redirect_vpn_blocked' => 'Odmowa dostępu. Wykryto VPN, proxy lub automatyczne pobieranie.',
'redirect_rate_limited' => 'Zbyt wiele żądań. Spróbuj ponownie za :seconds sek.',
'redirect_destination_blocked' => 'Docelowy adres tego linku został zablokowany ze względów bezpieczeństwa.',
'public_stats_rate_limited' => 'Zbyt wiele żądań.',
'public_stats_password_invalid' => 'Wymagane lub nieprawidłowe hasło.',
'public_stats_password_rate_limited' => 'Zbyt wiele nieudanych prób hasła. Spróbuj ponownie później.',
'public_stats_retry_in' => 'Spróbuj ponownie za :seconds s.',
'action_public_stats' => 'Statystyki publiczne',
'public_stats_modal_title' => 'Publiczne statystyki',
'public_stats_modal_description' => 'Udostępnij stronę ze statystykami bez dostępu do panelu administracyjnego.',
'public_stats_save' => 'Zapisz',
'public_stats_enabled_label' => 'Włącz publiczną stronę statystyk',
'public_stats_password_label' => 'Opcjonalne hasło',
'public_stats_password_helper' => 'Pozostaw puste, aby zachować obecne hasło. Wyłącz statystyki, aby je usunąć.',
'public_stats_disabled_hint' => 'Statystyki publiczne są wyłączone. Włącz przełącznik i zapisz, aby wygenerować link.',
'public_stats_link_label' => 'Link do statystyk',
'public_stats_save_to_activate' => 'Zapisz, aby aktywować ten link.',
'public_stats_enabled_status' => 'Statystyki publiczne są włączone.',
'public_stats_copied' => 'Skopiowano link do statystyk.',
'public_stats_open' => 'Otwórz',
'public_stats_saved_enabled' => 'Włączono publiczne statystyki.',
'public_stats_saved_disabled' => 'Wyłączono publiczne statystyki.',
'public_stats_page_title' => 'Statystyki linku',
'public_stats_page_subtitle' => 'Statystyki dla /:key',
'public_stats_date_from' => 'Od',
'public_stats_date_to' => 'Do',
'public_stats_apply_filter' => 'Filtruj',
'public_stats_total_visits' => 'Wszystkie wizyty',
'public_stats_unique_visits' => 'Unikalne wizyty',
'public_stats_today' => 'Dziś',
'public_stats_this_week' => 'Ten tydzień',
'public_stats_this_month' => 'Ten miesiąc',
'public_stats_qr_scans' => 'Skany QR',
'public_stats_visits_by_day' => 'Wizyty wg dnia',
'public_stats_no_data' => 'Brak wizyt w tym okresie.',
'public_stats_day' => 'Dzień',
'public_stats_visits' => 'Wizyty',
'public_stats_password_title' => 'Chronione statystyki',
'public_stats_password_description' => 'Podaj hasło, aby zobaczyć statystyki tego linku.',
'public_stats_password_submit' => 'Pokaż statystyki',
'redirect_html_redirecting' => 'Trwa przekierowanie na stronę docelową...',
'api_created' => 'Skrót URL został utworzony.',
'api_updated' => 'Skrót URL został zaktualizowany.',
'api_bulk_created' => 'Skróty URL zostały utworzone.',
'api_deleted' => 'Skrót URL został usunięty.',
'api_bulk_deleted' => 'Skróty URL zostały usunięte.',
'api_bulk_updated' => 'Skróty URL zostały zaktualizowane.',
];