aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-10-31 22:19:18 +0100
committerWojtek Kosior <koszko@koszko.org>2022-10-31 22:19:18 +0100
commit9b01180ec981d6d0ffd7b0e84a3ddbb0a2cf1ecc (patch)
tree66ec7089fca89fcaa4f769cc74cf12e783968ea9
parentf1638c63de7c27c2fdccb55f4b540c8fb79d3762 (diff)
downloadhaketilo-hydrilla-9b01180ec981d6d0ffd7b0e84a3ddbb0a2cf1ecc.tar.gz
haketilo-hydrilla-9b01180ec981d6d0ffd7b0e84a3ddbb0a2cf1ecc.zip
[builder][server][proxy] complete internationalization and add polish translation
m---------src/hydrilla/common_jinja_templates0
-rw-r--r--src/hydrilla/locales/en_US/LC_MESSAGES/messages.po98
-rw-r--r--src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po1525
-rw-r--r--src/hydrilla/proxy/policies/base.py25
-rw-r--r--src/hydrilla/proxy/policies/misc.py10
-rw-r--r--src/hydrilla/proxy/policies/payload.py2
-rw-r--r--src/hydrilla/proxy/policies/rule.py6
-rw-r--r--src/hydrilla/proxy/state.py2
-rw-r--r--src/hydrilla/proxy/state_impl/concrete_state.py26
-rw-r--r--src/hydrilla/proxy/web_ui/root.py40
-rw-r--r--src/hydrilla/proxy/web_ui/templates/index.html.jinja19
11 files changed, 1684 insertions, 69 deletions
diff --git a/src/hydrilla/common_jinja_templates b/src/hydrilla/common_jinja_templates
-Subproject 0e8ab5c2735b94166552ce80c18e523357a048a
+Subproject 6b414822f00206b83884e7738b1311ab9d7cbf9
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 <koszko@koszko.org>\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 "
"<https://gnu.org/licenses/gpl.html>\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 <koszko@koszko.org>
+# 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 <koszko@koszko.org>\n"
+"Language: pl_PL\n"
+"Language-Team: pl_PL <koszko@koszko.org>\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 "
+"<https://gnu.org/licenses/gpl.html>\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ż <a href=\"mailto:koszko@koszko.org\">zgłoszenie "
+"błędu</a>."
+
+#: 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. <a href=\"{url}\" "
+"target=\"_blank\">Reguła pozwalająca</a> 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 <a "
+"href=\"{url}\" target=\"_blank\">reguła zabraniająca</a> 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 '<a href=\"{url}\" "
+"target=\"_blank\">{identifier}</a>'. 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 <a "
+"href=\"https://mitmproxy.org/\">mitmproxy</a>."
+
+#: 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 <a "
+"href=\"{url}\">wbudowanej dokumentacji</a> 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 <a "
+"href=\"http://mitm.it\">tej strony</a> 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ć <a "
+"href=\"http://hkt.mitm.it\">http://hkt.mitm.it</a>. 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') }}
</h4>
+ {{ 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() %}
+ <form method="POST" class="inline">
+ <input type="hidden" name="action" value="set_lang">
+ <input type="hidden" name="locale" value="{{ lang_code }}">
+ <button>{{ lang_name }}</button>
+ </form>
+ {% endcall %}
+ {% endfor %}
+ {% endcall %}
+
{% call label(_('web_ui.home.mapping_usage_mode_label')) %}
{{ hkt_doc_link('packages') }}
{% endcall %}