From 9b01180ec981d6d0ffd7b0e84a3ddbb0a2cf1ecc Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Mon, 31 Oct 2022 22:19:18 +0100 Subject: [builder][server][proxy] complete internationalization and add polish translation --- src/hydrilla/common_jinja_templates | 2 +- src/hydrilla/locales/en_US/LC_MESSAGES/messages.po | 98 +- src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po | 1525 ++++++++++++++++++++ src/hydrilla/proxy/policies/base.py | 25 +- src/hydrilla/proxy/policies/misc.py | 10 +- src/hydrilla/proxy/policies/payload.py | 2 +- src/hydrilla/proxy/policies/rule.py | 6 +- src/hydrilla/proxy/state.py | 2 + src/hydrilla/proxy/state_impl/concrete_state.py | 26 +- src/hydrilla/proxy/web_ui/root.py | 40 +- .../proxy/web_ui/templates/index.html.jinja | 19 + 11 files changed, 1685 insertions(+), 70 deletions(-) create mode 100644 src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po diff --git a/src/hydrilla/common_jinja_templates b/src/hydrilla/common_jinja_templates index 0e8ab5c..6b41482 160000 --- a/src/hydrilla/common_jinja_templates +++ b/src/hydrilla/common_jinja_templates @@ -1 +1 @@ -Subproject commit 0e8ab5c2735b94166552ce80c18e523357a048ab +Subproject commit 6b414822f00206b83884e7738b1311ab9d7cbf97 diff --git a/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po b/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po index dd8fdb0..73527fd 100644 --- a/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po +++ b/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: hydrilla 2.0\n" "Report-Msgid-Bugs-To: koszko@koszko.org\n" -"POT-Creation-Date: 2022-10-28 19:21+0200\n" +"POT-Creation-Date: 2022-10-31 22:18+0100\n" "PO-Revision-Date: 2022-02-12 00:00+0000\n" "Last-Translator: Wojtek Kosior \n" "Language: en_US\n" @@ -87,7 +87,7 @@ msgid "%(prog)s_%(version)s_license" msgstr "" "%(prog)s %(version)s\n" "Copyright (C) 2021,2022 Wojtek Kosior and contributors.\n" -"License GPLv3+: GNU AGPL version 3 or later " +"License AGPLv3+: GNU AGPL version 3 or later " "\n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law." @@ -174,7 +174,7 @@ msgstr "" #: src/hydrilla/mitmproxy_launcher/launch.py:57 msgid "cli_opt.haketilo.listen_host" -msgstr "IP address port number the proxy should listen on." +msgstr "IP address the proxy should listen on." #: src/hydrilla/mitmproxy_launcher/launch.py:59 msgid "cli_opt.haketilo.port" @@ -312,19 +312,19 @@ msgstr "Requested file could not be found." msgid "api.resource_not_enabled_for_access" msgstr "Requested resource is not enabled for access." -#: src/hydrilla/proxy/state_impl/concrete_state.py:111 +#: src/hydrilla/proxy/state_impl/concrete_state.py:119 msgid "err.proxy.unknown_db_schema" msgstr "" "Haketilo's data files have been altered, possibly by a newer version of " "Haketilo." -#: src/hydrilla/proxy/state_impl/concrete_state.py:133 +#: src/hydrilla/proxy/state_impl/concrete_state.py:146 msgid "err.proxy.no_sqlite_foreign_keys" msgstr "" "This installation of Haketilo uses an SQLite version which does not " "support foreign key constraints." -#: src/hydrilla/proxy/state_impl/concrete_state.py:283 +#: src/hydrilla/proxy/state_impl/concrete_state.py:298 msgid "warn.proxy.failed_to_register_landing_page_at_{}" msgstr "Failed to register landing page at \"{}\"." @@ -486,172 +486,176 @@ msgid "web_ui.home.heading.options" msgstr "Global options" #: src/hydrilla/proxy/web_ui/templates/index.html.jinja:76 +msgid "web_ui.home.choose_language_label" +msgstr "Choose your language" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:95 msgid "web_ui.home.mapping_usage_mode_label" msgstr "Package usage mode" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:87 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:106 msgid "web_ui.home.packages_are_used_when_enabled" msgstr "" -"Hektilo is currently configured to only use packages that were explicitly" -" enabled." +"Haketilo is currently configured to only use packages that were " +"explicitly enabled." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:90 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:109 msgid "web_ui.home.user_gets_asked_whether_to_enable_package" msgstr "" -"Hektilo is currently configured to ask whenever a package is found that " +"Haketilo is currently configured to ask whenever a package is found that " "could be used for the current site." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:94 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:113 msgid "web_ui.home.packages_are_used_automatically" msgstr "" -"Hektilo is currently configured to automatically use packages that are " +"Haketilo is currently configured to automatically use packages that are " "available for the current site." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:101 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:120 msgid "web_ui.home.use_enabled_button" msgstr "Use when enabled" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:104 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:123 msgid "web_ui.home.use_question_button" msgstr "Ask whether to use" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:107 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:126 msgid "web_ui.home.use_auto_button" msgstr "Use automatically" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:114 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:133 msgid "web_ui.home.script_blocking_mode_label" msgstr "Default scripts treatment" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:124 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:143 msgid "web_ui.home.scripts_are_allowed_by_default" msgstr "" "By default Haketilo currently allows JavaScript sent by websites to the " "browser to execute." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:127 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:146 msgid "web_ui.home.scripts_are_blocked_by_default" msgstr "" "By default Haketilo currently blocks JavaScript sent by websites to the " "browser from executing." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:131 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:150 msgid "web_ui.home.allow_scripts_button" msgstr "Allow scripts" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:132 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:151 msgid "web_ui.home.block_scripts_button" msgstr "Block scripts" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:143 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:162 msgid "web_ui.home.advanced_features_label" msgstr "Advanced features" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:153 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:172 msgid "web_ui.home.user_is_advanced_user" msgstr "Interface features for advanced users are currently enabled." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:156 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:175 msgid "web_ui.home.user_is_simple_user" msgstr "Interface features for advanced users are currently disabled." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:163 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:182 msgid "web_ui.home.user_make_advanced_button" msgstr "Enable" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:166 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:185 msgid "web_ui.home.user_make_simple_button" msgstr "Disable" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:174 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:193 msgid "web_ui.home.orphans_label" msgstr "Orphans" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:180 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:199 msgid "web_ui.home.orphans_to_delete_{mappings}" msgstr "Haketilo is holding some unused packages that can be removed ({mappings})." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:184 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:203 msgid "web_ui.home.orphans_to_delete_exist" msgstr "Haketilo is holding some unused libraries that can be removed." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:188 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:207 msgid "web_ui.home.orphans_to_delete_{mappings}_{resources}" msgstr "" "Haketilo is holding some unused items that can be removed (packages: " "{mappings}; libraries: {resources})." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:197 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:216 msgid "web_ui.home.prune_orphans_button" msgstr "Prune orphans" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:208 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:227 msgid "web_ui.home.popup_settings_label" msgstr "Popup settings" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:224 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:243 msgid "web_ui.home.configure_popup_settings_on_pages_with" msgstr "Configure popup settings on pages with" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:230 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:249 msgid "web_ui.home.popup_settings_jsallowed_button" msgstr "JS allowed" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:231 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:250 msgid "web_ui.home.popup_settings_jsblocked_button" msgstr "JS blocked" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:232 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:251 msgid "web_ui.home.popup_settings_payloadon_button" msgstr "Payload used" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:282 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:301 msgid "web_ui.home.popup_no_button" msgstr "Disable popup" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:285 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:304 msgid "web_ui.home.popup_yes_button" msgstr "Enable popup" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:295 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:314 msgid "web_ui.home.jsallowed_popup_yes" msgstr "" "Haketilo currently makes it possible to open its popup window on pages " "where native JS has been allowed to execute. This is a convenience that " "comes at a price of greater risk of user fingerprinting." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:297 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:316 msgid "web_ui.home.jsallowed_popup_no" msgstr "" "Haketilo currently does not make it possible to open its popup window on " "pages with their native JS allowed. This setting is less convenient but " "decreases the risk of user fingerprinting." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:303 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:322 msgid "web_ui.home.jsblocked_popup_yes" msgstr "" "Haketilo currently makes it possible to open its popup window on pages " "where native JS has been blocked from executing." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:305 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:324 msgid "web_ui.home.jsblocked_popup_no" msgstr "" "Haketilo currently does not make it possible to open its popup window on " "pages where native JS has been blocked from executing." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:311 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:330 msgid "web_ui.home.payloadon_popup_yes" msgstr "" "Haketilo currently makes it possible to open its popup window on pages " "where payload is used." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:313 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:332 msgid "web_ui.home.payloadon_popup_no" msgstr "" "Haketilo currently does not make it possible to open its popup window on " "pages where payload is used." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:318 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:337 msgid "web_ui.home.popup_can_be_opened_by" msgstr "" "When enabled on given page, popup dialog can be opened by typing big " @@ -1145,7 +1149,7 @@ msgstr "URL" #: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:43 #: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:116 msgid "web_ui.err.repo_url_invalid" -msgstr "Chosen URL is not vald." +msgstr "Chosen URL is not valid." #: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:49 msgid "web_ui.repos.add.submit_button" @@ -1276,7 +1280,7 @@ msgstr "URL pattern" #: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:35 #: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:56 msgid "web_ui.err.rule_pattern_invalid" -msgstr "Chosen URL pattern is not vald." +msgstr "Chosen URL pattern is not valid." #: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:40 msgid "web_ui.rules.add.block_or_allow_label" diff --git a/src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po b/src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po new file mode 100644 index 0000000..833979b --- /dev/null +++ b/src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po @@ -0,0 +1,1525 @@ +# SPDX-License-Identifier: CC0-1.0 +# English translations for Hydrilla&Haketilo. +# +# Copyright (C) 2021-2022 Wojtek Kosior +# Available under the terms of Creative Commons Zero v1.0 Universal. +msgid "" +msgstr "" +"Project-Id-Version: hydrilla 3.0-beta2\n" +"Report-Msgid-Bugs-To: koszko@koszko.org\n" +"POT-Creation-Date: 2022-10-31 22:18+0100\n" +"PO-Revision-Date: 2022-02-12 00:00+0000\n" +"Last-Translator: Wojtek Kosior \n" +"Language: pl_PL\n" +"Language-Team: pl_PL \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.0\n" + +#: src/hydrilla/builder/build.py:81 src/hydrilla/builder/local_apt.py:120 +#: src/hydrilla/builder/local_apt.py:426 +msgid "couldnt_execute_{}_is_it_installed" +msgstr "" +"Nie można wykonać '{}'. Czy narzędzie jest zainstalowane i osiągalne " +"przez zmienną PATH?" + +#: src/hydrilla/builder/build.py:85 src/hydrilla/builder/local_apt.py:124 +#: src/hydrilla/builder/local_apt.py:430 +msgid "command_{}_failed" +msgstr "Następująca komenda zakończyła wykonanie z niezerowym statusem wyjścia: {}" + +#: src/hydrilla/builder/build.py:201 +msgid "path_contains_double_dot_{}" +msgstr "" +"Próba załodowania ścieżki '{}', która zawiera niedozwolone odwołanie do " +"katalogu nadrzędnego ('..')." + +#: src/hydrilla/builder/build.py:210 +msgid "loading_{}_outside_package_dir" +msgstr "" +"Próba załodowania ścieżki '{}', która leża poza katalogiem źródłowym " +"projektu." + +#: src/hydrilla/builder/build.py:214 +msgid "loading_reserved_index_json" +msgstr "Próba załadowania pliku z zarezerwowaną nazwą 'index.json'." + +#: src/hydrilla/builder/build.py:221 +msgid "referenced_file_{}_missing" +msgstr "Brak pliku '{}', do którego nastąpiło odwołanie." + +#: src/hydrilla/builder/build.py:412 +msgid "report_spdx_not_in_copyright_list" +msgstr "" +"Ma zostać wygenerowany 'report.spdx' ale 'report.spdx' nie jest na liście" +" plików z danymi prawnoautorskimi. Nie można kontynuować." + +#: src/hydrilla/builder/build.py:489 +msgid "build_package_from_srcdir_to_dstdir" +msgstr "Wybuduj pakiet spod `scrdir` i zapisz wyjściowe pliki pod `dstdir`." + +#: src/hydrilla/builder/build.py:491 +msgid "source_directory_to_build_from" +msgstr "Katalog ze źródłowym pakietem do zbudowania." + +#: src/hydrilla/builder/build.py:493 +msgid "path_instead_of_index_json" +msgstr "" +"Ścieżka do pliku, który ma być przetworzony zamiast pliku index.json " +"(jeśli nie jest absolutna, jest rozwiązywana względnie do `srcdir`)." + +#: src/hydrilla/builder/build.py:495 +msgid "path_instead_for_piggyback_files" +msgstr "" +"Ścieżka do niestandardowego katalogu z archiwami obcych pakietów do " +"użycia." + +#: src/hydrilla/builder/build.py:497 +msgid "built_package_files_destination" +msgstr "" +"Katalog wyjściowy, pod którym zapisane mają być pliki wyjściowe " +"zbudowanych pakietów." + +#: src/hydrilla/builder/build.py:499 +#: src/hydrilla/mitmproxy_launcher/launch.py:66 +#: src/hydrilla/server/serve.py:211 src/hydrilla/server/serve.py:229 +#: src/hydrilla/server/serve.py:269 +#, python-format +msgid "%(prog)s_%(version)s_license" +msgstr "" +"%(prog)s %(version)s\n" +"Copyright (C) 2021,2022 Wojtek Kosior i współpracownicy.\n" +"Licencja AGPLv3+: GNU AGPL wersja 3 lub późniejsza " +"\n" +"To jest wolne oprogramowanie; masz prawo je zmieniać i rozpowszechniać.\n" +"Brak JAKIEJKOLWIEK GWARANCJI, w stopniu dozwolonym przez prawo." + +#: src/hydrilla/builder/build.py:500 src/hydrilla/server/serve.py:230 +#: src/hydrilla/server/serve.py:270 +msgid "version_printing" +msgstr "Wypisz informacji o wersji i zakończ." + +#: src/hydrilla/builder/common_errors.py:58 +msgid "STDOUT_OUTPUT_heading" +msgstr "## Standardowe wyjście komendy ##" + +#: src/hydrilla/builder/common_errors.py:61 +msgid "STDERR_OUTPUT_heading" +msgstr "## Standardowe wyjście błędu komendy ##" + +#: src/hydrilla/builder/local_apt.py:153 +msgid "distro_{}_unknown" +msgstr "Próba użycia nieznanej dystrybucji oprogramowania '{}'." + +#: src/hydrilla/builder/local_apt.py:197 +msgid "couldnt_import_{}_is_it_installed" +msgstr "" +"Nie udało się zaimportować '{}'. Czy moduł jest zainstalowany i widzialny" +" dla tej instancji Python'a?" + +#: src/hydrilla/builder/local_apt.py:205 +msgid "gpg_couldnt_recv_key_{}" +msgstr "Nie udało się zaimportować klucza PGP '{}'." + +#: src/hydrilla/builder/local_apt.py:325 +msgid "apt_install_output_not_understood" +msgstr "Informacje na wyjściu komendy 'apt-get install' nie zostały zrozumiane." + +#: src/hydrilla/builder/local_apt.py:351 +msgid "apt_download_gave_bad_filename_{}" +msgstr "" +"Komenda 'apt-get download' wygenerowała plik o niespodziewanej nazwie " +"'{}'." + +#: src/hydrilla/builder/piggybacking.py:109 +msgid "loading_{}_outside_piggybacked_dir" +msgstr "" +"Próba załadowania ścieżki '{}', która leży poza katalogiem głównym " +"wykorzystanych obcych pakietów." + +#: src/hydrilla/item_infos.py:88 +msgid "err.item_info.filename_invalid_{}" +msgstr "Definicja elementu zawiera niedozwoloną ścieżkę: {}" + +#: src/hydrilla/item_infos.py:511 +#, python-brace-format +msgid "uuid_mismatch_{identifier}" +msgstr "Dla elementu '{identifier}' zostały sprecyzowane dwa różne uuid." + +#: src/hydrilla/json_instances.py:84 +msgid "bad_json_comment_line_{line_num}_char_{char_num}" +msgstr "" +"Dokument JSON zawiera nieprawidłowy komentarz w lini {line_num}, znak " +"{char_num}." + +#: src/hydrilla/json_instances.py:135 +msgid "unknown_schema_{}" +msgstr "" +"Dokument JSON document deklaruje swój schemat jako '{}'. Jest to nieznany" +" schemat." + +#: src/hydrilla/json_instances.py:186 +msgid "err.util.text_in_{}_not_valid_json" +msgstr "Nie prawidłowy plik JSON: {}" + +#: src/hydrilla/json_instances.py:189 +msgid "err.util.text_not_valid_json" +msgstr "Nie prawidłowy plik JSON." + +#: src/hydrilla/json_instances.py:204 +msgid "no_schema_number_in_instance" +msgstr "Brak numeru wersji schematu dokumentu JSON." + +#: src/hydrilla/mitmproxy_launcher/launch.py:55 +msgid "cli_help.haketilo" +msgstr "" +"Uruchom proxy Haketilo.\n" +"\n" +"Ta komenda uruchamia Haketilo jako lokalne proxy HTTP, które może być " +"następnie wykorzystane przez przeglądarkę internetową." + +#: src/hydrilla/mitmproxy_launcher/launch.py:57 +msgid "cli_opt.haketilo.listen_host" +msgstr "Adres IP, na ktrym proxy powinno nasłuchiwać." + +#: src/hydrilla/mitmproxy_launcher/launch.py:59 +msgid "cli_opt.haketilo.port" +msgstr "Numer portu TCP, na którym proxy powinno nasłuchiwać." + +#: src/hydrilla/mitmproxy_launcher/launch.py:61 +msgid "cli_opt.haketilo.launch_browser" +msgstr "" +"Czy Haketilo powinno spróbować otworzyć swoją stronę lądowania w Twojej " +"domyślnej przeglądarce. Domyślnie tak ('-L')." + +#: src/hydrilla/mitmproxy_launcher/launch.py:64 +msgid "cli_opt.haketilo.dir_defaults_to_{}" +msgstr "Katalog danych do użycia przez Haketilo. Domyślnie \"{}\"." + +#: src/hydrilla/mitmproxy_launcher/launch.py:67 +msgid "cli_opt.haketilo.version" +msgstr "Wypisz informacji o wersji i zakończ." + +#: src/hydrilla/proxy/addon.py:195 +msgid "warn.proxy.setting_already_configured_{}" +msgstr "" +"Próbowano skonfigurować opcję '{}' rozszerzenia do mitmproxy, która " +"została już skonfigurowana." + +#: src/hydrilla/proxy/addon.py:230 +msgid "warn.proxy.couldnt_launch_browser" +msgstr "" +"Nie udało się otworzyć adresu w przeglądarce internetowej. Czy masz " +"skonfigurowaną domyślną przeglądarkę?" + +#: src/hydrilla/proxy/addon.py:271 +msgid "err.proxy.unknown_error_{}_try_again" +msgstr "" +"Wystąpił błąd w Haketilo. Spróbuj ponownie.\n" +"\n" +"{}" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:39 +msgid "info.base.title" +msgstr "Informacje o stronie" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:44 +msgid "info.base.heading.page_info" +msgstr "Szczegóły obsługiwania strony przez Haketilo" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:48 +msgid "info.base.page_url_label" +msgstr "URL strony" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:56 +msgid "info.base.page_policy_label" +msgstr "Aktywna polityka" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:70 +msgid "info.base.more_config_options_label" +msgstr "Konfiguruj" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:78 +msgid "info.base.this_site_script_blocking_button" +msgstr "Blokowanie JS'a na tej witrynie" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:81 +msgid "info.base.this_site_payload_button" +msgstr "Modyfikator dla stron na tej witrynie" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:84 +msgid "info.base.this_page_script_blocking_button" +msgstr "Blokowanie JS'a na tej stronie" + +#: src/hydrilla/proxy/policies/info_pages_templates/info_base.html.jinja:87 +msgid "info.base.this_page_payload_button" +msgstr "Modyfikator dla tej strony" + +#: src/hydrilla/proxy/policies/info_pages_templates/js_error_blocked_info.html.jinja:13 +msgid "info.js_error_blocked.html" +msgstr "" +"Wystąpił błąd w Haketilo podczas wybierania polityki działania dla tej " +"strony. Dla bezpieczeństwa Haketilo będzie blokować JavaScript na " +"stronach, w przypadku których tak sie dzieje. Takie zdarzenie nie powinno" +" mieć miejsca, rozważ zgłoszenie " +"błędu." + +#: src/hydrilla/proxy/policies/info_pages_templates/js_error_blocked_info.html.jinja:18 +msgid "info.js_error_blocked.stacktrace" +msgstr "Szczegóły błędu" + +#: src/hydrilla/proxy/policies/info_pages_templates/js_fallback_allowed_info.html.jinja:13 +msgid "info.js_fallback_allowed" +msgstr "JavaScript może się wykonywać na tej stronie. Jest to domyślna polityka." + +#: src/hydrilla/proxy/policies/info_pages_templates/js_fallback_blocked_info.html.jinja:13 +msgid "info.js_fallback_blocked" +msgstr "" +"Wykonanie JavaScript'u na tej stronie jest zablokowane. Jest to domyślna " +"polityka." + +#: src/hydrilla/proxy/policies/info_pages_templates/js_rule_allowed_info.html.jinja:13 +msgid "info.js_allowed.html.rule{url}_is_used" +msgstr "" +"JavaScript może się wykonywać na tej stronie. Reguła pozwalająca została zkonfigurowana przez " +"użytkownika." + +#: src/hydrilla/proxy/policies/info_pages_templates/js_rule_blocked_info.html.jinja:13 +msgid "info.js_blocked.html.rule{url}_is_used" +msgstr "" +"Wykonanie JavaScript'u na tej stronie jest zablokowane. A reguła zabraniająca została " +"skonfigurowana przez użytkownika." + +#: src/hydrilla/proxy/policies/info_pages_templates/js_rule_info.html.jinja:32 +msgid "info.rule.matched_pattern_label" +msgstr "Dopasowany wzorzec reguły" + +#: src/hydrilla/proxy/policies/info_pages_templates/payload_info.html.jinja:36 +msgid "info.payload.html.package_{identifier}{url}_is_used" +msgstr "" +"Ta strona jest obsługiwana przez pakiet o nazwie '{identifier}'. Pakiet został skonfigurowany przez " +"użytkownika i może dokonywać zmian na stronie." + +#: src/hydrilla/proxy/policies/info_pages_templates/payload_info.html.jinja:43 +msgid "info.payload.matched_pattern_label" +msgstr "Dopasowany wzorzec pakietu" + +#: src/hydrilla/proxy/policies/info_pages_templates/special_page_info.html.jinja:13 +msgid "info.special_page" +msgstr "" +"To jest specjalna strona. Nie mają na nią wpływu polityki stosowane " +"normalnie przez Haketilo." + +#: src/hydrilla/proxy/policies/payload_resource.py:249 +msgid "api.file_not_found" +msgstr "Żądany plik nie został znaleziony." + +#: src/hydrilla/proxy/policies/payload_resource.py:365 +msgid "api.resource_not_enabled_for_access" +msgstr "Żądany zasób nie jest udostępniony." + +#: src/hydrilla/proxy/state_impl/concrete_state.py:119 +msgid "err.proxy.unknown_db_schema" +msgstr "" +"Dane Haketilo zostały zmodyfikowane, prawdopodobnie przez nowszą wersję " +"Haketilo." + +#: src/hydrilla/proxy/state_impl/concrete_state.py:146 +msgid "err.proxy.no_sqlite_foreign_keys" +msgstr "" +"Ta instalacja Haketilo używa wersji SQLite, które nie wspiera ograniczeń " +"kluczy obcych." + +#: src/hydrilla/proxy/state_impl/concrete_state.py:298 +msgid "warn.proxy.failed_to_register_landing_page_at_{}" +msgstr "Nie udało się zarejestrować strony lądowania pod \"{}\"." + +#: src/hydrilla/proxy/web_ui/templates/hkt_mitm_it_base.html.jinja:82 +msgid "web_ui.base.nav.home" +msgstr "Start" + +#: src/hydrilla/proxy/web_ui/templates/hkt_mitm_it_base.html.jinja:83 +msgid "web_ui.base.nav.rules" +msgstr "Blokowanie skryptów" + +#: src/hydrilla/proxy/web_ui/templates/hkt_mitm_it_base.html.jinja:84 +msgid "web_ui.base.nav.packages" +msgstr "Pakiety" + +#: src/hydrilla/proxy/web_ui/templates/hkt_mitm_it_base.html.jinja:85 +msgid "web_ui.base.nav.libraries" +msgstr "Biblioteki" + +#: src/hydrilla/proxy/web_ui/templates/hkt_mitm_it_base.html.jinja:86 +msgid "web_ui.base.nav.repos" +msgstr "Repozytoria" + +#: src/hydrilla/proxy/web_ui/templates/hkt_mitm_it_base.html.jinja:87 +msgid "web_ui.base.nav.import" +msgstr "Importuj" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:23 +msgid "web_ui.import.title" +msgstr "Import elementów" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:41 +msgid "web_ui.import.heading" +msgstr "Import elementów" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:43 +msgid "web_ui.import.heading_import_from_file" +msgstr "Z pliku ZIP" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:49 +msgid "web_ui.err.uploaded_file_not_zip" +msgstr "Nadesłany plik nie jest poprawnym archiwum ZIP." + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:53 +msgid "web_ui.err.invalid_uploaded_malcontent" +msgstr "Nadesłane archiwum nie zawiera poprawnego katalogu pakietów Haketilo." + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:61 +msgid "web_ui.import.choose_zipfile_button" +msgstr "Wybierz plik" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:68 +msgid "web_ui.import.install_from_file_button" +msgstr "Importuj z wybranego pliku" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:76 +msgid "web_ui.import.heading_import_ad_hoc" +msgstr "Ad hoc" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:81 +msgid "web_ui.err.invalid_ad_hoc_package" +msgstr "Importowany pakiet ad hoc zawiera błędy." + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:87 +msgid "web_ui.import.identifier_field_label" +msgstr "Identyfikator" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:89 +msgid "web_ui.err.invalid_ad_hoc_identifier" +msgstr "Wybrany identyfikator jest niepoprawny." + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:93 +msgid "web_ui.import.long_name_field_label" +msgstr "Długa nazwa (opcjonalna)" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:96 +msgid "web_ui.import.version_field_label" +msgstr "Wersja (opcjonalna)" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:98 +msgid "web_ui.err.invalid_ad_hoc_version" +msgstr "Wybrana wersja jest niepoprawna." + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:102 +msgid "web_ui.import.description_field_label" +msgstr "Opic (opcjonalny)" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:105 +msgid "web_ui.import.patterns_field_label" +msgstr "Wzorce URL (jeden na każdej lini)" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:109 +msgid "web_ui.err.invalid_ad_hoc_patterns" +msgstr "Wybrane wzorce są niepoprawne." + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:113 +msgid "web_ui.import.script_text_field_label" +msgstr "JavaScript do wykonanie na stronach, które pasują do jednego ze wzorców" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:116 +msgid "web_ui.import.lic_text_field_label" +msgstr "Tekst licencji pakietu (opcjonalny)" + +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:121 +msgid "web_ui.import.install_ad_hoc_button" +msgstr "Dodaj nowy pakiet" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:23 +msgid "web_ui.home.title" +msgstr "Witaj" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:35 +msgid "web_ui.home.heading.welcome_to_haketilo" +msgstr "Witaj w Haketilo!" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:39 +msgid "web_ui.home.this_is_haketilo_page" +msgstr "" +"To jest wirtualna witryna hostowana lokalnie przez Haketilo. Możesz użyć " +"jej do skonfigurowania proxy Haketilo." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:45 +msgid "web_ui.home.heading.about_haketilo" +msgstr "O narzędziu" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:49 +msgid "web_ui.home.html.haketilo_is_blah_blah" +msgstr "" +"Haketilo to narządzie, które daje użytkownikom więcej kontroli nad " +"przeglądaniem stron internetowych. Może blokować niechciane programy " +"JavaScript na stronach, jak i dodawać do stron spersonalizowaną logikę. " +"Haketilo było pierwotnie rozszerzeniem przeglądarkowym, po czym zostało " +"utworzone na nowo jako proxy HTTP. Jest zbudowane na popularnym mitmproxy." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:53 +msgid "web_ui.home.html.see_haketilo_doc_{url}" +msgstr "" +"Pomocne informacje dotyczące użycia tego narządzia można znaleźć we wbudowanej dokumentacji Haketilo." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:62 +msgid "web_ui.home.heading.configuring_browser_for_haketilo" +msgstr "Konfiguracja przeglądarki pod Haketilo" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:66 +msgid "web_ui.home.html.to_add_certs_do_xyz" +msgstr "" +"Proxy Haketilo działa modyfikując dane wymieniane przez przeglądarkę z " +"serwerami sieci WWW. Nie powoduje to żadnych problemów w przypadku " +"adresów http://. Jednak w przypadku adresów https:// transmitowane dane " +"są chronione przed modyfikacją przez użycie kryptografii. Żeby Twoja " +"przeglądarka mogła zaufać danym zmodyfikowanym przez Haketilo, musi być " +"poinstruowana, że ma respektować certyfikat kryptograficzny wystawiony " +"przez proxy. Jeśli jeszcze tego nie zrobiłeś/aś, pobierz certyfikat z tej strony i dodaj go do swojego systemu " +"operacyjnego, przeglądarki lub obydwu." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:73 +msgid "web_ui.home.heading.options" +msgstr "Opcje globalne" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:76 +msgid "web_ui.home.choose_language_label" +msgstr "Wybierz swój język" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:95 +msgid "web_ui.home.mapping_usage_mode_label" +msgstr "Tryb używania pakietów" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:106 +msgid "web_ui.home.packages_are_used_when_enabled" +msgstr "" +"Haketilo jest obecnie skonfigurowane tak, aby używać wyłącznie pakietów, " +"które użytkownik sam aktywował." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:109 +msgid "web_ui.home.user_gets_asked_whether_to_enable_package" +msgstr "" +"Haketilo jest obecnie skonfigurowane tak, aby pytać zawsze, kiedy " +"zostanie znaleziony pakiet, który mógłby być użyty na odwiedzanej " +"stronie." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:113 +msgid "web_ui.home.packages_are_used_automatically" +msgstr "" +"Haketilo jest obecnie skonfigurowane tak, żeby automatycznie używać " +"pakietów, które są dostępne dla odwiedzanej strony." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:120 +msgid "web_ui.home.use_enabled_button" +msgstr "Używaj aktywowanych" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:123 +msgid "web_ui.home.use_question_button" +msgstr "Pytaj, czy użyć" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:126 +msgid "web_ui.home.use_auto_button" +msgstr "Używaj automatycznie" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:133 +msgid "web_ui.home.script_blocking_mode_label" +msgstr "Domyślne traktowanie skryptów" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:143 +msgid "web_ui.home.scripts_are_allowed_by_default" +msgstr "" +"Haketilo obecnie domyślnie pozwala na wykonanie JavaScript'u przysyłanego" +" przez strony." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:146 +msgid "web_ui.home.scripts_are_blocked_by_default" +msgstr "" +"Haketilo obecnie domyślnie blokuje wykonanie JavaScript'u przysyłanego " +"przez strony." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:150 +msgid "web_ui.home.allow_scripts_button" +msgstr "Pozwalaj" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:151 +msgid "web_ui.home.block_scripts_button" +msgstr "Blokuj" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:162 +msgid "web_ui.home.advanced_features_label" +msgstr "Zaawansowane funkcje" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:172 +msgid "web_ui.home.user_is_advanced_user" +msgstr "Funkcje interfejsu dla zaawansowanych użytkowników są obecnie włączone." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:175 +msgid "web_ui.home.user_is_simple_user" +msgstr "Funkcje interfejsu dla zaawansowanych użytkowników są obecnie wyłączone." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:182 +msgid "web_ui.home.user_make_advanced_button" +msgstr "Włącz" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:185 +msgid "web_ui.home.user_make_simple_button" +msgstr "Wyłącz" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:193 +msgid "web_ui.home.orphans_label" +msgstr "Opuszczone pakiety" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:199 +msgid "web_ui.home.orphans_to_delete_{mappings}" +msgstr "" +"Haketilo przechowuje obecnie opuszczone pakiety, które można usunąć " +"({mappings})." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:203 +msgid "web_ui.home.orphans_to_delete_exist" +msgstr "Haketilo przechowuje obecnie opuszczone biblioteki, które można usunąć." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:207 +msgid "web_ui.home.orphans_to_delete_{mappings}_{resources}" +msgstr "" +"Haketilo przechowuje obecnie opuszczone elementy, które można usunąć " +"(pakiety: {mappings}; biblioteki: {resources})." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:216 +msgid "web_ui.home.prune_orphans_button" +msgstr "Wyrzuć opuszczone" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:227 +msgid "web_ui.home.popup_settings_label" +msgstr "Ustawienia popup'u" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:243 +msgid "web_ui.home.configure_popup_settings_on_pages_with" +msgstr "Konfiguruj ustawienia popup'u na stronach, gdzie" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:249 +msgid "web_ui.home.popup_settings_jsallowed_button" +msgstr "JS może się wykonywać" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:250 +msgid "web_ui.home.popup_settings_jsblocked_button" +msgstr "JS jest zablokowany" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:251 +msgid "web_ui.home.popup_settings_payloadon_button" +msgstr "Modyfikator w użyciu" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:301 +msgid "web_ui.home.popup_no_button" +msgstr "Wyłącz popup" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:304 +msgid "web_ui.home.popup_yes_button" +msgstr "Włącz popup" + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:314 +msgid "web_ui.home.jsallowed_popup_yes" +msgstr "" +"Haketilo obecnie umożliwia otwieranie okna popup'u na stronach, gdzie " +"zezwolono na wykonanie oryginalnego JS'a. Jest to dogodność, która " +"przychodzi za cenę większego ryzyka zarejstrowania unikatowego \"odcisku " +"przeglądarki\" (tzw. fingerprinting)." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:316 +msgid "web_ui.home.jsallowed_popup_no" +msgstr "" +"Haketilo obecnie nie umożliwia otwierania okna popup'u na stronach, gdzie" +" zezwolono na wykonanie oryginalnego JS'a. To ustawienie jest mniej " +"dogodne ale zmniejsza ryzyko zarejstrowania unikatowego \"odcisku " +"przeglądarki\" (tzw. fingerprinting)." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:322 +msgid "web_ui.home.jsblocked_popup_yes" +msgstr "" +"Haketilo obecnie umożliwia otwieranie okna popup'u na stronach, gdzie " +"zablokowano wykonanie oryginalnego JS'a." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:324 +msgid "web_ui.home.jsblocked_popup_no" +msgstr "" +"Haketilo obecnie nie umożliwia otwierania okna popup'u na stronach, gdzie" +" zablokowano wykonanie oryginalnego JS'a." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:330 +msgid "web_ui.home.payloadon_popup_yes" +msgstr "" +"Haketilo obecnie umożliwia otwieranie okna popup'u na stronach, gdzie w " +"użyciu jest modyfikator." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:332 +msgid "web_ui.home.payloadon_popup_no" +msgstr "" +"Haketilo obecnie nie umożliwia otwierania okna popup'u na stronach, gdzie" +" w użyciu jest modyfikator.pages where payload is used." + +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:337 +msgid "web_ui.home.popup_can_be_opened_by" +msgstr "" +"Gdy aktywne na danej stronie, okno pupup'u może być otworzone przez " +"wpisanie wielkich liter \"HKT\". Może być następnie zamknięte przez " +"kliknięcie gdziekolwiek na ciemnym obszarze naokoło niego." + +#: src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja:44 +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:30 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:35 +msgid "web_ui.err.file_installation_error" +msgstr "Nie udało się zainstalować potrzebnych elementów z repozytorium." + +#: src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja:48 +msgid "web_ui.err.impossible_situation_error" +msgstr "Ograniczenia własne elementów uniemożliły wykonanie akcji." + +#: src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja:52 +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:34 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:39 +msgid "web_ui.err.repo_communication_error" +msgstr "Nie udało się porozumieć z repozytorium." + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:61 +msgid "web_ui.err.item_not_compatible" +msgstr "Ten element nie jest kompatybilny z obecną wersją Haketilo." + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:68 +msgid "web_ui.items.single_version.identifier_label" +msgstr "Identyfikator" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:76 +msgid "web_ui.items.single_version.version_label" +msgstr "Wersja" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:85 +msgid "web_ui.items.single_version.uuid_label" +msgstr "UUID" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:95 +msgid "web_ui.items.single_version.description_label" +msgstr "Opis" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:104 +msgid "web_ui.items.single_version.licenses_label" +msgstr "Pliki licencji i informacji o prawie autorskim" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:110 +msgid "web_ui.items.single_version.no_license_files" +msgstr "Brak wyszczególnionych plików z informacjami prawnymi." + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:117 +msgid "web_ui.items.single_version.required_mappings_label" +msgstr "Potrzebne pakiety" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:137 +msgid "web_ui.items.single_version.min_haketilo_ver_label" +msgstr "Minimalna wymagana wersja Haketilo" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:147 +msgid "web_ui.items.single_version.max_haketilo_ver_label" +msgstr "Minimalna dopuszczalna wersja Haketilo" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:164 +msgid "web_ui.items.single_version.install_uninstall_label" +msgstr "Status instalacji" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:171 +msgid "web_ui.items.single_version.retry_install_button" +msgstr "Spróbuj ponownie" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:175 +msgid "web_ui.items.single_version.leave_uninstalled_button" +msgstr "Pozostaw niezainstalowane" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:179 +msgid "web_ui.items.single_version.install_button" +msgstr "Zainstaluj" + +#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:181 +msgid "web_ui.items.single_version.uninstall_button" +msgstr "Odinstaluj" + +#: src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja:23 +msgid "web_ui.libraries.title" +msgstr "Biblioteki" + +#: src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja:40 +msgid "web_ui.libraries.heading" +msgstr "Dostępne biblioteki" + +#: src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja:23 +msgid "web_ui.items.single.library.title" +msgstr "Przegląd biblioteki" + +#: src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja:27 +msgid "web_ui.items.single.library.heading.name_{}" +msgstr "Biblioteki o nazwie '{}'" + +#: src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja:37 +msgid "web_ui.items.single.library.version_list_heading" +msgstr "Dostępne wersje" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:24 +msgid "web_ui.items.single_version.library.title" +msgstr "Przegląda wersji bibilioteki" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:30 +msgid "web_ui.items.single_version.library_local.heading.name_{}" +msgstr "Lokalna biblioteka '{}'" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:35 +msgid "web_ui.items.single_version.library.heading.name_{}" +msgstr "Biblioteka '{}'" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:42 +msgid "web_ui.items.single_version.library.install_failed" +msgstr "Nie udało się zainstalować tej wersji biblioteki." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:46 +msgid "web_ui.items.single_version.library.is_installed" +msgstr "Biblioteka jest obecnie zainstalowana." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:50 +msgid "web_ui.items.single_version.library.is_not_installed" +msgstr "Biblioteka jest obecnie niezainstalowana." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:54 +msgid "web_ui.items.single_version.library.version_list_heading" +msgstr "Inne dostępne wersje tej biblioteki" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:58 +msgid "web_ui.items.single_version.library.scripts_label" +msgstr "Skrypty" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:64 +msgid "web_ui.items.single_version.library.no_script_files" +msgstr "Brak plików JavaScript w tej bibliotece." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:71 +msgid "web_ui.items.single_version.library.deps_label" +msgstr "Zależności" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:86 +msgid "web_ui.items.single_version.library.enabled_label" +msgstr "Status użycia" + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:90 +msgid "web_ui.items.single_version.library.item_required" +msgstr "Ta wersja biblioteki jest wymagana przed pewien aktywny pakiet." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:95 +msgid "web_ui.items.single_version.library.item_not_activated" +msgstr "" +"Ta wersja biblioteki nie jest wykorzystywana przez żaden aktywowany przez" +" użytkownika pakiet." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:97 +msgid "web_ui.items.single_version.library.item_will_be_asked_about" +msgstr "" +"Ta wersja biblioteki nie jest wykorzystywana przez żaden aktywowany przez" +" użytkownika pakiet." + +#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:100 +msgid "web_ui.items.single_version.library.item_auto_activated" +msgstr "" +"Ta wersja biblioteki jest wykorzystywana przez pewien pakiet. Ten pakiet " +"nie został aktywowany przez użytkownika ale może być aktywowany użyty " +"automatycznie." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:23 +msgid "web_ui.items.single.package.title" +msgstr "Przegląd pakietu" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:27 +msgid "web_ui.items.single.package.heading.name_{}" +msgstr "Pakiet o nazwie '{}'" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:40 +msgid "web_ui.items.single.package.enabled_label" +msgstr "Status użycia" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:46 +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:117 +msgid "web_ui.items.unenable_button" +msgstr "Zapomnij" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:47 +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:118 +msgid "web_ui.items.disable_button" +msgstr "Dezaktywuj" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:48 +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:119 +msgid "web_ui.items.enable_button" +msgstr "Aktywuj" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:53 +msgid "web_ui.items.single.package.item_not_enabled" +msgstr "Pakiet nie został skonfigurowany przez użytkownika." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:56 +msgid "web_ui.items.single.package.item_disabled" +msgstr "Pakiet został dezaktywowany przez użytkownika." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:60 +msgid "web_ui.items.single.package.item_enabled" +msgstr "Pakiet został aktywowany przez użytkownika." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:75 +msgid "web_ui.items.single.package.pinning_label" +msgstr "Przypnij pakiet" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:81 +msgid "web_ui.items.single.package.unpin_button" +msgstr "Odepnij" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:86 +msgid "web_ui.items.single.package.pin_local_repo_button" +msgstr "Przypnij do lokalnych pakietów" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:89 +msgid "web_ui.items.single.package.pin_repo_button" +msgstr "Przypnij do repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:92 +msgid "web_ui.items.single.package.pin_ver_button" +msgstr "Przypnij do obecnej wersji" + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:97 +msgid "web_ui.items.single.package.not_pinned" +msgstr "Pakiet nie jest przypięty do żadnej wersji." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:101 +msgid "web_ui.items.single.package.pinned_repo_local" +msgstr "Pakiet jest przypięty - użyte mogą zostać tylko lokalne wersje." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:104 +msgid "web_ui.items.single.package.pinned_repo_{}" +msgstr "" +"Pakiet jest przypięty - użyte mogą zostać tylko wersje z repozytorium " +"'{}'." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:111 +msgid "web_ui.items.single.package.pinned_ver" +msgstr "Pakiet nie jest przypięty do żadnej konkretnej wersji." + +#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:126 +msgid "web_ui.items.single.package.version_list_heading" +msgstr "Dostępne wersje" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:24 +msgid "web_ui.items.single_version.package.title" +msgstr "Przegląd wersji pakietu" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:30 +msgid "web_ui.items.single_version.package_local.heading.name_{}" +msgstr "Lokalny pakiet '{}'" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:35 +msgid "web_ui.items.single_version.package.heading.name_{}" +msgstr "Pakiet '{}'" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:42 +msgid "web_ui.items.single_version.package.install_failed" +msgstr "Nie udało się zainstalować wersji pakietu." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:46 +msgid "web_ui.items.single_version.package.is_installed" +msgstr "Pakiet jest obecnie zainstalowany." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:50 +msgid "web_ui.items.single_version.package.is_not_installed" +msgstr "Pakiet jest obecnie niezainstalowany." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:54 +msgid "web_ui.items.single_version.package.version_list_heading" +msgstr "Inne dostępne wersje tego pakietu" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:58 +msgid "web_ui.items.single_version.package.payloads_label" +msgstr "Modyfikatory stron" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:101 +msgid "web_ui.items.single_version.package.no_payloads" +msgstr "Ten pakiet nie ma modyfikatorów." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:107 +msgid "web_ui.items.single_version.package.enabled_label" +msgstr "Status użycia" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:128 +msgid "web_ui.items.single_version.package.item_not_activated" +msgstr "Ten pakiet nie jest aktywny. Ta wersja nie będzie użyta." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:130 +msgid "web_ui.items.single_version.package.item_will_be_asked_about" +msgstr "" +"Ten pakiet nie jest aktywny. Zostaniesz zapytany/a, czy aktywować tą " +"wersję, gdy odwiedzisz witrynę, na której może być użyta." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:133 +msgid "web_ui.items.single_version.package.item_auto_activated" +msgstr "Ten pakiet nie był aktywowany ale zostanie użyty automatycznie." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:137 +msgid "web_ui.items.single_version.package.item_disabled" +msgstr "Wszystkie wersje tego pakietu zostały dezaktywowane przez użytkownika." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:141 +msgid "web_ui.items.single_version.package.item_enabled" +msgstr "Pakiet został aktywowany przez użytkownika." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:156 +msgid "web_ui.items.single_version.package.pinning_label" +msgstr "Przypinanie aktywnego pakietu" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:168 +msgid "web_ui.items.single_version.unpin_button" +msgstr "Odepnij" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:173 +msgid "web_ui.items.single_version.not_pinned" +msgstr "Pakiet nie jest przypięty do żadnej wersji." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:178 +msgid "web_ui.items.single_version.pinned_repo_local" +msgstr "Pakiet jest przypięty - użyte będą tylko lokalne wersje." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:181 +msgid "web_ui.items.single_version.pinned_repo_{}" +msgstr "Pakiet jest przypięty - użyte będą tylko wersje z repozytorium '{}'." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:192 +msgid "web_ui.items.single_version.pin_local_repo_button" +msgstr "Przypnij do pakietów lokalnych" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:197 +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:210 +msgid "web_ui.items.single_version.pin_repo_button" +msgstr "Przypnij do repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:204 +msgid "web_ui.items.single_version.repin_repo_button" +msgstr "Przypnij do tego repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:218 +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:229 +msgid "web_ui.items.single_version.pin_ver_button" +msgstr "Przypnij do wersji" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:221 +msgid "web_ui.items.single_version.pinned_ver" +msgstr "Pakiet jest przypięty do tej wersji." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:224 +msgid "web_ui.items.single_version.repin_ver_button" +msgstr "Przypnij do tej wersji" + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:226 +msgid "web_ui.items.single_version.pinned_other_ver" +msgstr "Pakiet jest przypięty do innej wersji." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:234 +msgid "web_ui.items.single_version.active_ver_is_this_one" +msgstr "Ta wersja jest obecnie aktywną wersją." + +#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:238 +msgid "web_ui.items.single_version.active_ver_is_{}" +msgstr "Obecnie aktywna wersja to '{}'." + +#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:23 +msgid "web_ui.packages.title" +msgstr "Pakiety" + +#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:40 +msgid "web_ui.packages.heading" +msgstr "Dostępne pakiety" + +#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:76 +msgid "web_ui.packages.enabled_version_{}" +msgstr "aktywowano wersję {}" + +#: src/hydrilla/proxy/web_ui/templates/landing.html.jinja:23 +msgid "web_ui.landing.title" +msgstr "Strona lądowania" + +#: src/hydrilla/proxy/web_ui/templates/landing.html.jinja:27 +msgid "web_ui.landing.heading.haketilo_is_running" +msgstr "Haketilo działa" + +#: src/hydrilla/proxy/web_ui/templates/landing.html.jinja:31 +msgid "web_ui.landing.web_ui.landing.what_to_do_1" +msgstr "" +"Aby móc przeglądać strony przez Haketilo, upewnij się, że Twoja " +"przeglądarka jest skonfigurowana, aby używać go jako proxy zarówno dla " +"połączeń HTTP, jak i HTTPs. Użyj następujących wartości." + +#: src/hydrilla/proxy/web_ui/templates/landing.html.jinja:34 +msgid "web_ui.landing.host_label" +msgstr "Adres" + +#: src/hydrilla/proxy/web_ui/templates/landing.html.jinja:40 +msgid "web_ui.landing.port_label" +msgstr "Port" + +#: src/hydrilla/proxy/web_ui/templates/landing.html.jinja:47 +msgid "web_ui.landing.html.what_to_do_2" +msgstr "" +"Jeśli skonfigurowałeś przeglądarkę poprawnie, możesz odwiedzić http://hkt.mitm.it. To strona " +"konfiguracji Haketilo hostowana lokalnie \"wewnątrz\" proxy." + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:24 +msgid "web_ui.prompts.auto_install_error.title" +msgstr "Błąd instalacji" + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:29 +msgid "web_ui.err.retry_install.file_installation_error" +msgstr "" +"Podczas ponownej próby instalacji elementów z repozytorium wystąpił " +"kolejny błąd." + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:33 +msgid "web_ui.err.retry_install.repo_communication_error" +msgstr "Podczas ponownej próby porozumienia z repozytorium wystąpił kolejny błąd." + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:37 +msgid "web_ui.prompts.auto_install_error.heading" +msgstr "Błąd instalacji" + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:42 +msgid "web_ui.prompts.auto_install_error.package_{}_failed_to_install" +msgstr "" +"Nie udało się zainstalować automatycznie aktywowanego pakietu '{}', " +"ponieważ Haketilo nie było w stanie pobrać plików pakietu z serwera " +"repozytorium. Sprawdź, czy komputer jest podłączony do sieci i spróbuj " +"ponownie. Możesz również trwale dezaktywować pakiet." + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:47 +msgid "web_ui.prompts.auto_install_error.disable_button" +msgstr "Dezaktywuj" + +#: src/hydrilla/proxy/web_ui/templates/prompts/auto_install_error.html.jinja:48 +msgid "web_ui.prompts.auto_install_error.retry_button" +msgstr "Spróbuj ponownie" + +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:25 +msgid "web_ui.prompts.package_suggestion.title" +msgstr "Proponowany pakiet" + +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:38 +msgid "web_ui.prompts.package_suggestion.heading" +msgstr "Znaleziono pakiet pasujący do tej strony" + +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:43 +msgid "web_ui.prompts.package_suggestion.do_you_want_to_enable_package_{}" +msgstr "" +"Czy chcesz aktywować pakiet '{}'? Jeśli to zrobisz, będzie on używany " +"przy każdej następnej wizycie na stronie." + +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:48 +msgid "web_ui.prompts.package_suggestion.disable_button" +msgstr "Dezaktywuj" + +#: src/hydrilla/proxy/web_ui/templates/prompts/package_suggestion.html.jinja:49 +msgid "web_ui.prompts.package_suggestion.enable_button" +msgstr "Aktywuj" + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:23 +msgid "web_ui.repos.add.title" +msgstr "Nowe repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:27 +msgid "web_ui.repos.add.heading" +msgstr "Skonfiguruj nowe repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:32 +msgid "web_ui.repos.add.name_field_label" +msgstr "Nazwa" + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:34 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:68 +msgid "web_ui.err.repo_name_invalid" +msgstr "Wybrana nazwa jest niepoprawna." + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:37 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:72 +msgid "web_ui.err.repo_name_taken" +msgstr "Wybrana nazwa jest już w użyciu." + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:41 +msgid "web_ui.repos.add.url_field_label" +msgstr "URL" + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:43 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:116 +msgid "web_ui.err.repo_url_invalid" +msgstr "Wybrany URL jest niepoprawny." + +#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:49 +msgid "web_ui.repos.add.submit_button" +msgstr "Dodaj repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:23 +msgid "web_ui.repos.title" +msgstr "Repozytoria" + +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:33 +msgid "web_ui.repos.heading" +msgstr "Zarządzaj repozytoriami" + +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:39 +msgid "web_ui.repos.add_repo_button" +msgstr "Skonfiguruj nowe repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:44 +msgid "web_ui.repos.repo_list_heading" +msgstr "Zkonfigurowane repozytoria" + +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:67 +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:82 +msgid "web_ui.repos.package_count_{}" +msgstr "pakiety: {}" + +#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:79 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:47 +msgid "web_ui.repos.local_packages_semirepo" +msgstr "Lokalne" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:23 +msgid "web_ui.repos.single.title" +msgstr "Przegląd repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:43 +msgid "web_ui.err.repo_api_version_unsupported" +msgstr "" +"repozytorium używa niewspieranej wersji API. Być może musisz " +"zaktualizować Haketilo." + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:50 +msgid "web_ui.repos.single.heading.name_{}" +msgstr "Repozytorium '{}'" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:53 +msgid "web_ui.repos.single.name_label" +msgstr "Nazwa" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:59 +msgid "web_ui.repos.single.update_name_button" +msgstr "Zmień nazwę" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:82 +msgid "web_ui.repos.single.no_update_name_button" +msgstr "Anuluj" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:86 +msgid "web_ui.repos.single.commit_update_name_button" +msgstr "Ustaw nowa nazwę" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:97 +msgid "web_ui.repos.single.repo_is_deleted" +msgstr "" +"to repozytorium zostało usunięte ale wciąż obecne są pochodzące z niego " +"pakiety." + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:102 +msgid "web_ui.repos.single.url_label" +msgstr "URL" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:108 +msgid "web_ui.repos.single.update_url_button" +msgstr "Zmień URL" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:124 +msgid "web_ui.repos.single.no_update_url_button" +msgstr "Anuluj" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:128 +msgid "web_ui.repos.single.commit_update_url_button" +msgstr "Ustaw nowy URL" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:135 +msgid "web_ui.repos.single.last_refreshed_label" +msgstr "Ostanie odświeżenie" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:139 +msgid "web_ui.repos.single.repo_never_refreshed" +msgstr "To repozytorium nie było jeszcze odświeżane" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:148 +msgid "web_ui.repos.single.stats_label" +msgstr "Statystyki" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:153 +msgid "web_ui.repos.item_count_{mappings}_{resources}" +msgstr "pakiety: {mappings}; biblioteki: {resources}" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:161 +msgid "web_ui.repos.item_count_{mappings}" +msgstr "pakiety: {mappings}" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:171 +msgid "web_ui.repos.single.actions_label" +msgstr "Działania" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:173 +msgid "web_ui.repos.single.remove_button" +msgstr "Usuń repozytorium" + +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:174 +msgid "web_ui.repos.single.refresh_button" +msgstr "Odśwież" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:23 +msgid "web_ui.rules.add.title" +msgstr "Nowa reguła" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:27 +msgid "web_ui.rules.add.heading" +msgstr "Zdefiniuj nową regułę" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:32 +msgid "web_ui.rules.add.pattern_field_label" +msgstr "Wzorzec URL" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:35 +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:56 +msgid "web_ui.err.rule_pattern_invalid" +msgstr "Wybrany wzorzec URL jest niepoprawny." + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:40 +msgid "web_ui.rules.add.block_or_allow_label" +msgstr "Traktowanie JavaScript'u strony" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:44 +msgid "web_ui.rules.add.block_label" +msgstr "blokuj" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:49 +msgid "web_ui.rules.add.allow_label" +msgstr "zezwalaj" + +#: src/hydrilla/proxy/web_ui/templates/rules/add.html.jinja:56 +msgid "web_ui.rules.add.submit_button" +msgstr "Dodaj regułę" + +#: src/hydrilla/proxy/web_ui/templates/rules/index.html.jinja:23 +msgid "web_ui.rules.title" +msgstr "Blokowanie skryptów" + +#: src/hydrilla/proxy/web_ui/templates/rules/index.html.jinja:33 +msgid "web_ui.rules.heading" +msgstr "Zarządzaj blokowaniem skryptów" + +#: src/hydrilla/proxy/web_ui/templates/rules/index.html.jinja:39 +msgid "web_ui.rules.add_rule_button" +msgstr "Zdefiniuj nową regułę" + +#: src/hydrilla/proxy/web_ui/templates/rules/index.html.jinja:44 +msgid "web_ui.rules.rule_list_heading" +msgstr "Zdefiniowane reguły" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:23 +msgid "web_ui.rules.single.title" +msgstr "Przegląd reguły" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:36 +msgid "web_ui.rules.single.heading.allow" +msgstr "Reguła zezwalająca" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:38 +msgid "web_ui.rules.single.heading.block" +msgstr "Reguła blokująca" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:42 +msgid "web_ui.rules.single.pattern_label" +msgstr "Wzorzec URL" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:48 +msgid "web_ui.rules.single.update_pattern_button" +msgstr "Zmień wzorzec URL" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:66 +msgid "web_ui.rules.single.no_update_pattern_button" +msgstr "Anuluj" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:70 +msgid "web_ui.rules.single.commit_update_pattern_button" +msgstr "Ustaw nowy wzorzec" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:77 +msgid "web_ui.rules.single.block_or_allow_label" +msgstr "Funkcja reguły" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:82 +msgid "web_ui.rules.single.allow_button" +msgstr "Zezwól na JavaScript" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:83 +msgid "web_ui.rules.single.block_button" +msgstr "Blokuj JavaScript" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:101 +msgid "web_ui.rules.single.actions_label" +msgstr "Działania" + +#: src/hydrilla/proxy/web_ui/templates/rules/show_single.html.jinja:103 +msgid "web_ui.rules.single.remove_button" +msgstr "Usuń regułę" + +#: src/hydrilla/proxy/web_ui/templates/web_ui_base.html.jinja:20 +msgid "web_ui.base.title.haketilo_proxy" +msgstr "Haketilo" + +#: src/hydrilla/server/malcontent.py:77 +msgid "err.server.malcontent_path_not_dir_{}" +msgstr "Podana ścieżka 'malcontent_dir' nie wskazuje na katalog: {}" + +#: src/hydrilla/server/malcontent.py:96 +msgid "err.server.couldnt_load_item_from_{}" +msgstr "Nie udało się załadować elementu z {}." + +#: src/hydrilla/server/malcontent.py:109 +msgid "err.server.no_file_{required_by}_{ver}_{file}_{sha256}" +msgstr "" +"'{required_by}', wersja '{ver}' używa pliku {file} z wartością SHA256 " +"równą {sha256} ale plik nie istnieje." + +#: src/hydrilla/server/malcontent.py:133 +msgid "err.server.item_{item}_in_file_{file}" +msgstr "Element {item} niespodzeiwanie obecny w pliku {file}." + +#: src/hydrilla/server/malcontent.py:139 +msgid "item_version_{ver}_in_file_{file}" +msgstr "Wersja {ver} elementu niespodziewanie obecna pod {file}." + +#: src/hydrilla/server/malcontent.py:166 +msgid "err.server.no_dep_{resource}_{ver}_{dep}" +msgstr "Nieznana zależność '{dep}' zasobu '{resource}', wersji '{ver}'." + +#: src/hydrilla/server/malcontent.py:181 +msgid "err.server.no_payload_{mapping}_{ver}_{payload}" +msgstr "Nieznany modyfikator '{payload}' odwzorowania '{mapping}', wersji '{ver}'." + +#: src/hydrilla/server/malcontent.py:196 +msgid "err.server.no_mapping_{required_by}_{ver}_{required}" +msgstr "" +"Nieznane odwzorowanie '{required}' wymagane przez '{required_by}', wersję" +" '{ver}'." + +#: src/hydrilla/server/malcontent.py:224 +msgid "server.err.couldnt_register_{mapping}_{ver}_{pattern}" +msgstr "" +"Nie udało się zarejestrować odwzorowania '{mapping}', wersji '{ver}' " +"(wzorzec '{pattern}')." + +#: src/hydrilla/server/serve.py:81 +msgid "err.server.opt_hydrilla_parent_not_implemented" +msgstr "" +"Hydrilla ma się połączyć z nadrzędnym serwerem Hydrilli ale ta " +"funkcjonalność jeszcze nie została zaimplementowana." + +#: src/hydrilla/server/serve.py:217 +msgid "serve_hydrilla_packages_explain_wsgi_considerations" +msgstr "" +"Udostępniaj pakiety Hydrilli.\n" +"\n" +"Ta komenda ma służyć jako szybki sposób na uruchomienie lokalnej lub " +"deweloperskiej instancji Hydrilli. Dla lepszej wydajności rozważ użycie " +"WSGI." + +#: src/hydrilla/server/serve.py:220 +msgid "directory_to_serve_from_overrides_config" +msgstr "" +"Katalog, z którego mają być serwowane pliki. Powoduje zignorowanie " +"ewnetualnej wartości z pliku konfiguracyjnego." + +#: src/hydrilla/server/serve.py:222 +msgid "project_url_to_display_overrides_config" +msgstr "" +"Adres URL projektu do wyświetlania na wygenerowanych stronach HTML. " +"Powoduje zignorowanie ewnetualnej wartości z pliku konfiguracyjnego." + +#: src/hydrilla/server/serve.py:224 +msgid "tcp_port_to_listen_on_overrides_config" +msgstr "" +"Numer portu TCP do nasłuchiwania (0-65535). Powoduje zignorowanie " +"ewnetualnej wartości z pliku konfiguracyjnego." + +#: src/hydrilla/server/serve.py:227 +msgid "path_to_config_file_explain_default" +msgstr "" +"Ścieżka do pliku konfiguracyjnego Hydrilli (opcjonalna, domyślnie " +"Hydrilla ładuje swój własny plik konfiguracyjny, który z kolei próbuje " +"załadować `/etc/hydrilla/config.json`)." + +#: src/hydrilla/server/serve.py:259 +msgid "config_option_{}_not_supplied" +msgstr "Brakująca opcja konfiguracji '{}'." + +#: src/hydrilla/server/serve.py:263 +msgid "serve_hydrilla_packages_wsgi_help" +msgstr "" +"Udostępniaj pakiety Hydrilli.\n" +"\n" +"Niniejszy program to skrypt WSGI, który uruchamia repozytorium Hydrilli " +"za serwerem HTTP takim jak Apache2 czy Nginx. Możesz skonfigurować " +"Hydrillę przez plik `/etc/hydrilla/config.json`." + +#: src/hydrilla/url_patterns.py:127 +msgid "err.url_pattern_{}.bad" +msgstr "Niepoprawny wzorzec URL: {}" + +#: src/hydrilla/url_patterns.py:130 +msgid "err.url_{}.bad" +msgstr "Niepoprawny URL: {}" + +#: src/hydrilla/url_patterns.py:137 +msgid "err.url_pattern_{}.bad_scheme" +msgstr "Wzorzec URL nieznanego typu: {}" + +#: src/hydrilla/url_patterns.py:140 +msgid "err.url_{}.bad_scheme" +msgstr "URL nieznanego typu: {}" + +#: src/hydrilla/url_patterns.py:145 +msgid "err.url_pattern_{}.special_scheme_port" +msgstr "Wzorzec URL precyzuje port, chociaż nie powinien: {}" + +#: src/hydrilla/url_patterns.py:157 +msgid "err.url_pattern_{}.bad_port" +msgstr "Wzorzec URL precyzuje port spoza dozwolonego zakresu (1-65535): {}" + +#: src/hydrilla/url_patterns.py:160 +msgid "err.url_{}.bad_port" +msgstr "URL precyzuje port spoza dozwolonego zakresu (1-65535): {}" + +#: src/hydrilla/url_patterns.py:181 +msgid "err.url_pattern_{}.has_query" +msgstr "" +"Wzorzec URL zawiera kwerendę wprowadzoną przez pytajnik, choć nie " +"powinien: {}" + +#: src/hydrilla/url_patterns.py:185 +msgid "err.url_pattern_{}.has_frag" +msgstr "" +"Wzorzec URL zawiera urywek wprowadzony przez znak hasz (`#`), choć nie " +"powinien: {}" + diff --git a/src/hydrilla/proxy/policies/base.py b/src/hydrilla/proxy/policies/base.py index 95021cd..967e2c4 100644 --- a/src/hydrilla/proxy/policies/base.py +++ b/src/hydrilla/proxy/policies/base.py @@ -43,7 +43,7 @@ import jinja2 from immutables import Map -from ...translations import translation as make_translation +from ... import translations from ... import url_patterns from ... import common_jinja_templates from .. import state @@ -62,14 +62,9 @@ _jinja_info_env = jinja2.Environment( lstrip_blocks = True, extensions = ['jinja2.ext.i18n', 'jinja2.ext.do'] ) -_jinja_info_env.install_gettext_translations(make_translation()) # type: ignore _jinja_info_env.globals['url_patterns'] = url_patterns _jinja_info_lock = threading.Lock() -def get_info_template(template_file_name: str) -> jinja2.Template: - with _jinja_info_lock: - return _jinja_info_env.get_template(template_file_name) - _jinja_script_loader = jinja2.PackageLoader( __package__, @@ -164,6 +159,20 @@ class Policy(ABC): return (self.current_popup_settings.popup_enabled and http_messages.is_likely_a_page(request_info, response_info)) + def _get_info_template(self, template_file_name: str) -> jinja2.Template: + with _jinja_info_lock: + chosen_locale = self.haketilo_settings.locale + if chosen_locale not in translations.supported_locales: + chosen_locale = None + + if chosen_locale is None: + chosen_locale = translations.default_locale + + trans = translations.translation(chosen_locale) + _jinja_info_env.install_gettext_translations(trans) # type: ignore + return _jinja_info_env.get_template(template_file_name) + + def _csp_to_clear(self, http_info: http_messages.FullHTTPInfo) \ -> t.Union[t.Sequence[str], t.Literal['all']]: return () @@ -215,7 +224,9 @@ class Policy(ABC): popup_page = self.make_info_page(http_info) if popup_page is None: - template = get_info_template('special_page_info.html.jinja') + template = self._get_info_template( + 'special_page_info.html.jinja' + ) popup_page = template.render( url = http_info.request_info.url.orig_url ) diff --git a/src/hydrilla/proxy/policies/misc.py b/src/hydrilla/proxy/policies/misc.py index 0ff4596..e789b29 100644 --- a/src/hydrilla/proxy/policies/misc.py +++ b/src/hydrilla/proxy/policies/misc.py @@ -47,7 +47,9 @@ class FallbackAllowPolicy(AllowPolicy): def make_info_page(self, http_info: http_messages.FullHTTPInfo) \ -> t.Optional[str]: - template = base.get_info_template('js_fallback_allowed_info.html.jinja') + template = self._get_info_template( + 'js_fallback_allowed_info.html.jinja' + ) return template.render(url=http_info.request_info.url.orig_url) @@ -56,7 +58,9 @@ class FallbackBlockPolicy(BlockPolicy): def make_info_page(self, http_info: http_messages.FullHTTPInfo) \ -> t.Optional[str]: - template = base.get_info_template('js_fallback_blocked_info.html.jinja') + template = self._get_info_template( + 'js_fallback_blocked_info.html.jinja' + ) return template.render(url=http_info.request_info.url.orig_url) @@ -71,7 +75,7 @@ class ErrorBlockPolicy(BlockPolicy): def make_info_page(self, http_info: http_messages.FullHTTPInfo) \ -> t.Optional[str]: - template = base.get_info_template('js_error_blocked_info.html.jinja') + template = self._get_info_template('js_error_blocked_info.html.jinja') return template.render( url = http_info.request_info.url.orig_url, settings = self.haketilo_settings, diff --git a/src/hydrilla/proxy/policies/payload.py b/src/hydrilla/proxy/policies/payload.py index 55851cc..3660eac 100644 --- a/src/hydrilla/proxy/policies/payload.py +++ b/src/hydrilla/proxy/policies/payload.py @@ -175,7 +175,7 @@ class PayloadInjectPolicy(PayloadAwarePolicy): def make_info_page(self, http_info: http_messages.FullHTTPInfo) \ -> t.Optional[str]: - return base.get_info_template('payload_info.html.jinja').render( + return self._get_info_template('payload_info.html.jinja').render( url = http_info.request_info.url.orig_url, payload_data = self.payload_data ) diff --git a/src/hydrilla/proxy/policies/rule.py b/src/hydrilla/proxy/policies/rule.py index 1f39295..e318a7f 100644 --- a/src/hydrilla/proxy/policies/rule.py +++ b/src/hydrilla/proxy/policies/rule.py @@ -69,7 +69,8 @@ class RuleAllowPolicy(AllowPolicy): def make_info_page(self, http_info: http_messages.FullHTTPInfo) \ -> t.Optional[str]: - return base.get_info_template('js_rule_allowed_info.html.jinja').render( + template = self._get_info_template('js_rule_allowed_info.html.jinja') + return template.render( url = http_info.request_info.url.orig_url, pattern = self.pattern.orig_url ) @@ -81,7 +82,8 @@ class RuleBlockPolicy(BlockPolicy): def make_info_page(self, http_info: http_messages.FullHTTPInfo) \ -> t.Optional[str]: - return base.get_info_template('js_rule_blocked_info.html.jinja').render( + template = self._get_info_template('js_rule_blocked_info.html.jinja') + return template.render( url = http_info.request_info.url.orig_url, pattern = self.pattern.orig_url ) diff --git a/src/hydrilla/proxy/state.py b/src/hydrilla/proxy/state.py index 72eaaa0..1a2d344 100644 --- a/src/hydrilla/proxy/state.py +++ b/src/hydrilla/proxy/state.py @@ -544,6 +544,7 @@ class HaketiloGlobalSettings: default_allow_scripts: bool advanced_user: bool repo_refresh_seconds: int + locale: t.Optional[str] default_popup_jsallowed: PopupSettings default_popup_jsblocked: PopupSettings @@ -627,6 +628,7 @@ class HaketiloState(ABC): default_allow_scripts: t.Optional[bool] = None, advanced_user: t.Optional[bool] = None, repo_refresh_seconds: t.Optional[int] = None, + locale: t.Optional[str] = None, default_popup_settings: t.Mapping[str, PopupSettings] = {} ) -> None: ... diff --git a/src/hydrilla/proxy/state_impl/concrete_state.py b/src/hydrilla/proxy/state_impl/concrete_state.py index a5c547f..e97514a 100644 --- a/src/hydrilla/proxy/state_impl/concrete_state.py +++ b/src/hydrilla/proxy/state_impl/concrete_state.py @@ -71,6 +71,14 @@ def _add_popup_settings_columns(cursor: sqlite3.Cursor) -> None: ''' ) +def _add_locale_column(cursor: sqlite3.Cursor) -> None: + cursor.execute( + ''' + ALTER TABLE general ADD COLUMN + locale VARCHAR NOT NULL DEFAULT 'unknown'; + ''' + ) + def _prepare_database(connection: sqlite3.Connection) -> None: cursor = connection.cursor() @@ -111,6 +119,7 @@ def _prepare_database(connection: sqlite3.Connection) -> None: raise HaketiloException(_('err.proxy.unknown_db_schema')) popup_settings_columns_present = False + locale_column_present = False cursor.execute("PRAGMA TABLE_INFO('general')") for __cid, name, __type, __notnull, __dflt_value, __pk \ @@ -118,16 +127,20 @@ def _prepare_database(connection: sqlite3.Connection) -> None: if name == 'default_popup_jsallowed_onkeyboard': popup_settings_columns_present = True + if name == 'locale': + locale_column_present = True + if not popup_settings_columns_present: _add_popup_settings_columns(cursor) + if not locale_column_present: + _add_locale_column(cursor) + cursor.execute('COMMIT TRANSACTION;') except: cursor.execute('ROLLBACK TRANSACTION;') raise - - cursor.execute('PRAGMA FOREIGN_KEYS;') if cursor.fetchall() == []: raise HaketiloException(_('err.proxy.no_sqlite_foreign_keys')) @@ -144,14 +157,15 @@ def load_settings(cursor: sqlite3.Cursor) -> st.HaketiloGlobalSettings: default_allow_scripts, advanced_user, repo_refresh_seconds, - mapping_use_mode + mapping_use_mode, + locale FROM general; ''' ) (default_allow_scripts, advanced_user, repo_refresh_seconds, - mapping_use_mode), = cursor.fetchall() + mapping_use_mode, locale), = cursor.fetchall() popup_settings_dict = {} @@ -181,6 +195,7 @@ def load_settings(cursor: sqlite3.Cursor) -> st.HaketiloGlobalSettings: advanced_user = advanced_user, repo_refresh_seconds = repo_refresh_seconds, mapping_use_mode = st.MappingUseMode(mapping_use_mode), + locale = locale, **popup_settings_dict ) @@ -422,6 +437,7 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): default_allow_scripts: t.Optional[bool] = None, advanced_user: t.Optional[bool] = None, repo_refresh_seconds: t.Optional[int] = None, + locale: t.Optional[str] = None, default_popup_settings: t.Mapping[str, st.PopupSettings] = {} ) -> None: with self.cursor(transaction=True) as cursor: @@ -436,6 +452,8 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): set_opt('advanced_user', advanced_user) if repo_refresh_seconds is not None: set_opt('repo_refresh_seconds', repo_refresh_seconds) + if locale is not None: + set_opt('locale', locale) for page_type in ('jsallowed', 'jsblocked', 'payloadon'): popup_settings = default_popup_settings.get(page_type) diff --git a/src/hydrilla/proxy/web_ui/root.py b/src/hydrilla/proxy/web_ui/root.py index 4915e51..6f9e349 100644 --- a/src/hydrilla/proxy/web_ui/root.py +++ b/src/hydrilla/proxy/web_ui/root.py @@ -60,6 +60,30 @@ from . import prompts from . import _app +def choose_locale() -> None: + app = t.cast(WebUIAppImpl, flask.current_app) + + user_chosen_locale = get_settings().locale + if user_chosen_locale not in translations.supported_locales: + user_chosen_locale = None + + if user_chosen_locale is None: + best_locale_match = flask.request.accept_languages.best_match( + translations.supported_locales, + default = translations.default_locale + ) + if best_locale_match is None: + app._haketilo_request_locale = translations.default_locale + else: + app._haketilo_request_locale = best_locale_match + else: + app._haketilo_request_locale = user_chosen_locale + + trans = translations.translation(app._haketilo_request_locale) + + app.jinja_env.install_gettext_translations(trans) + + def authenticate_by_referrer() -> t.Optional[werkzeug.Response]: if flask.request.method == 'GET': return None @@ -90,6 +114,8 @@ class WebUIAppImpl(_app.WebUIApp): _haketilo_blueprints: t.ClassVar[t.Sequence[flask.Blueprint]] _haketilo_ui_domain: t.ClassVar[_app.UIDomain] + _haketilo_request_locale: str + def __init__(self): super().__init__(__name__) @@ -122,6 +148,7 @@ class WebUIAppImpl(_app.WebUIApp): self.jinja_env.globals['doc_base_filename'] = 'doc_base.html.jinja' self.before_request(authenticate_by_referrer) + self.before_request(choose_locale) for bp in self._haketilo_blueprints: self.register_blueprint(bp) @@ -150,7 +177,11 @@ def home_post() -> werkzeug.Response: state = _app.get_haketilo_state() - if action == 'use_enabled': + if action == 'set_lang': + new_locale = flask.request.form['locale'] + assert new_locale in translations.supported_locales + state.update_settings(locale=new_locale) + elif action == 'use_enabled': state.update_settings(mapping_use_mode=st.MappingUseMode.WHEN_ENABLED) elif action == 'use_auto': state.update_settings(mapping_use_mode=st.MappingUseMode.AUTO) @@ -188,7 +219,9 @@ def home_doc(page: str) -> str: if page not in self_doc.page_names: flask.abort(404) - locale = translations.select_best_locale(self_doc.available_locales) + locale = t.cast(WebUIAppImpl, flask.current_app)._haketilo_request_locale + if locale not in self_doc.available_locales: + locale = translations.default_locale return flask.render_template( f'{locale}/{page}.html.jinja', @@ -241,9 +274,6 @@ def process_request( with app._haketilo_app_lock: app._haketilo_state = state - best_translations = translations.translation() - app.jinja_env.install_gettext_translations(best_translations) - flask_response = app.test_client().open( path = path, base_url = request_info.url.url_without_path, diff --git a/src/hydrilla/proxy/web_ui/templates/index.html.jinja b/src/hydrilla/proxy/web_ui/templates/index.html.jinja index 1e498a3..fe9c5d5 100644 --- a/src/hydrilla/proxy/web_ui/templates/index.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/index.html.jinja @@ -73,6 +73,25 @@ code in a proprietary work, I am not going to enforce this in court. {{ _('web_ui.home.heading.options') }} + {{ label(_('web_ui.home.choose_language_label')) }} + + {% call unordered_list() %} + {% + for lang_name, lang_code in [ + ('english', 'en_US'), + ('polski', 'pl_PL') + ] + %} + {% call list_entry() %} +
+ + + +
+ {% endcall %} + {% endfor %} + {% endcall %} + {% call label(_('web_ui.home.mapping_usage_mode_label')) %} {{ hkt_doc_link('packages') }} {% endcall %} -- cgit v1.2.3