982 lines
73 KiB
PHP
982 lines
73 KiB
PHP
<?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 (0–15). 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) cache’ować 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.',
|
||
];
|