From 1f9c2272e64d372c5a76ab187abfc0723588c535 Mon Sep 17 00:00:00 2001 From: bplajzer Date: Mon, 24 Nov 2025 17:55:47 +0100 Subject: [PATCH] add Polish language translation (#1309) * feat(localization): add Polish language translation * feat(localization): add Polish language translation --- docs/docs/CHANGELOG.md | 1 + lib/localization/locales/manifest.json | 1 + lib/localization/locales/pl.json | 66 ++++++++++++++++++++++++++ lib/localization/localization_test.go | 1 + 4 files changed, 69 insertions(+) create mode 100644 lib/localization/locales/pl.json diff --git a/docs/docs/CHANGELOG.md b/docs/docs/CHANGELOG.md index 873f78d..3f7eeaf 100644 --- a/docs/docs/CHANGELOG.md +++ b/docs/docs/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add support to simple Valkey/Redis cluster mode - Open Graph passthrough now reuses the configured target Host/SNI/TLS settings, so metadata fetches succeed when the upstream certificate differs from the public domain. ([1283](https://github.com/TecharoHQ/anubis/pull/1283)) - Stabilize the CVE-2025-24369 regression test by always submitting an invalid proof instead of relying on random POW failures. +- Add Polish locale ([#1292](https://github.com/TecharoHQ/anubis/pull/1309)) ### Logging customization diff --git a/lib/localization/locales/manifest.json b/lib/localization/locales/manifest.json index 388a35e..de4f182 100644 --- a/lib/localization/locales/manifest.json +++ b/lib/localization/locales/manifest.json @@ -15,6 +15,7 @@ "nb", "nl", "nn", + "pl", "pt-BR", "ru", "tr", diff --git a/lib/localization/locales/pl.json b/lib/localization/locales/pl.json new file mode 100644 index 0000000..47e84c3 --- /dev/null +++ b/lib/localization/locales/pl.json @@ -0,0 +1,66 @@ +{ + "loading": "Ładowanie...", + "why_am_i_seeing": "Dlaczego to widzę?", + "protected_by": "Chronione przez", + "protected_from": "Przed", + "made_with": "Stworzone z ❤️ w 🇨🇦", + "mascot_design": "Projekt maskotki:", + "ai_companies_explanation": "Widzisz to, ponieważ administrator tej strony skonfigurował Anubisa, aby chronić serwer przed masowym skanowaniem treści przez firmy tworzące AI. Powoduje to obciążenie i przestoje, przez co zasoby strony stają się niedostępne dla wszystkich.", + "anubis_compromise": "Anubis jest kompromisem. Używa mechanizmu Proof-of-Work w stylu Hashcash — proponowanego systemu ograniczania spamu e-mail. Pomysł polega na tym, że dla indywidualnych użytkowników dodatkowe obciążenie jest niezauważalne, ale w skali masowego skanowania koszt szybko rośnie.", + "hack_purpose": "Docelowo jest to rozwiązanie tymczasowe, aby zyskać czas na ulepszenie metod identyfikacji przeglądarek bez interfejsu graficznego (np. poprzez analizę renderowania czcionek), by w przyszłości nie musieć wyświetlać strony z zadaniem Proof-of-Work użytkownikom, którzy najprawdopodobniej są prawidłowi.", + "simplified_explanation": "To zabezpieczenie przed botami i złośliwymi żądaniami, podobne do CAPTCHA. Jednak zamiast wykonywać zadanie samodzielnie, przeglądarka otrzymuje obliczenie do wykonania, aby potwierdzić, że jest prawidłowym klientem. Ten mechanizm to Proof of Work. Zadanie trwa kilka sekund i uzyskujesz dostęp do strony. Dziękujemy za cierpliwość.", + "jshelter_note": "Uwaga: Anubis wymaga nowoczesnych funkcji JavaScript, które wtyczki typu JShelter mogą blokować. Wyłącz JShelter lub podobne dodatki dla tej domeny.", + "version_info": "Ta strona działa na Anubis w wersji", + "try_again": "Spróbuj ponownie", + "go_home": "Wróć na stronę główną", + "contact_webmaster": "lub jeśli uważasz, że nie powinieneś być blokowany, skontaktuj się z administratorem pod adresem", + "connection_security": "Poczekaj chwilę, sprawdzamy bezpieczeństwo Twojego połączenia.", + "javascript_required": "Niestety, aby przejść tę próbę, musisz włączyć obsługę JavaScript. Jest to konieczne, ponieważ firmy zajmujące się sztuczną inteligencją zmieniły umowę społeczną dotyczącą funkcjonowania hostingu stron internetowych. Rozwiązanie bez obsługi JavaScript jest w trakcie opracowywania.", + "benchmark_requires_js": "Uruchomienie narzędzia testowego wymaga włączonego JavaScript.", + "difficulty": "Trudność:", + "algorithm": "Algorytm:", + "compare": "Porównaj:", + "time": "Czas", + "iters": "Iteracje", + "time_a": "Czas A", + "iters_a": "Iteracje A", + "time_b": "Czas B", + "iters_b": "Iteracje B", + "static_check_endpoint": "To jedynie punkt kontrolny do użytku przez Twój reverse proxy.", + "authorization_required": "Wymagane uwierzytelnienie", + "cookies_disabled": "Twoja przeglądarka blokuje ciasteczka. Anubis wymaga ich, aby potwierdzić, że jesteś prawidłowym klientem. Włącz ciasteczka dla tej domeny.", + "access_denied": "Brak dostępu: kod błędu", + "dronebl_entry": "DroneBL zgłosił wpis", + "see_dronebl_lookup": "zobacz", + "internal_server_error": "Błąd wewnętrzny serwera: administrator błędnie skonfigurował Anubis. Skontaktuj się z administratorem i poproś o sprawdzenie logów", + "invalid_redirect": "Nieprawidłowe przekierowanie", + "redirect_not_parseable": "Nie można odczytać adresu przekierowania", + "redirect_domain_not_allowed": "Domena przekierowania niedozwolona", + "missing_required_forwarded_headers": "Brak wymaganych nagłówków X-Forwarded-*", + "failed_to_sign_jwt": "Nie udało się podpisać JWT", + "invalid_invocation": "Nieprawidłowe wywołanie MakeChallenge", + "client_error_browser": "Błąd klienta: upewnij się, że Twoja przeglądarka jest aktualna i spróbuj ponownie później.", + "oh_noes": "O nie!", + "benchmarking_anubis": "Testowanie wydajności Anubis!", + "you_are_not_a_bot": "Nie jesteś botem!", + "making_sure_not_bot": "Sprawdzamy, czy nie jesteś botem!", + "celphase": "CELPHASE", + "js_web_crypto_error": "Twoja przeglądarka nie obsługuje web.crypto. Czy korzystasz z bezpiecznego połączenia?", + "js_web_workers_error": "Twoja przeglądarka nie obsługuje web workers (Anubis ich używa, by nie zawieszać przeglądarki). Czy masz zainstalowaną wtyczkę typu JShelter?", + "js_cookies_error": "Twoja przeglądarka nie zapisuje ciasteczek. Anubis używa ich do przechowywania podpisanego tokenu potwierdzającego przejście zabezpieczenia. Włącz zapis ciasteczek dla tej domeny. Nazwy ciasteczek mogą zmieniać się bez zapowiedzi. Nazwy oraz zawartość ciasteczek nie są cześcią publicznego API.", + "js_context_not_secure": "Kontekst nie jest bezpieczny!", + "js_context_not_secure_msg": "Spróbuj połączyć się przez HTTPS lub poinformuj administratora, by skonfigurował HTTPS. Więcej informacji na MDN.", + "js_calculating": "Obliczanie...", + "js_missing_feature": "Brakująca funkcja", + "js_challenge_error": "Błąd wyzwania!", + "js_challenge_error_msg": "Nie udało się ustalić algorytmu sprawdzającego. Możesz spróbować odświeżyć stronę.", + "js_calculating_difficulty": "Obliczanie...
Trudność:", + "js_speed": "Prędkość:", + "js_verification_longer": "Weryfikacja trwa dłużej niż zwykle. Proszę nie odświeżać strony.", + "js_success": "Sukces!", + "js_done_took": "Gotowe! Zajęło to", + "js_iterations": "iteracji", + "js_finished_reading": "Skończyłem czytać, kontynuuj →", + "js_calculation_error": "Błąd obliczeń!", + "js_calculation_error_msg": "Nie udało się obliczyć zadania:" +} \ No newline at end of file diff --git a/lib/localization/localization_test.go b/lib/localization/localization_test.go index d371f48..47442f1 100644 --- a/lib/localization/localization_test.go +++ b/lib/localization/localization_test.go @@ -24,6 +24,7 @@ func TestLocalizationService(t *testing.T) { "nb": "Laster inn...", "nl": "Laden...", "nn": "Lastar inn...", + "pl": "Ładowanie...", "pt-BR": "Carregando...", "tr": "Yükleniyor...", "ru": "Загрузка...",