aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-09-01 19:47:10 +0200
committerWojtek Kosior <koszko@koszko.org>2022-09-28 12:54:55 +0200
commitb533fa5c5bdd88fa1ea4980ff0c1828d692e5319 (patch)
tree321c967c6cc8f7d579764e22068906e9fa5c7527
parentd150d656bdab394f649a67490b146c5798361187 (diff)
downloadhaketilo-hydrilla-b533fa5c5bdd88fa1ea4980ff0c1828d692e5319.tar.gz
haketilo-hydrilla-b533fa5c5bdd88fa1ea4980ff0c1828d692e5319.zip
[builder][server][proxy] add updated localization
-rw-r--r--babel.cfg4
-rw-r--r--src/hydrilla/locales/en_US/LC_MESSAGES/messages.po581
-rw-r--r--src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po258
-rw-r--r--src/hydrilla/mitmproxy_launcher/launch.py2
-rw-r--r--src/hydrilla/proxy/web_ui/templates/base.html.jinja2
5 files changed, 507 insertions, 340 deletions
diff --git a/babel.cfg b/babel.cfg
index b7c2ea3..7bad205 100644
--- a/babel.cfg
+++ b/babel.cfg
@@ -5,4 +5,6 @@
# Available under the terms of Creative Commons Zero v1.0 Universal.
[python: **.py]
-[jinja2: **.html]
+
+[jinja2: **.html.jinja]
+extensions = jinja2.ext.do
diff --git a/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po b/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po
index 12abee5..bb52222 100644
--- a/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po
+++ b/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po
@@ -7,85 +7,81 @@ msgid ""
msgstr ""
"Project-Id-Version: hydrilla 2.0\n"
"Report-Msgid-Bugs-To: koszko@koszko.org\n"
-"POT-Creation-Date: 2022-06-07 10:23+0200\n"
+"POT-Creation-Date: 2022-09-01 21:22+0200\n"
"PO-Revision-Date: 2022-02-12 00:00+0000\n"
"Last-Translator: Wojtek Kosior <koszko@koszko.org>\n"
"Language: en_US\n"
"Language-Team: en_US <koszko@koszko.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\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.8.0\n"
+"Generated-By: Babel 2.10.3\n"
-#: src/hydrilla/builder/build.py:83 src/hydrilla/builder/local_apt.py:116
-#: src/hydrilla/builder/local_apt.py:408
+#: src/hydrilla/builder/build.py:82 src/hydrilla/builder/local_apt.py:116
+#: src/hydrilla/builder/local_apt.py:410
msgid "couldnt_execute_{}_is_it_installed"
msgstr "Could not execute '{}'. Is the tool installed and reachable via PATH?"
-#: src/hydrilla/builder/build.py:87 src/hydrilla/builder/local_apt.py:120
-#: src/hydrilla/builder/local_apt.py:412
+#: src/hydrilla/builder/build.py:86 src/hydrilla/builder/local_apt.py:120
+#: src/hydrilla/builder/local_apt.py:414
msgid "command_{}_failed"
msgstr "The following command finished execution with a non-zero exit status: {}"
-#: src/hydrilla/builder/build.py:160
-msgid "unknown_schema_package_source_{}"
-msgstr ""
-"The provided JSON at '{}' does not use any of the known package source "
-"JSON schemas."
-
-#: src/hydrilla/builder/build.py:196
+#: src/hydrilla/builder/build.py:193
msgid "path_contains_double_dot_{}"
msgstr ""
"Attempt to load '{}' which includes a forbidden parent reference ('..') "
"in the path."
-#: src/hydrilla/builder/build.py:203
+#: src/hydrilla/builder/build.py:200
msgid "loading_{}_outside_package_dir"
msgstr "Attempt to load '{}' which lies outside package source directory."
-#: src/hydrilla/builder/build.py:207
+#: src/hydrilla/builder/build.py:204
msgid "loading_reserved_index_json"
msgstr "Attempt to load 'index.json' which is a reserved filename."
-#: src/hydrilla/builder/build.py:214
+#: src/hydrilla/builder/build.py:211
msgid "referenced_file_{}_missing"
msgstr "Referenced file '{}' is missing."
-#: src/hydrilla/builder/build.py:396
+#: src/hydrilla/builder/build.py:387
msgid "report_spdx_not_in_copyright_list"
msgstr ""
"Told to generate 'report.spdx' but 'report.spdx' is not listed among "
"copyright files. Refusing to proceed."
-#: src/hydrilla/builder/build.py:473
+#: src/hydrilla/builder/build.py:464
msgid "build_package_from_srcdir_to_dstdir"
msgstr ""
"Build Hydrilla package from `scrdir` and write the resulting files under "
"`dstdir`."
-#: src/hydrilla/builder/build.py:475
+#: src/hydrilla/builder/build.py:466
msgid "source_directory_to_build_from"
msgstr "Source directory to build from."
-#: src/hydrilla/builder/build.py:477
+#: src/hydrilla/builder/build.py:468
msgid "path_instead_of_index_json"
msgstr ""
"Path to file to be processed instead of index.json (if not absolute, "
"resolved relative to srcdir)."
-#: src/hydrilla/builder/build.py:479
+#: src/hydrilla/builder/build.py:470
msgid "path_instead_for_piggyback_files"
msgstr ""
"Path to a non-standard directory with foreign packages' archive files to "
"use."
-#: src/hydrilla/builder/build.py:481
+#: src/hydrilla/builder/build.py:472
msgid "built_package_files_destination"
msgstr "Destination directory to write built package files to."
-#: src/hydrilla/builder/build.py:483 src/hydrilla/server/serve.py:582
-#: src/hydrilla/server/serve.py:604 src/hydrilla/server/serve.py:647
+#: src/hydrilla/builder/build.py:474
+#: src/hydrilla/mitmproxy_launcher/launch.py:58
+#: src/hydrilla/server/serve.py:202 src/hydrilla/server/serve.py:220
+#: src/hydrilla/server/serve.py:260
#, python-format
msgid "%(prog)s_%(version)s_license"
msgstr ""
@@ -96,100 +92,505 @@ msgstr ""
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law."
-#: src/hydrilla/builder/build.py:484 src/hydrilla/server/serve.py:605
-#: src/hydrilla/server/serve.py:648
+#: src/hydrilla/builder/build.py:475 src/hydrilla/server/serve.py:221
+#: src/hydrilla/server/serve.py:261
msgid "version_printing"
msgstr "Print version information and exit."
-#: src/hydrilla/builder/common_errors.py:58
+#: src/hydrilla/builder/common_errors.py:60
msgid "STDOUT_OUTPUT_heading"
msgstr "## Command's standard output ##"
-#: src/hydrilla/builder/common_errors.py:61
+#: src/hydrilla/builder/common_errors.py:63
msgid "STDERR_OUTPUT_heading"
msgstr "## Command's standard error output ##"
-#: src/hydrilla/builder/local_apt.py:145
+#: src/hydrilla/builder/local_apt.py:146
msgid "distro_{}_unknown"
msgstr "Attempt to use an unknown software distribution '{}'."
-#: src/hydrilla/builder/local_apt.py:189
+#: src/hydrilla/builder/local_apt.py:190
msgid "couldnt_import_{}_is_it_installed"
msgstr ""
"Could not import '{}'. Is the module installed and visible to this Python"
" instance?"
-#: src/hydrilla/builder/local_apt.py:197
+#: src/hydrilla/builder/local_apt.py:198
msgid "gpg_couldnt_recv_key_{}"
msgstr "Could not import PGP key '{}'."
-#: src/hydrilla/builder/local_apt.py:311
+#: src/hydrilla/builder/local_apt.py:313
msgid "apt_install_output_not_understood"
msgstr "The output of an 'apt-get install' command was not understood."
-#: src/hydrilla/builder/local_apt.py:337
+#: src/hydrilla/builder/local_apt.py:339
msgid "apt_download_gave_bad_filename_{}"
msgstr "The 'apt-get download' command produced a file with unexpected name '{}'."
-#: src/hydrilla/builder/piggybacking.py:100
+#: src/hydrilla/builder/piggybacking.py:104
msgid "loading_{}_outside_piggybacked_dir"
msgstr ""
"Attempt to load '{}' which lies outside piggybacked packages files root "
"directory."
-#: src/hydrilla/server/serve.py:126
+#: src/hydrilla/item_infos.py:90
+msgid "err.item_info.filename_invalid_{}"
+msgstr "Item definition conatains an illegal path: {}"
+
+#: src/hydrilla/item_infos.py:481
#, python-brace-format
msgid "uuid_mismatch_{identifier}"
msgstr "Two different uuids were specified for item '{identifier}'."
-#: src/hydrilla/server/serve.py:133
-#, python-brace-format
-msgid "version_clash_{identifier}_{version}"
-msgstr "Version '{version}' specified more than once for item '{identifier}'."
+#: src/hydrilla/json_instances.py:86
+msgid "bad_json_comment_line_{line_num}_char_{char_num}"
+msgstr ""
+"JSON document contains an invalid comment at line {line_num}, char "
+"{char_num}."
+
+#: src/hydrilla/json_instances.py:137
+msgid "unknown_schema_{}"
+msgstr "JSON document declares its schema as '{}' which is not a known schema."
+
+#: src/hydrilla/json_instances.py:188
+msgid "err.util.text_in_{}_not_valid_json"
+msgstr "Not a valid JSON file: {}"
+
+#: src/hydrilla/json_instances.py:191
+msgid "err.util.text_not_valid_json"
+msgstr "Not a valid JSON file."
+
+#: src/hydrilla/json_instances.py:206
+msgid "no_schema_number_in_instance"
+msgstr "JSON schema number is missing from a document."
+
+#: src/hydrilla/mitmproxy_launcher/launch.py:51
+msgid "cli_help.haketilo"
+msgstr ""
+"Run Haketilo proxy.\n"
+"\n"
+"This command starts Haketilo as a local HTTP proxy which a web browser "
+"can then use."
+
+#: src/hydrilla/mitmproxy_launcher/launch.py:53
+msgid "cli_opt.haketilo.port"
+msgstr "TCP port number the proxy should listen on (1-65535)."
+
+#: src/hydrilla/mitmproxy_launcher/launch.py:56
+msgid "cli_opt.haketilo.dir"
+msgstr "Data directory for Haketilo to use."
+
+#: src/hydrilla/mitmproxy_launcher/launch.py:59
+msgid "cli_opt.haketilo.version"
+msgstr "Print version information and exit"
+
+#: src/hydrilla/proxy/addon.py:109
+msgid "haketilo_dir_already_configured"
+msgstr ""
+"Attempt was made to configure Haketilo Mitmproxy addon with data "
+"directory path but it has already been configured."
+
+#: src/hydrilla/proxy/addon.py:164
+msgid "err.proxy.unknown_error_{}_try_again"
+msgstr ""
+"Haketilo experienced an error. Try again.\n"
+"\n"
+"{}"
+
+#: src/hydrilla/proxy/policies/payload_resource.py:88
+msgid "api.file_not_found"
+msgstr "Requested file could not be found."
+
+#: src/hydrilla/proxy/policies/payload_resource.py:124
+msgid "api.resource_not_enabled_for_access"
+msgstr "Requested resource is not enabled for access."
+
+#: src/hydrilla/proxy/state_impl/concrete_state.py:107
+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:111
+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/web_ui/items.py:52
+msgid "err.proxy.uploaded_malcontent_invalid"
+msgstr "The uploaded archive does not contain valid Haketilo malcontent."
+
+#: src/hydrilla/proxy/web_ui/items.py:77
+msgid "err.proxy.uploaded_file_not_zip"
+msgstr "The uploaded file is not a valid ZIP file."
+
+#: src/hydrilla/proxy/web_ui/templates/base.html.jinja:44
+msgid "web_ui.base.title.haketilo_proxy"
+msgstr "Haketilo"
+
+#: src/hydrilla/proxy/web_ui/templates/base.html.jinja:184
+msgid "web_ui.base.nav.home"
+msgstr "Home"
+
+#: src/hydrilla/proxy/web_ui/templates/base.html.jinja:185
+msgid "web_ui.base.nav.packages"
+msgstr "Packages"
+
+#: src/hydrilla/proxy/web_ui/templates/base.html.jinja:186
+msgid "web_ui.base.nav.libraries"
+msgstr "Libraries"
+
+#: src/hydrilla/proxy/web_ui/templates/base.html.jinja:187
+msgid "web_ui.base.nav.repos"
+msgstr "Repositories"
+
+#: src/hydrilla/proxy/web_ui/templates/base.html.jinja:188
+msgid "web_ui.base.nav.load"
+msgstr "Import from file"
+
+#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:22
+msgid "web_ui.home.title"
+msgstr "Welcome"
+
+#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:24
+msgid "web_ui.home.welcome_to_haketilo"
+msgstr "Welcome to Haketilo!"
+
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:25
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:31
+msgid "web_ui.err.file_installation_error"
+msgstr "Failed to install needed items from repository."
+
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:30
+msgid "web_ui.err.uninstall_disallowed"
+msgstr "This item is required and cannot be uninstalled."
+
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:35
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:36
+msgid "web_ui.err.repo_communication_error"
+msgstr "Couldn't communicate with repository."
+
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:63
+msgid "web_ui.items.single_version.retry_install_button"
+msgstr "Retry installation"
+
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:67
+msgid "web_ui.items.single_version.leave_uninstalled_button"
+msgstr "Leave uninstalled"
+
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:71
+msgid "web_ui.items.single_version.install_button"
+msgstr "Install"
-#: src/hydrilla/server/serve.py:249 src/hydrilla/server/serve.py:261
-msgid "invalid_URL_{}"
-msgstr "Invalid URL/pattern: '{}'."
+#: src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja:72
+msgid "web_ui.items.single_version.uninstall_button"
+msgstr "Uninstall"
-#: src/hydrilla/server/serve.py:253
-msgid "disallowed_protocol_{}"
-msgstr "Disallowed protocol: '{}'."
+#: src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja:22
+msgid "web_ui.libraries.title"
+msgstr "Libraries"
-#: src/hydrilla/server/serve.py:306
-msgid "malcontent_dir_path_not_dir_{}"
+#: src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja:29
+msgid "web_ui.libraries.heading"
+msgstr "Available libraries"
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja:22
+msgid "web_ui.items.single.library.title"
+msgstr "Library view"
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja:25
+msgid "web_ui.items.single.library.heading.name_{}"
+msgstr "Libraries known by '{}'"
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja:35
+msgid "web_ui.items.single.library.version_list_heading"
+msgstr "Available versions"
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:24
+msgid "web_ui.items.single_version.library.title"
+msgstr "Library version view"
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:29
+msgid "web_ui.items.single_version.library.heading.name_{}"
+msgstr "Library '{}'"
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:35
+msgid "web_ui.items.single_version.library.item_required"
+msgstr "This library is required by an enabled mapping. It cannot be uninstalled."
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:39
+msgid "web_ui.items.single_version.library.item_auto_activated"
+msgstr "This library is used by a package which can be activated automatically."
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:43
+msgid "web_ui.items.single_version.library.item_not_activated"
+msgstr "This library is not used by any active mapping."
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:47
+msgid "web_ui.items.single_version.library.install_failed"
+msgstr "Couldn't install this library."
+
+#: src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja:51
+msgid "web_ui.items.single_version.library.version_list_heading"
+msgstr "Other available versions of this library."
+
+#: src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja:22
+msgid "web_ui.load_from_disk.title"
+msgstr "Import from file"
+
+#: src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja:32
+msgid "web_ui.load_from_disk.heading"
+msgstr "Import items from a ZIP archive"
+
+#: src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja:40
+msgid "web_ui.load_from_disk.choose_zipfile_button"
+msgstr "Select file"
+
+#: src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja:45
+msgid "web_ui.load_from_disk.install_button"
+msgstr "Import"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:22
+msgid "web_ui.items.single.package.title"
+msgstr "Package view"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:25
+msgid "web_ui.items.single.package.heading.name_{}"
+msgstr "Packages known by '{}'"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja:35
+msgid "web_ui.items.single.package.version_list_heading"
+msgstr "Available versions"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:24
+msgid "web_ui.items.single_version.package.title"
+msgstr "Package version view"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:29
+msgid "web_ui.items.single_version.package.heading.name_{}"
+msgstr "Package '{}'"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:35
+msgid "web_ui.items.single_version.package.item_required"
+msgstr "This package is required. It cannot be uninstalled."
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:39
+msgid "web_ui.items.single_version.package.item_auto_activated"
+msgstr "This package can be activated automatically."
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:43
+msgid "web_ui.items.single_version.package.item_not_activated"
+msgstr "This package is not active."
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:47
+msgid "web_ui.items.single_version.package.install_failed"
+msgstr "Couldn't install this package."
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:51
+msgid "web_ui.items.single_version.package.version_list_heading"
+msgstr "Available versions"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:67
+msgid "web_ui.items.single_version.unenable_button"
+msgstr "Forget"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:68
+msgid "web_ui.items.single_version.disable_button"
+msgstr "Disable"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:75
+msgid "web_ui.items.single_version.freeze_to_this_button"
+msgstr "Pin to this version"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:78
+msgid "web_ui.items.single_version.enable_button"
+msgstr "Enable"
+
+#: src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja:89
+msgid "web_ui.items.single_version.other_version_enabled"
+msgstr "Other available versions of this package."
+
+#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:22
+msgid "web_ui.packages.title"
+msgstr "Packages"
+
+#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:29
+msgid "web_ui.packages.heading"
+msgstr "Available packages"
+
+#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:53
+msgid "web_ui.packages.enabled_version_{}"
+msgstr "enabled version {}"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:22
+msgid "web_ui.repos.add.title"
+msgstr "New repository"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:24
+msgid "web_ui.repos.add.heading"
+msgstr "Configure a new repository"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:28
+msgid "web_ui.repos.add.name_field_label"
+msgstr "Name"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:33
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:68
+msgid "web_ui.err.repo_name_invalid"
+msgstr "Chosen name is not valid."
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:38
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:73
+msgid "web_ui.err.repo_name_taken"
+msgstr "Chosen name is already in use."
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:46
+msgid "web_ui.repos.add.url_field_label"
+msgstr "URL"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:51
+#: 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."
+
+#: src/hydrilla/proxy/web_ui/templates/repos/add.html.jinja:59
+msgid "web_ui.repos.add.submit_button"
+msgstr "Add repository"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:22
+msgid "web_ui.repos.title"
+msgstr "Repositories"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:29
+msgid "web_ui.repos.heading"
+msgstr "Configured repositories"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:32
+msgid "web_ui.repos.add_repo_button"
+msgstr "Configure new repository"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:52
+#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:62
+msgid "web_ui.repos.package_count_{}"
+msgstr "packages: {}"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/index.html.jinja:59
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:46
+msgid "web_ui.repos.local_packages_semirepo"
+msgstr "Local packages"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:22
+msgid "web_ui.repos.single.title"
+msgstr "Repository view"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:41
+msgid "web_ui.err.repo_api_version_unsupported"
+msgstr ""
+"Repository uses an unsupported API version. You might need to update "
+"Haketilo."
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:49
+msgid "web_ui.repos.single.heading.name_{}"
+msgstr "Configured repositories"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:61
+msgid "web_ui.repos.single.update_name_button"
+msgstr "Change name"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:81
+msgid "web_ui.repos.single.commit_update_name_button"
+msgstr "Set new name"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:84
+msgid "web_ui.repos.single.abort_update_name_button"
+msgstr "Cancel"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:92
+msgid "web_ui.repos.single.repo_is_deleted"
+msgstr ""
+"This repository has been deleted but you're still holding packages that "
+"came from it."
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:108
+msgid "web_ui.repos.single.update_url_button"
+msgstr "Change URL"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:124
+msgid "web_ui.repos.single.commit_update_url_button"
+msgstr "Set new URL"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:127
+msgid "web_ui.repos.single.abort_update_url_button"
+msgstr "Cancel"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:133
+msgid "web_ui.repos.single.repo_never_refreshed"
+msgstr "This repository has not been refreshed yet"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:136
+msgid "web_ui.repos.single.last_refreshed_{}"
+msgstr "Last refreshed on {}."
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:143
+msgid "web_ui.repos.single.refresh_now_button"
+msgstr "Refresh"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:150
+msgid "web_ui.repos.item_count_{mappings}_{resources}"
+msgstr "packages: {mappings}; libraries: {resources}"
+
+#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:161
+msgid "web_ui.repos.single.remove_button"
+msgstr "Remove"
+
+#: src/hydrilla/server/malcontent.py:79
+msgid "err.server.malcontent_path_not_dir_{}"
msgstr "Provided 'malcontent_dir' path does not name a directory: {}"
-#: src/hydrilla/server/serve.py:325
-msgid "couldnt_load_item_from_{}"
+#: src/hydrilla/server/malcontent.py:98
+msgid "err.server.couldnt_load_item_from_{}"
msgstr "Couldn't load item from {}."
-#: src/hydrilla/server/serve.py:350
-msgid "item_{item}_in_file_{file}"
+#: src/hydrilla/server/malcontent.py:111
+msgid "err.server.no_file_{required_by}_{ver}_{file}_{sha256}"
+msgstr ""
+"'{required_by}', version '{ver}' uses a file named {file} with SHA256 "
+"hash of {sha256}, but the file is missing."
+
+#: src/hydrilla/server/malcontent.py:135
+msgid "err.server.item_{item}_in_file_{file}"
msgstr "Item {item} incorrectly present under {file}."
-#: src/hydrilla/server/serve.py:356
+#: src/hydrilla/server/malcontent.py:141
msgid "item_version_{ver}_in_file_{file}"
msgstr "Item version {ver} incorrectly present under {file}."
-#: src/hydrilla/server/serve.py:379
-msgid "no_dep_{resource}_{ver}_{dep}"
+#: src/hydrilla/server/malcontent.py:168
+msgid "err.server.no_dep_{resource}_{ver}_{dep}"
msgstr "Unknown dependency '{dep}' of resource '{resource}', version '{ver}'."
-#: src/hydrilla/server/serve.py:390
-msgid "no_payload_{mapping}_{ver}_{payload}"
+#: src/hydrilla/server/malcontent.py:183
+msgid "err.server.no_payload_{mapping}_{ver}_{payload}"
msgstr "Unknown payload '{payload}' of mapping '{mapping}', version '{ver}'."
-#: src/hydrilla/server/serve.py:402
-msgid "no_mapping_{required_by}_{ver}_{required}"
+#: src/hydrilla/server/malcontent.py:198
+msgid "err.server.no_mapping_{required_by}_{ver}_{required}"
msgstr "Unknown mapping '{required}' required by '{required_by}', version '{ver}'."
-#: src/hydrilla/server/serve.py:429
-msgid "couldnt_register_{mapping}_{ver}_{pattern}"
+#: src/hydrilla/server/malcontent.py:226
+msgid "server.err.couldnt_register_{mapping}_{ver}_{pattern}"
msgstr ""
"Couldn't register mapping '{mapping}', version '{ver}' (pattern "
"'{pattern}')."
-#: src/hydrilla/server/serve.py:590
+#: src/hydrilla/server/serve.py:83
+msgid "err.server.opt_hydrilla_parent_not_implemented"
+msgstr ""
+"Hydrilla was told to connect to a parent Hydrilla server but this feature"
+" is not yet implemented."
+
+#: src/hydrilla/server/serve.py:208
msgid "serve_hydrilla_packages_explain_wsgi_considerations"
msgstr ""
"Serve Hydrilla packages.\n"
@@ -198,36 +599,36 @@ msgstr ""
"Hydrilla instance. For better performance, consider deployment using "
"WSGI."
-#: src/hydrilla/server/serve.py:593
+#: src/hydrilla/server/serve.py:211
msgid "directory_to_serve_from_overrides_config"
msgstr ""
"Directory to serve files from. Overrides value from the config file (if "
"any)."
-#: src/hydrilla/server/serve.py:595
+#: src/hydrilla/server/serve.py:213
msgid "project_url_to_display_overrides_config"
msgstr ""
"Project url to display on generated HTML pages. Overrides value from the "
"config file (if any)."
-#: src/hydrilla/server/serve.py:597
+#: src/hydrilla/server/serve.py:215
msgid "tcp_port_to_listen_on_overrides_config"
msgstr ""
"TCP port number to listen on (0-65535). Overrides value from the config "
"file (if any)."
-#: src/hydrilla/server/serve.py:600
+#: src/hydrilla/server/serve.py:218
msgid "path_to_config_file_explain_default"
msgstr ""
"Path to Hydrilla server configuration file (optional, by default Hydrilla"
" loads its own config file, which in turn tries to load "
"/etc/hydrilla/config.json)."
-#: src/hydrilla/server/serve.py:637
+#: src/hydrilla/server/serve.py:250
msgid "config_option_{}_not_supplied"
msgstr "Missing configuration option '{}'."
-#: src/hydrilla/server/serve.py:641
+#: src/hydrilla/server/serve.py:254
msgid "serve_hydrilla_packages_wsgi_help"
msgstr ""
"Serve Hydrilla packages.\n"
@@ -236,17 +637,39 @@ msgstr ""
"HTTP server like Apache2 or Nginx. You can configure Hydrilla through the"
" /etc/hydrilla/config.json file."
-#. 'hydrilla' as a title
-#: src/hydrilla/server/templates/base.html:99
-#: src/hydrilla/server/templates/base.html:105
-msgid "hydrilla"
-msgstr "Hydrilla"
+#: src/hydrilla/url_patterns.py:132
+msgid "err.url_pattern_{}.bad"
+msgstr "Not a valid Haketilo URL pattern: {}"
+
+#: src/hydrilla/url_patterns.py:135
+msgid "err.url_{}.bad"
+msgstr "Not a valid URL: {}"
+
+#: src/hydrilla/url_patterns.py:142
+msgid "err.url_pattern_{}.bad_scheme"
+msgstr "URL pattern has an unknown scheme: {}"
+
+#: src/hydrilla/url_patterns.py:145
+msgid "err.url_{}.bad_scheme"
+msgstr "URL has an unknown scheme: {}"
+
+#: src/hydrilla/url_patterns.py:150
+msgid "err.url_pattern_{}.special_scheme_port"
+msgstr "URL pattern has an explicit port while it shouldn't: {}"
+
+#: src/hydrilla/url_patterns.py:162
+msgid "err.url_pattern_{}.bad_port"
+msgstr "URL pattern has a port outside of allowed range (1-65535): {}"
+
+#: src/hydrilla/url_patterns.py:165
+msgid "err.url_{}.bad_port"
+msgstr "URL has a port outside of allowed range (1-65535): {}"
-#: src/hydrilla/server/templates/index.html:29
-msgid "hydrilla_welcome"
-msgstr "Welcome to Hydrilla!"
+#: src/hydrilla/url_patterns.py:186
+msgid "err.url_pattern_{}.has_query"
+msgstr "URL pattern has a query string while it shouldn't: {}"
-#: src/hydrilla/util/_util.py:86
-msgid "bad_comment"
-msgstr "bad comment"
+#: src/hydrilla/url_patterns.py:190
+msgid "err.url_pattern_{}.has_frag"
+msgstr "URL pattern has a fragment string while it shouldn't: {}"
diff --git a/src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po b/src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po
deleted file mode 100644
index 57cca4d..0000000
--- a/src/hydrilla/locales/pl_PL/LC_MESSAGES/messages.po
+++ /dev/null
@@ -1,258 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-#
-# English (United States) translations for hydrilla.
-# 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 2.0\n"
-"Report-Msgid-Bugs-To: koszko@koszko.org\n"
-"POT-Creation-Date: 2022-06-07 10:23+0200\n"
-"PO-Revision-Date: 2022-02-12 00:00+0000\n"
-"Last-Translator: Wojtek Kosior <koszko@koszko.org>\n"
-"Language: en_US\n"
-"Language-Team: en_US <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.8.0\n"
-
-#: src/hydrilla/builder/build.py:83 src/hydrilla/builder/local_apt.py:116
-#: src/hydrilla/builder/local_apt.py:408
-msgid "couldnt_execute_{}_is_it_installed"
-msgstr "Could not execute '{}'. Is the tool installed and reachable via PATH?"
-
-#: src/hydrilla/builder/build.py:87 src/hydrilla/builder/local_apt.py:120
-#: src/hydrilla/builder/local_apt.py:412
-msgid "command_{}_failed"
-msgstr "The following command finished execution with a non-zero exit status: {}"
-
-#: src/hydrilla/builder/build.py:160
-msgid "unknown_schema_package_source_{}"
-msgstr ""
-"The provided JSON at '{}' does not use any of the known package source "
-"JSON schemas."
-
-#: src/hydrilla/builder/build.py:196
-msgid "path_contains_double_dot_{}"
-msgstr ""
-"Attempt to load '{}' which includes a forbidden parent reference ('..') "
-"in the path."
-
-#: src/hydrilla/builder/build.py:203
-msgid "loading_{}_outside_package_dir"
-msgstr "Attempt to load '{}' which lies outside package source directory."
-
-#: src/hydrilla/builder/build.py:207
-msgid "loading_reserved_index_json"
-msgstr "Attempt to load 'index.json' which is a reserved filename."
-
-#: src/hydrilla/builder/build.py:214
-msgid "referenced_file_{}_missing"
-msgstr "Referenced file '{}' is missing."
-
-#: src/hydrilla/builder/build.py:396
-msgid "report_spdx_not_in_copyright_list"
-msgstr ""
-"Told to generate 'report.spdx' but 'report.spdx' is not listed among "
-"copyright files. Refusing to proceed."
-
-#: src/hydrilla/builder/build.py:473
-msgid "build_package_from_srcdir_to_dstdir"
-msgstr ""
-"Build Hydrilla package from `scrdir` and write the resulting files under "
-"`dstdir`."
-
-#: src/hydrilla/builder/build.py:475
-msgid "source_directory_to_build_from"
-msgstr "Source directory to build from."
-
-#: src/hydrilla/builder/build.py:477
-msgid "path_instead_of_index_json"
-msgstr ""
-"Path to file to be processed instead of index.json (if not absolute, "
-"resolved relative to srcdir)."
-
-#: src/hydrilla/builder/build.py:479
-msgid "path_instead_for_piggyback_files"
-msgstr ""
-"Path to a non-standard directory with foreign packages' archive files to "
-"use."
-
-#: src/hydrilla/builder/build.py:481
-msgid "built_package_files_destination"
-msgstr "Destination directory to write built package files to."
-
-#: src/hydrilla/builder/build.py:483 src/hydrilla/server/serve.py:582
-#: src/hydrilla/server/serve.py:604 src/hydrilla/server/serve.py:647
-#, python-format
-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 "
-"<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."
-
-#: src/hydrilla/builder/build.py:484 src/hydrilla/server/serve.py:605
-#: src/hydrilla/server/serve.py:648
-msgid "version_printing"
-msgstr "Print version information and exit."
-
-#: src/hydrilla/builder/common_errors.py:58
-msgid "STDOUT_OUTPUT_heading"
-msgstr "## Command's standard output ##"
-
-#: src/hydrilla/builder/common_errors.py:61
-msgid "STDERR_OUTPUT_heading"
-msgstr "## Command's standard error output ##"
-
-#: src/hydrilla/builder/local_apt.py:145
-msgid "distro_{}_unknown"
-msgstr "Attempt to use an unknown software distribution '{}'."
-
-#: src/hydrilla/builder/local_apt.py:189
-msgid "couldnt_import_{}_is_it_installed"
-msgstr ""
-"Could not import '{}'. Is the module installed and visible to this Python"
-" instance?"
-
-#: src/hydrilla/builder/local_apt.py:197
-msgid "gpg_couldnt_recv_key_{}"
-msgstr "Could not import PGP key '{}'."
-
-#: src/hydrilla/builder/local_apt.py:311
-msgid "apt_install_output_not_understood"
-msgstr "The output of an 'apt-get install' command was not understood."
-
-#: src/hydrilla/builder/local_apt.py:337
-msgid "apt_download_gave_bad_filename_{}"
-msgstr "The 'apt-get download' command produced a file with unexpected name '{}'."
-
-#: src/hydrilla/builder/piggybacking.py:100
-msgid "loading_{}_outside_piggybacked_dir"
-msgstr ""
-"Attempt to load '{}' which lies outside piggybacked packages files root "
-"directory."
-
-#: src/hydrilla/server/serve.py:126
-#, python-brace-format
-msgid "uuid_mismatch_{identifier}"
-msgstr "Two different uuids were specified for item '{identifier}'."
-
-#: src/hydrilla/server/serve.py:133
-#, python-brace-format
-msgid "version_clash_{identifier}_{version}"
-msgstr "Version '{version}' specified more than once for item '{identifier}'."
-
-#: src/hydrilla/server/serve.py:249 src/hydrilla/server/serve.py:261
-msgid "invalid_URL_{}"
-msgstr "Invalid URL/pattern: '{}'."
-
-#: src/hydrilla/server/serve.py:253
-msgid "disallowed_protocol_{}"
-msgstr "Disallowed protocol: '{}'."
-
-#: src/hydrilla/server/serve.py:306
-msgid "malcontent_dir_path_not_dir_{}"
-msgstr "Provided 'malcontent_dir' path does not name a directory: {}"
-
-#: src/hydrilla/server/serve.py:325
-msgid "couldnt_load_item_from_{}"
-msgstr "Couldn't load item from {}."
-
-#: src/hydrilla/server/serve.py:350
-msgid "item_{item}_in_file_{file}"
-msgstr "Item {item} incorrectly present under {file}."
-
-#: src/hydrilla/server/serve.py:356
-msgid "item_version_{ver}_in_file_{file}"
-msgstr "Item version {ver} incorrectly present under {file}."
-
-#: src/hydrilla/server/serve.py:379
-msgid "no_dep_{resource}_{ver}_{dep}"
-msgstr "Unknown dependency '{dep}' of resource '{resource}', version '{ver}'."
-
-#: src/hydrilla/server/serve.py:390
-msgid "no_payload_{mapping}_{ver}_{payload}"
-msgstr "Unknown payload '{payload}' of mapping '{mapping}', version '{ver}'."
-
-#: src/hydrilla/server/serve.py:402
-msgid "no_mapping_{required_by}_{ver}_{required}"
-msgstr "Unknown mapping '{required}' required by '{required_by}', version '{ver}'."
-
-#: src/hydrilla/server/serve.py:429
-msgid "couldnt_register_{mapping}_{ver}_{pattern}"
-msgstr ""
-"Couldn't register mapping '{mapping}', version '{ver}' (pattern "
-"'{pattern}')."
-
-#: src/hydrilla/server/serve.py:590
-msgid "serve_hydrilla_packages_explain_wsgi_considerations"
-msgstr ""
-"Serve Hydrilla packages.\n"
-"\n"
-"This command is meant to be a quick way to run a local or development "
-"Hydrilla instance. For better performance, consider deployment using "
-"WSGI."
-
-#: src/hydrilla/server/serve.py:593
-msgid "directory_to_serve_from_overrides_config"
-msgstr ""
-"Directory to serve files from. Overrides value from the config file (if "
-"any)."
-
-#: src/hydrilla/server/serve.py:595
-msgid "project_url_to_display_overrides_config"
-msgstr ""
-"Project url to display on generated HTML pages. Overrides value from the "
-"config file (if any)."
-
-#: src/hydrilla/server/serve.py:597
-msgid "tcp_port_to_listen_on_overrides_config"
-msgstr ""
-"TCP port number to listen on (0-65535). Overrides value from the config "
-"file (if any)."
-
-#: src/hydrilla/server/serve.py:600
-msgid "path_to_config_file_explain_default"
-msgstr ""
-"Path to Hydrilla server configuration file (optional, by default Hydrilla"
-" loads its own config file, which in turn tries to load "
-"/etc/hydrilla/config.json)."
-
-#: src/hydrilla/server/serve.py:602
-msgid "language_to_use_overrides_config"
-msgstr ""
-"Language to use (also affects served HTML files). Overrides value from "
-"the config file (if any)."
-
-#: src/hydrilla/server/serve.py:637
-msgid "config_option_{}_not_supplied"
-msgstr "Missing configuration option '{}'."
-
-#: src/hydrilla/server/serve.py:641
-msgid "serve_hydrilla_packages_wsgi_help"
-msgstr ""
-"Serve Hydrilla packages.\n"
-"\n"
-"This program is a WSGI script that runs Hydrilla repository behind an "
-"HTTP server like Apache2 or Nginx. You can configure Hydrilla through the"
-" /etc/hydrilla/config.json file."
-
-#. 'hydrilla' as a title
-#: src/hydrilla/server/templates/base.html:99
-#: src/hydrilla/server/templates/base.html:105
-msgid "hydrilla"
-msgstr "Hydrilla po polsku"
-
-#: src/hydrilla/server/templates/index.html:29
-msgid "hydrilla_welcome"
-msgstr "Welcome to Hydrilla!"
-
-#: src/hydrilla/util/_util.py:86
-msgid "bad_comment"
-msgstr "bad comment"
-
diff --git a/src/hydrilla/mitmproxy_launcher/launch.py b/src/hydrilla/mitmproxy_launcher/launch.py
index 59ca131..12b31e2 100644
--- a/src/hydrilla/mitmproxy_launcher/launch.py
+++ b/src/hydrilla/mitmproxy_launcher/launch.py
@@ -49,7 +49,7 @@ addons = [HaketiloAddon()]
'''
@click.command(help=_('cli_help.haketilo'))
-@click.option('-p', '--port', default=8080, type=click.IntRange(0, 65535),
+@click.option('-p', '--port', default=8080, type=click.IntRange(1, 65535),
help=_('cli_opt.haketilo.port'))
@click.option('-d', '--directory', default='~/.haketilo/',
type=click.Path(file_okay=False),
diff --git a/src/hydrilla/proxy/web_ui/templates/base.html.jinja b/src/hydrilla/proxy/web_ui/templates/base.html.jinja
index 9520787..a1de86a 100644
--- a/src/hydrilla/proxy/web_ui/templates/base.html.jinja
+++ b/src/hydrilla/proxy/web_ui/templates/base.html.jinja
@@ -41,7 +41,7 @@ in a proprietary work, I am not going to enforce this in court.
<title>
{% block title required %}{% endblock %}
-
- _('web_ui.base.title.haketilo_proxy')
+ {{ _('web_ui.base.title.haketilo_proxy') }}
</title>
<style>
{% block style %}