From 46efd5dcac7086b5fe1361e5ddc9bebdacdbb1de Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 17:42:43 +0000 Subject: [PATCH 01/33] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-eslint: v9.6.0 → v9.7.0](https://github.com/pre-commit/mirrors-eslint/compare/v9.6.0...v9.7.0) - [github.com/astral-sh/ruff-pre-commit: v0.5.1 → v0.5.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.1...v0.5.2) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 291fc94e9..a12619911 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,7 @@ repos: args: - --trailing-comma=es5 - repo: https://github.com/pre-commit/mirrors-eslint - rev: v9.6.0 + rev: v9.7.0 hooks: - id: eslint additional_dependencies: @@ -44,7 +44,7 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.5.1' + rev: 'v0.5.2' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] From 25656eeff69937c4271bc38cf599af62189e1144 Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Mon, 24 Jun 2024 19:24:26 +0530 Subject: [PATCH 02/33] Support an async middleware for the toolbar. extract redudant code in _postprocess disable non async capable panels add middleware sync and async compatible test case rename file add panel async compatibility tests/ added panel async compatibility tests/ marked erreneous panels as non async refactor panel test Add function docstrings update async panel compatibility tests revert middleware back to __call__ and __acall__ approach update architecture.rst documentation fix typo in docs remove ASGI keyword from docs --- debug_toolbar/middleware.py | 45 ++++++++++++++++++- debug_toolbar/panels/__init__.py | 7 +++ debug_toolbar/panels/profiling.py | 1 + debug_toolbar/panels/redirects.py | 1 + debug_toolbar/panels/request.py | 2 + debug_toolbar/panels/sql/panel.py | 2 + debug_toolbar/panels/staticfiles.py | 1 + debug_toolbar/panels/timer.py | 2 + docs/architecture.rst | 10 +++-- .../panels/test_async_panel_compatibility.py | 39 ++++++++++++++++ tests/test_middleware_compatibility.py | 44 ++++++++++++++++++ 11 files changed, 150 insertions(+), 4 deletions(-) create mode 100644 tests/panels/test_async_panel_compatibility.py create mode 100644 tests/test_middleware_compatibility.py diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index b089d1484..03044f3a4 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -6,6 +6,7 @@ import socket from functools import lru_cache +from asgiref.sync import iscoroutinefunction, markcoroutinefunction from django.conf import settings from django.utils.module_loading import import_string @@ -62,14 +63,50 @@ class DebugToolbarMiddleware: on outgoing response. """ + sync_capable = True + async_capable = True + def __init__(self, get_response): self.get_response = get_response + # If get_response is a coroutine function, turns us into async mode so + # a thread is not consumed during a whole request. + self.async_mode = iscoroutinefunction(self.get_response) + + if self.async_mode: + # Mark the class as async-capable, but do the actual switch inside + # __call__ to avoid swapping out dunder methods. + markcoroutinefunction(self) def __call__(self, request): # Decide whether the toolbar is active for this request. + if self.async_mode: + return self.__acall__(request) + # Decide whether the toolbar is active for this request. show_toolbar = get_show_toolbar() if not show_toolbar(request) or DebugToolbar.is_toolbar_request(request): return self.get_response(request) + toolbar = DebugToolbar(request, self.get_response) + # Activate instrumentation ie. monkey-patch. + for panel in toolbar.enabled_panels: + panel.enable_instrumentation() + try: + # Run panels like Django middleware. + response = toolbar.process_request(request) + finally: + clear_stack_trace_caches() + # Deactivate instrumentation ie. monkey-unpatch. This must run + # regardless of the response. Keep 'return' clauses below. + for panel in reversed(toolbar.enabled_panels): + panel.disable_instrumentation() + + return self._postprocess(request, response, toolbar) + + async def __acall__(self, request): + # Decide whether the toolbar is active for this request. + show_toolbar = get_show_toolbar() + if not show_toolbar(request) or DebugToolbar.is_toolbar_request(request): + response = await self.get_response(request) + return response toolbar = DebugToolbar(request, self.get_response) @@ -78,7 +115,7 @@ def __call__(self, request): panel.enable_instrumentation() try: # Run panels like Django middleware. - response = toolbar.process_request(request) + response = await toolbar.process_request(request) finally: clear_stack_trace_caches() # Deactivate instrumentation ie. monkey-unpatch. This must run @@ -86,6 +123,12 @@ def __call__(self, request): for panel in reversed(toolbar.enabled_panels): panel.disable_instrumentation() + return self._postprocess(request, response, toolbar) + + def _postprocess(self, request, response, toolbar): + """ + Post-process the response. + """ # Generate the stats for all requests when the toolbar is being shown, # but not necessarily inserted. for panel in reversed(toolbar.enabled_panels): diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index 57f385a5e..fd3312bc3 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -1,3 +1,4 @@ +from django.core.handlers.asgi import ASGIRequest from django.template.loader import render_to_string from debug_toolbar import settings as dt_settings @@ -9,6 +10,8 @@ class Panel: Base class for panels. """ + is_async = True + def __init__(self, toolbar, get_response): self.toolbar = toolbar self.get_response = get_response @@ -21,6 +24,10 @@ def panel_id(self): @property def enabled(self) -> bool: + # check if the panel is async compatible + if not self.is_async and isinstance(self.toolbar.request, ASGIRequest): + return False + # The user's cookies should override the default value cookie_value = self.toolbar.request.COOKIES.get("djdt" + self.panel_id) if cookie_value is not None: diff --git a/debug_toolbar/panels/profiling.py b/debug_toolbar/panels/profiling.py index 64224a2db..ffe9b7e37 100644 --- a/debug_toolbar/panels/profiling.py +++ b/debug_toolbar/panels/profiling.py @@ -136,6 +136,7 @@ class ProfilingPanel(Panel): Panel that displays profiling information. """ + is_async = False title = _("Profiling") template = "debug_toolbar/panels/profiling.html" diff --git a/debug_toolbar/panels/redirects.py b/debug_toolbar/panels/redirects.py index 195d0cf11..8894d1a18 100644 --- a/debug_toolbar/panels/redirects.py +++ b/debug_toolbar/panels/redirects.py @@ -9,6 +9,7 @@ class RedirectsPanel(Panel): Panel that intercepts redirects and displays a page with debug info. """ + is_async = False has_content = False nav_title = _("Intercept redirects") diff --git a/debug_toolbar/panels/request.py b/debug_toolbar/panels/request.py index a936eba6b..8df382fb3 100644 --- a/debug_toolbar/panels/request.py +++ b/debug_toolbar/panels/request.py @@ -15,6 +15,8 @@ class RequestPanel(Panel): title = _("Request") + is_async = False + @property def nav_subtitle(self): """ diff --git a/debug_toolbar/panels/sql/panel.py b/debug_toolbar/panels/sql/panel.py index 58c1c2738..879be38b0 100644 --- a/debug_toolbar/panels/sql/panel.py +++ b/debug_toolbar/panels/sql/panel.py @@ -109,6 +109,8 @@ class SQLPanel(Panel): the request. """ + is_async = False + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._sql_time = 0 diff --git a/debug_toolbar/panels/staticfiles.py b/debug_toolbar/panels/staticfiles.py index 2eed2efa0..061068a30 100644 --- a/debug_toolbar/panels/staticfiles.py +++ b/debug_toolbar/panels/staticfiles.py @@ -73,6 +73,7 @@ class StaticFilesPanel(panels.Panel): A panel to display the found staticfiles. """ + is_async = False name = "Static files" template = "debug_toolbar/panels/staticfiles.html" diff --git a/debug_toolbar/panels/timer.py b/debug_toolbar/panels/timer.py index 554798e7d..962702f7e 100644 --- a/debug_toolbar/panels/timer.py +++ b/debug_toolbar/panels/timer.py @@ -17,6 +17,8 @@ class TimerPanel(Panel): Panel that displays the time a response took in milliseconds. """ + is_async = False + def nav_subtitle(self): stats = self.get_stats() if hasattr(self, "_start_rusage"): diff --git a/docs/architecture.rst b/docs/architecture.rst index 7be5ac78d..145676459 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -79,6 +79,10 @@ Problematic Parts when the panel module is loaded - ``debug.panels.sql``: This package is particularly complex, but provides the main benefit of the toolbar -- Support for async and multi-threading: This is currently unsupported, but - is being implemented as per the - `Async compatible toolbar project `_. +- Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` + is now async compatible and can process async requests. However certain + panels such as ``SQLPanel``, ``TimerPanel``, ``StaticFilesPanel``, + ``RequestPanel``, ``RedirectsPanel`` and ``ProfilingPanel`` aren't fully + compatible and currently being worked on. For now, these panels + are disabled by default when running in async environment. + follow the progress of this issue in `Async compatible toolbar project `_. diff --git a/tests/panels/test_async_panel_compatibility.py b/tests/panels/test_async_panel_compatibility.py new file mode 100644 index 000000000..d5a85ffbb --- /dev/null +++ b/tests/panels/test_async_panel_compatibility.py @@ -0,0 +1,39 @@ +from django.http import HttpResponse +from django.test import AsyncRequestFactory, RequestFactory, TestCase + +from debug_toolbar.panels import Panel +from debug_toolbar.toolbar import DebugToolbar + + +class MockAsyncPanel(Panel): + is_async = True + + +class MockSyncPanel(Panel): + is_async = False + + +class PanelAsyncCompatibilityTestCase(TestCase): + def setUp(self): + self.async_factory = AsyncRequestFactory() + self.wsgi_factory = RequestFactory() + + def test_panels_with_asgi(self): + async_request = self.async_factory.get("/") + toolbar = DebugToolbar(async_request, lambda request: HttpResponse()) + + async_panel = MockAsyncPanel(toolbar, async_request) + sync_panel = MockSyncPanel(toolbar, async_request) + + self.assertTrue(async_panel.enabled) + self.assertFalse(sync_panel.enabled) + + def test_panels_with_wsgi(self): + wsgi_request = self.wsgi_factory.get("/") + toolbar = DebugToolbar(wsgi_request, lambda request: HttpResponse()) + + async_panel = MockAsyncPanel(toolbar, wsgi_request) + sync_panel = MockSyncPanel(toolbar, wsgi_request) + + self.assertTrue(async_panel.enabled) + self.assertTrue(sync_panel.enabled) diff --git a/tests/test_middleware_compatibility.py b/tests/test_middleware_compatibility.py new file mode 100644 index 000000000..d3025c1ea --- /dev/null +++ b/tests/test_middleware_compatibility.py @@ -0,0 +1,44 @@ +import asyncio + +from django.http import HttpResponse +from django.test import AsyncRequestFactory, RequestFactory, TestCase + +from debug_toolbar.middleware import DebugToolbarMiddleware + + +class MiddlewareSyncAsyncCompatibilityTestCase(TestCase): + def setUp(self): + self.factory = RequestFactory() + self.async_factory = AsyncRequestFactory() + + def test_sync_mode(self): + """ + test middlware switches to sync (__call__) based on get_response type + """ + + request = self.factory.get("/") + middleware = DebugToolbarMiddleware( + lambda x: HttpResponse("Django debug toolbar") + ) + + self.assertFalse(asyncio.iscoroutinefunction(middleware)) + + response = middleware(request) + self.assertEqual(response.status_code, 200) + + async def test_async_mode(self): + """ + test middlware switches to async (__acall__) based on get_response type + and returns a coroutine + """ + + async def get_response(request): + return HttpResponse("Django debug toolbar") + + middleware = DebugToolbarMiddleware(get_response) + request = self.async_factory.get("/") + + self.assertTrue(asyncio.iscoroutinefunction(middleware)) + + response = await middleware(request) + self.assertEqual(response.status_code, 200) From a9a66a99d0899acaf904bf2a4a2021b78e5f962f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Salomv=C3=A1ry?= Date: Tue, 16 Jul 2024 15:58:59 +0200 Subject: [PATCH 03/33] Add async tests (#1835) * Add asynchronous examples (#1819) * Add tests for async usage (#1819) * Include daphne is requirements_dev --- example/README.rst | 10 +++++++ example/asgi.py | 9 +++++++ example/settings.py | 3 ++- example/templates/async_db.html | 14 ++++++++++ example/urls.py | 11 +++++++- example/views.py | 27 +++++++++++++++++++ requirements_dev.txt | 4 +++ tests/panels/test_sql.py | 46 +++++++++++++++++++++++++++++++++ tests/test_integration.py | 44 +++++++++++++++++++++++++++++++ tests/urls.py | 2 ++ tests/views.py | 13 ++++++++++ 11 files changed, 181 insertions(+), 2 deletions(-) create mode 100644 example/asgi.py create mode 100644 example/templates/async_db.html diff --git a/example/README.rst b/example/README.rst index 94c09f8e5..1c34e4893 100644 --- a/example/README.rst +++ b/example/README.rst @@ -46,3 +46,13 @@ environment variable:: $ DB_BACKEND=postgresql python example/manage.py migrate $ DB_BACKEND=postgresql python example/manage.py runserver + +Using an asynchronous (ASGI) server: + +Install [Daphne](https://pypi.org/project/daphne/) first: + + $ python -m pip install daphne + +Then run the Django development server: + + $ ASYNC_SERVER=true python example/manage.py runserver diff --git a/example/asgi.py b/example/asgi.py new file mode 100644 index 000000000..9d7c78703 --- /dev/null +++ b/example/asgi.py @@ -0,0 +1,9 @@ +"""ASGI config for example project.""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings") + +application = get_asgi_application() diff --git a/example/settings.py b/example/settings.py index 26b75fa5c..06b70f7fa 100644 --- a/example/settings.py +++ b/example/settings.py @@ -18,6 +18,7 @@ # Application definition INSTALLED_APPS = [ + *(["daphne"] if os.getenv("ASYNC_SERVER", False) else []), # noqa: FBT003 "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", @@ -66,6 +67,7 @@ USE_TZ = True WSGI_APPLICATION = "example.wsgi.application" +ASGI_APPLICATION = "example.asgi.application" # Cache and database @@ -103,7 +105,6 @@ STATICFILES_DIRS = [os.path.join(BASE_DIR, "example", "static")] - # Only enable the toolbar when we're in debug mode and we're # not running tests. Django will change DEBUG to be False for # tests, so we can't rely on DEBUG alone. diff --git a/example/templates/async_db.html b/example/templates/async_db.html new file mode 100644 index 000000000..771c039e3 --- /dev/null +++ b/example/templates/async_db.html @@ -0,0 +1,14 @@ + + + + + Async DB + + +

Async DB

+

+ Value + {{ user_count }} +

+ + diff --git a/example/urls.py b/example/urls.py index c5e60c309..86e6827fc 100644 --- a/example/urls.py +++ b/example/urls.py @@ -3,7 +3,13 @@ from django.views.generic import TemplateView from debug_toolbar.toolbar import debug_toolbar_urls -from example.views import increment, jinja2_view +from example.views import ( + async_db, + async_db_concurrent, + async_home, + increment, + jinja2_view, +) urlpatterns = [ path("", TemplateView.as_view(template_name="index.html"), name="home"), @@ -13,6 +19,9 @@ name="bad_form", ), path("jinja/", jinja2_view, name="jinja"), + path("async/", async_home, name="async_home"), + path("async/db/", async_db, name="async_db"), + path("async/db-concurrent/", async_db_concurrent, name="async_db_concurrent"), path("jquery/", TemplateView.as_view(template_name="jquery/index.html")), path("mootools/", TemplateView.as_view(template_name="mootools/index.html")), path("prototype/", TemplateView.as_view(template_name="prototype/index.html")), diff --git a/example/views.py b/example/views.py index e7e4c1253..3e1cb04a6 100644 --- a/example/views.py +++ b/example/views.py @@ -1,3 +1,7 @@ +import asyncio + +from asgiref.sync import sync_to_async +from django.contrib.auth.models import User from django.http import JsonResponse from django.shortcuts import render @@ -13,3 +17,26 @@ def increment(request): def jinja2_view(request): return render(request, "index.jinja", {"foo": "bar"}, using="jinja2") + + +async def async_home(request): + return await sync_to_async(render)(request, "index.html") + + +async def async_db(request): + user_count = await User.objects.acount() + + return await sync_to_async(render)( + request, "async_db.html", {"user_count": user_count} + ) + + +async def async_db_concurrent(request): + # Do database queries concurrently + (user_count, _) = await asyncio.gather( + User.objects.acount(), User.objects.filter(username="test").acount() + ) + + return await sync_to_async(render)( + request, "async_db.html", {"user_count": user_count} + ) diff --git a/requirements_dev.txt b/requirements_dev.txt index 8b24a8fbb..03e436622 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -12,6 +12,10 @@ selenium tox black +# Integration support + +daphne # async in Example app + # Documentation Sphinx diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py index 48c9e3845..332e9b1e8 100644 --- a/tests/panels/test_sql.py +++ b/tests/panels/test_sql.py @@ -32,6 +32,20 @@ def sql_call(*, use_iterator=False): return list(qs) +async def async_sql_call(*, use_iterator=False): + qs = User.objects.all() + if use_iterator: + qs = qs.iterator() + return await sync_to_async(list)(qs) + + +async def concurrent_async_sql_call(*, use_iterator=False): + qs = User.objects.all() + if use_iterator: + qs = qs.iterator() + return await asyncio.gather(sync_to_async(list)(qs), User.objects.acount()) + + class SQLPanelTestCase(BaseTestCase): panel_id = "SQLPanel" @@ -57,6 +71,38 @@ def test_recording(self): # ensure the stacktrace is populated self.assertTrue(len(query["stacktrace"]) > 0) + async def test_recording_async(self): + self.assertEqual(len(self.panel._queries), 0) + + await async_sql_call() + + # ensure query was logged + self.assertEqual(len(self.panel._queries), 1) + query = self.panel._queries[0] + self.assertEqual(query["alias"], "default") + self.assertTrue("sql" in query) + self.assertTrue("duration" in query) + self.assertTrue("stacktrace" in query) + + # ensure the stacktrace is populated + self.assertTrue(len(query["stacktrace"]) > 0) + + async def test_recording_concurrent_async(self): + self.assertEqual(len(self.panel._queries), 0) + + await concurrent_async_sql_call() + + # ensure query was logged + self.assertEqual(len(self.panel._queries), 2) + query = self.panel._queries[0] + self.assertEqual(query["alias"], "default") + self.assertTrue("sql" in query) + self.assertTrue("duration" in query) + self.assertTrue("stacktrace" in query) + + # ensure the stacktrace is populated + self.assertTrue(len(query["stacktrace"]) > 0) + @unittest.skipUnless( connection.vendor == "postgresql", "Test valid only on PostgreSQL" ) diff --git a/tests/test_integration.py b/tests/test_integration.py index 95207c21b..e6863e7a9 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -250,6 +250,24 @@ def test_data_gone(self): ) self.assertIn("Please reload the page and retry.", response.json()["content"]) + def test_sql_page(self): + response = self.client.get("/execute_sql/") + self.assertEqual( + len(response.toolbar.get_panel_by_id("SQLPanel").get_stats()["queries"]), 1 + ) + + def test_async_sql_page(self): + response = self.client.get("/async_execute_sql/") + self.assertEqual( + len(response.toolbar.get_panel_by_id("SQLPanel").get_stats()["queries"]), 1 + ) + + def test_concurrent_async_sql_page(self): + response = self.client.get("/async_execute_sql_concurrently/") + self.assertEqual( + len(response.toolbar.get_panel_by_id("SQLPanel").get_stats()["queries"]), 2 + ) + @override_settings(DEBUG=True) class DebugToolbarIntegrationTestCase(IntegrationTestCase): @@ -843,3 +861,29 @@ def test_theme_toggle(self): self.get("/regular/basic/") toolbar = self.selenium.find_element(By.ID, "djDebug") self.assertEqual(toolbar.get_attribute("data-theme"), "light") + + def test_async_sql_action(self): + self.get("/async_execute_sql/") + self.selenium.find_element(By.ID, "SQLPanel") + self.selenium.find_element(By.ID, "djDebugWindow") + + # Click to show the SQL panel + self.selenium.find_element(By.CLASS_NAME, "SQLPanel").click() + + # SQL panel loads + self.wait.until( + EC.visibility_of_element_located((By.CSS_SELECTOR, ".remoteCall")) + ) + + def test_concurrent_async_sql_action(self): + self.get("/async_execute_sql_concurrently/") + self.selenium.find_element(By.ID, "SQLPanel") + self.selenium.find_element(By.ID, "djDebugWindow") + + # Click to show the SQL panel + self.selenium.find_element(By.CLASS_NAME, "SQLPanel").click() + + # SQL panel loads + self.wait.until( + EC.visibility_of_element_located((By.CSS_SELECTOR, ".remoteCall")) + ) diff --git a/tests/urls.py b/tests/urls.py index f8929f1e8..68c6e0354 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -17,6 +17,8 @@ path("non_ascii_request/", views.regular_view, {"title": NonAsciiRepr()}), path("new_user/", views.new_user), path("execute_sql/", views.execute_sql), + path("async_execute_sql/", views.async_execute_sql), + path("async_execute_sql_concurrently/", views.async_execute_sql_concurrently), path("cached_view/", views.cached_view), path("cached_low_level_view/", views.cached_low_level_view), path("json_view/", views.json_view), diff --git a/tests/views.py b/tests/views.py index 8ae4631fe..8b8b75ef6 100644 --- a/tests/views.py +++ b/tests/views.py @@ -1,3 +1,6 @@ +import asyncio + +from asgiref.sync import sync_to_async from django.contrib.auth.models import User from django.core.cache import cache from django.http import HttpResponseRedirect, JsonResponse @@ -11,6 +14,16 @@ def execute_sql(request): return render(request, "base.html") +async def async_execute_sql(request): + await sync_to_async(list)(User.objects.all()) + return render(request, "base.html") + + +async def async_execute_sql_concurrently(request): + await asyncio.gather(sync_to_async(list)(User.objects.all()), User.objects.acount()) + return render(request, "base.html") + + def regular_view(request, title): return render(request, "basic.html", {"title": title}) From f2e389cdbef0a214f51f3c49a35b32e4295dd9c9 Mon Sep 17 00:00:00 2001 From: BERNARD NWABUEZE SUNDAY Date: Fri, 19 Jul 2024 14:14:04 +0100 Subject: [PATCH 04/33] Update installation.rst (#1967) --- docs/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index 9200504b7..6e301cb8b 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -245,8 +245,8 @@ Django Channels & Async ^^^^^^^^^^^^^^^^^^^^^^^ The Debug Toolbar currently doesn't support Django Channels or async projects. -If you are using Django channels are having issues getting panels to load, -please review the documentation for the configuration option +If you are using Django channels and you are having issues getting panels to +load, please review the documentation for the configuration option :ref:`RENDER_PANELS `. From 5d4e97f86193e3e80ef3fc85ed2583ed031002c2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:43:04 +0000 Subject: [PATCH 05/33] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/adamchainz/django-upgrade: 1.19.0 → 1.20.0](https://github.com/adamchainz/django-upgrade/compare/1.19.0...1.20.0) - [github.com/astral-sh/ruff-pre-commit: v0.5.2 → v0.5.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.2...v0.5.4) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a12619911..b8f58290d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,7 +14,7 @@ repos: hooks: - id: doc8 - repo: https://github.com/adamchainz/django-upgrade - rev: 1.19.0 + rev: 1.20.0 hooks: - id: django-upgrade args: [--target-version, "4.2"] @@ -44,7 +44,7 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.5.2' + rev: 'v0.5.4' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] From 23bb473b3bde36fa107048e3cd8be6c7292808a6 Mon Sep 17 00:00:00 2001 From: Dustin Martin Date: Mon, 22 Jul 2024 12:50:40 -0400 Subject: [PATCH 06/33] Make toolbar compatible with `FORCE_SCRIPT_NAME` Previously, if a project used the `FORCE_SCRIPT_NAME` setting (common when hosting a Django application on a subdirectory path via a reverse proxy), the `django.urls.resolve()` call would always raise `Resolver404` in the middleware. As a result, `is_toolbar_request()` always returned False. This caused internal toolbar URLs to be inspected, and also indirectly led to a request loop when refreshing the history panel. In most cases (if `FORCE_SCRIPT_NAME` is unset), `get_script_prefix()` will return "/" and the `replace()` will be a no-op. --- debug_toolbar/toolbar.py | 5 +++-- docs/changes.rst | 3 +++ tests/test_integration.py | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index 04502ab09..7858558f5 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -13,7 +13,7 @@ from django.dispatch import Signal from django.template import TemplateSyntaxError from django.template.loader import render_to_string -from django.urls import include, path, re_path, resolve +from django.urls import get_script_prefix, include, path, re_path, resolve from django.urls.exceptions import Resolver404 from django.utils.module_loading import import_string from django.utils.translation import get_language, override as lang_override @@ -165,7 +165,8 @@ def is_toolbar_request(cls, request): # not have resolver_match set. try: resolver_match = request.resolver_match or resolve( - request.path, getattr(request, "urlconf", None) + request.path.replace(get_script_prefix(), "/", 1), + getattr(request, "urlconf", None), ) except Resolver404: return False diff --git a/docs/changes.rst b/docs/changes.rst index e82c598c2..ddbbdb319 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,6 +4,9 @@ Change log Pending ------- +* Fixed internal toolbar requests being instrumented if the Django setting + ``FORCE_SCRIPT_NAME`` was set. + 4.4.6 (2024-07-10) ------------------ diff --git a/tests/test_integration.py b/tests/test_integration.py index e6863e7a9..eeba37694 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -244,6 +244,23 @@ def test_is_toolbar_request_override_request_urlconf(self): self.request.path = "/__debug__/render_panel/" self.assertTrue(self.toolbar.is_toolbar_request(self.request)) + @patch("debug_toolbar.toolbar.get_script_prefix", return_value="/path/") + def test_is_toolbar_request_with_script_prefix(self, mocked_get_script_prefix): + """ + Test cases when Django is running under a path prefix, such as via the + FORCE_SCRIPT_NAME setting. + """ + self.request.path = "/path/__debug__/render_panel/" + self.assertTrue(self.toolbar.is_toolbar_request(self.request)) + + self.request.path = "/path/invalid/__debug__/render_panel/" + self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + + self.request.path = "/path/render_panel/" + self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + + self.assertEqual(mocked_get_script_prefix.call_count, 3) + def test_data_gone(self): response = self.client.get( "/__debug__/render_panel/?store_id=GONE&panel_id=RequestPanel" From ee258fc15f8fa5133fab2063de4650d9f4afa90a Mon Sep 17 00:00:00 2001 From: Dustin Martin Date: Mon, 22 Jul 2024 15:25:12 -0400 Subject: [PATCH 07/33] Use `path_info` when resolving requests Maintains support for `SCRIPT_NAME` without manually calling `get_script_prefix()`. Tests that involved manually setting the `path` attribute of a request have been reworked to use a `RequestFactory` so that the `path` and `path_info` attributes are both set appropriately. --- debug_toolbar/panels/request.py | 2 +- debug_toolbar/toolbar.py | 5 ++-- tests/panels/test_request.py | 21 ++++++++------ tests/test_integration.py | 50 +++++++++++++++------------------ 4 files changed, 38 insertions(+), 40 deletions(-) diff --git a/debug_toolbar/panels/request.py b/debug_toolbar/panels/request.py index 8df382fb3..f9375b381 100644 --- a/debug_toolbar/panels/request.py +++ b/debug_toolbar/panels/request.py @@ -41,7 +41,7 @@ def generate_stats(self, request, response): "view_urlname": "None", } try: - match = resolve(request.path) + match = resolve(request.path_info) func, args, kwargs = match view_info["view_func"] = get_name_from_obj(func) view_info["view_args"] = args diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index 7858558f5..e1b5474de 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -13,7 +13,7 @@ from django.dispatch import Signal from django.template import TemplateSyntaxError from django.template.loader import render_to_string -from django.urls import get_script_prefix, include, path, re_path, resolve +from django.urls import include, path, re_path, resolve from django.urls.exceptions import Resolver404 from django.utils.module_loading import import_string from django.utils.translation import get_language, override as lang_override @@ -165,8 +165,7 @@ def is_toolbar_request(cls, request): # not have resolver_match set. try: resolver_match = request.resolver_match or resolve( - request.path.replace(get_script_prefix(), "/", 1), - getattr(request, "urlconf", None), + request.path_info, getattr(request, "urlconf", None) ) except Resolver404: return False diff --git a/tests/panels/test_request.py b/tests/panels/test_request.py index ea7f1681a..316e09ed4 100644 --- a/tests/panels/test_request.py +++ b/tests/panels/test_request.py @@ -1,7 +1,10 @@ from django.http import QueryDict +from django.test import RequestFactory from ..base import BaseTestCase +rf = RequestFactory() + class RequestPanelTestCase(BaseTestCase): panel_id = "RequestPanel" @@ -13,9 +16,9 @@ def test_non_ascii_session(self): self.assertIn("où", self.panel.content) def test_object_with_non_ascii_repr_in_request_params(self): - self.request.path = "/non_ascii_request/" - response = self.panel.process_request(self.request) - self.panel.generate_stats(self.request, response) + request = rf.get("/non_ascii_request/") + response = self.panel.process_request(request) + self.panel.generate_stats(request, response) self.assertIn("nôt åscíì", self.panel.content) def test_insert_content(self): @@ -23,11 +26,11 @@ def test_insert_content(self): Test that the panel only inserts content after generate_stats and not the process_request. """ - self.request.path = "/non_ascii_request/" - response = self.panel.process_request(self.request) + request = rf.get("/non_ascii_request/") + response = self.panel.process_request(request) # ensure the panel does not have content yet. self.assertNotIn("nôt åscíì", self.panel.content) - self.panel.generate_stats(self.request, response) + self.panel.generate_stats(request, response) # ensure the panel renders correctly. content = self.panel.content self.assertIn("nôt åscíì", content) @@ -99,9 +102,9 @@ def test_list_for_request_in_method_post(self): self.assertIn("[{'a': 1}, {'b': 2}]", content) def test_namespaced_url(self): - self.request.path = "/admin/login/" - response = self.panel.process_request(self.request) - self.panel.generate_stats(self.request, response) + request = rf.get("/admin/login/") + response = self.panel.process_request(request) + self.panel.generate_stats(request, response) panel_stats = self.panel.get_stats() self.assertEqual(panel_stats["view_urlname"], "admin:login") diff --git a/tests/test_integration.py b/tests/test_integration.py index eeba37694..9571fcaca 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -128,10 +128,10 @@ def test_should_render_panels_multiprocess(self): def _resolve_stats(self, path): # takes stats from Request panel - self.request.path = path + request = rf.get(path) panel = self.toolbar.get_panel_by_id("RequestPanel") - response = panel.process_request(self.request) - panel.generate_stats(self.request, response) + response = panel.process_request(request) + panel.generate_stats(request, response) return panel.get_stats() def test_url_resolving_positional(self): @@ -215,52 +215,48 @@ def test_cache_disable_instrumentation(self): self.assertEqual(len(response.toolbar.get_panel_by_id("CachePanel").calls), 0) def test_is_toolbar_request(self): - self.request.path = "/__debug__/render_panel/" - self.assertTrue(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/__debug__/render_panel/") + self.assertTrue(self.toolbar.is_toolbar_request(request)) - self.request.path = "/invalid/__debug__/render_panel/" - self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/invalid/__debug__/render_panel/") + self.assertFalse(self.toolbar.is_toolbar_request(request)) - self.request.path = "/render_panel/" - self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/render_panel/") + self.assertFalse(self.toolbar.is_toolbar_request(request)) @override_settings(ROOT_URLCONF="tests.urls_invalid") def test_is_toolbar_request_without_djdt_urls(self): """Test cases when the toolbar urls aren't configured.""" - self.request.path = "/__debug__/render_panel/" - self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/__debug__/render_panel/") + self.assertFalse(self.toolbar.is_toolbar_request(request)) - self.request.path = "/render_panel/" - self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/render_panel/") + self.assertFalse(self.toolbar.is_toolbar_request(request)) @override_settings(ROOT_URLCONF="tests.urls_invalid") def test_is_toolbar_request_override_request_urlconf(self): """Test cases when the toolbar URL is configured on the request.""" - self.request.path = "/__debug__/render_panel/" - self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/__debug__/render_panel/") + self.assertFalse(self.toolbar.is_toolbar_request(request)) # Verify overriding the urlconf on the request is valid. - self.request.urlconf = "tests.urls" - self.request.path = "/__debug__/render_panel/" - self.assertTrue(self.toolbar.is_toolbar_request(self.request)) + request.urlconf = "tests.urls" + self.assertTrue(self.toolbar.is_toolbar_request(request)) - @patch("debug_toolbar.toolbar.get_script_prefix", return_value="/path/") - def test_is_toolbar_request_with_script_prefix(self, mocked_get_script_prefix): + def test_is_toolbar_request_with_script_prefix(self): """ Test cases when Django is running under a path prefix, such as via the FORCE_SCRIPT_NAME setting. """ - self.request.path = "/path/__debug__/render_panel/" - self.assertTrue(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/__debug__/render_panel/", SCRIPT_NAME="/path/") + self.assertTrue(self.toolbar.is_toolbar_request(request)) - self.request.path = "/path/invalid/__debug__/render_panel/" - self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + request = rf.get("/invalid/__debug__/render_panel/", SCRIPT_NAME="/path/") + self.assertFalse(self.toolbar.is_toolbar_request(request)) - self.request.path = "/path/render_panel/" + request = rf.get("/render_panel/", SCRIPT_NAME="/path/") self.assertFalse(self.toolbar.is_toolbar_request(self.request)) - self.assertEqual(mocked_get_script_prefix.call_count, 3) - def test_data_gone(self): response = self.client.get( "/__debug__/render_panel/?store_id=GONE&panel_id=RequestPanel" From 969f0a7e0ea49c61da70a96fef1685fcd9236227 Mon Sep 17 00:00:00 2001 From: friedelwolff Date: Fri, 26 Jul 2024 13:32:34 +0200 Subject: [PATCH 08/33] Support select and explain for UNION queries (#1972) * Support select and explain for UNION queries Some UNION queries can start with "(", causing it to not be classified as a SELECT query, and consequently the select and explain buttons are missing on the SQL panel. * Remove unit test limitation to postgresql * Document integration test for postgres union select explain test. --- debug_toolbar/panels/sql/forms.py | 4 ++-- debug_toolbar/panels/sql/panel.py | 10 ++++++---- debug_toolbar/panels/sql/utils.py | 5 +++++ docs/changes.rst | 1 + tests/panels/test_sql.py | 7 +++++++ tests/test_integration.py | 23 +++++++++++++++++++++++ 6 files changed, 44 insertions(+), 6 deletions(-) diff --git a/debug_toolbar/panels/sql/forms.py b/debug_toolbar/panels/sql/forms.py index 0515c5c8e..bb83155f4 100644 --- a/debug_toolbar/panels/sql/forms.py +++ b/debug_toolbar/panels/sql/forms.py @@ -5,7 +5,7 @@ from django.db import connections from django.utils.functional import cached_property -from debug_toolbar.panels.sql.utils import reformat_sql +from debug_toolbar.panels.sql.utils import is_select_query, reformat_sql class SQLSelectForm(forms.Form): @@ -27,7 +27,7 @@ class SQLSelectForm(forms.Form): def clean_raw_sql(self): value = self.cleaned_data["raw_sql"] - if not value.lower().strip().startswith("select"): + if not is_select_query(value): raise ValidationError("Only 'select' queries are allowed.") return value diff --git a/debug_toolbar/panels/sql/panel.py b/debug_toolbar/panels/sql/panel.py index 879be38b0..7be5c4da6 100644 --- a/debug_toolbar/panels/sql/panel.py +++ b/debug_toolbar/panels/sql/panel.py @@ -12,7 +12,11 @@ from debug_toolbar.panels.sql import views from debug_toolbar.panels.sql.forms import SQLSelectForm from debug_toolbar.panels.sql.tracking import wrap_cursor -from debug_toolbar.panels.sql.utils import contrasting_color_generator, reformat_sql +from debug_toolbar.panels.sql.utils import ( + contrasting_color_generator, + is_select_query, + reformat_sql, +) from debug_toolbar.utils import render_stacktrace @@ -266,9 +270,7 @@ def generate_stats(self, request, response): query["sql"] = reformat_sql(query["sql"], with_toggle=True) query["is_slow"] = query["duration"] > sql_warning_threshold - query["is_select"] = ( - query["raw_sql"].lower().lstrip().startswith("select") - ) + query["is_select"] = is_select_query(query["raw_sql"]) query["rgb_color"] = self._databases[alias]["rgb_color"] try: diff --git a/debug_toolbar/panels/sql/utils.py b/debug_toolbar/panels/sql/utils.py index cb4eda348..b8fd34afe 100644 --- a/debug_toolbar/panels/sql/utils.py +++ b/debug_toolbar/panels/sql/utils.py @@ -86,6 +86,11 @@ def process(stmt): return "".join(escaped_value(token) for token in stmt.flatten()) +def is_select_query(sql): + # UNION queries can start with "(". + return sql.lower().lstrip(" (").startswith("select") + + def reformat_sql(sql, *, with_toggle=False): formatted = parse_sql(sql) if not with_toggle: diff --git a/docs/changes.rst b/docs/changes.rst index ddbbdb319..72dd9d2bc 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -3,6 +3,7 @@ Change log Pending ------- +* Support select and explain buttons for ``UNION`` queries on PostgreSQL. * Fixed internal toolbar requests being instrumented if the Django setting ``FORCE_SCRIPT_NAME`` was set. diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py index 332e9b1e8..8e105657b 100644 --- a/tests/panels/test_sql.py +++ b/tests/panels/test_sql.py @@ -729,6 +729,13 @@ def test_similar_and_duplicate_grouping(self): self.assertNotEqual(queries[0]["similar_color"], queries[3]["similar_color"]) self.assertNotEqual(queries[0]["duplicate_color"], queries[3]["similar_color"]) + def test_explain_with_union(self): + list(User.objects.filter(id__lt=20).union(User.objects.filter(id__gt=10))) + response = self.panel.process_request(self.request) + self.panel.generate_stats(self.request, response) + query = self.panel._queries[0] + self.assertTrue(query["is_select"]) + class SQLPanelMultiDBTestCase(BaseMultiDBTestCase): panel_id = "SQLPanel" diff --git a/tests/test_integration.py b/tests/test_integration.py index 9571fcaca..df276d90c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -445,6 +445,29 @@ def test_sql_explain_checks_show_toolbar(self): ) self.assertEqual(response.status_code, 404) + @unittest.skipUnless( + connection.vendor == "postgresql", "Test valid only on PostgreSQL" + ) + def test_sql_explain_postgres_union_query(self): + """ + Confirm select queries that start with a parenthesis can be explained. + """ + url = "/__debug__/sql_explain/" + data = { + "signed": SignedDataForm.sign( + { + "sql": "(SELECT * FROM auth_user) UNION (SELECT * from auth_user)", + "raw_sql": "(SELECT * FROM auth_user) UNION (SELECT * from auth_user)", + "params": "{}", + "alias": "default", + "duration": "0", + } + ) + } + + response = self.client.post(url, data) + self.assertEqual(response.status_code, 200) + @unittest.skipUnless( connection.vendor == "postgresql", "Test valid only on PostgreSQL" ) From c5cdd70d8f143a1e6c526896fcba808a75a6dcce Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 17:46:27 +0000 Subject: [PATCH 09/33] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-eslint: v9.7.0 → v9.8.0](https://github.com/pre-commit/mirrors-eslint/compare/v9.7.0...v9.8.0) - [github.com/astral-sh/ruff-pre-commit: v0.5.4 → v0.5.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.4...v0.5.5) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b8f58290d..5ce696998 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,7 @@ repos: args: - --trailing-comma=es5 - repo: https://github.com/pre-commit/mirrors-eslint - rev: v9.7.0 + rev: v9.8.0 hooks: - id: eslint additional_dependencies: @@ -44,7 +44,7 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.5.4' + rev: 'v0.5.5' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] From 573a87baa9e72b66ae90834b316efea10f76c0fb Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Fri, 2 Aug 2024 18:58:13 +0530 Subject: [PATCH 10/33] toggle debug to true so that debug middleware make a complete run --- tests/test_middleware_compatibility.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_middleware_compatibility.py b/tests/test_middleware_compatibility.py index d3025c1ea..99ed7db82 100644 --- a/tests/test_middleware_compatibility.py +++ b/tests/test_middleware_compatibility.py @@ -1,7 +1,7 @@ import asyncio from django.http import HttpResponse -from django.test import AsyncRequestFactory, RequestFactory, TestCase +from django.test import AsyncRequestFactory, RequestFactory, TestCase, override_settings from debug_toolbar.middleware import DebugToolbarMiddleware @@ -11,6 +11,7 @@ def setUp(self): self.factory = RequestFactory() self.async_factory = AsyncRequestFactory() + @override_settings(DEBUG=True) def test_sync_mode(self): """ test middlware switches to sync (__call__) based on get_response type @@ -26,6 +27,7 @@ def test_sync_mode(self): response = middleware(request) self.assertEqual(response.status_code, 200) + @override_settings(DEBUG=True) async def test_async_mode(self): """ test middlware switches to async (__acall__) based on get_response type From 173b38758e8f455ad8aa9dbebb24ef99b671e1e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20K=C3=A1rolyi?= <987055+karolyi@users.noreply.github.com> Date: Mon, 5 Aug 2024 07:15:11 +0000 Subject: [PATCH 11/33] Quick hack for including csp_nonces from requests into script tags (#1975) Co-authored-by: tschilling --- .gitignore | 1 + debug_toolbar/panels/redirects.py | 6 +- .../templates/debug_toolbar/base.html | 6 +- .../debug_toolbar/includes/panel_content.html | 2 +- .../templates/debug_toolbar/redirect.html | 2 +- debug_toolbar/toolbar.py | 7 +- requirements_dev.txt | 1 + tests/base.py | 4 + tests/test_csp_rendering.py | 140 ++++++++++++++++++ tox.ini | 1 + 10 files changed, 162 insertions(+), 8 deletions(-) create mode 100644 tests/test_csp_rendering.py diff --git a/.gitignore b/.gitignore index 988922d50..c89013a11 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ geckodriver.log coverage.xml .direnv/ .envrc +venv diff --git a/debug_toolbar/panels/redirects.py b/debug_toolbar/panels/redirects.py index 8894d1a18..349564edb 100644 --- a/debug_toolbar/panels/redirects.py +++ b/debug_toolbar/panels/redirects.py @@ -21,7 +21,11 @@ def process_request(self, request): if redirect_to: status_line = f"{response.status_code} {response.reason_phrase}" cookies = response.cookies - context = {"redirect_to": redirect_to, "status_line": status_line} + context = { + "redirect_to": redirect_to, + "status_line": status_line, + "toolbar": self.toolbar, + } # Using SimpleTemplateResponse avoids running global context processors. response = SimpleTemplateResponse( "debug_toolbar/redirect.html", context diff --git a/debug_toolbar/templates/debug_toolbar/base.html b/debug_toolbar/templates/debug_toolbar/base.html index 4867a834e..b0308be55 100644 --- a/debug_toolbar/templates/debug_toolbar/base.html +++ b/debug_toolbar/templates/debug_toolbar/base.html @@ -1,10 +1,10 @@ {% load i18n static %} {% block css %} - - + + {% endblock %} {% block js %} - + {% endblock %}
{{ panel.title }}
{% if toolbar.should_render_panels %} - {% for script in panel.scripts %}{% endfor %} + {% for script in panel.scripts %}{% endfor %}
{{ panel.content }}
{% else %}
diff --git a/debug_toolbar/templates/debug_toolbar/redirect.html b/debug_toolbar/templates/debug_toolbar/redirect.html index 96b97de2d..cb6b4a6ea 100644 --- a/debug_toolbar/templates/debug_toolbar/redirect.html +++ b/debug_toolbar/templates/debug_toolbar/redirect.html @@ -3,7 +3,7 @@ Django Debug Toolbar Redirects Panel: {{ status_line }} - +

{{ status_line }}

diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index e1b5474de..35d789a53 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -4,9 +4,11 @@ import re import uuid -from collections import OrderedDict from functools import lru_cache +# Can be removed when python3.8 is dropped +from typing import OrderedDict + from django.apps import apps from django.conf import settings from django.core.exceptions import ImproperlyConfigured @@ -19,6 +21,7 @@ from django.utils.translation import get_language, override as lang_override from debug_toolbar import APP_NAME, settings as dt_settings +from debug_toolbar.panels import Panel class DebugToolbar: @@ -38,7 +41,7 @@ def __init__(self, request, get_response): # Use OrderedDict for the _panels attribute so that items can be efficiently # removed using FIFO order in the DebugToolbar.store() method. The .popitem() # method of Python's built-in dict only supports LIFO removal. - self._panels = OrderedDict() + self._panels = OrderedDict[str, Panel]() while panels: panel = panels.pop() self._panels[panel.panel_id] = panel diff --git a/requirements_dev.txt b/requirements_dev.txt index 03e436622..e66eba5c6 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -11,6 +11,7 @@ html5lib selenium tox black +django-csp # Used in tests/test_csp_rendering # Integration support diff --git a/tests/base.py b/tests/base.py index 5cc432add..9d12c5219 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1,8 +1,11 @@ +from typing import Optional + import html5lib from asgiref.local import Local from django.http import HttpResponse from django.test import Client, RequestFactory, TestCase, TransactionTestCase +from debug_toolbar.panels import Panel from debug_toolbar.toolbar import DebugToolbar @@ -32,6 +35,7 @@ def handle_toolbar_created(sender, toolbar=None, **kwargs): class BaseMixin: client_class = ToolbarTestClient + panel: Optional[Panel] = None panel_id = None def setUp(self): diff --git a/tests/test_csp_rendering.py b/tests/test_csp_rendering.py new file mode 100644 index 000000000..5e355b15a --- /dev/null +++ b/tests/test_csp_rendering.py @@ -0,0 +1,140 @@ +from typing import Dict, cast +from xml.etree.ElementTree import Element + +from django.conf import settings +from django.http.response import HttpResponse +from django.test.utils import ContextList, override_settings +from html5lib.constants import E +from html5lib.html5parser import HTMLParser + +from debug_toolbar.toolbar import DebugToolbar + +from .base import IntegrationTestCase + + +def get_namespaces(element: Element) -> Dict[str, str]: + """ + Return the default `xmlns`. See + https://docs.python.org/3/library/xml.etree.elementtree.html#parsing-xml-with-namespaces + """ + if not element.tag.startswith("{"): + return {} + return {"": element.tag[1:].split("}", maxsplit=1)[0]} + + +@override_settings(DEBUG=True) +class CspRenderingTestCase(IntegrationTestCase): + """Testing if `csp-nonce` renders.""" + + def setUp(self): + super().setUp() + self.parser = HTMLParser() + + def _fail_if_missing( + self, root: Element, path: str, namespaces: Dict[str, str], nonce: str + ): + """ + Search elements, fail if a `nonce` attribute is missing on them. + """ + elements = root.findall(path=path, namespaces=namespaces) + for item in elements: + if item.attrib.get("nonce") != nonce: + raise self.failureException(f"{item} has no nonce attribute.") + + def _fail_if_found(self, root: Element, path: str, namespaces: Dict[str, str]): + """ + Search elements, fail if a `nonce` attribute is found on them. + """ + elements = root.findall(path=path, namespaces=namespaces) + for item in elements: + if "nonce" in item.attrib: + raise self.failureException(f"{item} has a nonce attribute.") + + def _fail_on_invalid_html(self, content: bytes, parser: HTMLParser): + """Fail if the passed HTML is invalid.""" + if parser.errors: + default_msg = ["Content is invalid HTML:"] + lines = content.split(b"\n") + for position, error_code, data_vars in parser.errors: + default_msg.append(" %s" % E[error_code] % data_vars) + default_msg.append(" %r" % lines[position[0] - 1]) + msg = self._formatMessage(None, "\n".join(default_msg)) + raise self.failureException(msg) + + @override_settings( + MIDDLEWARE=settings.MIDDLEWARE + ["csp.middleware.CSPMiddleware"] + ) + def test_exists(self): + """A `nonce` should exist when using the `CSPMiddleware`.""" + response = cast(HttpResponse, self.client.get(path="/regular/basic/")) + self.assertEqual(response.status_code, 200) + + html_root: Element = self.parser.parse(stream=response.content) + self._fail_on_invalid_html(content=response.content, parser=self.parser) + self.assertContains(response, "djDebug") + + namespaces = get_namespaces(element=html_root) + toolbar = list(DebugToolbar._store.values())[0] + nonce = str(toolbar.request.csp_nonce) + self._fail_if_missing( + root=html_root, path=".//link", namespaces=namespaces, nonce=nonce + ) + self._fail_if_missing( + root=html_root, path=".//script", namespaces=namespaces, nonce=nonce + ) + + @override_settings( + DEBUG_TOOLBAR_CONFIG={"DISABLE_PANELS": set()}, + MIDDLEWARE=settings.MIDDLEWARE + ["csp.middleware.CSPMiddleware"], + ) + def test_redirects_exists(self): + response = cast(HttpResponse, self.client.get(path="/regular/basic/")) + self.assertEqual(response.status_code, 200) + + html_root: Element = self.parser.parse(stream=response.content) + self._fail_on_invalid_html(content=response.content, parser=self.parser) + self.assertContains(response, "djDebug") + + namespaces = get_namespaces(element=html_root) + context: ContextList = response.context # pyright: ignore[reportAttributeAccessIssue] + nonce = str(context["toolbar"].request.csp_nonce) + self._fail_if_missing( + root=html_root, path=".//link", namespaces=namespaces, nonce=nonce + ) + self._fail_if_missing( + root=html_root, path=".//script", namespaces=namespaces, nonce=nonce + ) + + @override_settings( + MIDDLEWARE=settings.MIDDLEWARE + ["csp.middleware.CSPMiddleware"] + ) + def test_panel_content_nonce_exists(self): + response = cast(HttpResponse, self.client.get(path="/regular/basic/")) + self.assertEqual(response.status_code, 200) + + toolbar = list(DebugToolbar._store.values())[0] + panels_to_check = ["HistoryPanel", "TimerPanel"] + for panel in panels_to_check: + content = toolbar.get_panel_by_id(panel).content + html_root: Element = self.parser.parse(stream=content) + namespaces = get_namespaces(element=html_root) + nonce = str(toolbar.request.csp_nonce) + self._fail_if_missing( + root=html_root, path=".//link", namespaces=namespaces, nonce=nonce + ) + self._fail_if_missing( + root=html_root, path=".//script", namespaces=namespaces, nonce=nonce + ) + + def test_missing(self): + """A `nonce` should not exist when not using the `CSPMiddleware`.""" + response = cast(HttpResponse, self.client.get(path="/regular/basic/")) + self.assertEqual(response.status_code, 200) + + html_root: Element = self.parser.parse(stream=response.content) + self._fail_on_invalid_html(content=response.content, parser=self.parser) + self.assertContains(response, "djDebug") + + namespaces = get_namespaces(element=html_root) + self._fail_if_found(root=html_root, path=".//link", namespaces=namespaces) + self._fail_if_found(root=html_root, path=".//script", namespaces=namespaces) diff --git a/tox.ini b/tox.ini index a0e72827a..160b33db7 100644 --- a/tox.ini +++ b/tox.ini @@ -21,6 +21,7 @@ deps = pygments selenium>=4.8.0 sqlparse + django-csp passenv= CI COVERAGE_ARGS From aea6cc6a72c75aa7206ebd08889ff3c0b12eb9af Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 21:31:11 +0200 Subject: [PATCH 12/33] [pre-commit.ci] pre-commit autoupdate (#1980) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.5.5 → v0.5.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.5...v0.5.6) - [github.com/tox-dev/pyproject-fmt: 2.1.4 → 2.2.1](https://github.com/tox-dev/pyproject-fmt/compare/2.1.4...2.2.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5ce696998..5db940f33 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,13 +44,13 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.5.5' + rev: 'v0.5.6' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - id: ruff-format - repo: https://github.com/tox-dev/pyproject-fmt - rev: 2.1.4 + rev: 2.2.1 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject From 89568d52b97a97e9e6f8c5c99fd7439c29f1f61a Mon Sep 17 00:00:00 2001 From: Jon Ribbens Date: Tue, 6 Aug 2024 13:00:22 +0100 Subject: [PATCH 13/33] Slightly increase opacity of debug toolbar button (#1982) * Slightly increase opacity of debug toolbar button Avoids an accessibility issue (low-contrast text) when the page behind the button is white. Fixes #1981 * Add line to changelog. --------- Co-authored-by: Tim Schilling --- debug_toolbar/static/debug_toolbar/css/toolbar.css | 2 +- docs/changes.rst | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debug_toolbar/static/debug_toolbar/css/toolbar.css b/debug_toolbar/static/debug_toolbar/css/toolbar.css index e495eeb0c..79f42ae56 100644 --- a/debug_toolbar/static/debug_toolbar/css/toolbar.css +++ b/debug_toolbar/static/debug_toolbar/css/toolbar.css @@ -301,7 +301,7 @@ font-size: 22px; font-weight: bold; background: #000; - opacity: 0.5; + opacity: 0.6; } #djDebug #djShowToolBarButton:hover { diff --git a/docs/changes.rst b/docs/changes.rst index 72dd9d2bc..d867b7d80 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -3,10 +3,11 @@ Change log Pending ------- -* Support select and explain buttons for ``UNION`` queries on PostgreSQL. +* Support select and explain buttons for ``UNION`` queries on PostgreSQL. * Fixed internal toolbar requests being instrumented if the Django setting ``FORCE_SCRIPT_NAME`` was set. +* Increase opacity of show Debug Toolbar handle to improve accessibility. 4.4.6 (2024-07-10) ------------------ From 405f9f23d3e233fabb88d2012b28b37c2d89f29e Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Tue, 6 Aug 2024 17:36:38 +0530 Subject: [PATCH 14/33] Async compatible redirect panel (#1976) * make redirect panel async capable by using aprocess_request patterm * added async compability test for redirect panel * remove redundant call for super process_request --- debug_toolbar/panels/redirects.py | 25 ++++++++++++++++++++++--- docs/architecture.rst | 2 +- docs/changes.rst | 1 + tests/panels/test_redirects.py | 15 +++++++++++++++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/debug_toolbar/panels/redirects.py b/debug_toolbar/panels/redirects.py index 349564edb..71c008f1b 100644 --- a/debug_toolbar/panels/redirects.py +++ b/debug_toolbar/panels/redirects.py @@ -1,3 +1,5 @@ +from inspect import iscoroutine + from django.template.response import SimpleTemplateResponse from django.utils.translation import gettext_lazy as _ @@ -9,13 +11,15 @@ class RedirectsPanel(Panel): Panel that intercepts redirects and displays a page with debug info. """ - is_async = False + is_async = True has_content = False nav_title = _("Intercept redirects") - def process_request(self, request): - response = super().process_request(request) + def _process_response(self, response): + """ + Common response processing logic. + """ if 300 <= response.status_code < 400: redirect_to = response.get("Location") if redirect_to: @@ -33,3 +37,18 @@ def process_request(self, request): response.cookies = cookies response.render() return response + + async def aprocess_request(self, request, response_coroutine): + """ + Async version of process_request. used for accessing the response + by awaiting it when running in ASGI. + """ + + response = await response_coroutine + return self._process_response(response) + + def process_request(self, request): + response = super().process_request(request) + if iscoroutine(response): + return self.aprocess_request(request, response) + return self._process_response(response) diff --git a/docs/architecture.rst b/docs/architecture.rst index 145676459..c49bfef0f 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -82,7 +82,7 @@ Problematic Parts - Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` is now async compatible and can process async requests. However certain panels such as ``SQLPanel``, ``TimerPanel``, ``StaticFilesPanel``, - ``RequestPanel``, ``RedirectsPanel`` and ``ProfilingPanel`` aren't fully + ``RequestPanel`` and ``ProfilingPanel`` aren't fully compatible and currently being worked on. For now, these panels are disabled by default when running in async environment. follow the progress of this issue in `Async compatible toolbar project `_. diff --git a/docs/changes.rst b/docs/changes.rst index d867b7d80..d4a81ffca 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -8,6 +8,7 @@ Pending * Fixed internal toolbar requests being instrumented if the Django setting ``FORCE_SCRIPT_NAME`` was set. * Increase opacity of show Debug Toolbar handle to improve accessibility. +* Changed the ``RedirectsPanel`` to be async compatible. 4.4.6 (2024-07-10) ------------------ diff --git a/tests/panels/test_redirects.py b/tests/panels/test_redirects.py index 6b67e6f1d..2abed9fd0 100644 --- a/tests/panels/test_redirects.py +++ b/tests/panels/test_redirects.py @@ -2,6 +2,7 @@ from django.conf import settings from django.http import HttpResponse +from django.test import AsyncRequestFactory from ..base import BaseTestCase @@ -70,3 +71,17 @@ def test_insert_content(self): self.assertIsNotNone(response) response = self.panel.generate_stats(self.request, redirect) self.assertIsNone(response) + + async def test_async_compatibility(self): + redirect = HttpResponse(status=302) + + async def get_response(request): + return redirect + + await_response = await get_response(self.request) + self._get_response = get_response + + self.request = AsyncRequestFactory().get("/") + response = await self.panel.process_request(self.request) + self.assertIsInstance(response, HttpResponse) + self.assertTrue(response is await_response) From 45cbf41d56bda52e8a346e6f9b6cd8bd12d88ab2 Mon Sep 17 00:00:00 2001 From: Elyas Ebrahimpour Date: Thu, 25 Jan 2024 00:55:50 +0330 Subject: [PATCH 15/33] :wrench: update translation for Persian language --- debug_toolbar/locale/fa/LC_MESSAGES/django.po | 81 ++++++++++--------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/debug_toolbar/locale/fa/LC_MESSAGES/django.po b/debug_toolbar/locale/fa/LC_MESSAGES/django.po index 1c9c1b32f..fe2c6317a 100644 --- a/debug_toolbar/locale/fa/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/fa/LC_MESSAGES/django.po @@ -4,6 +4,7 @@ # # Translators: # Ali Soltani , 2021 +# Elyas Ebrahimpour , 2024 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" @@ -31,15 +32,15 @@ msgstr "Cache" #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(cache_calls)d فراخوان در %(time).2f میلی‌ثانیه" +msgstr[1] "%(cache_calls)d فراخوان در %(time).2f میلی‌ثانیه" #: panels/cache.py:195 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "فراخوان‌های کش از %(count)d بک‌اند" +msgstr[1] "فراخوان‌های کش از %(count)d بک‌اندها" #: panels/headers.py:31 msgid "Headers" @@ -55,7 +56,7 @@ msgstr "نمایه سازی" #: panels/redirects.py:14 msgid "Intercept redirects" -msgstr "" +msgstr "رهگیری تغییر مسیرها" #: panels/request.py:16 msgid "Request" @@ -63,11 +64,11 @@ msgstr "ریکوئست" #: panels/request.py:36 msgid "" -msgstr "" +msgstr "<بدون نمایش>" #: panels/request.py:53 msgid "" -msgstr "" +msgstr "<در دسترس نیست>" #: panels/settings.py:17 msgid "Settings" @@ -82,19 +83,19 @@ msgstr "تنظیمات از %s" #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(num_receivers)d گیرنده از 1 سیگنال" +msgstr[1] "%(num_receivers)d گیرنده از 1 سیگنال" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(num_receivers)d گیرنده از %(num_signals)d سیگنال" +msgstr[1] "%(num_receivers)d گیرنده از %(num_signals)d سیگنال" #: panels/signals.py:67 msgid "Signals" -msgstr "signal ها" +msgstr "سیگنال‌ها" #: panels/sql/panel.py:23 msgid "Autocommit" @@ -102,15 +103,15 @@ msgstr "کامیت خودکار" #: panels/sql/panel.py:24 msgid "Read uncommitted" -msgstr "" +msgstr "خواندن بدون تاثیر" #: panels/sql/panel.py:25 msgid "Read committed" -msgstr "" +msgstr "خواندن با تاثیر" #: panels/sql/panel.py:26 msgid "Repeatable read" -msgstr "" +msgstr "خواندن تکرارپذیر" #: panels/sql/panel.py:27 msgid "Serializable" @@ -144,20 +145,21 @@ msgstr "اس کیو ال" #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه" +msgstr[1] "%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه" #: panels/sql/panel.py:147 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "کوئری‌های SQL از %(count)d اتصال" +msgstr[1] "کوئری‌های SQL از %(count)d اتصال" #: panels/staticfiles.py:84 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" -msgstr "" +msgstr "فایل‌های استاتیک (%(num_found)s یافته شده، %(num_used)s استفاده شده)" + #: panels/staticfiles.py:105 msgid "Static files" @@ -167,8 +169,8 @@ msgstr "فایل های استاتیک" #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(num_used)s فایل استفاده شده" +msgstr[1] "%(num_used)s فایل استفاده شده" #: panels/templates/panel.py:143 msgid "Templates" @@ -186,12 +188,12 @@ msgstr "بدون origin" #: panels/timer.py:25 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" -msgstr "" +msgstr "پردازنده: %(cum)0.2f میلی‌ثانیه (%(total)0.2f میلی‌ثانیه)" #: panels/timer.py:30 #, python-format msgid "Total: %0.2fms" -msgstr "" +msgstr "مجموع: %0.2f میلی‌ثانیه" #: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 @@ -207,7 +209,7 @@ msgstr "زمان سی پی یو کاربر" #: panels/timer.py:44 #, python-format msgid "%(utime)0.3f msec" -msgstr "" +msgstr "%(utime)0.3f میلی‌ثانیه" #: panels/timer.py:45 msgid "System CPU time" @@ -216,7 +218,7 @@ msgstr "زمان CPU سیستم" #: panels/timer.py:45 #, python-format msgid "%(stime)0.3f msec" -msgstr "" +msgstr "%(stime)0.3f میلی‌ثانیه" #: panels/timer.py:46 msgid "Total CPU time" @@ -234,16 +236,16 @@ msgstr "زمان سپری شده" #: panels/timer.py:47 #, python-format msgid "%(total_time)0.3f msec" -msgstr "" +msgstr "%(total_time)0.3f میلی‌ثانیه" #: panels/timer.py:49 msgid "Context switches" -msgstr "" +msgstr "تغییرات زمینه" #: panels/timer.py:50 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" -msgstr "" +msgstr "%(vcsw)d اختیاری، %(ivcsw)d غیراختیاری" #: panels/versions.py:19 msgid "Versions" @@ -287,9 +289,7 @@ msgstr "Cache hits" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" -msgstr "" -"Cache misses\n" -" " +msgstr "عدم دسترسی به کش" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" @@ -297,7 +297,7 @@ msgstr "دستورات" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" -msgstr "call ها" +msgstr "فراخوانی ها" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:36 @@ -524,7 +524,7 @@ msgstr "کوئری SQL ای در این ریکوئست ثبت نشده است" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" -msgstr "" +msgstr "توضیح SQL" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 @@ -548,7 +548,7 @@ msgstr "خطا" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" -msgstr "" +msgstr "انتخاب شده SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" @@ -616,13 +616,13 @@ msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" -msgstr "" +msgstr "تغییر متن" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "پردازشگر محیط" +msgstr[1] "پردازشگرهای محیط" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -642,7 +642,7 @@ msgstr "ویژگی زمان بندی" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" -msgstr "" +msgstr "میلی‌ثانیه از آغاز ناوبری (+length)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" @@ -666,6 +666,9 @@ msgid "" "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" +"نوار ابزار اشکال‌زدای Django یک هدایت به URL بالا را به منظور مشاهده اشکال " +"توسط ابزار اشکال‌زدای افزونه کرده است. می‌توانید بر روی پیوند بالا کلیک " +"کنید تا با هدایت به صورت عادی ادامه دهید." #: views.py:16 msgid "" From 9e30a06e418ecdd4eeb837530b86be40bb1e3d2d Mon Sep 17 00:00:00 2001 From: Matthias Kestenholz Date: Tue, 6 Aug 2024 14:28:30 +0200 Subject: [PATCH 16/33] Add a paragraph describing our stance on Python typing (#1979) --- docs/contributing.rst | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/contributing.rst b/docs/contributing.rst index 0021a88fa..c94d9e74c 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -112,10 +112,10 @@ For MySQL/MariaDB in a ``mysql`` shell:: Style ----- -The Django Debug Toolbar uses `black `__ to -format code and additionally uses ruff. The toolbar uses -`pre-commit `__ to automatically apply our style -guidelines when a commit is made. Set up pre-commit before committing with:: +The Django Debug Toolbar uses `ruff `__ to +format and lint Python code. The toolbar uses `pre-commit +`__ to automatically apply our style guidelines when a +commit is made. Set up pre-commit before committing with:: $ pre-commit install @@ -129,6 +129,18 @@ To reformat the code manually use:: $ pre-commit run --all-files + +Typing +------ + +The Debug Toolbar has been accepting patches which add type hints to the code +base, as long as the types themselves do not cause any problems or obfuscate +the intent. + +The maintainers are not committed to adding type hints and are not requiring +new code to have type hints at this time. This may change in the future. + + Patches ------- From f6699300a81cbedaddef15a15cea227db9cfb9f3 Mon Sep 17 00:00:00 2001 From: myou1985 Date: Tue, 13 Aug 2024 21:52:11 +0900 Subject: [PATCH 17/33] Use higher contrast when dark mode is enabled (#1987) * Added table background color setting when dark theme --- debug_toolbar/static/debug_toolbar/css/toolbar.css | 1 + docs/changes.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/debug_toolbar/static/debug_toolbar/css/toolbar.css b/debug_toolbar/static/debug_toolbar/css/toolbar.css index 79f42ae56..8a19ab646 100644 --- a/debug_toolbar/static/debug_toolbar/css/toolbar.css +++ b/debug_toolbar/static/debug_toolbar/css/toolbar.css @@ -61,6 +61,7 @@ --djdt-font-color: #8393a7; --djdt-background-color: #1e293bff; --djdt-panel-content-background-color: #0f1729ff; + --djdt-panel-content-table-background-color: var(--djdt-background-color); --djdt-panel-title-background-color: #242432; --djdt-djdt-panel-content-table-strip-background-color: #324154ff; --djdt--highlighted-background-color: #2c2a7dff; diff --git a/docs/changes.rst b/docs/changes.rst index d4a81ffca..b233dadc6 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -9,6 +9,7 @@ Pending ``FORCE_SCRIPT_NAME`` was set. * Increase opacity of show Debug Toolbar handle to improve accessibility. * Changed the ``RedirectsPanel`` to be async compatible. +* Increased the contrast of text with dark mode enabled. 4.4.6 (2024-07-10) ------------------ From d3ea31b648879ecff595d928b54f82a438b1192e Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Fri, 2 Aug 2024 10:51:01 -0500 Subject: [PATCH 18/33] Switch to Django Commons code of conduct --- CODE_OF_CONDUCT.md | 47 ++-------------------------------------------- 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index e0d5efab5..5fedea529 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,46 +1,3 @@ -# Code of Conduct +# Django Debug Toolbar Code of Conduct -As contributors and maintainers of the Jazzband projects, and in the interest of -fostering an open and welcoming community, we pledge to respect all people who -contribute through reporting issues, posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. - -We are committed to making participation in the Jazzband a harassment-free experience -for everyone, regardless of the level of experience, gender, gender identity and -expression, sexual orientation, disability, personal appearance, body size, race, -ethnicity, age, religion, or nationality. - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery -- Personal attacks -- Trolling or insulting/derogatory comments -- Public or private harassment -- Publishing other's private information, such as physical or electronic addresses, - without explicit permission -- Other unethical or unprofessional conduct - -The Jazzband roadies have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are not -aligned to this Code of Conduct, or to ban temporarily or permanently any contributor -for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -By adopting this Code of Conduct, the roadies commit themselves to fairly and -consistently applying these principles to every aspect of managing the jazzband -projects. Roadies who do not follow or enforce the Code of Conduct may be permanently -removed from the Jazzband roadies. - -This code of conduct applies both within project spaces and in public spaces when an -individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by -contacting the roadies at `roadies@jazzband.co`. All complaints will be reviewed and -investigated and will result in a response that is deemed necessary and appropriate to -the circumstances. Roadies are obligated to maintain confidentiality with regard to the -reporter of an incident. - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version -1.3.0, available at [https://contributor-covenant.org/version/1/3/0/][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/3/0/ +The django-debug-toolbar project utilizes the [Django Commons Code of Conduct](https://github.com/django-commons/membership/blob/main/CODE_OF_CONDUCT.md). From 2cad608dd9ec7d2cc11c5e379e13bed4df28f730 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Tue, 6 Aug 2024 07:14:56 -0500 Subject: [PATCH 19/33] Create new translatable strings. --- debug_toolbar/locale/en/LC_MESSAGES/django.po | 128 +++++++++++------- 1 file changed, 82 insertions(+), 46 deletions(-) diff --git a/debug_toolbar/locale/en/LC_MESSAGES/django.po b/debug_toolbar/locale/en/LC_MESSAGES/django.po index 8fafee164..9dc155bef 100644 --- a/debug_toolbar/locale/en/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/en/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2012-03-31 20:10+0000\n" "Last-Translator: \n" "Language-Team: \n" @@ -16,22 +16,46 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -42,7 +66,7 @@ msgstr[1] "" msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -50,7 +74,7 @@ msgstr "" msgid "Profiling" msgstr "" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -58,11 +82,11 @@ msgstr "" msgid "Request" msgstr "" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -93,151 +117,151 @@ msgstr[1] "" msgid "Signals" msgstr "" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -246,15 +270,19 @@ msgstr "" msgid "Versions" msgstr "" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" @@ -266,6 +294,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" From c44e6683312ede444215bc149d5b846eebd15a90 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Tue, 6 Aug 2024 07:20:07 -0500 Subject: [PATCH 20/33] Update the transifex contributing docs and client version. --- .tx/config | 14 ++++++++------ docs/contributing.rst | 3 +++ requirements_dev.txt | 1 - 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.tx/config b/.tx/config index 5c9ecc129..15e624db3 100644 --- a/.tx/config +++ b/.tx/config @@ -1,8 +1,10 @@ [main] -host = https://www.transifex.com -lang_map = sr@latin:sr_Latn +host = https://www.transifex.com +lang_map = sr@latin: sr_Latn -[django-debug-toolbar.main] -file_filter = debug_toolbar/locale//LC_MESSAGES/django.po -source_file = debug_toolbar/locale/en/LC_MESSAGES/django.po -source_lang = en +[o:django-debug-toolbar:p:django-debug-toolbar:r:main] +file_filter = debug_toolbar/locale//LC_MESSAGES/django.po +source_file = debug_toolbar/locale/en/LC_MESSAGES/django.po +source_lang = en +replace_edited_strings = false +keep_translations = false diff --git a/docs/contributing.rst b/docs/contributing.rst index c94d9e74c..832ef4679 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -172,6 +172,9 @@ Prior to a release, the English ``.po`` file must be updated with ``make translatable_strings`` and pushed to Transifex. Once translators have done their job, ``.po`` files must be downloaded with ``make update_translations``. +You will need to +`install the Transifex CLI `_. + To publish a release you have to be a `django-debug-toolbar project lead at Jazzband `__. diff --git a/requirements_dev.txt b/requirements_dev.txt index e66eba5c6..d28391b7c 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -26,4 +26,3 @@ sphinx-rtd-theme>1 # Other tools pre-commit -transifex-client From 1bbdf387cf278ae158a8553a7c356b31ca62302e Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Tue, 6 Aug 2024 07:21:45 -0500 Subject: [PATCH 21/33] Update translatable strings --- debug_toolbar/locale/bg/LC_MESSAGES/django.mo | Bin 0 -> 11903 bytes debug_toolbar/locale/bg/LC_MESSAGES/django.po | 705 ++++++++++++++++++ debug_toolbar/locale/ca/LC_MESSAGES/django.mo | Bin 2875 -> 2620 bytes debug_toolbar/locale/ca/LC_MESSAGES/django.po | 148 ++-- debug_toolbar/locale/cs/LC_MESSAGES/django.mo | Bin 9526 -> 10854 bytes debug_toolbar/locale/cs/LC_MESSAGES/django.po | 221 +++--- debug_toolbar/locale/de/LC_MESSAGES/django.mo | Bin 10180 -> 9839 bytes debug_toolbar/locale/de/LC_MESSAGES/django.po | 159 ++-- debug_toolbar/locale/es/LC_MESSAGES/django.mo | Bin 9967 -> 10073 bytes debug_toolbar/locale/es/LC_MESSAGES/django.po | 172 +++-- debug_toolbar/locale/fa/LC_MESSAGES/django.mo | Bin 6597 -> 10013 bytes debug_toolbar/locale/fa/LC_MESSAGES/django.po | 147 ++-- debug_toolbar/locale/fi/LC_MESSAGES/django.mo | Bin 4659 -> 4200 bytes debug_toolbar/locale/fi/LC_MESSAGES/django.po | 162 ++-- debug_toolbar/locale/fr/LC_MESSAGES/django.mo | Bin 10291 -> 10446 bytes debug_toolbar/locale/fr/LC_MESSAGES/django.po | 178 +++-- debug_toolbar/locale/he/LC_MESSAGES/django.mo | Bin 1562 -> 1354 bytes debug_toolbar/locale/he/LC_MESSAGES/django.po | 158 ++-- debug_toolbar/locale/id/LC_MESSAGES/django.mo | Bin 2948 -> 2549 bytes debug_toolbar/locale/id/LC_MESSAGES/django.po | 152 ++-- debug_toolbar/locale/it/LC_MESSAGES/django.mo | Bin 8532 -> 8545 bytes debug_toolbar/locale/it/LC_MESSAGES/django.po | 167 +++-- debug_toolbar/locale/ja/LC_MESSAGES/django.mo | Bin 3365 -> 3035 bytes debug_toolbar/locale/ja/LC_MESSAGES/django.po | 137 ++-- debug_toolbar/locale/ko/LC_MESSAGES/django.mo | Bin 0 -> 8483 bytes debug_toolbar/locale/ko/LC_MESSAGES/django.po | 690 +++++++++++++++++ debug_toolbar/locale/nl/LC_MESSAGES/django.mo | Bin 4274 -> 3956 bytes debug_toolbar/locale/nl/LC_MESSAGES/django.po | 156 ++-- debug_toolbar/locale/pl/LC_MESSAGES/django.mo | Bin 4810 -> 5609 bytes debug_toolbar/locale/pl/LC_MESSAGES/django.po | 212 +++--- debug_toolbar/locale/pt/LC_MESSAGES/django.mo | Bin 3030 -> 2935 bytes debug_toolbar/locale/pt/LC_MESSAGES/django.po | 169 +++-- .../locale/pt_BR/LC_MESSAGES/django.mo | Bin 9018 -> 9026 bytes .../locale/pt_BR/LC_MESSAGES/django.po | 200 +++-- debug_toolbar/locale/ru/LC_MESSAGES/django.mo | Bin 11888 -> 11468 bytes debug_toolbar/locale/ru/LC_MESSAGES/django.po | 156 ++-- debug_toolbar/locale/sk/LC_MESSAGES/django.mo | Bin 9984 -> 9176 bytes debug_toolbar/locale/sk/LC_MESSAGES/django.po | 240 +++--- .../locale/sv_SE/LC_MESSAGES/django.mo | Bin 2362 -> 2132 bytes .../locale/sv_SE/LC_MESSAGES/django.po | 152 ++-- debug_toolbar/locale/uk/LC_MESSAGES/django.mo | Bin 2001 -> 11278 bytes debug_toolbar/locale/uk/LC_MESSAGES/django.po | 387 +++++----- .../locale/zh_CN/LC_MESSAGES/django.mo | Bin 8538 -> 8067 bytes .../locale/zh_CN/LC_MESSAGES/django.po | 162 ++-- 44 files changed, 3558 insertions(+), 1472 deletions(-) create mode 100644 debug_toolbar/locale/bg/LC_MESSAGES/django.mo create mode 100644 debug_toolbar/locale/bg/LC_MESSAGES/django.po create mode 100644 debug_toolbar/locale/ko/LC_MESSAGES/django.mo create mode 100644 debug_toolbar/locale/ko/LC_MESSAGES/django.po diff --git a/debug_toolbar/locale/bg/LC_MESSAGES/django.mo b/debug_toolbar/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..ae59298d58f18aee1a3c23718f3020139818a32e GIT binary patch literal 11903 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 Q&-<&j<*NBrvcb{+0uvOc0ssI2 literal 0 HcmV?d00001 diff --git a/debug_toolbar/locale/bg/LC_MESSAGES/django.po b/debug_toolbar/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 000000000..d9fd766fe --- /dev/null +++ b/debug_toolbar/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,705 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# arneatec , 2022 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: arneatec , 2022\n" +"Language-Team: Bulgarian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:18 +msgid "Debug Toolbar" +msgstr "Debug Toolbar" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 +msgid "Cache" +msgstr "Кеш" + +#: panels/cache.py:174 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d извикване за %(time).2fms" +msgstr[1] "%(cache_calls)d извиквания за %(time).2fms" + +#: panels/cache.py:183 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Извиквания на кеша от %(count)d бекенд" +msgstr[1] "Извиквания на кеша от %(count)d бекенда" + +#: panels/headers.py:31 +msgid "Headers" +msgstr "Хедъри" + +#: panels/history/panel.py:19 panels/history/panel.py:20 +msgid "History" +msgstr "История" + +#: panels/profiling.py:140 +msgid "Profiling" +msgstr "Профилиране" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Прехвани пренасочвания" + +#: panels/request.py:16 +msgid "Request" +msgstr "Заявка" + +#: panels/request.py:38 +msgid "" +msgstr "" + +#: panels/request.py:55 +msgid "" +msgstr "" + +#: panels/settings.py:17 +msgid "Settings" +msgstr "Настройки" + +#: panels/settings.py:20 +#, python-format +msgid "Settings from %s" +msgstr "Настройки от %s" + +#: panels/signals.py:57 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d получател на 1 сигнал" +msgstr[1] "%(num_receivers)d получатели на 1 сигнал" + +#: panels/signals.py:62 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d приемник на %(num_signals)d сигнала" +msgstr[1] "%(num_receivers)d приемника на %(num_signals)d сигнала" + +#: panels/signals.py:67 +msgid "Signals" +msgstr "Сигнали" + +#: panels/sql/panel.py:30 panels/sql/panel.py:41 +msgid "Read uncommitted" +msgstr "Read uncommitted" + +#: panels/sql/panel.py:31 panels/sql/panel.py:43 +msgid "Read committed" +msgstr "Read committed" + +#: panels/sql/panel.py:32 panels/sql/panel.py:45 +msgid "Repeatable read" +msgstr "Repeatable read" + +#: panels/sql/panel.py:33 panels/sql/panel.py:47 +msgid "Serializable" +msgstr "Serializable" + +#: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 +msgid "Idle" +msgstr "Незает" + +#: panels/sql/panel.py:62 panels/sql/panel.py:72 +msgid "Active" +msgstr "Активен" + +#: panels/sql/panel.py:63 panels/sql/panel.py:73 +msgid "In transaction" +msgstr "В транзакция" + +#: panels/sql/panel.py:64 panels/sql/panel.py:74 +msgid "In error" +msgstr "В грешка" + +#: panels/sql/panel.py:65 panels/sql/panel.py:75 +msgid "Unknown" +msgstr "Непознато" + +#: panels/sql/panel.py:162 +msgid "SQL" +msgstr "SQL" + +#: panels/sql/panel.py:168 +#, python-format +msgid "%(query_count)d query in %(sql_time).2fms" +msgid_plural "%(query_count)d queries in %(sql_time).2fms" +msgstr[0] "%(query_count)d заявка за %(sql_time).2fms" +msgstr[1] "%(query_count)d заявки за %(sql_time).2fms" + +#: panels/sql/panel.py:180 +#, python-format +msgid "SQL queries from %(count)d connection" +msgid_plural "SQL queries from %(count)d connections" +msgstr[0] "SQL заявки от %(count)d връзка" +msgstr[1] "SQL заявки от %(count)d връзки" + +#: panels/staticfiles.py:82 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Статични файлове (%(num_found)s открити, %(num_used)s използвани)" + +#: panels/staticfiles.py:103 +msgid "Static files" +msgstr "Статични файлове" + +#: panels/staticfiles.py:109 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s файл използван" +msgstr[1] "%(num_used)s файла са използвани" + +#: panels/templates/panel.py:101 +msgid "Templates" +msgstr "Шаблони" + +#: panels/templates/panel.py:106 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Шаблони (%(num_templates)s рендерирани)" + +#: panels/templates/panel.py:195 +msgid "No origin" +msgstr "Няма произход" + +#: panels/timer.py:27 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "Процесор: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:32 +#, python-format +msgid "Total: %0.2fms" +msgstr "Общо: %0.2fms" + +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Време" + +#: panels/timer.py:46 +msgid "User CPU time" +msgstr "Потребителско процесорно време " + +#: panels/timer.py:46 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msec" + +#: panels/timer.py:47 +msgid "System CPU time" +msgstr "Системно процесорно време" + +#: panels/timer.py:47 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msec" + +#: panels/timer.py:48 +msgid "Total CPU time" +msgstr "Общо процесорно време" + +#: panels/timer.py:48 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msec" + +#: panels/timer.py:49 +msgid "Elapsed time" +msgstr "Изминало време" + +#: panels/timer.py:49 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msec" + +#: panels/timer.py:51 +msgid "Context switches" +msgstr "Контекстни превключвания" + +#: panels/timer.py:52 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d волеви, %(ivcsw)d неволеви" + +#: panels/versions.py:19 +msgid "Versions" +msgstr "Версии" + +#: templates/debug_toolbar/base.html:23 +msgid "Hide toolbar" +msgstr "Скрий лента с инструменти " + +#: templates/debug_toolbar/base.html:23 +msgid "Hide" +msgstr "Скрий" + +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 +msgid "Show toolbar" +msgstr "Покажи лента с инструменти" + +#: templates/debug_toolbar/includes/panel_button.html:4 +msgid "Disable for next and successive requests" +msgstr "Деактивирай за следващо и всички последващи заявки" + +#: templates/debug_toolbar/includes/panel_button.html:4 +msgid "Enable for next and successive requests" +msgstr "Активирай за следващо и всички последващи заявки" + +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Обобщение" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Общо извиквания" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Общо време" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Кеш успехи" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Кеш неуспехи" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Команди" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Извиквания" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:36 +msgid "Time (ms)" +msgstr "Време (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Вид" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Аргументи" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Аргументи с ключови думи" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Бекенд" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Хедъри на заявката" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Ключ" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/history_tr.html:23 +#: templates/debug_toolbar/panels/request_variables.html:12 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Стойност" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Хедъри на отговора" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "WSGI environ" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Понеже WSGI environ наследява средата на сървъра, е показана само важната част от него по-долу." + +#: templates/debug_toolbar/panels/history.html:10 +msgid "Method" +msgstr "Метод" + +#: templates/debug_toolbar/panels/history.html:11 +#: templates/debug_toolbar/panels/staticfiles.html:43 +msgid "Path" +msgstr "Път" + +#: templates/debug_toolbar/panels/history.html:12 +msgid "Request Variables" +msgstr "Променливи на зявката" + +#: templates/debug_toolbar/panels/history.html:13 +msgid "Status" +msgstr "Състояние" + +#: templates/debug_toolbar/panels/history.html:14 +#: templates/debug_toolbar/panels/sql.html:37 +msgid "Action" +msgstr "Действие" + +#: templates/debug_toolbar/panels/history_tr.html:22 +#: templates/debug_toolbar/panels/request_variables.html:11 +msgid "Variable" +msgstr "Променлива" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Извикване" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "КумулативноВреме" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "За" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "ОбщоВреме" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Брой" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Информация за изгледа" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Функция на изгледа" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Име на URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Бисквитки" + +#: templates/debug_toolbar/panels/request.html:27 +msgid "No cookies" +msgstr "Няма бисквитки" + +#: templates/debug_toolbar/panels/request.html:31 +msgid "Session data" +msgstr "Данни на сесията" + +#: templates/debug_toolbar/panels/request.html:34 +msgid "No session data" +msgstr "Няма данни от сесията" + +#: templates/debug_toolbar/panels/request.html:38 +msgid "GET data" +msgstr "GET данни" + +#: templates/debug_toolbar/panels/request.html:41 +msgid "No GET data" +msgstr "Няма GET данни" + +#: templates/debug_toolbar/panels/request.html:45 +msgid "POST data" +msgstr "POST данни" + +#: templates/debug_toolbar/panels/request.html:48 +msgid "No POST data" +msgstr "Няма POST данни" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Настройка" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Сигнал" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Receivers" +msgstr "Получатели" + +#: templates/debug_toolbar/panels/sql.html:6 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s заявка" +msgstr[1] "%(num)s заявки" + +#: templates/debug_toolbar/panels/sql.html:8 +#, python-format +msgid "" +"including %(count)s similar" +msgstr "Включва %(count)s подобни" + +#: templates/debug_toolbar/panels/sql.html:12 +#, python-format +msgid "" +"and %(dupes)s duplicates" +msgstr "и %(dupes)s повторени" + +#: templates/debug_toolbar/panels/sql.html:34 +msgid "Query" +msgstr "Заявка" + +#: templates/debug_toolbar/panels/sql.html:35 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Във времето" + +#: templates/debug_toolbar/panels/sql.html:52 +#, python-format +msgid "%(count)s similar queries." +msgstr "%(count)s подобни заявки." + +#: templates/debug_toolbar/panels/sql.html:58 +#, python-format +msgid "Duplicated %(dupes)s times." +msgstr "Повторени %(dupes)s пъти." + +#: templates/debug_toolbar/panels/sql.html:95 +msgid "Connection:" +msgstr "Връзка:" + +#: templates/debug_toolbar/panels/sql.html:97 +msgid "Isolation level:" +msgstr "Изолационно ниво:" + +#: templates/debug_toolbar/panels/sql.html:100 +msgid "Transaction status:" +msgstr "Статус на транзакцията:" + +#: templates/debug_toolbar/panels/sql.html:114 +msgid "(unknown)" +msgstr "(неясен)" + +#: templates/debug_toolbar/panels/sql.html:123 +msgid "No SQL queries were recorded during this request." +msgstr "Не са записани никакви SQL заявки по време на тази заявка." + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL разяснен" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Изпълнен SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "База данни" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL профилиран" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Грешка" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "Избран SQL" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Празно множество" + +#: templates/debug_toolbar/panels/staticfiles.html:3 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Път към статичен файл" +msgstr[1] "Пътища към статични файлове" + +#: templates/debug_toolbar/panels/staticfiles.html:7 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(префикс %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:11 +#: templates/debug_toolbar/panels/staticfiles.html:22 +#: templates/debug_toolbar/panels/staticfiles.html:34 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:30 +#: templates/debug_toolbar/panels/templates.html:47 +msgid "None" +msgstr "None" + +#: templates/debug_toolbar/panels/staticfiles.html:14 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Приложение статичен файл" +msgstr[1] "Приложения статично файлове" + +#: templates/debug_toolbar/panels/staticfiles.html:25 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Статичен файл" +msgstr[1] "Статични файлове" + +#: templates/debug_toolbar/panels/staticfiles.html:39 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s файл" +msgstr[1] "%(payload_count)s файла" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Location" +msgstr "Местоположение" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Произход на шаблона:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Път към шаблон" +msgstr[1] "Пътища към шаблони" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Шаблон" +msgstr[1] "Шаблони" + +#: templates/debug_toolbar/panels/templates.html:22 +#: templates/debug_toolbar/panels/templates.html:40 +msgid "Toggle context" +msgstr "Превключи контекста" + +#: templates/debug_toolbar/panels/templates.html:33 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Контекстен процесор" +msgstr[1] "Контекстни процесори" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Използване на ресурси" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Ресурс" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Време в браузъра" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Атрибут на измерването" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Милисекунди от началото на навигацията (+дължината)" + +#: templates/debug_toolbar/panels/versions.html:10 +msgid "Package" +msgstr "Пакет" + +#: templates/debug_toolbar/panels/versions.html:11 +msgid "Name" +msgstr "Име" + +#: templates/debug_toolbar/panels/versions.html:12 +msgid "Version" +msgstr "Версия" + +#: templates/debug_toolbar/redirect.html:10 +msgid "Location:" +msgstr "Местоположение:" + +#: templates/debug_toolbar/redirect.html:12 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Django Debug Toolbar прехвана пренасочване към горния URL с цел преглед за отстраняване на грешки /дебъг/. Можете да кликнете върху връзката по-горе, за да продължите с пренасочването по нормалния начин." + +#: views.py:16 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Данните за този панел вече не са налични. Моля, презаредете страницата и опитайте отново. " diff --git a/debug_toolbar/locale/ca/LC_MESSAGES/django.mo b/debug_toolbar/locale/ca/LC_MESSAGES/django.mo index fb52f10ea7ece01aa633d924692c04ede2a188fa..c7e63dbe45af833d8f6cf425d775c0bf9fc1bcbd 100644 GIT binary patch delta 1398 zcmX|>OGuPa6vwamn$a>fvoy2MeC1=N&sWe8y@W(^;leCvQJ>SKL!%?(6a|J0p+yh` zgKdK70kv=uBosXsMNk`yiguNY5Q3;S(Tj-s{bz1ozW@E5bMC$8o_p^w_sbuYO)Zq> z%oy4hRE6fVjOm4w*>tqaImYAM%;~bSmgD)JcxP74SGz;%TUa=dFJMuEf6vm1hpFg7=^{d=7P>cToA> zL*@VEWYxe;K;29TD)DZp`8`nc_CggrU^xU=0qTSwq4NBK%JbLy1vo0G7;3`` z>({^%{N^bPo@}YD$6ANFkSf;V2GoJnv{^0EW}DDvq#Nr*q%w8LMQW89qz}}Jy%Fg! zYAr|w==W#p)zNe{dbbLs>(fb_k^UQMP$T-^sxiuuZb2tg)Bi^kT8r9|S}+5%!LrP< zEyD)mU~pTeG!sa_qcu$cV;NeL>dJM>B4bBPw-+9X(8prwZXz|AJ5dr3d&y{g%=B3! zG*_FK$QpD5ZEb-L*KysD>$bSGf%#szF`{v)1^$#Z)kH`Q3 literal 2875 zcmZ9MTWB6d6vxL}js3J%Ypd1Pc4}{l?dD6;M3XO#G}qpeHkYq?5roO^WV7w=?B`x` z5&C9*QG5^;(FaiwrC=YdzKAa+`XGY(Ao$?rNx?gaB1KUA|92;8>#%2jd(O%K{dbzl#8GdO5@99#>10&D`OK|JCyYxk@kfE{FjXYDV6x556JwO_RQyCB!O407L(t^HH*cIaP$bonO`kN6E8_xTf~ z|Nnqow+TUTolTb8K(4nNq(3bn=XF{80LXQZfL!+k$n_>buJb6!eO!?9LXh7#?D#o5 ze%{)j1@VYi(DD1%EiZsv_Z^V_d|>sUjp%n_t9~m z55djgXCOin--GnySCHrP7s&Ph1{r?^AJM+matFxyyFmJP0OUG7AouMDIe!G?yyGC_ znX*(M_m4sPe;(xb&wz~cc@U3y86DSq!|E46`t_dGKLWY`=OEAf8<6q;2y&e(ARh6r z)z@JX{n-F=zb#gm;GNK0KpgXGgIYAsW!nqk{#zj(kev|5(E_PL_CuN>E3F+b5^@iO z{|@@{|JG#<%nxH>I|Okc2O({c-H-<%{P(aiXPb(*GS5AD?}Y4t;MXJ`fUq$KY#SlF zAls>+-4D4J!d$Q&fZPqiaToap#6Adf*-8bC_uyej4YCEo_7J2OvIoNZ#~gM;*zRN3 zoSU;IUN9}9-_3&96qwgyK)Gj&P8&}QDtAt!55uBM#o(MWMnenZ6a#S-DdWK$!&)p; z!+UNrF{CmzqcCSURE<=7G7BOoNfIYwcu~7~2HVucs5q*Xr;}714Ln_RGK=GIMkV5y zky)Zls!IP(=p`|#=dt-{?5e`$m6sY!zKnF5Dqp8m{J{8PtTc#|3R|Cy<&ojK^xzlY z$4^bIDn^TOorsBCCre^dyE>SsN0a*TT&EeB#(CmuL3gKg5~whELd}FQ=q%$#mZ_MU zix*b?p9*}VLQw)^Ig*79>N;wKDubVOri7hrj?$LmEezmHJPke862CoVl*aj<)tr zr>)cJ=#uR{wXTEv+t4bbD$Sfaj}x)SNlo@IMM$M9`*S}}kwtk(m6ldzEr+Ad#nw3S zAHm1Q&vCR)U8|@j2XTg>GO~Ft%Nn(6bzxzlwYVw4tX^z&t+{`#O4M`P$cP|$(CEiS($29vclbvmmX@i&UP9@kk=>^_8QhEoVQNX3vwLg4iXj{0h4vuKc^*}%tH zl`dbWjm1oPa&3_C53Ve+(hKm%k>-&Y$0f^xFvR%LI8ipMMWv4}zik4AdljLkct%Wk tQP#H3-SPx&(Q~vMxTflZM$RBsZV4+Nzt-z3fBDiim9KN8)s}t{*?;qwWiJ2# diff --git a/debug_toolbar/locale/ca/LC_MESSAGES/django.po b/debug_toolbar/locale/ca/LC_MESSAGES/django.po index bdeaffd7e..393b74bc1 100644 --- a/debug_toolbar/locale/ca/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/ca/LC_MESSAGES/django.po @@ -3,38 +3,61 @@ # # # Translators: -# Libre El Chaval , 2013 +# el_libre como el chaval , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: el_libre como el chaval , 2013\n" +"Language-Team: Catalan (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Caxè" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -45,7 +68,7 @@ msgstr[1] "" msgid "Headers" msgstr "Encapçalaments" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -53,7 +76,7 @@ msgstr "" msgid "Profiling" msgstr "" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -61,11 +84,11 @@ msgstr "" msgid "Request" msgstr "Demanar" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -74,10 +97,9 @@ msgid "Settings" msgstr "Configuració" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings" +#, python-format msgid "Settings from %s" -msgstr "Configuració" +msgstr "" #: panels/signals.py:57 #, python-format @@ -97,151 +119,151 @@ msgstr[1] "" msgid "Signals" msgstr "Senyals" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Seriable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Actiu" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "En transacció" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconegut" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Plantilles" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Hora" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Temps emprat" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -250,15 +272,19 @@ msgstr "" msgid "Versions" msgstr "Versions" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Amagar barra d'eina" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Amagar" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra d'eines" @@ -270,6 +296,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resum" @@ -365,10 +399,8 @@ msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Variable" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" diff --git a/debug_toolbar/locale/cs/LC_MESSAGES/django.mo b/debug_toolbar/locale/cs/LC_MESSAGES/django.mo index 0545db3b575c8f02879e51b70f99ef2789cbde25..a0daa392e6891cbef86e7bd0faa4273521573642 100644 GIT binary patch literal 10854 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 E0ZIe?YXATM diff --git a/debug_toolbar/locale/cs/LC_MESSAGES/django.po b/debug_toolbar/locale/cs/LC_MESSAGES/django.po index 18070ee8e..395b6feca 100644 --- a/debug_toolbar/locale/cs/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/cs/LC_MESSAGES/django.po @@ -3,59 +3,87 @@ # # # Translators: -# Vlada Macek , 2013 +# Josef Kolář , 2020 +# kuboja, 2024 +# Vláďa Macek , 2013-2014 +# Vláďa Macek , 2015,2021 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/cs/)\n" -"Language: cs\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: kuboja, 2024\n" +"Language-Team: Czech (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/cs/)\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==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Language: cs\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" +msgstr "Debug Toolbar" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Mezipaměť" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volání během %(time).2fms" msgstr[1] "%(cache_calls)d volání během %(time).2fms" msgstr[2] "%(cache_calls)d volání během %(time).2fms" +msgstr[3] "%(cache_calls)d volání během %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Volání mezipaměti z %(count)d backendu" msgstr[1] "Volání mezipaměti z %(count)d backendů" msgstr[2] "Volání mezipaměti z %(count)d backendů" +msgstr[3] "Volání mezipaměti z %(count)d backendů" #: panels/headers.py:31 msgid "Headers" -msgstr "Záhlaví" +msgstr "Hlavičky" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" -msgstr "" +msgstr "Historie" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilování" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Zachycení přesměrování" @@ -63,23 +91,22 @@ msgstr "Zachycení přesměrování" msgid "Request" msgstr "Požadavek" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "<žádný pohled>" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" -msgstr "Settings" +msgstr "Nastavení" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Nastavení z modulu %s" +msgstr "" #: panels/signals.py:57 #, python-format @@ -88,6 +115,7 @@ msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d příjemce 1 signálu" msgstr[1] "%(num_receivers)d příjemci 1 signálu" msgstr[2] "%(num_receivers)d příjemců 1 signálu" +msgstr[3] "%(num_receivers)d příjemců 1 signálu" #: panels/signals.py:62 #, python-format @@ -96,161 +124,163 @@ msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d příjemce %(num_signals)d signálů" msgstr[1] "%(num_receivers)d příjemci %(num_signals)d signálů" msgstr[2] "%(num_receivers)d příjemců %(num_signals)d signálů" +msgstr[3] "%(num_receivers)d příjemců %(num_signals)d signálů" #: panels/signals.py:67 msgid "Signals" msgstr "Signály" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "V klidu (idle)" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aktivní" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Uvnitř transakce" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "V chybovém stavu" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Neznámé" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 -#, fuzzy, python-format -#| msgid "%(cache_calls)d call in %(time).2fms" -#| msgid_plural "%(cache_calls)d calls in %(time).2fms" +#: panels/sql/panel.py:168 +#, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "%(cache_calls)d volání během %(time).2fms" -msgstr[1] "%(cache_calls)d volání během %(time).2fms" -msgstr[2] "%(cache_calls)d volání během %(time).2fms" +msgstr[0] "%(query_count)ddotaz během %(sql_time).2f ms" +msgstr[1] "%(query_count)d dotazy během %(sql_time).2f ms" +msgstr[2] "%(query_count)d dotazů během %(sql_time).2f ms" +msgstr[3] "%(query_count)d dotazů během %(sql_time).2f ms" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "SQL dotazy z %(count)d spojení" +msgstr[1] "SQL dotazy ze %(count)d spojení" +msgstr[2] "SQL dotazy z %(count)d spojení" +msgstr[3] "SQL dotazy z %(count)d spojení" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Statické soubory" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s soubor použit" msgstr[1] "%(num_used)s soubory použity" msgstr[2] "%(num_used)s souborů použito" +msgstr[3] "%(num_used)s souborů použito" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Šablony" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Šablony (renderovaných: %(num_templates)s)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" -msgstr "" +msgstr "Zdroj chybí" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Celkem: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Uživatelský čas CPU" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Systémový čas CPU" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Celkový čas CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Uplynulý čas" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Přepnutí kontextu" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně" @@ -259,15 +289,19 @@ msgstr "%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně" msgid "Versions" msgstr "Verze" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Skrýt lištu" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Skrýt" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Zobrazit lištu" @@ -279,6 +313,14 @@ msgstr "Vypnout pro následné požadavky" msgid "Enable for next and successive requests" msgstr "Zapnout pro následné požadavky" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Souhrn" @@ -362,13 +404,11 @@ msgstr "Prostředí WSGI" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Níže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je " -"dědí od serveru." +msgstr "Níže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je dědí od serveru." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" -msgstr "" +msgstr "Metoda" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 @@ -376,14 +416,12 @@ msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Request headers" msgid "Request Variables" -msgstr "Záhlaví požadavku" +msgstr "Proměnné požadavku" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" -msgstr "" +msgstr "Stav" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 @@ -479,20 +517,21 @@ msgid_plural "%(num)s queries" msgstr[0] "%(num)s dotaz" msgstr[1] "%(num)s dotazy" msgstr[2] "%(num)s dotazů" +msgstr[3] "%(num)s dotazů" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" -msgstr "" +msgstr "včetně %(count)s podobných" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" -msgstr "" +msgstr "a %(dupes)s duplicitních" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" @@ -504,11 +543,9 @@ msgid "Timeline" msgstr "Časová osa" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s zpráva" +msgstr "%(count)s podobných dotazů." #: templates/debug_toolbar/panels/sql.html:58 #, python-format @@ -573,6 +610,7 @@ msgid_plural "Static file paths" msgstr[0] "Cesta ke statickým souborům" msgstr[1] "Cesty ke statickým souborům" msgstr[2] "Cesty ke statickým souborům" +msgstr[3] "Cesty ke statickým souborům" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -594,6 +632,7 @@ msgid_plural "Static file apps" msgstr[0] "Aplikace se statickými soubory" msgstr[1] "Aplikace se statickými soubory" msgstr[2] "Aplikace se statickými soubory" +msgstr[3] "Aplikace se statickými soubory" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" @@ -601,6 +640,7 @@ msgid_plural "Static files" msgstr[0] "Statický soubor" msgstr[1] "Statické soubory" msgstr[2] "Statické soubory" +msgstr[3] "Statické soubory" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -609,6 +649,7 @@ msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s soubor" msgstr[1] "%(payload_count)s soubory" msgstr[2] "%(payload_count)s souborů" +msgstr[3] "%(payload_count)s souborů" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -624,6 +665,7 @@ msgid_plural "Template paths" msgstr[0] "Cesta k šabloně" msgstr[1] "Cesty k šablonám" msgstr[2] "Cesty k šablonám" +msgstr[3] "Cesty k šablonám" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" @@ -631,6 +673,7 @@ msgid_plural "Templates" msgstr[0] "Šablona" msgstr[1] "Šablony" msgstr[2] "Šablony" +msgstr[3] "Šablony" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -643,6 +686,7 @@ msgid_plural "Context processors" msgstr[0] "Procesor kontextu" msgstr[1] "Procesory kontextu" msgstr[2] "Procesory kontextu" +msgstr[3] "Procesory kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -666,7 +710,7 @@ msgstr "Milisekund od začátku navigace (+délka)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" -msgstr "" +msgstr "Balíček" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" @@ -685,15 +729,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu " -"URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte " -"na odkaz výše." +msgstr "Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte na odkaz výše." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Data pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to " -"znova." +msgstr "Data pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova." diff --git a/debug_toolbar/locale/de/LC_MESSAGES/django.mo b/debug_toolbar/locale/de/LC_MESSAGES/django.mo index 001276ee58238e21158e6a2afb96fc6f8bac80c4..f62a4baf6d30a58c3732525e206da8f094debd5b 100644 GIT binary patch delta 3211 zcmXxme@vBC9LMp4pb7FLZ%Tls*8~9-xfde@A(a#n5GYi{AL$iti1OnG_%rGXW?C{_ zP|oGtoJ+GdoetJ?*7`Z;GFE@&Dn-jSTeh;=boxiN-kgBzy!HVkEA#Za}UzjW`N-T08CeeHcZ1FFu4vkbmYl zKab-8j>PY<2(P2APmVJt+60Zsq{5_4KI*~+sL3xzCT%J)8Q0*$*ok^jFY5ZY?eS48 z=lCS*{`;tb>!vh_#R-^$B+FD`B+obNsifj2RENFxfWDk8}FZ#cYm?Q1^EPsi=e9s2T1@24@bVUdPj@2VX{IVhE?< zFL(lD#yhDVK%GC28t~_+`@TYD}+6+{ta!{ElM5V9z)WBz9F6N^8Yr~*MxRZ)H z>b55iqHZ{X%E(E3e8HZ-XdOhQ_*?63)LQ?Cp*=O(c^i^Yui2 zgEm_$Y7MucI@*hccnCGaYu4MSO?n^MI%bU9d0-6c0ST!7CZQfY6*a+B)PudK4ClIo z&V!0+(1>eL1E@n?*pA9j2kM3%R7XcpGk+J={vql?mr=X?Yt(&1xD@Z8`puu>oG(L7 zs3u57YhQ00+E5*LqEdelwN~$;26P4kcnBp(c9P zwts{yVbBax3FpL3)Q9F4Y5;doGkJg!7?t9jk3&5;0d<`lmCEU;8O^cBrP#x94Ze!M zVi>AC0c|Bl5Ss{9CT}`j-*L(W@zZHr;<21qK?O3c zONnk`9Z^f{BUBoc|2n50`t!Nj*7cRrH$9(t-nNM>Vm|R4v5Zi8h0w;*m#>RhLNpVT z36(VBX<|R24XTnz%qBwr|8rAO*-h}agvwLa8JJ0ICtkO0YtcizXpgs8pTJ~WkFdUk zEw)~Q?L;dPMZ89Y_8))vOcn7g!Jp+&(T-M`MU)Z=gpb%m6cYMIG!i3;dLo<9`@fh_ z8QxcZ>P^IYVjE#n(rSIR8~y8QeT|K6>2-a9=%W5>(MjR`|Hj=68{1OrYj0?2Hf6Sw z*XMG**?-1~=?etkGKg_7_g+8udRR CZ6GB8 delta 3488 zcmZA3X>6259LMn~J%DnQwxBJCUCPoHN`d9Ja#>ExwnYS#BFEA$+roAWZJ|(s1udZE zP+U!r1VJVEf}X6O`p}IBu{*Y4FT8<4OzdP#G1lWi{LK10 z&Z6z^Y)mpXShwN>#)Qr5w&Mu)S1+ z5M~Buq7UP-5hr64CUSq%LWM<`Z;-{CA5kaXL=AKc+u>d8fbm_NOe7!bxurRZ;aDoCsqkmc@uM4li@NX%YC<p<9Y1y0#wFIQ0L7KQ>mabAJgzOy6`*HQybIG8Q6`(X?suu z1W*HnP%B)CB*AP#y~eL$bdOP)IE`7@g8T7LRHnmwcnNjFKGcj4qb~dam60>38(p;R z%c#A*iQ3CMwm<$s=i%y#8aM|vULNZD5vWX#MQxeaIUY7M>M9YJk5{=f^(ewA-U5l8nkkFVuAt?C}|>>r1UZ49}*cf{JE% z0+sr+_y}IabWF`~CX$EIPb@x6e<5nXMtghN@j`a#QmpaR5lQg z5_JS0LsLbltR%eA8s7rs({EPU_TxB>Xdp79Q>2nkJVR*ztBLzd8I3_i1)(RGe>qJJ z!N>7l(SsIGWD$LcCx{FpK&U)REGLE$0|}KpqPJ2MAs!=&iAls(qL64UFH>1Tv?az8 zJBT*Klf*VcWv+uMv2MZVi7B>SiVKNy+t%m3k_b<<9bK&dXFeTM@9S)&uBSZC_C1FM zL=mCa@+o2-;U+o}FA^all}IF1#_6YTPMNQ)B67JyNqUvPw$>N$tE+lNsIFhF%l0&9 zcFc-RsPKhC{$TUuq$@GQ{44!I@%D@k_5 zT33*R{_^I}lf4O@hj{WlL-Ga>b9qMQ4;>Y8r@14=X&JHg_4Uom(uT+Mm{b|6tMLWy zn^?5x*U9&0WCx6l&Umk< c-^Dx^tthLwcbaQubq$Lx_lKH)$k?3lAJ$T7i~s-t diff --git a/debug_toolbar/locale/de/LC_MESSAGES/django.po b/debug_toolbar/locale/de/LC_MESSAGES/django.po index 7cd10febe..18a6be6a8 100644 --- a/debug_toolbar/locale/de/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/de/LC_MESSAGES/django.po @@ -5,37 +5,61 @@ # Translators: # Jannis Leidel , 2012-2014,2021 # Matthias Kestenholz , 2021 +# Tim Schilling, 2021 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-12-04 17:38+0000\n" -"Last-Translator: Tim Schilling\n" -"Language-Team: German (http://www.transifex.com/django-debug-toolbar/django-" -"debug-toolbar/language/de/)\n" -"Language: de\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Tim Schilling, 2021\n" +"Language-Team: German (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d Abfrage in %(time).2fms" msgstr[1] "%(cache_calls)d Abfragen in %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -46,7 +70,7 @@ msgstr[1] "Cache-Aufrufe von %(count)d Backends" msgid "Headers" msgstr "Header" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Geschichte" @@ -54,7 +78,7 @@ msgstr "Geschichte" msgid "Profiling" msgstr "Profiling" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Umleitungen abfangen" @@ -62,11 +86,11 @@ msgstr "Umleitungen abfangen" msgid "Request" msgstr "Anfrage" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -97,151 +121,151 @@ msgstr[1] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" msgid "Signals" msgstr "Signale" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Wartet" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aktiv" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "In einer Transaktion" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Fehler" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Unbekannt" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d Abfrage in %(sql_time).2f ms" msgstr[1] "%(query_count)d Abfragen in %(sql_time).2f ms" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL-Abfragen von %(count)d Verbindung" msgstr[1] "SQL-Abfragen von %(count)d Verbindungen" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Statische Dateien" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s Datei benutzt" msgstr[1] "%(num_used)s Dateien benutzt" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerendert)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "Kein Ursprung" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Gesamt: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Zeit" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "CPU-Zeit Benutzer" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "CPU-Zeit System" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "CPU-Zeit gesamt" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Verstrichene Zeit" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Kontextwechsel" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig" @@ -250,15 +274,19 @@ msgstr "%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig" msgid "Versions" msgstr "Versionen" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Toolbar ausblenden" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ausblenden" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Toolbar einblenden" @@ -270,6 +298,14 @@ msgstr "Für nächste und die darauffolgenden Anfragen deaktivieren" msgid "Enable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen aktivieren" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zusammenfassung" @@ -353,9 +389,7 @@ msgstr "WSGI-Umgebung" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur " -"eine notwendige Teilmenge dargestellt." +msgstr "Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -473,18 +507,14 @@ msgstr[1] "%(num)s Abfragen" msgid "" "including %(count)s similar" -msgstr "" -"inklusive %(count)s ähnlich" +msgstr "inklusive %(count)s ähnlich" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" -msgstr "" -"und %(dupes)s dupliziert" +msgstr "und %(dupes)s dupliziert" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" @@ -668,15 +698,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur " -"weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt " -"weitergeleitet zu werden." +msgstr "Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Die Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die " -"Seite neu." +msgstr "Die Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu." diff --git a/debug_toolbar/locale/es/LC_MESSAGES/django.mo b/debug_toolbar/locale/es/LC_MESSAGES/django.mo index e2a8c6cfd29d8d98a14788e542e9c23d44ca2a98..583f88ef926e3ff3844eacfe0d532360df3f356f 100644 GIT binary patch delta 3287 zcmYM$32;qU9LMpKND!i$P+3HCvmi?3y`Xr6iY1{zts$yB5lM(7mLRl!_R6%D&W+L5 z)KsT-gEp-$6fIiX(a~khpbMiltxl^mbhKlcet+*BdM5w(IrqME&+7N#-LJyJ94c z!Xa3QYQF`UquGTKjBgH7QNu&1MSp@U(tLsGcn%-N+o*w}TZY=VMqMZ32uwviKL<7O z#h8I>ur0og8u$!q0T-|%teMNRlG)N}u$GSTdj&_D^O>lD;hdQe-}*WM50QDH1I9@X(oREJflnJz-5a4Bl5 z*4gjt?f0+S>usoZ`%n`(jLN_nT!$C%RG2a4{0P)?olV*tz5jcubXP;%iQx$hihFP@ zrt_;a5^Is|HK(l?Q9meu*y{-1vCdq#L6Tr{Q4=aet-J)4@;Ru5EyKoo|LdqIB^#`p zZG-LDp8NYyd-@$J1GjJ`-bHQQa`sIV+lboZ9jFZMv%Zh&{}|@um#B=l=4Z5t-v10L zdeDPv*b}QT7qxPJ`XkV>8Js!Py;N%p11m61OKRFv|+u^R7TZ>-|PmE$fPg{{&;dtHKqxUNNYa0K=INz?#eA;~nq zqWWpd!3n+%s0V?xQldgKf@#wkm`{WgWrPX~eNYD4no_Pez(YJw zOeIu05p#&Xx}YozVe+hEkv#A4!pS!gRo=-j`FgNS~F z`czTYh7(T^+R843N(M0^ShH=F{s{y>Xrcexp?-ikd%>SzFyjfOy%AABs7xmO#A;pG zGR-;zb%0fR5fh0%#B}0*@oN13Ts=*Uv3HlFPO6VsO5_t2gnocjIuf}=9idlIMF%XK z&;d&(?w1r>$+13$U5N$6n&3ThHHk_VQ5(F$ztz@m$XgUF5!NL*+t!ETT%wwYB3>X= z^pDbLLa(h}Jrx~Xl}ut7p&z9w#0njd0fb(unM5Q}LUbp35<>`;=R%lboJBlC)VS@U zCpK)3J`vtf+VXN(OjWUeetA`;DXw@q|&lk(jSNdp@`N-7U;Gj3XWvA?+dctfT6zv^>K plXo{{I&;I_th8A7Xlj(ZJ++^EEVanJm-?=|BhA}zBCT_y{{RH+P`m&D delta 3504 zcmY+`drZ}39LMnoP$b10Dj*^J1T@f4kKrY}R-$D>DuK6Bk8lF)cn)wtM5|+JnOa`@ z*}C7BHETAfq^@O|E9WNFoYso|XsxWaZnkFGrnTOm-|u0oXMBIJ=XZN9-{<)q?W(v~ z9{(z>#}kIKo5&`f>tW1E)vw_|aZ-($i^H)1!Sr59t9shHB_TREHm<2K<@5|E0bDgS~zc z_53AdvgU78W>Z-Qs>Z=23}9SqGl7FToP&C?95tY7)BskZI$mRKMJ>hsSd3dx13HY# z)G^e1A7B8_qEeoiW(+EJWJYm84V2m&Gf*AgX0I#rTgRa~ zn1*Vw4AoABy}tsLsW9rf7}nzk%)|?EDh`#uQM)x~u;0;5IDzvDR0CU34eUV8%tgj# zUO|1fM^PQ0N2T@xj>KQ_H5@X;&+u{7{gbEx$2+O$#ZOV0_zu<4C3}7qwWfXeXtjnJ zsOR#KF`EEt>B>+I&PBaniOS$I)KWFr`%!y;oqrxT8>#5QZK#1fiAwc;+=)l<*#u)| zWf(J`^RLNU0S1QpnX5)+t_`F34Bmmg`IVZ4OR)qWN9}>r)-Fuf_y3cEa2_?FA5iaKL_PN>DkBN}PHQ4fsLaJt8QF(%CU3f^ zsG&=!fu!X4-)$CZ0P|1{EVQmfWh8>?cs$^A^KSH(F)A4_T z2Rd=Tqhc;-%_pN8E=RpsWzTC-yF85geP}{`zpbbN@3iN8k$r03L`~onDx+sn1OEou zpXO(4a(uYop@T|MA*$iYsE!t(W>RIXL474nsIO#`J>P{I@Jpz64x&0bfvl?OLS^PM zYH9w#MvV7jYmT6@4$JTboPZZldm<~JPY=hS8i=79SdZ#pGb(e>quM!a&%Z!r;1?W? zf8k{;DDd0K=3$m1Zt|&UMq^RGXfsh6s6?eKj2g&V)N|WWGk+E}@MsH0+3gOgC3Z8oZ-yYL}wzyxd}x{I!FBzD^iOK=r& z4{;kYhgeFeOeV$>B*HvMOeJ#Y-`q>6Xq{Dxi5XtaKWP0lK&5l7f64m+xr6#LB0^}O z+PF;8D>07zaC$S=g;ruN!K&(G^NPbUzKDZ%=uATEzJ@3xx{Fd-O{^!B6_xvl5TSjs znYfjhLZ}q_c%P%H)9m^6SVh#^^XqVz)?ejz@96(p*{Vk+#{fa*z5i0(k2exG6WfRd zgqBSEW&@#8=i}{}QMNwLD&`Xp6E#G+`kzhZQDP_2Mm#{Y6DtUn@x(%63o(Y!CMzYn z%Q`Bn34H}y34QJ zSNkj(x+WBh1?xg)L}5*|HPTWPbL^Fl-}{_ROs)?`BB5}{`~AL6=n+~Q3cD{47@R#X zTG#zl%y3fI5UDfeenakC1NQc}O~jlqH$$}@vj(>J>^nYC92i$TF5mPNj{X;xvX^n}gwLg%M}?G$&Bxj?G-;9?a~;5F@eR>i-YXyW+l)dAnPm zI?&A=+TxxXI@KMORpM^Qn$XdiwIjjZls&OWFcJ*AN3+X11`nH`IIE(88JMb74K=}< zh7UR-|EZQTey`1#QyU69&7r!6SW9!%EVPwa_kDML?i*PZQKvrGP7drV_VHkCv?I@H jNpye9>*XHGo9+(EpXj#d4|3P#KjfwqjO@6%AS3Bt&|HBA diff --git a/debug_toolbar/locale/es/LC_MESSAGES/django.po b/debug_toolbar/locale/es/LC_MESSAGES/django.po index 7babef326..d757cce1f 100644 --- a/debug_toolbar/locale/es/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/es/LC_MESSAGES/django.po @@ -12,44 +12,69 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-10-01 11:10+0000\n" -"Last-Translator: Daniel Iglesias \n" -"Language-Team: Spanish (http://www.transifex.com/django-debug-toolbar/django-" -"debug-toolbar/language/es/)\n" -"Language: es\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Daniel Iglesias , 2021\n" +"Language-Team: Spanish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "Barra de herramientas de Depuración" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d llamada en %(time).2fms" msgstr[1] "%(cache_calls)d llamadas en %(time).2fms" +msgstr[2] "%(cache_calls)d llamadas en %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "%(count)d llamadas al Cache desde el backend" msgstr[1] "%(count)d llamadas al Caché desde backends" +msgstr[2] "%(count)d llamadas al Caché desde backends" #: panels/headers.py:31 msgid "Headers" msgstr "Encabezados" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Historial" @@ -57,7 +82,7 @@ msgstr "Historial" msgid "Profiling" msgstr "Análisis de rendimiento" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interceptar re-direcionamiento" @@ -65,11 +90,11 @@ msgstr "Interceptar re-direcionamiento" msgid "Request" msgstr "Petición" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -88,6 +113,7 @@ msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 señal" msgstr[1] "%(num_receivers)d receptores de 1 señal" +msgstr[2] "%(num_receivers)d receptores de 1 señal" #: panels/signals.py:62 #, python-format @@ -95,156 +121,160 @@ msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d señales" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d señales" +msgstr[2] "%(num_receivers)d receptores de %(num_signals)d señales" #: panels/signals.py:67 msgid "Signals" msgstr "Señales" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Leer cambios tentativos" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Leer cambios permanentes" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Lectura repetible" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Inactivo" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Activo" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "En transacción" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "En error" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconocido" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Archivos estáticos (%(num_found)s encontrados, %(num_used)s en uso)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Archivos estáticos" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s archivo usado" msgstr[1] "%(num_used)s archivos usados" +msgstr[2] "%(num_used)s archivos usados" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Plantillas" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Plantillas (%(num_templates)s renderizadas)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "Sin origen" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tiempo" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Tiempo en CPU de usuario" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f mseg" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Tiempo en CPU del sistema" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f mseg" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Tiempo total de CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f mseg" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Tiempo transcurrido" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f mseg" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Cambios de contexto" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntario, %(ivcsw)d involuntario" @@ -253,15 +283,19 @@ msgstr "%(vcsw)d voluntario, %(ivcsw)d involuntario" msgid "Versions" msgstr "Versiones" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ocutar barra de herramientas" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ocultar" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra de herramientas" @@ -273,6 +307,14 @@ msgstr "Deshabilitar para el próximo y sucesivos peticiones" msgid "Enable for next and successive requests" msgstr "Habilitar para el próximo y sucesivos peticiones" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resúmen" @@ -356,9 +398,7 @@ msgstr "Entorno WSGI" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Ya que el entorno WSGI hereda el entorno del servidor, solo un subconjunto " -"significativo es mostrado más abajo." +msgstr "Ya que el entorno WSGI hereda el entorno del servidor, solo un subconjunto significativo es mostrado más abajo." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -470,6 +510,7 @@ msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" +msgstr[2] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -483,9 +524,7 @@ msgstr "" msgid "" "and %(dupes)s duplicates" -msgstr "" -"y %(dupes)s repetidos" +msgstr "y %(dupes)s repetidos" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" @@ -563,6 +602,7 @@ msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Ruta a archivos estático" msgstr[1] "Rutas a archivos estáticos" +msgstr[2] "Rutas a archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -583,12 +623,14 @@ msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplicación a archivos estáticos" msgstr[1] "Aplicaciones de archivos estáticos" +msgstr[2] "Aplicaciones de archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Archivo estático" msgstr[1] "Archivos estáticos" +msgstr[2] "Archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -596,6 +638,7 @@ msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s archivo" msgstr[1] "%(payload_count)s archivos" +msgstr[2] "%(payload_count)s archivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -610,12 +653,14 @@ msgid "Template path" msgid_plural "Template paths" msgstr[0] "Ruta de plantilla" msgstr[1] "Rutas de plantillas" +msgstr[2] "Rutas de plantillas" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Plantilla" msgstr[1] "Plantillas" +msgstr[2] "Plantillas" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -627,6 +672,7 @@ msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesador de contexto" msgstr[1] "Procesadores de contexto" +msgstr[2] "Procesadores de contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -669,16 +715,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"El Django Debug Toolbar ha interceptado un re-direccionamiento a la " -"dirección de Internet mostrada arriba, con el propósito de inspeccionarla. " -"Usted puede hacer clic en el vínculo de arriba para continuar con el re-" -"direccionamiento normalmente." +msgstr "El Django Debug Toolbar ha interceptado un re-direccionamiento a la dirección de Internet mostrada arriba, con el propósito de inspeccionarla. Usted puede hacer clic en el vínculo de arriba para continuar con el re-direccionamiento normalmente." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"La información de este panel ya no se encuentra disponible. Por favor " -"recargue la página y pruebe nuevamente." +msgstr "La información de este panel ya no se encuentra disponible. Por favor recargue la página y pruebe nuevamente." diff --git a/debug_toolbar/locale/fa/LC_MESSAGES/django.mo b/debug_toolbar/locale/fa/LC_MESSAGES/django.mo index 403810b2c994d292726d5deded8106311bf7c082..fa30fd402f9ba6ae1e196f1f93805de3f9468fee 100644 GIT binary patch literal 10013 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 delta 2925 zcmYL}Yiv|S7={NZMOxZY+Cr(&9xkO^Ec5~jEkX+dBBgRukXu={OS`h&CEXQFOjrXH z`lCe22?jL^Mx@d}ssXJg1QQ82Q~aSKTR;e^=MTK`)x1^-bv z2zJ7B*aZi|3yJoq>83CQ$2FJ)f3_X&Kn;8VAAt{HD%7m<4}qE}8`i=+sD6H!2AknT z_$qu99*2r^9x|2r1{Rs9F*hk_q9kTlhZLxZMnDB}pcXdKwijD}h4s&a>c0qThs)ql zSO-a_*#?!l2vnTCQ2pEBVB(vD6cqR{RKOFKr=e1N25JH4Adk7kOZ~rtrSKMH4<-xe zFqjXu!%~<5E1||OvHoRHan{198a7kVN*ip4txzj{$<|+i8qfl@ll@Q=ABNgVC)CbA zgWCB;sQF@$$K15MWBE7Kd;`+Rza~iKz%(!$YCs{>&dZ=W&Vr4w+O~Jt_Ac9g7HUBk zpyv4=Dg(d33Gg?ljpnjS`A0*=ElMZ<8c>2mfvO>oSlR1|W`17C^UIz2w9H<3tfZB)`DpNtIjYM}+P)c^&4*MZ%Fo&R4+HU!YZ9fM$ zC}eg6k2=xjcKO8G}n zJ3b2?cm?X$d>^V`D$5@UheP>GAlJYwg-Z2C=)kQ|8ES)??_JB2kjI?i73Db0w-l7B z+fb>!2amyjpw9LPH%o!Pu>1<@vR&mx7jq9PP!b0|6%L2Wzyhf8wNMLef?DuS$my83 zbIHFPoj4}LZrkt>DnKgR)WXI=EnqU#L^Gg{W})@_EhA8YqfnV_h04eqPyye!{w~;$ z`ja|;*?8218qo{rDO8H)pa7CRhgerUu@Q;(4GT zdkj^gXH~(rp!xCA|F5+aC!sY+H@_S`kDfvL0%UGwYJNr}6!8Qml}s();xvVQUN=3h zz+I45ndI>{`rP|zg~^ScV9*zEGt+ZV)upfK=bq0fs`PF51x!uI>xuY7!M;KTr3RR@*<+wkL9OgQC{()djbLD<>mD3i?y5U$7Ah1d(j>f>x`X>b@a5x zK904=I&2H=r+fBRoXQ$i)ZeYkuUtf*uGmS_(~=n3SEw*OXK%DIQA>Q{8*NU{o>=?! zPSXq9%79o$tkb=p-<8)pqOY^VQclM@d-l0U3wEWg@Fj8?pU^$vyf\n" -"Language-Team: Persian (http://www.transifex.com/django-debug-toolbar/django-" -"debug-toolbar/language/fa/)\n" -"Language: fa\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Elyas Ebrahimpour , 2024\n" +"Language-Team: Persian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "نوار ابزار دیباگ" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d فراخوان در %(time).2f میلی‌ثانیه" msgstr[1] "%(cache_calls)d فراخوان در %(time).2f میلی‌ثانیه" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -46,7 +69,7 @@ msgstr[1] "فراخوان‌های کش از %(count)d بک‌اندها" msgid "Headers" msgstr "هدر ها" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "تاریخچه" @@ -54,7 +77,7 @@ msgstr "تاریخچه" msgid "Profiling" msgstr "نمایه سازی" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "رهگیری تغییر مسیرها" @@ -62,11 +85,11 @@ msgstr "رهگیری تغییر مسیرها" msgid "Request" msgstr "ریکوئست" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "<بدون نمایش>" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "<در دسترس نیست>" @@ -97,152 +120,151 @@ msgstr[1] "%(num_receivers)d گیرنده از %(num_signals)d سیگنال" msgid "Signals" msgstr "سیگنال‌ها" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "کامیت خودکار" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "خواندن بدون تاثیر" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "خواندن با تاثیر" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "خواندن تکرارپذیر" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "قابل سریالایز شدن" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "کامیت خودکار" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "IDLE" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "فعال" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "در تراکنش" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "در خطا" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "ناشناخته" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "اس کیو ال" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه" msgstr[1] "%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "کوئری‌های SQL از %(count)d اتصال" msgstr[1] "کوئری‌های SQL از %(count)d اتصال" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "فایل‌های استاتیک (%(num_found)s یافته شده، %(num_used)s استفاده شده)" - -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "فایل های استاتیک" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s فایل استفاده شده" msgstr[1] "%(num_used)s فایل استفاده شده" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "تمپلیت ها" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "تمپلیت ها (%(num_templates)s rendered)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "بدون origin" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "پردازنده: %(cum)0.2f میلی‌ثانیه (%(total)0.2f میلی‌ثانیه)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "مجموع: %0.2f میلی‌ثانیه" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "زمان" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "زمان سی پی یو کاربر" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f میلی‌ثانیه" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "زمان CPU سیستم" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f میلی‌ثانیه" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "زمان کل سی پی یو" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f میلی ثانیه" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "زمان سپری شده" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f میلی‌ثانیه" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "تغییرات زمینه" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d اختیاری، %(ivcsw)d غیراختیاری" @@ -251,15 +273,19 @@ msgstr "%(vcsw)d اختیاری، %(ivcsw)d غیراختیاری" msgid "Versions" msgstr "ورژن ها" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "پنهان کردن toolbar" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "پنهان کردن" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "نمایش toolbar" @@ -271,6 +297,14 @@ msgstr "غیر فعال کردن برای ریکوئست های پی در پی" msgid "Enable for next and successive requests" msgstr "فعال کردن برای ریکوئست های بعدی و پی در پی" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "خلاصه" @@ -354,9 +388,7 @@ msgstr "محیط WSGI" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"از آنجا که محیط WSGI محیط سرور را به ارث می برد ، فقط یک زیر مجموعه مهم در " -"زیر نشان داده شده است." +msgstr "از آنجا که محیط WSGI محیط سرور را به ارث می برد ، فقط یک زیر مجموعه مهم در زیر نشان داده شده است." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -665,10 +697,7 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"نوار ابزار اشکال‌زدای Django یک هدایت به URL بالا را به منظور مشاهده اشکال " -"توسط ابزار اشکال‌زدای افزونه کرده است. می‌توانید بر روی پیوند بالا کلیک " -"کنید تا با هدایت به صورت عادی ادامه دهید." +msgstr "نوار ابزار اشکال‌زدای Django یک هدایت به URL بالا را به منظور مشاهده اشکال توسط ابزار اشکال‌زدای افزونه کرده است. می‌توانید بر روی پیوند بالا کلیک کنید تا با هدایت به صورت عادی ادامه دهید." #: views.py:16 msgid "" diff --git a/debug_toolbar/locale/fi/LC_MESSAGES/django.mo b/debug_toolbar/locale/fi/LC_MESSAGES/django.mo index e0126d2b47a652e9845c8f1342a47c3b9d8eeead..3c0054dc79bc45da1364d7078c2a67cd65e2c7c0 100644 GIT binary patch delta 1718 zcmZXUT}YH!7{|}#7FA;SU6iWyTOHAE#(^3mU1n%B#(T4=Vt`|%0MqSjx{{DJ|pojB6zw`M#=Y7tZ z$%g+7WuBG#FB+@^twik$jB#PYPldf&Xv|hP11n%_E_3hz+yN)xVz@MKj&*P;{h00V zf(7(@Axq71%QP%BCSy*~Sk1&4NDMO$75itn2;PEW_zNt7FQL}GffVzeDj)i(0x$>_ za5>bvupM6m<+lY=Oe<9p@l6K}Iqrcuupd%PoJt#pp$>8aD!^$Ng%|AnJ7Uvw!pJ?{w`FUUm*!I4>C0LB@dzQ{0~Sm&#C12Z>Y!e*7n~) zt@HB`l%YjX>&k4u5`IFz4wl1BP*=PMR>3&Lg&BiQFmr{5PW}MO;Utv9M^G7f0rl9X zE&qc$KndwkCdy$M3`6;eLG5pYTGt8XXD6hXeN_5#YZ>zmEd`jjY8s!THanpE(ngsw z6`pPJ`r((T0qG#JO>;2(hkaxbM)Y7 z4{H^YeTtO+5c&$$BmFltA(?|>NWZofXx3`#dcB`=w`N!5b^5#~Mb+L|e!%-N|8`!g z*GkgvswM5B?lPRMa$j#KYoh1=Ybbfjn4O^zhobZR&j>Pony zBcXQpSmOS8vLV#$M4P=pAXMuP4K=2A3X+5-zEC0J9H^Ne+}Xns4m>;upYwpUX3v*C zRQ9Ev!H4EtAK22hHYc@KTdw98*4Nfrvz&9QY3~iU=4P|s|KaXsb&db|-EZf*uKT+0 z^Kjdlug%<8ojYT&epHQKf5@0Ict4j1c5%5ez3>vOg?Hh4Seb830(L;XI|o<6Ma#Sb zW7g8IfEtg%Lbw~^!t^dNV-C|OV&FNbm~prfj=(&4&W^tU@oi@9_yt%@e-0|K%diZ7 zVduYtTK^;D&)nrv0{?(Yq=-kJ$rw{kLlad{2{b^xumzUFb|}aD;4*jwDzW2G>rO%i z8nK*!@-q#U;8`gDufkS13s=Jhm`i+fT@82>D!{jpKXZqN0xjD9J*a@oD3{iiKshdh zN?<+Id>zyg#h^;vXXgi?)}MeY;RwtqlW7_{`*To%FT#3w1uC(x?D!3+0Jot6{svW{ zdvFabV7pph4K-f_SHMQ7jdVc0zthh56jOf<^fRCmAA_?wWCnZaKOo)5U=Lm%g`;p1 zz6Os&Mc3te-ZBAo>0Yw^8K@n<4YjfNEU!XxHVdWHUkQB9fG*wFkl5w{RK~^BNhMqb z)n5m-vkkBT)4haW<{_?aF5 z5~{S{Kn1#G`#(S>_^a*z4)xxBsDOny>wp!o93F!5GX#}L#-~BWO#rp?(@+l2LS^_e zRKN)8(w(>cx1iQtf-3E0SO-6{^Ed7I9jL&IumTovUb-s|tRcQ>qoF`YVKelgGMs^O z{3cWab5NCf7wXc!Z@B=K$aScl-+~XrU!eTtu~_dHL9JT@<);dk>HFVELlxMJXc`Cg zAemm2X=hI&CD@CUa6RJ3(yT)}k*sS8W|O6$sw&{qXakZ}p>3!`-~Se*+b!FLc4S+| zY_}BlBaSp{ZI;?4o6Oo1JX;Y}&f4QV_tBi6*_rlN}_DtQT|BTFcF7M09-Q&i`B7a3~bSb~2 zWW-G-y@c7D2tqHK&;MY(H$}HEh`VV&NYWS{_LIZr;F8PebiqK`U;aZU!K^nFeOhp& z+DoTd7dod>!MM{E4~D#5bzxU?wlQB`n94cS*3{D0w6)!7-O<^;ZF37&)aQojrooh( z3=?iTNOd~hFN}LBKkjr-4o`+Sbh_N7k(g^oc8|AB$AZ-GuIS?;r~1s9GqJSZ_fL7# zv3M}vJdp}Uy?8ooo``-fS{qdsfB$z`rhE^d|EkK;z_qz6C8Ie7gYKB?hklaEY%e+B zCfzC53`{0Qz39Sq0$rO`+X, 2012 +# Klaus Dahlén, 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Finnish (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/fi/)\n" -"Language: fi\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Klaus Dahlén, 2012\n" +"Language-Team: Finnish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Välimuisti" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d kutsu %(time).2fms" msgstr[1] "%(cache_calls)d kutsua %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -45,7 +68,7 @@ msgstr[1] "" msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -53,7 +76,7 @@ msgstr "" msgid "Profiling" msgstr "Profilointi" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -61,11 +84,11 @@ msgstr "" msgid "Request" msgstr "" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -74,10 +97,9 @@ msgid "Settings" msgstr "Asetukset" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Asetukset tiedostosta %s" +msgstr "" #: panels/signals.py:57 #, python-format @@ -97,153 +119,151 @@ msgstr[1] "%(num_receivers)d vastaanotinta %(num_signals)d signaalille" msgid "Signals" msgstr "Signaalit" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Muuttuja" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Tapahtuma" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Tapahtuman tila:" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Virhe" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(tuntematon)" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 -#, fuzzy, python-format -#| msgid "%(cache_calls)d call in %(time).2fms" -#| msgid_plural "%(cache_calls)d calls in %(time).2fms" +#: panels/sql/panel.py:168 +#, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "%(cache_calls)d kutsu %(time).2fms" -msgstr[1] "%(cache_calls)d kutsua %(time).2fms" +msgstr[0] "" +msgstr[1] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Staattiset tiedostot" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Asettelupohjat" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Asetttelupohjat (%(num_templates)s renderöity)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Aika" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Käyttäjän CPU-aika" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msek" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Järjestelmän CPU-aika" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msek" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "CPU-aika yhteensä" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msek" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Kulunut aika" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msek" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Kontekstin vivut" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -252,15 +272,19 @@ msgstr "" msgid "Versions" msgstr "Versiot" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Piilota" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" @@ -272,6 +296,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" @@ -367,10 +399,8 @@ msgid "Path" msgstr "Polku" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Muuttuja" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -494,11 +524,9 @@ msgid "Timeline" msgstr "Aikajana" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s viesti" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format diff --git a/debug_toolbar/locale/fr/LC_MESSAGES/django.mo b/debug_toolbar/locale/fr/LC_MESSAGES/django.mo index ec52a9eba6d7fffefc047614cb996ea62f74ba86..559e2d847d6db814ec32aae4b7d317f12f7e223c 100644 GIT binary patch delta 3259 zcmY+`3rv<(9LMp4+$8Y=nIK3$2nwXw`vPi$h>D0JUJxwr26zDjBoxxTyxvXC%01?s z)>cc+nq}>+xs^_vwk}#rQs-LJYBRH%Ym2FCIs5+J=jhfM|MzpA^IXn3|MQ$jgHyk) z2waJec-2t05q*dS5yqUvBc1u79PVOF8NP!_*nuh7J=T~8%*M&M4+rB7YhqVprgL11 zarnCRDE8v`Gw(QHE>p>(;dgu(dv-G>1~aWW$SE@dqp-|cVb9ONhiI?CXlz9OOe;VA za1%!2+c*y2LtWp2u_j>5Jt|Dv#CG>Cj6+R60hz3EFdYYB53E3SRD*i(5_{Z?lQ~|2 zy8jE*z`w&xyn@LX%|l3%Ny8ZWH$EyEn2&m3jlG}_^`KT%hig#--D1!0uM3Or`^MJ~G~WaCg*$`XZ-H zhHW2?n#csy{nJqQSED*=K`liaY66?E9CyW&e>GgOC;qVBL3I>K{`BCks0a2!U7vx< zR37TO0<6Pgbnpo3<@*M8{a-i)@1pL@?djc@AE2U?jX`xV4K?Fh9Dt2@2zR4WTJVT> zeiUk8WvKfqQ8QnF8qhL(yb85++fhrk$F{$TjKu^#prQw#K|Sy*)C1a4Dfm9ad&R&p$o98+bF>v15*E0M98gSP!s)WFW7GIbfFwEwSD(F|{* zQq_Taus(BIs~*UhOaf|6{iy4!a3#({&HMuDrMza(-$vbk7qz4jk9q^>hT}L+#zgJ^ z8Y)WpD%1@dQ7PSyb8#=KgIgH-fRMLLj?+*BD@V;}5$e8HOvjC==N-1~M^PC#ff~@) z7*NL-sOUjIqF$0)sP-_&dq4~-#XXS8nEt5L7Ng#snW&d(9x8(^r~$1-y;D1}0QaD_ zV>`0J%q55X>&6>2jK;gD8;erCkxoYaqcaw_-ECjEhkV`Xtn$Qg;$du^p9}r2gJS9MnLw zP%|#F?NvB{@!L4Q$p#gY>_18KKvWH~F#3VvXFrTO;?w2|$ z3+%ySTw?3PaTYOxSY+Eoj`|-(WgbyQsH`XSBI<*o>`WjUiN1si%WjH^7YKbTRP^!6 zCA1YCLS-GnZVZ)?)`9pq(MoI$wb8>|Dn4RGsDYhe&BJtCkFY+E&9+{K&k{=s?Vv4$ zN&-bdCU)p5KZ6)7rkJ}ww8GkRbo8Oo1_h;w&9G@@W=X19t4viY* zW0G1Ca18_@j0tkJE59C%PHb8pQBW@4;VnL zzvK6Xig#_1EjkVr-G@eJHvwO`z;A`zf7AGU0k=YvA$`U`(avw NJ1jjuI5hok_Qj_WmH$bl!6)(15TNI5X<;@u@ zmp@WlBr9*5jWelb(>6JlPFXYMV2v$PO-?phGu8KZ-$Va(#)r>&&w1aoJm-Dy`0>2x z+{jn`eA^6V3o(?~;WOr_>b?0xagvRx!W_)QAP&K;n1!7f#1F6<$MrR)7&lm7#RXh{ zgK1cv;yD`!851$L+J-O|aziWj$CpuSIBq?GjA71TBA&PYZ2K=_AKL%Hp4cbV7^iHmQ17R${hcJ`*O(zvC;62oiPvaH%HEO_~L@P=rbYm27md74^10i<uQk^o;dvG9X z2U(~IiclGwfcZEB_hAz%ql5U?)Sro3*l^Tykzy*^`9#!;s_pensJA_UIF0 zNcK#lZI7T9_!ufUk4`T3ly??0Q0GSGy2 zJJ+FZ=s-=d-CplTo#9^8LSDpTJd7mA{D?XNU$*yLGU_P$V-4nD?97qPn=KeApwdZ2 zD?E+b*)OOE|HeE_CeK<(DXM)uY5~(w3!0CbxCS*&0QJs9Z2Kdq=Q~iDegavmIWUa# zSBgKPK`&Dm>g76*df+cqO5+`GVJWEoEYwR^iki6GUQfmfu4kb>-&W+4H*KircHtyE zh}!6HPQ+VDLXNki9OS(*#i%2giQ4h?s0Gzn>rfLcM`fT1wV=CDDSi;OQ`h!Ci(0@z z)P3)wHhv;vE8n69`U|yy9=s{K!9h(l7PXLaRO)BoLR^4)XAao@BdCc!Mjb&HDuX|v z?z@BNzXr9F5c+TvDueB) zOl`OQ`!JE~qo@VHhuZMT*fr;WhKjz|F61}JTtH3S`wC+o#i6(fpTjs@O>~!ssW60j z%r-2>I--H7B4!Y`5GrLv2|*&vI--&oriWJ$wS?YC6@Am!s$vUYVQgpGeb}}w!nwo} zqKVLswJX*h`>)&@F{Ey-ABQRs@=x{q+Geyr8xz99mP@?AVs*g{1t1#0GyT6bMEKrJjo$9cT#z z&FrRH|C+|8(0`S3YW3X@HS40jF;s8nc;mW#(jHH>BQ`rhIs9g%3yf4KUi51awa&Xg>L_h`R?Y7p8vmM zcVkAC+mM{*9vR|uFJ-K7cMhrO$SijkXO3~7&#Z}#9U6{vPi2+*{2_nPO~{@eU7CGa zd}4KDOTZs?S2, 2013 -# Aymeric Augustin , 2014 +# c1b16e6c929c50740e884a23aafc8829_00449d9 , 2014 # Claude Paroz , 2013 # Colin O'Brien , 2021 # David Paccoud, 2009 @@ -14,44 +14,69 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-09-30 09:21+0000\n" -"Last-Translator: Colin O'Brien \n" -"Language-Team: French (http://www.transifex.com/django-debug-toolbar/django-" -"debug-toolbar/language/fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Colin O'Brien , 2021\n" +"Language-Team: French (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "Barre d'outils de débogage" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d appel en %(time).2fms" msgstr[1] "%(cache_calls)d appels en %(time).2fms" +msgstr[2] "%(cache_calls)d appels en %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Appels au cache depuis %(count)d moteur" msgstr[1] "Appels au cache depuis %(count)d moteurs" +msgstr[2] "Appels au cache depuis %(count)d moteurs" #: panels/headers.py:31 msgid "Headers" msgstr "En-têtes" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Historique" @@ -59,7 +84,7 @@ msgstr "Historique" msgid "Profiling" msgstr "Profilage" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interception des redirections" @@ -67,11 +92,11 @@ msgstr "Interception des redirections" msgid "Request" msgstr "Requête" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -90,6 +115,7 @@ msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receveur d'un signal" msgstr[1] "%(num_receivers)d receveurs d'un signal" +msgstr[2] "%(num_receivers)d receveurs d'un signal" #: panels/signals.py:62 #, python-format @@ -97,156 +123,160 @@ msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receveur de %(num_signals)d signaux" msgstr[1] "%(num_receivers)d receveurs de %(num_signals)d signaux" +msgstr[2] "%(num_receivers)d receveurs de %(num_signals)d signaux" #: panels/signals.py:67 msgid "Signals" msgstr "Signaux" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Auto validation" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Lecture non validée" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Lecture validée" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Lecture répétable" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Sérialisable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Auto validation" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Inactif" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Actif" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Transaction en cours" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Erreur" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Indéterminé" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d requête en %(sql_time).2f ms" msgstr[1] "%(query_count)d requêtes en %(sql_time).2f ms" +msgstr[2] "%(query_count)d requêtes en %(sql_time).2f ms" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "requêtes SQL venant de %(count)d connexion" msgstr[1] "Requêtes SQL venant de %(count)d connexions" +msgstr[2] "Requêtes SQL venant de %(count)d connexions" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Fichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Fichiers statiques" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s fichier utilisé" msgstr[1] "%(num_used)s fichiers utilisés" +msgstr[2] "%(num_used)s fichiers utilisés" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Gabarits" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Gabarits (%(num_templates)s affichés)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "Sans Origine" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total : %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Temps" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Temps CPU de l'utilisateur" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Temps CPU du système" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Temps total du CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Temps écoulé" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Basculements de contexte" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontaire, %(ivcsw)d involontaire" @@ -255,15 +285,19 @@ msgstr "%(vcsw)d volontaire, %(ivcsw)d involontaire" msgid "Versions" msgstr "Versions" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Masquer la barre d'outils" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Masquer" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Afficher la barre d'outils" @@ -275,6 +309,14 @@ msgstr "Désactiver pour les requêtes suivantes" msgid "Enable for next and successive requests" msgstr "Activer pour les requêtes suivantes" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Résumé" @@ -358,9 +400,7 @@ msgstr "Environnement WSGI" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Comme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble " -"pertinent est affiché ci-dessous." +msgstr "Comme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -472,24 +512,21 @@ msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s requête" msgstr[1] "%(num)s requêtes" +msgstr[2] "%(num)s requêtes" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" -msgstr "" -"comprenant %(count)s similaires" +msgstr "comprenant %(count)s similaires" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" -msgstr "" -"et %(dupes)s en double" +msgstr "et %(dupes)s en double" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" @@ -567,6 +604,7 @@ msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Chemin de fichier statique" msgstr[1] "Chemins de fichiers statiques" +msgstr[2] "Chemins de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -587,12 +625,14 @@ msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Application de fichiers statiques" msgstr[1] "Applications de fichiers statiques" +msgstr[2] "Applications de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Fichiers statiques" +msgstr[2] "Fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -600,6 +640,7 @@ msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s fichier" msgstr[1] "%(payload_count)s fichiers" +msgstr[2] "%(payload_count)s fichiers" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -614,12 +655,14 @@ msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Chemin du gabarit" +msgstr[2] "Chemin du gabarit" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Gabarit" +msgstr[2] "Gabarit" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -631,6 +674,7 @@ msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Processeur de contexte" msgstr[1] "Processeurs de contexte" +msgstr[2] "Processeurs de contexte" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -673,16 +717,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"La barre de débogage Django a intercepté une redirection vers l'URL ci-" -"dessus afin de permettre la consultation des messages de débogage. Vous " -"pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la " -"redirection." +msgstr "La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Les données de ce panneau ne sont plus disponibles. Rechargez la page et " -"essayez à nouveau." +msgstr "Les données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau." diff --git a/debug_toolbar/locale/he/LC_MESSAGES/django.mo b/debug_toolbar/locale/he/LC_MESSAGES/django.mo index ec3adbbea62d0ce8997065d7a7f692ca32fb104c..4f680148cb3eaacf0fb24834e6ac82ec168018ad 100644 GIT binary patch delta 747 zcmZY5Jxmlq6bJC}ZVwa>1pG=w;6=kJi3hWH-N7j)UMLJ733OUG_W_(PyPLfQH8Hso z`w12#o{5c#Eghl6#>Rx^I)WWk6wpu||F<_(yyWd~X6NJ0%vSPmSN)*h+7yVp$cM;1 z0E*U>SF6cupux_lwKPdhc^2W1R#J+*I;R@`6Utka1fV}=&^uI2|5A)-< zaU1e$?819+AMysr#xuwpwICPj!KwHH1I9y4 z6XZK&`~=S97!ZU4KlB I>z%~A3n%?=9RL6T literal 1562 zcmZvaPiz!b9LFDm3X6ZR;6K#(Of&&?cG}V=IHiU{7irweLRS)RzMXl@4$REk%)D*4 zoIQCkwRUON)MANX*^5`bdGO%D#Dti<8-z2S2pqf^zrWc>Ym6^>@AH1Y_xnF{duUge zVZDO=D)s~Hx3GWPfdlK)#~6D86qZeJ7i0xK4r*`@c-hLIflopH93;C{a5uOH?gX!c zo!Pn?^)ir{0pSG^hox5LHcAEPcaXgVet+=T4<$M zFXMa`dmlE{_#*a8*iU0WhfR5D(cEd#zd;Kriyo+cnmsM54Wld;&4p??h<%{Y;F$7t zq|yTOlARF#C3Z4axnz~3r5AZFHLGNq%2=f%{kE0?pF3M+r=vi!nUu@o=|j25s&Zb& ztg3ub#H*?>jM9+J$~+gLWFIO1L8Z5C!_6`z)k zcF5~W#SM{_&dHX_v@@HBQQ(|thq+T%9xv6-IOpViM8TYCI?f+m!C% z((KG^WxM&2@^I;-O0`T;FDB=4Ej!x9K%;bm`%RJIb5DL;Kjj?VwxjG9Wad;-Uj_K2 z9zWWM^j6&-Z^}|FZf7EPPN^)(J)X7-F`pcr;DhVrp_IQd$wv-Pl$iO>Tr)khX1b>T zA7Ry8F`H(EnGLgy=S^n5H(%m%!>n*T^dRE#CLVic30M4y9OA&_8Z#?!?33HJiCIU! zzFB4PUnlQ%1nHV@NbbQ7SB^^;`l}S6YraBxuv>!mDmUN4xr?($zwiHO=||pDKXNZR zTSxRhJP~UHv6gXN`_~mJ6wycV2#yq(#g#!38<3V6s@ODNQ@vYZsO?PzTPn=|0jSr> AF8}}l diff --git a/debug_toolbar/locale/he/LC_MESSAGES/django.po b/debug_toolbar/locale/he/LC_MESSAGES/django.po index fe4a4d772..c766a77a7 100644 --- a/debug_toolbar/locale/he/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/he/LC_MESSAGES/django.po @@ -8,44 +8,69 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/he/)\n" -"Language: he\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: shaib , 2012\n" +"Language-Team: Hebrew (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: he\n" +"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: panels/headers.py:31 msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -53,7 +78,7 @@ msgstr "" msgid "Profiling" msgstr "" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -61,11 +86,11 @@ msgstr "" msgid "Request" msgstr "" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -84,6 +109,7 @@ msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: panels/signals.py:62 #, python-format @@ -91,156 +117,160 @@ msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: panels/signals.py:67 msgid "Signals" msgstr "סיגנלים" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "משתנה" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "פעילות" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "שגיאה" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "תבניות" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "זמן" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -249,15 +279,19 @@ msgstr "" msgid "Versions" msgstr "גירסאות" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "הסתר" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" @@ -269,6 +303,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" @@ -364,10 +406,8 @@ msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "משתנה" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -466,6 +506,7 @@ msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -557,6 +598,7 @@ msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -577,12 +619,14 @@ msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -590,6 +634,7 @@ msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -604,12 +649,14 @@ msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "תבנית" +msgstr[2] "תבנית" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -621,6 +668,7 @@ msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" diff --git a/debug_toolbar/locale/id/LC_MESSAGES/django.mo b/debug_toolbar/locale/id/LC_MESSAGES/django.mo index 5c6f07c85ac1dcec0662def31725ed733d0fa2d6..4439e2c4daa329e90534aa2ec273cf020cd0851e 100644 GIT binary patch delta 1316 zcmYk5OKeP07{^bw9i5^SRa%crslKMYQ<2b=6!BP831Ta!rrO(f=2mAWBoecz9kIDA zC-D;-+6xLJKwqYTn#T3-bCYN!mE!6mGSP2`U z{3f9;wi6cAI7CB{_d^|Y5^CWDRHT=n9A1Ts;Z3L;PD5qn2~?_IK#F-qrKg&8;~(Al z7pOpfIF`oAzZ_TLMXZ5J(Mrb_r~tRP{yxZFa}+ADV^9GPK;85d)I|zz{36u48?JxH z@qrtE8Ylm9_}mT5IL<;H{2uZGW<64XvUb#plz}y9HTq|I4(Eyzi(iKHZX1xS_*+3`XsHIU=y%zQsJ^^8I#fR9g~x3!2s5TH^!DyP;-zfPs(tXl z;lG`zG}d#^#`cu-`H5sQvB~#*zsvVqeXO$AW^;)n<2I8WwYhM-%iEtHvgx!Z#loU9bG`2R7f4!Th)N6vtadK9(;51p(1UiEPBlZbBkq2$cB(LlRh$O)Rzi=-uf|nw_tj?n$y% zdGKOc<;^NA4{}p4diCJJgI>6J(34nNToi9w<=55n|7JSbL^#;BJ->c$dS1Wxy8G>| zy_>Evv_bSo(0{y#vCH5G_u+wda}#67!0*9r;6LDIaO?dAcY{!|{ov!^VJn{lw?G~R z@ne&CYzMDc`DKvaH^Hr73)}%3kk)zA%I|<=|9x;5cpZEI{1hY?zX0)LU*bV_Zh&O> z8<5t!36kBP!M)(`Alci5An5yTAg#9(r0)+{JqPK#V<6eHT&*c7pprgusr1 zQkk2Y>_ZO@G6{P+86Qq1> z#v+u*Lm*V_6iE9w43b~tAno@htAEkzUjgxBzGVtN2Kfz;*1K-`AxQcC#PV~H;<#bu z??77THb{Q|22wnKf#m;YEKYIm0!e=aqe6PoS^1Qy9>h+>btBm2?Klj{{bI(h_EK`$s|Ae+QkTuWwZd3(hVRSn8l)LrqAOwnkwLOIaoiEDO)97>tDF27hyU?kfEWmm#9|a#o??uJ-gTgqoMT$|g1n`>#<_=;?12Kw16Q|vkANj4F2lZr@-!np|@2ZG$> zfn1V-%O+);P0^4|#m)Q;o3_DTiur}{I`^<9!?<>NwjA}mP?q>Da6dKyHb;ddw zn2LMdZhPOg1u~*W);7h_o~#lQ=cbwDy(fjAXuc>aoj9wad%okr8}GvR!WEim6~%Rdj|o7e$I2aCWYK z-Wlx7qu3T?>WoJ?OE_~bA8aVI=DW+4SE>bBDgx&`(yv_}CAp~2_MYLz@ND%=Y2D3F zq!tk?8|8@>_f$(7v6v}b|CUz8V^W3<9QOZn`)df;R{@(8bi}7+l$k7HlgK2jxwyh6 z!$n!W{v$#wU0lfLMayK!KpKcJ5t+i&Fv%ihzZL74F4vVQUY9BC$W{i=V7m>!vZ$?E z@Sko@rfqG=*Qz5uEn&E#5Hh&GURHMhZeNB;}m^84_AcMAMomUId7)slS=hkk@kASARF2}>pgv)S51+B4cOT-DRNbX`MD4tI z!8CNJ}M$@4`SDg15R jaemf5Oc1D#tz?%J&UPmOc_}EW2Afigv{gmTz_$Dgp{|Ta diff --git a/debug_toolbar/locale/id/LC_MESSAGES/django.po b/debug_toolbar/locale/id/LC_MESSAGES/django.po index bef59b4f1..f206c0b61 100644 --- a/debug_toolbar/locale/id/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/id/LC_MESSAGES/django.po @@ -8,32 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/id/)\n" -"Language: id\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Muhammad Panji , 2012\n" +"Language-Team: Indonesian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -43,7 +66,7 @@ msgstr[0] "" msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -51,7 +74,7 @@ msgstr "" msgid "Profiling" msgstr "" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -59,11 +82,11 @@ msgstr "" msgid "Request" msgstr "" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -72,10 +95,9 @@ msgid "Settings" msgstr "Pengaturan" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Pengaturan dari %s" +msgstr "" #: panels/signals.py:57 #, python-format @@ -93,148 +115,148 @@ msgstr[0] "" msgid "Signals" msgstr "Sinyal" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aksi" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Status transaksi:" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(tidak diketahui)" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Berkas statik" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Template" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Waktu" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "CPU time pengguna" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "CPU time sistem" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "CPU time total" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Waktu terlampaui" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -243,15 +265,19 @@ msgstr "" msgid "Versions" msgstr "Versi" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Menyembunyikan" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" @@ -263,6 +289,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" @@ -358,10 +392,8 @@ msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Variabel" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -484,11 +516,9 @@ msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s pesan" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format diff --git a/debug_toolbar/locale/it/LC_MESSAGES/django.mo b/debug_toolbar/locale/it/LC_MESSAGES/django.mo index 005af0e6e8cbc02101eda012dbe4d31dd33cef72..4294f8993dc6568d4089680510082d833a1805ea 100644 GIT binary patch delta 2962 zcmYk;3rv+|9LMno#Y=*SA|Rshdczywdq6``K#lN@nwK=~ax_%rga)Vi&MiF z`o!-vqz8!s#Es6zG~;*OxR5sXFlHt;;XwQh19%B5ac+V!`S`N+1oozU!%^_4Dk7E*^#=+Q*U9c;aRA3_N z{RPM)a}UO24R)b@6C~4}8yk>Ln=lT=ZJ3O$sD=)qD*nQjzedf#S=9GA^kM{#K{d1l zHLxlij_Xk0KWCr6gxzW1yh%n4L{L5Z*uHSkmQSD>_y+kg-*RE<%&({p{)4QV>D4PX z#VM%whoL%cp0*zymk27k2oe?g7x z8mfbTp*q%`i@wW1ZkZvdffm~G#AN1QJ)Ol3eYg<$F)O*KfeA__6`n=)ybX0at|H%>#6Gc+ z4a6ME!|`>jM9tWB`}}WIhvHc;eb*B;&@5E_d0~5F9BNIZP)qQteg1}h{;n;5gnI8Vsv{>+0}fv#b0p4~E4Yap@1@4h=NJxcGv%fD z5XPk&Gff|0IUYqO!zA{LnT0y%t}Rc)(Ug}WRhq|99oU7MfxXE0VY82n*62&?Db%Jp zhnk5?sFD7Ls^B_m$vS7mMx2A{crI#W&DaHq^*3W0B7PA7nI=-2Sl_ zN>LrEu;n>8pYkG9h0R!it*E`xj_TMobTKY7_I&}Wp$Vw(Dr|YKEicDpo&PE_TH6h% zhBqVo#yo1KS3SC&ru^ej@o4BQES+S>ev<3Qr$$&NDux{sJ{NFh6men5o(i{q4vbA zfy}=e@Y@GfsGilKDhi_-eg@Uhi?-Zi-H+{0QAnPd9`-P}YJ;jz6U>xOI zVimEN&?ySv%EeFIPgD>}>c}`^2~kFjA=KL%LhGzVebF@4x&k$Fop~jVS}8zis;8)6 z(+n&jDs}#qIz_MiZAOiznixskN314v3KkN}2&FrT+lgF)rHm$iEtpBfT4FY#byu22 zXhxJYBl8IkNc2x~NBhw=;og5Kft*f89xR= z|C38$E-{&yN#qks>xgLki^!}eCJ@62ZM2S5NM<52wBrVHs-o#`uEm5lYz{Gm2om=a z4-iTz#GGg@_CID5d55ScMrk{3B(stj;H4(a_pYY(i|k2wzEh+;>76+5)65iaWb(Gi z(c~@hl|DDm=gTW}9oH>(-O(&cAES(HBHW>>imYFKM<%2 zg{mjlRt48o2mJZfq0(HZ!1Wd8aT)71raGPd!Jzj->X8YB6P;jSeZ4zKZjn%qsC(vtEmoW~X)f7n0*H A*8l(j delta 3219 zcmZYBd2G{V9LMpeuz_r_ag=SqfO3ru7(3ix90LV8gfWgGARtn=(iOWF*N%aJJ-@cyb*XQ@#PsdLa z&Q6G3>YB3CkTwyyL|KY4ajbfP4^mFLG1IUI4#Ya_jaxB@2eBI69gP`|wbqxg3+2zO zXE2NMRa?G;1;)foMkiys@kIr8z$)uJ`Bzn^5)EVj6D2_P7Hxa1Zv!Lzs#u zaWa03s-Ht8`ZfbFh5k)38C5JtH8ch_`H9HnOciS83$Qb;L)F`kdT*C4zlznA_oLqb z3-j>~s>4B<$$^*RV9H}LmHtf~8C6)0da)VR!Fpsj%=7m9ZMM7@Rqu7AZF2~ie+-qo^f4fL-x0 z(zf{m_1;-jN8j7>&!~a@VxRxsnf2Gm{^o&ZatHZm(iyg1%tbYrhZ^7rTONm+Nj2)d z`Kb4np*mh4S1_{mvx`@gD$MU8a~PcHF(^9@ipquT|j+*8SC*Hda#D+>X1cI z9qh((+>fgN18U%xQMc+QYJi#SlP2cDJRA}ubAZfj)RNt{74D)2)ZU$Zu`_C>{ZJhg z+j0eJYo?&KqQ*X7f;3?oQ0;C&wYLTJ{tKuTitQ$&EqK#bc-vO^(3U?&RXmQG!5P$y zui!?PF*k5F;@Q&bTA$eK%_B`eUl@|0FV+!F1FNUqdEk z-a{?fG3zN*N9RyWco7pTfdeVuKn*CXXY%`eRQ+OG9*OE_JgVItSXxGAFBu({)2I=) zU@`uNY9N>OR7V3)FBUtqQ@h19)R{cd?k+{u^dTqB1W{`lL)F`bs&^38!#k)c96`1C zIcm*LqDFGget*?Izm6k$ehbx3Q7#Loj>*f%w8@#M3G_j2W)W(DqkG$nJB@RrUrEd-w5&?1%i<(% z|6F{6SV3^V&3a-Dp`Ror-Ihg!4)tn6X&s@{KZ_ViD5*`eSRXdc!CE3haEr_^LTNe? zC44H71`rz)x#amMAkP^!4-=z^#|fPerRNBp1ttA8Sx7uca2{f&l#EghQB4#QI?=5u zl}x%VOvY!4e4>fa4bTsi4(>dH-)b|2=tU^$0IwzLh#ACkVhN!eq7=|ny=0n+3B*KV zH1Q;%Lphk3LMV+VmL+n@yIfBGDO;X~4-vYmN^O!PKBqcOX|wy)hMPjsf{3TV7m0ZN zJ~Jr)z9&v$R&M-K+MYJ;>b;?mFBos?bl6qqTj>j$s&K708VHB}&5S1JZ*3}~fPBimJ}9O6qb~EO3Fu@+%}(5Xyld$g&x&AEqc>QYAM*68^pq4hhr2Hr@Sl131L6P8#2;{mXZ3fM zWNmSBv&TD|vxhlfWe<;M?_ys+nfSGxcc42GR=dUf|CM(+=J w>H-?{eY2t`=W?$j?&Q2Ec^ZBGKqT7ejfUed=bm>tYx)dxj`rEU&)c`nKRHNc9smFU diff --git a/debug_toolbar/locale/it/LC_MESSAGES/django.po b/debug_toolbar/locale/it/LC_MESSAGES/django.po index 17c8347c1..97ee9c3e4 100644 --- a/debug_toolbar/locale/it/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/it/LC_MESSAGES/django.po @@ -10,44 +10,69 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-08-14 15:25+0000\n" -"Last-Translator: Tim Schilling\n" -"Language-Team: Italian (http://www.transifex.com/django-debug-toolbar/django-" -"debug-toolbar/language/it/)\n" -"Language: it\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: yakky , 2013-2014\n" +"Language-Team: Italian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: it\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chiamata in %(time).2fms" msgstr[1] "%(cache_calls)d chiamate in %(time).2fms" +msgstr[2] "%(cache_calls)d chiamate in %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chiamate alla cache da %(count)d backend" msgstr[1] "Chiamate alla cache da %(count)d backend" +msgstr[2] "Chiamate alla cache da %(count)d backend" #: panels/headers.py:31 msgid "Headers" msgstr "Intestazioni" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -55,7 +80,7 @@ msgstr "" msgid "Profiling" msgstr "Profilazione" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Intercetta ridirezioni" @@ -63,11 +88,11 @@ msgstr "Intercetta ridirezioni" msgid "Request" msgstr "Request" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -86,6 +111,7 @@ msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ricevitore di 1 segnale" msgstr[1] "%(num_receivers)d ricevitori di 1 segnale" +msgstr[2] "%(num_receivers)d ricevitori di 1 segnale" #: panels/signals.py:62 #, python-format @@ -93,156 +119,160 @@ msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ricevitore di %(num_signals)d segnali" msgstr[1] "%(num_receivers)d ricevitori di %(num_signals)d segnali" +msgstr[2] "%(num_receivers)d ricevitori di %(num_signals)d segnali" #: panels/signals.py:67 msgid "Signals" msgstr "Segnali" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Idle" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Azione" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Stato transazione:" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Errore" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(sconosciuto)" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "File statici (%(num_found)s trovati, %(num_used)s usati)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Files statici" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s file usato" msgstr[1] "%(num_used)s file usati" +msgstr[2] "%(num_used)s file usati" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Template" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s rendered)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Totale: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Tempo CPU utente" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Tempo CPU sistema" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Tempo Totale CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Tempo Trascorso" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Cambi di contesto" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontario, %(ivcsw)d involontario" @@ -251,15 +281,19 @@ msgstr "%(vcsw)d volontario, %(ivcsw)d involontario" msgid "Versions" msgstr "Versioni" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Nascondi Toolbar" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Nascondi" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostra Toolbar" @@ -271,6 +305,14 @@ msgstr "Disattiva per la prossima requests e le successive" msgid "Enable for next and successive requests" msgstr "Abilita per la prossima requests e le successive" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sommario" @@ -354,9 +396,7 @@ msgstr "Ambiente WSGI" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Visto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la " -"parte significativa." +msgstr "Visto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -468,6 +508,7 @@ msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s query" msgstr[1] "%(num)s query" +msgstr[2] "%(num)s query" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -559,6 +600,7 @@ msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Percorso file statici" msgstr[1] "Percorsi file statici" +msgstr[2] "Percorsi file statici" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -579,12 +621,14 @@ msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App file statici" msgstr[1] "App file statici" +msgstr[2] "App file statici" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Files statici" +msgstr[2] "Files statici" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -592,6 +636,7 @@ msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s file" msgstr[1] "%(payload_count)s file" +msgstr[2] "%(payload_count)s file" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -606,12 +651,14 @@ msgid "Template path" msgid_plural "Template paths" msgstr[0] "Percorso dei template" msgstr[1] "Percorsi dei template" +msgstr[2] "Percorsi dei template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Template" +msgstr[2] "Template" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -623,6 +670,7 @@ msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processor" msgstr[1] "Context processors" +msgstr[2] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -665,15 +713,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"Django Debug Toolbar ha intercettato un redirect verso la URL indicata per " -"visualizzare il debug, Puoi cliccare sul link sopra per continuare " -"normalmente con la redirezione." +msgstr "Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Non sono più disponibili dati per questo pannello. Ricarica la pagina e " -"riprova." +msgstr "Non sono più disponibili dati per questo pannello. Ricarica la pagina e riprova." diff --git a/debug_toolbar/locale/ja/LC_MESSAGES/django.mo b/debug_toolbar/locale/ja/LC_MESSAGES/django.mo index 2d2528f2968975d7018d37d3aa27770d0fe4a3cb..55377e9814566c4a4e8a6eca98e8f92ab87cf3bf 100644 GIT binary patch delta 1282 zcmYk5OGs2<6vwa6bf%|Tnp$1UveeN#qZJGy5keq_i>zgN)zC?u5uKD4p=}I<5E-J! zBHR>F&}M{MNNoy=HigiGKxh-K0&7>Be*fzcI^1)A=keX|obPcTRDLa=UM+z`<9Vn;Lr~+#pcubt_+Mi<#Qv+3 zDh^hKk3;z#PvAj`5N4IaJ{{kdq0dk+;U?q6g6fsE)N6Wy1rh()mlY`VHBG zq4TEsV4HVaLXDK85%YB6HRy&k zVd&Os7bKPI2#!Nr8~myk(@1eHh^)zqXN+D;f+LX4SDBvQH= z;;|74o1!6Op`jZa8wm*_(Zr%336drv5{Z@HzjH@$a?kg>_uO;OJ@@sE`R|m(KNRO) zF-QZt5dG*eW*5Ad!w31CYfKsZ0;faY6k`hDLYN1aLyB3$M}D=|z8~h(ZigCo2vW=m zKGWbC$oRM!ph9euvK`mpY}$9Aau|WL;3%Y+mwXi9EmQ*ImS3Ube20bbCoG2Esm9EJ zbD{dnEmy(<<~M66E9?MNz^zaNc0jG570!eQp%OX{mB2|T|MO6OgVuf(Qp{~W>c0!; z!!!)Q7jP+@fYX@Y%*0EXE`r+HYN$*%+V*Cs3AS7AhAhss+IBmnm_xRG6l%*)K_z|x zp5|C@z{RxvOyYyKg*u0S=BRs*AY@twpoqrLq8>mo>lus-2MN z$hBxh_doMq^&})4P@T1YNEN8Ic?nvBu0?gTbtjgiepEMEuR-^M3qC19OTD5>TNm_$ zGvyT>(c`_xDr143aLgZT?+pKIk|mbv%6-<@6z&Umo2F=|JSWX+bVhnR&CZO$G`IJJ zO>;ER5se;>gk!2^eFNS2h7YD2ro8v~LN!&@^;I>sfttFFp}JHs&p&-{q$jYaqbt(g zO~6znFPPKc-=Dga_j>W43_qP6a1+C>bIWxcH~GYMp1R4$>9+i!XOrvPbDit1bJw`e qeK+~wKc|e9p=tVP{1YJ+FQ{0iQMTVrTyc{Z-NeoR{L-m{ZQkGT@Z9VG diff --git a/debug_toolbar/locale/ja/LC_MESSAGES/django.po b/debug_toolbar/locale/ja/LC_MESSAGES/django.po index 69a059666..e985d55f5 100644 --- a/debug_toolbar/locale/ja/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/ja/LC_MESSAGES/django.po @@ -8,32 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-08-14 15:25+0000\n" -"Last-Translator: Tim Schilling\n" -"Language-Team: Japanese (http://www.transifex.com/django-debug-toolbar/" -"django-debug-toolbar/language/ja/)\n" -"Language: ja\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Shinya Okano , 2012,2014,2020\n" +"Language-Team: Japanese (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "デバッグツールバー" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "キャッシュ" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -43,7 +66,7 @@ msgstr[0] "" msgid "Headers" msgstr "ヘッダー" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -51,7 +74,7 @@ msgstr "" msgid "Profiling" msgstr "プロファイル" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "リダイレクトに割込み" @@ -59,11 +82,11 @@ msgstr "リダイレクトに割込み" msgid "Request" msgstr "リクエスト" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "<利用不可>" @@ -92,148 +115,148 @@ msgstr[0] "" msgid "Signals" msgstr "シグナル" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "静的ファイル" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "テンプレート" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "時間" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -242,15 +265,19 @@ msgstr "" msgid "Versions" msgstr "バージョン" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "ツールバーを隠す" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "隠す" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "ツールバーを表示" @@ -262,6 +289,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" diff --git a/debug_toolbar/locale/ko/LC_MESSAGES/django.mo b/debug_toolbar/locale/ko/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..592198de11de5acc38626e37386a5d6a4e21777f GIT binary patch literal 8483 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 literal 0 HcmV?d00001 diff --git a/debug_toolbar/locale/ko/LC_MESSAGES/django.po b/debug_toolbar/locale/ko/LC_MESSAGES/django.po new file mode 100644 index 000000000..97cdf8c61 --- /dev/null +++ b/debug_toolbar/locale/ko/LC_MESSAGES/django.po @@ -0,0 +1,690 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# yeongkwang, 2022 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: yeongkwang, 2022\n" +"Language-Team: Korean (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:18 +msgid "Debug Toolbar" +msgstr "Debug Toolbar" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 +msgid "Cache" +msgstr "캐시" + +#: panels/cache.py:174 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(time).2f 밀리초 동안 %(cache_calls)d번 호출" + +#: panels/cache.py:183 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "백엔드에서 %(count)d개의 캐시 호출" + +#: panels/headers.py:31 +msgid "Headers" +msgstr "헤더" + +#: panels/history/panel.py:19 panels/history/panel.py:20 +msgid "History" +msgstr "히스토리" + +#: panels/profiling.py:140 +msgid "Profiling" +msgstr "프로파일링" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "리다이렉션 가로채기" + +#: panels/request.py:16 +msgid "Request" +msgstr "요청" + +#: panels/request.py:38 +msgid "" +msgstr "" + +#: panels/request.py:55 +msgid "" +msgstr "<사용할 수 없음>" + +#: panels/settings.py:17 +msgid "Settings" +msgstr "설정" + +#: panels/settings.py:20 +#, python-format +msgid "Settings from %s" +msgstr "설정 %s" + +#: panels/signals.py:57 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "1개의 시그널 %(num_receivers)d개의 리시버" + +#: panels/signals.py:62 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_signals)d개의 시그널 %(num_receivers)d개의 리시버" + +#: panels/signals.py:67 +msgid "Signals" +msgstr "시그널" + +#: panels/sql/panel.py:30 panels/sql/panel.py:41 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:31 panels/sql/panel.py:43 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:32 panels/sql/panel.py:45 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:33 panels/sql/panel.py:47 +msgid "Serializable" +msgstr "" + +#: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 +msgid "Idle" +msgstr "유휴" + +#: panels/sql/panel.py:62 panels/sql/panel.py:72 +msgid "Active" +msgstr "활성" + +#: panels/sql/panel.py:63 panels/sql/panel.py:73 +msgid "In transaction" +msgstr "트랜잭션" + +#: panels/sql/panel.py:64 panels/sql/panel.py:74 +msgid "In error" +msgstr "에러" + +#: panels/sql/panel.py:65 panels/sql/panel.py:75 +msgid "Unknown" +msgstr "알 수 없음" + +#: panels/sql/panel.py:162 +msgid "SQL" +msgstr "SQL" + +#: panels/sql/panel.py:168 +#, python-format +msgid "%(query_count)d query in %(sql_time).2fms" +msgid_plural "%(query_count)d queries in %(sql_time).2fms" +msgstr[0] "%(sql_time).2f 밀리초 동안 %(query_count)d개의 쿼리" + +#: panels/sql/panel.py:180 +#, python-format +msgid "SQL queries from %(count)d connection" +msgid_plural "SQL queries from %(count)d connections" +msgstr[0] "SQL 쿼리 %(count)d개의 커넥션" + +#: panels/staticfiles.py:82 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "정적 파일 (%(num_found)s개 찾음, %(num_used)s개 사용됨)" + +#: panels/staticfiles.py:103 +msgid "Static files" +msgstr "정적 파일" + +#: panels/staticfiles.py:109 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s개의 파일 사용됨" + +#: panels/templates/panel.py:101 +msgid "Templates" +msgstr "템플릿" + +#: panels/templates/panel.py:106 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "템플릿 (%(num_templates)s개 렌더링)" + +#: panels/templates/panel.py:195 +msgid "No origin" +msgstr "" + +#: panels/timer.py:27 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:32 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "시각" + +#: panels/timer.py:46 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:47 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:47 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:48 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:48 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:49 +msgid "Elapsed time" +msgstr "경과 시간" + +#: panels/timer.py:49 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:51 +msgid "Context switches" +msgstr "컨텍스트 스위치" + +#: panels/timer.py:52 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:19 +msgid "Versions" +msgstr "버전" + +#: templates/debug_toolbar/base.html:23 +msgid "Hide toolbar" +msgstr "툴바 숨기기" + +#: templates/debug_toolbar/base.html:23 +msgid "Hide" +msgstr "숨기기" + +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 +msgid "Show toolbar" +msgstr "툴바 열기" + +#: templates/debug_toolbar/includes/panel_button.html:4 +msgid "Disable for next and successive requests" +msgstr "다음 요청부터 비활성화 됩니다." + +#: templates/debug_toolbar/includes/panel_button.html:4 +msgid "Enable for next and successive requests" +msgstr "다음 요청부터 활성화 됩니다." + +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "개요" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "총 요청 개수" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "총 소요 시간" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "캐시 적중" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "캐시 비적중" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "명령" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "호출" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:36 +msgid "Time (ms)" +msgstr "시간 (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "타입" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "매개변수" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "키워드 매개변수" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "백엔드" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "요청 헤더" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "키" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/history_tr.html:23 +#: templates/debug_toolbar/panels/request_variables.html:12 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "값" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "응답 헤더" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "WSGI 환경" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "WSGI 환경이 서버 환경을 상속하므로 아래에는 중요한 하위 집합만 표시됩니다." + +#: templates/debug_toolbar/panels/history.html:10 +msgid "Method" +msgstr "메서드" + +#: templates/debug_toolbar/panels/history.html:11 +#: templates/debug_toolbar/panels/staticfiles.html:43 +msgid "Path" +msgstr "경로" + +#: templates/debug_toolbar/panels/history.html:12 +msgid "Request Variables" +msgstr "요청 변수" + +#: templates/debug_toolbar/panels/history.html:13 +msgid "Status" +msgstr "상태 코드" + +#: templates/debug_toolbar/panels/history.html:14 +#: templates/debug_toolbar/panels/sql.html:37 +msgid "Action" +msgstr "액션" + +#: templates/debug_toolbar/panels/history_tr.html:22 +#: templates/debug_toolbar/panels/request_variables.html:11 +msgid "Variable" +msgstr "변수" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "호출" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "개수" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "View 정보" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "View 함수" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "URL 명칭" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "쿠키" + +#: templates/debug_toolbar/panels/request.html:27 +msgid "No cookies" +msgstr "쿠키 없음" + +#: templates/debug_toolbar/panels/request.html:31 +msgid "Session data" +msgstr "세션 데이터" + +#: templates/debug_toolbar/panels/request.html:34 +msgid "No session data" +msgstr "세션 데이터 없음" + +#: templates/debug_toolbar/panels/request.html:38 +msgid "GET data" +msgstr "GET 요청 데이터" + +#: templates/debug_toolbar/panels/request.html:41 +msgid "No GET data" +msgstr "GET 요청 데이터 없음" + +#: templates/debug_toolbar/panels/request.html:45 +msgid "POST data" +msgstr "POST 요청 데이터" + +#: templates/debug_toolbar/panels/request.html:48 +msgid "No POST data" +msgstr "POST 요청 데이터 없음" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "설정" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "시그널" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Receivers" +msgstr "리시버" + +#: templates/debug_toolbar/panels/sql.html:6 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s개의 쿼리" + +#: templates/debug_toolbar/panels/sql.html:8 +#, python-format +msgid "" +"including %(count)s similar" +msgstr "%(count)s 개의 유사한 쿼리 포함" + +#: templates/debug_toolbar/panels/sql.html:12 +#, python-format +msgid "" +"and %(dupes)s duplicates" +msgstr "그리고 %(dupes)s개의 중복" + +#: templates/debug_toolbar/panels/sql.html:34 +msgid "Query" +msgstr "쿼리" + +#: templates/debug_toolbar/panels/sql.html:35 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "타임라인" + +#: templates/debug_toolbar/panels/sql.html:52 +#, python-format +msgid "%(count)s similar queries." +msgstr "%(count)s개의 유사한 쿼리" + +#: templates/debug_toolbar/panels/sql.html:58 +#, python-format +msgid "Duplicated %(dupes)s times." +msgstr "%(dupes)s번 중복됩니다." + +#: templates/debug_toolbar/panels/sql.html:95 +msgid "Connection:" +msgstr "커넥션:" + +#: templates/debug_toolbar/panels/sql.html:97 +msgid "Isolation level:" +msgstr "격리 수준:" + +#: templates/debug_toolbar/panels/sql.html:100 +msgid "Transaction status:" +msgstr "트랜잭션 상태:" + +#: templates/debug_toolbar/panels/sql.html:114 +msgid "(unknown)" +msgstr "(알 수 없음)" + +#: templates/debug_toolbar/panels/sql.html:123 +msgid "No SQL queries were recorded during this request." +msgstr "이 요청을 처리하는 동안 기록된 SQL 쿼리가 없습니다." + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL 설명" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "실행된 SQL 구문" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "데이터베이스" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL 성능 분석" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "에러" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "선택된 SQL 구문" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "빈 셋" + +#: templates/debug_toolbar/panels/staticfiles.html:3 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "정적 파일 경로" + +#: templates/debug_toolbar/panels/staticfiles.html:7 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:11 +#: templates/debug_toolbar/panels/staticfiles.html:22 +#: templates/debug_toolbar/panels/staticfiles.html:34 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:30 +#: templates/debug_toolbar/panels/templates.html:47 +msgid "None" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:14 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "정적 파일 앱" + +#: templates/debug_toolbar/panels/staticfiles.html:25 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "정적 파일" + +#: templates/debug_toolbar/panels/staticfiles.html:39 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s개 파일" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Location" +msgstr "위치" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "템플릿 소스:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "템플릿 경로" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "템플릿" + +#: templates/debug_toolbar/panels/templates.html:22 +#: templates/debug_toolbar/panels/templates.html:40 +msgid "Toggle context" +msgstr "컨텍스트 토글" + +#: templates/debug_toolbar/panels/templates.html:33 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "컨텍스트 프로세서" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "리소스 사용량" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "리소스" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "브라우저 타이밍" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "타이밍 속성" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "탐색 시작후 밀리초 소요 (+길이)" + +#: templates/debug_toolbar/panels/versions.html:10 +msgid "Package" +msgstr "패키지" + +#: templates/debug_toolbar/panels/versions.html:11 +msgid "Name" +msgstr "이름" + +#: templates/debug_toolbar/panels/versions.html:12 +msgid "Version" +msgstr "버전" + +#: templates/debug_toolbar/redirect.html:10 +msgid "Location:" +msgstr "위치:" + +#: templates/debug_toolbar/redirect.html:12 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Django Debug Toolbar는 디버그 보기를 제공하기 위해 위 URL으로 리다이렉션을 가로챘습니다. 위 링크를 클릭하여 정상적으로 리다이렉션을 계속 할수 있습니다." + +#: views.py:16 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "이 패널의 데이터는 더이상 사용할 수 없습니다. 페이지를 새로고침한 뒤 다시 시도하십시오." diff --git a/debug_toolbar/locale/nl/LC_MESSAGES/django.mo b/debug_toolbar/locale/nl/LC_MESSAGES/django.mo index 012fecbf75c25c126def763236ec9c2f4f7f0198..173e26b10c5580f24b95d674c106a62cd7d3aed8 100644 GIT binary patch delta 1790 zcmZXUOK4PA7{^a)5+_bFQERk55@!;%#$?8uhp#kEHAW@WM2o3HMC(nwro$vNF&TUy zI_O5+w3KVXQq-UzsLiHvAzDz}2rhgqTokkm-3Y-KDvBcZ_n#bG=*Rt^-#Ons_k7=X z&YAf;^0F-R-{joi4Ymr+LM>ky#$oOoGFfSKw5}ckK8PtYrKa z7Qi{<#~6b}jF&=Qnbl*=m^M1)I65FP%xMO> z^R7d!bKCmwTK@w$4*zI&oH6Dp9cAVpqZfpb|!fhI!vOQ8amL#CK&JFbUHyvdGR zAdhLMQJ_swm2ZYxFAnwnE*K!bIbdHLhDzk9o$#mSX;_T^Je&+KLmkyksDwu0JopMK z(OEd*URZs!zVF)%_eh)KW;^?HK50g+62ca_F2UXb-sD*yD?~mE>5S)nrEF8)) z<`NuWyqWFmfH$G;N(E($i=ghx8av)vXfh^-qaTL?o`lM97^>2Lpc1$RwKI32?#eyu z{{WR(9v|z-LQwN&K=~t($1JeprBH>gfZEa3MeM&OZp1#IMYZ_&k$EuoG0x8yn zp#nu|lwc!N0WDDP+n|o56KV$&a5_8ymC!NxH9Q3sH*>?jxMle-)WQ#;5*W372X%%) zocgd7s-kkJI~0Sev>7T;s~vBETCWr8`!2{;G2fyZ;%EPO=zp{by?Lm@dbF4-lBvS4 zvOWGt;1X1cv}3Y`WB9C%;i*Dl^bOJu)S*1$n=(4pXd05uKyy(&(iYA~4M^64REi$Ek9# z32WWKbhKl@O%C?D>C`|&xHZ|63O9QLU0yQW7-!Ix?Jw`?bK||S?o?k>b-324sg2Uq z`HO>PlidFPSXwK@cX)d=!|xAH^>+p@`qv7}M*0d}WnAgMFDmd$Li>u>X4Cd;)}DVR YR8i8N`Xup0!b|&)Lt91?#cOi@2YcDOMgRZ+ literal 4274 zcmcJRU2I%O6@Uj?N^l!!N<#Q4bka19x9xguCn?Fsc55eg;yQNR>^eLEN@sUxudjXg z-qrnC+eMWMNPx-%Ed{kNs5})_s`|nc2nkRh5K_w%;suE!)E8dz0unzGi0|AxyX(Xd zP$fot?l))d%$b=p=bqW$-E;eQ6=eyz7fIi*l!b5I&V%yQ9ZEd_4GiGd;0pW`JOJlD zSg;O1hTeAiGq8mIE%+h$BgZ%4e)P8?Ce&{o{{UsmKf?Rrb@%~zU|-RG7}BKfh0^{2 zyc0g;^hY5-HO1pDI1gpsD^U7>!L>IaKNazi`L(Z{_6C9LVju=on*cPQ2cTTioK&y<{O97?=<{0 zoOSQ7LGfPzrC;LsCHN8auR>YRi%`z>Rme}h$>TxzHk5t**|q--$~?D?6!z|dA4Wgu zcocpVeG{#l(;(M^i?>9-hlkn3p`|>Y%%&ii>tzey-@ zHVrj=0%AgKLRs(AQ1<;5DE+<(<@{cT;^)`kC*V(@tmilIIQ%`7`S;OT+V?vihGO>! zq>Cy!o`G`Ci%`aW9?HI+f)Z~56n{Mn#opJQ{sI(xFGCsseMnfT&mg173{plUc0P_= zM8r>@L?)4gh?J=UgD2@PFS18j=Of62$fHQVJWhq_)L}$?B>sE|*YaZ+mOeqBdxUA#?vFEoL?bG2KHO5WQr88zX| z|2ONq`X#B~v8C~`6K&l|Y?F~`l$u~~%e6fnvpp@nX0pW|dr^SbOuX|5+xK0g9}b$; zXclgU(NfgzTKKpQ(0(w#t%#*urq45nfg(fqi5BeX>O`>t7}#4HM0(jn{0Oy zJvv;h=p}W|G}kT9AW-MlO&D4jLPNOJjm{=`_+U5h6?2fu*drW*OYMOix z%Pw?Q3=^zGdSHh7>gAfViQ-}`(Lv;Swng92s$q}SIBNTWAA0J^%*H$FNO&+1NLM|Fn1&B~4|#V=}1db{uu|R5NPXnPbURC9kO3dbBmzVJ(kf zRe+IMr^5lO+D?+%j^=C%2i9$esZ*=^m1I!UU6Zcgs10B4s>!j+7lqy2RKn*M+puM0 z+bXHL9FsissGPXe@Ci*(TD+3z-L)Q337aBfR6RCfV)8)HNovw8sjB);*Q&K5Ak|u8 z?<$|SM5SY*t`fQ058F}PDbAWR+91x#i>aI|I4v(Hp5H3ZWnNOQM^!ztdbxbX_I#P8OoZC1o*bVzSsp)Go;;-|&QwpG zczB#La>*oVIo}Mn7$~n_jCglur-)$?R<#m*+#`ka(@? z(+xizEW4`1U}QDOViS}X@O(l;H&>JC$+NnsPLGEA$h4j)ogE>i^|N?Ge6*hKZLuM3 zH>Yvd-D7VA1R(Rs`j98^**%mbZD5w{0>*oO%CymcL9~+AjWIGNHjm zwIK6}Gx<0hewfFNnl)TQ!7$hJE{GUIuG(mkr#+kJ`h_S<)taArwinsBWpB*(V$jB( zGfi!f6J?yw%4>n;k_glae*jG8GC#MLi?$VGI_iRD+Cl2iwP9+{RTrFe^DH;Of5`vX z9NYkx`vID$xtP4vPyaXq6BZNw^l#Y%9_OASU2}?<7*^TYZY2-Bo9}`-yXkLi4tAbj z1LE}jR=_}w%Ps5~cfZJ`Ft`=)bpJ9KREFukYlg3>W2)bI*eAc~Z@v=vF7rzvzY}B* zjnmNBlocWvF0PcFg%;#_^{{&V| W%\n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/nl/)\n" -"Language: nl\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Ingo Berben , 2012-2013\n" +"Language-Team: Dutch (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -45,7 +68,7 @@ msgstr[1] "" msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -53,7 +76,7 @@ msgstr "" msgid "Profiling" msgstr "Profilering" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -61,11 +84,11 @@ msgstr "" msgid "Request" msgstr "" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -74,10 +97,9 @@ msgid "Settings" msgstr "Instellingen" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Instellingen van %s" +msgstr "" #: panels/signals.py:57 #, python-format @@ -97,151 +119,151 @@ msgstr[1] "%(num_receivers)d ontvangers van %(num_signals)d signalen" msgid "Signals" msgstr "Signalen" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializeerbaar" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Actief" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Foutief" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Niet gekend" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerenderd)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Totaal: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tijd" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Gebruikers CPU tijd" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Systeem CPU tijd" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Totaal CPU tijd" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Verlopen tijd" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig" @@ -250,15 +272,19 @@ msgstr "%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig" msgid "Versions" msgstr "Versies" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Verberg toolbar" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Verbergen" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Bekijk toolbar" @@ -270,6 +296,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Samenvatting" @@ -357,7 +391,7 @@ msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" -msgstr "" +msgstr "Methode" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 @@ -365,10 +399,8 @@ msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Parameter" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -492,11 +524,9 @@ msgid "Timeline" msgstr "Tijdslijn" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s bericht" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format @@ -647,7 +677,7 @@ msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" -msgstr "" +msgstr "Pakket" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" diff --git a/debug_toolbar/locale/pl/LC_MESSAGES/django.mo b/debug_toolbar/locale/pl/LC_MESSAGES/django.mo index 1e065d08e0fa2560d581b023c480989d5cc3f6fb..8396193427e5c7040c7255ee020b71c3126e1041 100644 GIT binary patch literal 5609 zcmd6qU2I%O6@Z7*LNPz3q5RV_fhO_N?0W4aCEdhso5X3{B#sk1X^B*#@x5dFdhg!5 z+@EZA)lw-+RTc3k6(Y5z5=B%Z5*46Gd7(lT$qINW;sKBV^#xT3q>2~bnj*e)ch*0t z8zP_*S3djAoS8XuX6DSj$FHor{@aRY68RMJ)$5e1!^_w6!}Ei8DRn z?%tS3VTJn3@Midi<4rdz^%3gpq3E~6_rUudXW;v(e-UC*g^np4px%L)QjfvUz^}m@ z;E&;6cmaxwZ#eyR7^kRigztqn!wL3u>7Rx&@Au#~_#>x(6|STH8k9H? zC&iCj;YPR#ivN>NKMiHxhoJa32W9;^lzvY@@$c(U)^Qd}|L-{c^RE5^lyzNzcM^NQ zfX`F^Cx8d-|E9m;tRLGg1Gia!US z_;&rm|7z$VN1o8c$nZIC6a8kBMSq4YcK>JLGg z*Mrh8g?r!`DChJmDE3~4GS45O`130KD7*~i+-|wW#RC+-H$jQF3KYLb97mz7e;<@_ zQ&8sr0=ydrQ06-aH^B?=5PSv7{FM(YbqCxI#Xld4K5$H-?DHd#Em3Eo_;C)(d@n%h ze*uagFG2D5myW-NGVXWq9k7CkKO2zykP$@e>_R?=>_p_bACdhNp9xd-2}C3EOd{(M z@mrqFh@64UzYk$)>a&QP*PX~+h&&Q!^4x>eq_E=ILRrpXH?kl3JR*;*og-0IM9yaz z=|5#xnCL5@to0yr0Fix=vzPOdXB;7{mmapHxcl3krnJ<;y`j7pku#AvlRcJwzw)^a z#Wv)2WDprbCHp3#{0nej>4+4Nlrbrs|hng;Wc zDco?StBgwjvtcr7Soh5TJL^~U%Tw#KytyE>TFP$t3U%7or^V(~D_iDtBefnqvp6$h z=}npwZ|ay|p&87hdK9;!lG+)?`ea~RV`^s}nUf|6&1`7L)V*F7#8H8hR^6Ltu@^TQ zL8f*YuWln>?VdVX(;PIXQ!Nfu4=y_-2V7FSB?x-IMF_CWByPx{IFB+8YqoDoI$pI) zikUDhekkIJiF_$Uku4mpNjbBpGM%=93~SQJBx;Yz%&bYR+GA()c|8-y;jBs2cxamJ zww8TSzjfZAt`PiU!qfp3c+ojDs5erVN1q-`;XLY9~) zHNB0Sz?;Og&5Vfj1EMlZ)kGSHMz&Rl_M{DKYQJr(1F=`=)TF_c$ynbvKBIlSmh#l0 z>E#OE6xV>j*Dae^iS;<~@zc+fAez_NLXe{5s-#(k;gMBSNla+bs16qw=m@LPy^~~t zs;K7CN`<>hG!=GW8t1G;$!1L3EE8jnshTb>mjl&|wRlA|udYaN$Yq@4P>OgLZYC5& z>4Lq0n$9^~uKJ8^G}$e?R7jUfx@oe7)wSiu6{Y^9nKPAg(Gp^pz4J?IMvh*7^q>T* zl-MX#a;XUIUR0}@X-?0%Wo3M%~8h)7P&c&sXE5(;#z|H_n9c`&c~?H4mS^Ic9+)~*K4MP> zGE158wlzIc9j=y#hs#^4x>~JOt9Mj+1`e1sD;Mswk8x7d`{O9#_z%Wu+&!arHeggQ zbob0RxcL?0U~IEk+p?LTZCHrrb2D$tGuAX}dMXZsbU_a;WLdK|G-R61N)htGoINFD zhx}p{WnZpZ*+~x@P+3A{=i%m}xL_4&%U=ptC z=+T+I8M#$)6uOvXq1-G z!Dw`JSl_Lyx~2!C4a3#3(Gk6Iqn6^%(XAyZ7y9bX;Sv4t!$m`NY?zk2`2b*ZJ>&bG z#zw2lgNIAf-x=MutiNkn&umzA(=lJq>d)6_{b|%i@_iBx~Leo9-7K&Bh_1K>c;>55}d1I{jrnmXJ zcTeX%8*2>lE}oaQtT~FN|A%pjEX^~LLR`~o-u8a|7jpN-HXp`j7}S?{YGs?fN?Y4o zxaQXXWoARjbs`hBNo{5mQ`fD)kLx+<4Gn&rW|y97Ms4z&y0>Wf&Dt&A`TtFR^FZ$& zauqtHFp|i0h_@?JoLpT~H`(U5t)pBWPaV5dH<}Mb zX6tE|tBEk~K6B}DGQf@@Ly0)yE3&HH+{AiJ0@l`E$E0d1Pbqe0gNx@AwM&fpcz{I{ zu}l3oM3H7qn)&W&mR}Fl(R$Ke?ENm~TDxq=>$Ib&tsc;`7<$U@$ZA~5#aRZ0-`+y2 z?UDEBCX1*CHi=ujgJi9pfXp-Kkbu#b%qz^j4!Kv|gh2-t*_P?FjM^n3(_5P)Vyo(s zjH&KVjlaTqBhG8~O?QYbmfzN~AH|u>ix;sk`@r{$Z+m~erczjSsafHmRmc0A(OX7` zcjqF*o18?%cU}^?j>XoZ%(YT~sCX}W?IjC_QhM?HY>}@W#iv#v=c<;9MostLGJUqy z6gNC5vYWQok;zuq^&mGYv}_^&Ec9NbE|1%+b9qPfwY_&kiS72&yy2GS5;+d`>ZR_} zUSPW~)(zWLq<)O(>w><{)~{K&#%yaPgspZjB@}OC{%4W6m7iW#c&PhK5z0CLdaR1= zx|lC^hjrz9KOt(`cnshzlfBvL+L&E7j+U+>*J z%YAsg+aRH+6$sQK5h0XDh_rm6QbDbP3JR$ZO;#ZBlHeOc@Bt(q;sYQd`UQ#q|K3?Y z5*N~{S9|Vn=FFMbnKSq7?{@F_s=zY|`4GgtO$Y@(zXLBk#kUFZDX;|Y1jKZBei54=1Mk7% z4}oXEXTdLn2{-^JGmgGxc?Dz~{mj$bJ(b*F6Pt z9tWhI2huJ9@e}9pV*7cJ{VssCy9Dw)p11WELE60xVoBl}h@bd1UdO;cf_uO`oX39C zAm^C{x$Z@f=j4H$Cj=QsEs*>EtmPL##>aV(`+EUozwd(_??)ix>=)n>@NXc;&mp+> zg99Mv|1?OwV_66B6HUB0?-xOi`xHpKuYsKJ8IbFH&hiBiKk+@h5JqAgQidFdY<>=) z@5s357s&sZLjE!bz`rR%!dDeqi?c{QkNC` z2A5<#(hhpYCRTp_Ce7kahRF?@ToTj*(+u)rI52Y6)6G#aoCIoBdA_RndQ^-#v1fu5 zt6GdDv2jej?!{tUIkohq16LfKSt!GA4t!or&r;?#R>iZ;i=#aM?46!|B$q-{XQ%Y+ zTv@?@=~y)UpC%E8@%{9L;<5??jhb&FjE}{sz=hgCo36c#GU7!XQ?aTj*i6(LaZ5%z z787A;LNT$Xog~(-oO^UiJnXqzOa@Y?O(?{n3L=$xVKOqlqCcdsSG8XjkLZ?|Vo^*P zCv8EYTJ?gen6|-rLe;f6VdO&-^U}ov5A1BguH# zi=ad(M{ys!+qjRUkGZr9RiMR8XqG&mGe4Tf{A@S6#jK7@5;|INe{(vHX=E9#7qa6R zc8se>d!yn0v>@ivTVMg>1n$L!n%DIPJfYVM(RxWXRJ^>kw$Zq$#0bG1U5xEe5pHXU z^M?oAyqL#VA$`dlgNIe@4XTaPkWsASBr1#fRzr)0ERe-1 z&yizEHNlk*-!sRlO`{jPFIuGPfMZjdFi~v)SxR z!_-^SYkjz%{f%r>QGcV~P4`l8xtBtm?WNzhs-Q8W}u-Mz)OPf{~Gud_Wc@ntMyd(UAeUZ(mv*9vNaWM|E+yRFr4Wrh3{G z^XOATpMm_59()bAW}0TJX*%ar;Az>!*Czb{Zl7+}E!8brb{^lx&}O2hr(9Dvor~8$ z&n4Zcb-dTqW{In<8m*YChTT?;xzqqovx{@>GTp?R zxhVr?z0mY#_6xa0M==H7(yHE&-J6*#aT@JF1ubODN~mhG>A9wsAY-DzHBo&1LL+D) zW!9V(g?HR);)}H@WuA^=?X+Ki(mb7oFv6{kyvXd>#u43+HxqG7W<0~!Yse_HeF9I3 zM-)RyoKf{!;H?OJjF4*BFoTPB{RyXyiY|*uKa2ix)mF%SLCaYdGx*ZAWV_;ByBvyf zTDuszX5dw9svGiYB3`J4trc-vR$z6(ZF31W7sI_C=4yNR`{1>akx@q~_7nIvQzHr2 zl<&3CqL`39aeC8rJfYf6CB}Jz*|M0Mx73-RMdt^~-LxvjRY~kjwsF*OKua1oFtKTJ z?G58PZ582DiM-L>h(fley+WR*nUS5V7!!^_=-AH#J_KBeP2aS_PS12bAx@_E*l9r( zUAtUKQ}_a=Z+djHSTCwgMMTFDsosZARWM?>Adn=1-l3zl!i=`pT03$<9Sd=O$t<&G?(bAWi;sGVdiK kM1^q{bZ6>tP@u$V?d@XGM$u0$ftw#Q*>R diff --git a/debug_toolbar/locale/pl/LC_MESSAGES/django.po b/debug_toolbar/locale/pl/LC_MESSAGES/django.po index 1e33de287..337ad376e 100644 --- a/debug_toolbar/locale/pl/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/pl/LC_MESSAGES/django.po @@ -3,52 +3,76 @@ # # # Translators: -# Konrad Mosoń , 2013 +# Konrad Mosoń , 2013,2015 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Konrad Mosoń , 2013,2015\n" +"Language-Team: Polish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pl/)\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==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" +msgstr "Debug Toolbar" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" msgstr "" -#: panels/cache.py:180 +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d wywołanie w %(time).2fms" msgstr[1] "%(cache_calls)d wywołania w %(time).2fms" msgstr[2] "%(cache_calls)d wywołań w %(time).2fms" +msgstr[3] "%(cache_calls)d wywołań w %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Wywołań z cache z %(count)d backendu" msgstr[1] "Wywołań z cache z %(count)d backendów" msgstr[2] "Wywołań z cache z %(count)d backendów" +msgstr[3] "Wywołań z cache z %(count)d backendów" #: panels/headers.py:31 msgid "Headers" -msgstr "" +msgstr "Nagłówki" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -56,19 +80,19 @@ msgstr "" msgid "Profiling" msgstr "Profilowanie" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" -msgstr "" +msgstr "Przechwycone przekierowania" #: panels/request.py:16 msgid "Request" -msgstr "" +msgstr "Zapytania" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -77,10 +101,9 @@ msgid "Settings" msgstr "Ustawienia" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Ustawienia z %s" +msgstr "" #: panels/signals.py:57 #, python-format @@ -89,6 +112,7 @@ msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d orbiorca 1 sygnału" msgstr[1] "%(num_receivers)d odbiorców 1 sygnału" msgstr[2] "%(num_receivers)d odbiorców 1 sygnału" +msgstr[3] "%(num_receivers)d odbiorców 1 sygnału" #: panels/signals.py:62 #, python-format @@ -97,161 +121,163 @@ msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d odbiora %(num_signals)d sygnału" msgstr[1] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" msgstr[2] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" +msgstr[3] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" #: panels/signals.py:67 msgid "Signals" msgstr "Sygnały" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" -msgstr "" +msgstr "Przeczaj niepopełnione" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" -msgstr "" +msgstr "Przeczytaj popełnione" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" -msgstr "" +msgstr "Bezczynny" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aktywne" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "W transakcji" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "W błędzie" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Nieznane" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 -#, fuzzy, python-format -#| msgid "%(cache_calls)d call in %(time).2fms" -#| msgid_plural "%(cache_calls)d calls in %(time).2fms" +#: panels/sql/panel.py:168 +#, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "%(cache_calls)d wywołanie w %(time).2fms" -msgstr[1] "%(cache_calls)d wywołania w %(time).2fms" -msgstr[2] "%(cache_calls)d wywołań w %(time).2fms" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" -msgstr "" +msgstr "Pliki statyczne (znaleziono %(num_found)s, użyto %(num_used)s)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" -msgstr "" +msgstr "Pliki statyczne" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(num_used)s użyty plików" +msgstr[1] "%(num_used)s użyte plików" +msgstr[2] "%(num_used)s użytych plików" +msgstr[3] "%(num_used)s użytych plików" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Templatki" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templatki (%(num_templates)s wyrenderowano)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" -msgstr "" +msgstr "Całkowity czas: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Czas" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" -msgstr "" +msgstr "Całkowity czas" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" -msgstr "" +msgstr "Przełączenia kontekstu" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -260,15 +286,19 @@ msgstr "" msgid "Versions" msgstr "Wersje" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" -msgstr "" +msgstr "Ukryj toolbar" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ukryj" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" @@ -280,6 +310,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Podsumowanie" @@ -375,10 +413,8 @@ msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Zmienna" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -478,6 +514,7 @@ msgid_plural "%(num)s queries" msgstr[0] "%(num)s zapytanie" msgstr[1] "%(num)s zapytania" msgstr[2] "%(num)s zapytań" +msgstr[3] "%(num)s zapytań" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -503,11 +540,9 @@ msgid "Timeline" msgstr "Oś czasu" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s wiadomość" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format @@ -572,6 +607,7 @@ msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -593,6 +629,7 @@ msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" @@ -600,6 +637,7 @@ msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -608,6 +646,7 @@ msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -623,6 +662,7 @@ msgid_plural "Template paths" msgstr[0] "Ścieżka templatki" msgstr[1] "Ścieżki templatek" msgstr[2] "Ścieżki templatek" +msgstr[3] "Ścieżki templatek" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" @@ -630,6 +670,7 @@ msgid_plural "Templates" msgstr[0] "Templatki" msgstr[1] "Templatki" msgstr[2] "Templatki" +msgstr[3] "Templatki" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -642,6 +683,7 @@ msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" diff --git a/debug_toolbar/locale/pt/LC_MESSAGES/django.mo b/debug_toolbar/locale/pt/LC_MESSAGES/django.mo index f48a9b893d51e7c7ac5a901d2cda571ba4aa4e1d..b08e0d39d0e80602668f372fd6b3e54713a0ede5 100644 GIT binary patch delta 1415 zcmXxjO=uKn9LMp;8cnjXwTaP08}&)ktR`mTY&8o8gM6S;y$E{*^f0ih#L4XW-)Z_*HHbg zVz#F&{@1n+;cRoOV z<}r`0_%~`{)jT?I70zg7ePnc}`%nW6yYdlK`#9>`D4-U2*|mS`{0`OcC)E3MuKqr1 zrw?#D{)?>L)TWH#XBt!7zbaZ>MLVjz12td|(#Q0pc6h*f9JSyAYC+See&?|VFQQK9 z4_E&WYMf`-jxSOD8frLy9pQSupa$$f?VulZrvs=L51|G)idxu7)X^4@8!3PB>rqMl zKPT1@t;82Z8=;R<$y;Rcsr%Q8w3|*syHwgld`9Trl-3d(3Fa#&EjmqT*Gjd7RmLS< zm-`2o7pg_;V_ogqg*G^(|GhqjEkqshA+?av-DL<)tGxSW+(0Plcy%)Ch))Tf-bcx7 z#qQ+4iXR%IF+U!U3TDt{y3J4+pNfLy-m>BPLTCg- zCj9Yy=U6ncyTf*Q+3m?+l`Uz1aCr>AW>mu<6qD0Wk7R((26uGMC>K+juzcaP2TLRa#rYJXy@ oe@|XiH&qTT+>WClO6pT%btdqGsARQq?Kz6WWHvRMwATFm9>8F#Hvj+t delta 1531 zcmX}rTWB0r9LMp~x@od&s&(x(rgqZUT#VUVx)F>`F)c<~Yg$YZiWE8Sj@#AUopff> zL@2C2ihT$S6$)Nk5KDS6xpbLPy<|6FF~ zpY=a%sQ;8roivokiB96%6~^qr<&Abx~tJddmKGOogF&hL@KEK{}MFW82^ zV;}y3dVV7pdvPmr)XiS%b~+9q_n5=({AE;v05yRH)SONrhgqc3^>--#* z?;_rdmr&z;gCqDOW*Oh4S%z-xL?!BS4xkc_p$3{jC75#kGp_$d*Iz^qbCgQYE#O9c z1NGb~*Z(nUoKLZb@y!Jqn!wL^AKpT(_;1(WN;V~Ir()7(Eowp?uD{!z58x?YUmn+T z{W>=(-%Y$9|3WUAm5eSkSZ55Ar6D(=5_>p={m5YsQ9XtQ)I=9i-@r*!qBHLNoV$Jz z^(|dOO?VlV|5wy=x1D#=?7tGEGR=Y8Q3I?)-PnQJi9XEZ4(!0AsDvkw!z9l4UH@5B z-p`P+%mvgATycJf%Kux2{nrftq(cesU@!iQ+QMyoIqDxrC7Q%X@mbV!$52~*95>+G zs0Exsz4K2{_nk*Q{}pOtU!!*VTAc>3tnvGS@rW#;LDmr}eZ=NQt2t{us1IwD&}-@@ zH0VmAhqzlFb`32cM?6AkvUiJiq`rkpD^}5Oq4E$h+-Nmdp_OUY1FlbW5$lODow%Y` z#d;dAs2}ypw2LZRi3bQawo$e<>1lje+L|@Zj>dKk($)vGozOqODS0}zGrh|eUNgHZ zL6p3iTI%(W`4zJ-DA>3h)c$Xb(<+t9wUT+xk0M+0lc|=OEnc;G5_uJ_`b9Gx)O>Sb z|I9(JXk+`uQp-y#_U8wO^Mj*f-pCWKB4aY(q2U7mnC4xzToI)%4XR7Mv`mH?Mi# yFO{P>V1+fUu$p|CF7#N|*gW;Z#&uh?X4, 2014 +# José Durães , 2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Portuguese (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/pt/)\n" -"Language: pt\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: José Durães , 2014\n" +"Language-Team: Portuguese (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: pt\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: panels/headers.py:31 msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -53,7 +78,7 @@ msgstr "" msgid "Profiling" msgstr "" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Intercetar redirecionamentos" @@ -61,11 +86,11 @@ msgstr "Intercetar redirecionamentos" msgid "Request" msgstr "Pedido" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -74,10 +99,9 @@ msgid "Settings" msgstr "Configurações" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings" +#, python-format msgid "Settings from %s" -msgstr "Configurações" +msgstr "" #: panels/signals.py:57 #, python-format @@ -85,6 +109,7 @@ msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: panels/signals.py:62 #, python-format @@ -92,156 +117,160 @@ msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: panels/signals.py:67 msgid "Signals" msgstr "Sinais" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Acção" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Erro" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconhecido" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Ficheiros estáticos" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -250,15 +279,19 @@ msgstr "" msgid "Versions" msgstr "Versões" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ocultar barra" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ocultar" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra" @@ -270,6 +303,14 @@ msgstr "Desactivar para o seguinte e sucessivos pedidos" msgid "Enable for next and successive requests" msgstr "Activar para o próximo e sucessivos pedidos" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" @@ -357,7 +398,7 @@ msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" -msgstr "" +msgstr "Método" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 @@ -365,10 +406,8 @@ msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Variável" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -467,6 +506,7 @@ msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -558,6 +598,7 @@ msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -578,12 +619,14 @@ msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Ficheiro estático" msgstr[1] "Ficheiros estáticos" +msgstr[2] "Ficheiros estáticos" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -591,6 +634,7 @@ msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -605,12 +649,14 @@ msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Caminho da Template" +msgstr[2] "Caminho da Template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -622,6 +668,7 @@ msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador de Contexto" +msgstr[2] "Processador de Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -645,7 +692,7 @@ msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" -msgstr "" +msgstr "Pacote" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" diff --git a/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo b/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo index a78c8475e052df41378b34e63ecd8c8a1eb0cdde..24c3060e6c51fed2c65b2d8e98bda3958c557d9d 100644 GIT binary patch delta 3237 zcmY+`X>6259LMo#feO8#EwtNO%2T1`D6QK93JV1ksR#wi;ejZ!ZMW^pcAv6cjw-sK zMoq*6$0MG>i@p$|rb^UcV(Q2JY!-Q!c{nk4fvzNQP+({)?&)>0-S<{I1?|z`8WzU zVGDMmu74RB(i}#f(Y%MFnBN?yqKEwyc?k0*j>A)^3I0G0c-FPEnN3fgi@I+Ea>}&h zH0(o7^aN_b2XHFBiW=uDcm4+)&HUy!D(Q((D?95h$Qqkz7osLAK~9-UBz2|^wa`U4 z0^2a1derq@s0H{~j{~Uj2T>1t5K~&|n^YR{15~R1Lfx3n=u}NU>c&b`e>G~sb*_IF zY5{ZI`30yaZ9y%#75Ot8Iq3cvYTWJP$iD`<+jTsETKTi68wZg;bC`oBIEG5~Flymn zJAZbbaViZOw*WQX1l09asCTK(oo^~4|2=es=m_8o=;0C6%k(|!MpJCe94J5yyae?G zE0904k%PXTII;$FAL>b;##%gp2k;YACX?)+&JU!hXoYv8ZrqD{@@G&J9dzy2QG50t zYKuN|{of#e<}?Qld=52U_V~>Gd8mw)pthtMb$+Tlp9;E;xu^>-LoH-A>d80bPg%zF z;sEVce9W`)I6jZ(a2xI~<60~wjjM47DnrMdUm`=8UtIev@=~TuetG6Z2$ho6s2evp zqo_R_aPCHB;2!70s7yVB75EZr>)u5@@hRMnr%?~KnTs_3R?N}&zlVxaa<6kAY9UYJ z1bh)S!Q1ZqQP&>EDE(icwygQWOa@y~dwxA?qCKed`&|Ei)K(qC0)77RGVnd}u;y3PfH_r}6c!@ym#IQca0zMwA?Gqws;@y!+=Uvq4>j=~cm5&d+01^_ zgS=Bk{#ALOj;%P1^RRgmKc~0@Z@}ZI&#cDF{Pxd7-FGi)VGp7P9>ivRA9a0pb!I`O zID@u_AL0sBW{Ok1s!DMHwbIGRi)xyX-yYM7%ETt*x5IR~{sB}9??c`9IBE+Ip!W71 zcm60Uv!5bgocR_t@gJy6rT(F!2}VxNyma}f)J{O9aI$O9#w^-eoKoFHkd*Wyx{+Z_ zf>1V8*uiv}%TWuOLUg5jGKWPOQl^zkn7Ag>@xS8+TDKCH5*>tAuC%JuW-z`}*;!0n z>Dn7{A#s~)3wAeMR&rD}^!sBxNT(k8l+*v6fVqUYo~ToUqEF{4Vh7Pe{8w(L(oWn$ zOe2;M3kVf`HRl(-Bg$%=(0j6#`P2Ib>3=HZY8_nB-sy|bUX36wBUEaLoOI2YYw>2H zo`?`L34PYvh-yOb(JVqQ_AWv%w%)lAky_5-M&kSuq;ZAoxXIaoNmsuP*Alyl%ZdNW zdMe9^8AKnU_ek&70HLy-h^A|q!xkm3m-;4RGofr;O*9fc#2VsaVh*vB$R!`Ah zSV7DuZXl)-ONo9$B}R1G-n=zKr}A>M?e7JHcChe~{7Cz@Zg0Ks$J)aQJ8$gYMSe#( z8TI3))m1_^GVcByKN0PY#%)&7MWZ^lgu5fwD;jSX7JWT5r}%{t%Y*fejrFsFUN9I6 z2J3>9+}3b^vVMIc9Pf{XlYS!PT^S2^_WN;fL3gIoo`@#>#ofK(Xsn^b?_D_4YYH}A zYNwXYEDHDaH6(Rwv@5bxC#_#vYWqqDm(H5+^~JU&!m;LQaj&`A3wpbDdFfi?bZ-&O z5UpzU*Va<2@fx+5U@&v-BCnAPn(VZ)YwZ(xg|@S-!oE~iYu_rfc0ypQ-4y7wcLa*< zP~ZxCG*D*G1irGLmp^5zDr)VPirMyH#gV-8(lr#h(95!WE352Bm9OQli}ZTRQl!`J zn^;%g7Vhwq5wj%R8;$q)rY({%Z3(|C8ndCI275u(ccWJN{mFzas0`RClMdM>-gtX* gQiE;7za}lUmEIfnNXZy`!kb}FdL=`DdzWYb3tjMSEC2ui delta 3566 zcmZ9NeQcH09mfxaf)>iF?Y)$?JOzp^rMI*ek z!i0Am?+c+`r!5WH`}Oaffwz7SD+>iLpeAB z72t^NKV#b;Lyh|s;>&yvmC4Ic0ba{zJS>4aigGAFOQ7c62(yahW-5wo4V1(6mYZNL z?QW<5egu_)eNf|HhV}4GsFeNz&V+x5#9;F9s(CY^{Df?~0xGbDGswR>7TE!fP!YC5 z?PxV*EpwOc?}A#`hYECuZ9f6EqrFh`4noa43gzfM$aOF$p#uNN^5P8gFT1wh445$3@<^Y^y%wz{m()Lx({mJi%=ODf^zhMZGQ-LbiaW*s?V%F z`wuFtX|6ymJgX?TU>ItF3aHdoLmkaB+uvgQ+ikl8YTO2>Ks>0OZ-z(48M6y^(yj^R zHuNwgLs|0@m51mUfoov{dAu3!gpKfhs8n6H%%5!xv6><%`yyBio2Te6OgGHQrLG&w;ch7V&#e75s3SZNbrc^% z9l_^NXa6NsU{|2-+BJN#inx-BCN73rupa8xuY??%*#xzd4AkY>1~u<-C`Uhpn)g$v zjJyi9-Z3bL??D~qX>0!v)Vg_PtkNDuC^l zKY$vy4=R9Hp&SiCIX-3k&%^n&FF`hMCe6)lXhGIiYG6Md4X_d(f=bzkuo+%~dZx`z z?(%g)W#k}KfQO-eM^3;h_z~3je?bK{wSt!d!*B$)L1idgz|~gDrb9(M2XfKPBFK-S zSq+tu^-vBrS$jWJDtAH6dlu>_4?vy$u4f)Mc4K zo|NK3s8r6e?ZuGa5mSe5L{Fe~=zoju3XjEXK;zM)NF|1zMB0GL{Yb$M>is`Or3KxM zh{3q%CNx$Ql+Mhvh7QZeEd@@;Y_)A2*GANZzF}<*5Laf2Z416WGCraTr4QYJlns@K z(MrUn9W5llIJxTRKND4NN88YM&>GZ@bl%@YooFo@eZo*>3yLEht&Tk#<)aIvqH}); z>0+tu$idtKbs1H5A};ahPjoN*7E)YHjg@LDRoZ`&if-oj zkZ!DsF3NILgT9Z(%4RBeph~1mH&)uI=ozj?x;q)P80muMp#)lwR-my`Ph~*)k66pC z@Vn?vl(x2%rO=P=LbXUYIv=Urizc9ZPz4$*y1d^;ZD>1s5G_RaA(aLCXyUHmY{9yU zXmY^MRHvPUmrlDqo~f+5$}&_kd1_uTzwoswy{_+janlx0roG^7;ohKs>Q{~4W=wY^ zqi!aa^uMk&QR^97Gp$BX%={22R%5~q3ig&og1+f*lzN#A*0j@|N+z78x2uAh!| zdxMc^GEvu;N=7eer>m8*i!domQv5dPPBSpg0_O#Vzx`PNuJ9 zCjKv*qb5HXDP9yT3l#;SP&_ymY6?oj&B502(%_fj3lrBT;~6&vT+kTPQFgcgTd0dWnON{wA1A&i%N5v9OrxodrF5w9iHDikZ?JP zoKeHvE;qQdtj1|`6EVLxc~!>SlPTYedVW`OXkXc+ar4`fes`>g?Vdbxa@b2dUZUyh i%m)X{&jdT>MuO9GTY}}ztl%c+(cqL*J(O3mGVi}f0m(oB diff --git a/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po b/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po index a4721e07e..2ec8be420 100644 --- a/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po @@ -3,50 +3,76 @@ # # # Translators: -# Fábio , 2013-2014 +# Fábio C. Barrionuevo da Luz , 2013-2014 +# Gladson , 2017 # Percy Pérez-Pinedo, 2009 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" -"django-debug-toolbar/language/pt_BR/)\n" -"Language: pt_BR\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Gladson , 2017\n" +"Language-Team: Portuguese (Brazil) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" +msgstr "Debug Toolbar" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chamada em %(time).2fms" msgstr[1] "%(cache_calls)d chamadas em %(time).2fms" +msgstr[2] "%(cache_calls)d chamadas em %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chamadas ao cache de %(count)d backend" msgstr[1] "Chamadas ao cache de %(count)d backends" +msgstr[2] "Chamadas ao cache de %(count)d backends" #: panels/headers.py:31 msgid "Headers" msgstr "Cabeçalhos" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -54,7 +80,7 @@ msgstr "" msgid "Profiling" msgstr "Profiling" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interceptar redirecionamentos" @@ -62,11 +88,11 @@ msgstr "Interceptar redirecionamentos" msgid "Request" msgstr "Requisição" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -75,10 +101,9 @@ msgid "Settings" msgstr "Configurações" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Configurações em: %s" +msgstr "" #: panels/signals.py:57 #, python-format @@ -86,6 +111,7 @@ msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 sinal" msgstr[1] "%(num_receivers)d receptores de 1 sinal" +msgstr[2] "%(num_receivers)d receptores de 1 sinal" #: panels/signals.py:62 #, python-format @@ -93,159 +119,160 @@ msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d sinais" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d sinais" +msgstr[2] "%(num_receivers)d receptores de %(num_signals)d sinais" #: panels/signals.py:67 msgid "Signals" msgstr "Sinais" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Leitura repetida" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Ocioso" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Ação" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Na transação" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Erro" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconhecido" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 -#, fuzzy, python-format -#| msgid "%(cache_calls)d call in %(time).2fms" -#| msgid_plural "%(cache_calls)d calls in %(time).2fms" +#: panels/sql/panel.py:168 +#, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "%(cache_calls)d chamada em %(time).2fms" -msgstr[1] "%(cache_calls)d chamadas em %(time).2fms" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" -msgstr "" -"Arquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)" +msgstr "Arquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Arquivos estáticos" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s arquivo utilizado" msgstr[1] "%(num_used)s arquivos utilizados" +msgstr[2] "%(num_used)s arquivos utilizados" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" -msgstr "" +msgstr "Sem origem" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Tempo de CPU do usuário" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Tempo de CPU do sistema" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Tempo total de CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Tempo decorrido" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Mudanças de contexto" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntário, %(ivcsw)d involuntário" @@ -254,15 +281,19 @@ msgstr "%(vcsw)d voluntário, %(ivcsw)d involuntário" msgid "Versions" msgstr "Versões" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ocultar barra de ferramentas" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Esconder" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra de ferramentas" @@ -274,6 +305,14 @@ msgstr "Desativar para próximas requisições" msgid "Enable for next and successive requests" msgstr "Habilitar para próximas requisições" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" @@ -357,9 +396,7 @@ msgstr "Ambiente WSGI" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Uma vez que o ambiente WSGI herda o ambiente do servidor, apenas um " -"subconjunto significativo é mostrado abaixo." +msgstr "Uma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -371,10 +408,8 @@ msgid "Path" msgstr "Caminho" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Request headers" msgid "Request Variables" -msgstr "Cabeçalhos de Requisição" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -473,6 +508,7 @@ msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" +msgstr[2] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -498,11 +534,9 @@ msgid "Timeline" msgstr "Linha do tempo" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s mensagem" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format @@ -566,6 +600,7 @@ msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Caminho do arquivo estático" msgstr[1] "Caminho dos arquivos estáticos" +msgstr[2] "Caminho dos arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -586,12 +621,14 @@ msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Arquivo estático de app" msgstr[1] "Arquivos estáticos de apps" +msgstr[2] "Arquivos estáticos de apps" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Arquivo estático" msgstr[1] "Arquivos estáticos" +msgstr[2] "Arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format @@ -599,6 +636,7 @@ msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s arquivo" msgstr[1] "%(payload_count)s arquivos" +msgstr[2] "%(payload_count)s arquivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -613,12 +651,14 @@ msgid "Template path" msgid_plural "Template paths" msgstr[0] "Caminho do Template" msgstr[1] "Caminho do Templates" +msgstr[2] "Caminho do Templates" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" +msgstr[2] "Templates" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -630,6 +670,7 @@ msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador do Contexto" +msgstr[2] "Processador do Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -653,7 +694,7 @@ msgstr "Milissegundos desde início de navegação (+length)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" -msgstr "" +msgstr "Pacote" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" @@ -672,15 +713,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"O Django Debug Toolbar interceptou um redirecionamento para a URL acima para " -"fins de visualização de depuração. Você pode clicar no link acima para " -"continuar com o redirecionamento normalmente." +msgstr "O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Os dados para este painel não está mais disponível. Por favor, recarregue a " -"página e tente novamente." +msgstr "Os dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente." diff --git a/debug_toolbar/locale/ru/LC_MESSAGES/django.mo b/debug_toolbar/locale/ru/LC_MESSAGES/django.mo index 2e69a35ae04bb27dc0c3c321b0a32fb35577aaf0..a1d9dca2b39d63d4af3bfd420258347722a9f42f 100644 GIT binary patch delta 2987 zcmYk;d2EzL7{~Fa7gr0kAmvmR+R`FDw$x%>pimL2*m717p}yH z6FiVVK%!Bj%TXYJh!PEiY*VF1Q6p#+(L_=O{ln<@w>uyX5%eqT7p>;^)lx&Os2lp z)nCGq)c0dwvw&UTq&p4YJFjC;>YdmHqo~MksNeNQ#$p4pE2d&E%*5e17UOUsPQeP) z@83bXw4=xz?HtDOeEW(4&%e6P^DU-#q=Q5ZKL|C#VW8wT#Op%GUU&iIOx8usQ$Jml7G$kP1kS;HR4v(jc1WR3vti`en6%8C)7YYotm!d zJ)MJ4{idV(%W>@ms0>VY*GrPf{|Xw)Xc&N}(1Vvzo9Q;H<3WAQ@-ZFNaXD%ROOZco z;-I%@8!{$4fST!19DyI*hkcm|cy8>pq|L=EIWd=LBZblrCrHK7hH!cH89`JRY#aRT*q7=Hhc z>x72$s9oNU>bL{d{wtDQyN#Mb61}N?IBF(2n1;pZ!D`g~EjSYQqcU{?HSo)>eiZ{V zX!xBIbzDf^)Zuj0+prwBVlyf;T~qiLU@`}#)`!~7MW{_T1@*h>NVaVuYM>ij`!>{b zUP1osPzw3iYjlyCes~2Li(Pm1_|(WJa{!V>n}{*E7&Vg$^k5w-13OUt9CLnxdSDwW zBUh1Cw!hrlS6U6VFh;oE{n2%Nb;adMoNd9`dURWZ^?N z9vg5CdhiA+BMJALJ&1$x7o3e+l5v4ik=LUbHG_Gm8`Q3mx1dJ8&$WMu+6!k^$Z4kHN(KU_1; zBeW#(gfha4Sv{fOswmAW%8L5YSt_U?rURi8*(!+~qvZHxLEH5+aV!;8a+V zaH(}FODe??Y(7pTHoCgtO%0b)j@sb*{)9K2QqG<*K3c}ogp1beDT0ZIOFqZPh&9BN za7*N{37#g_6D+qqLU;%jrT*@sw?gT!Atn&3cz*aR2jPDv|Bo-6O#uLP7Vg)gi@DgK) zwL~qGPc|BgQ&+8rKrSvHAH#BCI)%$B2s{D<$^*&E%d+227Na#e{ zW{$@_p&g;qZOx%pswYCNp;Ml54NW!Kt7|JOCN8h`S5{>&sjV)|^o;iA=4Eoo-P_Q<8nr!L|V_y9A4eej3y7wa}5a&23vkr;Yv((;-z~aAnGvsNl)eBi;W8GdDGL delta 3422 zcmbu=X>3$g7{>9p3k8a`tO7-GN-bL{(n48^SQLtar51`TQiP$5ZFM?T+ENx}SQIpB zKq*n<5{wBhC{~6FsDMT^lDOOn#E2n8;u%F6S56gL2ml z-vM|T<$PD3io?vJHkV8Df7Ja;kg?gFm`eY)l8kP=7uC>4)Z`yRCTFdvneV{v_&(~s&rr{ua^pTQL^Z&yA?($}y^u%p;?b1yLPFoGVaEzZUcHe$+r>sFm4|dhQ4o zU>vo?DfHG8FGa>=*{J6VQ2mW{<;gu*e~qxzU6_s9@hgym8?s^H$>bWOTGk+P?(E(R}7qwL$YHLoq`tOh?E&4kdHJskZZ!icOOJe`bC0I?AJw|JLk$97`x4Kn>umGmX*f)b~QQ+ZT0xII`F_4mFWk z7}bTPWHh4&%*D+Zz*kWXe1gO9G-_tua{QTRp$=CrvM5%7I+PWt=N6z=D2x@@g6jA~ zRDUOOSbx1fzfiFW)35S7coa3#9mpkn6SWnmFcrT+b@T&jK))i#z>*ogCUhmLegvw+ ziKuqUP_N%zsQcFCvi_`^J>n`}!y%O4Mz+bm#uQ8)?9a3d1}OJNE?E((p@q&`REN!| z71)Fv8++1S--jC55j=^YxqB;bHt9|G;$oa)kd@{fL@C^e-}cASd4+c_C`#Q&9DDQCks09m**7 z!tKa$u$M3mKSFKEG31kCCouzmL9NJnSKoc4KapJDs1=e?gC(fFtwbG;`N)FU)x=mr zt2B$~Na|c2X>juhZPR)}sg_tvXd+6t`dABYCMFSch=AUIrSU$AU(G@vlx40?%d2#s zPvTdneWfd3gH=Q|aigm%M7=SiTv^n+{5od?j#mGjUBw!lOz0#lWfMAtN<}_)6Rsi_ z5i^Jop}!YpL$lvWUT68e&A|CbW_N-F8ii{8PH_D|_vADe<>TwVjz2`(XY z5N{?n5yixG;&$R%g0FYt57tIpLR?Si04iNa3?+sT5n?zIB-nN}@9(!xGl$extHPyb zoJsI{Ck~^lwj0RkEhr^2TqWl?@i9uqFfo^yNOYtEGED@>Dv_ooe(8TUndN?+-R%^2 z5tRf7H}UFqLZ$hH4(ct$VxlAIlrJQv688{wL@u#_P|ESK4KjCVb+EcNw0PTz^wR9= zhUQ4qu*N`rsIf6v6Vk;CYhqd5+LP02gONxm9Q!!qaMGC2icr|f8mfa$bq$e!GR5R- zI+|%zp{6cUV>A7Bw>^{Dn(6vz41~EDS{BRizB{$Bupocb`22z~fr6sq!lJxUr1Y|2 zV^jW|<-tf}IM~#%yf`qYu0Bv%U0W9p)8@94K7o{$mX_GkKE=t=j^W1Fdx!Y~!|nq<;T- S+&d6p2<`C=u|7Hby8aCod*Ffq diff --git a/debug_toolbar/locale/ru/LC_MESSAGES/django.po b/debug_toolbar/locale/ru/LC_MESSAGES/django.po index fbec67100..8dfd079ab 100644 --- a/debug_toolbar/locale/ru/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/ru/LC_MESSAGES/django.po @@ -11,28 +11,49 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-08-14 15:25+0000\n" -"Last-Translator: Tim Schilling\n" -"Language-Team: Russian (http://www.transifex.com/django-debug-toolbar/django-" -"debug-toolbar/language/ru/)\n" -"Language: ru\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Алексей Борискин , 2013,2015\n" +"Language-Team: Russian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " -"(n%100>=11 && n%100<=14)? 2 : 3);\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "Панель отладки" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Кэш" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" @@ -41,7 +62,7 @@ msgstr[1] "%(cache_calls)d обращения за %(time).2fms" msgstr[2] "%(cache_calls)d обращений за %(time).2fms" msgstr[3] "%(cache_calls)d обращений за %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -54,7 +75,7 @@ msgstr[3] "Обращения к кэшу от %(count)d бэкендов" msgid "Headers" msgstr "Заголовки" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -62,7 +83,7 @@ msgstr "" msgid "Profiling" msgstr "Профилирование" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Перехват редиректов" @@ -70,11 +91,11 @@ msgstr "Перехват редиректов" msgid "Request" msgstr "Запрос" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "<нет view>" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "<недоступно>" @@ -109,51 +130,51 @@ msgstr[3] "%(num_receivers)d получателей %(num_signals)d сигнал msgid "Signals" msgstr "Сигналы" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Ожидание" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Действие" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "В транзакции" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Ошибка" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Неизвестно" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" @@ -162,7 +183,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" @@ -171,16 +192,16 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Статические файлы (найдено %(num_found)s, используется %(num_used)s)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Статические файлы" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" @@ -189,77 +210,77 @@ msgstr[1] " %(num_used)s файла используется" msgstr[2] "%(num_used)s файлов используется" msgstr[3] "%(num_used)s файлов используется" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Шаблоны" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблоны (обработано %(num_templates)s)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Итого: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Время" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "User CPU time" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f мс" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "System CPU time" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f мс" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Total CPU time" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f мс" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Затраченное время" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f мс" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Переключений контекста" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d намеренных, %(ivcsw)d вынужденных" @@ -268,15 +289,19 @@ msgstr "%(vcsw)d намеренных, %(ivcsw)d вынужденных" msgid "Versions" msgstr "Версии" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Скрыть панель" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Скрыть" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Показать панель" @@ -288,6 +313,14 @@ msgstr "Отключить для последующих запросов" msgid "Enable for next and successive requests" msgstr "Включить для последующих запросов" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Сводка" @@ -371,9 +404,7 @@ msgstr "WSGI-окружение" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Так как WSGI-окружение наследует окружение сервера, ниже отображены лишь те " -"из переменных, которые важны для нужд отладки." +msgstr "Так как WSGI-окружение наследует окружение сервера, ниже отображены лишь те из переменных, которые важны для нужд отладки." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -539,8 +570,7 @@ msgstr "(неизвестно)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." -msgstr "" -"Во время обработки этого HTTP-запроса не было записано ни одного SQL-запроса." +msgstr "Во время обработки этого HTTP-запроса не было записано ни одного SQL-запроса." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" @@ -699,14 +729,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"Django Debug Toolbar в перехватил редирект на адрес, указанный выше. Вы " -"можете нажать на ссылку, чтобы выполнить переход самостоятельно." +msgstr "Django Debug Toolbar в перехватил редирект на адрес, указанный выше. Вы можете нажать на ссылку, чтобы выполнить переход самостоятельно." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Данные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и " -"попробуйте ещё раз." +msgstr "Данные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и попробуйте ещё раз." diff --git a/debug_toolbar/locale/sk/LC_MESSAGES/django.mo b/debug_toolbar/locale/sk/LC_MESSAGES/django.mo index e6af7c505db1c78cd74bdc52f0d032c66dda9ff9..52934bf7a33b6f85fe2a976888c089b5d2c0c690 100644 GIT binary patch delta 3232 zcma);d2EzL7>B2&%4sjKY%jXfLR+D9x21(v0V@ay$RP;z0=~A}gKl?gyRBf=#o!&0 zKSm{@QHcj8UTC8PjY>j5gPMpU@j}ITMM)43RASWUw>udB^v(XhXWsdCX5ROmnayro z{NcR#XW41@8tevCfYQ>8*#VCY<$>Kk!k7i{4p;~e!7%&@E{1DH8Z!kx>v#la;g1@X zzj=3;jP=dSG_=58sL0-OUwGH~N1zt?67n%W@St?& z6jXre8O98OMNp+LhWdUDQ~)z!1)L8xe?L^B12C>gZ=(@}_du0uKjdQ$^3Z^zP!oOQ z{2!qf{MGgU0hQShqEUdup#t;q(71BQS4=fjqO+a9Fq8T#(ktoEz!u2I^zzUGH$$px zZifo=KF3ELcRIcbHSqzc`QCH=pFo|V@7(+2upR$5=!a{wsJ{-)P1H>bJO*pv^H39h z3l;fsm<|7ix+U2-%wZ~_GQ0pzgbUyk@EWMf`Pe7DFN6xL6lz=mD&dAW4K1|Pbu>cl zO&io!^t%2VAs@4uhbG<*HQ^Ibzm;efONd9#-Su30ca# z29?-*Nk49m&`i(D0SVcz-WZTSUr~!{a9iAth{~T<=-vza&1ssGRoCvj-jZlfS!2paw z1@<^pKuWmy1NBtGiQ95+re}M|XhSOzL77_Qp%9vj zWZI${)QD!GN~B4{NWsV`M8Ym~Y=#O*Rgx)4Sr?j)8sxBk;(0O88EA3BOCB~gS0iP; z4wa*|s2%C>tUy;HnXd0eXfopHBuv#gA9bQds0zszB2`+JrS+H5;7TX_>HI0@8sz zZTc-g50#wmfc%am>}sC%NH<|3Dn{3!H7J5)`T@Hn(MtU1%rn>F_)#x97i~Z-sKCBB za@pXdQ6o}qefkc2Jbkx)DdVJlAv4<^&AiKQ%&N4zvp%vrv$qU3jy{zd4+biN!HVjD zKM<%71SSQr5sSRuSjCDSFVY+KV$q&@e{gzhRgKqD+v?TTRR>y|Yo|3g1%qC*SJx7( z^{S>#_E!ah)r^a@^?7ZfiWMQRtKPpn9PRfy{blX3Sa*G8rPtj(C8kL`T0`rnG)KEC zTh@75k+x_>OQ@-@ts)kUhMT;e!6P{-Dc0{BYcqVMcC~M&T?D`Mu|Ju??o7FBT=9u8x@PD0teQC@8Vh3#;rvVU68ZnBz3c9xJ@x+Hr?7m&d$* zedAc<*53zpdG!-k9g_^zYlAd>1nRyJzrdNm1%QIG&a^ delta 4020 zcma*pe{5Cd9mnyfrTi*|mQvaR{c(!4f~=)21!jS257&$1jJXF-;tWj7Fs2Y^VHg{* z5r2dgIAVO#YMe;kwZ<@){2rS>jI)dxFyALJi5ur|EWU63C-P^^1Y<@C>txh(1(=Ry z$e2wPj>h@OpQ+<#Ipl-;SzZZ}Sb)Q7^gR-)_yg2HUP5*JGgODa zvHljz$-jddKqjqdMRHKjJ6MI~s3qQv+1P>1$?QPYJAmrv8xvW76&$8OBOA0gj#-~W z4e%stMyHUz&9CkKKcE_Z7d6l;HlISTn$Sd4y{V{rvrzriqPC(goAuYoS5hE1THCBK zRKq(_4emvq{)6`ZbEw1lGU~Zu+=8!RKGv}Q4z5BS#t5pPgE$YL7$BjFXHhfxJyO@a zk9r-iqDEejlU%ZLEF-@FpThf5D>!m;@_ssMpgE{|g{T#%K=rfO=9i(iZeSe=?bQSJ zMkmsz=|?sE2&%yV)xcrY(j7%@%@6JU7w!F@+WZ;Rb8nyqauGH2%lPjUV?M@j>;1oy zmwYcDXT28cL3|4frWkVs|BgHH&{SjEF?U+>^ge8T6!l?w(&kU%T=K7>CUO-u!AUHq z@2GriRpl05IoG%ka?d5LN3OtPm@HlG53ppT~@!hC; zo2<>K_Bv4gJcwiT{%bBqAHFqO6DhEEBRbhL)%du@4+ezPHiR!2p*%ec7%QvDbwxAje+55eyC4B@n&?k{?HQz<8 z=uc4Xow4^{M;-EWw)|2t>#vG`p`ZdkLLIs?C%M$KQ7f?+mtqsDfkSu;9z*T@8B{wL zQCoKjHQ>KtDqcYi=s&25jx0&u&ny{8F4bfTv}ZF=Gn|KdfA2zV&3&kuwcGp-RLA>J z13ZHIuneIFcmmbl&rw@(4%P9WZT>Q9pk{!Rq{KMn{Fq$ipqsg<88xCtz8>3fGp@i_ zaW`hO3_gAnbvQ@Q;Gblif~w~tp9s@|WjJ8(KZU$lX5a%78rhgqV`gJE9>qFL!#|?# zUqY?KUr`->Y|Wxo4RkuH{5I4IEJ7X1m8g~2WbH())I-Ps2h2_qT7iA2C4UUn;Bi#P zFW@LVWqlR3MZZFA$$31baqZe~6JJ7(!S(BNq&5&=wk2AvHN;XvhgNT#`cLfp=asOR4vs!V z+9$pliRFC|*>ZC)p=%@YHA07IHKFSPqE!id-Ho12hcIl@x8oOyMYexiocwMtA-DN@ zN%EglosWgYUScJ&gD56;6Son|30*pHy1qcv5IV5DDA%tUq`I%?`1EW3l@x5dp|FW` z6|vox^;qX2XDso5x-?t%71ZmetDT4wQ9=iIAE8TM()EO1Z@r555IVqj5py(~RfJA{ zGqHzQM(DHJM~oy|2wk5g79>)itXmuTF2W_Y27A)il(hIgk@&2b)8)ltZo6knXMU<= z=#BIVslo3up3T_eMj~F=ED8HDFW58w#~EI8PrI|u_ruL@G^m^KuNtqH`z!qxHy-jM z*Aum*+OKsGQ>Hx>X*a8qJq8V#2QqE%F(=GTuQhl*bMC07sNWlE4X$RsUEsyz)QCB4 zQNPPs)Z({#b)~UIa}tT*eAdD7W^J54Tb#B~*ozHqo;YemQ*~8&<^1yM8mDS*?c4>k zE2}Fj(^tB&c=@`h8;OP8xF4-`>ifF9DD~=l+IwR3;Vg2KB^9nMxwETgTZJEOuM3{f zDK6N$b!$aj^+Rpmwu%|zCPI|apCe4BIaG39>C7F)(N-!1M+9X=l1>x9!nUMwDb-N_3sIQw(@ p%;_U;b9i_t@<}QfEXgbFb2^>VgUMT-Swfvpm8hAalO@He{{=yzX5jz; diff --git a/debug_toolbar/locale/sk/LC_MESSAGES/django.po b/debug_toolbar/locale/sk/LC_MESSAGES/django.po index 52c8ef386..d5c5b722b 100644 --- a/debug_toolbar/locale/sk/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/sk/LC_MESSAGES/django.po @@ -3,57 +3,78 @@ # # # Translators: -# Juraj Bubniak , 2012 -# Juraj Bubniak , 2013 +# 18f25ad6fa9930fc67cb11aca9d16a27, 2012 +# 18f25ad6fa9930fc67cb11aca9d16a27, 2013 # Rastislav Kober , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2021-06-24 13:37+0200\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/sk/)\n" -"Language: sk\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: 18f25ad6fa9930fc67cb11aca9d16a27, 2013\n" +"Language-Team: Slovak (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n " -">= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" -"X-Generator: Poedit 2.4.2\n" +"Language: sk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" -msgstr "Debug Toolbar" +msgstr "" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volanie za %(time).2fms" -msgstr[1] "%(cache_calls)d volania za %(time).2fms" +msgstr[1] "%(cache_calls)d volaní za %(time).2fms" msgstr[2] "%(cache_calls)d volaní za %(time).2fms" msgstr[3] "%(cache_calls)d volaní za %(time).2fms" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache volania z %(count)d backendu" msgstr[1] "Cache volania z %(count)d backendov" -msgstr[2] "Cache volania z %(count)d backendu" +msgstr[2] "Cache volania z %(count)d backendov" msgstr[3] "Cache volania z %(count)d backendov" #: panels/headers.py:31 msgid "Headers" msgstr "Hlavičky" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -61,7 +82,7 @@ msgstr "" msgid "Profiling" msgstr "Analýza" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Zachytiť presmerovania" @@ -69,11 +90,11 @@ msgstr "Zachytiť presmerovania" msgid "Request" msgstr "Požiadavka" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -82,17 +103,16 @@ msgid "Settings" msgstr "Nastavenia" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "Nastavenia z %s" +msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d príjemca 1 signálu" -msgstr[1] "%(num_receivers)d príjemcovia 1 signálu" +msgstr[1] "%(num_receivers)d príjemcov 1 signálu" msgstr[2] "%(num_receivers)d príjemcov 1 signálu" msgstr[3] "%(num_receivers)d príjemcov 1 signálu" @@ -100,71 +120,69 @@ msgstr[3] "%(num_receivers)d príjemcov 1 signálu" #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" -msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálu" +msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálov" msgstr[1] "%(num_receivers)d príjemcov %(num_signals)d signálov" -msgstr[2] "%(num_receivers)d príjemcu %(num_signals)d signálu" +msgstr[2] "%(num_receivers)d príjemcov %(num_signals)d signálov" msgstr[3] "%(num_receivers)d príjemcov %(num_signals)d signálov" #: panels/signals.py:67 msgid "Signals" msgstr "Signály" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "Autocommit" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Opakovateľné čítanie" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Premenná" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Nečinný" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" -msgstr "Aktívne" +msgstr "Akcia" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" -msgstr "V transakcii" +msgstr "Stav transakcie:" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Chyba" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(neznámy)" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 -#, fuzzy, python-format -#| msgid "%(cache_calls)d call in %(time).2fms" -#| msgid_plural "%(cache_calls)d calls in %(time).2fms" +#: panels/sql/panel.py:168 +#, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "%(cache_calls)d volanie za %(time).2fms" -msgstr[1] "%(cache_calls)d volania za %(time).2fms" -msgstr[2] "%(cache_calls)d volaní za %(time).2fms" -msgstr[3] "%(cache_calls)d volaní za %(time).2fms" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" @@ -173,95 +191,95 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické súbory (%(num_found)s nájdených, %(num_used)s použitých)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Statické súbory" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s použitý súbor" -msgstr[1] "%(num_used)s použité súbory" +msgstr[1] "%(num_used)s použitých súborov" msgstr[2] "%(num_used)s použitých súborov" msgstr[3] "%(num_used)s použitých súborov" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Šablóny" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Šablóny (%(num_templates)s spracovaných)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Celkovo: %0.2fms" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "Užívateľský čas CPU" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msek" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "Systémový čas CPU" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msek" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "Celkový čas CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msek" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "Uplynutý čas" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msek" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "Prepnutí kontextu" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných" @@ -270,15 +288,19 @@ msgstr "%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných" msgid "Versions" msgstr "Verzie" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Skryť panel nástrojov" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Skryť" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Zobraziť panel nástrojov" @@ -290,6 +312,14 @@ msgstr "Zakázať pre ďalšie a nasledujúce požiadavky" msgid "Enable for next and successive requests" msgstr "Povoliť pre ďalšie a nasledujúce požiadavky" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zhrnutie" @@ -373,9 +403,7 @@ msgstr "WSGI prostredie" msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" -"Keďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba " -"významná podmnožina." +msgstr "Keďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -387,10 +415,8 @@ msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Request headers" msgid "Request Variables" -msgstr "Hlavičky požiadavky" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -488,8 +514,8 @@ msgstr "Príjemcovia" msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dopyt" -msgstr[1] "%(num)s dopyty" -msgstr[2] "%(num)s dopytu" +msgstr[1] "%(num)s dopytov" +msgstr[2] "%(num)s dopytov" msgstr[3] "%(num)s dopytov" #: templates/debug_toolbar/panels/sql.html:8 @@ -516,11 +542,9 @@ msgid "Timeline" msgstr "Časová os" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s správa" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format @@ -585,7 +609,7 @@ msgid_plural "Static file paths" msgstr[0] "Cesta k statickému súboru" msgstr[1] "Cesty k statickým súborom" msgstr[2] "Cesty k statickým súborom" -msgstr[3] "Ciest k statickým súborom" +msgstr[3] "Cesty k statickým súborom" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format @@ -607,23 +631,23 @@ msgid_plural "Static file apps" msgstr[0] "Aplikácia pre statické súbory" msgstr[1] "Aplikácie pre statické súbory" msgstr[2] "Aplikácie pre statické súbory" -msgstr[3] "Aplikácií pre statické súbory" +msgstr[3] "Aplikácie pre statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" -msgstr[0] "Statický súbor" -msgstr[1] "Statické súbory" -msgstr[2] "Statického súbora" -msgstr[3] "Statických súborov" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "Statické súbory" +msgstr[3] "Statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s súbor" -msgstr[1] "%(payload_count)s súbory" -msgstr[2] "%(payload_count)s súbora" +msgstr[1] "%(payload_count)s súborov" +msgstr[2] "%(payload_count)s súborov" msgstr[3] "%(payload_count)s súborov" #: templates/debug_toolbar/panels/staticfiles.html:44 @@ -638,17 +662,17 @@ msgstr "Zdrojový kód šablóny:" msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k šablóne" -msgstr[1] "Cesty k šablóne" -msgstr[2] "Cesty k šablóne" -msgstr[3] "Ciest k šablóne" +msgstr[1] "Cesta k šablóne" +msgstr[2] "Cesta k šablóne" +msgstr[3] "Cesta k šablóne" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Šablóna" -msgstr[1] "Šablóny" -msgstr[2] "Šablóny" -msgstr[3] "Šablón" +msgstr[1] "Šablóna" +msgstr[2] "Šablóna" +msgstr[3] "Šablóna" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 @@ -659,9 +683,9 @@ msgstr "Prepnúť kontext" msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Spracovateľ kontextu" -msgstr[1] "Spracovatelia kontextu" -msgstr[2] "Spracovateľa kontextu" -msgstr[3] "Spracovateľov kontextu" +msgstr[1] "Spracovateľ kontextu" +msgstr[2] "Spracovateľ kontextu" +msgstr[3] "Spracovateľ kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" @@ -704,14 +728,10 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely " -"ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." +msgstr "Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" -"Dáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a " -"skúste to znova." +msgstr "Dáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova." diff --git a/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo b/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo index aa8f874789469f050765af36d1c198f055b6b5a4..849592ff00cc595caada18c4aaa391bd5dd4ff3a 100644 GIT binary patch delta 1115 zcmZ9LO-K}B7{_02++E8pwK6{{w=c_T)>%CinNfD}pb;Iz%eXt)#<(Nv8bXjqZ*~}p zZXG;S)NK!uWY9@35mC^`p`eHeqC=3UzxbwZ_-eOO;8E#ENa{dRd~e4k6R8vZ7>M+BE#0d0M%y{s&4>QUxZ0`)jq!t6YOv1 z?1Ooz#9P*1fX(<1pf-96xy*|7pF=f#1N8zQp*H?v<3Fsw3LA;9!ADHDk!0nqFwPYF zo0qzQ@1YufhWhevkjwmH(MG?a@*JErOhe^$K-C?zaTltt-^K?adz&G+8IHg$a1_p} zFyuy!%TNukK{c3z`to_}--a6L9jN>TsEIv=4ps8KfHJ%XAc5(O%S`^Vddu z5WUPUq`#mA$y)znecZa;ZGDZi6KRb9+W`XYHrQdQzpDx9BlN+tjc8jB%lg?Vf@zHZ zn*PH5Xdl{+;sK}4IqT;y$AL4FjPib^7?rBa&TviIb8|Vj&&zn;3D1i&iPqjQn8}=r z%7t*cRLGnx1i@t1C+3$5LHYFfgkKD^`Do(Q(M+$G>vdWB;;}?`mp?g~t(5)JRPj^2gU5h)@F0Q*1KuPD|8J&dH>*Xx`qith zdavHAe!uS6@+F~FATL0^c!1~}xa}bfXnVF09R&A+kAY{whr#oX7eI8H$FLQA$5Dch zLl2#9z(=8XK(_OtTmKl`2K_S-ovvcweXAf};Tp(xuest_8>AKTz zf}D?APX7r+r=Kyfojc$Y;BO%By9@I9dv5(fY+}3HL0;eOxDPBqKLB!kW$;PxIQSGe z2J-$n5S`w_!1g7`_7afuW1ap1$a%j4qSHqhdjA2)cCUhb?mG~jzIW@l9B+ec{}+(= z{Q`p=Z@Rc5Wdf#aZPeu-1z=4LiR#9 zhC$CA?K#NHkTNT-agKLE_CZRJB81E%`;yS`>m@il5zB&T!^uttmPAq zhU!tMW$Xae;x4{`T?Hji5(&c%m9%1M)%wKTKZ|hN1_n_~Oo=Y_vq2Jyhd6Th1m<Q%a(mai)y9pr%9#N56@Ium7o`u7jRUb?MGFKo#l#YzgwTElnS+}+QddC zhRZ_*{CHMrT)xvnbXKj{3Z5m>r-i>HGyHWUml~7asf~Snfkl;h6WUJ$yn0ofT8Qj= z5LMChRhW(QOvc_Mp2AdxZuL|%a_qF|Pe+Pc>>m-srPGB?g%bn{x5iI>e|-%WH5Jol zcU1=^>Rz#7cQp$(CS$VMU9+yL>K5BV8pVU;R`WG!uDjaQa!^;)NE6$us!0_mYT$t` z*~RXStY2K?-5c>`+WdW{<2O-XGf}&{MzeTrL$!_5s4|Um43*v}w7$AgYph$UcW*S? z-PO<)9DWvDcQWg)g_3HiwK9~M;+o4*dR%e+zaFlqv_Wuj%u#JpWVX5R6m+gU)0Dm1 ygDO#bdQsY5N~k8|xHsS=&w)l1u=LArJ=yb|=|SP)3jZlQIGT@)yub34rhfrX_6Q09 diff --git a/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po b/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po index fce9878ab..5848929d1 100644 --- a/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po @@ -9,33 +9,56 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/django-" -"debug-toolbar/language/sv_SE/)\n" -"Language: sv_SE\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Alex Nordlund , 2012-2013\n" +"Language-Team: Swedish (Sweden) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/sv_SE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sv_SE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Cache" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -46,7 +69,7 @@ msgstr[1] "" msgid "Headers" msgstr "" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -54,7 +77,7 @@ msgstr "" msgid "Profiling" msgstr "Profilering" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" @@ -62,11 +85,11 @@ msgstr "" msgid "Request" msgstr "" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "" @@ -75,10 +98,9 @@ msgid "Settings" msgstr "Inställningar" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings" +#, python-format msgid "Settings from %s" -msgstr "Inställningar" +msgstr "" #: panels/signals.py:57 #, python-format @@ -98,151 +120,151 @@ msgstr[1] "" msgid "Signals" msgstr "Signaler" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Åtgärd" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Felmeddelande" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(okänd)" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "Statiska filer" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Mallar" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tid" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" @@ -251,15 +273,19 @@ msgstr "" msgid "Versions" msgstr "Versioner" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Dölj" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" @@ -271,6 +297,14 @@ msgstr "" msgid "Enable for next and successive requests" msgstr "" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sammanfattning" @@ -366,10 +400,8 @@ msgid "Path" msgstr "Sökväg" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Variabel" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -493,11 +525,9 @@ msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s meddelande" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format diff --git a/debug_toolbar/locale/uk/LC_MESSAGES/django.mo b/debug_toolbar/locale/uk/LC_MESSAGES/django.mo index 8a20bde25416414968ef67b4b9aa580791b2fd89..0c00501e3e629f34f97d1c8f0502d9f12338c54b 100644 GIT binary patch literal 11278 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 RJck=Ug, 2017 # Sergey Lysach , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-debug-" -"toolbar/language/uk/)\n" -"Language: uk\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: Illia Volochii , 2017\n" +"Language-Team: Ukrainian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/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<10 || n%100>=20) ? 1 : 2);\n" +"Language: uk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" +msgstr "Панель Інструментів Налагодження" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." msgstr "" -#: panels/cache.py:180 +#: panels/alerts.py:77 +msgid "Alerts" +msgstr "" + +#: panels/cache.py:168 msgid "Cache" msgstr "Кеш" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(cache_calls)d виклик за %(time).2f мс" +msgstr[1] "%(cache_calls)d виклики за %(time).2f мс" +msgstr[2] "%(cache_calls)d викликів за %(time).2f мс" +msgstr[3] "%(cache_calls)d викликів за %(time).2f мс" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Виклики кешу з %(count)d бекенду" +msgstr[1] "Виклики кешу із %(count)d бекендів" +msgstr[2] "Виклики кешу із %(count)d бекендів" +msgstr[3] "Виклики кешу із %(count)d бекендів" #: panels/headers.py:31 msgid "Headers" -msgstr "" +msgstr "Заголовки" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" -msgstr "" +msgstr "Профілювання" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" -msgstr "" +msgstr "Переривати запити" #: panels/request.py:16 msgid "Request" -msgstr "" +msgstr "Запит" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" -msgstr "" +msgstr "<немає відображення>" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" -msgstr "" +msgstr "<відсутнє>" #: panels/settings.py:17 msgid "Settings" msgstr "Налаштування" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings" +#, python-format msgid "Settings from %s" -msgstr "Налаштування" +msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(num_receivers)d отримувач 1 сигналу" +msgstr[1] "%(num_receivers)d отримувача 1 сигналу" +msgstr[2] "%(num_receivers)d отримувачів 1 сигналу" +msgstr[3] "%(num_receivers)d отримувачів 1 сигналу" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(num_receivers)d отримувач %(num_signals)d сигналів" +msgstr[1] "%(num_receivers)d отримувача %(num_signals)d сигналів" +msgstr[2] "%(num_receivers)d отримувачів %(num_signals)d сигналів" +msgstr[3] "%(num_receivers)d отримувачів %(num_signals)d сигналів" #: panels/signals.py:67 msgid "Signals" msgstr "Сигнали" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "Автофіксація" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" -msgstr "" +msgstr "SQL" -#: panels/sql/panel.py:135 +#: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" -msgstr "" +msgstr "Статичні файли (знайдено %(num_found)s, використано %(num_used)s)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" -msgstr "" +msgstr "Статичні файли" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Використано %(num_used)s файл" +msgstr[1] "Використано %(num_used)s файли" +msgstr[2] "Використано %(num_used)s файлів" +msgstr[3] "Використано %(num_used)s файлів" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "Шаблони" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблони (оброблено %(num_templates)s)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" -msgstr "" +msgstr "Немає походження" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" -msgstr "" +msgstr "CPU: %(cum)0.2f мс (%(total)0.2f мс)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" -msgstr "" +msgstr "Загалом: %0.2f мс" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Час" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" -msgstr "" +msgstr "Користувацький час CPU" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" -msgstr "" +msgstr "%(utime)0.3f мс" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" -msgstr "" +msgstr "Системний час CPU" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" -msgstr "" +msgstr "%(stime)0.3f мс" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" -msgstr "" +msgstr "Загальний час CPU" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" -msgstr "" +msgstr "%(total)0.3f мс" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" -msgstr "" +msgstr "Витрачений час" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" -msgstr "" +msgstr "%(total_time)0.3f мс" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" -msgstr "" +msgstr "Перемикачів контексту" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" -msgstr "" +msgstr "навмисних - %(vcsw)d, мимовільних - %(ivcsw)d" #: panels/versions.py:19 msgid "Versions" msgstr "Версії" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" -msgstr "" +msgstr "Сховати панель інструментів" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Сховати" -#: templates/debug_toolbar/base.html:29 -msgid "Show toolbar" +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" msgstr "" +#: templates/debug_toolbar/base.html:35 +msgid "Show toolbar" +msgstr "Показати панель інструментів" + #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" -msgstr "" +msgstr "Відключити для наступного і подальших запитів" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" +msgstr "Включити для наступного і подальших запитів" + +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" -msgstr "" +msgstr "Резюме" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" -msgstr "" +msgstr "Загальна кількість викликів" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" -msgstr "" +msgstr "Загальний час" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" -msgstr "" +msgstr "Кеш-попадання" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" -msgstr "" +msgstr "Кеш-промахи" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" -msgstr "" +msgstr "Команди" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" -msgstr "" +msgstr "Виклики" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:36 @@ -318,20 +359,20 @@ msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" -msgstr "" +msgstr "Аргументи" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" -msgstr "" +msgstr "Іменовані аргументи" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" -msgstr "" +msgstr "Бекенд" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" -msgstr "" +msgstr "Заголовки запиту" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 @@ -351,17 +392,17 @@ msgstr "Значення" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" -msgstr "" +msgstr "Заголовки відповіді" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" -msgstr "" +msgstr "Середовище WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." -msgstr "" +msgstr "Оскільки середовище WSGI успадковує середовище сервера, тут показано лише найважливішу частину." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" @@ -370,13 +411,11 @@ msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" -msgstr "" +msgstr "Шлях" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Variable" msgid "Request Variables" -msgstr "Змінна" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -394,56 +433,56 @@ msgstr "Змінна" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" -msgstr "" +msgstr "Виклик" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" -msgstr "" +msgstr "Кумул. час" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" -msgstr "" +msgstr "За виклик" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" -msgstr "" +msgstr "Заг. час" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" -msgstr "" +msgstr "Кількість" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" -msgstr "" +msgstr "Інформація про відображення" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" -msgstr "" +msgstr "Функція відображення" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" -msgstr "" +msgstr "Імʼя URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" -msgstr "" +msgstr "Куки" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" -msgstr "" +msgstr "Немає куків" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" -msgstr "" +msgstr "Дані сесії" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" -msgstr "" +msgstr "Немає даних сесії" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" -msgstr "" +msgstr "GET дані" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" @@ -451,7 +490,7 @@ msgstr "Немає GET даних" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" -msgstr "" +msgstr "POST дані" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" @@ -459,7 +498,7 @@ msgstr "Немає POST даних" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" -msgstr "" +msgstr "Налаштування" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" @@ -473,9 +512,10 @@ msgstr "Отримувачі сигнала" #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(num)s запит" +msgstr[1] "%(num)s запити" +msgstr[2] "%(num)s запитів" +msgstr[3] "%(num)s запитів" #: templates/debug_toolbar/panels/sql.html:8 #, python-format @@ -498,7 +538,7 @@ msgstr "Запит" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" -msgstr "" +msgstr "Лінія часу" #: templates/debug_toolbar/panels/sql.html:52 #, python-format @@ -512,15 +552,15 @@ msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" -msgstr "" +msgstr "Підключення:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" -msgstr "" +msgstr "Рівень ізоляції:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" -msgstr "" +msgstr "Статус транзакції:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" @@ -528,7 +568,7 @@ msgstr "" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." -msgstr "" +msgstr "Жодного SQL запиту не було записано протягом цього запиту" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" @@ -538,7 +578,7 @@ msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" -msgstr "" +msgstr "Виконаний SQL запит" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 @@ -560,19 +600,20 @@ msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" -msgstr "" +msgstr "Порожня множина" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Шлях до статичних файлів" +msgstr[1] "Шляхи до статичних файлів" +msgstr[2] "Шляхи до статичних файлів" +msgstr[3] "Шляхи до статичних файлів" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" -msgstr "" +msgstr "(префікс %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 @@ -581,29 +622,32 @@ msgstr "" #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" -msgstr "" +msgstr "Немає" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Застосунок, який використовує статичні файли" +msgstr[1] "Застосунки, які використовують статичні файли" +msgstr[2] "Застосунки, які використовують статичні файли" +msgstr[3] "Застосунки, які використовують статичні файли" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Статичний файл" +msgstr[1] "Статичні файли" +msgstr[2] "Статичні файли" +msgstr[3] "Статичні файли" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(payload_count)s файл" +msgstr[1] "%(payload_count)s файли" +msgstr[2] "%(payload_count)s файлів" +msgstr[3] "%(payload_count)s файлів" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" @@ -611,14 +655,15 @@ msgstr "Місце" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" -msgstr "" +msgstr "Джерело шаблону:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Шлях до шаблонів" +msgstr[1] "Шляхи до шаблонів" +msgstr[2] "Шляхи до шаблонів" +msgstr[3] "Шляхи до шаблонів" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" @@ -626,38 +671,40 @@ msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблони" msgstr[2] "Шаблонів" +msgstr[3] "Шаблонів" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" -msgstr "" +msgstr "Контекст" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Процесор контексту" +msgstr[1] "Процесори контексту" +msgstr[2] "Процесори контексту" +msgstr[3] "Процесори контексту" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" -msgstr "" +msgstr "Використання ресурсів" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" -msgstr "" +msgstr "Ресурс" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" -msgstr "" +msgstr "Хронометраж браузера" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" -msgstr "" +msgstr "Атрибут хронометражу" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" -msgstr "" +msgstr "Мілісекунд від початку навігації (+тривалість)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" @@ -665,7 +712,7 @@ msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" -msgstr "" +msgstr "Імʼя" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" @@ -673,17 +720,17 @@ msgstr "Версія" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" -msgstr "" +msgstr "Місцезнаходження:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" +msgstr "Панель Інструментів Налагодження Django перервала перенаправлення до вищевказаного URL задля налагодження перегляду. Ви можете натиснути на посилання вище, щоб продовжити перенаправлення у звичайному режимі." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." -msgstr "" +msgstr "Дані для цієї панелі більше недоступні. Будь ласка, перезавантажте сторінку і спробуйте знову." diff --git a/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo b/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo index 0b11979100c9db34649c76a827c9123770af2ca6..d0ba242560d41831ad8a25a7e650f97032edb7b2 100644 GIT binary patch delta 3047 zcmYk7eN5F=7{?DH843uBfQX8(Aabu4@GaCJB}*k#Buz`~@*;x3<<%F|?wZurA6j}# zD{JO7UA8R8ALe{1bDC>fW^0A(#Vymh<*e13e^sCFy^qba`#qoYJiqhuoadb1?_Qm~ zwJ7-0puVp;N)TnBV#Ez3_%{NSt#?*d@lL zFa>*!*+Dn~dj}k>WlzwE#qpJ~7sg}%0v~{X81LHie<88BSUUBC$uI$Cz|n9bjDclv zF06p+zXvkZ9fa)B^}rZy`(ql~>}kj*+~;sC{01h%yHE?ovWg~7g0fR#85{{Uz8TWh zt%uq01*ip&KyB~@%!22j=DDrsO8cKQ!r2~Z3qeJg1T{g5*<+ykWkZIzJV**%F;t)x zFdEiE9YH-*|4mQ(9lAcU>>{*m9jWyrRh?k24q1^lxy}>s0C-3 zzX)n)^PmD;2>H26Dvb+3&9@OMgD)kLe>ryGP^9~y1|Ej|+;J)`@C8(Azk~|(2jeZ{ z-^OURt%(z%=1YU>KMLwDdF}ZWxCVPx68TS~aS%r)`~>O}U4t4JJ;=E!FcE6vxljR@ zL4K~1N^eaoBnGz~YNvbQc=#SX2rolra6RXx=bNDdd@)Ev17C*P`8!YxeQ5SEs3STL zbtG5J|0Cq*exuUFE;%w`4Al4psEnmR9m!aGo@37o%nr_=p^ha`fs{k-yc!;ja;^n> zu}AX~lN7fYPS}I z(jx&RKut8lIL?@B&kLY-I0x!&S!DhSsBtw=8(Rx?xjW7OIt-F6x0eQ+amV0vcp2(4 z#&V!TU>elKUZ^{e4>fTK)LAZo3ZTjST~HZ(-uNn10EeJ5dK7B>nPI&DdT_xUSD+^9 zh4SBkTKIRU3IBr1R6pK1?xjnE>hFOHxDaaGJg5bhKrOh!>;_{iti-<|gZyiP?{F}; zyAHLG{_5l(3}?eks0pi~GSFc5W~hE!jjx#hZJ34s0Nf2Pn!jd5B+#``fp!IHXo7C2 zNOwS`bRX10XU+dD)PP^1j^vK{V@5^-8v^xx$S^w#YP=UJgT>}AF)lC$%W3F!TW+j{ z8rTYX{T+8P99RLw74EwljzO(R_eX^dhRZ|L`XG%%wP8=BDz^3l_$+!dVh1Cz`YG6j zbP21FzFhj4s3@H(%@IV7iS}HxSHL2)*=&I%g-a>5F1U)atGhB5rR)Dchla{Dv>fHi zpy<2*I9i7uMfb`U8h*49O+a%{CQ{L*yuWar!WXs)K8#urAINZdLbdi^7B(Z5?t(6& z&RXa82vQl3bOBYCqI%>-HAo*D-3b-F-#Wg@s1R*J3z6=|3^WTpgYK1Z{`0VwnWxe? z3AS7NX}B1vv)+b#WeJVP&_onK@kn3F4M?REtqHeyC1C?`JXs82T)6Tc|2&QfN<7Z_my_`=gipJb8JZ0$--jSLpLi z^ilek`rA7^6>a|J_C|k4psg^oDbQ8l*y!)7%bXc#scmi#bhcI3djIzp*ERX;8@<(m zriXJg^L=>*9;(Tq?v(8D{+1SRhi0l@UAsX&Ce<|fo9hCe8pZ1Auvjmo-0V4<8jK3f z8~T2zPkL{B$^BdDxtbmom3aNswwtGpxCri?d@~fEaX54-V`V6B__dz=5!uoI0a5-l APXGV_ delta 3488 zcmZA33v89;9mnwpuxO#BOTlr(uW_*s^yz52n zL_cQY_zbUoKB|AQmCJA?fg*7E_tu{fW#>{0KF`b!(8q=;}BMwV)i- zLZ_kz$g^@Os$Ds`}uoZPATTt`t#<)5r$Y|>ipawpUny}M6hXs^> zhg!ftQ9E%J)qXIe7Gnl#Yb$XSE=TUgJ&x)ZM$Hqma@$DuUn|>Y7j~L^P%GSzx}(F$ zT<%r7{x)jh_fZSIWaY0>H`I^n_g_@M;jBjUiRdRg}3u>ipsIA+9I-0$9y~C~_wem?+yVp?*c?Wgpf5C%;ocjX(l-tH7=Zm}3WH=`G zHqKK+%*QnLaT3nO9DES9z=*j6`Ewms?!?KIFIu?|bp!uHEof-AcjseJN9Rk*`OmZp zKWe3=R<1IaqK>Er%W#d={|2?t=TZIsfNJ+wyWV5|-Tcn{k2!b(N2m8cm5k1QG-`ku zs4bss^$T$kdZgH0=$H}qg1v@^_i&p38?yN9&P*3d<I}X-w&B_GMcy; zb)nL%#>XhHLJf2V*+q8_HQ`5A|2M3n{4Z4h@=4x~RHDkOQT-n>LslQdnbgO(kZC7# z)Go~Tc`L3$t+*C7z{9A8u0w6{Ce+q)iS@)HB99nI_gIEEFZsJrj11+PtbP_ohy_-D+FXYEFGy*#KGaF)x?Kg* zeMBiyLHG#WX#=r^7)Z}r<`JAaP>DYzendP)DCrn#h$V!c8GR=x-AmLabKd;PFN24u z&@u2FCC_aGPA48DlzvR?AhL;-gwo?gT{7o=R71U$*WphsuUGkDV!o9Jn63Hs^gcFF zgCRl>N;$EUPL~JAOAnqoV(mmY$IET=4GR5k|G$MRMc_H~iqV@Ya_J0+HBI4&( z88b_82C;(BFQU>`qB)u4-ztm}KO^+y?;@1+MfL!}cTn=XU@7ViswDixazbBn0pb~* z^A8C9vTY*t)A|IVR7T8A=J+BqgV;!{AvPwuhSg543%4}K@}s_{U^E&C1>N+#n`%0T z4IeQ$F*^NJ+PXki5(-ZmIOCawLDxGh&6S z9C9nXNfNs=c4ydxQC}k$gY}85%sE4ABH@h<^@+PPKg$iqV)Tgm)<(ijzKXhVeQ@FQ zXhmT%)9D*|Y{;sTf})aw*`>bXyUI)F%qk)cTONqU3hs{tnxl<@SU6JdtK8faj5O5w zDqBJ=Q3mu?1iTu5z-ksZm2C2dBcX+fiDUC}TU%TGG4*d)8{Fit3pW*Rh=kV%>tfNu z4T;9Fy(0%Ur|00|o;P;&Y<;D(ChO@zL$6%e+r9r#;=^&L()*6=>D!uc-P=3++D|8* z9RJDD`s_iod(Xbuz3ZgA+_k&6>x}V_^Bu0I{aE*f_RALzGn5saH*g|0;Y5a)y>jH_ tl{2q)ckN4z%c)O!?$?*!+Mn2*^Hui2V^?;bxOsDYy&cbVuFfqQ@_&?4v%UZT diff --git a/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po b/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po index 33659e1f1..81e5651d0 100644 --- a/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po @@ -8,32 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 17:23+0100\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" -"Last-Translator: Aymeric Augustin \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-" -"debug-toolbar/language/zh_CN/)\n" -"Language: zh_CN\n" +"POT-Creation-Date: 2024-08-06 07:12-0500\n" +"PO-Revision-Date: 2010-11-30 00:00+0000\n" +"Last-Translator: mozillazg , 2013-2014\n" +"Language-Team: Chinese (China) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:15 +#: apps.py:18 msgid "Debug Toolbar" +msgstr "Debug Toolbar" + +#: panels/alerts.py:67 +#, python-brace-format +msgid "" +"Form with id \"{form_id}\" contains file input, but does not have the " +"attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:70 +msgid "" +"Form contains file input, but does not have the attribute " +"enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:73 +#, python-brace-format +msgid "" +"Input element references form with id \"{form_id}\", but the form does not " +"have the attribute enctype=\"multipart/form-data\"." +msgstr "" + +#: panels/alerts.py:77 +msgid "Alerts" msgstr "" -#: panels/cache.py:180 +#: panels/cache.py:168 msgid "Cache" msgstr "缓存" -#: panels/cache.py:186 +#: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2f 毫秒内 %(cache_calls)d 次调用" -#: panels/cache.py:195 +#: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" @@ -43,7 +66,7 @@ msgstr[0] "来自 %(count)d 个后端的缓存调用" msgid "Headers" msgstr "HTTP 头" -#: panels/history/panel.py:18 panels/history/panel.py:19 +#: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" @@ -51,7 +74,7 @@ msgstr "" msgid "Profiling" msgstr "性能分析" -#: panels/redirects.py:14 +#: panels/redirects.py:17 msgid "Intercept redirects" msgstr "拦截重定向" @@ -59,11 +82,11 @@ msgstr "拦截重定向" msgid "Request" msgstr "请求" -#: panels/request.py:36 +#: panels/request.py:38 msgid "" msgstr "<没有 view>" -#: panels/request.py:53 +#: panels/request.py:55 msgid "" msgstr "<不可用>" @@ -72,10 +95,9 @@ msgid "Settings" msgstr "设置" #: panels/settings.py:20 -#, fuzzy, python-format -#| msgid "Settings from %s" +#, python-format msgid "Settings from %s" -msgstr "来自 %s 的设置" +msgstr "" #: panels/signals.py:57 #, python-format @@ -93,150 +115,148 @@ msgstr[0] "%(num_signals)d 个信号 %(num_receivers)d 个接收者" msgid "Signals" msgstr "信号" -#: panels/sql/panel.py:23 -msgid "Autocommit" -msgstr "自动提交" - -#: panels/sql/panel.py:24 +#: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "读取未提交的" -#: panels/sql/panel.py:25 +#: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "读取已提交的" -#: panels/sql/panel.py:26 +#: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "可重复读取" -#: panels/sql/panel.py:27 +#: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "可序列化" #: panels/sql/panel.py:39 +msgid "Autocommit" +msgstr "自动提交" + +#: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "空闲" -#: panels/sql/panel.py:40 +#: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "活跃" -#: panels/sql/panel.py:41 +#: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "事务" -#: panels/sql/panel.py:42 +#: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "错误" -#: panels/sql/panel.py:43 +#: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "未知" -#: panels/sql/panel.py:130 +#: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" -#: panels/sql/panel.py:135 -#, fuzzy, python-format -#| msgid "%(cache_calls)d call in %(time).2fms" -#| msgid_plural "%(cache_calls)d calls in %(time).2fms" +#: panels/sql/panel.py:168 +#, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" -msgstr[0] "%(time).2f 毫秒内 %(cache_calls)d 次调用" +msgstr[0] "" -#: panels/sql/panel.py:147 +#: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" -#: panels/staticfiles.py:84 +#: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "静态文件 (%(num_found)s 个找到,%(num_used)s 个被使用)" -#: panels/staticfiles.py:105 +#: panels/staticfiles.py:103 msgid "Static files" msgstr "静态文件" -#: panels/staticfiles.py:111 +#: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s 个文件被使用" -#: panels/templates/panel.py:143 +#: panels/templates/panel.py:101 msgid "Templates" msgstr "模板" -#: panels/templates/panel.py:148 +#: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "模板 (%(num_templates)s 个被渲染)" -#: panels/templates/panel.py:180 +#: panels/templates/panel.py:195 msgid "No origin" msgstr "" -#: panels/timer.py:25 +#: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)" -#: panels/timer.py:30 +#: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "总共:%0.2f 毫秒" -#: panels/timer.py:36 templates/debug_toolbar/panels/history.html:9 +#: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "时间" -#: panels/timer.py:44 +#: panels/timer.py:46 msgid "User CPU time" msgstr "用户 CPU 时间" -#: panels/timer.py:44 +#: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f 毫秒" -#: panels/timer.py:45 +#: panels/timer.py:47 msgid "System CPU time" msgstr "系统 CPU 时间" -#: panels/timer.py:45 +#: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f 毫秒" -#: panels/timer.py:46 +#: panels/timer.py:48 msgid "Total CPU time" msgstr "总的 CPU 时间" -#: panels/timer.py:46 +#: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f 毫秒" -#: panels/timer.py:47 +#: panels/timer.py:49 msgid "Elapsed time" msgstr "耗时" -#: panels/timer.py:47 +#: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f 毫秒" -#: panels/timer.py:49 +#: panels/timer.py:51 msgid "Context switches" msgstr "上下文切换" -#: panels/timer.py:50 +#: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d 主动, %(ivcsw)d 被动" @@ -245,15 +265,19 @@ msgstr "%(vcsw)d 主动, %(ivcsw)d 被动" msgid "Versions" msgstr "版本" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "隐藏工具栏" -#: templates/debug_toolbar/base.html:22 +#: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "隐藏" -#: templates/debug_toolbar/base.html:29 +#: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 +msgid "Toggle Theme" +msgstr "" + +#: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "显示工具栏" @@ -265,6 +289,14 @@ msgstr "针对下一个连续的请求禁用该功能" msgid "Enable for next and successive requests" msgstr "针对下一个连续的请求启用该功能" +#: templates/debug_toolbar/panels/alerts.html:4 +msgid "Alerts found" +msgstr "" + +#: templates/debug_toolbar/panels/alerts.html:11 +msgid "No alerts found" +msgstr "" + #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "摘要" @@ -360,10 +392,8 @@ msgid "Path" msgstr "路径" #: templates/debug_toolbar/panels/history.html:12 -#, fuzzy -#| msgid "Request headers" msgid "Request Variables" -msgstr "请求头" +msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" @@ -486,11 +516,9 @@ msgid "Timeline" msgstr "时间线" #: templates/debug_toolbar/panels/sql.html:52 -#, fuzzy, python-format -#| msgid "%(count)s message" -#| msgid_plural "%(count)s messages" +#, python-format msgid "%(count)s similar queries." -msgstr "%(count)s 条消息" +msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format @@ -653,9 +681,7 @@ msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." -msgstr "" -"Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以" -"点击上面的链接继续执行重定向操作。" +msgstr "Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以点击上面的链接继续执行重定向操作。" #: views.py:16 msgid "" From a8fd83dbc90f05254e12ed9bb20cb0962995b8f5 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Tue, 6 Aug 2024 07:25:51 -0500 Subject: [PATCH 22/33] Add changelog for translation changes. --- docs/changes.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changes.rst b/docs/changes.rst index b233dadc6..8de32a1d2 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -10,6 +10,9 @@ Pending * Increase opacity of show Debug Toolbar handle to improve accessibility. * Changed the ``RedirectsPanel`` to be async compatible. * Increased the contrast of text with dark mode enabled. +* Add translations for Bulgarian and Korean. +* Update translations for several languages. +* Include new translatable strings for translation. 4.4.6 (2024-07-10) ------------------ From 6b3ff1a5ea8304faaba1c9ce28514f0c4f1939e4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:39:42 +0000 Subject: [PATCH 23/33] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-eslint: v9.8.0 → v9.9.0](https://github.com/pre-commit/mirrors-eslint/compare/v9.8.0...v9.9.0) - [github.com/astral-sh/ruff-pre-commit: v0.5.6 → v0.5.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.6...v0.5.7) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5db940f33..dbaf636a3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,7 @@ repos: args: - --trailing-comma=es5 - repo: https://github.com/pre-commit/mirrors-eslint - rev: v9.8.0 + rev: v9.9.0 hooks: - id: eslint additional_dependencies: @@ -44,7 +44,7 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.5.6' + rev: 'v0.5.7' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] From 940fd2241529028a3d94107e05dd9ef9c210418d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 20:12:58 +0200 Subject: [PATCH 24/33] [pre-commit.ci] pre-commit autoupdate (#1989) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.5.7 → v0.6.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.7...v0.6.1) - [github.com/abravalheri/validate-pyproject: v0.18 → v0.19](https://github.com/abravalheri/validate-pyproject/compare/v0.18...v0.19) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dbaf636a3..c4a3b15d9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,7 +44,7 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.5.7' + rev: 'v0.6.1' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] @@ -54,6 +54,6 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject - rev: v0.18 + rev: v0.19 hooks: - id: validate-pyproject From 9a819580f27274bc83b1b1b284def3a10c8f29ea Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Tue, 20 Aug 2024 02:15:08 +0530 Subject: [PATCH 25/33] Make Panels non async by default (#1990) * make panel non async by default --- debug_toolbar/panels/__init__.py | 2 +- debug_toolbar/panels/alerts.py | 2 ++ debug_toolbar/panels/cache.py | 2 ++ debug_toolbar/panels/headers.py | 2 ++ debug_toolbar/panels/redirects.py | 3 ++- debug_toolbar/panels/request.py | 2 -- debug_toolbar/panels/settings.py | 2 ++ debug_toolbar/panels/signals.py | 2 ++ debug_toolbar/panels/staticfiles.py | 1 - debug_toolbar/panels/templates/panel.py | 2 ++ debug_toolbar/panels/timer.py | 2 -- debug_toolbar/panels/versions.py | 2 ++ docs/architecture.rst | 2 +- 13 files changed, 18 insertions(+), 8 deletions(-) diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index fd3312bc3..de18f95e3 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -10,7 +10,7 @@ class Panel: Base class for panels. """ - is_async = True + is_async = False def __init__(self, toolbar, get_response): self.toolbar = toolbar diff --git a/debug_toolbar/panels/alerts.py b/debug_toolbar/panels/alerts.py index 51334820d..c8e59002c 100644 --- a/debug_toolbar/panels/alerts.py +++ b/debug_toolbar/panels/alerts.py @@ -76,6 +76,8 @@ class AlertsPanel(Panel): title = _("Alerts") + is_async = True + template = "debug_toolbar/panels/alerts.html" def __init__(self, *args, **kwargs): diff --git a/debug_toolbar/panels/cache.py b/debug_toolbar/panels/cache.py index 4c7bf5af7..0f8902b5a 100644 --- a/debug_toolbar/panels/cache.py +++ b/debug_toolbar/panels/cache.py @@ -58,6 +58,8 @@ class CachePanel(Panel): template = "debug_toolbar/panels/cache.html" + is_async = True + _context_locals = Local() def __init__(self, *args, **kwargs): diff --git a/debug_toolbar/panels/headers.py b/debug_toolbar/panels/headers.py index e1ea6da1e..f6086d6e6 100644 --- a/debug_toolbar/panels/headers.py +++ b/debug_toolbar/panels/headers.py @@ -30,6 +30,8 @@ class HeadersPanel(Panel): title = _("Headers") + is_async = True + template = "debug_toolbar/panels/headers.html" def process_request(self, request): diff --git a/debug_toolbar/panels/redirects.py b/debug_toolbar/panels/redirects.py index 71c008f1b..27cce4c17 100644 --- a/debug_toolbar/panels/redirects.py +++ b/debug_toolbar/panels/redirects.py @@ -11,9 +11,10 @@ class RedirectsPanel(Panel): Panel that intercepts redirects and displays a page with debug info. """ - is_async = True has_content = False + is_async = True + nav_title = _("Intercept redirects") def _process_response(self, response): diff --git a/debug_toolbar/panels/request.py b/debug_toolbar/panels/request.py index f9375b381..9e60207fe 100644 --- a/debug_toolbar/panels/request.py +++ b/debug_toolbar/panels/request.py @@ -15,8 +15,6 @@ class RequestPanel(Panel): title = _("Request") - is_async = False - @property def nav_subtitle(self): """ diff --git a/debug_toolbar/panels/settings.py b/debug_toolbar/panels/settings.py index 7b27c6243..ff32bd2c0 100644 --- a/debug_toolbar/panels/settings.py +++ b/debug_toolbar/panels/settings.py @@ -14,6 +14,8 @@ class SettingsPanel(Panel): template = "debug_toolbar/panels/settings.html" + is_async = True + nav_title = _("Settings") def title(self): diff --git a/debug_toolbar/panels/signals.py b/debug_toolbar/panels/signals.py index 574948d6e..db0d4961d 100644 --- a/debug_toolbar/panels/signals.py +++ b/debug_toolbar/panels/signals.py @@ -28,6 +28,8 @@ class SignalsPanel(Panel): template = "debug_toolbar/panels/signals.html" + is_async = True + SIGNALS = { "request_started": request_started, "request_finished": request_finished, diff --git a/debug_toolbar/panels/staticfiles.py b/debug_toolbar/panels/staticfiles.py index 061068a30..2eed2efa0 100644 --- a/debug_toolbar/panels/staticfiles.py +++ b/debug_toolbar/panels/staticfiles.py @@ -73,7 +73,6 @@ class StaticFilesPanel(panels.Panel): A panel to display the found staticfiles. """ - is_async = False name = "Static files" template = "debug_toolbar/panels/staticfiles.html" diff --git a/debug_toolbar/panels/templates/panel.py b/debug_toolbar/panels/templates/panel.py index ee2a066c7..e9a5b4e83 100644 --- a/debug_toolbar/panels/templates/panel.py +++ b/debug_toolbar/panels/templates/panel.py @@ -68,6 +68,8 @@ class TemplatesPanel(Panel): A panel that lists all templates used during processing of a response. """ + is_async = True + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.templates = [] diff --git a/debug_toolbar/panels/timer.py b/debug_toolbar/panels/timer.py index 962702f7e..554798e7d 100644 --- a/debug_toolbar/panels/timer.py +++ b/debug_toolbar/panels/timer.py @@ -17,8 +17,6 @@ class TimerPanel(Panel): Panel that displays the time a response took in milliseconds. """ - is_async = False - def nav_subtitle(self): stats = self.get_stats() if hasattr(self, "_start_rusage"): diff --git a/debug_toolbar/panels/versions.py b/debug_toolbar/panels/versions.py index d517ecfb3..2b41377ca 100644 --- a/debug_toolbar/panels/versions.py +++ b/debug_toolbar/panels/versions.py @@ -12,6 +12,8 @@ class VersionsPanel(Panel): Shows versions of Python, Django, and installed apps if possible. """ + is_async = True + @property def nav_subtitle(self): return "Django %s" % django.get_version() diff --git a/docs/architecture.rst b/docs/architecture.rst index c49bfef0f..0c267c806 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -82,7 +82,7 @@ Problematic Parts - Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` is now async compatible and can process async requests. However certain panels such as ``SQLPanel``, ``TimerPanel``, ``StaticFilesPanel``, - ``RequestPanel`` and ``ProfilingPanel`` aren't fully + ``RequestPanel``, ``HistoryPanel`` and ``ProfilingPanel`` aren't fully compatible and currently being worked on. For now, these panels are disabled by default when running in async environment. follow the progress of this issue in `Async compatible toolbar project `_. From 6fc5ce868da102b8d3206552925a513b2f26cb75 Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Tue, 20 Aug 2024 18:08:39 +0530 Subject: [PATCH 26/33] Async compatible `StaticFilesPanel` (#1983) * incoperate signals and contextvars to record staticfiles for concurrent requests * remove used_static_files contextvar and its dependencies allow on app ready monkey patching * async static files panel test * update doc * Code review changes * suggested changes --- debug_toolbar/panels/staticfiles.py | 47 ++++++++++++------- docs/architecture.rst | 2 +- tests/panels/test_staticfiles.py | 13 +++++ tests/templates/base.html | 1 + tests/templates/staticfiles/async_static.html | 6 +++ 5 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 tests/templates/staticfiles/async_static.html diff --git a/debug_toolbar/panels/staticfiles.py b/debug_toolbar/panels/staticfiles.py index 2eed2efa0..b0997404c 100644 --- a/debug_toolbar/panels/staticfiles.py +++ b/debug_toolbar/panels/staticfiles.py @@ -1,9 +1,11 @@ import contextlib +import uuid from contextvars import ContextVar from os.path import join, normpath from django.conf import settings from django.contrib.staticfiles import finders, storage +from django.dispatch import Signal from django.utils.functional import LazyObject from django.utils.translation import gettext_lazy as _, ngettext @@ -28,8 +30,10 @@ def url(self): return storage.staticfiles_storage.url(self.path) -# This will collect the StaticFile instances across threads. -used_static_files = ContextVar("djdt_static_used_static_files") +# This will record and map the StaticFile instances with its associated +# request across threads and async concurrent requests state. +request_id_context_var = ContextVar("djdt_request_id_store") +record_static_file_signal = Signal() class DebugConfiguredStorage(LazyObject): @@ -59,7 +63,12 @@ def url(self, path): # The ContextVar wasn't set yet. Since the toolbar wasn't properly # configured to handle this request, we don't need to capture # the static file. - used_static_files.get().append(StaticFile(path)) + request_id = request_id_context_var.get() + record_static_file_signal.send( + sender=self, + staticfile=StaticFile(path), + request_id=request_id, + ) return super().url(path) self._wrapped = DebugStaticFilesStorage() @@ -73,6 +82,7 @@ class StaticFilesPanel(panels.Panel): A panel to display the found staticfiles. """ + is_async = True name = "Static files" template = "debug_toolbar/panels/staticfiles.html" @@ -87,12 +97,28 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.num_found = 0 self.used_paths = [] + self.request_id = str(uuid.uuid4()) - def enable_instrumentation(self): + @classmethod + def ready(cls): storage.staticfiles_storage = DebugConfiguredStorage() + def _store_static_files_signal_handler(self, sender, staticfile, **kwargs): + # Only record the static file if the request_id matches the one + # that was used to create the panel. + # as sender of the signal and this handler will have multiple + # concurrent connections and we want to avoid storing of same + # staticfile from other connections as well. + if request_id_context_var.get() == self.request_id: + self.used_paths.append(staticfile) + + def enable_instrumentation(self): + self.ctx_token = request_id_context_var.set(self.request_id) + record_static_file_signal.connect(self._store_static_files_signal_handler) + def disable_instrumentation(self): - storage.staticfiles_storage = _original_storage + record_static_file_signal.disconnect(self._store_static_files_signal_handler) + request_id_context_var.reset(self.ctx_token) @property def num_used(self): @@ -108,17 +134,6 @@ def nav_subtitle(self): "%(num_used)s file used", "%(num_used)s files used", num_used ) % {"num_used": num_used} - def process_request(self, request): - reset_token = used_static_files.set([]) - response = super().process_request(request) - # Make a copy of the used paths so that when the - # ContextVar is reset, our panel still has the data. - self.used_paths = used_static_files.get().copy() - # Reset the ContextVar to be empty again, removing the reference - # to the list of used files. - used_static_files.reset(reset_token) - return response - def generate_stats(self, request, response): self.record_stats( { diff --git a/docs/architecture.rst b/docs/architecture.rst index 0c267c806..0043f5153 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -81,7 +81,7 @@ Problematic Parts the main benefit of the toolbar - Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` is now async compatible and can process async requests. However certain - panels such as ``SQLPanel``, ``TimerPanel``, ``StaticFilesPanel``, + panels such as ``SQLPanel``, ``TimerPanel``, ``RequestPanel``, ``HistoryPanel`` and ``ProfilingPanel`` aren't fully compatible and currently being worked on. For now, these panels are disabled by default when running in async environment. diff --git a/tests/panels/test_staticfiles.py b/tests/panels/test_staticfiles.py index 0736d86ed..3caedc4eb 100644 --- a/tests/panels/test_staticfiles.py +++ b/tests/panels/test_staticfiles.py @@ -1,5 +1,7 @@ from django.conf import settings from django.contrib.staticfiles import finders +from django.shortcuts import render +from django.test import AsyncRequestFactory from ..base import BaseTestCase @@ -27,6 +29,17 @@ def test_default_case(self): self.panel.get_staticfiles_dirs(), finders.FileSystemFinder().locations ) + async def test_store_staticfiles_with_async_context(self): + async def get_response(request): + # template contains one static file + return render(request, "staticfiles/async_static.html") + + self._get_response = get_response + async_request = AsyncRequestFactory().get("/") + response = await self.panel.process_request(async_request) + self.panel.generate_stats(self.request, response) + self.assertEqual(self.panel.num_used, 1) + def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and diff --git a/tests/templates/base.html b/tests/templates/base.html index ea0d773ac..272c316f0 100644 --- a/tests/templates/base.html +++ b/tests/templates/base.html @@ -2,6 +2,7 @@ {{ title }} + {% block head %}{% endblock %} {% block content %}{% endblock %} diff --git a/tests/templates/staticfiles/async_static.html b/tests/templates/staticfiles/async_static.html new file mode 100644 index 000000000..fc0c9b885 --- /dev/null +++ b/tests/templates/staticfiles/async_static.html @@ -0,0 +1,6 @@ +{% extends "base.html" %} +{% load static %} + +{% block head %} + +{% endblock %} From 3ef6e69327651135bf789251103e2e3dee2c1ee7 Mon Sep 17 00:00:00 2001 From: Matthias Kestenholz Date: Wed, 21 Aug 2024 16:20:17 +0200 Subject: [PATCH 27/33] Refs #1668: Fixed the unsortable session keys fallback (#1994) * Refs #1668: Fixed the unsortable session keys fallback * Disable the flake8-simplify ruleset --- debug_toolbar/panels/request.py | 5 ++++- docs/changes.rst | 2 ++ pyproject.toml | 8 +++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/debug_toolbar/panels/request.py b/debug_toolbar/panels/request.py index 9e60207fe..b77788637 100644 --- a/debug_toolbar/panels/request.py +++ b/debug_toolbar/panels/request.py @@ -64,5 +64,8 @@ def generate_stats(self, request, response): (k, request.session.get(k)) for k in sorted(request.session.keys()) ] except TypeError: - session_list = [(k, request.session.get(k)) for k in request.session] + session_list = [ + (k, request.session.get(k)) + for k in request.session.keys() # (it's not a dict) + ] self.record_stats({"session": {"list": session_list}}) diff --git a/docs/changes.rst b/docs/changes.rst index 8de32a1d2..581a9fce1 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -13,6 +13,8 @@ Pending * Add translations for Bulgarian and Korean. * Update translations for several languages. * Include new translatable strings for translation. +* Fixed a crash which happened in the fallback case when session keys cannot be + sorted. 4.4.6 (2024-07-10) ------------------ diff --git a/pyproject.toml b/pyproject.toml index 6060a055f..451887d35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,16 +74,14 @@ lint.extend-select = [ "PGH", # pygrep-hooks "PIE", # flake8-pie "RUF100", # Unused noqa directive - "SIM", # flake8-simplify "SLOT", # flake8-slots "UP", # pyupgrade "W", # pycodestyle warnings ] lint.extend-ignore = [ - "B905", # Allow zip() without strict= - "E501", # Ignore line length violations - "SIM108", # Use ternary operator instead of if-else-block - "UP031", # It's not always wrong to use percent-formatting + "B905", # Allow zip() without strict= + "E501", # Ignore line length violations + "UP031", # It's not always wrong to use percent-formatting ] lint.per-file-ignores."*/migrat*/*" = [ "N806", # Allow using PascalCase model names in migrations From b9d34d391b8e0bc2920bb20633101dde3a536237 Mon Sep 17 00:00:00 2001 From: Matthias Kestenholz Date: Wed, 21 Aug 2024 17:10:31 +0200 Subject: [PATCH 28/33] Add Django 5.1 to the CI matrix (#1995) --- docs/changes.rst | 1 + pyproject.toml | 1 + tox.ini | 11 ++++++----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/changes.rst b/docs/changes.rst index 581a9fce1..85488250b 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,6 +4,7 @@ Change log Pending ------- +* Added Django 5.1 to the CI matrix. * Support select and explain buttons for ``UNION`` queries on PostgreSQL. * Fixed internal toolbar requests being instrumented if the Django setting ``FORCE_SCRIPT_NAME`` was set. diff --git a/pyproject.toml b/pyproject.toml index 451887d35..611015e13 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ classifiers = [ "Framework :: Django", "Framework :: Django :: 4.2", "Framework :: Django :: 5.0", + "Framework :: Django :: 5.1", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", diff --git a/tox.ini b/tox.ini index 160b33db7..1bba8d38f 100644 --- a/tox.ini +++ b/tox.ini @@ -4,12 +4,13 @@ envlist = docs packaging py{38,39,310,311,312}-dj{42}-{sqlite,postgresql,postgis,mysql} - py{310,311,312}-dj{42,50,main}-{sqlite,postgresql,psycopg3,postgis,mysql} + py{310,311,312}-dj{42,50,51,main}-{sqlite,postgresql,psycopg3,postgis,mysql} [testenv] deps = dj42: django~=4.2.1 dj50: django~=5.0.2 + dj51: django~=5.1.0 djmain: https://github.com/django/django/archive/main.tar.gz postgresql: psycopg2-binary psycopg3: psycopg[binary] @@ -48,28 +49,28 @@ pip_pre = True commands = python -b -W always -m coverage run -m django test -v2 {posargs:tests} -[testenv:py{38,39,310,311,312}-dj{42,50,main}-{postgresql,psycopg3}] +[testenv:py{38,39,310,311,312}-dj{42,50,51,main}-{postgresql,psycopg3}] setenv = {[testenv]setenv} DB_BACKEND = postgresql DB_PORT = {env:DB_PORT:5432} -[testenv:py{38,39,310,311,312}-dj{42,50,main}-postgis] +[testenv:py{38,39,310,311,312}-dj{42,50,51,main}-postgis] setenv = {[testenv]setenv} DB_BACKEND = postgis DB_PORT = {env:DB_PORT:5432} -[testenv:py{38,39,310,311,312}-dj{42,50,main}-mysql] +[testenv:py{38,39,310,311,312}-dj{42,50,51,main}-mysql] setenv = {[testenv]setenv} DB_BACKEND = mysql DB_PORT = {env:DB_PORT:3306} -[testenv:py{38,39,310,311,312}-dj{42,50,main}-sqlite] +[testenv:py{38,39,310,311,312}-dj{42,50,51,main}-sqlite] setenv = {[testenv]setenv} DB_BACKEND = sqlite3 From c0419dda13bbf9b5fd5392290bd19203bd0e9041 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 21:00:08 +0200 Subject: [PATCH 29/33] [pre-commit.ci] pre-commit autoupdate (#1996) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-eslint: v9.9.0 → v9.9.1](https://github.com/pre-commit/mirrors-eslint/compare/v9.9.0...v9.9.1) - [github.com/astral-sh/ruff-pre-commit: v0.6.1 → v0.6.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.1...v0.6.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c4a3b15d9..4514397d6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,7 @@ repos: args: - --trailing-comma=es5 - repo: https://github.com/pre-commit/mirrors-eslint - rev: v9.9.0 + rev: v9.9.1 hooks: - id: eslint additional_dependencies: @@ -44,7 +44,7 @@ repos: args: - --fix - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.6.1' + rev: 'v0.6.2' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] From 423ad3640a9ece335d707c1e1678769907c2f859 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Tue, 27 Aug 2024 08:11:18 -0600 Subject: [PATCH 30/33] Use Heading-4 for PR template for screen-readers. (#1999) To better integrate with GitHub's PR page, our PR template should result in h4 elements rather than h1. See https://marijkeluttekes.dev/blog/articles/2024/08/19/quick-tip-use-h4-in-github-issue-descriptions/ --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 631ffac41..fd2dc52cb 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,4 @@ -# Description +#### Description Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. Your commit message should include @@ -6,7 +6,7 @@ this information as well. Fixes # (issue) -# Checklist: +#### Checklist: - [ ] I have added the relevant tests for this change. - [ ] I have added an item to the Pending section of ``docs/changes.rst``. From c4015136a80a30957d304ac6e66e2204c2df0852 Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Tue, 27 Aug 2024 23:02:57 +0530 Subject: [PATCH 31/33] Async compatible `HistoryPanel` (#1991) * async compatible history panel * Update debug_toolbar/toolbar.py --- debug_toolbar/panels/history/panel.py | 1 + debug_toolbar/toolbar.py | 19 +++++++++++++------ docs/architecture.rst | 2 +- tests/test_integration.py | 18 +++++++++++++++++- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/debug_toolbar/panels/history/panel.py b/debug_toolbar/panels/history/panel.py index 508a60577..56a891848 100644 --- a/debug_toolbar/panels/history/panel.py +++ b/debug_toolbar/panels/history/panel.py @@ -16,6 +16,7 @@ class HistoryPanel(Panel): """A panel to display History""" + is_async = True title = _("History") nav_title = _("History") template = "debug_toolbar/panels/history.html" diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index 35d789a53..eb8789b7f 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -12,6 +12,7 @@ from django.apps import apps from django.conf import settings from django.core.exceptions import ImproperlyConfigured +from django.core.handlers.asgi import ASGIRequest from django.dispatch import Signal from django.template import TemplateSyntaxError from django.template.loader import render_to_string @@ -101,12 +102,18 @@ def should_render_panels(self): If False, the panels will be loaded via Ajax. """ if (render_panels := self.config["RENDER_PANELS"]) is None: - # If wsgi.multiprocess isn't in the headers, then it's likely - # being served by ASGI. This type of set up is most likely - # incompatible with the toolbar until - # https://github.com/jazzband/django-debug-toolbar/issues/1430 - # is resolved. - render_panels = self.request.META.get("wsgi.multiprocess", True) + # If wsgi.multiprocess is true then it is either being served + # from ASGI or multithreaded third-party WSGI server eg gunicorn. + # we need to make special check for ASGI for supporting + # async context based requests. + if isinstance(self.request, ASGIRequest): + render_panels = False + else: + # The wsgi.multiprocess case of being True isn't supported until the + # toolbar has resolved the following issue: + # This type of set up is most likely + # https://github.com/jazzband/django-debug-toolbar/issues/1430 + render_panels = self.request.META.get("wsgi.multiprocess", True) return render_panels # Handle storing toolbars in memory and fetching them later on diff --git a/docs/architecture.rst b/docs/architecture.rst index 0043f5153..cf5c54951 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -82,7 +82,7 @@ Problematic Parts - Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` is now async compatible and can process async requests. However certain panels such as ``SQLPanel``, ``TimerPanel``, - ``RequestPanel``, ``HistoryPanel`` and ``ProfilingPanel`` aren't fully + ``RequestPanel`` and ``ProfilingPanel`` aren't fully compatible and currently being worked on. For now, these panels are disabled by default when running in async environment. follow the progress of this issue in `Async compatible toolbar project `_. diff --git a/tests/test_integration.py b/tests/test_integration.py index df276d90c..ca31a294c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -11,7 +11,7 @@ from django.db import connection from django.http import HttpResponse from django.template.loader import get_template -from django.test import RequestFactory +from django.test import AsyncRequestFactory, RequestFactory from django.test.utils import override_settings from debug_toolbar.forms import SignedDataForm @@ -126,6 +126,22 @@ def test_should_render_panels_multiprocess(self): request.META.pop("wsgi.multiprocess") self.assertTrue(toolbar.should_render_panels()) + def test_should_render_panels_asgi(self): + """ + The toolbar not should render the panels on each request when wsgi.multiprocess + is True or missing in case of async context rather than multithreaded + wsgi. + """ + async_request = AsyncRequestFactory().get("/") + # by default ASGIRequest will have wsgi.multiprocess set to True + # but we are still assigning this to true cause this could change + # and we specifically need to check that method returns false even with + # wsgi.multiprocess set to true + async_request.META["wsgi.multiprocess"] = True + toolbar = DebugToolbar(async_request, self.get_response) + toolbar.config["RENDER_PANELS"] = None + self.assertFalse(toolbar.should_render_panels()) + def _resolve_stats(self, path): # takes stats from Request panel request = rf.get(path) From f95b40de3783c342c7f0ba34e91b721147fa9be5 Mon Sep 17 00:00:00 2001 From: Aman Pandey Date: Mon, 2 Sep 2024 06:12:19 +0530 Subject: [PATCH 32/33] Async compatible `SQLPanel` (#1993) * ASGI check approach with added test and docs * asynchronize instrumentation internally in panel logic rather than middleware * mark aenable_instrumentation as method * add asgi and aenable_instrumentation in wordlist * add instrumentation in spelling list --- debug_toolbar/middleware.py | 5 ++++- debug_toolbar/panels/__init__.py | 3 +++ debug_toolbar/panels/sql/panel.py | 10 +++++++++- docs/architecture.rst | 5 ++--- docs/spelling_wordlist.txt | 3 +++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index 03044f3a4..1bf9b4e70 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -112,7 +112,10 @@ async def __acall__(self, request): # Activate instrumentation ie. monkey-patch. for panel in toolbar.enabled_panels: - panel.enable_instrumentation() + if hasattr(panel, "aenable_instrumentation"): + await panel.aenable_instrumentation() + else: + panel.enable_instrumentation() try: # Run panels like Django middleware. response = await toolbar.process_request(request) diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index de18f95e3..217708ec2 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -154,6 +154,9 @@ def enable_instrumentation(self): Unless the toolbar or this panel is disabled, this method will be called early in ``DebugToolbarMiddleware``. It should be idempotent. + + Add the ``aenable_instrumentation`` method to a panel subclass + to support async logic for instrumentation. """ def disable_instrumentation(self): diff --git a/debug_toolbar/panels/sql/panel.py b/debug_toolbar/panels/sql/panel.py index 7be5c4da6..fe18a9c11 100644 --- a/debug_toolbar/panels/sql/panel.py +++ b/debug_toolbar/panels/sql/panel.py @@ -2,6 +2,7 @@ from collections import defaultdict from copy import copy +from asgiref.sync import sync_to_async from django.db import connections from django.urls import path from django.utils.translation import gettext_lazy as _, ngettext @@ -113,7 +114,7 @@ class SQLPanel(Panel): the request. """ - is_async = False + is_async = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -192,6 +193,13 @@ def get_urls(cls): path("sql_profile/", views.sql_profile, name="sql_profile"), ] + async def aenable_instrumentation(self): + """ + Async version of enable instrumentation. + For async capable panels having async logic for instrumentation. + """ + await sync_to_async(self.enable_instrumentation)() + def enable_instrumentation(self): # This is thread-safe because database connections are thread-local. for connection in connections.all(): diff --git a/docs/architecture.rst b/docs/architecture.rst index cf5c54951..54b3b9318 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -81,8 +81,7 @@ Problematic Parts the main benefit of the toolbar - Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` is now async compatible and can process async requests. However certain - panels such as ``SQLPanel``, ``TimerPanel``, - ``RequestPanel`` and ``ProfilingPanel`` aren't fully - compatible and currently being worked on. For now, these panels + panels such as ``TimerPanel``, ``RequestPanel`` and ``ProfilingPanel`` aren't + fully compatible and currently being worked on. For now, these panels are disabled by default when running in async environment. follow the progress of this issue in `Async compatible toolbar project `_. diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index 829ff9bec..662e6df4f 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -6,7 +6,9 @@ Pympler Roboto Transifex Werkzeug +aenable ajax +asgi async backend backends @@ -21,6 +23,7 @@ flatpages frontend htmx inlining +instrumentation isort jQuery jinja From e9ba829e3b10e408a97704e2942e4627e951a0a9 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Sun, 1 Sep 2024 19:44:59 -0500 Subject: [PATCH 33/33] Version 5.0.0-alpha (#1998) * Version 5.0.0-alpha * Update docs/changes.rst --- README.rst | 2 +- debug_toolbar/__init__.py | 2 +- docs/changes.rst | 6 ++++++ docs/conf.py | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 362df2f95..9f62b85b5 100644 --- a/README.rst +++ b/README.rst @@ -44,7 +44,7 @@ Here's a screenshot of the toolbar in action: In addition to the built-in panels, a number of third-party panels are contributed by the community. -The current stable version of the Debug Toolbar is 4.4.6. It works on +The current stable version of the Debug Toolbar is 5.0.0-alpha. It works on Django ≥ 4.2.0. The Debug Toolbar does not currently support `Django's asynchronous views diff --git a/debug_toolbar/__init__.py b/debug_toolbar/__init__.py index d98d6efae..f07c3be8b 100644 --- a/debug_toolbar/__init__.py +++ b/debug_toolbar/__init__.py @@ -4,7 +4,7 @@ # Do not use pkg_resources to find the version but set it here directly! # see issue #1446 -VERSION = "4.4.6" +VERSION = "5.0.0-alpha" # Code that discovers files or modules in INSTALLED_APPS imports this module. urls = "debug_toolbar.urls", APP_NAME diff --git a/docs/changes.rst b/docs/changes.rst index 85488250b..b7df20707 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,6 +4,12 @@ Change log Pending ------- +5.0.0-alpha (2024-09-01) +------------------------ + +* Support async applications and ASGI from + `Google Summer of Code Project 2024 + `__. * Added Django 5.1 to the CI matrix. * Support select and explain buttons for ``UNION`` queries on PostgreSQL. * Fixed internal toolbar requests being instrumented if the Django setting diff --git a/docs/conf.py b/docs/conf.py index 924869c05..16f107896 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,7 +25,7 @@ copyright = copyright.format(datetime.date.today().year) # The full version, including alpha/beta/rc tags -release = "4.4.6" +release = "5.0.0-alpha" # -- General configuration ---------------------------------------------------