From 0585c628f21703576f5d892efb172a2c5d419063 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:17:13 +0200 Subject: [PATCH 1/9] Update submodules from remotes --- problem-sets | 2 +- src/appx/blog | 2 +- src/appx/libms | 2 +- src/index.txt | 4 ++-- src/spec/giver | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/problem-sets b/problem-sets index 56ce293ef..4e056d7bb 160000 --- a/problem-sets +++ b/problem-sets @@ -1 +1 @@ -Subproject commit 56ce293ef4329142767e14c270877fd4d90b1928 +Subproject commit 4e056d7bb7e3f1645b9c72e1343a40acf766ca52 diff --git a/src/appx/blog b/src/appx/blog index 6bd83e049..6e7cbc29b 160000 --- a/src/appx/blog +++ b/src/appx/blog @@ -1 +1 @@ -Subproject commit 6bd83e049ab696587fd5f53a8101e3a66575b006 +Subproject commit 6e7cbc29bd4fbb0155df0104111de26cdc1681cd diff --git a/src/appx/libms b/src/appx/libms index a7b79a2c2..a1762d276 160000 --- a/src/appx/libms +++ b/src/appx/libms @@ -1 +1 @@ -Subproject commit a7b79a2c262c0506f6577e1230c01264d1777060 +Subproject commit a1762d276c5ef518e6febee266bfb215bae877c9 diff --git a/src/index.txt b/src/index.txt index a382ab469..0a85189c4 100644 --- a/src/index.txt +++ b/src/index.txt @@ -31,8 +31,8 @@ appx/assignments appx/conv_store appx/wtk - appx/blog/spec - appx/libms/spec + appx/blog/index + appx/libms/index .. rubric:: References diff --git a/src/spec/giver b/src/spec/giver index 2006c3f5e..858138001 160000 --- a/src/spec/giver +++ b/src/spec/giver @@ -1 +1 @@ -Subproject commit 2006c3f5eb8c5615574f4fd0e6dd5252135bdbee +Subproject commit 858138001350b9e33d3ff45fdc69badcbe7425a4 From cdab2ef2022ae809ce5cfbf4d7eea6387a8eccbf Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:21:06 +0200 Subject: [PATCH 2/9] Add legacy directories to the documentation builder exclude patterns --- src/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/conf.py b/src/conf.py index 5e4df8181..5fcb7e831 100644 --- a/src/conf.py +++ b/src/conf.py @@ -40,6 +40,8 @@ } needs_sphinx = "4.0" exclude_patterns = [ + "**/_legacy/**", + "**/legacy/**", "**/README.*", ] suppress_warnings = [] From f6f4db8e1a8e294f4e666ef7eb9d7f503e8b8b96 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:26:25 +0200 Subject: [PATCH 3/9] Add redirects support for the documentation builder --- poetry.lock | 17 ++++++++++++++++- pyproject.toml | 1 + requirements.txt | 1 + src/conf.py | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 42d59d1a8..3cc9e19de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -654,6 +654,21 @@ sphinx = "*" [package.extras] test = ["mock", "pytest", "six"] +[[package]] +name = "sphinx-reredirects" +version = "0.1.3" +description = "Handles redirects for moved pages in Sphinx documentation projects" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinx_reredirects-0.1.3-py3-none-any.whl", hash = "sha256:02c53437c467cf9ed89863eff3addedc01d129624b2f03ab6302518fb77a2c89"}, + {file = "sphinx_reredirects-0.1.3.tar.gz", hash = "sha256:56e222d285f76c944fd370f36ad3a1a66103a88b552e97d3d24a622bb9465de8"}, +] + +[package.dependencies] +sphinx = "*" + [[package]] name = "sphinx-rtd-theme" version = "1.3.0" @@ -878,4 +893,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "21b20ccf05a1fc5b1c4a0fb7a3952fb9b06a35fa00ecdb101428061a5e05a175" +content-hash = "f071d183d2f1e5bc624eabe1397898b37da6b54f2ee0cc293240741d1219fd66" diff --git a/pyproject.toml b/pyproject.toml index 767147eda..e765f81f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ sphinxcontrib-bibtex = "^2.5.0" sphinxcontrib-mermaid = "^0.8.1" sphinx-copybutton = "^0.5.2" toml = "^0.10.2" +sphinx-reredirects = "^0.1.3" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/requirements.txt b/requirements.txt index dfe21ca05..8e4a21243 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,6 +26,7 @@ six==1.16.0 ; python_version >= "3.9" and python_version < "4.0" snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "4.0" sphinx-copybutton==0.5.2 ; python_version >= "3.9" and python_version < "4.0" sphinx-intl==2.1.0 ; python_version >= "3.9" and python_version < "4.0" +sphinx-reredirects==0.1.3 ; python_version >= "3.9" and python_version < "4.0" sphinx-rtd-theme==1.3.0 ; python_version >= "3.9" and python_version < "4.0" sphinx==6.2.1 ; python_version >= "3.9" and python_version < "4.0" sphinxcontrib-applehelp==1.0.7 ; python_version >= "3.9" and python_version < "4.0" diff --git a/src/conf.py b/src/conf.py index 5fcb7e831..f9b8ea9f1 100644 --- a/src/conf.py +++ b/src/conf.py @@ -32,6 +32,7 @@ "sphinx_rtd_theme", "myst_parser", "sphinx_copybutton", + "sphinx_reredirects", ] source_suffix = { ".txt": "restructuredtext", From 447508c6fa1f89acdbec63f95fa3d7fcfb56d222 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:30:09 +0200 Subject: [PATCH 4/9] Move specification submodules to spec directory --- .gitmodules | 4 ++-- src/index.txt | 4 ++-- src/{appx => spec}/blog | 0 src/{appx => spec}/libms | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename src/{appx => spec}/blog (100%) rename src/{appx => spec}/libms (100%) diff --git a/.gitmodules b/.gitmodules index 14e078726..6003f9eed 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,10 +2,10 @@ path = problem-sets url = git@github.com:edu-python-course/problem-sets [submodule "src/appx/blog"] - path = src/appx/blog + path = src/spec/blog url = git@github.com:edu-python-course/blog-spec [submodule "src/appx/libms"] - path = src/appx/libms + path = src/spec/libms url = git@github.com:edu-python-course/libms-spec.git [submodule "src/spec/giver"] path = src/spec/giver diff --git a/src/index.txt b/src/index.txt index 0a85189c4..25b428dca 100644 --- a/src/index.txt +++ b/src/index.txt @@ -31,8 +31,8 @@ appx/assignments appx/conv_store appx/wtk - appx/blog/index - appx/libms/index + spec/blog/index + spec/libms/index .. rubric:: References diff --git a/src/appx/blog b/src/spec/blog similarity index 100% rename from src/appx/blog rename to src/spec/blog diff --git a/src/appx/libms b/src/spec/libms similarity index 100% rename from src/appx/libms rename to src/spec/libms From e798bfc2fe1a032aa6d95b801a04a3f5b904ea4e Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:36:34 +0200 Subject: [PATCH 5/9] Set up redirects (fixes GH-139) --- src/conf.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/conf.py b/src/conf.py index f9b8ea9f1..5b9d43c19 100644 --- a/src/conf.py +++ b/src/conf.py @@ -54,6 +54,14 @@ # TODO: configure options for mermaid output for pdf # mermaid-js/mermaid-cli is added to project's dependencies +# options for redirects +redirects = { + "appx/blog/spec": "../../spec/blog/index.html", + "appx/blog/index": "../../spec/blog/index.html", + "appx/libms/spec": "../../spec/libms/index.html", + "appx/libms/index": "../../spec/libms/index.html", +} + # options for internationalization gettext_compact = False language = "en" From e4eca816e9be4c8cc44f77e81932eb29527a63e5 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:46:54 +0200 Subject: [PATCH 6/9] Update project dependencies --- poetry.lock | 44 +++++++++++++++++++++----------------------- requirements.txt | 12 ++++++------ 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3cc9e19de..141376eab 100644 --- a/poetry.lock +++ b/poetry.lock @@ -14,32 +14,29 @@ files = [ [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] -[package.dependencies] -setuptools = {version = "*", markers = "python_version >= \"3.12\""} - [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] @@ -183,14 +180,14 @@ files = [ [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] @@ -207,21 +204,21 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.8.0" +version = "7.0.1" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] @@ -452,18 +449,19 @@ pybtex = ">=0.16" [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyyaml" @@ -539,18 +537,18 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "68.2.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] diff --git a/requirements.txt b/requirements.txt index 8e4a21243..77c0b57f7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,13 @@ alabaster==0.7.13 ; python_version >= "3.9" and python_version < "4.0" -babel==2.13.1 ; python_version >= "3.9" and python_version < "4.0" -certifi==2023.7.22 ; python_version >= "3.9" and python_version < "4.0" +babel==2.14.0 ; python_version >= "3.9" and python_version < "4.0" +certifi==2023.11.17 ; python_version >= "3.9" and python_version < "4.0" charset-normalizer==3.3.2 ; python_version >= "3.9" and python_version < "4.0" click==8.1.7 ; python_version >= "3.9" and python_version < "4.0" colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "win32" or python_version >= "3.9" and python_version < "4.0" and platform_system == "Windows" docutils==0.18.1 ; python_version >= "3.9" and python_version < "4.0" -idna==3.4 ; python_version >= "3.9" and python_version < "4.0" +idna==3.6 ; python_version >= "3.9" and python_version < "4.0" imagesize==1.4.1 ; python_version >= "3.9" and python_version < "4.0" -importlib-metadata==6.8.0 ; python_version >= "3.9" and python_version < "3.10" +importlib-metadata==7.0.1 ; python_version >= "3.9" and python_version < "3.10" jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0" latexcodec==2.0.1 ; python_version >= "3.9" and python_version < "4.0" markdown-it-py==2.2.0 ; python_version >= "3.9" and python_version < "4.0" @@ -18,10 +18,10 @@ myst-parser==1.0.0 ; python_version >= "3.9" and python_version < "4.0" packaging==23.2 ; python_version >= "3.9" and python_version < "4.0" pybtex-docutils==1.0.3 ; python_version >= "3.9" and python_version < "4.0" pybtex==0.24.0 ; python_version >= "3.9" and python_version < "4.0" -pygments==2.16.1 ; python_version >= "3.9" and python_version < "4.0" +pygments==2.17.2 ; python_version >= "3.9" and python_version < "4.0" pyyaml==6.0.1 ; python_version >= "3.9" and python_version < "4.0" requests==2.31.0 ; python_version >= "3.9" and python_version < "4.0" -setuptools==68.2.2 ; python_version >= "3.9" and python_version < "4.0" +setuptools==69.0.3 ; python_version >= "3.9" and python_version < "4.0" six==1.16.0 ; python_version >= "3.9" and python_version < "4.0" snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "4.0" sphinx-copybutton==0.5.2 ; python_version >= "3.9" and python_version < "4.0" From f299dec8d1ad64fb5009383455badeac1471d13c Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:54:33 +0200 Subject: [PATCH 7/9] Move specification translations (fixes GH-139) --- .../uk/LC_MESSAGES/spec/blog/index.po | 1224 +++++++++++++++++ .../uk/LC_MESSAGES/spec/libms/index.po | 1187 ++++++++++++++++ 2 files changed, 2411 insertions(+) create mode 100644 src/_locales/uk/LC_MESSAGES/spec/blog/index.po create mode 100644 src/_locales/uk/LC_MESSAGES/spec/libms/index.po diff --git a/src/_locales/uk/LC_MESSAGES/spec/blog/index.po b/src/_locales/uk/LC_MESSAGES/spec/blog/index.po new file mode 100644 index 000000000..8f2e14416 --- /dev/null +++ b/src/_locales/uk/LC_MESSAGES/spec/blog/index.po @@ -0,0 +1,1224 @@ +# Copyright (C) 2023, Python training course authors and contributors +# This file is distributed under the same license as the Python Training +# Course package. +# SERHII HORODILOV +msgid "" +msgstr "" +"Project-Id-Version: Python Training Course 2022.11.dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-17 23:49+0200\n" +"PO-Revision-Date: 2023-11-17 23:56+0200\n" +"Last-Translator: Serhii Horodilov \n" +"Language-Team: ua \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Generated-By: Babel 2.13.1\n" +"X-Generator: Poedit 3.4.1\n" + +#: ../../src/spec/blog/index.rst:10 +msgid "Blog Site" +msgstr "Сайт Блогу" + +#: ../../src/spec/blog/index.rst:12 +msgid "" +"The project aims to develop a robust and user-friendly web application using " +"the Django framework. The primary objective is to create a blogging platform " +"that allows users to publish and manage articles on various topics. The " +"application will provide an intuitive interface for authors to compose and " +"format their articles, while also offering a seamless reading experience for " +"visitors." +msgstr "" +"Проект має на меті розробку міцного та зручного у використанні веб-додатка " +"за допомогою фреймворку Django. Основна мета полягає у створенні платформи " +"для блогів, яка дозволить користувачам публікувати та керувати статтями на " +"різні теми. Додаток надасть інтуїтивний інтерфейс авторам для створення та " +"форматування своїх статей, а також забезпечить безперешкодний досвід читання " +"для відвідувачів." + +#: ../../src/spec/blog/index.rst:19 +msgid "**Key Features**" +msgstr "**Основні функції**" + +#: ../../src/spec/blog/index.rst:22 +msgid "User Registration and Authentication" +msgstr "Реєстрація та Аутентифікація Користувачів" + +#: ../../src/spec/blog/index.rst:23 +msgid "" +"The application will provide user registration and authentication " +"functionality, allowing individuals to create accounts, log in, and manage " +"their profile information. This feature will enable authors to have " +"personalized accounts and maintain ownership of their published articles." +msgstr "" +"Застосунок надасть функціональність реєстрації та аутентифікації " +"користувачів, дозволяючи індивідуумам створювати облікові записи, входити в " +"систему та керувати інформацією свого профілю. Ця функція дозволить авторам " +"мати персоналізовані облікові записи та зберігати право власності на їхні " +"опубліковані статті." + +#: ../../src/spec/blog/index.rst:30 +msgid "Article Management" +msgstr "Керування Статтями" + +#: ../../src/spec/blog/index.rst:31 +msgid "" +"Authors will have the ability to create, edit, and delete articles within " +"the application. The system will offer a user-friendly editor. Additionally, " +"authors will be able to categorize articles by assigning relevant topics to " +"them." +msgstr "" +"Автори матимуть можливість створювати, редагувати та видаляти статті в " +"рамках додатка. Система надасть зручний редактор. Крім того, автори зможуть " +"категоризувати статті, присвоюючи їм відповідні теми." + +#: ../../src/spec/blog/index.rst:37 +msgid "Topic Subscription:" +msgstr "Підписка на Теми:" + +#: ../../src/spec/blog/index.rst:38 +msgid "" +"The application will include a subscription feature that allows users to " +"subscribe to topics of interest. By subscribing to specific topics, users " +"will receive notifications or updates whenever new articles are published in " +"those categories. This feature will enhance user engagement and ensure that " +"readers stay informed about the topics they find most valuable." +msgstr "" +"Автори матимуть можливість створювати, редагувати та видаляти статті в " +"рамках додатка. Система надасть зручний редактор. Крім того, автори зможуть " +"категоризувати статті, присвоюючи їм відповідні теми." + +#: ../../src/spec/blog/index.rst:45 +msgid "" +"Overall, the project aims to deliver an efficient blogging platform that " +"caters to both authors and readers. By providing a seamless user experience " +"and incorporating essential functionalities such as user authentication, " +"article management, and topic subscriptions, the application will empower " +"users to create, share, and explore engaging content within a well-" +"structured and organized platform." +msgstr "" +"Застосунок буде містити функцію підписки, яка дозволить користувачам " +"підписуватися на цікаві їм теми. Підписавшись на конкретні теми, користувачі " +"отримуватимуть повідомлення або оновлення кожного разу, коли в цих " +"категоріях будуть публікуватися нові статті. Ця функція покращить " +"залученість користувачів та забезпечить, що читачі будуть інформовані про " +"найцікавіші для них теми." + +#: ../../src/spec/blog/index.rst:52 +msgid "" +"Here is a starter repository template, that may helps: `Starter template`_." +msgstr "" +"Ось шаблон стартового репозиторію, який може допомогти: `Starter template`_." + +#: ../../src/spec/blog/index.rst:55 +msgid "Challenge: Functional views" +msgstr "Виклик: Функціональні представлення" + +#: ../../src/spec/blog/index.rst:57 +msgid "" +"It's ok not to return **actual** content for now. Just ensure all the routes " +"are available and provide correct data. Use anything you like to return " +"within HTTP response." +msgstr "" +"Зараз немає потреби повертати **фактичний** вміст. Просто переконайтеся, що " +"всі маршрути доступні та надають правильні дані. Використовуйте будь-що, що " +"ви хочете повернути в HTTP-відповіді." + +#: ../../src/spec/blog/index.rst:61 +msgid "" +"``/about/``: Provides a regular text for a user, describing the " +"functionalities of the django site." +msgstr "" +"``/about/``: надає звичайний текст для користувача, що описує функції сайту " +"django." + +#: ../../src/spec/blog/index.rst:63 +msgid "" +"``/``: A site's homepage. This will contain a list of blogs published via " +"the django site." +msgstr "" +"``/``: Головна сторінка сайту. Тут буде перелік блогів, опублікованих через " +"сайт Django." + +#: ../../src/spec/blog/index.rst:65 +msgid "" +"``/
/``: A single article detail view. The URL contains dynamic part " +"in it. This will be used to fetch a single article from the database." +msgstr "" +"``/
/``: Представлення деталей однієї статті. URL містить динамічну " +"частину. Вона буде використовуватися для отримання однієї статті з бази " +"даних." + +#: ../../src/spec/blog/index.rst:68 +msgid "" +"``/
/comment/``: This view will be used to add comments to a article." +msgstr "" +"``/
/comment/``: Це представлення буде використовуватися для " +"додавання коментарів до статті." + +#: ../../src/spec/blog/index.rst:70 +msgid "``/create/``: A article creation form." +msgstr "``/create/``: Форма створення статті." + +#: ../../src/spec/blog/index.rst:71 +msgid "``/
/update/``: A view to update an existing article data." +msgstr "" +"``/
/update/``: Представлення для оновлення існуючих даних статті." + +#: ../../src/spec/blog/index.rst:72 +msgid "``/
/delete/``: A view to confirm article deletion." +msgstr "" +"``/
/delete/``: Представлення для підтвердження видалення статті." + +#: ../../src/spec/blog/index.rst:73 +msgid "``/topics/``: A list of topics available on the site." +msgstr "``/topics/``: Перелік доступних тем на сайті." + +#: ../../src/spec/blog/index.rst:74 +msgid "" +"``/topics//add/``: Add the selected topic to preferred topics list." +msgstr "``/topics//add/``: Додати обрану тему до списку обраних тем." + +#: ../../src/spec/blog/index.rst:75 +msgid "``/topics//remove/``: Removes the selected topic from preferred." +msgstr "``/topics//remove/``: Видаляє вибрану тему з обраних." + +#: ../../src/spec/blog/index.rst:76 +msgid "``/topics//subscribe/``: A view to subscribe for a topic." +msgstr "``/topics//subscribe/``: Представлення для підписки на тему." + +#: ../../src/spec/blog/index.rst:77 +msgid "``/topics//unsubscribe/``: A view to unsubscribe from a topic." +msgstr "``/topics//unsubscribe/``: Представлення для відписки від теми." + +#: ../../src/spec/blog/index.rst:78 +msgid "``/profile//``: A site user's personal page." +msgstr "``/profile//``: Особиста сторінка користувача сайту." + +#: ../../src/spec/blog/index.rst:79 +msgid "" +"``/set-password/``: This route will be used to change users' credential data." +msgstr "" +"``/set-password/``: Цей маршрут буде використовуватися для зміни облікових " +"даних користувачів." + +#: ../../src/spec/blog/index.rst:81 +msgid "``/set-userdata/``: This route will be user to change users' data." +msgstr "" +"``/set-userdata/``: Цей маршрут буде використовуватися для зміни даних " +"користувачів." + +#: ../../src/spec/blog/index.rst:82 +msgid "``/deactivate/``: Account deactivation (deletion) view." +msgstr "" +"``/deactivate/``: Представлення для деактивації облікового запису " +"(видалення)." + +#: ../../src/spec/blog/index.rst:83 +msgid "``/register/``: This view contains a user registration form." +msgstr "``/register/``: Сторінка з формою для реєстрації нового користувача." + +#: ../../src/spec/blog/index.rst:84 +msgid "``/login/``: This view contains a login form." +msgstr "``/login/``: Сторінка з формою для логіна." + +#: ../../src/spec/blog/index.rst:85 +msgid "" +"``/logout/``: Logout page. This view should redirect user back to homepage." +msgstr "" +"``/logout/``: Логаут. Має перенаправляти користувача назад на домашню " +"сторінку.." + +#: ../../src/spec/blog/index.rst:89 ../../src/spec/blog/index.rst:201 +#: ../../src/spec/blog/index.rst:231 ../../src/spec/blog/index.rst:409 +msgid "Optional task(s)" +msgstr "Додаткові завдання" + +#: ../../src/spec/blog/index.rst:91 +msgid "" +"``/archive///``: This view provides a list of articles " +"published on a specified month of a specified year. This view should apply " +"date validation and raise ``Http404`` for invalid paths. The valid date is a " +"year's 4-digits form followed by 1 or 2 digits representing month. Month " +"range should be limited as [1..12], leading zero may be omitted. Valid URLs " +"are:" +msgstr "" +"``/archive///``: Це представлення надає список статей, " +"опублікованих у певному місяці певного року. Це представлення повинно " +"застосовувати перевірку дати та викидати помилку ``Http404`` для " +"неприпустимих шляхів. Припустимою датою є 4-значний формат року, за яким " +"слідує 1 або 2 цифри, що представляють місяць. Діапазон місяця повинен бути " +"обмежений [1..12], ведучий нуль може бути пропущений. Приклади правильних " +"URL-адрес:" + +#: ../../src/spec/blog/index.rst:105 +msgid "Challenge: Data models" +msgstr "Завдання: моделі даних" + +#: ../../src/spec/blog/index.rst:108 +msgid "" +"Django admin may be used to create some dummy data. To gather access to " +"admin section you need to create a superuser. The easiest way to do that is " +"to use a django command:" +msgstr "" +"Для створення деяких фіктивних даних можна використовувати Django Admin. Щоб " +"отримати доступ до адміністративного розділу, вам потрібно створити " +"суперкористувача. Найпростіший спосіб зробити це - використовувати команду " +"Django:" + +#: ../../src/spec/blog/index.rst:117 ../../src/spec/blog/index.rst:218 +msgid "General" +msgstr "Основне" + +#: ../../src/spec/blog/index.rst:118 +msgid "Each model will be registered for admin site." +msgstr "Кожна модель буде зареєстрована на сторінці адміністрації сайту." + +#: ../../src/spec/blog/index.rst:121 ../../src/spec/blog/index.rst:456 +msgid "Article topic" +msgstr "Тема статті" + +#: ../../src/spec/blog/index.rst:122 +msgid "This is a simple model, that contains information about topic:" +msgstr "Ось проста модель, що містить інформацію про тему:" + +#: ../../src/spec/blog/index.rst:124 +msgid "topic title (unique value, 64 characters or fewer)" +msgstr "назва теми (унікальне значення, не більше 64 символів)" + +#: ../../src/spec/blog/index.rst:125 +msgid "topic short description (255 characters or fewer)" +msgstr "короткий опис теми (не більше 255 символів)" + +#: ../../src/spec/blog/index.rst:128 ../../src/spec/blog/index.rst:470 +msgid "Article" +msgstr "Стаття" + +#: ../../src/spec/blog/index.rst:129 +msgid "Article requires title (255 characters or fewer)." +msgstr "Стаття вимагає наявності заголовка (не більше 255 символів)." + +#: ../../src/spec/blog/index.rst:130 +msgid "Article requires content (at least 255 characters)." +msgstr "Стаття вимагає наявності змісту (принаймні 255 символів)." + +#: ../../src/spec/blog/index.rst:131 +msgid "" +"Creation date should be autogenerated at article creation, and would never " +"be updated." +msgstr "" +"Дата створення буде автоматично генеруватися при створенні статті і не буде " +"оновлюватися пізніше." + +#: ../../src/spec/blog/index.rst:133 +msgid "Updated date will be update at each article save." +msgstr "Дата оновлення буде оновлюватися при кожному збереженні статті." + +#: ../../src/spec/blog/index.rst:136 ../../src/spec/blog/index.rst:463 +msgid "Article comment" +msgstr "Коментар до статті" + +#: ../../src/spec/blog/index.rst:137 +msgid "Comment requires creation date (autogenerated)." +msgstr "Коментар вимагає наявності дати створення (автоматично генерується)." + +#: ../../src/spec/blog/index.rst:138 +msgid "Comment requires message text." +msgstr "Коментар вимагає наявності тексту повідомлення." + +#: ../../src/spec/blog/index.rst:141 +msgid "Relationships" +msgstr "Відносини" + +#: ../../src/spec/blog/index.rst:143 +msgid "" +"Standard Django user model **will be** used for now. To apply model " +"reference pass ``\"auth.User\"`` as related model. Users can be created via " +"admin page. You can also refer the same model as shown below:" +msgstr "" +"Стандартна модель користувача Django **буде** використовуватися наразі. Для " +"застосування посилання на модель передайте ``\"auth.User\"`` як пов'язану " +"модель. Користувачі можуть бути створені через адміністративну сторінку. Ви " +"також можете посилатися на ту саму модель, як показано нижче:" + +#: ../../src/spec/blog/index.rst:156 +msgid "``article`` and ``topics`` have *many-to-many* relationship." +msgstr "``article`` та ``topics`` мають *багато-до-багатьох* відношення." + +#: ../../src/spec/blog/index.rst:157 +msgid "" +"``article`` and ``user`` have *one-to-many* relationship. A article can have " +"**only one** author, but users can create as many articles as they want." +msgstr "" +"``article`` та ``user`` мають *один-до-багатьох* відношення. У статті може " +"бути **лише один** автор, але користувачі можуть створювати стільки статей, " +"скільки їм потрібно." + +#: ../../src/spec/blog/index.rst:160 +msgid "" +"``article`` and ``comment`` have *one-to-many* relationship. A article may " +"be a container for many comments, but a comment is related to a single " +"article." +msgstr "" +"``article`` та ``comment`` мають *один-до-багатьох* відношення. Стаття може " +"бути контейнером для багатьох коментарів, але коментар пов'язаний лише з " +"однією статтею." + +#: ../../src/spec/blog/index.rst:163 +msgid "" +"``comment`` and ``user`` have *one-to-many* relationship. It's similar to " +"*article - user* relationship." +msgstr "" +"``comment`` та ``user`` мають *один-до-багатьох* відношення. Це схоже на " +"відношення *стаття - користувач*." + +#: ../../src/spec/blog/index.rst:165 +msgid "" +"``topic`` and ``user`` use *many-to-many* relationship. A single user can " +"prefer none or as many topics as needed and vice versa. This relationship " +"represents topics preferred by a certain blog user. Also this provides an " +"additional option to mark some of preferred topics with a **notify** flag, " +"to receive newsletters about specified topics updates. The difference " +"between *prefer* and *notify* is that *preferred* topics affect the articles " +"list for a user, and *notify* is responsible for newsletters for the user." +msgstr "" +"``topic`` та ``user`` використовують відношення *багато-до-багатьох*. Один " +"користувач може вибрати будь-яку кількість тем, і навпаки. Це відношення " +"представляє теми, які вибрані певним користувачем блогу. Крім того, це надає " +"додаткову опцію позначити деякі з вибраних тем прапорцем **notify**, щоб " +"отримувати розсилки про оновлення зазначених тем. Відмінність між *prefer* " +"(вибір) та *notify* (сповіщення) полягає в тому, що *prefer* впливає на " +"список статей для користувача, а *notify* відповідає за розсилку новин для " +"користувача." + +#: ../../src/spec/blog/index.rst:176 +msgid "UML diagram" +msgstr "UML діаграми" + +#: ../../src/spec/blog/index.rst:181 +msgid "Challenge: ORM" +msgstr "Завдання: ORM" + +#: ../../src/spec/blog/index.rst:183 +msgid "" +"Update existing views to represent entities that are actually stored inside " +"the project's database." +msgstr "" +"Оновіть існуючі подання, щоб представити сутності, які фактично зберігаються " +"в базі даних проекту." + +#: ../../src/spec/blog/index.rst:186 +msgid "``/``: should represent a list of existing articles." +msgstr "``/``: повинен представляти список існуючих статей." + +#: ../../src/spec/blog/index.rst:187 +msgid "``/
/``: should represent a single existing article." +msgstr "``/
/``: повинен представляти окрему існуючу статтю." + +#: ../../src/spec/blog/index.rst:188 +msgid "Detail view should obtain a list of article related comments." +msgstr "" +"Вью для перегляду окремої статті повинен отримувати зв'язані коментарі." + +#: ../../src/spec/blog/index.rst:189 +msgid "" +"``/profile//``: should contain information about user and a " +"list of articles authored by this user." +msgstr "" +"``/profile//``: повинен містити інформацію про користувача та " +"список статей, написаних цим користувачем." + +#: ../../src/spec/blog/index.rst:191 +msgid "" +"All views related to a single entity (*detail*, *update*, *delete*, " +"*profile*) should raise ``Http404`` in case entity could not be fetched." +msgstr "" +"Усі ресурси, пов'язані з окремою сутністю (*деталі*, *оновлення*, " +"*видалення*, *профіль*) мають викликати ``Http404`` у випадку, якщо сутність " +"не вдалося отримати." + +#: ../../src/spec/blog/index.rst:196 +msgid "" +"It's common to store dedicated functions/classes that supports some specific " +"business logic in a separate module called ``services.py`` or ``utils.py`` " +"within an application directory." +msgstr "" +"Звичайно, функції/класи, що підтримують певну специфічну бізнес-логіку, " +"розумно зберігати в окремому модулі з назвою ``services.py`` або ``utils." +"py`` всередині директорії додатку." + +#: ../../src/spec/blog/index.rst:203 +msgid "" +"Create a service to fetch articles, ordered by a specified user preferences. " +"This means, topics preferred by a user affects articles orders. Queryset " +"should be ordered in way, to have articles with most corresponding topics at " +"the begging." +msgstr "" +"Створіть сервіс для того, щоб отримувати статі у вигляді відсортованому " +"згідно вподобань зазначеного користувача. Це означає, що чим більше тем " +"зазначених у статті співпадає з вподобаннями користувача, тим ближче вона до " +"початку видачі." + +#: ../../src/spec/blog/index.rst:209 +msgid "Challenge: Templates" +msgstr "Завдання: Шаблони" + +#: ../../src/spec/blog/index.rst:212 +msgid "Helpful link: `Bootstrap template`_" +msgstr "Корисне посилання: `Bootstrap template`_" + +#: ../../src/spec/blog/index.rst:215 +msgid "Links related to user data **may be** placeholders for now." +msgstr "" +"Посилання, що стосуються даних користувача, **можуть бути** плейсхолдерами " +"наразі." + +#: ../../src/spec/blog/index.rst:219 +msgid "**All** templates should be inherited from the ``base.html`` template." +msgstr "**Усі** шаблони повинні успадковувати ``base.html`` шаблон." + +#: ../../src/spec/blog/index.rst:220 +msgid "" +"Each page has a descriptive title HTML tag, which included ``| Blog`` " +"suffix, e.g. \"Articles | Blogs\", \"Sample | Blog\", \"Login | Blog\" etc." +msgstr "" +"Кожна сторінка має описовий тег HTML заголовка, включаючи суфікс ``| Blog``, " +"наприклад, \"Articles | Blogs\", \"Sample | Blog\", \"Login | Blog\" і т.д." + +#: ../../src/spec/blog/index.rst:222 +msgid "Each page should contain a link to homepage (``/`` URL route)." +msgstr "" +"Кожна сторінка повинна містити посилання на головну сторінку (шлях URL ``/" +"``)." + +#: ../../src/spec/blog/index.rst:223 +msgid "" +"Each page contains a list of registered topics. Each view of this kind " +"filters only articles of a relevant topic. This should be implemented with a " +"custom template context processor." +msgstr "" +"Кожна сторінка містить список зареєстрованих тем. Кожне представлення цього " +"типу фільтрує лише статті відповідної теми. Це слід реалізувати за допомогою " +"власного обробника контексту шаблону (template context processor)." + +#: ../../src/spec/blog/index.rst:226 +msgid "Replace content block for *about* page with some static content." +msgstr "" +"Замініть блок вмісту (content block) для сторінки *about* на деякий " +"статичний вміст." + +#: ../../src/spec/blog/index.rst:227 +msgid "" +"Application-level templates should be located within appropriate " +"applications." +msgstr "Шаблони рівня застосунків розташовуватися у відповідних застосунках." + +#: ../../src/spec/blog/index.rst:233 +msgid "" +"Each page should contain a list of links to archive views for the last year." +msgstr "" +"Кожна сторінка має містити список посилань на перегляди архіву за останній " +"рік." + +#: ../../src/spec/blog/index.rst:235 +msgid "Each page should contain an inclusion-block(s) with following links:" +msgstr "Кожна сторінка повинна містити блок(и) включення з такими посиланнями:" + +#: ../../src/spec/blog/index.rst:237 +msgid "``/registration/``: new user registration form" +msgstr "``/register/``: форма реєстрації нового користувача" + +#: ../../src/spec/blog/index.rst:238 +msgid "``/login/``: user login form" +msgstr "``/login/``: форма логіна користувача" + +#: ../../src/spec/blog/index.rst:239 +msgid "``/create/``: article creation page" +msgstr "``/create/``: форма створення статті" + +#: ../../src/spec/blog/index.rst:242 +msgid "Articles list" +msgstr "Список статей" + +#: ../../src/spec/blog/index.rst:243 +msgid "Main page contains a list of published articles." +msgstr "Головна сторінка містить список опублікованих статей." + +#: ../../src/spec/blog/index.rst:244 +msgid "Each article entity is rendered using a custom template tag." +msgstr "" +"Кожен елемент статті відображається за допомогою власного шаблонного тегу." + +#: ../../src/spec/blog/index.rst:245 +msgid "``article`` template tag renders information about a article object:" +msgstr "Шаблонний тег ``article`` відображає інформацію про об'єкт статті:" + +#: ../../src/spec/blog/index.rst:247 +msgid "article title" +msgstr "заголовок статті" + +#: ../../src/spec/blog/index.rst:248 +msgid "article content (trimmed to ~50 characters)" +msgstr "зміст статті (обрізаний до ~50 символів)" + +#: ../../src/spec/blog/index.rst:249 +msgid "article creation date" +msgstr "дата створення статті" + +#: ../../src/spec/blog/index.rst:250 +msgid "related topics (3 topics or fewer)" +msgstr "пов'язані теми (3 або менше)" + +#: ../../src/spec/blog/index.rst:251 +msgid "number of related comments" +msgstr "кількість коментарів до статті" + +#: ../../src/spec/blog/index.rst:258 +msgid "Article details" +msgstr "Деталі статті" + +#: ../../src/spec/blog/index.rst:260 +msgid "Article update and deletion views **would not** affect data for now." +msgstr "Оновлення та видалення статей **не будуть** впливати на дані наразі." + +#: ../../src/spec/blog/index.rst:262 +msgid "" +"A article detail page contains links to **update** or **delete** current " +"article." +msgstr "" +"На сторінці деталей статті мають бути посилання на **оновлення** або " +"**видалення** поточної статті." + +#: ../../src/spec/blog/index.rst:264 +msgid "Page provides information about article:" +msgstr "Сторінка надає інформацію про статтю:" + +#: ../../src/spec/blog/index.rst:266 +msgid "Article title" +msgstr "Заголовок статті" + +#: ../../src/spec/blog/index.rst:267 +msgid "Creation date" +msgstr "Дата створення" + +#: ../../src/spec/blog/index.rst:268 ../../src/spec/blog/index.rst:275 +msgid "Author name" +msgstr "Ім'я автора" + +#: ../../src/spec/blog/index.rst:269 +msgid "Related topics" +msgstr "Пов'язані теми" + +#: ../../src/spec/blog/index.rst:270 +msgid "Article content" +msgstr "Вміст статті" + +#: ../../src/spec/blog/index.rst:272 +msgid "Page contains a list of related comments." +msgstr "Сторінка містить список пов'язаних коментарів." + +#: ../../src/spec/blog/index.rst:273 +msgid "Each comment contains:" +msgstr "Кожен коментар містить:" + +#: ../../src/spec/blog/index.rst:276 +msgid "Comment creation time" +msgstr "Час створення коментаря" + +#: ../../src/spec/blog/index.rst:277 +msgid "Comment message" +msgstr "Текст комментаря" + +#: ../../src/spec/blog/index.rst:280 +msgid "Profile page" +msgstr "Строніка профілю" + +#: ../../src/spec/blog/index.rst:281 +msgid "Author page contains information about author:" +msgstr "Сторінка автора містить інформацію про автора:" + +#: ../../src/spec/blog/index.rst:283 +msgid "First name" +msgstr "Ім'я" + +#: ../../src/spec/blog/index.rst:284 +msgid "Last name" +msgstr "Прізвище" + +#: ../../src/spec/blog/index.rst:286 +msgid "Add more information, if needed." +msgstr "Додайте більше інформації за бажанням." + +#: ../../src/spec/blog/index.rst:288 +msgid "Author page contains a list of articles created by this author." +msgstr "Сторінка автора містить список статей, створених цим автором." + +#: ../../src/spec/blog/index.rst:289 +msgid "" +"Author page contains buttons/links to change user data and password or " +"deactivate a user's account." +msgstr "" +"Сторінка автора містить кнопки/посилання для зміни користувача та пароля або " +"деактивації облікового запису користувача." + +#: ../../src/spec/blog/index.rst:293 +msgid "Forms" +msgstr "Форми" + +#: ../../src/spec/blog/index.rst:295 +msgid "" +"There is **no need** to add actual forms now. They will be generated by " +"Django. This section describes the final view of these pages. It's ok just " +"to create a dedicated templates for future use." +msgstr "" +"Наразі **немає потреби** додавати фактичні форми. Вони будуть створені " +"Django. Цей розділ описує кінцевий вигляд цих сторінок. Для майбутнього " +"використання достатньо створити окремі шаблони." + +#: ../../src/spec/blog/index.rst:299 +msgid "" +"``/register/`` page contains a new user registration form. It should take " +"inputs from the user:" +msgstr "" +"Сторінка ``/register/`` містить форму реєстрації нового користувача. Вона " +"повинна отримувати введені дані від користувача:" + +#: ../../src/spec/blog/index.rst:302 ../../src/spec/blog/index.rst:310 +msgid "username" +msgstr "username" + +#: ../../src/spec/blog/index.rst:303 +msgid "email" +msgstr "email" + +#: ../../src/spec/blog/index.rst:304 ../../src/spec/blog/index.rst:311 +msgid "password" +msgstr "password" + +#: ../../src/spec/blog/index.rst:305 ../../src/spec/blog/index.rst:324 +msgid "confirm password" +msgstr "confirm password" + +#: ../../src/spec/blog/index.rst:307 +msgid "" +"``/login/`` page contains a user login form. It should take the inputs from " +"the user:" +msgstr "" +"Сторінка ``/login/`` містить форму входу користувача. Вона повинна " +"отримувати введені дані від користувача:" + +#: ../../src/spec/blog/index.rst:313 +msgid "" +"``/create/`` and ``/
/update/`` pages contain a form to collect a " +"article's data:" +msgstr "" +"Сторінки ``/create/`` та ``/
/update/`` містять форму для збору " +"даних статті:" + +#: ../../src/spec/blog/index.rst:316 +msgid "title" +msgstr "title" + +#: ../../src/spec/blog/index.rst:317 +msgid "relevant topics" +msgstr "відповідні теми" + +#: ../../src/spec/blog/index.rst:318 +msgid "content" +msgstr "content" + +#: ../../src/spec/blog/index.rst:320 +msgid "``/
/delete`` page contains a simple delete confirmation form." +msgstr "" +"Сторінка ``/
/delete`` містить просту форму для підтвердження " +"видалення." + +#: ../../src/spec/blog/index.rst:321 +msgid "Change password form has two fields:" +msgstr "Форма зміни пароля має два поля:" + +#: ../../src/spec/blog/index.rst:323 +msgid "new password" +msgstr "new password" + +#: ../../src/spec/blog/index.rst:326 +msgid "" +"Change user's data form collects all information, that can be changed, e.g. " +"``username``, ``first name``, ``last name`` etc." +msgstr "" +"Форма зміни даних користувача збирає всю інформацію, яка може бути змінена, " +"наприклад, ``username``, ``first name``, ``last name`` та інше." + +#: ../../src/spec/blog/index.rst:328 +msgid "" +"User preferences page contains a list of available topics. User can mark " +"some topics as preferred. Also for preferred topics an option to *subscribe* " +"for the newsletters becomes available." +msgstr "" +"Сторінка налаштувань користувача містить список доступних тем. Користувач " +"може відмітити деякі теми як пріоритетні (переваги). Також для пріоритетних " +"тем стає доступною опція *підписки* на розсилку новинних листів." + +#: ../../src/spec/blog/index.rst:333 +msgid "Challenge: Articles' slugs" +msgstr "Виклик: Slug-и статей" + +#: ../../src/spec/blog/index.rst:336 +msgid "This is an optional challenge in addition to:" +msgstr "Це додатковий виклик у додаток до:" + +#: ../../src/spec/blog/index.rst:338 +msgid "`Challenge: Functional views`_" +msgstr "`Challenge: Functional views`_" + +#: ../../src/spec/blog/index.rst:339 +msgid "`Challenge: Templates`_" +msgstr "`Challenge: Templates`_" + +#: ../../src/spec/blog/index.rst:340 +msgid "`Challenge: Data models`_" +msgstr "`Challenge: Data models`_" + +#: ../../src/spec/blog/index.rst:341 +msgid "`Challenge: ORM`_" +msgstr "`Challenge: ORM`_" + +#: ../../src/spec/blog/index.rst:343 +msgid "Update ``Article`` model with ``slug`` field. The slug value is:" +msgstr "" +"Оновіть модель ``Article``, додавши поле ``slug``. Значення slug поля є:" + +#: ../../src/spec/blog/index.rst:345 +msgid "required for each article" +msgstr "обов'язкове для кожної статті" + +#: ../../src/spec/blog/index.rst:346 +msgid "unique for each article" +msgstr "унікальне для кожної статті" + +#: ../../src/spec/blog/index.rst:348 +msgid "Create a data migration to provide slugs for existing articles." +msgstr "Створіть міграцію даних для надання slug-ів існуючим статтям." + +#: ../../src/spec/blog/index.rst:349 +msgid "" +"``slug`` should be auto-generated on article save. The pattern is ``article." +"title-article.created_date``, e.g. \"Sample article\" created at " +"\"03/24/2023\" should receive slug: ``sample-article-2023-03-24``." +msgstr "" +"Поле ``slug`` повинно автоматично генеруватися при збереженні статті. Шаблон " +"для генерації поля ``slug``: ``назва-статті-дата-створення-статті``, " +"наприклад, стаття з назвою \"Sample article\", створена \"24/03/2023\", " +"отримає slug: ``sample-article-2023-03-24``." + +#: ../../src/spec/blog/index.rst:353 +msgid "Update detail view URL path with article slug as dynamic portion." +msgstr "" +"Оновіть шлях URL для представлення деталей статті з динамічною частиною, " +"якою буде slug статті." + +#: ../../src/spec/blog/index.rst:356 +msgid "Challenge: Auth forms" +msgstr "Завдання: форми авторизації" + +#: ../../src/spec/blog/index.rst:358 +msgid "Create form for new users registration with required fields:" +msgstr "" +"Створити форму для реєстрації нових користувачів із обов'язковими полями:" + +#: ../../src/spec/blog/index.rst:360 +msgid "``username``" +msgstr "``username``" + +#: ../../src/spec/blog/index.rst:361 +msgid "``email``" +msgstr "``email``" + +#: ../../src/spec/blog/index.rst:362 +msgid "``password``" +msgstr "``password``" + +#: ../../src/spec/blog/index.rst:363 +msgid "``confirm password``" +msgstr "``confirm password``" + +#: ../../src/spec/blog/index.rst:365 +msgid "``username`` value should be validated against existing values." +msgstr "" +"Значення ``username`` повинно перевірятися на відповідність існуючим " +"значенням." + +#: ../../src/spec/blog/index.rst:366 +msgid "``password`` and ``confirm password`` values should match." +msgstr "Значення ``password`` і ``confirm password`` мають збігатися." + +#: ../../src/spec/blog/index.rst:367 +msgid "Create form for existing users login." +msgstr "Створити форму для входу існуючих користувачів." + +#: ../../src/spec/blog/index.rst:368 +msgid "Validations errors are to be rendered on the template." +msgstr "Помилки перевірки повинні відображатися на шаблоні." + +#: ../../src/spec/blog/index.rst:371 +msgid "Challenge: Authentication" +msgstr "Завдання: Автентифікація" + +#: ../../src/spec/blog/index.rst:373 +msgid "" +"For anonymous users ``/register/`` and ``/login/`` links should be visible " +"in navbar." +msgstr "" +"Для анонімних користувачів посилання ``/register/`` і ``/login/`` мають бути " +"видимими на панелі навігації." + +#: ../../src/spec/blog/index.rst:375 +msgid "" +"For authenticated users ``/logout/`` and ``/create/`` links should be " +"visible in navbar." +msgstr "" +"Для автентифікованих користувачів посилання ``/logout/`` і ``/create/`` " +"мають бути видимими на панелі навігації." + +#: ../../src/spec/blog/index.rst:377 +msgid "" +"If authenticated user is admin or stuff they should see a link to admin page." +msgstr "" +"Якщо автентифікований користувач є адміністратором або іншим, він має " +"побачити посилання на сторінку адміністратора." + +#: ../../src/spec/blog/index.rst:379 +msgid "" +"``/register/``: Users should provide all required information about them: " +"desired username and email. Name data (both first and last) is optional. " +"After user creation they should be redirected to login page to perform " +"authentication process. Invalid form should provide information about " +"error(s)." +msgstr "" +"``/register/``: користувачі повинні надати всю необхідну інформацію про " +"себе: бажане ім'я користувача та електронну адресу. Дані імені (ім'я та " +"прізвище) необов'язкові. Після створення користувача вони повинні бути " +"перенаправлені на сторінку входу для виконання процесу автентифікації. " +"Недійсна форма повинна надавати інформацію про помилку(и)." + +#: ../../src/spec/blog/index.rst:384 +msgid "" +"``/login/``: Users should provide their credentials to login. In case login " +"is successful they should be redirected to their profile (if no ``?" +"next=url`` query string available)." +msgstr "" +"``/login/``: користувачі повинні надати свої облікові дані для входу. У разі " +"успішного входу вони повинні бути перенаправлені до свого профілю (якщо " +"немає рядка запиту ``?next=url``)." + +#: ../../src/spec/blog/index.rst:387 +msgid "" +"``/create/``: Only authenticated users should be able to visit this page. In " +"case anonymous user is trying to request this view they should be redirected " +"to the login view first, and after successful authentication get back to " +"article creation. Then a article is created, it should be authored by the " +"currently authenticated user." +msgstr "" +"``/create/``: Лише аутентифіковані користувачі повинні мати доступ до цієї " +"сторінки. Якщо анонімний користувач намагається отримати доступ до цього " +"представлення, його повинно перенаправити спочатку на сторінку входу, а " +"після успішної аутентифікації повернути на сторінку створення статті. При " +"створенні статті вона повинна мати автором поточного аутентифікованого " +"користувача." + +#: ../../src/spec/blog/index.rst:392 +msgid "" +"``/
/comment/``: Currently authenticated user should be referenced " +"as a comment's author." +msgstr "" +"``/
/comment/``: У коментарі поточного аутентифікованого користувача " +"повинна бути зазначена його ідентифікація як автора." + +#: ../../src/spec/blog/index.rst:394 +msgid "" +"Articles may be modified or deleted only by their authors from the detail " +"article page. However, admins can still performs articles actions from the " +"admin page." +msgstr "" +"Змінювати або видаляти статті можуть тільки їх автори на сторінці деталей " +"статті. Однак адміністратори все ще можуть виконувати дії зі статтями через " +"адміністративну сторінку." + +#: ../../src/spec/blog/index.rst:397 +msgid "User related paths are restricted for non-authorized users." +msgstr "" +"Шляхи, пов'язані з користувачем, обмежені для неаутентифікованих " +"користувачів." + +#: ../../src/spec/blog/index.rst:399 +msgid "``/set-password/``" +msgstr "``/set-password/``" + +#: ../../src/spec/blog/index.rst:400 +msgid "``/set-userdata/``" +msgstr "``/set-userdata/``" + +#: ../../src/spec/blog/index.rst:402 +msgid "" +"``POST`` request ``/deactivate/`` should mark current authenticated user as " +"*deleted* and log them user." +msgstr "" +"Запит ``POST`` на ``/deactivate/`` повинен позначати поточного " +"аутентифікованого користувача як *видаленого* і виходити з системи для цього " +"користувача." + +#: ../../src/spec/blog/index.rst:404 +msgid "" +"Authenticated users should be able to adjust their preferred topics lists." +msgstr "" +"Авторизовані користувачі повинні мати можливість налаштовувати свої списки " +"обраних тем." + +#: ../../src/spec/blog/index.rst:405 +msgid "" +"Authenticated users should be able to **subscribe** or **unsubscribe** for a " +"selected topic." +msgstr "" +"Авторизовані користувачі повинні мати можливість **підписатися** або " +"**відписатися** на обрану тему." + +#: ../../src/spec/blog/index.rst:411 +msgid "" +"Adjust the order of article list according to authenticated user " +"preferences. For anonymous users keep default ordering." +msgstr "" +"Призначте зміну порядку списку статей відповідно до вподобань " +"аутентифікованого користувача. Для анонімних користувачів залиште типове " +"сортування за замовчуванням." + +#: ../../src/spec/blog/index.rst:413 +msgid "" +"Implement account reactivation behavior. The exact workflow does not mater. " +"The sample scenario is to collect email for the user and check it for " +"existing in the database. After that create a request for admin to activate " +"an account and send a confirmation email, when all is done." +msgstr "" +"Реалізуйте поведінку щодо відновлення облікового запису. Точний порядок дій " +"не має значення. Один зі зразків сценаріїв може полягати у зборі електронної " +"пошти користувача та перевірки наявності цієї адреси в базі даних. Після " +"цього створіть запит для адміністратора на активацію облікового запису та " +"надішліть підтверджувальний лист електронною поштою, коли все буде готово." + +#: ../../src/spec/blog/index.rst:419 +msgid "Challenge: Article related forms" +msgstr "Виклик: Форми пов'язані зі статтями" + +#: ../../src/spec/blog/index.rst:421 +msgid "" +"Implement a article form. This form will be used to create new articles and " +"to update existing ones." +msgstr "" +"Реалізуйте форму статті. Ця форма буде використовуватися для створення нових " +"статей та оновлення існуючих." + +#: ../../src/spec/blog/index.rst:423 +msgid "Each created article should have at least one related topic." +msgstr "Кожна створена стаття повинна мати принаймні одну пов'язану тему." + +#: ../../src/spec/blog/index.rst:424 +msgid "Implement a comment form to gather a comment from a user." +msgstr "Реалізуйте форму коментаря, щоб збирати коментарі від користувача." + +#: ../../src/spec/blog/index.rst:425 +msgid "" +"Only ``POST`` requests to ``/
/comment/`` are allowed from this " +"moment." +msgstr "" +"З даного моменту дозволені лише запити типу ``POST`` до ``/
/comment/" +"``." + +#: ../../src/spec/blog/index.rst:427 +msgid "Implement functionality:" +msgstr "Реалізуйте функціональність:" + +#: ../../src/spec/blog/index.rst:429 +msgid "article creation" +msgstr "створення статті" + +#: ../../src/spec/blog/index.rst:430 +msgid "article update" +msgstr "оновлення статті" + +#: ../../src/spec/blog/index.rst:431 +msgid "article comment (create a related comment)" +msgstr "коментування статті (створення коментаря)" + +#: ../../src/spec/blog/index.rst:432 +msgid "article deletion" +msgstr "видалення статті" + +#: ../../src/spec/blog/index.rst:434 +msgid "Only authenticated users can create articles." +msgstr "Лише аутентифіковані користувачі можуть створювати статі." + +#: ../../src/spec/blog/index.rst:435 +msgid "Article can be edited only by its author." +msgstr "Стаття може редагуватись лише її автором." + +#: ../../src/spec/blog/index.rst:436 +msgid "Article can be deleted only by its author." +msgstr "Стаття може видалятись лише її автором." + +#: ../../src/spec/blog/index.rst:437 +msgid "Only authenticated users can comment articles." +msgstr "Лише аутентифіковані користувачі можуть коментувати статті." + +#: ../../src/spec/blog/index.rst:444 +msgid "Challenge: Class-Based Views" +msgstr "Завдання: Class-Based Views" + +#: ../../src/spec/blog/index.rst:446 +msgid "Replace **all** existing views via ``CBV``." +msgstr "Замінити **всі** існуючі перегляди через ``CBV``." + +#: ../../src/spec/blog/index.rst:447 +msgid "Existing functionality should not be corrupted." +msgstr "Існуюча функціональність не повинна бути пошкоджена." + +#: ../../src/spec/blog/index.rst:450 +msgid "It's ok to use built-in Django CBV if needed." +msgstr "" +"Якщо потрібно, можна використовувати вбудовані класи відображення у Django " +"(CBV)." + +#: ../../src/spec/blog/index.rst:453 +msgid "Challenge: Serializers" +msgstr "Завдання: Серіалізатори" + +#: ../../src/spec/blog/index.rst:457 +msgid "" +"Topic serializer is for read-only purposes only. Topics can be created via " +"admin page only." +msgstr "" +"Серіалізатор для теми призначений лише для операцій читання (read-only). " +"Теми можна створювати лише через адміністративну сторінку." + +#: ../../src/spec/blog/index.rst:459 +msgid "" +"Serialized data should contain all available data, e.g. ``pk``, ``title``, " +"``description``." +msgstr "" +"Серіалізовані дані повинні містити всю доступну інформацію, наприклад, " +"``pk``, ``title``, ``description``." + +#: ../../src/spec/blog/index.rst:464 +msgid "" +"article comment serializer can perform both reading and writing operations. " +"But it can't be used to *update* or *delete* comment." +msgstr "" +"серіалізатор коментаря статті може виконувати як операції читання, так і " +"операції запису. Проте він не може використовуватися для оновлення або " +"видалення коментаря." + +#: ../../src/spec/blog/index.rst:466 +msgid "" +"Random, or pre-defined user may be used as comment's author for now. This " +"will be fixed in the future." +msgstr "" +"Наразі можна використовувати випадкового або попередньо визначеного " +"користувача як автора коментаря. Це буде виправлено у майбутньому." + +#: ../../src/spec/blog/index.rst:471 +msgid "" +"article serializer provides full access to articles. All operations are " +"available: list, retrieve, create, update and destroy." +msgstr "" +"серіалізатор статей надає повний доступ до статей. Доступні всі операції: " +"отримання списку, отримання окремої статті, створення нової статті, " +"оновлення та видалення." + +#: ../../src/spec/blog/index.rst:475 +msgid "User" +msgstr "Користувач" + +#: ../../src/spec/blog/index.rst:476 +msgid "" +"User serializer provides full access to site users data. All operations are " +"available for now: list, retrieve, create, update and destroy. This behavior " +"will be fixed in the future, to prevent unauthorized data modifications." +msgstr "" +"Серіалізатор користувача надає повний доступ до даних користувачів сайту. " +"Усі операції доступні наразі: отримання списку користувачів, отримання " +"окремого користувача, створення нового користувача, оновлення та видалення. " +"Однак, ця поведінка буде виправлена у майбутньому для запобігання " +"несанкціонованим змінам даних." + +#: ../../src/spec/blog/index.rst:482 +msgid "Challenge: API views" +msgstr "Завдання: API views" + +#: ../../src/spec/blog/index.rst:484 +msgid "All blog-site functionality are to be mirrored via REST API." +msgstr "" +"Вся функціональність сайту повинна бути відображена за допомогою REST API." + +#: ../../src/spec/blog/index.rst:487 +msgid "" +"It's ok to pass *pre-defined* user as argument in request's body. This will " +"be fixed in the next challenge." +msgstr "" +"Наразі дозволяється передавати *наперед визначеного* користувача у тілі " +"запиту. Це буде виправлено у наступному розділі." + +#: ../../src/spec/blog/index.rst:491 +msgid "Challenge: Authentication and Permissions" +msgstr "Завдання: Автентифікація та Дозволи" + +#: ../../src/spec/blog/index.rst:493 +msgid "Implement authentication system for REST API." +msgstr "Реалізуйте систему аутентифікації для REST API." + +#: ../../src/spec/blog/index.rst:495 +msgid "For non-authenticated users it is possible to create a new account" +msgstr "" +"Для неаутентифікованих користувачів можлива створення нового облікового " +"запису" + +#: ../../src/spec/blog/index.rst:496 +msgid "" +"For non-authenticated users it is possible to obtain authentication data." +msgstr "" +"Для неаутентифікованих користувачів можлива отримання даних аутентифікації." + +#: ../../src/spec/blog/index.rst:499 +msgid "" +"Access to user data is restricted. Authorized users can manipulate only " +"their own data (e.g. ``retrieve``, ``update``)." +msgstr "" +"Доступ до даних користувача обмежений. Авторизовані користувачі можуть " +"маніпулювати лише своїми власними даними (наприклад, ``retrieve``, " +"``update``)." + +#: ../../src/spec/blog/index.rst:501 +msgid "" +"Admins can retrieve all users data (``list``), but can't change them via " +"REST API. However, it is still possible via admin page." +msgstr "" +"Адміністратори можуть отримати дані всіх користувачів (``list``), але не " +"можуть змінювати їх через REST API. Однак це все ще можливо через " +"адміністративну сторінку." + +#: ../../src/spec/blog/index.rst:503 +msgid "" +"Authorized users can ``create`` articles or ``update`` and ``delete`` " +"articles created by them." +msgstr "" +"Авторизовані користувачі можуть ``create`` статті або ``update`` та " +"``delete`` статті, створені ними." + +#: ../../src/spec/blog/index.rst:505 +msgid "Authorized users can add comments to a specified article." +msgstr "Авторизовані користувачі можуть додавати коментарі до вказаної статті." + +#: ../../src/spec/blog/index.rst:506 +msgid "Authorized users can adjust their topics preferences." +msgstr "" +"Авторизовані користувачі можуть налаштовувати свої уподобання щодо тем." diff --git a/src/_locales/uk/LC_MESSAGES/spec/libms/index.po b/src/_locales/uk/LC_MESSAGES/spec/libms/index.po new file mode 100644 index 000000000..2baecf838 --- /dev/null +++ b/src/_locales/uk/LC_MESSAGES/spec/libms/index.po @@ -0,0 +1,1187 @@ +# Copyright (C) 2023, Python training course authors and contributors +# This file is distributed under the same license as the Python Training +# Course package. +# SERHII HORODILOV +msgid "" +msgstr "" +"Project-Id-Version: Python Training Course 2022.11.dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-05 19:49+0300\n" +"PO-Revision-Date: 2023-10-05 20:06+0300\n" +"Last-Translator: Serhii Horodilov \n" +"Language-Team: ua \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Generated-By: Babel 2.13.0\n" +"X-Generator: Poedit 3.4\n" + +#: ../../src/spec/libms/index.rst:3 +msgid "Library Management System" +msgstr "Система Керування Бібліотекою" + +#: ../../src/spec/libms/index.rst:5 +msgid "" +"The Library Management System is a Django-based web application that offers " +"a digital platform for managing and interacting with a library's collection. " +"It streamlines the processes of book lending, returns, and inventory " +"management, while ensuring easy access for users and librarians alike. " +"Through this system, users can search for available books, place borrowing " +"requests, and manage their borrowed items. Librarians, on the other hand, " +"oversee the addition, update, and removal of book records, and can approve " +"or decline borrowing requests. The system also supports diverse user roles, " +"from regular members to staff and administrators, each with distinct " +"capabilities." +msgstr "" +"Система Керування Бібліотекою є веб-застосуванням на базі Django, яке " +"пропонує цифрову платформу для управління та взаємодії з колекцією " +"бібліотеки. Вона оптимізує процеси надання книг, повернення та управління " +"інвентарем, забезпечуючи легкий доступ як для користувачів, так і для " +"бібліотекарів. За допомогою цієї системи користувачі можуть шукати доступні " +"книги, робити запити на позику та керувати позиченими предметами. " +"Бібліотекарі, з свого боку, контролюють додавання, оновлення та видалення " +"записів книг та можуть схвалювати або відхиляти запити на позику. Система " +"також підтримує різноманітні ролі користувачів, від звичайних членів до " +"персоналу та адміністраторів, кожен з яких має відмінні можливості." + +#: ../../src/spec/libms/index.rst:15 +msgid "" +"A well-structured user interface ensures that all functionalities are easily " +"accessible, making the library management process seamless and efficient. " +"This project aims to merge traditional library functions with modern " +"technological innovations, promoting efficiency and an enhanced user " +"experience." +msgstr "" +"Добре структурований користувацький інтерфейс забезпечує легкий доступ до " +"всіх функцій, роблячи процес управління бібліотекою безперешкодним та " +"ефективним. Цей проект має на меті об'єднати традиційні бібліотечні функції " +"з сучасними технологічними інноваціями, сприяючи підвищенню ефективності та " +"покращенню користувацького досвіду." + +#: ../../src/spec/libms/index.rst:22 +msgid "User roles" +msgstr "Ролі користувачів" + +#: ../../src/spec/libms/index.rst:25 +msgid "" +"It is essential for developers to consider security aspects when " +"implementing these roles to ensure that users cannot perform actions outside " +"their designated role's scope." +msgstr "" +"Розробникам важливо враховувати аспекти безпеки при впровадженні цих ролей, " +"щоб гарантувати, що користувачі не зможуть виконувати дії, які виходять за " +"рамки призначеної їм ролі." + +#: ../../src/spec/libms/index.rst:30 +msgid "Admins" +msgstr "Адміністратори" + +#: ../../src/spec/libms/index.rst:32 +msgid "" +"Superusers have full control over the entire system. They can access and " +"manage all functionalities provided by the Django admin site." +msgstr "" +"Адміністратори мають повний контроль над усією системою. Вони можуть " +"отримати доступ до всіх функцій, що надаються адмін-сайтом Django, і " +"керувати ними." + +#: ../../src/spec/libms/index.rst:35 +msgid "Admins can create, modify, or delete any record within the application." +msgstr "" +"Адміністратори можуть створювати, змінювати або видаляти будь-які записи в " +"додатку." + +#: ../../src/spec/libms/index.rst:38 ../../src/spec/libms/index.rst:49 +#: ../../src/spec/libms/index.rst:68 ../../src/spec/libms/index.rst:82 +msgid "Capabilities" +msgstr "Можливості" + +#: ../../src/spec/libms/index.rst:39 +msgid "Access Django admin site" +msgstr "Доступ до адміністративного сайту Django" + +#: ../../src/spec/libms/index.rst:42 +msgid "Librarians" +msgstr "Бібліотекарі" + +#: ../../src/spec/libms/index.rst:44 +msgid "" +"Staff personnel are in charge of day-to-day operations within the library. " +"They can add new books to the library's collection, manage existing books' " +"details, and accept or decline borrow requests from regular users." +msgstr "" +"Працівники бібліотеки відповідають за повсякденну роботу в бібліотеці. Вони " +"можуть додавати нові книги до бібліотечної колекції, керувати даними про " +"наявні книги, а також приймати або відхиляти запити від постійних " +"користувачів." + +#: ../../src/spec/libms/index.rst:50 +msgid "Management of the library catalogue" +msgstr "Управління бібліотечним каталогом" + +#: ../../src/spec/libms/index.rst:52 +msgid "Add, modify or delete authors" +msgstr "Додавати, змінювати або видаляти авторів" + +#: ../../src/spec/libms/index.rst:53 +msgid "Add, modify or delete genres" +msgstr "Додавати, змінювати або видаляти жанри" + +#: ../../src/spec/libms/index.rst:54 +msgid "Add, modify or delete books' details" +msgstr "Додавати, змінювати або видаляти дані про книги" + +#: ../../src/spec/libms/index.rst:56 +msgid "Review borrow requests from regular users" +msgstr "Переглядати запити на позичення від користувачів" + +#: ../../src/spec/libms/index.rst:57 +msgid "Accept or decline borrow requests" +msgstr "Приймати або відхиляти запити на позичення" + +#: ../../src/spec/libms/index.rst:58 +msgid "Register returned books and update their status" +msgstr "Реєструвати повернені книги та оновлювати їх статус" + +#: ../../src/spec/libms/index.rst:61 +msgid "Regular" +msgstr "Звичайний" + +#: ../../src/spec/libms/index.rst:63 +msgid "" +"Regular registered users are the members of the library. They can search " +"books, request to borrow them, and are responsible for returning borrowed " +"books on time." +msgstr "" +"Постійні зареєстровані користувачі є членами бібліотеки. Вони можуть шукати " +"книги, запитувати їх, а також несуть відповідальність за своєчасне " +"повернення позичених книг." + +#: ../../src/spec/libms/index.rst:69 ../../src/spec/libms/index.rst:83 +msgid "Browse the books' catalogue" +msgstr "Переглядати каталог книг" + +#: ../../src/spec/libms/index.rst:70 ../../src/spec/libms/index.rst:84 +msgid "View details of a book" +msgstr "Переглядати деталі книги" + +#: ../../src/spec/libms/index.rst:71 ../../src/spec/libms/index.rst:85 +msgid "Search books" +msgstr "Шукати книги" + +#: ../../src/spec/libms/index.rst:72 +msgid "Request to borrow available books" +msgstr "Робити запит на позичення доступних книжок" + +#: ../../src/spec/libms/index.rst:73 +msgid "Check due date for returned books" +msgstr "Перевіряти термін повернення запозичених книжок" + +#: ../../src/spec/libms/index.rst:74 +msgid "Return borrowed books" +msgstr "Повертати запозичені книги" + +#: ../../src/spec/libms/index.rst:77 +msgid "Anonymous" +msgstr "Анонімні" + +#: ../../src/spec/libms/index.rst:79 +msgid "Anonymous users are visitors who haven't logged into the system." +msgstr "Анонімні користувачі - це відвідувачі, які не ввійшли в систему." + +#: ../../src/spec/libms/index.rst:86 +msgid "Access to the registration or login pages" +msgstr "Доступ до сторінок реєстрації або входу" + +#: ../../src/spec/libms/index.rst:90 +msgid "Models" +msgstr "Моделі" + +#: ../../src/spec/libms/index.rst:93 +msgid "Author model" +msgstr "Модель авторів" + +#: ../../src/spec/libms/index.rst:95 +msgid "" +"The ``Author`` model captures the details of the person, or group " +"responsible for creating the book." +msgstr "" +"Модель ``Author`` фіксує інформацію про особу або групу осіб, відповідальних " +"за створення книги." + +#: ../../src/spec/libms/index.rst:99 ../../src/spec/libms/index.rst:116 +#: ../../src/spec/libms/index.rst:128 ../../src/spec/libms/index.rst:170 +msgid "Attributes" +msgstr "Атрибути" + +#: ../../src/spec/libms/index.rst +msgid "Name" +msgstr "Name" + +#: ../../src/spec/libms/index.rst:102 +msgid "The full name of the author. This should be limited to 255 characters." +msgstr "Повне ім'я автора. Не більше 255 символів." + +#: ../../src/spec/libms/index.rst +msgid "Bio" +msgstr "Bio" + +#: ../../src/spec/libms/index.rst:105 +msgid "A brief biography or description of the author." +msgstr "Коротка біографія або опис автора." + +#: ../../src/spec/libms/index.rst:108 +msgid "Genre model" +msgstr "Модель жанра" + +#: ../../src/spec/libms/index.rst:110 +msgid "" +"The ``Genre`` model represents the category or type of content a book " +"belongs to, such as \"Fiction\", \"Non-fiction\", \"Science\", \"Romance\" " +"etc. Since a book can belong to more than one category at a time, it is " +"implemented as a dedicated model." +msgstr "" +"Модель ``Genre`` представляє категорію або тип контенту, до якого належить " +"книга, наприклад, \"Художня література\", \"Нехудожня література\", " +"\"Наука\", \"Романтика\" тощо. Оскільки книга може належати до кількох " +"категорій одночасно, вона реалізована як окрема модель." + +#: ../../src/spec/libms/index.rst:118 +msgid "The name of the genre." +msgstr "Назва жанру." + +#: ../../src/spec/libms/index.rst:121 +msgid "Book model" +msgstr "Модель книги" + +#: ../../src/spec/libms/index.rst:123 +msgid "" +"The ``Book`` model represents a physical book in the library's collection. " +"Each book record captures essential bibliographic information, as well as " +"details related to its current status in the library (e.g. available, " +"borrowed etc.)." +msgstr "" +"Модель ``Book`` представляє фізичну книгу в бібліотечній колекції. Кожен " +"запис про книгу містить основну бібліографічну інформацію, а також деталі, " +"пов'язані з її поточним статусом у бібліотеці (наприклад, доступна, позичена " +"тощо)." + +#: ../../src/spec/libms/index.rst +msgid "Title" +msgstr "Title" + +#: ../../src/spec/libms/index.rst:131 +msgid "The name or title of the book (255 characters or fewer)." +msgstr "Назва книги (255 символів або менше)." + +#: ../../src/spec/libms/index.rst +msgid "Summary" +msgstr "Summary" + +#: ../../src/spec/libms/index.rst:134 +msgid "A brief description or synopsis of the book." +msgstr "Короткий опис або синопсис книги." + +#: ../../src/spec/libms/index.rst +msgid "ISBN" +msgstr "ISBN" + +#: ../../src/spec/libms/index.rst:137 +msgid "International Standard Book Number, a unique identifier for books." +msgstr "" +"International Standard Book Number, унікальний ідентифікатор для книг.." + +#: ../../src/spec/libms/index.rst +msgid "Available" +msgstr "Available" + +#: ../../src/spec/libms/index.rst:140 +msgid "" +"Current available status of the book. Either ``True`` or ``False``. Books " +"are available by default." +msgstr "" +"Поточний статус доступності книги. Або ``True``, або ``False``. За " +"замовчуванням книги доступні." + +#: ../../src/spec/libms/index.rst +msgid "Published date" +msgstr "Published date" + +#: ../../src/spec/libms/index.rst:144 +msgid "The date when the book was published." +msgstr "Дата, коли книга була опублікована." + +#: ../../src/spec/libms/index.rst +msgid "Publisher" +msgstr "Publisher" + +#: ../../src/spec/libms/index.rst:147 +msgid "" +"The entity or company responsible for the production and distribution of the " +"book." +msgstr "" +"Організація або компанія, відповідальна за виробництво та розповсюдження " +"книги." + +#: ../../src/spec/libms/index.rst +msgid "Genre(s)" +msgstr "Genre(s)" + +#: ../../src/spec/libms/index.rst:151 +msgid "" +"The category or type of content the book falls under (e.g., Fiction, Non-" +"Fiction, Science)." +msgstr "" +"Категорія або тип контенту, до якого належить книга (наприклад, художня " +"література, нон-фікшн, наукова література)." + +#: ../../src/spec/libms/index.rst +msgid "Author(s)" +msgstr "Author(s)" + +#: ../../src/spec/libms/index.rst:156 +msgid "" +"The name of the person or group responsible for creating the content of the " +"book." +msgstr "Ім'я особи або групи осіб, відповідальних за створення змісту книги." + +#: ../../src/spec/libms/index.rst +msgid "Borrower" +msgstr "Borrower" + +#: ../../src/spec/libms/index.rst:160 +msgid "The user who has currently borrowed the book, if applicable." +msgstr "Користувач, який наразі позичив книгу, якщо це можливо." + +#: ../../src/spec/libms/index.rst:163 +msgid "Borrow request model" +msgstr "Модель запиту на позику" + +#: ../../src/spec/libms/index.rst:165 +msgid "" +"The ``BorrowRequest`` model captures the intent of a user to borrow a " +"specific book. It tracks the status of the request, whether it's pending, " +"approved, declined, or completed." +msgstr "" +"Модель ``BorrowRequest`` фіксує намір користувача взяти конкретну книгу. " +"Вона відстежує статус запиту: очікує, схвалений, відхилений чи завершений." + +#: ../../src/spec/libms/index.rst +msgid "Book" +msgstr "Book" + +#: ../../src/spec/libms/index.rst:173 +msgid "A reference to a book to be borrowed." +msgstr "Посилання на книгу, яку потрібно взяти." + +#: ../../src/spec/libms/index.rst:176 +msgid "A reference to a user who wants to borrow a book." +msgstr "Посилання на користувача, який хоче взяти книгу." + +#: ../../src/spec/libms/index.rst +msgid "Status" +msgstr "Status" + +#: ../../src/spec/libms/index.rst:179 +msgid "The current status of the request." +msgstr "Поточний статус заявки." + +#: ../../src/spec/libms/index.rst:181 +msgid "pending" +msgstr "pending" + +#: ../../src/spec/libms/index.rst:182 +msgid "approved" +msgstr "approved" + +#: ../../src/spec/libms/index.rst:183 +msgid "collected" +msgstr "collected" + +#: ../../src/spec/libms/index.rst:184 +msgid "complete" +msgstr "complete" + +#: ../../src/spec/libms/index.rst:185 +msgid "declined" +msgstr "declined" + +#: ../../src/spec/libms/index.rst:187 +msgid "" +"The status constants should be encapsulated within the ``BorrowRequest`` " +"model." +msgstr "" +"Константи стану повинні бути інкапсульовані в моделі ``BorrowRequest``." + +#: ../../src/spec/libms/index.rst +msgid "Overdue" +msgstr "Overdue" + +#: ../../src/spec/libms/index.rst:202 +msgid "A flag indicating if a borrow request was overdue." +msgstr "Прапорець, що вказує на те, чи був запит на позику прострочений." + +#: ../../src/spec/libms/index.rst +msgid "Request date" +msgstr "Request date" + +#: ../../src/spec/libms/index.rst:205 +msgid "The date the borrow request was made. This is required." +msgstr "Дата подання запиту на позику. Це обов'язкова інформація." + +#: ../../src/spec/libms/index.rst +msgid "Approval date" +msgstr "Approval date" + +#: ../../src/spec/libms/index.rst:208 +msgid "The date the request was approved, if applicable. Optional." +msgstr "Дата схвалення запиту, якщо це можливо. Необов'язково." + +#: ../../src/spec/libms/index.rst +msgid "Due date" +msgstr "Due date" + +#: ../../src/spec/libms/index.rst:211 +msgid "" +"The date by which the book should be returned. Optional, should only be set " +"if the request if approved." +msgstr "" +"Дата, до якої книга має бути повернута. Необов'язкова, має бути вказана лише " +"у разі схвалення запиту." + +#: ../../src/spec/libms/index.rst +msgid "Complete date" +msgstr "Complete date" + +#: ../../src/spec/libms/index.rst:215 +msgid "" +"The date the book was returned and the borrowing request was completed. " +"Optional, should only be set if the request has reached the \"Complete\" " +"status." +msgstr "" +"Дата повернення книги та завершення запиту на позику. Необов'язкова, має " +"бути встановлена тільки якщо запит досяг статусу \"Завершено\"." + +#: ../../src/spec/libms/index.rst:220 +msgid "Relationships" +msgstr "Відносини" + +#: ../../src/spec/libms/index.rst:228 +msgid "Book to author" +msgstr "Книга до автору" + +#: ../../src/spec/libms/index.rst:230 +msgid "" +"Each ``Author`` can be associated with multiple ``Books``, and each ``Book`` " +"can have **one or more** ``authors``. This establishes a **many-to-many** " +"relationship between the two entities." +msgstr "" +"Кожен ``Автор`` може бути пов'язаний з декількома ``Книгами``, а кожна " +"``Книга`` може мати **одного або більше** ``авторів``. Це встановлює зв'язок " +"**багато-до-багатьох** між цими двома сутностями." + +#: ../../src/spec/libms/index.rst:235 +msgid "Book to genre" +msgstr "Книга до жанру" + +#: ../../src/spec/libms/index.rst:237 +msgid "" +"Each ``Genre`` can be associated with multiple ``Books``, and vice-versa. " +"However a ``Book`` might not belong to any genre. This relationship between " +"``Genre`` and ``Book`` is still considered **many-to-many**, but with the " +"possibility of zero genres for a book." +msgstr "" +"Кожен ``Жанр`` може бути пов'язаний з декількома ``Книгами``, і навпаки. " +"Однак ``Книга`` може не належати до жодного жанру. Цей зв'язок між " +"``Жанром`` і ``Книгою`` все ще вважається **багато-до-багатьох**, але з " +"можливістю нульових жанрів для книги." + +#: ../../src/spec/libms/index.rst:243 +msgid "Book to borrow request" +msgstr "Книга до запиту на позику" + +#: ../../src/spec/libms/index.rst:245 +msgid "" +"Each ``Book`` can be associated with multiple ``BorrowRequests``, but each " +"``BorrowRequest`` refers only one ``book``, forming a **many-to-one** " +"relationship." +msgstr "" +"Кожна ``Книга`` може бути пов'язана з декількома ``Запитами на позику``, але " +"кожен ``Запит на позику`` посилається тільки на одну ``Книгу``, утворюючи " +"зв'язок **багато-до-одного**." + +#: ../../src/spec/libms/index.rst:250 +msgid "User to borrow request" +msgstr "Користувач до запиту на позику" + +#: ../../src/spec/libms/index.rst:252 +msgid "" +"Each ``User`` can make multiple ``BorrowRequests``, but each " +"``BorrowRequest`` refers to only one book, forming a **many-to-one** " +"relationship." +msgstr "" +"Кожен ``Користувач`` може зробити кілька ``Запитів на позику``, але кожен " +"``Запит на позику`` відноситься тільки до однієї книги, формуючи зв'язок " +"``багато до однієї``." + +#: ../../src/spec/libms/index.rst:256 +msgid "User to book (as a borrower)" +msgstr "Користувач до книги (як запозичувач)" + +#: ../../src/spec/libms/index.rst:258 +msgid "" +"A ``Book`` may have been borrowed by a ``User``, but at any given time, each " +"``Book`` can be borrowed by one user only. This forms a **one-to-one** " +"relationship." +msgstr "" +"Книга\" може бути позичена \"Користувачем\", але в будь-який момент часу " +"кожна \"Книга\" може бути позичена тільки одним користувачем. Це формує " +"відносини \"один до одного\"." + +#: ../../src/spec/libms/index.rst:264 +msgid "Views and templates" +msgstr "Подання та шаблони" + +#: ../../src/spec/libms/index.rst:267 +msgid "Admin site" +msgstr "Адмін-сайт" + +#: ../../src/spec/libms/index.rst:269 +msgid "" +"Admin site provides the full control over the entire system. Only admins are " +"permitted to use admin site. Librarians should use their dedicated views to " +"perform operations, except special cases." +msgstr "" +"Адмін-сайт забезпечує повний контроль над всією системою. Тільки " +"адміністратори мають право користуватися сайтом адміністратора. Бібліотекарі " +"повинні використовувати свої виділені подання для виконання операцій, за " +"винятком особливих випадків." + +#: ../../src/spec/libms/index.rst:275 +msgid "Authentication" +msgstr "Автентифікація" + +#: ../../src/spec/libms/index.rst:278 +msgid "Login" +msgstr "Логін" + +#: ../../src/spec/libms/index.rst:281 ../../src/spec/libms/index.rst:293 +#: ../../src/spec/libms/index.rst:324 ../../src/spec/libms/index.rst:344 +#: ../../src/spec/libms/index.rst:371 ../../src/spec/libms/index.rst:495 +#: ../../src/spec/libms/index.rst:512 +msgid "Template" +msgstr "Template" + +#: ../../src/spec/libms/index.rst:282 +msgid "" +"A form with fields for entering a username and a password, and a submit " +"button." +msgstr "" +"Форма з полями для введення імені користувача та пароля, а також кнопкою " +"\"Надіслати\"." + +#: ../../src/spec/libms/index.rst:285 ../../src/spec/libms/index.rst:303 +#: ../../src/spec/libms/index.rst:329 ../../src/spec/libms/index.rst:353 +#: ../../src/spec/libms/index.rst:390 ../../src/spec/libms/index.rst:476 +#: ../../src/spec/libms/index.rst:499 +msgid "View logic" +msgstr "View logic" + +#: ../../src/spec/libms/index.rst:286 +msgid "" +"Validate entered credentials and authenticate the user. In case of incorrect " +"credentials, display an error message." +msgstr "" +"Перевірити введені облікові дані та автентифікувати користувача. У разі " +"неправильних облікових даних вивести повідомлення про помилку." + +#: ../../src/spec/libms/index.rst:290 +msgid "Registration" +msgstr "Реєстрація" + +#: ../../src/spec/libms/index.rst:294 +msgid "A form for new user registration. **Required** fields are:" +msgstr "Форма для реєстрації нового користувача. **Обов'язковими** полями є:" + +#: ../../src/spec/libms/index.rst:296 +msgid "username" +msgstr "username" + +#: ../../src/spec/libms/index.rst:297 +msgid "first name" +msgstr "first name" + +#: ../../src/spec/libms/index.rst:298 +msgid "last name" +msgstr "last name" + +#: ../../src/spec/libms/index.rst:299 +msgid "password" +msgstr "password" + +#: ../../src/spec/libms/index.rst:300 +msgid "confirm password" +msgstr "confirm password" + +#: ../../src/spec/libms/index.rst:304 +msgid "Upon submission, the view should validate the provided data:" +msgstr "Після відправлення, перегляд повинен підтвердити надані дані:" + +#: ../../src/spec/libms/index.rst:306 +msgid "Check if username is already taken." +msgstr "Перевірте, чи не зайнято вже ім'я користувача." + +#: ../../src/spec/libms/index.rst:307 +msgid "Ensure that password and confirm password fields match." +msgstr "" +"Переконайтеся, що поля \"Пароль\" і \"Підтвердження пароля\" збігаються." + +#: ../../src/spec/libms/index.rst:308 +msgid "" +"Save the user's data if all validations pass. Otherwise, display appropriate " +"error messages." +msgstr "" +"Зберегти дані користувача, якщо всі перевірки пройдено. В іншому випадку, " +"відобразити відповідні повідомлення про помилки." + +#: ../../src/spec/libms/index.rst:311 +msgid "" +"When saving passwords in the database, always store them in a hashed format, " +"never in plain text." +msgstr "" +"Зберігаючи паролі в базі даних, завжди зберігайте їх у хешованому форматі, а " +"не у вигляді простого тексту." + +#: ../../src/spec/libms/index.rst:315 +msgid "" +"Django's built-in ``User`` model and authentication system handle password " +"hashing by default, which is a big plus." +msgstr "" +"Вбудована в Django модель ``User`` та система автентифікації за " +"замовчуванням обробляє хешування паролів, що є великим плюсом." + +#: ../../src/spec/libms/index.rst:319 +msgid "Borrowing History" +msgstr "Історія запозичень" + +#: ../../src/spec/libms/index.rst:321 +msgid "This view is available only for authenticated users." +msgstr "Це подання доступне лише для авторизованих користувачів." + +#: ../../src/spec/libms/index.rst:325 +msgid "" +"Users can see the list of **all** their borrows requests, regardless of " +"approve/decline status." +msgstr "" +"Користувачі можуть бачити список **всіх** своїх заявок на позики, незалежно " +"від статусу схвалення/відхилення." + +#: ../../src/spec/libms/index.rst:330 +msgid "Authenticated users can see only their own borrow requests." +msgstr "Авторизовані користувачі можуть бачити лише власні заявки на позики." + +#: ../../src/spec/libms/index.rst:331 +msgid "" +"Librarians and admins can access borrows requests list for any user, " +"registered in the library system." +msgstr "" +"Бібліотекарі та адміністратори мають доступ до списку запитів на позики для " +"будь-якого користувача, зареєстрованого в бібліотечній системі." + +#: ../../src/spec/libms/index.rst:335 +msgid "Library collection" +msgstr "Бібліотечний фонд" + +#: ../../src/spec/libms/index.rst:337 +msgid "" +"These views are generally available for all (including anonymous) users. The " +"functionality for authenticated users include books borrowing." +msgstr "" +"Ці перегляди загалом доступні для всіх (в тому числі анонімних) " +"користувачів. Функціонал для аутентифікованих користувачів включає в себе " +"можливість позичати книги." + +#: ../../src/spec/libms/index.rst:341 +msgid "Books list" +msgstr "Список літератури" + +#: ../../src/spec/libms/index.rst:345 +msgid "A list (or table) of books. Each book entry should provide information:" +msgstr "" +"Список (або таблиця) книг. Кожна позиція повинна містити інформацію про " +"книгу:" + +#: ../../src/spec/libms/index.rst:347 +msgid "title" +msgstr "title" + +#: ../../src/spec/libms/index.rst:348 +msgid "author(s)" +msgstr "автор(и)" + +#: ../../src/spec/libms/index.rst:349 +msgid "summary (truncated if too long, 30 words or fewer)" +msgstr "опис (скорочене, якщо занадто довге, до 30 слів або менше)" + +#: ../../src/spec/libms/index.rst:350 +msgid "availability status (either **Available** or **Unavailable**)" +msgstr "статус доступності (**Доступний** або **Не доступний**)" + +#: ../../src/spec/libms/index.rst:354 +msgid "Querying the data" +msgstr "Запит даних" + +#: ../../src/spec/libms/index.rst:356 +msgid "Fetch **all** books from the database" +msgstr "Отримати **усі** книги з бази даних" + +#: ../../src/spec/libms/index.rst:358 +msgid "Checking availability status (visual mark)" +msgstr "Перевірка статусу доступності (візуальна позначка)" + +#: ../../src/spec/libms/index.rst:360 +msgid "" +"For each book, determine its availability status. Check ``Book.available`` " +"flag." +msgstr "" +"Для кожної книги визначте її статус доступності. Встановіть прапорець ``Book." +"available``." + +#: ../../src/spec/libms/index.rst:364 +msgid "" +"A user can still create a borrowing request, regardless of the book " +"availability status. This is only the visual mark." +msgstr "" +"Користувач все одно може створити запит на позику, незалежно від статусу " +"доступності книги. Це лише візуальна позначка." + +#: ../../src/spec/libms/index.rst:368 +msgid "Detail view" +msgstr "Детальний перегляд" + +#: ../../src/spec/libms/index.rst:372 +msgid "" +"The detailed view of a specific book, presenting comprehensive information:" +msgstr "Детальний огляд конкретної книги, що містить вичерпну інформацію:" + +#: ../../src/spec/libms/index.rst:374 +msgid "**Title**: Display the book's title prominently." +msgstr "**Назва**: Покажіть назву книги на видному місці." + +#: ../../src/spec/libms/index.rst:375 +msgid "**Genre(s)**: List all associated genres (if any)." +msgstr "**Жанр(и)**: Перелічіть усі пов'язані жанри (якщо такі є)." + +#: ../../src/spec/libms/index.rst:376 +msgid "**Author(s)**: List all associated authors." +msgstr "**Автор(и)**: Перерахуйте всіх асоційованих авторів." + +#: ../../src/spec/libms/index.rst:377 +msgid "**ISBN**: The International Standard Book Number." +msgstr "**ISBN**: Міжнародний стандартний номер книги." + +#: ../../src/spec/libms/index.rst:378 +msgid "**Published Date**: When the book was published." +msgstr "**Дата публікації**: Коли вийшла друком книга." + +#: ../../src/spec/libms/index.rst:379 +msgid "" +"**Publisher**: The name of the entity or company responsible for publishing" +msgstr "" +"**Видавець**: Назва організації або компанії, відповідальної за публікацію" + +#: ../../src/spec/libms/index.rst:380 +msgid "**Summary**: A full summary or description of the book. the book." +msgstr "**Коротка анотація**: Повне резюме або опис книги. книги." + +#: ../../src/spec/libms/index.rst:382 +msgid "**Action Buttons** (For authenticated users only):" +msgstr "**Кнопки дій** (Тільки для авторизованих користувачів):" + +#: ../../src/spec/libms/index.rst:384 +msgid "" +"**Borrow Request Button**: If the user has no associated borrow request they " +"can create a new one." +msgstr "" +"**Кнопка запиту на позику**: Якщо користувач не має пов'язаного запиту на " +"позику, він може створити новий." + +#: ../../src/spec/libms/index.rst:386 +msgid "" +"**Gather Book Button**: If the user's borrow request for this book has been " +"approved, allow the user to confirm they've picked up the book." +msgstr "" +"**Кнопка Забрати книгу**: Якщо запит користувача на позику цієї книги було " +"схвалено, дозвольте користувачеві підтвердити, що він забрав книгу." + +#: ../../src/spec/libms/index.rst:391 +msgid "**Fetching Book Details**:" +msgstr "**Доступ до деталей книги**:" + +#: ../../src/spec/libms/index.rst:393 +msgid "" +"Use the book's identifier (usually a primary key) to fetch its details from " +"the database." +msgstr "" +"Використовуйте ідентифікатор книги (зазвичай первинний ключ), щоб отримати " +"інформацію про неї з бази даних." + +#: ../../src/spec/libms/index.rst:396 +msgid "**Checking User Authentication**:" +msgstr "**Перевірка автентичності користувача**:" + +#: ../../src/spec/libms/index.rst:398 +msgid "" +"Determine if a user is authenticated. If they are, display the appropriate " +"action buttons based on the book's availability status and any existing " +"borrow requests by the user." +msgstr "" +"Визначити, чи користувач автентифікований. Якщо так, відобразити відповідні " +"кнопки дій на основі статусу доступності книги та наявних запитів " +"користувача на позику." + +#: ../../src/spec/libms/index.rst:402 +msgid "**Handling Borrow Requests**:" +msgstr "**Обробка запитів на позику**:" + +#: ../../src/spec/libms/index.rst:404 +msgid "If an authenticated user clicks on the \"Borrow Request\" button:" +msgstr "Якщо авторизований користувач натискає кнопку \"Запит на позику\":" + +#: ../../src/spec/libms/index.rst:406 +msgid "" +"Create a new borrow request in the ``BorrowRequest`` model with status " +"\"pending\"." +msgstr "" +"Створіть новий запит на позику в моделі ``BorrowRequest`` зі статусом \"на " +"розгляді\"." + +#: ../../src/spec/libms/index.rst:408 +msgid "Update the book's status to \"Awaiting approval\"." +msgstr "Оновіть статус книги на \"Очікує затвердження\"." + +#: ../../src/spec/libms/index.rst:409 +msgid "" +"Redirect the user to a confirmation page or display a message indicating the " +"request has been made." +msgstr "" +"Перенаправлення користувача на сторінку підтвердження або відображення " +"повідомлення про те, що запит було зроблено." + +#: ../../src/spec/libms/index.rst:412 +msgid "**Handling Book Gathering**:" +msgstr "**Опрацювання Позики Книги**:" + +#: ../../src/spec/libms/index.rst:414 +msgid "" +"If an authenticated user has an approved borrow request and clicks the " +"\"Gather Book\" button:" +msgstr "" +"Якщо авторизований користувач має схвалений запит на позику і натискає " +"кнопку \"Зібрати книгу\":" + +#: ../../src/spec/libms/index.rst:417 +msgid "Update the book's status to \"Borrowed\"." +msgstr "Оновіть статус книги на \"Позичена\"." + +#: ../../src/spec/libms/index.rst:418 +msgid "Update the borrow request's status to \"complete\"." +msgstr "Оновіть статус запиту на позику до \"завершено\"." + +#: ../../src/spec/libms/index.rst:419 +msgid "" +"Redirect the user to a confirmation page or display a message indicating " +"they've picked up the book." +msgstr "" +"Перенаправляйте користувача на сторінку підтвердження або показуйте " +"повідомлення про те, що він забрав книгу." + +#: ../../src/spec/libms/index.rst:423 +msgid "" +"Always ensure the user's actions are authenticated and authorized. This " +"prevents unauthorized borrow requests or gathering of books. Also, consider " +"adding error handling to manage cases where the book's details cannot be " +"fetched or any other unexpected issues." +msgstr "" +"Завжди переконуйтеся, що дії користувача автентифіковані та санкціоновані. " +"Це запобігає несанкціонованим запитам на позику або збору книг. Також " +"подумайте про те, щоб додати обробку помилок для випадків, коли не вдається " +"отримати дані про книгу, або будь-яких інших непередбачуваних проблем." + +#: ../../src/spec/libms/index.rst:429 +msgid "Books management" +msgstr "Управління книгами" + +#: ../../src/spec/libms/index.rst:431 +msgid "These views are available only for staff (librarians and admins)." +msgstr "" +"Ці перегляди доступні лише для персоналу (бібліотекарів та адміністраторів)." + +#: ../../src/spec/libms/index.rst:434 +msgid "Authors and genres management" +msgstr "Управління авторами та жанрами" + +#: ../../src/spec/libms/index.rst:436 +msgid "" +"Only librarians and admins can add, modify or delete authors and genres. No " +"additional views for CRUD operations required (except admin site). " +"Librarians are allowed to access authors and genres via admin site. Only " +"admins can remove authors or genres." +msgstr "" +"Тільки бібліотекарі та адміністратори можуть додавати, змінювати або " +"видаляти авторів і жанри. Для виконання CRUD-операцій не потрібні додаткові " +"перегляди (окрім адмін-сайту). Бібліотекарі мають доступ до авторів і жанрів " +"через сайт адміністратора. Тільки адміністратори можуть видаляти авторів або " +"жанри." + +#: ../../src/spec/libms/index.rst:442 +msgid "Book creation and update" +msgstr "Створення та оновлення книг" + +#: ../../src/spec/libms/index.rst:444 +msgid "" +"The template should comprise a form with fields corresponding to the book's " +"attributes. Here are the essential elements for the form:" +msgstr "" +"Шаблон повинен містити форму з полями, що відповідають атрибутам книги. Ось " +"основні елементи форми:" + +#: ../../src/spec/libms/index.rst:448 ../../src/spec/libms/index.rst:463 +msgid "A text input field." +msgstr "Поле для введення тексту." + +#: ../../src/spec/libms/index.rst:451 +msgid "A textarea for a brief description or synopsis." +msgstr "Текстова область для короткого опису або синопсису." + +#: ../../src/spec/libms/index.rst:454 +msgid "A text input field for the book's International Standard Book Number." +msgstr "Поле для введення міжнародного стандартного номера книги." + +#: ../../src/spec/libms/index.rst:457 +msgid "A checkbox indicating if a book is available. Defaults to ``True``." +msgstr "" +"Прапорець, що вказує на наявність книги. За замовчуванням стоїть ``True``." + +#: ../../src/spec/libms/index.rst:460 +msgid "A date input field." +msgstr "Поле для введення дати." + +#: ../../src/spec/libms/index.rst +msgid "Genres" +msgstr "Жанри" + +#: ../../src/spec/libms/index.rst:466 +msgid "" +"A multi-select list of genres (e.g. dropdown, checkboxes etc.). This should " +"fetch available genres from the database and allow users to select zero or " +"more genres." +msgstr "" +"Список жанрів з можливістю вибору (наприклад, випадаючий список, прапорці " +"тощо). Він повинен отримувати доступні жанри з бази даних і дозволяти " +"користувачам вибирати нуль або більше жанрів." + +#: ../../src/spec/libms/index.rst +msgid "Authors" +msgstr "Автори" + +#: ../../src/spec/libms/index.rst:471 +msgid "" +"A multi-select list of authors (e.g. dropdown, checkboxes etc.). This should " +"fetch available authors from the database and allow users to select one or " +"more authors." +msgstr "" +"Список авторів з можливістю вибору (наприклад, випадаючий список, прапорці " +"тощо). Він повинен отримувати доступних авторів з бази даних і дозволяти " +"користувачам вибирати одного або декількох авторів." + +#: ../../src/spec/libms/index.rst:477 +msgid "" +"If it's an *update* action, pre-populate the form fields with the existing " +"details of the book fetched from the database." +msgstr "" +"Якщо це дія *оновлення*, попередньо заповніть поля форми існуючими даними " +"книги, отриманими з бази даних." + +#: ../../src/spec/libms/index.rst:479 +msgid "For *creation*, provide an empty form for the librarian to fill in." +msgstr "Для *створення* надайте бібліотекарю порожню форму для заповнення." + +#: ../../src/spec/libms/index.rst:480 +msgid "Ensure the published date is logical (e.g. not a future date)." +msgstr "" +"Переконайтеся, що опублікована дата є логічною (наприклад, не є датою " +"майбутнього)." + +#: ../../src/spec/libms/index.rst:481 +msgid "Validate required inputs, according to general ``Book`` model rules." +msgstr "" +"Перевірити необхідні вхідні дані відповідно до загальних правил моделі " +"``Book``." + +#: ../../src/spec/libms/index.rst:482 +msgid "" +"If validations pass: save changes to the database; otherwise, provide " +"helpful error messages." +msgstr "" +"Якщо перевірка пройшла успішно: збережіть зміни в базі даних; в іншому " +"випадку надайте корисні повідомлення про помилки." + +#: ../../src/spec/libms/index.rst:486 +msgid "" +"You MAY provide a mechanism (like modal or a quick entry form) to add a new " +"genre or author without leaving the book form page." +msgstr "" +"Ви МОЖЕТЕ надати механізм (наприклад, модальну форму або форму швидкого " +"введення) для додавання нового жанру або автора, не виходячи зі сторінки " +"форми книги." + +#: ../../src/spec/libms/index.rst:490 +msgid "Book deletion" +msgstr "Видалення книги" + +#: ../../src/spec/libms/index.rst:492 +msgid "" +"Only librarians and administrators are permitted to perform this action." +msgstr "Тільки бібліотекарі та адміністратори мають право виконувати цю дію." + +#: ../../src/spec/libms/index.rst:496 +msgid "A confirm delete form with **Submit** and **Cancel** buttons." +msgstr "Форма підтвердження видалення з кнопками **Подати** та **Скасувати**." + +#: ../../src/spec/libms/index.rst:500 +msgid "Authorize user before deleting performing deletion." +msgstr "Авторизуйте користувача перед виконанням видалення." + +#: ../../src/spec/libms/index.rst:501 +msgid "" +"If a form is submitted, a book should be removed from the library collection." +msgstr "Якщо формуляр подано, книга має бути вилучена з бібліотечної колекції." + +#: ../../src/spec/libms/index.rst:503 +msgid "" +"If deletion is canceled view should redirect back to book detail view page." +msgstr "" +"Якщо видалення скасовано, перегляд має бути перенаправлений назад на " +"сторінку детального перегляду книги." + +#: ../../src/spec/libms/index.rst:506 +msgid "Borrow requests" +msgstr "Запити на позики" + +#: ../../src/spec/libms/index.rst:508 +msgid "" +"This view facilitates the management of borrowing requests for librarians " +"and admins, aiding in their prompt handling." +msgstr "" +"Цей перегляд полегшує бібліотекарям і адміністраторам управління запитами на " +"позики, допомагаючи оперативно їх обробляти." + +#: ../../src/spec/libms/index.rst:513 +msgid "" +"Present a table showcasing the list of borrow requests. Each row embodies a " +"borrow request and encompasses:" +msgstr "" +"Уявіть таблицю, що відображає список запитів на позики. Кожен рядок " +"відображає один запит на позику і включає в себе всі запити:" + +#: ../../src/spec/libms/index.rst:516 +msgid "**Book Title**: Title of the requested book." +msgstr "**Назва книги**: Назва запитуваної книги." + +#: ../../src/spec/libms/index.rst:517 +msgid "**User**: Identifier of the user who initiated the request." +msgstr "**Користувач**: Ідентифікатор користувача, який ініціював запит." + +#: ../../src/spec/libms/index.rst:518 +msgid "**Request Date**: Date of the request's inception." +msgstr "**Дата запиту**: Дата створення запиту." + +#: ../../src/spec/libms/index.rst:519 +msgid "" +"**Due Date**: - Input field for librarians to set upon approval for new " +"requests. - For approved ones, display the librarian-set date." +msgstr "" +"**Дата виконання**: - Поле для введення бібліотекарями при затвердженні " +"нових запитів. - Для затверджених запитів відображатиметься дата, " +"встановлена бібліотекарем." + +#: ../../src/spec/libms/index.rst:522 +msgid "" +"**Status**: Present state of the request (New, Approved, Completed, " +"Declined)." +msgstr "" +"**Статус**: Поточний стан запиту (Новий, Затверджений, Завершений, " +"Відхилений)." + +#: ../../src/spec/libms/index.rst:524 +msgid "" +"**Approve Button**: Visible for new requests. Toggles status to \"Approved\" " +"and freezes the due date." +msgstr "" +"**Кнопка \"Затвердити\"**: Відображається для нових запитів. Перемикає " +"статус на \"Затверджено\" і заморожує дату виконання." + +#: ../../src/spec/libms/index.rst:526 +msgid "" +"**Decline Button**: Appears for new requests. Sets status to \"Declined\" " +"and can prompt for a decline reason." +msgstr "" +"**Кнопка \"Відхилити\"**: З'являється для нових запитів. Встановлює статус " +"\"Відхилено\" і може запитувати причину відхилення." + +#: ../../src/spec/libms/index.rst:528 +msgid "" +"**Complete Button**: Displayed for approved requests. Marks the request as " +"completed." +msgstr "" +"**Кнопка \"Завершити\"**: Відображається для затверджених запитів. Позначає " +"запит як завершений." + +#: ../../src/spec/libms/index.rst:532 +msgid "View Logic" +msgstr "View Logic" + +#: ../../src/spec/libms/index.rst:533 +msgid "" +"**Approve Borrow Request**: - Validate book availability. - Modify book " +"status to \"Borrowed\". - Switch borrow request to \"Approved\". - " +"Define the return due date as per librarian. - Inform the user about the " +"approval and due date." +msgstr "" +"**Схвалити запит на позику**: - Підтвердити наявність книги. - Змінити " +"статус книги на \"Позичена\". - Переключіть запит на позику на " +"\"Затверджено\". - Визначте дату повернення відповідно до побажань " +"бібліотекаря. - Повідомте користувача про схвалення та дату повернення." + +#: ../../src/spec/libms/index.rst:540 +msgid "" +"**Decline Borrow Request**: - Change borrow request status to " +"\"Declined\". - Optionally, procure decline reason from librarian. - " +"Notify user regarding the declination." +msgstr "" +"**Відхилити запит на позику**: - Змінити статус запиту на \"Відхилено\". - " +"За бажанням, запитайте причину відмови у бібліотекаря. - Повідомте " +"користувача про відхилення." + +#: ../../src/spec/libms/index.rst:545 +msgid "" +"**Complete Borrow Request**: - Ensure book's return. - Update book " +"status to \"Available\". - Toggle borrow request status to \"Completed\". " +"- If needed, record any notes or damages during return." +msgstr "" +"**Завершити запит на позику**: - Переконайтеся, що книга повернулася. - " +"Оновити статус книги до \"Доступна\". - Змінити статус запиту на " +"\"Виконано\". - Якщо потрібно, запишіть будь-які примітки або пошкодження " +"під час повернення." + +#: ../../src/spec/libms/index.rst:552 +msgid "" +"Implementing reminders for near-due borrow requests can function as an alert " +"system for both the librarian and the user." +msgstr "" +"Впровадження нагадувань про прострочені запити може функціонувати як система " +"оповіщення як для бібліотекаря, так і для користувача." From 02ea7df2fc8fac886bbf26dc0879aaf92122a49c Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Tue, 26 Dec 2023 23:55:40 +0200 Subject: [PATCH 8/9] Delete outdated translations --- src/_locales/uk/LC_MESSAGES/appx/blog/spec.po | 1224 ----------------- .../uk/LC_MESSAGES/appx/libms/spec.po | 1187 ---------------- .../LC_MESSAGES/spec/giver/_legacy/index.po | 330 ----- 3 files changed, 2741 deletions(-) delete mode 100644 src/_locales/uk/LC_MESSAGES/appx/blog/spec.po delete mode 100644 src/_locales/uk/LC_MESSAGES/appx/libms/spec.po delete mode 100644 src/_locales/uk/LC_MESSAGES/spec/giver/_legacy/index.po diff --git a/src/_locales/uk/LC_MESSAGES/appx/blog/spec.po b/src/_locales/uk/LC_MESSAGES/appx/blog/spec.po deleted file mode 100644 index 1a54bad42..000000000 --- a/src/_locales/uk/LC_MESSAGES/appx/blog/spec.po +++ /dev/null @@ -1,1224 +0,0 @@ -# Copyright (C) 2023, Python training course authors and contributors -# This file is distributed under the same license as the Python Training -# Course package. -# SERHII HORODILOV -msgid "" -msgstr "" -"Project-Id-Version: Python Training Course 2022.11.dev\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-17 23:49+0200\n" -"PO-Revision-Date: 2023-11-17 23:56+0200\n" -"Last-Translator: Serhii Horodilov \n" -"Language-Team: ua \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"Generated-By: Babel 2.13.1\n" -"X-Generator: Poedit 3.4.1\n" - -#: ../../src/appx/blog/spec.rst:10 -msgid "Blog Site" -msgstr "Сайт Блогу" - -#: ../../src/appx/blog/spec.rst:12 -msgid "" -"The project aims to develop a robust and user-friendly web application using " -"the Django framework. The primary objective is to create a blogging platform " -"that allows users to publish and manage articles on various topics. The " -"application will provide an intuitive interface for authors to compose and " -"format their articles, while also offering a seamless reading experience for " -"visitors." -msgstr "" -"Проект має на меті розробку міцного та зручного у використанні веб-додатка " -"за допомогою фреймворку Django. Основна мета полягає у створенні платформи " -"для блогів, яка дозволить користувачам публікувати та керувати статтями на " -"різні теми. Додаток надасть інтуїтивний інтерфейс авторам для створення та " -"форматування своїх статей, а також забезпечить безперешкодний досвід читання " -"для відвідувачів." - -#: ../../src/appx/blog/spec.rst:19 -msgid "**Key Features**" -msgstr "**Основні функції**" - -#: ../../src/appx/blog/spec.rst:22 -msgid "User Registration and Authentication" -msgstr "Реєстрація та Аутентифікація Користувачів" - -#: ../../src/appx/blog/spec.rst:23 -msgid "" -"The application will provide user registration and authentication " -"functionality, allowing individuals to create accounts, log in, and manage " -"their profile information. This feature will enable authors to have " -"personalized accounts and maintain ownership of their published articles." -msgstr "" -"Застосунок надасть функціональність реєстрації та аутентифікації " -"користувачів, дозволяючи індивідуумам створювати облікові записи, входити в " -"систему та керувати інформацією свого профілю. Ця функція дозволить авторам " -"мати персоналізовані облікові записи та зберігати право власності на їхні " -"опубліковані статті." - -#: ../../src/appx/blog/spec.rst:30 -msgid "Article Management" -msgstr "Керування Статтями" - -#: ../../src/appx/blog/spec.rst:31 -msgid "" -"Authors will have the ability to create, edit, and delete articles within " -"the application. The system will offer a user-friendly editor. Additionally, " -"authors will be able to categorize articles by assigning relevant topics to " -"them." -msgstr "" -"Автори матимуть можливість створювати, редагувати та видаляти статті в " -"рамках додатка. Система надасть зручний редактор. Крім того, автори зможуть " -"категоризувати статті, присвоюючи їм відповідні теми." - -#: ../../src/appx/blog/spec.rst:37 -msgid "Topic Subscription:" -msgstr "Підписка на Теми:" - -#: ../../src/appx/blog/spec.rst:38 -msgid "" -"The application will include a subscription feature that allows users to " -"subscribe to topics of interest. By subscribing to specific topics, users " -"will receive notifications or updates whenever new articles are published in " -"those categories. This feature will enhance user engagement and ensure that " -"readers stay informed about the topics they find most valuable." -msgstr "" -"Автори матимуть можливість створювати, редагувати та видаляти статті в " -"рамках додатка. Система надасть зручний редактор. Крім того, автори зможуть " -"категоризувати статті, присвоюючи їм відповідні теми." - -#: ../../src/appx/blog/spec.rst:45 -msgid "" -"Overall, the project aims to deliver an efficient blogging platform that " -"caters to both authors and readers. By providing a seamless user experience " -"and incorporating essential functionalities such as user authentication, " -"article management, and topic subscriptions, the application will empower " -"users to create, share, and explore engaging content within a well-" -"structured and organized platform." -msgstr "" -"Застосунок буде містити функцію підписки, яка дозволить користувачам " -"підписуватися на цікаві їм теми. Підписавшись на конкретні теми, користувачі " -"отримуватимуть повідомлення або оновлення кожного разу, коли в цих " -"категоріях будуть публікуватися нові статті. Ця функція покращить " -"залученість користувачів та забезпечить, що читачі будуть інформовані про " -"найцікавіші для них теми." - -#: ../../src/appx/blog/spec.rst:52 -msgid "" -"Here is a starter repository template, that may helps: `Starter template`_." -msgstr "" -"Ось шаблон стартового репозиторію, який може допомогти: `Starter template`_." - -#: ../../src/appx/blog/spec.rst:55 -msgid "Challenge: Functional views" -msgstr "Виклик: Функціональні представлення" - -#: ../../src/appx/blog/spec.rst:57 -msgid "" -"It's ok not to return **actual** content for now. Just ensure all the routes " -"are available and provide correct data. Use anything you like to return " -"within HTTP response." -msgstr "" -"Зараз немає потреби повертати **фактичний** вміст. Просто переконайтеся, що " -"всі маршрути доступні та надають правильні дані. Використовуйте будь-що, що " -"ви хочете повернути в HTTP-відповіді." - -#: ../../src/appx/blog/spec.rst:61 -msgid "" -"``/about/``: Provides a regular text for a user, describing the " -"functionalities of the django site." -msgstr "" -"``/about/``: надає звичайний текст для користувача, що описує функції сайту " -"django." - -#: ../../src/appx/blog/spec.rst:63 -msgid "" -"``/``: A site's homepage. This will contain a list of blogs published via " -"the django site." -msgstr "" -"``/``: Головна сторінка сайту. Тут буде перелік блогів, опублікованих через " -"сайт Django." - -#: ../../src/appx/blog/spec.rst:65 -msgid "" -"``/
/``: A single article detail view. The URL contains dynamic part " -"in it. This will be used to fetch a single article from the database." -msgstr "" -"``/
/``: Представлення деталей однієї статті. URL містить динамічну " -"частину. Вона буде використовуватися для отримання однієї статті з бази " -"даних." - -#: ../../src/appx/blog/spec.rst:68 -msgid "" -"``/
/comment/``: This view will be used to add comments to a article." -msgstr "" -"``/
/comment/``: Це представлення буде використовуватися для " -"додавання коментарів до статті." - -#: ../../src/appx/blog/spec.rst:70 -msgid "``/create/``: A article creation form." -msgstr "``/create/``: Форма створення статті." - -#: ../../src/appx/blog/spec.rst:71 -msgid "``/
/update/``: A view to update an existing article data." -msgstr "" -"``/
/update/``: Представлення для оновлення існуючих даних статті." - -#: ../../src/appx/blog/spec.rst:72 -msgid "``/
/delete/``: A view to confirm article deletion." -msgstr "" -"``/
/delete/``: Представлення для підтвердження видалення статті." - -#: ../../src/appx/blog/spec.rst:73 -msgid "``/topics/``: A list of topics available on the site." -msgstr "``/topics/``: Перелік доступних тем на сайті." - -#: ../../src/appx/blog/spec.rst:74 -msgid "" -"``/topics//add/``: Add the selected topic to preferred topics list." -msgstr "``/topics//add/``: Додати обрану тему до списку обраних тем." - -#: ../../src/appx/blog/spec.rst:75 -msgid "``/topics//remove/``: Removes the selected topic from preferred." -msgstr "``/topics//remove/``: Видаляє вибрану тему з обраних." - -#: ../../src/appx/blog/spec.rst:76 -msgid "``/topics//subscribe/``: A view to subscribe for a topic." -msgstr "``/topics//subscribe/``: Представлення для підписки на тему." - -#: ../../src/appx/blog/spec.rst:77 -msgid "``/topics//unsubscribe/``: A view to unsubscribe from a topic." -msgstr "``/topics//unsubscribe/``: Представлення для відписки від теми." - -#: ../../src/appx/blog/spec.rst:78 -msgid "``/profile//``: A site user's personal page." -msgstr "``/profile//``: Особиста сторінка користувача сайту." - -#: ../../src/appx/blog/spec.rst:79 -msgid "" -"``/set-password/``: This route will be used to change users' credential data." -msgstr "" -"``/set-password/``: Цей маршрут буде використовуватися для зміни облікових " -"даних користувачів." - -#: ../../src/appx/blog/spec.rst:81 -msgid "``/set-userdata/``: This route will be user to change users' data." -msgstr "" -"``/set-userdata/``: Цей маршрут буде використовуватися для зміни даних " -"користувачів." - -#: ../../src/appx/blog/spec.rst:82 -msgid "``/deactivate/``: Account deactivation (deletion) view." -msgstr "" -"``/deactivate/``: Представлення для деактивації облікового запису " -"(видалення)." - -#: ../../src/appx/blog/spec.rst:83 -msgid "``/register/``: This view contains a user registration form." -msgstr "``/register/``: Сторінка з формою для реєстрації нового користувача." - -#: ../../src/appx/blog/spec.rst:84 -msgid "``/login/``: This view contains a login form." -msgstr "``/login/``: Сторінка з формою для логіна." - -#: ../../src/appx/blog/spec.rst:85 -msgid "" -"``/logout/``: Logout page. This view should redirect user back to homepage." -msgstr "" -"``/logout/``: Логаут. Має перенаправляти користувача назад на домашню " -"сторінку.." - -#: ../../src/appx/blog/spec.rst:89 ../../src/appx/blog/spec.rst:201 -#: ../../src/appx/blog/spec.rst:231 ../../src/appx/blog/spec.rst:409 -msgid "Optional task(s)" -msgstr "Додаткові завдання" - -#: ../../src/appx/blog/spec.rst:91 -msgid "" -"``/archive///``: This view provides a list of articles " -"published on a specified month of a specified year. This view should apply " -"date validation and raise ``Http404`` for invalid paths. The valid date is a " -"year's 4-digits form followed by 1 or 2 digits representing month. Month " -"range should be limited as [1..12], leading zero may be omitted. Valid URLs " -"are:" -msgstr "" -"``/archive///``: Це представлення надає список статей, " -"опублікованих у певному місяці певного року. Це представлення повинно " -"застосовувати перевірку дати та викидати помилку ``Http404`` для " -"неприпустимих шляхів. Припустимою датою є 4-значний формат року, за яким " -"слідує 1 або 2 цифри, що представляють місяць. Діапазон місяця повинен бути " -"обмежений [1..12], ведучий нуль може бути пропущений. Приклади правильних " -"URL-адрес:" - -#: ../../src/appx/blog/spec.rst:105 -msgid "Challenge: Data models" -msgstr "Завдання: моделі даних" - -#: ../../src/appx/blog/spec.rst:108 -msgid "" -"Django admin may be used to create some dummy data. To gather access to " -"admin section you need to create a superuser. The easiest way to do that is " -"to use a django command:" -msgstr "" -"Для створення деяких фіктивних даних можна використовувати Django Admin. Щоб " -"отримати доступ до адміністративного розділу, вам потрібно створити " -"суперкористувача. Найпростіший спосіб зробити це - використовувати команду " -"Django:" - -#: ../../src/appx/blog/spec.rst:117 ../../src/appx/blog/spec.rst:218 -msgid "General" -msgstr "Основне" - -#: ../../src/appx/blog/spec.rst:118 -msgid "Each model will be registered for admin site." -msgstr "Кожна модель буде зареєстрована на сторінці адміністрації сайту." - -#: ../../src/appx/blog/spec.rst:121 ../../src/appx/blog/spec.rst:456 -msgid "Article topic" -msgstr "Тема статті" - -#: ../../src/appx/blog/spec.rst:122 -msgid "This is a simple model, that contains information about topic:" -msgstr "Ось проста модель, що містить інформацію про тему:" - -#: ../../src/appx/blog/spec.rst:124 -msgid "topic title (unique value, 64 characters or fewer)" -msgstr "назва теми (унікальне значення, не більше 64 символів)" - -#: ../../src/appx/blog/spec.rst:125 -msgid "topic short description (255 characters or fewer)" -msgstr "короткий опис теми (не більше 255 символів)" - -#: ../../src/appx/blog/spec.rst:128 ../../src/appx/blog/spec.rst:470 -msgid "Article" -msgstr "Стаття" - -#: ../../src/appx/blog/spec.rst:129 -msgid "Article requires title (255 characters or fewer)." -msgstr "Стаття вимагає наявності заголовка (не більше 255 символів)." - -#: ../../src/appx/blog/spec.rst:130 -msgid "Article requires content (at least 255 characters)." -msgstr "Стаття вимагає наявності змісту (принаймні 255 символів)." - -#: ../../src/appx/blog/spec.rst:131 -msgid "" -"Creation date should be autogenerated at article creation, and would never " -"be updated." -msgstr "" -"Дата створення буде автоматично генеруватися при створенні статті і не буде " -"оновлюватися пізніше." - -#: ../../src/appx/blog/spec.rst:133 -msgid "Updated date will be update at each article save." -msgstr "Дата оновлення буде оновлюватися при кожному збереженні статті." - -#: ../../src/appx/blog/spec.rst:136 ../../src/appx/blog/spec.rst:463 -msgid "Article comment" -msgstr "Коментар до статті" - -#: ../../src/appx/blog/spec.rst:137 -msgid "Comment requires creation date (autogenerated)." -msgstr "Коментар вимагає наявності дати створення (автоматично генерується)." - -#: ../../src/appx/blog/spec.rst:138 -msgid "Comment requires message text." -msgstr "Коментар вимагає наявності тексту повідомлення." - -#: ../../src/appx/blog/spec.rst:141 -msgid "Relationships" -msgstr "Відносини" - -#: ../../src/appx/blog/spec.rst:143 -msgid "" -"Standard Django user model **will be** used for now. To apply model " -"reference pass ``\"auth.User\"`` as related model. Users can be created via " -"admin page. You can also refer the same model as shown below:" -msgstr "" -"Стандартна модель користувача Django **буде** використовуватися наразі. Для " -"застосування посилання на модель передайте ``\"auth.User\"`` як пов'язану " -"модель. Користувачі можуть бути створені через адміністративну сторінку. Ви " -"також можете посилатися на ту саму модель, як показано нижче:" - -#: ../../src/appx/blog/spec.rst:156 -msgid "``article`` and ``topics`` have *many-to-many* relationship." -msgstr "``article`` та ``topics`` мають *багато-до-багатьох* відношення." - -#: ../../src/appx/blog/spec.rst:157 -msgid "" -"``article`` and ``user`` have *one-to-many* relationship. A article can have " -"**only one** author, but users can create as many articles as they want." -msgstr "" -"``article`` та ``user`` мають *один-до-багатьох* відношення. У статті може " -"бути **лише один** автор, але користувачі можуть створювати стільки статей, " -"скільки їм потрібно." - -#: ../../src/appx/blog/spec.rst:160 -msgid "" -"``article`` and ``comment`` have *one-to-many* relationship. A article may " -"be a container for many comments, but a comment is related to a single " -"article." -msgstr "" -"``article`` та ``comment`` мають *один-до-багатьох* відношення. Стаття може " -"бути контейнером для багатьох коментарів, але коментар пов'язаний лише з " -"однією статтею." - -#: ../../src/appx/blog/spec.rst:163 -msgid "" -"``comment`` and ``user`` have *one-to-many* relationship. It's similar to " -"*article - user* relationship." -msgstr "" -"``comment`` та ``user`` мають *один-до-багатьох* відношення. Це схоже на " -"відношення *стаття - користувач*." - -#: ../../src/appx/blog/spec.rst:165 -msgid "" -"``topic`` and ``user`` use *many-to-many* relationship. A single user can " -"prefer none or as many topics as needed and vice versa. This relationship " -"represents topics preferred by a certain blog user. Also this provides an " -"additional option to mark some of preferred topics with a **notify** flag, " -"to receive newsletters about specified topics updates. The difference " -"between *prefer* and *notify* is that *preferred* topics affect the articles " -"list for a user, and *notify* is responsible for newsletters for the user." -msgstr "" -"``topic`` та ``user`` використовують відношення *багато-до-багатьох*. Один " -"користувач може вибрати будь-яку кількість тем, і навпаки. Це відношення " -"представляє теми, які вибрані певним користувачем блогу. Крім того, це надає " -"додаткову опцію позначити деякі з вибраних тем прапорцем **notify**, щоб " -"отримувати розсилки про оновлення зазначених тем. Відмінність між *prefer* " -"(вибір) та *notify* (сповіщення) полягає в тому, що *prefer* впливає на " -"список статей для користувача, а *notify* відповідає за розсилку новин для " -"користувача." - -#: ../../src/appx/blog/spec.rst:176 -msgid "UML diagram" -msgstr "UML діаграми" - -#: ../../src/appx/blog/spec.rst:181 -msgid "Challenge: ORM" -msgstr "Завдання: ORM" - -#: ../../src/appx/blog/spec.rst:183 -msgid "" -"Update existing views to represent entities that are actually stored inside " -"the project's database." -msgstr "" -"Оновіть існуючі подання, щоб представити сутності, які фактично зберігаються " -"в базі даних проекту." - -#: ../../src/appx/blog/spec.rst:186 -msgid "``/``: should represent a list of existing articles." -msgstr "``/``: повинен представляти список існуючих статей." - -#: ../../src/appx/blog/spec.rst:187 -msgid "``/
/``: should represent a single existing article." -msgstr "``/
/``: повинен представляти окрему існуючу статтю." - -#: ../../src/appx/blog/spec.rst:188 -msgid "Detail view should obtain a list of article related comments." -msgstr "" -"Вью для перегляду окремої статті повинен отримувати зв'язані коментарі." - -#: ../../src/appx/blog/spec.rst:189 -msgid "" -"``/profile//``: should contain information about user and a " -"list of articles authored by this user." -msgstr "" -"``/profile//``: повинен містити інформацію про користувача та " -"список статей, написаних цим користувачем." - -#: ../../src/appx/blog/spec.rst:191 -msgid "" -"All views related to a single entity (*detail*, *update*, *delete*, " -"*profile*) should raise ``Http404`` in case entity could not be fetched." -msgstr "" -"Усі ресурси, пов'язані з окремою сутністю (*деталі*, *оновлення*, " -"*видалення*, *профіль*) мають викликати ``Http404`` у випадку, якщо сутність " -"не вдалося отримати." - -#: ../../src/appx/blog/spec.rst:196 -msgid "" -"It's common to store dedicated functions/classes that supports some specific " -"business logic in a separate module called ``services.py`` or ``utils.py`` " -"within an application directory." -msgstr "" -"Звичайно, функції/класи, що підтримують певну специфічну бізнес-логіку, " -"розумно зберігати в окремому модулі з назвою ``services.py`` або ``utils." -"py`` всередині директорії додатку." - -#: ../../src/appx/blog/spec.rst:203 -msgid "" -"Create a service to fetch articles, ordered by a specified user preferences. " -"This means, topics preferred by a user affects articles orders. Queryset " -"should be ordered in way, to have articles with most corresponding topics at " -"the begging." -msgstr "" -"Створіть сервіс для того, щоб отримувати статі у вигляді відсортованому " -"згідно вподобань зазначеного користувача. Це означає, що чим більше тем " -"зазначених у статті співпадає з вподобаннями користувача, тим ближче вона до " -"початку видачі." - -#: ../../src/appx/blog/spec.rst:209 -msgid "Challenge: Templates" -msgstr "Завдання: Шаблони" - -#: ../../src/appx/blog/spec.rst:212 -msgid "Helpful link: `Bootstrap template`_" -msgstr "Корисне посилання: `Bootstrap template`_" - -#: ../../src/appx/blog/spec.rst:215 -msgid "Links related to user data **may be** placeholders for now." -msgstr "" -"Посилання, що стосуються даних користувача, **можуть бути** плейсхолдерами " -"наразі." - -#: ../../src/appx/blog/spec.rst:219 -msgid "**All** templates should be inherited from the ``base.html`` template." -msgstr "**Усі** шаблони повинні успадковувати ``base.html`` шаблон." - -#: ../../src/appx/blog/spec.rst:220 -msgid "" -"Each page has a descriptive title HTML tag, which included ``| Blog`` " -"suffix, e.g. \"Articles | Blogs\", \"Sample | Blog\", \"Login | Blog\" etc." -msgstr "" -"Кожна сторінка має описовий тег HTML заголовка, включаючи суфікс ``| Blog``, " -"наприклад, \"Articles | Blogs\", \"Sample | Blog\", \"Login | Blog\" і т.д." - -#: ../../src/appx/blog/spec.rst:222 -msgid "Each page should contain a link to homepage (``/`` URL route)." -msgstr "" -"Кожна сторінка повинна містити посилання на головну сторінку (шлях URL ``/" -"``)." - -#: ../../src/appx/blog/spec.rst:223 -msgid "" -"Each page contains a list of registered topics. Each view of this kind " -"filters only articles of a relevant topic. This should be implemented with a " -"custom template context processor." -msgstr "" -"Кожна сторінка містить список зареєстрованих тем. Кожне представлення цього " -"типу фільтрує лише статті відповідної теми. Це слід реалізувати за допомогою " -"власного обробника контексту шаблону (template context processor)." - -#: ../../src/appx/blog/spec.rst:226 -msgid "Replace content block for *about* page with some static content." -msgstr "" -"Замініть блок вмісту (content block) для сторінки *about* на деякий " -"статичний вміст." - -#: ../../src/appx/blog/spec.rst:227 -msgid "" -"Application-level templates should be located within appropriate " -"applications." -msgstr "Шаблони рівня застосунків розташовуватися у відповідних застосунках." - -#: ../../src/appx/blog/spec.rst:233 -msgid "" -"Each page should contain a list of links to archive views for the last year." -msgstr "" -"Кожна сторінка має містити список посилань на перегляди архіву за останній " -"рік." - -#: ../../src/appx/blog/spec.rst:235 -msgid "Each page should contain an inclusion-block(s) with following links:" -msgstr "Кожна сторінка повинна містити блок(и) включення з такими посиланнями:" - -#: ../../src/appx/blog/spec.rst:237 -msgid "``/registration/``: new user registration form" -msgstr "``/register/``: форма реєстрації нового користувача" - -#: ../../src/appx/blog/spec.rst:238 -msgid "``/login/``: user login form" -msgstr "``/login/``: форма логіна користувача" - -#: ../../src/appx/blog/spec.rst:239 -msgid "``/create/``: article creation page" -msgstr "``/create/``: форма створення статті" - -#: ../../src/appx/blog/spec.rst:242 -msgid "Articles list" -msgstr "Список статей" - -#: ../../src/appx/blog/spec.rst:243 -msgid "Main page contains a list of published articles." -msgstr "Головна сторінка містить список опублікованих статей." - -#: ../../src/appx/blog/spec.rst:244 -msgid "Each article entity is rendered using a custom template tag." -msgstr "" -"Кожен елемент статті відображається за допомогою власного шаблонного тегу." - -#: ../../src/appx/blog/spec.rst:245 -msgid "``article`` template tag renders information about a article object:" -msgstr "Шаблонний тег ``article`` відображає інформацію про об'єкт статті:" - -#: ../../src/appx/blog/spec.rst:247 -msgid "article title" -msgstr "заголовок статті" - -#: ../../src/appx/blog/spec.rst:248 -msgid "article content (trimmed to ~50 characters)" -msgstr "зміст статті (обрізаний до ~50 символів)" - -#: ../../src/appx/blog/spec.rst:249 -msgid "article creation date" -msgstr "дата створення статті" - -#: ../../src/appx/blog/spec.rst:250 -msgid "related topics (3 topics or fewer)" -msgstr "пов'язані теми (3 або менше)" - -#: ../../src/appx/blog/spec.rst:251 -msgid "number of related comments" -msgstr "кількість коментарів до статті" - -#: ../../src/appx/blog/spec.rst:258 -msgid "Article details" -msgstr "Деталі статті" - -#: ../../src/appx/blog/spec.rst:260 -msgid "Article update and deletion views **would not** affect data for now." -msgstr "Оновлення та видалення статей **не будуть** впливати на дані наразі." - -#: ../../src/appx/blog/spec.rst:262 -msgid "" -"A article detail page contains links to **update** or **delete** current " -"article." -msgstr "" -"На сторінці деталей статті мають бути посилання на **оновлення** або " -"**видалення** поточної статті." - -#: ../../src/appx/blog/spec.rst:264 -msgid "Page provides information about article:" -msgstr "Сторінка надає інформацію про статтю:" - -#: ../../src/appx/blog/spec.rst:266 -msgid "Article title" -msgstr "Заголовок статті" - -#: ../../src/appx/blog/spec.rst:267 -msgid "Creation date" -msgstr "Дата створення" - -#: ../../src/appx/blog/spec.rst:268 ../../src/appx/blog/spec.rst:275 -msgid "Author name" -msgstr "Ім'я автора" - -#: ../../src/appx/blog/spec.rst:269 -msgid "Related topics" -msgstr "Пов'язані теми" - -#: ../../src/appx/blog/spec.rst:270 -msgid "Article content" -msgstr "Вміст статті" - -#: ../../src/appx/blog/spec.rst:272 -msgid "Page contains a list of related comments." -msgstr "Сторінка містить список пов'язаних коментарів." - -#: ../../src/appx/blog/spec.rst:273 -msgid "Each comment contains:" -msgstr "Кожен коментар містить:" - -#: ../../src/appx/blog/spec.rst:276 -msgid "Comment creation time" -msgstr "Час створення коментаря" - -#: ../../src/appx/blog/spec.rst:277 -msgid "Comment message" -msgstr "Текст комментаря" - -#: ../../src/appx/blog/spec.rst:280 -msgid "Profile page" -msgstr "Строніка профілю" - -#: ../../src/appx/blog/spec.rst:281 -msgid "Author page contains information about author:" -msgstr "Сторінка автора містить інформацію про автора:" - -#: ../../src/appx/blog/spec.rst:283 -msgid "First name" -msgstr "Ім'я" - -#: ../../src/appx/blog/spec.rst:284 -msgid "Last name" -msgstr "Прізвище" - -#: ../../src/appx/blog/spec.rst:286 -msgid "Add more information, if needed." -msgstr "Додайте більше інформації за бажанням." - -#: ../../src/appx/blog/spec.rst:288 -msgid "Author page contains a list of articles created by this author." -msgstr "Сторінка автора містить список статей, створених цим автором." - -#: ../../src/appx/blog/spec.rst:289 -msgid "" -"Author page contains buttons/links to change user data and password or " -"deactivate a user's account." -msgstr "" -"Сторінка автора містить кнопки/посилання для зміни користувача та пароля або " -"деактивації облікового запису користувача." - -#: ../../src/appx/blog/spec.rst:293 -msgid "Forms" -msgstr "Форми" - -#: ../../src/appx/blog/spec.rst:295 -msgid "" -"There is **no need** to add actual forms now. They will be generated by " -"Django. This section describes the final view of these pages. It's ok just " -"to create a dedicated templates for future use." -msgstr "" -"Наразі **немає потреби** додавати фактичні форми. Вони будуть створені " -"Django. Цей розділ описує кінцевий вигляд цих сторінок. Для майбутнього " -"використання достатньо створити окремі шаблони." - -#: ../../src/appx/blog/spec.rst:299 -msgid "" -"``/register/`` page contains a new user registration form. It should take " -"inputs from the user:" -msgstr "" -"Сторінка ``/register/`` містить форму реєстрації нового користувача. Вона " -"повинна отримувати введені дані від користувача:" - -#: ../../src/appx/blog/spec.rst:302 ../../src/appx/blog/spec.rst:310 -msgid "username" -msgstr "username" - -#: ../../src/appx/blog/spec.rst:303 -msgid "email" -msgstr "email" - -#: ../../src/appx/blog/spec.rst:304 ../../src/appx/blog/spec.rst:311 -msgid "password" -msgstr "password" - -#: ../../src/appx/blog/spec.rst:305 ../../src/appx/blog/spec.rst:324 -msgid "confirm password" -msgstr "confirm password" - -#: ../../src/appx/blog/spec.rst:307 -msgid "" -"``/login/`` page contains a user login form. It should take the inputs from " -"the user:" -msgstr "" -"Сторінка ``/login/`` містить форму входу користувача. Вона повинна " -"отримувати введені дані від користувача:" - -#: ../../src/appx/blog/spec.rst:313 -msgid "" -"``/create/`` and ``/
/update/`` pages contain a form to collect a " -"article's data:" -msgstr "" -"Сторінки ``/create/`` та ``/
/update/`` містять форму для збору " -"даних статті:" - -#: ../../src/appx/blog/spec.rst:316 -msgid "title" -msgstr "title" - -#: ../../src/appx/blog/spec.rst:317 -msgid "relevant topics" -msgstr "відповідні теми" - -#: ../../src/appx/blog/spec.rst:318 -msgid "content" -msgstr "content" - -#: ../../src/appx/blog/spec.rst:320 -msgid "``/
/delete`` page contains a simple delete confirmation form." -msgstr "" -"Сторінка ``/
/delete`` містить просту форму для підтвердження " -"видалення." - -#: ../../src/appx/blog/spec.rst:321 -msgid "Change password form has two fields:" -msgstr "Форма зміни пароля має два поля:" - -#: ../../src/appx/blog/spec.rst:323 -msgid "new password" -msgstr "new password" - -#: ../../src/appx/blog/spec.rst:326 -msgid "" -"Change user's data form collects all information, that can be changed, e.g. " -"``username``, ``first name``, ``last name`` etc." -msgstr "" -"Форма зміни даних користувача збирає всю інформацію, яка може бути змінена, " -"наприклад, ``username``, ``first name``, ``last name`` та інше." - -#: ../../src/appx/blog/spec.rst:328 -msgid "" -"User preferences page contains a list of available topics. User can mark " -"some topics as preferred. Also for preferred topics an option to *subscribe* " -"for the newsletters becomes available." -msgstr "" -"Сторінка налаштувань користувача містить список доступних тем. Користувач " -"може відмітити деякі теми як пріоритетні (переваги). Також для пріоритетних " -"тем стає доступною опція *підписки* на розсилку новинних листів." - -#: ../../src/appx/blog/spec.rst:333 -msgid "Challenge: Articles' slugs" -msgstr "Виклик: Slug-и статей" - -#: ../../src/appx/blog/spec.rst:336 -msgid "This is an optional challenge in addition to:" -msgstr "Це додатковий виклик у додаток до:" - -#: ../../src/appx/blog/spec.rst:338 -msgid "`Challenge: Functional views`_" -msgstr "`Challenge: Functional views`_" - -#: ../../src/appx/blog/spec.rst:339 -msgid "`Challenge: Templates`_" -msgstr "`Challenge: Templates`_" - -#: ../../src/appx/blog/spec.rst:340 -msgid "`Challenge: Data models`_" -msgstr "`Challenge: Data models`_" - -#: ../../src/appx/blog/spec.rst:341 -msgid "`Challenge: ORM`_" -msgstr "`Challenge: ORM`_" - -#: ../../src/appx/blog/spec.rst:343 -msgid "Update ``Article`` model with ``slug`` field. The slug value is:" -msgstr "" -"Оновіть модель ``Article``, додавши поле ``slug``. Значення slug поля є:" - -#: ../../src/appx/blog/spec.rst:345 -msgid "required for each article" -msgstr "обов'язкове для кожної статті" - -#: ../../src/appx/blog/spec.rst:346 -msgid "unique for each article" -msgstr "унікальне для кожної статті" - -#: ../../src/appx/blog/spec.rst:348 -msgid "Create a data migration to provide slugs for existing articles." -msgstr "Створіть міграцію даних для надання slug-ів існуючим статтям." - -#: ../../src/appx/blog/spec.rst:349 -msgid "" -"``slug`` should be auto-generated on article save. The pattern is ``article." -"title-article.created_date``, e.g. \"Sample article\" created at " -"\"03/24/2023\" should receive slug: ``sample-article-2023-03-24``." -msgstr "" -"Поле ``slug`` повинно автоматично генеруватися при збереженні статті. Шаблон " -"для генерації поля ``slug``: ``назва-статті-дата-створення-статті``, " -"наприклад, стаття з назвою \"Sample article\", створена \"24/03/2023\", " -"отримає slug: ``sample-article-2023-03-24``." - -#: ../../src/appx/blog/spec.rst:353 -msgid "Update detail view URL path with article slug as dynamic portion." -msgstr "" -"Оновіть шлях URL для представлення деталей статті з динамічною частиною, " -"якою буде slug статті." - -#: ../../src/appx/blog/spec.rst:356 -msgid "Challenge: Auth forms" -msgstr "Завдання: форми авторизації" - -#: ../../src/appx/blog/spec.rst:358 -msgid "Create form for new users registration with required fields:" -msgstr "" -"Створити форму для реєстрації нових користувачів із обов'язковими полями:" - -#: ../../src/appx/blog/spec.rst:360 -msgid "``username``" -msgstr "``username``" - -#: ../../src/appx/blog/spec.rst:361 -msgid "``email``" -msgstr "``email``" - -#: ../../src/appx/blog/spec.rst:362 -msgid "``password``" -msgstr "``password``" - -#: ../../src/appx/blog/spec.rst:363 -msgid "``confirm password``" -msgstr "``confirm password``" - -#: ../../src/appx/blog/spec.rst:365 -msgid "``username`` value should be validated against existing values." -msgstr "" -"Значення ``username`` повинно перевірятися на відповідність існуючим " -"значенням." - -#: ../../src/appx/blog/spec.rst:366 -msgid "``password`` and ``confirm password`` values should match." -msgstr "Значення ``password`` і ``confirm password`` мають збігатися." - -#: ../../src/appx/blog/spec.rst:367 -msgid "Create form for existing users login." -msgstr "Створити форму для входу існуючих користувачів." - -#: ../../src/appx/blog/spec.rst:368 -msgid "Validations errors are to be rendered on the template." -msgstr "Помилки перевірки повинні відображатися на шаблоні." - -#: ../../src/appx/blog/spec.rst:371 -msgid "Challenge: Authentication" -msgstr "Завдання: Автентифікація" - -#: ../../src/appx/blog/spec.rst:373 -msgid "" -"For anonymous users ``/register/`` and ``/login/`` links should be visible " -"in navbar." -msgstr "" -"Для анонімних користувачів посилання ``/register/`` і ``/login/`` мають бути " -"видимими на панелі навігації." - -#: ../../src/appx/blog/spec.rst:375 -msgid "" -"For authenticated users ``/logout/`` and ``/create/`` links should be " -"visible in navbar." -msgstr "" -"Для автентифікованих користувачів посилання ``/logout/`` і ``/create/`` " -"мають бути видимими на панелі навігації." - -#: ../../src/appx/blog/spec.rst:377 -msgid "" -"If authenticated user is admin or stuff they should see a link to admin page." -msgstr "" -"Якщо автентифікований користувач є адміністратором або іншим, він має " -"побачити посилання на сторінку адміністратора." - -#: ../../src/appx/blog/spec.rst:379 -msgid "" -"``/register/``: Users should provide all required information about them: " -"desired username and email. Name data (both first and last) is optional. " -"After user creation they should be redirected to login page to perform " -"authentication process. Invalid form should provide information about " -"error(s)." -msgstr "" -"``/register/``: користувачі повинні надати всю необхідну інформацію про " -"себе: бажане ім'я користувача та електронну адресу. Дані імені (ім'я та " -"прізвище) необов'язкові. Після створення користувача вони повинні бути " -"перенаправлені на сторінку входу для виконання процесу автентифікації. " -"Недійсна форма повинна надавати інформацію про помилку(и)." - -#: ../../src/appx/blog/spec.rst:384 -msgid "" -"``/login/``: Users should provide their credentials to login. In case login " -"is successful they should be redirected to their profile (if no ``?" -"next=url`` query string available)." -msgstr "" -"``/login/``: користувачі повинні надати свої облікові дані для входу. У разі " -"успішного входу вони повинні бути перенаправлені до свого профілю (якщо " -"немає рядка запиту ``?next=url``)." - -#: ../../src/appx/blog/spec.rst:387 -msgid "" -"``/create/``: Only authenticated users should be able to visit this page. In " -"case anonymous user is trying to request this view they should be redirected " -"to the login view first, and after successful authentication get back to " -"article creation. Then a article is created, it should be authored by the " -"currently authenticated user." -msgstr "" -"``/create/``: Лише аутентифіковані користувачі повинні мати доступ до цієї " -"сторінки. Якщо анонімний користувач намагається отримати доступ до цього " -"представлення, його повинно перенаправити спочатку на сторінку входу, а " -"після успішної аутентифікації повернути на сторінку створення статті. При " -"створенні статті вона повинна мати автором поточного аутентифікованого " -"користувача." - -#: ../../src/appx/blog/spec.rst:392 -msgid "" -"``/
/comment/``: Currently authenticated user should be referenced " -"as a comment's author." -msgstr "" -"``/
/comment/``: У коментарі поточного аутентифікованого користувача " -"повинна бути зазначена його ідентифікація як автора." - -#: ../../src/appx/blog/spec.rst:394 -msgid "" -"Articles may be modified or deleted only by their authors from the detail " -"article page. However, admins can still performs articles actions from the " -"admin page." -msgstr "" -"Змінювати або видаляти статті можуть тільки їх автори на сторінці деталей " -"статті. Однак адміністратори все ще можуть виконувати дії зі статтями через " -"адміністративну сторінку." - -#: ../../src/appx/blog/spec.rst:397 -msgid "User related paths are restricted for non-authorized users." -msgstr "" -"Шляхи, пов'язані з користувачем, обмежені для неаутентифікованих " -"користувачів." - -#: ../../src/appx/blog/spec.rst:399 -msgid "``/set-password/``" -msgstr "``/set-password/``" - -#: ../../src/appx/blog/spec.rst:400 -msgid "``/set-userdata/``" -msgstr "``/set-userdata/``" - -#: ../../src/appx/blog/spec.rst:402 -msgid "" -"``POST`` request ``/deactivate/`` should mark current authenticated user as " -"*deleted* and log them user." -msgstr "" -"Запит ``POST`` на ``/deactivate/`` повинен позначати поточного " -"аутентифікованого користувача як *видаленого* і виходити з системи для цього " -"користувача." - -#: ../../src/appx/blog/spec.rst:404 -msgid "" -"Authenticated users should be able to adjust their preferred topics lists." -msgstr "" -"Авторизовані користувачі повинні мати можливість налаштовувати свої списки " -"обраних тем." - -#: ../../src/appx/blog/spec.rst:405 -msgid "" -"Authenticated users should be able to **subscribe** or **unsubscribe** for a " -"selected topic." -msgstr "" -"Авторизовані користувачі повинні мати можливість **підписатися** або " -"**відписатися** на обрану тему." - -#: ../../src/appx/blog/spec.rst:411 -msgid "" -"Adjust the order of article list according to authenticated user " -"preferences. For anonymous users keep default ordering." -msgstr "" -"Призначте зміну порядку списку статей відповідно до вподобань " -"аутентифікованого користувача. Для анонімних користувачів залиште типове " -"сортування за замовчуванням." - -#: ../../src/appx/blog/spec.rst:413 -msgid "" -"Implement account reactivation behavior. The exact workflow does not mater. " -"The sample scenario is to collect email for the user and check it for " -"existing in the database. After that create a request for admin to activate " -"an account and send a confirmation email, when all is done." -msgstr "" -"Реалізуйте поведінку щодо відновлення облікового запису. Точний порядок дій " -"не має значення. Один зі зразків сценаріїв може полягати у зборі електронної " -"пошти користувача та перевірки наявності цієї адреси в базі даних. Після " -"цього створіть запит для адміністратора на активацію облікового запису та " -"надішліть підтверджувальний лист електронною поштою, коли все буде готово." - -#: ../../src/appx/blog/spec.rst:419 -msgid "Challenge: Article related forms" -msgstr "Виклик: Форми пов'язані зі статтями" - -#: ../../src/appx/blog/spec.rst:421 -msgid "" -"Implement a article form. This form will be used to create new articles and " -"to update existing ones." -msgstr "" -"Реалізуйте форму статті. Ця форма буде використовуватися для створення нових " -"статей та оновлення існуючих." - -#: ../../src/appx/blog/spec.rst:423 -msgid "Each created article should have at least one related topic." -msgstr "Кожна створена стаття повинна мати принаймні одну пов'язану тему." - -#: ../../src/appx/blog/spec.rst:424 -msgid "Implement a comment form to gather a comment from a user." -msgstr "Реалізуйте форму коментаря, щоб збирати коментарі від користувача." - -#: ../../src/appx/blog/spec.rst:425 -msgid "" -"Only ``POST`` requests to ``/
/comment/`` are allowed from this " -"moment." -msgstr "" -"З даного моменту дозволені лише запити типу ``POST`` до ``/
/comment/" -"``." - -#: ../../src/appx/blog/spec.rst:427 -msgid "Implement functionality:" -msgstr "Реалізуйте функціональність:" - -#: ../../src/appx/blog/spec.rst:429 -msgid "article creation" -msgstr "створення статті" - -#: ../../src/appx/blog/spec.rst:430 -msgid "article update" -msgstr "оновлення статті" - -#: ../../src/appx/blog/spec.rst:431 -msgid "article comment (create a related comment)" -msgstr "коментування статті (створення коментаря)" - -#: ../../src/appx/blog/spec.rst:432 -msgid "article deletion" -msgstr "видалення статті" - -#: ../../src/appx/blog/spec.rst:434 -msgid "Only authenticated users can create articles." -msgstr "Лише аутентифіковані користувачі можуть створювати статі." - -#: ../../src/appx/blog/spec.rst:435 -msgid "Article can be edited only by its author." -msgstr "Стаття може редагуватись лише її автором." - -#: ../../src/appx/blog/spec.rst:436 -msgid "Article can be deleted only by its author." -msgstr "Стаття може видалятись лише її автором." - -#: ../../src/appx/blog/spec.rst:437 -msgid "Only authenticated users can comment articles." -msgstr "Лише аутентифіковані користувачі можуть коментувати статті." - -#: ../../src/appx/blog/spec.rst:444 -msgid "Challenge: Class-Based Views" -msgstr "Завдання: Class-Based Views" - -#: ../../src/appx/blog/spec.rst:446 -msgid "Replace **all** existing views via ``CBV``." -msgstr "Замінити **всі** існуючі перегляди через ``CBV``." - -#: ../../src/appx/blog/spec.rst:447 -msgid "Existing functionality should not be corrupted." -msgstr "Існуюча функціональність не повинна бути пошкоджена." - -#: ../../src/appx/blog/spec.rst:450 -msgid "It's ok to use built-in Django CBV if needed." -msgstr "" -"Якщо потрібно, можна використовувати вбудовані класи відображення у Django " -"(CBV)." - -#: ../../src/appx/blog/spec.rst:453 -msgid "Challenge: Serializers" -msgstr "Завдання: Серіалізатори" - -#: ../../src/appx/blog/spec.rst:457 -msgid "" -"Topic serializer is for read-only purposes only. Topics can be created via " -"admin page only." -msgstr "" -"Серіалізатор для теми призначений лише для операцій читання (read-only). " -"Теми можна створювати лише через адміністративну сторінку." - -#: ../../src/appx/blog/spec.rst:459 -msgid "" -"Serialized data should contain all available data, e.g. ``pk``, ``title``, " -"``description``." -msgstr "" -"Серіалізовані дані повинні містити всю доступну інформацію, наприклад, " -"``pk``, ``title``, ``description``." - -#: ../../src/appx/blog/spec.rst:464 -msgid "" -"article comment serializer can perform both reading and writing operations. " -"But it can't be used to *update* or *delete* comment." -msgstr "" -"серіалізатор коментаря статті може виконувати як операції читання, так і " -"операції запису. Проте він не може використовуватися для оновлення або " -"видалення коментаря." - -#: ../../src/appx/blog/spec.rst:466 -msgid "" -"Random, or pre-defined user may be used as comment's author for now. This " -"will be fixed in the future." -msgstr "" -"Наразі можна використовувати випадкового або попередньо визначеного " -"користувача як автора коментаря. Це буде виправлено у майбутньому." - -#: ../../src/appx/blog/spec.rst:471 -msgid "" -"article serializer provides full access to articles. All operations are " -"available: list, retrieve, create, update and destroy." -msgstr "" -"серіалізатор статей надає повний доступ до статей. Доступні всі операції: " -"отримання списку, отримання окремої статті, створення нової статті, " -"оновлення та видалення." - -#: ../../src/appx/blog/spec.rst:475 -msgid "User" -msgstr "Користувач" - -#: ../../src/appx/blog/spec.rst:476 -msgid "" -"User serializer provides full access to site users data. All operations are " -"available for now: list, retrieve, create, update and destroy. This behavior " -"will be fixed in the future, to prevent unauthorized data modifications." -msgstr "" -"Серіалізатор користувача надає повний доступ до даних користувачів сайту. " -"Усі операції доступні наразі: отримання списку користувачів, отримання " -"окремого користувача, створення нового користувача, оновлення та видалення. " -"Однак, ця поведінка буде виправлена у майбутньому для запобігання " -"несанкціонованим змінам даних." - -#: ../../src/appx/blog/spec.rst:482 -msgid "Challenge: API views" -msgstr "Завдання: API views" - -#: ../../src/appx/blog/spec.rst:484 -msgid "All blog-site functionality are to be mirrored via REST API." -msgstr "" -"Вся функціональність сайту повинна бути відображена за допомогою REST API." - -#: ../../src/appx/blog/spec.rst:487 -msgid "" -"It's ok to pass *pre-defined* user as argument in request's body. This will " -"be fixed in the next challenge." -msgstr "" -"Наразі дозволяється передавати *наперед визначеного* користувача у тілі " -"запиту. Це буде виправлено у наступному розділі." - -#: ../../src/appx/blog/spec.rst:491 -msgid "Challenge: Authentication and Permissions" -msgstr "Завдання: Автентифікація та Дозволи" - -#: ../../src/appx/blog/spec.rst:493 -msgid "Implement authentication system for REST API." -msgstr "Реалізуйте систему аутентифікації для REST API." - -#: ../../src/appx/blog/spec.rst:495 -msgid "For non-authenticated users it is possible to create a new account" -msgstr "" -"Для неаутентифікованих користувачів можлива створення нового облікового " -"запису" - -#: ../../src/appx/blog/spec.rst:496 -msgid "" -"For non-authenticated users it is possible to obtain authentication data." -msgstr "" -"Для неаутентифікованих користувачів можлива отримання даних аутентифікації." - -#: ../../src/appx/blog/spec.rst:499 -msgid "" -"Access to user data is restricted. Authorized users can manipulate only " -"their own data (e.g. ``retrieve``, ``update``)." -msgstr "" -"Доступ до даних користувача обмежений. Авторизовані користувачі можуть " -"маніпулювати лише своїми власними даними (наприклад, ``retrieve``, " -"``update``)." - -#: ../../src/appx/blog/spec.rst:501 -msgid "" -"Admins can retrieve all users data (``list``), but can't change them via " -"REST API. However, it is still possible via admin page." -msgstr "" -"Адміністратори можуть отримати дані всіх користувачів (``list``), але не " -"можуть змінювати їх через REST API. Однак це все ще можливо через " -"адміністративну сторінку." - -#: ../../src/appx/blog/spec.rst:503 -msgid "" -"Authorized users can ``create`` articles or ``update`` and ``delete`` " -"articles created by them." -msgstr "" -"Авторизовані користувачі можуть ``create`` статті або ``update`` та " -"``delete`` статті, створені ними." - -#: ../../src/appx/blog/spec.rst:505 -msgid "Authorized users can add comments to a specified article." -msgstr "Авторизовані користувачі можуть додавати коментарі до вказаної статті." - -#: ../../src/appx/blog/spec.rst:506 -msgid "Authorized users can adjust their topics preferences." -msgstr "" -"Авторизовані користувачі можуть налаштовувати свої уподобання щодо тем." diff --git a/src/_locales/uk/LC_MESSAGES/appx/libms/spec.po b/src/_locales/uk/LC_MESSAGES/appx/libms/spec.po deleted file mode 100644 index e131f1d55..000000000 --- a/src/_locales/uk/LC_MESSAGES/appx/libms/spec.po +++ /dev/null @@ -1,1187 +0,0 @@ -# Copyright (C) 2023, Python training course authors and contributors -# This file is distributed under the same license as the Python Training -# Course package. -# SERHII HORODILOV -msgid "" -msgstr "" -"Project-Id-Version: Python Training Course 2022.11.dev\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-05 19:49+0300\n" -"PO-Revision-Date: 2023-10-05 20:06+0300\n" -"Last-Translator: Serhii Horodilov \n" -"Language-Team: ua \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"Generated-By: Babel 2.13.0\n" -"X-Generator: Poedit 3.4\n" - -#: ../../src/appx/libms/spec.rst:3 -msgid "Library Management System" -msgstr "Система Керування Бібліотекою" - -#: ../../src/appx/libms/spec.rst:5 -msgid "" -"The Library Management System is a Django-based web application that offers " -"a digital platform for managing and interacting with a library's collection. " -"It streamlines the processes of book lending, returns, and inventory " -"management, while ensuring easy access for users and librarians alike. " -"Through this system, users can search for available books, place borrowing " -"requests, and manage their borrowed items. Librarians, on the other hand, " -"oversee the addition, update, and removal of book records, and can approve " -"or decline borrowing requests. The system also supports diverse user roles, " -"from regular members to staff and administrators, each with distinct " -"capabilities." -msgstr "" -"Система Керування Бібліотекою є веб-застосуванням на базі Django, яке " -"пропонує цифрову платформу для управління та взаємодії з колекцією " -"бібліотеки. Вона оптимізує процеси надання книг, повернення та управління " -"інвентарем, забезпечуючи легкий доступ як для користувачів, так і для " -"бібліотекарів. За допомогою цієї системи користувачі можуть шукати доступні " -"книги, робити запити на позику та керувати позиченими предметами. " -"Бібліотекарі, з свого боку, контролюють додавання, оновлення та видалення " -"записів книг та можуть схвалювати або відхиляти запити на позику. Система " -"також підтримує різноманітні ролі користувачів, від звичайних членів до " -"персоналу та адміністраторів, кожен з яких має відмінні можливості." - -#: ../../src/appx/libms/spec.rst:15 -msgid "" -"A well-structured user interface ensures that all functionalities are easily " -"accessible, making the library management process seamless and efficient. " -"This project aims to merge traditional library functions with modern " -"technological innovations, promoting efficiency and an enhanced user " -"experience." -msgstr "" -"Добре структурований користувацький інтерфейс забезпечує легкий доступ до " -"всіх функцій, роблячи процес управління бібліотекою безперешкодним та " -"ефективним. Цей проект має на меті об'єднати традиційні бібліотечні функції " -"з сучасними технологічними інноваціями, сприяючи підвищенню ефективності та " -"покращенню користувацького досвіду." - -#: ../../src/appx/libms/spec.rst:22 -msgid "User roles" -msgstr "Ролі користувачів" - -#: ../../src/appx/libms/spec.rst:25 -msgid "" -"It is essential for developers to consider security aspects when " -"implementing these roles to ensure that users cannot perform actions outside " -"their designated role's scope." -msgstr "" -"Розробникам важливо враховувати аспекти безпеки при впровадженні цих ролей, " -"щоб гарантувати, що користувачі не зможуть виконувати дії, які виходять за " -"рамки призначеної їм ролі." - -#: ../../src/appx/libms/spec.rst:30 -msgid "Admins" -msgstr "Адміністратори" - -#: ../../src/appx/libms/spec.rst:32 -msgid "" -"Superusers have full control over the entire system. They can access and " -"manage all functionalities provided by the Django admin site." -msgstr "" -"Адміністратори мають повний контроль над усією системою. Вони можуть " -"отримати доступ до всіх функцій, що надаються адмін-сайтом Django, і " -"керувати ними." - -#: ../../src/appx/libms/spec.rst:35 -msgid "Admins can create, modify, or delete any record within the application." -msgstr "" -"Адміністратори можуть створювати, змінювати або видаляти будь-які записи в " -"додатку." - -#: ../../src/appx/libms/spec.rst:38 ../../src/appx/libms/spec.rst:49 -#: ../../src/appx/libms/spec.rst:68 ../../src/appx/libms/spec.rst:82 -msgid "Capabilities" -msgstr "Можливості" - -#: ../../src/appx/libms/spec.rst:39 -msgid "Access Django admin site" -msgstr "Доступ до адміністративного сайту Django" - -#: ../../src/appx/libms/spec.rst:42 -msgid "Librarians" -msgstr "Бібліотекарі" - -#: ../../src/appx/libms/spec.rst:44 -msgid "" -"Staff personnel are in charge of day-to-day operations within the library. " -"They can add new books to the library's collection, manage existing books' " -"details, and accept or decline borrow requests from regular users." -msgstr "" -"Працівники бібліотеки відповідають за повсякденну роботу в бібліотеці. Вони " -"можуть додавати нові книги до бібліотечної колекції, керувати даними про " -"наявні книги, а також приймати або відхиляти запити від постійних " -"користувачів." - -#: ../../src/appx/libms/spec.rst:50 -msgid "Management of the library catalogue" -msgstr "Управління бібліотечним каталогом" - -#: ../../src/appx/libms/spec.rst:52 -msgid "Add, modify or delete authors" -msgstr "Додавати, змінювати або видаляти авторів" - -#: ../../src/appx/libms/spec.rst:53 -msgid "Add, modify or delete genres" -msgstr "Додавати, змінювати або видаляти жанри" - -#: ../../src/appx/libms/spec.rst:54 -msgid "Add, modify or delete books' details" -msgstr "Додавати, змінювати або видаляти дані про книги" - -#: ../../src/appx/libms/spec.rst:56 -msgid "Review borrow requests from regular users" -msgstr "Переглядати запити на позичення від користувачів" - -#: ../../src/appx/libms/spec.rst:57 -msgid "Accept or decline borrow requests" -msgstr "Приймати або відхиляти запити на позичення" - -#: ../../src/appx/libms/spec.rst:58 -msgid "Register returned books and update their status" -msgstr "Реєструвати повернені книги та оновлювати їх статус" - -#: ../../src/appx/libms/spec.rst:61 -msgid "Regular" -msgstr "Звичайний" - -#: ../../src/appx/libms/spec.rst:63 -msgid "" -"Regular registered users are the members of the library. They can search " -"books, request to borrow them, and are responsible for returning borrowed " -"books on time." -msgstr "" -"Постійні зареєстровані користувачі є членами бібліотеки. Вони можуть шукати " -"книги, запитувати їх, а також несуть відповідальність за своєчасне " -"повернення позичених книг." - -#: ../../src/appx/libms/spec.rst:69 ../../src/appx/libms/spec.rst:83 -msgid "Browse the books' catalogue" -msgstr "Переглядати каталог книг" - -#: ../../src/appx/libms/spec.rst:70 ../../src/appx/libms/spec.rst:84 -msgid "View details of a book" -msgstr "Переглядати деталі книги" - -#: ../../src/appx/libms/spec.rst:71 ../../src/appx/libms/spec.rst:85 -msgid "Search books" -msgstr "Шукати книги" - -#: ../../src/appx/libms/spec.rst:72 -msgid "Request to borrow available books" -msgstr "Робити запит на позичення доступних книжок" - -#: ../../src/appx/libms/spec.rst:73 -msgid "Check due date for returned books" -msgstr "Перевіряти термін повернення запозичених книжок" - -#: ../../src/appx/libms/spec.rst:74 -msgid "Return borrowed books" -msgstr "Повертати запозичені книги" - -#: ../../src/appx/libms/spec.rst:77 -msgid "Anonymous" -msgstr "Анонімні" - -#: ../../src/appx/libms/spec.rst:79 -msgid "Anonymous users are visitors who haven't logged into the system." -msgstr "Анонімні користувачі - це відвідувачі, які не ввійшли в систему." - -#: ../../src/appx/libms/spec.rst:86 -msgid "Access to the registration or login pages" -msgstr "Доступ до сторінок реєстрації або входу" - -#: ../../src/appx/libms/spec.rst:90 -msgid "Models" -msgstr "Моделі" - -#: ../../src/appx/libms/spec.rst:93 -msgid "Author model" -msgstr "Модель авторів" - -#: ../../src/appx/libms/spec.rst:95 -msgid "" -"The ``Author`` model captures the details of the person, or group " -"responsible for creating the book." -msgstr "" -"Модель ``Author`` фіксує інформацію про особу або групу осіб, відповідальних " -"за створення книги." - -#: ../../src/appx/libms/spec.rst:99 ../../src/appx/libms/spec.rst:116 -#: ../../src/appx/libms/spec.rst:128 ../../src/appx/libms/spec.rst:170 -msgid "Attributes" -msgstr "Атрибути" - -#: ../../src/appx/libms/spec.rst -msgid "Name" -msgstr "Name" - -#: ../../src/appx/libms/spec.rst:102 -msgid "The full name of the author. This should be limited to 255 characters." -msgstr "Повне ім'я автора. Не більше 255 символів." - -#: ../../src/appx/libms/spec.rst -msgid "Bio" -msgstr "Bio" - -#: ../../src/appx/libms/spec.rst:105 -msgid "A brief biography or description of the author." -msgstr "Коротка біографія або опис автора." - -#: ../../src/appx/libms/spec.rst:108 -msgid "Genre model" -msgstr "Модель жанра" - -#: ../../src/appx/libms/spec.rst:110 -msgid "" -"The ``Genre`` model represents the category or type of content a book " -"belongs to, such as \"Fiction\", \"Non-fiction\", \"Science\", \"Romance\" " -"etc. Since a book can belong to more than one category at a time, it is " -"implemented as a dedicated model." -msgstr "" -"Модель ``Genre`` представляє категорію або тип контенту, до якого належить " -"книга, наприклад, \"Художня література\", \"Нехудожня література\", " -"\"Наука\", \"Романтика\" тощо. Оскільки книга може належати до кількох " -"категорій одночасно, вона реалізована як окрема модель." - -#: ../../src/appx/libms/spec.rst:118 -msgid "The name of the genre." -msgstr "Назва жанру." - -#: ../../src/appx/libms/spec.rst:121 -msgid "Book model" -msgstr "Модель книги" - -#: ../../src/appx/libms/spec.rst:123 -msgid "" -"The ``Book`` model represents a physical book in the library's collection. " -"Each book record captures essential bibliographic information, as well as " -"details related to its current status in the library (e.g. available, " -"borrowed etc.)." -msgstr "" -"Модель ``Book`` представляє фізичну книгу в бібліотечній колекції. Кожен " -"запис про книгу містить основну бібліографічну інформацію, а також деталі, " -"пов'язані з її поточним статусом у бібліотеці (наприклад, доступна, позичена " -"тощо)." - -#: ../../src/appx/libms/spec.rst -msgid "Title" -msgstr "Title" - -#: ../../src/appx/libms/spec.rst:131 -msgid "The name or title of the book (255 characters or fewer)." -msgstr "Назва книги (255 символів або менше)." - -#: ../../src/appx/libms/spec.rst -msgid "Summary" -msgstr "Summary" - -#: ../../src/appx/libms/spec.rst:134 -msgid "A brief description or synopsis of the book." -msgstr "Короткий опис або синопсис книги." - -#: ../../src/appx/libms/spec.rst -msgid "ISBN" -msgstr "ISBN" - -#: ../../src/appx/libms/spec.rst:137 -msgid "International Standard Book Number, a unique identifier for books." -msgstr "" -"International Standard Book Number, унікальний ідентифікатор для книг.." - -#: ../../src/appx/libms/spec.rst -msgid "Available" -msgstr "Available" - -#: ../../src/appx/libms/spec.rst:140 -msgid "" -"Current available status of the book. Either ``True`` or ``False``. Books " -"are available by default." -msgstr "" -"Поточний статус доступності книги. Або ``True``, або ``False``. За " -"замовчуванням книги доступні." - -#: ../../src/appx/libms/spec.rst -msgid "Published date" -msgstr "Published date" - -#: ../../src/appx/libms/spec.rst:144 -msgid "The date when the book was published." -msgstr "Дата, коли книга була опублікована." - -#: ../../src/appx/libms/spec.rst -msgid "Publisher" -msgstr "Publisher" - -#: ../../src/appx/libms/spec.rst:147 -msgid "" -"The entity or company responsible for the production and distribution of the " -"book." -msgstr "" -"Організація або компанія, відповідальна за виробництво та розповсюдження " -"книги." - -#: ../../src/appx/libms/spec.rst -msgid "Genre(s)" -msgstr "Genre(s)" - -#: ../../src/appx/libms/spec.rst:151 -msgid "" -"The category or type of content the book falls under (e.g., Fiction, Non-" -"Fiction, Science)." -msgstr "" -"Категорія або тип контенту, до якого належить книга (наприклад, художня " -"література, нон-фікшн, наукова література)." - -#: ../../src/appx/libms/spec.rst -msgid "Author(s)" -msgstr "Author(s)" - -#: ../../src/appx/libms/spec.rst:156 -msgid "" -"The name of the person or group responsible for creating the content of the " -"book." -msgstr "Ім'я особи або групи осіб, відповідальних за створення змісту книги." - -#: ../../src/appx/libms/spec.rst -msgid "Borrower" -msgstr "Borrower" - -#: ../../src/appx/libms/spec.rst:160 -msgid "The user who has currently borrowed the book, if applicable." -msgstr "Користувач, який наразі позичив книгу, якщо це можливо." - -#: ../../src/appx/libms/spec.rst:163 -msgid "Borrow request model" -msgstr "Модель запиту на позику" - -#: ../../src/appx/libms/spec.rst:165 -msgid "" -"The ``BorrowRequest`` model captures the intent of a user to borrow a " -"specific book. It tracks the status of the request, whether it's pending, " -"approved, declined, or completed." -msgstr "" -"Модель ``BorrowRequest`` фіксує намір користувача взяти конкретну книгу. " -"Вона відстежує статус запиту: очікує, схвалений, відхилений чи завершений." - -#: ../../src/appx/libms/spec.rst -msgid "Book" -msgstr "Book" - -#: ../../src/appx/libms/spec.rst:173 -msgid "A reference to a book to be borrowed." -msgstr "Посилання на книгу, яку потрібно взяти." - -#: ../../src/appx/libms/spec.rst:176 -msgid "A reference to a user who wants to borrow a book." -msgstr "Посилання на користувача, який хоче взяти книгу." - -#: ../../src/appx/libms/spec.rst -msgid "Status" -msgstr "Status" - -#: ../../src/appx/libms/spec.rst:179 -msgid "The current status of the request." -msgstr "Поточний статус заявки." - -#: ../../src/appx/libms/spec.rst:181 -msgid "pending" -msgstr "pending" - -#: ../../src/appx/libms/spec.rst:182 -msgid "approved" -msgstr "approved" - -#: ../../src/appx/libms/spec.rst:183 -msgid "collected" -msgstr "collected" - -#: ../../src/appx/libms/spec.rst:184 -msgid "complete" -msgstr "complete" - -#: ../../src/appx/libms/spec.rst:185 -msgid "declined" -msgstr "declined" - -#: ../../src/appx/libms/spec.rst:187 -msgid "" -"The status constants should be encapsulated within the ``BorrowRequest`` " -"model." -msgstr "" -"Константи стану повинні бути інкапсульовані в моделі ``BorrowRequest``." - -#: ../../src/appx/libms/spec.rst -msgid "Overdue" -msgstr "Overdue" - -#: ../../src/appx/libms/spec.rst:202 -msgid "A flag indicating if a borrow request was overdue." -msgstr "Прапорець, що вказує на те, чи був запит на позику прострочений." - -#: ../../src/appx/libms/spec.rst -msgid "Request date" -msgstr "Request date" - -#: ../../src/appx/libms/spec.rst:205 -msgid "The date the borrow request was made. This is required." -msgstr "Дата подання запиту на позику. Це обов'язкова інформація." - -#: ../../src/appx/libms/spec.rst -msgid "Approval date" -msgstr "Approval date" - -#: ../../src/appx/libms/spec.rst:208 -msgid "The date the request was approved, if applicable. Optional." -msgstr "Дата схвалення запиту, якщо це можливо. Необов'язково." - -#: ../../src/appx/libms/spec.rst -msgid "Due date" -msgstr "Due date" - -#: ../../src/appx/libms/spec.rst:211 -msgid "" -"The date by which the book should be returned. Optional, should only be set " -"if the request if approved." -msgstr "" -"Дата, до якої книга має бути повернута. Необов'язкова, має бути вказана лише " -"у разі схвалення запиту." - -#: ../../src/appx/libms/spec.rst -msgid "Complete date" -msgstr "Complete date" - -#: ../../src/appx/libms/spec.rst:215 -msgid "" -"The date the book was returned and the borrowing request was completed. " -"Optional, should only be set if the request has reached the \"Complete\" " -"status." -msgstr "" -"Дата повернення книги та завершення запиту на позику. Необов'язкова, має " -"бути встановлена тільки якщо запит досяг статусу \"Завершено\"." - -#: ../../src/appx/libms/spec.rst:220 -msgid "Relationships" -msgstr "Відносини" - -#: ../../src/appx/libms/spec.rst:228 -msgid "Book to author" -msgstr "Книга до автору" - -#: ../../src/appx/libms/spec.rst:230 -msgid "" -"Each ``Author`` can be associated with multiple ``Books``, and each ``Book`` " -"can have **one or more** ``authors``. This establishes a **many-to-many** " -"relationship between the two entities." -msgstr "" -"Кожен ``Автор`` може бути пов'язаний з декількома ``Книгами``, а кожна " -"``Книга`` може мати **одного або більше** ``авторів``. Це встановлює зв'язок " -"**багато-до-багатьох** між цими двома сутностями." - -#: ../../src/appx/libms/spec.rst:235 -msgid "Book to genre" -msgstr "Книга до жанру" - -#: ../../src/appx/libms/spec.rst:237 -msgid "" -"Each ``Genre`` can be associated with multiple ``Books``, and vice-versa. " -"However a ``Book`` might not belong to any genre. This relationship between " -"``Genre`` and ``Book`` is still considered **many-to-many**, but with the " -"possibility of zero genres for a book." -msgstr "" -"Кожен ``Жанр`` може бути пов'язаний з декількома ``Книгами``, і навпаки. " -"Однак ``Книга`` може не належати до жодного жанру. Цей зв'язок між " -"``Жанром`` і ``Книгою`` все ще вважається **багато-до-багатьох**, але з " -"можливістю нульових жанрів для книги." - -#: ../../src/appx/libms/spec.rst:243 -msgid "Book to borrow request" -msgstr "Книга до запиту на позику" - -#: ../../src/appx/libms/spec.rst:245 -msgid "" -"Each ``Book`` can be associated with multiple ``BorrowRequests``, but each " -"``BorrowRequest`` refers only one ``book``, forming a **many-to-one** " -"relationship." -msgstr "" -"Кожна ``Книга`` може бути пов'язана з декількома ``Запитами на позику``, але " -"кожен ``Запит на позику`` посилається тільки на одну ``Книгу``, утворюючи " -"зв'язок **багато-до-одного**." - -#: ../../src/appx/libms/spec.rst:250 -msgid "User to borrow request" -msgstr "Користувач до запиту на позику" - -#: ../../src/appx/libms/spec.rst:252 -msgid "" -"Each ``User`` can make multiple ``BorrowRequests``, but each " -"``BorrowRequest`` refers to only one book, forming a **many-to-one** " -"relationship." -msgstr "" -"Кожен ``Користувач`` може зробити кілька ``Запитів на позику``, але кожен " -"``Запит на позику`` відноситься тільки до однієї книги, формуючи зв'язок " -"``багато до однієї``." - -#: ../../src/appx/libms/spec.rst:256 -msgid "User to book (as a borrower)" -msgstr "Користувач до книги (як запозичувач)" - -#: ../../src/appx/libms/spec.rst:258 -msgid "" -"A ``Book`` may have been borrowed by a ``User``, but at any given time, each " -"``Book`` can be borrowed by one user only. This forms a **one-to-one** " -"relationship." -msgstr "" -"Книга\" може бути позичена \"Користувачем\", але в будь-який момент часу " -"кожна \"Книга\" може бути позичена тільки одним користувачем. Це формує " -"відносини \"один до одного\"." - -#: ../../src/appx/libms/spec.rst:264 -msgid "Views and templates" -msgstr "Подання та шаблони" - -#: ../../src/appx/libms/spec.rst:267 -msgid "Admin site" -msgstr "Адмін-сайт" - -#: ../../src/appx/libms/spec.rst:269 -msgid "" -"Admin site provides the full control over the entire system. Only admins are " -"permitted to use admin site. Librarians should use their dedicated views to " -"perform operations, except special cases." -msgstr "" -"Адмін-сайт забезпечує повний контроль над всією системою. Тільки " -"адміністратори мають право користуватися сайтом адміністратора. Бібліотекарі " -"повинні використовувати свої виділені подання для виконання операцій, за " -"винятком особливих випадків." - -#: ../../src/appx/libms/spec.rst:275 -msgid "Authentication" -msgstr "Автентифікація" - -#: ../../src/appx/libms/spec.rst:278 -msgid "Login" -msgstr "Логін" - -#: ../../src/appx/libms/spec.rst:281 ../../src/appx/libms/spec.rst:293 -#: ../../src/appx/libms/spec.rst:324 ../../src/appx/libms/spec.rst:344 -#: ../../src/appx/libms/spec.rst:371 ../../src/appx/libms/spec.rst:495 -#: ../../src/appx/libms/spec.rst:512 -msgid "Template" -msgstr "Template" - -#: ../../src/appx/libms/spec.rst:282 -msgid "" -"A form with fields for entering a username and a password, and a submit " -"button." -msgstr "" -"Форма з полями для введення імені користувача та пароля, а також кнопкою " -"\"Надіслати\"." - -#: ../../src/appx/libms/spec.rst:285 ../../src/appx/libms/spec.rst:303 -#: ../../src/appx/libms/spec.rst:329 ../../src/appx/libms/spec.rst:353 -#: ../../src/appx/libms/spec.rst:390 ../../src/appx/libms/spec.rst:476 -#: ../../src/appx/libms/spec.rst:499 -msgid "View logic" -msgstr "View logic" - -#: ../../src/appx/libms/spec.rst:286 -msgid "" -"Validate entered credentials and authenticate the user. In case of incorrect " -"credentials, display an error message." -msgstr "" -"Перевірити введені облікові дані та автентифікувати користувача. У разі " -"неправильних облікових даних вивести повідомлення про помилку." - -#: ../../src/appx/libms/spec.rst:290 -msgid "Registration" -msgstr "Реєстрація" - -#: ../../src/appx/libms/spec.rst:294 -msgid "A form for new user registration. **Required** fields are:" -msgstr "Форма для реєстрації нового користувача. **Обов'язковими** полями є:" - -#: ../../src/appx/libms/spec.rst:296 -msgid "username" -msgstr "username" - -#: ../../src/appx/libms/spec.rst:297 -msgid "first name" -msgstr "first name" - -#: ../../src/appx/libms/spec.rst:298 -msgid "last name" -msgstr "last name" - -#: ../../src/appx/libms/spec.rst:299 -msgid "password" -msgstr "password" - -#: ../../src/appx/libms/spec.rst:300 -msgid "confirm password" -msgstr "confirm password" - -#: ../../src/appx/libms/spec.rst:304 -msgid "Upon submission, the view should validate the provided data:" -msgstr "Після відправлення, перегляд повинен підтвердити надані дані:" - -#: ../../src/appx/libms/spec.rst:306 -msgid "Check if username is already taken." -msgstr "Перевірте, чи не зайнято вже ім'я користувача." - -#: ../../src/appx/libms/spec.rst:307 -msgid "Ensure that password and confirm password fields match." -msgstr "" -"Переконайтеся, що поля \"Пароль\" і \"Підтвердження пароля\" збігаються." - -#: ../../src/appx/libms/spec.rst:308 -msgid "" -"Save the user's data if all validations pass. Otherwise, display appropriate " -"error messages." -msgstr "" -"Зберегти дані користувача, якщо всі перевірки пройдено. В іншому випадку, " -"відобразити відповідні повідомлення про помилки." - -#: ../../src/appx/libms/spec.rst:311 -msgid "" -"When saving passwords in the database, always store them in a hashed format, " -"never in plain text." -msgstr "" -"Зберігаючи паролі в базі даних, завжди зберігайте їх у хешованому форматі, а " -"не у вигляді простого тексту." - -#: ../../src/appx/libms/spec.rst:315 -msgid "" -"Django's built-in ``User`` model and authentication system handle password " -"hashing by default, which is a big plus." -msgstr "" -"Вбудована в Django модель ``User`` та система автентифікації за " -"замовчуванням обробляє хешування паролів, що є великим плюсом." - -#: ../../src/appx/libms/spec.rst:319 -msgid "Borrowing History" -msgstr "Історія запозичень" - -#: ../../src/appx/libms/spec.rst:321 -msgid "This view is available only for authenticated users." -msgstr "Це подання доступне лише для авторизованих користувачів." - -#: ../../src/appx/libms/spec.rst:325 -msgid "" -"Users can see the list of **all** their borrows requests, regardless of " -"approve/decline status." -msgstr "" -"Користувачі можуть бачити список **всіх** своїх заявок на позики, незалежно " -"від статусу схвалення/відхилення." - -#: ../../src/appx/libms/spec.rst:330 -msgid "Authenticated users can see only their own borrow requests." -msgstr "Авторизовані користувачі можуть бачити лише власні заявки на позики." - -#: ../../src/appx/libms/spec.rst:331 -msgid "" -"Librarians and admins can access borrows requests list for any user, " -"registered in the library system." -msgstr "" -"Бібліотекарі та адміністратори мають доступ до списку запитів на позики для " -"будь-якого користувача, зареєстрованого в бібліотечній системі." - -#: ../../src/appx/libms/spec.rst:335 -msgid "Library collection" -msgstr "Бібліотечний фонд" - -#: ../../src/appx/libms/spec.rst:337 -msgid "" -"These views are generally available for all (including anonymous) users. The " -"functionality for authenticated users include books borrowing." -msgstr "" -"Ці перегляди загалом доступні для всіх (в тому числі анонімних) " -"користувачів. Функціонал для аутентифікованих користувачів включає в себе " -"можливість позичати книги." - -#: ../../src/appx/libms/spec.rst:341 -msgid "Books list" -msgstr "Список літератури" - -#: ../../src/appx/libms/spec.rst:345 -msgid "A list (or table) of books. Each book entry should provide information:" -msgstr "" -"Список (або таблиця) книг. Кожна позиція повинна містити інформацію про " -"книгу:" - -#: ../../src/appx/libms/spec.rst:347 -msgid "title" -msgstr "title" - -#: ../../src/appx/libms/spec.rst:348 -msgid "author(s)" -msgstr "автор(и)" - -#: ../../src/appx/libms/spec.rst:349 -msgid "summary (truncated if too long, 30 words or fewer)" -msgstr "опис (скорочене, якщо занадто довге, до 30 слів або менше)" - -#: ../../src/appx/libms/spec.rst:350 -msgid "availability status (either **Available** or **Unavailable**)" -msgstr "статус доступності (**Доступний** або **Не доступний**)" - -#: ../../src/appx/libms/spec.rst:354 -msgid "Querying the data" -msgstr "Запит даних" - -#: ../../src/appx/libms/spec.rst:356 -msgid "Fetch **all** books from the database" -msgstr "Отримати **усі** книги з бази даних" - -#: ../../src/appx/libms/spec.rst:358 -msgid "Checking availability status (visual mark)" -msgstr "Перевірка статусу доступності (візуальна позначка)" - -#: ../../src/appx/libms/spec.rst:360 -msgid "" -"For each book, determine its availability status. Check ``Book.available`` " -"flag." -msgstr "" -"Для кожної книги визначте її статус доступності. Встановіть прапорець ``Book." -"available``." - -#: ../../src/appx/libms/spec.rst:364 -msgid "" -"A user can still create a borrowing request, regardless of the book " -"availability status. This is only the visual mark." -msgstr "" -"Користувач все одно може створити запит на позику, незалежно від статусу " -"доступності книги. Це лише візуальна позначка." - -#: ../../src/appx/libms/spec.rst:368 -msgid "Detail view" -msgstr "Детальний перегляд" - -#: ../../src/appx/libms/spec.rst:372 -msgid "" -"The detailed view of a specific book, presenting comprehensive information:" -msgstr "Детальний огляд конкретної книги, що містить вичерпну інформацію:" - -#: ../../src/appx/libms/spec.rst:374 -msgid "**Title**: Display the book's title prominently." -msgstr "**Назва**: Покажіть назву книги на видному місці." - -#: ../../src/appx/libms/spec.rst:375 -msgid "**Genre(s)**: List all associated genres (if any)." -msgstr "**Жанр(и)**: Перелічіть усі пов'язані жанри (якщо такі є)." - -#: ../../src/appx/libms/spec.rst:376 -msgid "**Author(s)**: List all associated authors." -msgstr "**Автор(и)**: Перерахуйте всіх асоційованих авторів." - -#: ../../src/appx/libms/spec.rst:377 -msgid "**ISBN**: The International Standard Book Number." -msgstr "**ISBN**: Міжнародний стандартний номер книги." - -#: ../../src/appx/libms/spec.rst:378 -msgid "**Published Date**: When the book was published." -msgstr "**Дата публікації**: Коли вийшла друком книга." - -#: ../../src/appx/libms/spec.rst:379 -msgid "" -"**Publisher**: The name of the entity or company responsible for publishing" -msgstr "" -"**Видавець**: Назва організації або компанії, відповідальної за публікацію" - -#: ../../src/appx/libms/spec.rst:380 -msgid "**Summary**: A full summary or description of the book. the book." -msgstr "**Коротка анотація**: Повне резюме або опис книги. книги." - -#: ../../src/appx/libms/spec.rst:382 -msgid "**Action Buttons** (For authenticated users only):" -msgstr "**Кнопки дій** (Тільки для авторизованих користувачів):" - -#: ../../src/appx/libms/spec.rst:384 -msgid "" -"**Borrow Request Button**: If the user has no associated borrow request they " -"can create a new one." -msgstr "" -"**Кнопка запиту на позику**: Якщо користувач не має пов'язаного запиту на " -"позику, він може створити новий." - -#: ../../src/appx/libms/spec.rst:386 -msgid "" -"**Gather Book Button**: If the user's borrow request for this book has been " -"approved, allow the user to confirm they've picked up the book." -msgstr "" -"**Кнопка Забрати книгу**: Якщо запит користувача на позику цієї книги було " -"схвалено, дозвольте користувачеві підтвердити, що він забрав книгу." - -#: ../../src/appx/libms/spec.rst:391 -msgid "**Fetching Book Details**:" -msgstr "**Доступ до деталей книги**:" - -#: ../../src/appx/libms/spec.rst:393 -msgid "" -"Use the book's identifier (usually a primary key) to fetch its details from " -"the database." -msgstr "" -"Використовуйте ідентифікатор книги (зазвичай первинний ключ), щоб отримати " -"інформацію про неї з бази даних." - -#: ../../src/appx/libms/spec.rst:396 -msgid "**Checking User Authentication**:" -msgstr "**Перевірка автентичності користувача**:" - -#: ../../src/appx/libms/spec.rst:398 -msgid "" -"Determine if a user is authenticated. If they are, display the appropriate " -"action buttons based on the book's availability status and any existing " -"borrow requests by the user." -msgstr "" -"Визначити, чи користувач автентифікований. Якщо так, відобразити відповідні " -"кнопки дій на основі статусу доступності книги та наявних запитів " -"користувача на позику." - -#: ../../src/appx/libms/spec.rst:402 -msgid "**Handling Borrow Requests**:" -msgstr "**Обробка запитів на позику**:" - -#: ../../src/appx/libms/spec.rst:404 -msgid "If an authenticated user clicks on the \"Borrow Request\" button:" -msgstr "Якщо авторизований користувач натискає кнопку \"Запит на позику\":" - -#: ../../src/appx/libms/spec.rst:406 -msgid "" -"Create a new borrow request in the ``BorrowRequest`` model with status " -"\"pending\"." -msgstr "" -"Створіть новий запит на позику в моделі ``BorrowRequest`` зі статусом \"на " -"розгляді\"." - -#: ../../src/appx/libms/spec.rst:408 -msgid "Update the book's status to \"Awaiting approval\"." -msgstr "Оновіть статус книги на \"Очікує затвердження\"." - -#: ../../src/appx/libms/spec.rst:409 -msgid "" -"Redirect the user to a confirmation page or display a message indicating the " -"request has been made." -msgstr "" -"Перенаправлення користувача на сторінку підтвердження або відображення " -"повідомлення про те, що запит було зроблено." - -#: ../../src/appx/libms/spec.rst:412 -msgid "**Handling Book Gathering**:" -msgstr "**Опрацювання Позики Книги**:" - -#: ../../src/appx/libms/spec.rst:414 -msgid "" -"If an authenticated user has an approved borrow request and clicks the " -"\"Gather Book\" button:" -msgstr "" -"Якщо авторизований користувач має схвалений запит на позику і натискає " -"кнопку \"Зібрати книгу\":" - -#: ../../src/appx/libms/spec.rst:417 -msgid "Update the book's status to \"Borrowed\"." -msgstr "Оновіть статус книги на \"Позичена\"." - -#: ../../src/appx/libms/spec.rst:418 -msgid "Update the borrow request's status to \"complete\"." -msgstr "Оновіть статус запиту на позику до \"завершено\"." - -#: ../../src/appx/libms/spec.rst:419 -msgid "" -"Redirect the user to a confirmation page or display a message indicating " -"they've picked up the book." -msgstr "" -"Перенаправляйте користувача на сторінку підтвердження або показуйте " -"повідомлення про те, що він забрав книгу." - -#: ../../src/appx/libms/spec.rst:423 -msgid "" -"Always ensure the user's actions are authenticated and authorized. This " -"prevents unauthorized borrow requests or gathering of books. Also, consider " -"adding error handling to manage cases where the book's details cannot be " -"fetched or any other unexpected issues." -msgstr "" -"Завжди переконуйтеся, що дії користувача автентифіковані та санкціоновані. " -"Це запобігає несанкціонованим запитам на позику або збору книг. Також " -"подумайте про те, щоб додати обробку помилок для випадків, коли не вдається " -"отримати дані про книгу, або будь-яких інших непередбачуваних проблем." - -#: ../../src/appx/libms/spec.rst:429 -msgid "Books management" -msgstr "Управління книгами" - -#: ../../src/appx/libms/spec.rst:431 -msgid "These views are available only for staff (librarians and admins)." -msgstr "" -"Ці перегляди доступні лише для персоналу (бібліотекарів та адміністраторів)." - -#: ../../src/appx/libms/spec.rst:434 -msgid "Authors and genres management" -msgstr "Управління авторами та жанрами" - -#: ../../src/appx/libms/spec.rst:436 -msgid "" -"Only librarians and admins can add, modify or delete authors and genres. No " -"additional views for CRUD operations required (except admin site). " -"Librarians are allowed to access authors and genres via admin site. Only " -"admins can remove authors or genres." -msgstr "" -"Тільки бібліотекарі та адміністратори можуть додавати, змінювати або " -"видаляти авторів і жанри. Для виконання CRUD-операцій не потрібні додаткові " -"перегляди (окрім адмін-сайту). Бібліотекарі мають доступ до авторів і жанрів " -"через сайт адміністратора. Тільки адміністратори можуть видаляти авторів або " -"жанри." - -#: ../../src/appx/libms/spec.rst:442 -msgid "Book creation and update" -msgstr "Створення та оновлення книг" - -#: ../../src/appx/libms/spec.rst:444 -msgid "" -"The template should comprise a form with fields corresponding to the book's " -"attributes. Here are the essential elements for the form:" -msgstr "" -"Шаблон повинен містити форму з полями, що відповідають атрибутам книги. Ось " -"основні елементи форми:" - -#: ../../src/appx/libms/spec.rst:448 ../../src/appx/libms/spec.rst:463 -msgid "A text input field." -msgstr "Поле для введення тексту." - -#: ../../src/appx/libms/spec.rst:451 -msgid "A textarea for a brief description or synopsis." -msgstr "Текстова область для короткого опису або синопсису." - -#: ../../src/appx/libms/spec.rst:454 -msgid "A text input field for the book's International Standard Book Number." -msgstr "Поле для введення міжнародного стандартного номера книги." - -#: ../../src/appx/libms/spec.rst:457 -msgid "A checkbox indicating if a book is available. Defaults to ``True``." -msgstr "" -"Прапорець, що вказує на наявність книги. За замовчуванням стоїть ``True``." - -#: ../../src/appx/libms/spec.rst:460 -msgid "A date input field." -msgstr "Поле для введення дати." - -#: ../../src/appx/libms/spec.rst -msgid "Genres" -msgstr "Жанри" - -#: ../../src/appx/libms/spec.rst:466 -msgid "" -"A multi-select list of genres (e.g. dropdown, checkboxes etc.). This should " -"fetch available genres from the database and allow users to select zero or " -"more genres." -msgstr "" -"Список жанрів з можливістю вибору (наприклад, випадаючий список, прапорці " -"тощо). Він повинен отримувати доступні жанри з бази даних і дозволяти " -"користувачам вибирати нуль або більше жанрів." - -#: ../../src/appx/libms/spec.rst -msgid "Authors" -msgstr "Автори" - -#: ../../src/appx/libms/spec.rst:471 -msgid "" -"A multi-select list of authors (e.g. dropdown, checkboxes etc.). This should " -"fetch available authors from the database and allow users to select one or " -"more authors." -msgstr "" -"Список авторів з можливістю вибору (наприклад, випадаючий список, прапорці " -"тощо). Він повинен отримувати доступних авторів з бази даних і дозволяти " -"користувачам вибирати одного або декількох авторів." - -#: ../../src/appx/libms/spec.rst:477 -msgid "" -"If it's an *update* action, pre-populate the form fields with the existing " -"details of the book fetched from the database." -msgstr "" -"Якщо це дія *оновлення*, попередньо заповніть поля форми існуючими даними " -"книги, отриманими з бази даних." - -#: ../../src/appx/libms/spec.rst:479 -msgid "For *creation*, provide an empty form for the librarian to fill in." -msgstr "Для *створення* надайте бібліотекарю порожню форму для заповнення." - -#: ../../src/appx/libms/spec.rst:480 -msgid "Ensure the published date is logical (e.g. not a future date)." -msgstr "" -"Переконайтеся, що опублікована дата є логічною (наприклад, не є датою " -"майбутнього)." - -#: ../../src/appx/libms/spec.rst:481 -msgid "Validate required inputs, according to general ``Book`` model rules." -msgstr "" -"Перевірити необхідні вхідні дані відповідно до загальних правил моделі " -"``Book``." - -#: ../../src/appx/libms/spec.rst:482 -msgid "" -"If validations pass: save changes to the database; otherwise, provide " -"helpful error messages." -msgstr "" -"Якщо перевірка пройшла успішно: збережіть зміни в базі даних; в іншому " -"випадку надайте корисні повідомлення про помилки." - -#: ../../src/appx/libms/spec.rst:486 -msgid "" -"You MAY provide a mechanism (like modal or a quick entry form) to add a new " -"genre or author without leaving the book form page." -msgstr "" -"Ви МОЖЕТЕ надати механізм (наприклад, модальну форму або форму швидкого " -"введення) для додавання нового жанру або автора, не виходячи зі сторінки " -"форми книги." - -#: ../../src/appx/libms/spec.rst:490 -msgid "Book deletion" -msgstr "Видалення книги" - -#: ../../src/appx/libms/spec.rst:492 -msgid "" -"Only librarians and administrators are permitted to perform this action." -msgstr "Тільки бібліотекарі та адміністратори мають право виконувати цю дію." - -#: ../../src/appx/libms/spec.rst:496 -msgid "A confirm delete form with **Submit** and **Cancel** buttons." -msgstr "Форма підтвердження видалення з кнопками **Подати** та **Скасувати**." - -#: ../../src/appx/libms/spec.rst:500 -msgid "Authorize user before deleting performing deletion." -msgstr "Авторизуйте користувача перед виконанням видалення." - -#: ../../src/appx/libms/spec.rst:501 -msgid "" -"If a form is submitted, a book should be removed from the library collection." -msgstr "Якщо формуляр подано, книга має бути вилучена з бібліотечної колекції." - -#: ../../src/appx/libms/spec.rst:503 -msgid "" -"If deletion is canceled view should redirect back to book detail view page." -msgstr "" -"Якщо видалення скасовано, перегляд має бути перенаправлений назад на " -"сторінку детального перегляду книги." - -#: ../../src/appx/libms/spec.rst:506 -msgid "Borrow requests" -msgstr "Запити на позики" - -#: ../../src/appx/libms/spec.rst:508 -msgid "" -"This view facilitates the management of borrowing requests for librarians " -"and admins, aiding in their prompt handling." -msgstr "" -"Цей перегляд полегшує бібліотекарям і адміністраторам управління запитами на " -"позики, допомагаючи оперативно їх обробляти." - -#: ../../src/appx/libms/spec.rst:513 -msgid "" -"Present a table showcasing the list of borrow requests. Each row embodies a " -"borrow request and encompasses:" -msgstr "" -"Уявіть таблицю, що відображає список запитів на позики. Кожен рядок " -"відображає один запит на позику і включає в себе всі запити:" - -#: ../../src/appx/libms/spec.rst:516 -msgid "**Book Title**: Title of the requested book." -msgstr "**Назва книги**: Назва запитуваної книги." - -#: ../../src/appx/libms/spec.rst:517 -msgid "**User**: Identifier of the user who initiated the request." -msgstr "**Користувач**: Ідентифікатор користувача, який ініціював запит." - -#: ../../src/appx/libms/spec.rst:518 -msgid "**Request Date**: Date of the request's inception." -msgstr "**Дата запиту**: Дата створення запиту." - -#: ../../src/appx/libms/spec.rst:519 -msgid "" -"**Due Date**: - Input field for librarians to set upon approval for new " -"requests. - For approved ones, display the librarian-set date." -msgstr "" -"**Дата виконання**: - Поле для введення бібліотекарями при затвердженні " -"нових запитів. - Для затверджених запитів відображатиметься дата, " -"встановлена бібліотекарем." - -#: ../../src/appx/libms/spec.rst:522 -msgid "" -"**Status**: Present state of the request (New, Approved, Completed, " -"Declined)." -msgstr "" -"**Статус**: Поточний стан запиту (Новий, Затверджений, Завершений, " -"Відхилений)." - -#: ../../src/appx/libms/spec.rst:524 -msgid "" -"**Approve Button**: Visible for new requests. Toggles status to \"Approved\" " -"and freezes the due date." -msgstr "" -"**Кнопка \"Затвердити\"**: Відображається для нових запитів. Перемикає " -"статус на \"Затверджено\" і заморожує дату виконання." - -#: ../../src/appx/libms/spec.rst:526 -msgid "" -"**Decline Button**: Appears for new requests. Sets status to \"Declined\" " -"and can prompt for a decline reason." -msgstr "" -"**Кнопка \"Відхилити\"**: З'являється для нових запитів. Встановлює статус " -"\"Відхилено\" і може запитувати причину відхилення." - -#: ../../src/appx/libms/spec.rst:528 -msgid "" -"**Complete Button**: Displayed for approved requests. Marks the request as " -"completed." -msgstr "" -"**Кнопка \"Завершити\"**: Відображається для затверджених запитів. Позначає " -"запит як завершений." - -#: ../../src/appx/libms/spec.rst:532 -msgid "View Logic" -msgstr "View Logic" - -#: ../../src/appx/libms/spec.rst:533 -msgid "" -"**Approve Borrow Request**: - Validate book availability. - Modify book " -"status to \"Borrowed\". - Switch borrow request to \"Approved\". - " -"Define the return due date as per librarian. - Inform the user about the " -"approval and due date." -msgstr "" -"**Схвалити запит на позику**: - Підтвердити наявність книги. - Змінити " -"статус книги на \"Позичена\". - Переключіть запит на позику на " -"\"Затверджено\". - Визначте дату повернення відповідно до побажань " -"бібліотекаря. - Повідомте користувача про схвалення та дату повернення." - -#: ../../src/appx/libms/spec.rst:540 -msgid "" -"**Decline Borrow Request**: - Change borrow request status to " -"\"Declined\". - Optionally, procure decline reason from librarian. - " -"Notify user regarding the declination." -msgstr "" -"**Відхилити запит на позику**: - Змінити статус запиту на \"Відхилено\". - " -"За бажанням, запитайте причину відмови у бібліотекаря. - Повідомте " -"користувача про відхилення." - -#: ../../src/appx/libms/spec.rst:545 -msgid "" -"**Complete Borrow Request**: - Ensure book's return. - Update book " -"status to \"Available\". - Toggle borrow request status to \"Completed\". " -"- If needed, record any notes or damages during return." -msgstr "" -"**Завершити запит на позику**: - Переконайтеся, що книга повернулася. - " -"Оновити статус книги до \"Доступна\". - Змінити статус запиту на " -"\"Виконано\". - Якщо потрібно, запишіть будь-які примітки або пошкодження " -"під час повернення." - -#: ../../src/appx/libms/spec.rst:552 -msgid "" -"Implementing reminders for near-due borrow requests can function as an alert " -"system for both the librarian and the user." -msgstr "" -"Впровадження нагадувань про прострочені запити може функціонувати як система " -"оповіщення як для бібліотекаря, так і для користувача." diff --git a/src/_locales/uk/LC_MESSAGES/spec/giver/_legacy/index.po b/src/_locales/uk/LC_MESSAGES/spec/giver/_legacy/index.po deleted file mode 100644 index b6d77225f..000000000 --- a/src/_locales/uk/LC_MESSAGES/spec/giver/_legacy/index.po +++ /dev/null @@ -1,330 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, Python training course authors and contributors -# This file is distributed under the same license as the Python Training -# Course package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: Python Training Course 2023.09.dev\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-02 14:46+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: uk\n" -"Language-Team: uk \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.13.1\n" - -#: ../../src/spec/giver/_legacy/index.md:1 -msgid "Anonymous Giver Site" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:3 -msgid "" -"The project is inspired by \"Secret Santa\" (aka \"Secret Nicholas\") " -"Christmas tradition, but it does not focus on specific celebrations or " -"events. The primary objective is to create a place on the internet where " -"people can gather together in groups and anonymously give gifts to each " -"other." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:9 -msgid "Key features" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:11 -msgid "**Wish lists**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:13 -msgid "" -"Any registered user can create and modify their own wish lists. The wish " -"list is generally private and is not visible to other users, unless they " -"are assigned as a gift-giver to the wish list owner." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:17 -msgid "**Many gift-giving campaigns**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:19 -msgid "Users can join multiple gift-giving campaigns without any limit." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:21 -msgid "**Personal reminders**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:23 -msgid "" -"Users with empty wish lists will be prompted to place something there. " -"Similarly, dormant users will be prompted to join an existing gift-giving" -" campaign." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:27 -msgid "**Administration can't interfere**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:29 -msgid "" -"Site admins provide moderation for wish lists and support gift-giving " -"campaigns. But they cannot create their own campaigns, or modify or " -"remove existing campaigns created by other users." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:33 -msgid "Registration and authentication" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:35 -msgid "Anonymous users may access any publicly available page." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:36 -msgid "" -"Anonymous users can register by providing a username, fullname, and " -"password." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:38 -msgid "Anonymous users can log in to their existing account." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:39 -msgid "Authenticated users can log out at any time." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:41 -msgid "Wish lists" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:43 -msgid "Wish lists are personal collections of desired gifts." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:45 -msgid "A wish list is created for any registered user, except admins." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:46 -msgid "Users must add at least one item to their wish list before using the site." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:48 -msgid "A wish list is available only to its owner and site admins." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:49 -msgid "" -"A wish list is temporary available to other users assigned as a gift-" -"giver to its owner." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:51 -msgid "Owners can add, modify, or remove entries in their wish lists." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:52 -msgid "" -"Admins can mark any wish list item as restricted, which makes it act as a" -" deleted one." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:55 -msgid "Gift-giving campaigns" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:57 -msgid "Non-admin users can create their own gift-giving campaigns." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:58 -msgid "Each campaign should have name, description and members list." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:59 -msgid "The campaign creator is automatically a member and cannot be excluded." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:61 -msgid "Campaigns status can be draft, public, private, or completed." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:62 -msgid "" -"Admins or the campaign creator can run the campaign if it has at least 3 " -"members." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:64 -msgid "Campaigns cannot be joined once they have started." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:65 -msgid "Any user, except the creator, can leave the campaign if it hasn't started." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:67 -msgid "" -"The creator can remove non-running campaigns regardless of members list, " -"creation time, or status." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:69 -msgid "" -"Admins can remove the campaigns with 3 or fewer members that hasn't " -"started within a specified time." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:71 -msgid "" -"Admins can remove draft campaigns that haven't been published within a " -"specified time." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:73 -msgid "" -"The number of campaigns a user can be member of is limited by the number " -"of items in their wish list." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:76 -msgid "**Draft campaigns**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:78 -msgid "No user can join a draft campaign." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:79 -msgid "Campaigns can are marked as drafts by default at creation." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:80 -msgid "The creator can publish the campaign by making campaign private or public." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:82 -msgid "Draft campaigns cannot be initiated." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:84 -msgid "**Public campaigns**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:86 -msgid "Public campaigns are accessible to both anonymous and authenticated users." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:88 -msgid "" -"Authenticated users can join any public campaign, unless it hasn't " -"started." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:91 -msgid "**Private campaigns**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:93 -msgid "Private campaign are available only to their members." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:94 -msgid "The campaign creator can share a join link with other users." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:95 -msgid "Once joined, the campaign becomes visible in the user's campaigns list." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:98 -msgid "**Completed campaigns**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:100 -msgid "" -"Actually this means the campaign has been completed and archived. Admins " -"can remove archived campaigns at any time (campaigns clean-up). Running " -"campaigns cannot be manually moved to completed status. This is done " -"automatically." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:105 -msgid "**Campaign life-cycle**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:149 -msgid "Running the gift-giving campaign" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:151 -msgid "The option to start campaigns is available to their creators or admins." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:153 -msgid "Once the campaign has started, no one can join or leave it." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:154 -msgid "" -"Each campaign member is assigned to give a gift to a randomly chosen " -"person within the same campaign members list." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:157 -msgid "**Giver access for wish list**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:159 -msgid "The wish list of the assigned person becomes visible to the gift giver." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:161 -msgid "The giver can mark any single item within this list as a given gift." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:162 -msgid "After the gift is given, wish list returns to normal." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:163 -msgid "Wish list entry marked as given, cannot be changed by other givers." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:165 -msgid "**Multiple gifts**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:167 -msgid "" -"Generally, gift-giving campaigns allow for one gift at a time. However, " -"if a user is assigned twice to the same giver from different campaigns, " -"the giver can mark as many entries as the number of assignments." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:171 -msgid "**Autocomplete**" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:173 -msgid "" -"Once all the assignments within a campaign are completed, the campaign " -"itself is considered to be completed." -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:176 -msgid "REST API" -msgstr "" - -#: ../../src/spec/giver/_legacy/index.md:178 -msgid "**All site functions** will be implemented within REST API." -msgstr "" - From 0e5dc42fbbbc910db6498be8a830edf4d151e00c Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Wed, 27 Dec 2023 00:03:57 +0200 Subject: [PATCH 9/9] Update printf appendix --- src/_locales/uk/LC_MESSAGES/appx/printf.po | 12 ++++++------ src/appx/printf.txt | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/_locales/uk/LC_MESSAGES/appx/printf.po b/src/_locales/uk/LC_MESSAGES/appx/printf.po index 5476a9142..f80d80ef8 100644 --- a/src/_locales/uk/LC_MESSAGES/appx/printf.po +++ b/src/_locales/uk/LC_MESSAGES/appx/printf.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Python Training Course 2022.11.dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-05 19:49+0300\n" -"PO-Revision-Date: 2023-10-05 20:02+0300\n" +"POT-Creation-Date: 2023-12-26 23:58+0200\n" +"PO-Revision-Date: 2023-12-27 00:02+0200\n" "Last-Translator: Serhii Horodilov \n" "Language-Team: ua \n" "Language: uk\n" @@ -16,8 +16,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"Generated-By: Babel 2.13.0\n" -"X-Generator: Poedit 3.4\n" +"Generated-By: Babel 2.14.0\n" +"X-Generator: Poedit 3.4.2\n" #: ../../src/appx/printf.txt:-1 msgid "Formatted strings usage in Python" @@ -32,8 +32,8 @@ msgid "python, string, formatting" msgstr "python, string, formatting" #: ../../src/appx/printf.txt:10 -msgid "``printf-style`` String Formatting" -msgstr "``printf-style`` Форматування рядків" +msgid "String Formatting: printf-style" +msgstr "Форматування рядка: стиль printf" #: ../../src/appx/printf.txt:12 msgid "" diff --git a/src/appx/printf.txt b/src/appx/printf.txt index 7842edf9b..d5ad84d62 100644 --- a/src/appx/printf.txt +++ b/src/appx/printf.txt @@ -5,9 +5,9 @@ .. todo: add code examples -################################## -``printf-style`` String Formatting -################################## +############################### +String Formatting: printf-style +############################### String objects have one unique built-in operation: the ``%`` operator (modulo). This is also known as the string *formatting* or *interpolation* operator