diff -pruN 3:5.2.6-1/AUTHORS 3:5.2.9-0ubuntu1/AUTHORS
--- 3:5.2.6-1/AUTHORS	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/AUTHORS	2025-12-02 12:30:32.000000000 +0000
@@ -96,6 +96,7 @@ answer newbie questions, and generally m
     Andy Dustman <farcepest@gmail.com>
     Andy Gayton <andy-django@thecablelounge.com>
     andy@jadedplanet.net
+    Annabelle Wiegart
     Anssi Kääriäinen <akaariai@gmail.com>
     ant9000@netwise.it
     Anthony Briggs <anthony.briggs@gmail.com>
@@ -206,6 +207,7 @@ answer newbie questions, and generally m
     Carlton Gibson <carlton.gibson@noumenal.es>
     cedric@terramater.net
     Chad Whitman <chad.whitman@icloud.com>
+    Chaitanya Keyal <chaitanyakeyal@gmail.com>
     ChaosKCW
     Charlie Leifer <coleifer@gmail.com>
     charly.wilhelm@gmail.com
@@ -1047,6 +1049,7 @@ answer newbie questions, and generally m
     Unai Zalakain <unai@gisa-elkartea.org>
     Valentina Mukhamedzhanova <umirra@gmail.com>
     valtron
+    Varun Kasyap Pentamaraju <varunkasyap@hotmail.com>
     Vasiliy Stavenko <stavenko@gmail.com>
     Vasil Vangelovski
     Vibhu Agarwal <vibhu-agarwal.github.io>
diff -pruN 3:5.2.6-1/Django.egg-info/PKG-INFO 3:5.2.9-0ubuntu1/Django.egg-info/PKG-INFO
--- 3:5.2.6-1/Django.egg-info/PKG-INFO	2025-09-03 11:19:39.000000000 +0000
+++ 3:5.2.9-0ubuntu1/Django.egg-info/PKG-INFO	2025-12-02 12:35:54.000000000 +0000
@@ -1,9 +1,9 @@
 Metadata-Version: 2.4
 Name: Django
-Version: 5.2.6
+Version: 5.2.9
 Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
 Author-email: Django Software Foundation <foundation@djangoproject.com>
-License: BSD-3-Clause
+License-Expression: BSD-3-Clause
 Project-URL: Homepage, https://www.djangoproject.com/
 Project-URL: Documentation, https://docs.djangoproject.com/
 Project-URL: Release notes, https://docs.djangoproject.com/en/stable/releases/
@@ -14,7 +14,6 @@ Classifier: Development Status :: 5 - Pr
 Classifier: Environment :: Web Environment
 Classifier: Framework :: Django
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: BSD License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
@@ -23,6 +22,7 @@ Classifier: Programming Language :: Pyth
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Internet :: WWW/HTTP
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
@@ -32,7 +32,6 @@ Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 License-File: LICENSE.python
-License-File: AUTHORS
 Requires-Dist: asgiref>=3.8.1
 Requires-Dist: sqlparse>=0.3.1
 Requires-Dist: tzdata; sys_platform == "win32"
diff -pruN 3:5.2.6-1/Django.egg-info/SOURCES.txt 3:5.2.9-0ubuntu1/Django.egg-info/SOURCES.txt
--- 3:5.2.6-1/Django.egg-info/SOURCES.txt	2025-09-03 11:19:39.000000000 +0000
+++ 3:5.2.9-0ubuntu1/Django.egg-info/SOURCES.txt	2025-12-02 12:35:54.000000000 +0000
@@ -4258,6 +4258,9 @@ docs/releases/4.2.21.txt
 docs/releases/4.2.22.txt
 docs/releases/4.2.23.txt
 docs/releases/4.2.24.txt
+docs/releases/4.2.25.txt
+docs/releases/4.2.26.txt
+docs/releases/4.2.27.txt
 docs/releases/4.2.3.txt
 docs/releases/4.2.4.txt
 docs/releases/4.2.5.txt
@@ -4285,6 +4288,9 @@ docs/releases/5.1.1.txt
 docs/releases/5.1.10.txt
 docs/releases/5.1.11.txt
 docs/releases/5.1.12.txt
+docs/releases/5.1.13.txt
+docs/releases/5.1.14.txt
+docs/releases/5.1.15.txt
 docs/releases/5.1.2.txt
 docs/releases/5.1.3.txt
 docs/releases/5.1.4.txt
@@ -4300,6 +4306,9 @@ docs/releases/5.2.3.txt
 docs/releases/5.2.4.txt
 docs/releases/5.2.5.txt
 docs/releases/5.2.6.txt
+docs/releases/5.2.7.txt
+docs/releases/5.2.8.txt
+docs/releases/5.2.9.txt
 docs/releases/5.2.txt
 docs/releases/index.txt
 docs/releases/security.txt
@@ -4388,7 +4397,6 @@ js_tests/admin/inlines.test.js
 js_tests/admin/jsi18n-mocks.test.js
 js_tests/admin/navigation.test.js
 js_tests/gis/mapwidget.test.js
-scripts/manage_translations.py
 tests/.coveragerc
 tests/README.rst
 tests/runtests.py
diff -pruN 3:5.2.6-1/MANIFEST.in 3:5.2.9-0ubuntu1/MANIFEST.in
--- 3:5.2.6-1/MANIFEST.in	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/MANIFEST.in	2025-11-27 12:32:16.000000000 +0000
@@ -11,6 +11,6 @@ graft django
 graft docs
 graft extras
 graft js_tests
-graft scripts
 graft tests
 global-exclude *.py[co]
+prune scripts
diff -pruN 3:5.2.6-1/PKG-INFO 3:5.2.9-0ubuntu1/PKG-INFO
--- 3:5.2.6-1/PKG-INFO	2025-09-03 11:19:41.253755300 +0000
+++ 3:5.2.9-0ubuntu1/PKG-INFO	2025-12-02 12:35:55.991793600 +0000
@@ -1,9 +1,9 @@
 Metadata-Version: 2.4
 Name: Django
-Version: 5.2.6
+Version: 5.2.9
 Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
 Author-email: Django Software Foundation <foundation@djangoproject.com>
-License: BSD-3-Clause
+License-Expression: BSD-3-Clause
 Project-URL: Homepage, https://www.djangoproject.com/
 Project-URL: Documentation, https://docs.djangoproject.com/
 Project-URL: Release notes, https://docs.djangoproject.com/en/stable/releases/
@@ -14,7 +14,6 @@ Classifier: Development Status :: 5 - Pr
 Classifier: Environment :: Web Environment
 Classifier: Framework :: Django
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: BSD License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
@@ -23,6 +22,7 @@ Classifier: Programming Language :: Pyth
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Internet :: WWW/HTTP
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
@@ -32,7 +32,6 @@ Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 License-File: LICENSE.python
-License-File: AUTHORS
 Requires-Dist: asgiref>=3.8.1
 Requires-Dist: sqlparse>=0.3.1
 Requires-Dist: tzdata; sys_platform == "win32"
diff -pruN 3:5.2.6-1/debian/changelog 3:5.2.9-0ubuntu1/debian/changelog
--- 3:5.2.6-1/debian/changelog	2025-09-03 14:46:59.000000000 +0000
+++ 3:5.2.9-0ubuntu1/debian/changelog	2025-12-10 12:54:27.000000000 +0000
@@ -1,23 +1,67 @@
-python-django (3:5.2.6-1) experimental; urgency=medium
+python-django (3:5.2.9-0ubuntu1) resolute; urgency=medium
 
-  * New upstream security release:
+  * Updated to 5.2.9 to fix security issues.
+    - CVE-2025-13372
+    - CVE-2025-64460
+  * debian/patches/fix-new-python.patch: fix FTBFS with newer Python.
+  * Dropped patches no longer needed with 5.2.9
+    - CVE-2025-57833.patch
+    - fixing_test_strip_tags.patch
+    - fixing_test_parsing_errors.patch
+    - CVE-2025-59681.patch
+    - CVE-2025-59682.patch
+    - CVE-2025-64459-1.patch
+    - CVE-2025-64459-2.patch
+    - FTBFS-test_pickle_errors_detection.patch
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com>  Wed, 10 Dec 2025 07:54:27 -0500
+
+python-django (3:5.2.4-1ubuntu3) resolute; urgency=medium
+
+  * SECURITY UPDATE: Potential SQL injection in QuerySet and Q objects
+    - debian/patches/CVE-2025-64459-1.patch: Add connects and checks for them
+      in django/db/models/query_utils.py.
+    - debian/patches/CVE-2025-64459-2.patch: Add PROHIBITED_FILTER_KWARGS and
+      check for them in django/db/models/query.py.
+    - CVE-2025-64459
+  * FTBFS-test_pickle_errors_detection.patch: Fix FTBFS in
+    test_pickle_errors_detection test function in
+    tests/test_runner/test_parallel.py
+
+ -- Hlib Korzhynskyy <hlib.korzhynskyy@canonical.com>  Thu, 06 Nov 2025 09:58:31 +0100
+
+python-django (3:5.2.4-1ubuntu2) questing; urgency=medium
+
+  * SECURITY UPDATE: Potential SQL injection
+    - debian/patches/CVE-2025-59681.patch: protect against SQL injection in
+      django/db/models/sql/query.py, tests/aggregation/tests.py,
+      tests/annotations/tests.py,
+      tests/expressions/test_queryset_values.py, tests/queries/tests.py.
+    - CVE-2025-59681
+  * SECURITY UPDATE: Potential partial directory-traversal
+    - debian/patches/CVE-2025-59682.patch: validate path in
+      django/utils/archive.py, tests/utils_tests/test_archive.py.
+    - CVE-2025-59682
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com>  Wed, 01 Oct 2025 12:49:58 -0400
+
+python-django (3:5.2.4-1ubuntu1) questing; urgency=medium
+
+  * SECURITY UPDATE: SQL injection
+    - debian/patches/CVE-2025-57833.patch: protected
+      FilteredRelation against SQL injection in column
+      aliases in django/db/models/sql/query.py,
+      tests/annotations/tests.py.
+    - debian/patches/fixing_test_stip_tags.patch: Adjusted
+      utils_tests.test_html.TestUtilsHtml.test_strip_tags following Python's
+      HTMLParser new behavior in tests/utils_test/test_html.py.
+    - debian/patches/fixing_test_parsing_errors.patch: Fixed
+      test_utils.tests.HTMLEqualTests.test_parsing_errors
+      following Python's HTMLParser fixed parsing in
+      tests/test_utils/tests.py.
+    - CVE-2025-57833
 
-    - CVE-2025-57833: Potential SQL injection in FilteredRelation column
-      aliases. The FilteredRelation feature in Django was subject to a
-      potential SQL injection vulnerability in column aliases that was
-      exploitable via suitably crafted dictionary with dictionary expansion as
-      the **kwargs passed QuerySet.annotate() or QuerySet.alias().
-      (Closes: #1113865)
-
-    <https://www.djangoproject.com/weblog/2025/sep/03/security-releases/>
-
- -- Chris Lamb <lamby@debian.org>  Wed, 03 Sep 2025 07:46:59 -0700
-
-python-django (3:5.2.5-1) experimental; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Chris Lamb <lamby@debian.org>  Wed, 06 Aug 2025 09:50:20 -0700
+ -- Leonidas Da Silva Barbosa <leo.barbosa@canonical.com>  Mon, 15 Sep 2025 09:13:25 -0300
 
 python-django (3:5.2.4-1) experimental; urgency=medium
 
diff -pruN 3:5.2.6-1/debian/control 3:5.2.9-0ubuntu1/debian/control
--- 3:5.2.6-1/debian/control	2025-09-03 14:46:59.000000000 +0000
+++ 3:5.2.9-0ubuntu1/debian/control	2025-09-15 12:13:25.000000000 +0000
@@ -1,7 +1,8 @@
 Source: python-django
 Section: python
 Priority: optional
-Maintainer: Debian Python Team <team+python@tracker.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian Python Team <team+python@tracker.debian.org>
 Uploaders:
  Luke Faraone <lfaraone@debian.org>,
  Raphaël Hertzog <hertzog@debian.org>,
diff -pruN 3:5.2.6-1/debian/patches/fix-new-python.patch 3:5.2.9-0ubuntu1/debian/patches/fix-new-python.patch
--- 3:5.2.6-1/debian/patches/fix-new-python.patch	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/debian/patches/fix-new-python.patch	2025-12-10 12:54:27.000000000 +0000
@@ -0,0 +1,14 @@
+Description: fix FTBFS with newer Python
+Author: Marc Deslauriers <marc.deslauriers@canonical.com>
+Forwarded: no, needs better fix to forward upstream
+
+--- a/tests/utils_tests/test_html.py
++++ b/tests/utils_tests/test_html.py
+@@ -159,7 +159,6 @@ class TestUtilsHtml(SimpleTestCase):
+             # https://bugs.python.org/issue20288
+             ("&gotcha&#;<>", "&gotcha&#;<>"),
+             ("<sc<!-- -->ript>test<<!-- -->/script>", "ript>test"),
+-            ("<script>alert()</script>&h", "alert()h"),
+             (
+                 "><!" + ("&" * 16000) + "D",
+                 ">" if htmlparser_fixed else "><!" + ("&" * 16000) + "D",
diff -pruN 3:5.2.6-1/debian/patches/series 3:5.2.9-0ubuntu1/debian/patches/series
--- 3:5.2.6-1/debian/patches/series	2025-09-03 14:46:59.000000000 +0000
+++ 3:5.2.9-0ubuntu1/debian/patches/series	2025-12-10 12:54:27.000000000 +0000
@@ -2,3 +2,4 @@
 0002-use_debian_geoip_database_as_default.diff
 0004-Use-locally-installed-documentation-sources.patch
 0004-Set-the-default-shebang-to-new-projects-to-use-Pytho.patch
+fix-new-python.patch
diff -pruN 3:5.2.6-1/django/__init__.py 3:5.2.9-0ubuntu1/django/__init__.py
--- 3:5.2.6-1/django/__init__.py	2025-09-03 11:17:13.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/__init__.py	2025-12-02 12:31:08.000000000 +0000
@@ -1,6 +1,6 @@
 from django.utils.version import get_version
 
-VERSION = (5, 2, 6, "final", 0)
+VERSION = (5, 2, 9, "final", 0)
 
 __version__ = get_version(VERSION)
 
Binary files 3:5.2.6-1/django/conf/locale/az/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/az/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/az/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/az/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/az/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/az/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -11,8 +11,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2025-03-19 11:30-0500\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
 "Last-Translator: Nijat Mammadov, 2024-2025\n"
 "Language-Team: Azerbaijani (http://app.transifex.com/django/django/language/"
 "az/)\n"
@@ -506,7 +506,7 @@ msgstr "Bu sahə ağ qala bilməz."
 
 #, python-format
 msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s bu %(field_label)s sahə ilə artıq mövcuddur."
+msgstr "Bu %(field_label)s ilə %(model_name)s artıq mövcuddur."
 
 #. Translators: The 'lookup_type' is one of 'date', 'year' or
 #. 'month'. Eg: "Title must be unique for pub_date year"
@@ -547,7 +547,7 @@ msgid ""
 "“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
 "format."
 msgstr ""
-"“%(value)s” dəyəri səhv tarix formatındadır. Formatı YYYY-MM-DD olmalıdır."
+"“%(value)s” dəyəri səhv tarix formatındadır. YYYY-MM-DD formatı olmalıdır."
 
 #, python-format
 msgid ""
@@ -815,7 +815,7 @@ msgstr[1] "Zəhmət olmasa ən çox %(nu
 msgid "Please submit at least %(num)d form."
 msgid_plural "Please submit at least %(num)d forms."
 msgstr[0] "Zəhmət olmasa ən az %(num)d forma təsdiqləyin."
-msgstr[1] "Zəhmət olmasa ən az %(num)d forma təsdiqləyin."
+msgstr[1] "Zəhmət olmasa azı %(num)d forma təsdiqləyin."
 
 msgid "Order"
 msgstr "Sırala"
@@ -1190,7 +1190,7 @@ msgstr[0] "%(num)d dəqiqə"
 msgstr[1] "%(num)d dəqiqə"
 
 msgid "Forbidden"
-msgstr "Qadağan"
+msgstr "Qadağan olunmuş"
 
 msgid "CSRF verification failed. Request aborted."
 msgstr "CSRF təsdiqləmə alınmadı. Sorğu ləğv edildi."
@@ -1245,7 +1245,7 @@ msgstr ""
 "sorğular üçün aktiv edin."
 
 msgid "More information is available with DEBUG=True."
-msgstr "Daha ətraflı məlumat DEBUG=True ilə mövcuddur."
+msgstr "Əlavə məlumatı DEBUG=True ilə əldə etmək olar."
 
 msgid "No year specified"
 msgstr "İl göstərilməyib"
Binary files 3:5.2.6-1/django/conf/locale/be/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/be/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/be/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/be/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/be/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/be/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,16 +2,16 @@
 #
 # Translators:
 # Viktar Palstsiuk <vipals@gmail.com>, 2014-2015
-# znotdead <zhirafchik@gmail.com>, 2016-2017,2019-2021,2023-2024
+# znotdead <zhirafchik@gmail.com>, 2016-2017,2019-2021,2023-2025
 # Bobsans <mr.bobsans@gmail.com>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 06:49+0000\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
 "Last-Translator: znotdead <zhirafchik@gmail.com>, "
-"2016-2017,2019-2021,2023-2024\n"
+"2016-2017,2019-2021,2023-2025\n"
 "Language-Team: Belarusian (http://app.transifex.com/django/django/language/"
 "be/)\n"
 "MIME-Version: 1.0\n"
@@ -712,8 +712,9 @@ msgid "Value must be valid JSON."
 msgstr "Значэньне павінна быць сапраўдным JSON."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "Экземпляр %(model)s з %(field)s %(value)r не iснуе."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr ""
+"Экземпляр %(model)s з %(field)s %(value)r не з'яўляецца правільным выбарам."
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "Вонкавы ключ (від вызначаецца паводле зьвязанага поля)"
Binary files 3:5.2.6-1/django/conf/locale/ckb/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/ckb/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/ckb/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/ckb/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/ckb/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/ckb/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -5,14 +5,15 @@
 # Bawar Jalal, 2020-2021
 # Bawar Jalal, 2020
 # Kosar Tofiq Saeed <kosar.belana@gmail.com>, 2020-2021
+# Natalia, 2025
 # Swara <swara09@gmail.com>, 2022-2024
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 06:49+0000\n"
-"Last-Translator: Swara <swara09@gmail.com>, 2022-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Natalia, 2025\n"
 "Language-Team: Central Kurdish (http://app.transifex.com/django/django/"
 "language/ckb/)\n"
 "MIME-Version: 1.0\n"
@@ -682,8 +683,8 @@ msgid "Value must be valid JSON."
 msgstr "بەها پێویستە JSONی دروست بێت."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "%(model)s هاوشێوەیە لەگەڵ %(field)s %(value)r نیە."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr ""
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "کلیلی دەرەکی(جۆر بەپێی خانەی پەیوەندیدار دیاری دەکرێت)"
@@ -867,7 +868,7 @@ msgstr "نەخێر"
 
 #. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "بەڵێ،نەخێر،لەوانەیە"
+msgstr "بەڵێ,نەخێر,لەوانەیە"
 
 #, python-format
 msgid "%(size)d byte"
Binary files 3:5.2.6-1/django/conf/locale/de/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/de/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/de/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/de/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/de/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/de/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -12,13 +12,14 @@
 # Markus Holtermann <info@markusholtermann.eu>, 2013,2015
 # Raphael Michel <mail@raphaelmichel.de>, 2021
 # Ronny Vedrilla, 2025
+# Sarah Boyce, 2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 11:41-0300\n"
-"PO-Revision-Date: 2025-03-19 11:30-0500\n"
-"Last-Translator: Ronny Vedrilla, 2025\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Sarah Boyce, 2025\n"
 "Language-Team: German (http://app.transifex.com/django/django/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -380,7 +381,7 @@ msgstr ""
 
 #, python-format
 msgid "Enter a valid %(protocol)s address."
-msgstr ""
+msgstr "Bitte eine gültige %(protocol)s-Adresse eingeben."
 
 msgid "IPv4"
 msgstr "IPv4"
@@ -495,7 +496,9 @@ msgstr "und"
 
 #, python-format
 msgid "%(model_name)s with this %(field_labels)s already exists."
-msgstr "%(model_name)s mit diesem %(field_labels)s existiert bereits."
+msgstr ""
+"%(model_name)s mit diesem Wert für das Feld %(field_labels)s existiert "
+"bereits."
 
 #, python-format
 msgid "Constraint “%(name)s” is violated."
@@ -513,7 +516,9 @@ msgstr "Dieses Feld darf nicht leer sein
 
 #, python-format
 msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s mit diesem %(field_label)s existiert bereits."
+msgstr ""
+"%(model_name)s mit diesem Wert für das Feld %(field_label)s existiert "
+"bereits."
 
 #. Translators: The 'lookup_type' is one of 'date', 'year' or
 #. 'month'. Eg: "Title must be unique for pub_date year"
diff -pruN 3:5.2.6-1/django/conf/locale/de_CH/formats.py 3:5.2.9-0ubuntu1/django/conf/locale/de_CH/formats.py
--- 3:5.2.6-1/django/conf/locale/de_CH/formats.py	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/de_CH/formats.py	2025-11-27 12:32:16.000000000 +0000
@@ -25,11 +25,9 @@ DATETIME_INPUT_FORMATS = [
     "%d.%m.%Y %H:%M",  # '25.10.2006 14:30'
 ]
 
-# these are the separators for non-monetary numbers. For monetary numbers,
-# the DECIMAL_SEPARATOR is a . (decimal point) and the THOUSAND_SEPARATOR is a
-# ' (single quote).
-# For details, please refer to the documentation and the following link:
-# https://www.bk.admin.ch/bk/de/home/dokumentation/sprachen/hilfsmittel-textredaktion/schreibweisungen.html
+# Swiss number formatting can vary based on context (e.g. Fr. 23.50 vs 22,5 m).
+# Django does not support context-specific formatting and uses generic
+# separators.
 DECIMAL_SEPARATOR = ","
 THOUSAND_SEPARATOR = "\xa0"  # non-breaking space
 NUMBER_GROUPING = 3
Binary files 3:5.2.6-1/django/conf/locale/es/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/es/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/es/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/es/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/es/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/es/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -19,6 +19,7 @@
 # Ernesto Rico Schmidt <ernesto@rico-schmidt.name>, 2017
 # Ernesto Rico Schmidt <ernesto@rico-schmidt.name>, 2017
 # 8cb2d5a716c3c9a99b6d20472609a4d5_6d03802 <ce931cb71bc28f3f828fb2dad368a4f7_5255>, 2011
+# Gustavo Adolfo Huarcaya Delgado <diavolo@gahd.net>, 2025
 # Ignacio José Lizarán Rus <ilizaran@gmail.com>, 2019
 # Igor Támara <igor@tamarapatino.org>, 2015
 # Jannis Leidel <jannis@leidel.info>, 2011
@@ -47,9 +48,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 06:49+0000\n"
-"Last-Translator: Jorge Andres Bravo Meza, 2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Gustavo Adolfo Huarcaya Delgado <diavolo@gahd.net>, 2025\n"
 "Language-Team: Spanish (http://app.transifex.com/django/django/language/"
 "es/)\n"
 "MIME-Version: 1.0\n"
@@ -742,8 +743,9 @@ msgid "Value must be valid JSON."
 msgstr "El valor debe ser un objeto JSON válido."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "La instancia de %(model)s con %(field)s %(value)r no existe."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr ""
+"La instancia de %(model)s con %(field)s %(value)r no es una opción válida."
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "Clave foránea (tipo determinado por el campo relacionado)"
Binary files 3:5.2.6-1/django/conf/locale/fa/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/fa/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/fa/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/fa/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/fa/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/fa/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -15,6 +15,7 @@
 # Milad Hazrati <miladhazrati75@gmail.com>, 2019
 # MJafar Mashhadi <raindigital2007@gmail.com>, 2018
 # Mohammad Hossein Mojtahedi <Mhm5000@gmail.com>, 2013,2019
+# Natalia, 2025
 # Pouya Abbassi, 2016
 # Pouya Abbassi, 2016
 # rahim agh <rahim.aghareb@gmail.com>, 2020-2021
@@ -25,9 +26,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 11:41-0300\n"
-"PO-Revision-Date: 2023-12-04 06:49+0000\n"
-"Last-Translator: ali salehi, 2023\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Natalia, 2025\n"
 "Language-Team: Persian (http://app.transifex.com/django/django/language/"
 "fa/)\n"
 "MIME-Version: 1.0\n"
@@ -362,6 +363,9 @@ msgstr "این صفحه خالی از ا
 msgid "Enter a valid value."
 msgstr "یک مقدار معتبر وارد کنید."
 
+msgid "Enter a valid domain name."
+msgstr ""
+
 msgid "Enter a valid URL."
 msgstr "یک نشانی اینترنتی معتبر وارد کنید."
 
@@ -384,14 +388,18 @@ msgstr ""
 "یک \"اسلاگ\" معتبر وارد کنید که شامل حروف یونیکد، اعداد، خط زیر یا خط فاصله "
 "باشد."
 
-msgid "Enter a valid IPv4 address."
-msgstr "یک نشانی IPv4 معتبر وارد کنید."
+#, python-format
+msgid "Enter a valid %(protocol)s address."
+msgstr ""
 
-msgid "Enter a valid IPv6 address."
-msgstr "یک آدرس معتبر IPv6 وارد کنید."
+msgid "IPv4"
+msgstr ""
 
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "IPv4 یا IPv6 آدرس معتبر وارد کنید."
+msgid "IPv6"
+msgstr ""
+
+msgid "IPv4 or IPv6"
+msgstr ""
 
 msgid "Enter only digits separated by commas."
 msgstr "فقط ارقام جدا شده با کاما وارد کنید."
@@ -694,8 +702,8 @@ msgid "Value must be valid JSON."
 msgstr "مقدار، باید یک JSON معتبر باشد."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "%(model)s با %(field)s %(value)r وجود ندارد."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr ""
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "کلید خارجی ( نوع بر اساس فیلد رابط مشخص میشود )"
@@ -877,7 +885,7 @@ msgstr "خیر"
 
 #. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "بله،خیر،شاید"
+msgstr "بله,خیر,شاید"
 
 #, python-format
 msgid "%(size)d byte"
diff -pruN 3:5.2.6-1/django/conf/locale/fr_CH/formats.py 3:5.2.9-0ubuntu1/django/conf/locale/fr_CH/formats.py
--- 3:5.2.6-1/django/conf/locale/fr_CH/formats.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/fr_CH/formats.py	2025-11-27 12:32:16.000000000 +0000
@@ -27,6 +27,10 @@ DATETIME_INPUT_FORMATS = [
     "%d/%m/%Y %H:%M:%S.%f",  # '25/10/2006 14:30:59.000200'
     "%d/%m/%Y %H:%M",  # '25/10/2006 14:30'
 ]
+
+# Swiss number formatting can vary based on context (e.g. Fr. 23.50 vs 22,5 m).
+# Django does not support context-specific formatting and uses generic
+# separators.
 DECIMAL_SEPARATOR = ","
 THOUSAND_SEPARATOR = "\xa0"  # non-breaking space
 NUMBER_GROUPING = 3
Binary files 3:5.2.6-1/django/conf/locale/gl/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/gl/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/gl/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/gl/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/gl/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/gl/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -8,14 +8,14 @@
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
 # 948a55bc37dd6d642f1875bb84258fff_07a28cc <c1911c41f2600393098639fceba5dab0_5932>, 2012
-# X Bello <xbello@gmail.com>, 2023-2024
+# X Bello <xbello@gmail.com>, 2023-2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 06:49+0000\n"
-"Last-Translator: X Bello <xbello@gmail.com>, 2023-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: X Bello <xbello@gmail.com>, 2023-2025\n"
 "Language-Team: Galician (http://app.transifex.com/django/django/language/"
 "gl/)\n"
 "MIME-Version: 1.0\n"
@@ -699,8 +699,8 @@ msgid "Value must be valid JSON."
 msgstr "O valor ten que ser JSON válido."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "A instancia de %(model)s co %(field)s %(value)r non existe."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr "%(model)s instancia con %(field)s %(value)r non é unha opción válida."
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "Clave Foránea (tipo determinado por un campo relacionado)"
Binary files 3:5.2.6-1/django/conf/locale/id/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/id/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/id/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/id/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/id/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/id/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -4,7 +4,7 @@
 # Adiyat Mubarak <adiyatmubarak@gmail.com>, 2017
 # Bayu Satiyo <itsyuukunz@gmail.com>, 2024
 # Claude Paroz <claude@2xlibre.net>, 2018
-# Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2024
+# Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # M Asep Indrayana <me@drayanaindra.com>, 2015
 # oon arfiandwi (OonID) <oon.arfiandwi@gmail.com>, 2016,2020
@@ -17,8 +17,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2024\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2025\n"
 "Language-Team: Indonesian (http://app.transifex.com/django/django/language/"
 "id/)\n"
 "MIME-Version: 1.0\n"
@@ -691,7 +691,7 @@ msgstr "Nilai harus JSON yang valid."
 
 #, python-format
 msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
-msgstr ""
+msgstr "%(model)s instance dengan %(field)s %(value)r bukan pilihan sah."
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "Kunci Asing (tipe tergantung dari bidang yang berkaitan)"
Binary files 3:5.2.6-1/django/conf/locale/km/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/km/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/km/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/km/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/km/LC_MESSAGES/django.po	2025-04-01 14:58:54.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/km/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,14 +2,15 @@
 #
 # Translators:
 # Jannis Leidel <jannis@leidel.info>, 2011
+# Natalia, 2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-09-27 22:40+0200\n"
-"PO-Revision-Date: 2019-11-05 00:38+0000\n"
-"Last-Translator: Ramiro Morales\n"
-"Language-Team: Khmer (http://www.transifex.com/django/django/language/km/)\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Natalia, 2025\n"
+"Language-Team: Khmer (http://app.transifex.com/django/django/language/km/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -22,6 +23,9 @@ msgstr ""
 msgid "Arabic"
 msgstr "ភាសាអារ៉ាប់"
 
+msgid "Algerian Arabic"
+msgstr ""
+
 msgid "Asturian"
 msgstr ""
 
@@ -46,6 +50,9 @@ msgstr ""
 msgid "Catalan"
 msgstr ""
 
+msgid "Central Kurdish (Sorani)"
+msgstr ""
+
 msgid "Czech"
 msgstr "ភាសាឆេក"
 
@@ -145,6 +152,9 @@ msgstr ""
 msgid "Indonesian"
 msgstr ""
 
+msgid "Igbo"
+msgstr ""
+
 msgid "Ido"
 msgstr ""
 
@@ -175,6 +185,9 @@ msgstr ""
 msgid "Korean"
 msgstr ""
 
+msgid "Kyrgyz"
+msgstr ""
+
 msgid "Luxembourgish"
 msgstr ""
 
@@ -196,6 +209,9 @@ msgstr ""
 msgid "Marathi"
 msgstr ""
 
+msgid "Malay"
+msgstr ""
+
 msgid "Burmese"
 msgstr ""
 
@@ -259,9 +275,15 @@ msgstr "ភាសាតាមីល"
 msgid "Telugu"
 msgstr ""
 
+msgid "Tajik"
+msgstr ""
+
 msgid "Thai"
 msgstr ""
 
+msgid "Turkmen"
+msgstr ""
+
 msgid "Turkish"
 msgstr "ភាសាទួរគី"
 
@@ -271,6 +293,9 @@ msgstr ""
 msgid "Udmurt"
 msgstr ""
 
+msgid "Uyghur"
+msgstr ""
+
 msgid "Ukrainian"
 msgstr "ភាសាអ៊ុយក្រែន"
 
@@ -301,6 +326,11 @@ msgstr ""
 msgid "Syndication"
 msgstr ""
 
+#. Translators: String used to replace omitted page numbers in elided page
+#. range generated by paginators, e.g. [1, 2, '…', 5, 6, 7, '…', 9, 10].
+msgid "…"
+msgstr ""
+
 msgid "That page number is not an integer"
 msgstr ""
 
@@ -313,6 +343,9 @@ msgstr ""
 msgid "Enter a valid value."
 msgstr ""
 
+msgid "Enter a valid domain name."
+msgstr ""
+
 msgid "Enter a valid URL."
 msgstr ""
 
@@ -332,13 +365,17 @@ msgid ""
 "hyphens."
 msgstr ""
 
-msgid "Enter a valid IPv4 address."
+#, python-format
+msgid "Enter a valid %(protocol)s address."
+msgstr ""
+
+msgid "IPv4"
 msgstr ""
 
-msgid "Enter a valid IPv6 address."
+msgid "IPv6"
 msgstr ""
 
-msgid "Enter a valid IPv4 or IPv6 address."
+msgid "IPv4 or IPv6"
 msgstr ""
 
 msgid "Enter only digits separated by commas."
@@ -357,6 +394,16 @@ msgid "Ensure this value is greater than
 msgstr ""
 
 #, python-format
+msgid "Ensure this value is a multiple of step size %(limit_value)s."
+msgstr ""
+
+#, python-format
+msgid ""
+"Ensure this value is a multiple of step size %(limit_value)s, starting from "
+"%(offset)s, e.g. %(offset)s, %(valid_value1)s, %(valid_value2)s, and so on."
+msgstr ""
+
+#, python-format
 msgid ""
 "Ensure this value has at least %(limit_value)d character (it has "
 "%(show_value)d)."
@@ -411,6 +458,10 @@ msgid "%(model_name)s with this %(field_
 msgstr ""
 
 #, python-format
+msgid "Constraint “%(name)s” is violated."
+msgstr ""
+
+#, python-format
 msgid "Value %(value)r is not a valid choice."
 msgstr ""
 
@@ -424,8 +475,8 @@ msgstr ""
 msgid "%(model_name)s with this %(field_label)s already exists."
 msgstr ""
 
-#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'.
-#. Eg: "Title must be unique for pub_date year"
+#. Translators: The 'lookup_type' is one of 'date', 'year' or
+#. 'month'. Eg: "Title must be unique for pub_date year"
 #, python-format
 msgid ""
 "%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s."
@@ -450,6 +501,9 @@ msgstr "Boolean (អាច​ជា True
 msgid "String (up to %(max_length)s)"
 msgstr ""
 
+msgid "String (unlimited)"
+msgstr ""
+
 msgid "Comma-separated integers"
 msgstr "ចំនួនពិត(Integer) ដែលផ្តាច់ចេញពីគ្នាដោយ​ក្បៀស"
 
@@ -522,6 +576,9 @@ msgstr "ចំនួនពិត(Integer
 msgid "Big (8 byte) integer"
 msgstr ""
 
+msgid "Small integer"
+msgstr ""
+
 msgid "IPv4 address"
 msgstr ""
 
@@ -535,6 +592,9 @@ msgstr ""
 msgid "Boolean (Either True, False or None)"
 msgstr "Boolean (អាចជា True​ រឺ False រឺ None)"
 
+msgid "Positive big integer"
+msgstr ""
+
 msgid "Positive integer"
 msgstr ""
 
@@ -545,9 +605,6 @@ msgstr ""
 msgid "Slug (up to %(max_length)s)"
 msgstr ""
 
-msgid "Small integer"
-msgstr ""
-
 msgid "Text"
 msgstr "អត្ថបទ"
 
@@ -585,8 +642,14 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
+msgid "A JSON object"
+msgstr ""
+
+msgid "Value must be valid JSON."
+msgstr ""
+
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
 msgstr ""
 
 msgid "Foreign Key (type determined by related field)"
@@ -670,6 +733,9 @@ msgstr ""
 msgid "Enter a valid UUID."
 msgstr ""
 
+msgid "Enter a valid JSON."
+msgstr ""
+
 #. Translators: This is the default suffix added to form field labels
 msgid ":"
 msgstr ""
@@ -678,17 +744,20 @@ msgstr ""
 msgid "(Hidden field %(name)s) %(error)s"
 msgstr ""
 
-msgid "ManagementForm data is missing or has been tampered with"
+#, python-format
+msgid ""
+"ManagementForm data is missing or has been tampered with. Missing fields: "
+"%(field_names)s. You may need to file a bug report if the issue persists."
 msgstr ""
 
 #, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
+msgid "Please submit at most %(num)d form."
+msgid_plural "Please submit at most %(num)d forms."
 msgstr[0] ""
 
 #, python-format
-msgid "Please submit %d or more forms."
-msgid_plural "Please submit %d or more forms."
+msgid "Please submit at least %(num)d form."
+msgid_plural "Please submit at least %(num)d forms."
 msgstr[0] ""
 
 msgid "Order"
@@ -748,17 +817,9 @@ msgstr "យល់ព្រម"
 msgid "No"
 msgstr "មិនយល់ព្រម"
 
-msgid "Year"
-msgstr ""
-
-msgid "Month"
-msgstr ""
-
-msgid "Day"
-msgstr ""
-
+#. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "យល់ព្រម មិនយល់ព្រម​ ប្រហែល"
+msgstr "យល់ព្រម,មិនយល់ព្រម,ប្រហែល"
 
 #, python-format
 msgid "%(size)d byte"
@@ -1029,38 +1090,35 @@ msgid ", "
 msgstr ""
 
 #, python-format
-msgid "%d year"
-msgid_plural "%d years"
+msgid "%(num)d year"
+msgid_plural "%(num)d years"
 msgstr[0] ""
 
 #, python-format
-msgid "%d month"
-msgid_plural "%d months"
+msgid "%(num)d month"
+msgid_plural "%(num)d months"
 msgstr[0] ""
 
 #, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
+msgid "%(num)d week"
+msgid_plural "%(num)d weeks"
 msgstr[0] ""
 
 #, python-format
-msgid "%d day"
-msgid_plural "%d days"
+msgid "%(num)d day"
+msgid_plural "%(num)d days"
 msgstr[0] ""
 
 #, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
+msgid "%(num)d hour"
+msgid_plural "%(num)d hours"
 msgstr[0] ""
 
 #, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
+msgid "%(num)d minute"
+msgid_plural "%(num)d minutes"
 msgstr[0] ""
 
-msgid "0 minutes"
-msgstr ""
-
 msgid "Forbidden"
 msgstr ""
 
@@ -1069,7 +1127,7 @@ msgstr ""
 
 msgid ""
 "You are seeing this message because this HTTPS site requires a “Referer "
-"header” to be sent by your Web browser, but none was sent. This header is "
+"header” to be sent by your web browser, but none was sent. This header is "
 "required for security reasons, to ensure that your browser is not being "
 "hijacked by third parties."
 msgstr ""
@@ -1084,8 +1142,8 @@ msgid ""
 "If you are using the <meta name=\"referrer\" content=\"no-referrer\"> tag or "
 "including the “Referrer-Policy: no-referrer” header, please remove them. The "
 "CSRF protection requires the “Referer” header to do strict referer checking. "
-"If you’re concerned about privacy, use alternatives like <a rel=\"noreferrer"
-"\" …> for links to third-party sites."
+"If you’re concerned about privacy, use alternatives like <a "
+"rel=\"noreferrer\" …> for links to third-party sites."
 msgstr ""
 
 msgid ""
@@ -1157,7 +1215,7 @@ msgstr ""
 msgid "Index of %(directory)s"
 msgstr ""
 
-msgid "Django: the Web framework for perfectionists with deadlines."
+msgid "The install worked successfully! Congratulations!"
 msgstr ""
 
 #, python-format
@@ -1166,15 +1224,12 @@ msgid ""
 "target=\"_blank\" rel=\"noopener\">release notes</a> for Django %(version)s"
 msgstr ""
 
-msgid "The install worked successfully! Congratulations!"
-msgstr ""
-
 #, python-format
 msgid ""
 "You are seeing this page because <a href=\"https://docs.djangoproject.com/en/"
-"%(version)s/ref/settings/#debug\" target=\"_blank\" rel=\"noopener"
-"\">DEBUG=True</a> is in your settings file and you have not configured any "
-"URLs."
+"%(version)s/ref/settings/#debug\" target=\"_blank\" "
+"rel=\"noopener\">DEBUG=True</a> is in your settings file and you have not "
+"configured any URLs."
 msgstr ""
 
 msgid "Django Documentation"
Binary files 3:5.2.6-1/django/conf/locale/ko/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/ko/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/ko/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/ko/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/ko/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/ko/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -4,13 +4,14 @@
 # BJ Jang <qgis.tr.kr@gmail.com>, 2014
 # JunGu Kang <chr0m3.kr@gmail.com>, 2017
 # Jiyoon, Ha <cryptography@konkuk.ac.kr>, 2016
-# darjeeling <darjeeling@gmail.com>, 2024
+# KwonHan <darjeeling@gmail.com>, 2024
 # DONGHO JEONG <nearermg@gmail.com>, 2020
 # Park Hyunwoo <ez.amiryo@gmail.com>, 2017
 # Geonho Kim / Leo Kim <gh.leokim@gmail.com>, 2019
 # hoseung2 <ghyutjik123@gmail.com>, 2017
 # Ian Y. Choi <ianyrchoi@gmail.com>, 2015
 # Jaehong Kim <mixe@korea.com>, 2011
+# Jamie Seol, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Jay Oh <theanswer.jay@gmail.com>, 2020
 # Le Tartuffe <magno79@gmail.com>, 2014,2016
@@ -33,8 +34,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: 김영빈, 2025\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Jamie Seol, 2025\n"
 "Language-Team: Korean (http://app.transifex.com/django/django/language/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -701,6 +702,8 @@ msgstr "올바른 JSON 형식이여야 
 #, python-format
 msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
 msgstr ""
+"%(field)s 필드의 값이 %(value)r인 %(model)s 인스턴스는 유효한 선택이 아닙니"
+"다."
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "외래 키 (연관 필드에 의해 형식 결정)"
@@ -764,7 +767,7 @@ msgstr[0] "파일이름의 길이가 최
 
 msgid "Please either submit a file or check the clear checkbox, not both."
 msgstr ""
-"파일 업로드 또는 삭제 체크박스를 선택하세요. 동시에 둘 다 할 수는 없습니다."
+"파일 업로드 또는 비우기 체크박스를 선택하세요. 동시에 둘 다 할 수는 없습니다."
 
 msgid ""
 "Upload a valid image. The file you uploaded was either not an image or a "
@@ -859,7 +862,7 @@ msgstr ""
 "가 모호하거나 존재하지 않을 수 있습니다."
 
 msgid "Clear"
-msgstr "취소"
+msgstr "비우기"
 
 msgid "Currently"
 msgstr "현재"
@@ -1210,11 +1213,11 @@ msgid ""
 "If you’re concerned about privacy, use alternatives like <a "
 "rel=\"noreferrer\" …> for links to third-party sites."
 msgstr ""
-"<meta name=\"referrer\" content=\"no-referrer\">태그나  'Referrer-Policy: no-"
-"referrer' 헤더를 포함하고 있다면, 제거해주시기 바랍니다. CSRF 방지를 위한 리"
-"퍼러 검사를 위해 'Referer' 헤더가 필요합니다. 개인 정보에 대해 우려가 있는 경"
-"우, 서드 파티 사이트에 대한 링크에 <a rel=\"noreferrer\" …>와 같은 대안을 사"
-"용할 수 있습니다."
+"<meta name=\"referrer\" content=\"no-referrer\"> 태그나 \"Referrer-Policy: "
+"no-referrer\" 헤더를 포함하고 있다면, 삭제해주시기 바랍니다. CSRF 방지를 위"
+"한 리퍼러 검사를 위해 \"Referer\" 헤더가 필요합니다. 개인 정보에 대해 우려가 "
+"있는 경우, 서드 파티 사이트에 대한 링크에 <a rel=\"noreferrer\" …>와 같은 대"
+"안을 사용할 수 있습니다."
 
 msgid ""
 "You are seeing this message because this site requires a CSRF cookie when "
Binary files 3:5.2.6-1/django/conf/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/lv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # edgars <edgars.jekabsons@gmail.com>, 2011
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2023-2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2017,2022
@@ -18,8 +19,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Edgars Voroboks <edgars.voroboks@gmail.com>, 2023-2025\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
 "Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
@@ -315,7 +316,7 @@ msgid "Urdu"
 msgstr "urdu"
 
 msgid "Uzbek"
-msgstr "Uzbeku"
+msgstr "uzbeku"
 
 msgid "Vietnamese"
 msgstr "vjetnamiešu"
@@ -330,10 +331,10 @@ msgid "Messages"
 msgstr "Ziņojumi"
 
 msgid "Site Maps"
-msgstr "Lapas kartes"
+msgstr "Vietnes kartes"
 
 msgid "Static Files"
-msgstr "Statiski faili"
+msgstr "Nemainīgas datnes"
 
 msgid "Syndication"
 msgstr "Sindikācija"
@@ -344,46 +345,46 @@ msgid "…"
 msgstr "…"
 
 msgid "That page number is not an integer"
-msgstr "Lapas numurs nav cipars"
+msgstr "Lapas numurs nav vesels skaitlis"
 
 msgid "That page number is less than 1"
 msgstr "Lapas numurs ir mazāks par 1"
 
 msgid "That page contains no results"
-msgstr "Lapa nesatur rezultātu"
+msgstr "Tajā lapā nav nekāda iznākuma"
 
 msgid "Enter a valid value."
-msgstr "Ievadiet korektu vērtību."
+msgstr "Jāievada derīga vērtība."
 
 msgid "Enter a valid domain name."
-msgstr "Ievadiet derīgu domēna vārdu."
+msgstr "Jāievada derīgs domēna vārds."
 
 msgid "Enter a valid URL."
-msgstr "Ievadiet korektu URL adresi."
+msgstr "Jāievada derīgs URL."
 
 msgid "Enter a valid integer."
-msgstr "Ievadiet veselu skaitli."
+msgstr "Jāievada derīgs vesels skaitlis."
 
 msgid "Enter a valid email address."
-msgstr "Ievadiet korektu e-pasta adresi"
+msgstr "Jāievada derīga e-pasta adrese."
 
 #. Translators: "letters" means latin letters: a-z and A-Z.
 msgid ""
 "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
 msgstr ""
-"Ievadiet korektu \"identifikatora\" vērtību, kas satur tikai burtus, "
-"ciparus, apakšsvītras vai defises."
+"Jāievada derīga \"identifikatora\" vērtība, kas satur tikai burtus, ciparus, "
+"apakšsvītras vai defises."
 
 msgid ""
 "Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
 "hyphens."
 msgstr ""
-"Ievadiet korektu \"identifikatora\" vērtību, kas satur tikai Unikoda burtus, "
+"Jāievada derīga \"identifikatora\" vērtība, kas satur tikai Unikoda burtus, "
 "ciparus, apakšsvītras vai defises."
 
 #, python-format
 msgid "Enter a valid %(protocol)s address."
-msgstr "Ievadiet derīgu %(protocol)s adresi."
+msgstr "Jāievada derīga %(protocol)s adrese."
 
 msgid "IPv4"
 msgstr "IPv4"
@@ -395,11 +396,11 @@ msgid "IPv4 or IPv6"
 msgstr "IPv4 vai IPv6"
 
 msgid "Enter only digits separated by commas."
-msgstr "Ievadiet tikai numurus, atdalītus ar komatiem."
+msgstr "Jāievada tikai ar komatu atdalīti cipari."
 
 #, python-format
 msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Nodrošiniet, ka vērtība ir %(limit_value)s (tā satur %(show_value)s)."
+msgstr "Jānodrošina, ka vērtība ir %(limit_value)s (tā satur %(show_value)s)."
 
 #, python-format
 msgid "Ensure this value is less than or equal to %(limit_value)s."
@@ -418,8 +419,8 @@ msgid ""
 "Ensure this value is a multiple of step size %(limit_value)s, starting from "
 "%(offset)s, e.g. %(offset)s, %(valid_value1)s, %(valid_value2)s, and so on."
 msgstr ""
-"Pārliecinieties, ka šī vērtība ir soļa lieluma %(limit_value)s reizinājums, "
-"sākot no %(offset)s, piem. %(offset)s, %(valid_value1)s, %(valid_value2)s, "
+"Jāpārliecinās, ka šī vērtība ir soļa lieluma %(limit_value)s reizinājums, "
+"sākot no %(offset)s, piem., %(offset)s, %(valid_value1)s, %(valid_value2)s "
 "un tā tālāk."
 
 #, python-format
@@ -430,11 +431,14 @@ msgid_plural ""
 "Ensure this value has at least %(limit_value)d characters (it has "
 "%(show_value)d)."
 msgstr[0] ""
-"Vērtībai jābūt vismaz %(limit_value)d zīmēm (tai ir %(show_value)d)."
+"Jānodrošina, ka šajā vērtībā ir vismaz %(limit_value)d rakstzīmju (tajā ir "
+"%(show_value)d)."
 msgstr[1] ""
-"Vērtībai jābūt vismaz %(limit_value)d zīmei (tai ir %(show_value)d)."
+"Jānodrošina, ka šajā vērtībā ir vismaz %(limit_value)d rakstzīme (tajā ir "
+"%(show_value)d)."
 msgstr[2] ""
-"Vērtībai jābūt vismaz %(limit_value)d zīmēm (tai ir %(show_value)d)."
+"Jānodrošina, ka šajā vērtībā ir vismaz %(limit_value)d rakstzīmes (tajā ir "
+"%(show_value)d)."
 
 #, python-format
 msgid ""
@@ -444,21 +448,22 @@ msgid_plural ""
 "Ensure this value has at most %(limit_value)d characters (it has "
 "%(show_value)d)."
 msgstr[0] ""
-"Vērtībai jābūt ne vairāk kā %(limit_value)d zīmēm (tai ir %(show_value)d)."
+"Vērtībai jābūt ne vairāk kā %(limit_value)d zīmēm (tajā ir %(show_value)d)."
 msgstr[1] ""
-"Vērtībai jābūt ne vairāk kā %(limit_value)d zīmei (tai ir %(show_value)d)."
+"Vērtībai jābūt ne vairāk kā %(limit_value)d zīmei (tajā ir %(show_value)d)."
 msgstr[2] ""
-"Vērtībai jābūt ne vairāk kā %(limit_value)d zīmēm (tai ir %(show_value)d)."
+"Jānodrošina, ka šajā vērtībā ir ne vairāk kā %(limit_value)d rakstzīmes "
+"(tajā ir %(show_value)d)."
 
 msgid "Enter a number."
-msgstr "Ievadiet skaitli."
+msgstr "Jāievada skaitlis."
 
 #, python-format
 msgid "Ensure that there are no more than %(max)s digit in total."
 msgid_plural "Ensure that there are no more than %(max)s digits in total."
 msgstr[0] "Pārliecinieties, ka kopā nav vairāk par %(max)s ciparu."
 msgstr[1] "Pārliecinieties, ka kopā nav vairāk par %(max)s cipariem."
-msgstr[2] "Pārliecinieties, ka kopā nav vairāk par %(max)s cipariem."
+msgstr[2] "Jānodrošina, ka nav vairāk par %(max)s cipariem."
 
 #, python-format
 msgid "Ensure that there are no more than %(max)s decimal place."
@@ -467,8 +472,7 @@ msgstr[0] ""
 "Pārliecinieties, ka aiz decimālās zīmes nav vairāk par %(max)s ciparu."
 msgstr[1] ""
 "Pārliecinieties, ka aiz decimālās zīmes nav vairāk par %(max)s cipariem."
-msgstr[2] ""
-"Pārliecinieties, ka aiz decimālās zīmes nav vairāk par %(max)s cipariem."
+msgstr[2] "Jānodrošina, ka aiz komata nav vairāk par %(max)s cipariem."
 
 #, python-format
 msgid ""
@@ -479,15 +483,14 @@ msgstr[0] ""
 "Pārliecinieties, ka pirms decimālās zīmes nav vairāk par %(max)s ciparu."
 msgstr[1] ""
 "Pārliecinieties, ka pirms decimālās zīmes nav vairāk par %(max)s cipariem."
-msgstr[2] ""
-"Pārliecinieties, ka pirms decimālās zīmes nav vairāk par %(max)s cipariem."
+msgstr[2] "Jānodrošina, ka pirms komata nav vairāk par %(max)s cipariem."
 
 #, python-format
 msgid ""
 "File extension “%(extension)s” is not allowed. Allowed extensions are: "
 "%(allowed_extensions)s."
 msgstr ""
-"Faila paplašinājums “%(extension)s” nav atļauts. Atļautie paplašinājumi ir: "
+"Datnes paplašinājums “%(extension)s” nav atļauts. Atļautie paplašinājumi ir: "
 "%(allowed_extensions)s."
 
 msgid "Null characters are not allowed."
@@ -498,36 +501,37 @@ msgstr "un"
 
 #, python-format
 msgid "%(model_name)s with this %(field_labels)s already exists."
-msgstr "%(model_name)s ar šādu lauka %(field_labels)s vērtību jau eksistē."
+msgstr "Jau pastāv %(model_name)s ar šādu %(field_labels)s."
 
 #, python-format
 msgid "Constraint “%(name)s” is violated."
-msgstr "Ierobežojums “%(name)s” ir pārkāpts."
+msgstr "Nav ievērots ierobežojums “%(name)s”."
 
 #, python-format
 msgid "Value %(value)r is not a valid choice."
 msgstr "Vērtība %(value)r nav derīga izvēle."
 
 msgid "This field cannot be null."
-msgstr "Šis lauks nevar būt tukšs, null."
+msgstr "Šis lauks nevar būt ar tukšu vērtību (null)."
 
 msgid "This field cannot be blank."
 msgstr "Šis lauks nevar būt tukšs"
 
 #, python-format
 msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s ar šādu lauka %(field_label)s vērtību jau eksistē."
+msgstr "Jau pastāv %(model_name)s ar šādu %(field_label)s."
 
 #. Translators: The 'lookup_type' is one of 'date', 'year' or
 #. 'month'. Eg: "Title must be unique for pub_date year"
 #, python-format
 msgid ""
 "%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s."
-msgstr "%(field_label)s jābūt unikālam %(date_field_label)s %(lookup_type)s."
+msgstr ""
+"%(field_label)s jābūt neatkārtojamam %(date_field_label)s %(lookup_type)s."
 
 #, python-format
 msgid "Field of type: %(field_type)s"
-msgstr "Lauks ar tipu: %(field_type)s"
+msgstr "Lauks ar veidu: %(field_type)s"
 
 #, python-format
 msgid "“%(value)s” value must be either True or False."
@@ -542,10 +546,10 @@ msgstr "Boolean (vai nu True, vai False)
 
 #, python-format
 msgid "String (up to %(max_length)s)"
-msgstr "Simbolu virkne (līdz pat %(max_length)s)"
+msgstr "Virkne (līdz %(max_length)s)"
 
 msgid "String (unlimited)"
-msgstr "Simbolu virkne (neierobežota)"
+msgstr "Virkne (neierobežota)"
 
 msgid "Comma-separated integers"
 msgstr "Ar komatu atdalīti veselie skaitļi"
@@ -555,14 +559,14 @@ msgid ""
 "“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
 "format."
 msgstr ""
-"“%(value)s” vērtība ir nepareizā formātā. Tai ir jābūt YYYY-MM-DD formātā."
+"“%(value)s” vērtībā ir nederīgs datuma pieraksts. Tai ir jābūt YYYY-MM-DD."
 
 #, python-format
 msgid ""
 "“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
 "date."
 msgstr ""
-"“%(value)s” vērtība ir pareizā formātā (YYYY-MM-DD), bet tas nav derīgs "
+"“%(value)s” vērtībai ir pareizs pieraksts (YYYY-MM-DD), bet tas ir nederīgs "
 "datums."
 
 msgid "Date (without time)"
@@ -573,16 +577,16 @@ msgid ""
 "“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
 "uuuuuu]][TZ] format."
 msgstr ""
-"“%(value)s” vērtība ir nepareizā formātā. Tai ir jābūt YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] formātā."
+"“%(value)s” vērtībai ir nederīgs pieraksts. Tai ir jābūt YYYY-MM-DD HH:MM[:"
+"ss[.uuuuuu]][TZ]."
 
 #, python-format
 msgid ""
 "“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
 "[TZ]) but it is an invalid date/time."
 msgstr ""
-"“%(value)s” vērtība ir pareizā formātā (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), "
-"bet tas nav derīgs datums/laiks."
+"“%(value)s” vērtībai ir pareizs pieraksts (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
+"[TZ]), bet tas ir nederīgs datums/laiks."
 
 msgid "Date (with time)"
 msgstr "Datums (ar laiku)"
@@ -599,8 +603,8 @@ msgid ""
 "“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
 "uuuuuu] format."
 msgstr ""
-"“%(value)s” vērtība ir nepareizā formātā. Tai ir jābūt [DD] [[HH:]MM:]ss[."
-"uuuuuu] formātā."
+"“%(value)s” vērtībai ir nederīgs pieraksts. Tai ir jābūt [DD] [[HH:]MM:]ss[."
+"uuuuuu]."
 
 msgid "Duration"
 msgstr "Ilgums"
@@ -609,7 +613,7 @@ msgid "Email address"
 msgstr "E-pasta adrese"
 
 msgid "File path"
-msgstr "Faila ceļš"
+msgstr "Datnes ceļš"
 
 #, python-format
 msgid "“%(value)s” value must be a float."
@@ -648,7 +652,7 @@ msgid "Positive big integer"
 msgstr "Liels pozitīvs vesels skaitlis"
 
 msgid "Positive integer"
-msgstr "Naturāls skaitlis"
+msgstr "Pozitīvs vesels skaitlis"
 
 msgid "Positive small integer"
 msgstr "Mazs pozitīvs vesels skaitlis"
@@ -665,16 +669,16 @@ msgid ""
 "“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
 "format."
 msgstr ""
-"“%(value)s” vērtība ir nepareizā formātā. Tai ir jābūt HH:MM[:ss[.uuuuuu]] "
-"formātā."
+"“%(value)s” vērtībai ir nepareizs pieraksts. Tai ir jābūt HH:MM[:ss[."
+"uuuuuu]]."
 
 #, python-format
 msgid ""
 "“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
 "invalid time."
 msgstr ""
-"“%(value)s” vērtība ir pareizā formātā (HH:MM[:ss[.uuuuuu]]), bet tas nav "
-"derīgs laiks."
+"“%(value)s” vērtībai ir pareizs pieraksts (HH:MM[:ss[.uuuuuu]]), bet tas ir "
+"nederīgs laiks."
 
 msgid "Time"
 msgstr "Laiks"
@@ -690,10 +694,10 @@ msgid "“%(value)s” is not a valid UU
 msgstr "“%(value)s” nav derīgs UUID."
 
 msgid "Universally unique identifier"
-msgstr "Universāli unikāls identifikators"
+msgstr "Vispārēji neatkārtojams identifikators"
 
 msgid "File"
-msgstr "Fails"
+msgstr "Datne"
 
 msgid "Image"
 msgstr "Attēls"
@@ -709,21 +713,21 @@ msgid "%(model)s instance with %(field)s
 msgstr "%(model)s instance ar %(field)s %(value)r nav derīga izvēle."
 
 msgid "Foreign Key (type determined by related field)"
-msgstr "Ārējā atslēga (tipu nosaka lauks uz kuru attiecas)"
+msgstr "Ārējā atslēga (veidu nosaka pēc saistītā lauka)"
 
 msgid "One-to-one relationship"
-msgstr "Attiecība viens pret vienu"
+msgstr "Viens pret vienu saikne"
 
 #, python-format
 msgid "%(from)s-%(to)s relationship"
-msgstr "%(from)s-%(to)s attiecība"
+msgstr "%(from)s-%(to)s saikne"
 
 #, python-format
 msgid "%(from)s-%(to)s relationships"
-msgstr "%(from)s-%(to)s attiecības"
+msgstr "%(from)s-%(to)s saiknes"
 
 msgid "Many-to-many relationship"
-msgstr "Attiecība daudzi pret daudziem"
+msgstr "Daudzi pret daudziem saikne"
 
 #. Translators: If found as last label character, these punctuation
 #. characters will prevent the default label_suffix to be appended to the
@@ -732,73 +736,77 @@ msgid ":?.!"
 msgstr ":?.!"
 
 msgid "This field is required."
-msgstr "Šis lauks ir obligāts."
+msgstr "Šis lauks ir nepieciešams."
 
 msgid "Enter a whole number."
-msgstr "Ievadiet veselu skaitli."
+msgstr "Jāievada vesels skaitlis."
 
 msgid "Enter a valid date."
-msgstr "Ievadiet korektu datumu."
+msgstr "Jāievada derīgs datums."
 
 msgid "Enter a valid time."
-msgstr "Ievadiet korektu laiku."
+msgstr "Jāievada derīgs laiks."
 
 msgid "Enter a valid date/time."
-msgstr "Ievadiet korektu datumu/laiku."
+msgstr "Jāievada derīgs datums/laiks."
 
 msgid "Enter a valid duration."
-msgstr "Ievadiet korektu ilgumu."
+msgstr "Jāievada derīgs ilgums."
 
 #, python-brace-format
 msgid "The number of days must be between {min_days} and {max_days}."
 msgstr "Dienu skaitam jābūt no {min_days} līdz {max_days}."
 
 msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nav nosūtīts fails. Pārbaudiet formas kodējuma tipu."
+msgstr "Netika iesniegta neviena datne. Jāpārbauda veidlapas šifrēšanas veids."
 
 msgid "No file was submitted."
-msgstr "Netika nosūtīts fails."
+msgstr "Netika nosūtīta neviena datne."
 
 msgid "The submitted file is empty."
-msgstr "Jūsu nosūtītais fails ir tukšs."
+msgstr "Iesniegtā datne ir tukša."
 
 #, python-format
 msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
 msgid_plural ""
 "Ensure this filename has at most %(max)d characters (it has %(length)d)."
 msgstr[0] ""
-"Faila nosaukuma garumam jābūt ne vairāk kā %(max)d zīmēm (tas ir %(length)d)."
+"Jānodrošina, ka datnes nosaukums nav garāks par %(max)d rakstzīmēm (tajā ir "
+"%(length)d)."
 msgstr[1] ""
-"Faila nosaukuma garumam jābūt ne vairāk kā %(max)d zīmei (tas ir %(length)d)."
+"Jānodrošina, ka datnes nosaukums nav garāks par %(max)d rakstzīmi (tajā ir "
+"%(length)d)."
 msgstr[2] ""
-"Faila nosaukuma garumam jābūt ne vairāk kā %(max)d zīmēm (tas ir %(length)d)."
+"Jānodrošina, ka datnes nosaukums nav garāks par %(max)d rakstzīmēm (tajā ir "
+"%(length)d)."
 
 msgid "Please either submit a file or check the clear checkbox, not both."
 msgstr ""
-"Vai nu iesniedziet failu, vai atzīmējiet tukšo izvēles rūtiņu, bet ne abus."
+"Lūgums vai nu iesniegt datni, vai atzīmēt iztīrīšanas izvēles rūtiņu, ne "
+"abus."
 
 msgid ""
 "Upload a valid image. The file you uploaded was either not an image or a "
 "corrupted image."
 msgstr ""
-"Augšupielādējiet korektu attēlu. Fails, ko augšupielādējāt, vai nu nav "
-"attēls, vai arī ir bojāts."
+"Jāaugšupielādē derīgs attēls. Augšupielādētā datne vai nu nav attēls, vai "
+"arī tas ir bojāts."
 
 #, python-format
 msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Izvēlieties korektu izvēli. %(value)s nav pieejamo izvēļu sarakstā."
+msgstr "Jāatlasa derīga izvēle. %(value)s nav neviena no pieejamajām izvēlēm."
 
 msgid "Enter a list of values."
-msgstr "Ievadiet sarakstu ar vērtībām."
+msgstr "Jāievada vērtību saraksts."
 
 msgid "Enter a complete value."
-msgstr "Ievadiet pilnu vērtību."
+msgstr "Jāievada pilnīga vērtība."
 
 msgid "Enter a valid UUID."
-msgstr "Ievadiet derīgu UUID."
+msgstr "Jāievada derīgs UUID."
 
 msgid "Enter a valid JSON."
-msgstr "Ievadiet korektu JSON."
+msgstr "Jāievada derīgs JSON."
 
 #. Translators: This is the default suffix added to form field labels
 msgid ":"
@@ -814,53 +822,55 @@ msgid ""
 "%(field_names)s. You may need to file a bug report if the issue persists."
 msgstr ""
 "ManagementForm trūkst datu vai tie ir mainīti. Trūkstošie lauki: "
-"%(field_names)s. Paziņojiet par kļūdu, ja problēma atkārtojas."
+"%(field_names)s. Var būt nepieciešams ziņot par kļūdu, ja sarežģījums "
+"atkārtojas."
 
 #, python-format
 msgid "Please submit at most %(num)d form."
 msgid_plural "Please submit at most %(num)d forms."
-msgstr[0] "Lūdzu iesniedziet ne vairāk par %(num)d formām."
-msgstr[1] "Lūdzu iesniedziet ne vairāk par %(num)d formu."
-msgstr[2] "Lūdzu iesniedziet ne vairāk par %(num)d formām."
+msgstr[0] "Lūgums iesniegt ne vairāk par %(num)d veidlapām."
+msgstr[1] "Lūgums iesniegt ne vairāk par %(num)d veidlapu."
+msgstr[2] "Lūgums iesniegt ne vairāk par %(num)d veidlapām."
 
 #, python-format
 msgid "Please submit at least %(num)d form."
 msgid_plural "Please submit at least %(num)d forms."
-msgstr[0] "Lūdzu iesniedziet vismaz %(num)d formas."
-msgstr[1] "Lūdzu iesniedziet vismaz %(num)d formu."
-msgstr[2] "Lūdzu iesniedziet vismaz %(num)d formas."
+msgstr[0] "Lūgums iesniegt vismaz %(num)d veidlapas."
+msgstr[1] "Lūgums iesniegt vismaz %(num)d veidlapu."
+msgstr[2] "Lūgums iesniegt vismaz %(num)d veidlapas."
 
 msgid "Order"
 msgstr "Kārtība"
 
 msgid "Delete"
-msgstr "Dzēst"
+msgstr "Izdzēst"
 
 #, python-format
 msgid "Please correct the duplicate data for %(field)s."
-msgstr "Lūdzu izlabojiet dublicētos datus priekš %(field)s."
+msgstr "Lūgums izlabot atkārtojošos %(field)s datus."
 
 #, python-format
 msgid "Please correct the duplicate data for %(field)s, which must be unique."
 msgstr ""
-"Lūdzu izlabojiet dublicētos datus laukam %(field)s, kam jābūt unikālam."
+"Lūgums izlabot atkārtojošos datus laukam “%(field)s”, kam jābūt "
+"neatkārtojamam."
 
 #, python-format
 msgid ""
 "Please correct the duplicate data for %(field_name)s which must be unique "
 "for the %(lookup)s in %(date_field)s."
 msgstr ""
-"Lūdzu izlabojiet dublicētos datus laukam %(field_name)s, kam jābūt unikālam "
-"priekš %(lookup)s iekš %(date_field)s."
+"Lūgums izlabot atkārtojošos datus laukam “%(field_name)s”, kam jābūt "
+"neatkārtojamam priekš %(lookup)s laukā “%(date_field)s”."
 
 msgid "Please correct the duplicate values below."
-msgstr "Lūdzu izlabojiet dublicētās vērtības zemāk."
+msgstr "Lūgums zemāk izlabot atkārtojošās vērtības."
 
 msgid "The inline value did not match the parent instance."
 msgstr "Iekļautā vērtība nesakrita ar vecāka instanci."
 
 msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izvēlieties pareizu izvēli. Jūsu izvēle neietilpst pieejamo sarakstā."
+msgstr "Jāatlasa derīga izvēle. Tā izvēle nav neviena no pieejamajām."
 
 #, python-format
 msgid "“%(pk)s” is not a valid value."
@@ -871,8 +881,8 @@ msgid ""
 "%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it "
 "may be ambiguous or it may not exist."
 msgstr ""
-"%(datetime)s vērtība nevar tikt attēlota %(current_timezone)s laika zonā; tā "
-"var būt neskaidra vai neeksistē."
+"%(datetime)s nevarēja attēlot laika joslā %(current_timezone)s; tā var būt "
+"neskaidra vai nepastāv."
 
 msgid "Clear"
 msgstr "Notīrīt"
@@ -899,9 +909,9 @@ msgstr "jā,nē,varbūt"
 #, python-format
 msgid "%(size)d byte"
 msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d baits"
-msgstr[1] "%(size)d baiti"
-msgstr[2] "%(size)d baitu"
+msgstr[0] "%(size)d baitu"
+msgstr[1] "%(size)d baits"
+msgstr[2] "%(size)d baiti"
 
 #, python-format
 msgid "%s KB"
@@ -924,16 +934,16 @@ msgid "%s PB"
 msgstr "%s PB"
 
 msgid "p.m."
-msgstr "p.m."
+msgstr "pēcpusdienā"
 
 msgid "a.m."
-msgstr "a.m."
+msgstr "priekšpusdienā"
 
 msgid "PM"
-msgstr "PM"
+msgstr "pēcpusdienā"
 
 msgid "AM"
-msgstr "AM"
+msgstr "priekšpusdienā"
 
 msgid "midnight"
 msgstr "pusnakts"
@@ -1169,42 +1179,42 @@ msgstr ", "
 #, python-format
 msgid "%(num)d year"
 msgid_plural "%(num)d years"
-msgstr[0] "%(num)d gadi"
+msgstr[0] "%(num)d gadu"
 msgstr[1] "%(num)d gads"
 msgstr[2] "%(num)d gadi"
 
 #, python-format
 msgid "%(num)d month"
 msgid_plural "%(num)d months"
-msgstr[0] "%(num)d mēneši"
+msgstr[0] "%(num)d mēnešu"
 msgstr[1] "%(num)d mēnesis"
 msgstr[2] "%(num)d mēneši"
 
 #, python-format
 msgid "%(num)d week"
 msgid_plural "%(num)d weeks"
-msgstr[0] "%(num)d nedēļas"
+msgstr[0] "%(num)d nedēļu"
 msgstr[1] "%(num)d nedēļa"
 msgstr[2] "%(num)d nedēļas"
 
 #, python-format
 msgid "%(num)d day"
 msgid_plural "%(num)d days"
-msgstr[0] "%(num)d dienas"
+msgstr[0] "%(num)d dienu"
 msgstr[1] "%(num)d diena"
 msgstr[2] "%(num)d dienas"
 
 #, python-format
 msgid "%(num)d hour"
 msgid_plural "%(num)d hours"
-msgstr[0] "%(num)d stundas"
+msgstr[0] "%(num)d stundu"
 msgstr[1] "%(num)d stunda"
-msgstr[2] "%(num)d stubdas"
+msgstr[2] "%(num)d stundas"
 
 #, python-format
 msgid "%(num)d minute"
 msgid_plural "%(num)d minutes"
-msgstr[0] "%(num)d minūtes"
+msgstr[0] "%(num)d minūšu"
 msgstr[1] "%(num)d minūte"
 msgstr[2] "%(num)d minūtes"
 
@@ -1220,19 +1230,18 @@ msgid ""
 "required for security reasons, to ensure that your browser is not being "
 "hijacked by third parties."
 msgstr ""
-"Jūs redzat šo paziņojumu, jo jūsu pārlūkprogrammai ir jānosūta “Referer "
-"header” šai HTTPS vietnei, taču tā netika nosūtīta. Šī galvene ir "
-"nepieciešama drošības apsvērumu dēļ, lai pārliecinātos, ka jūsu "
-"pārlūkprogrammas komunikācijas datus nepārtver trešās puses."
+"Tu redzi šo ziņojumu, jo šī HTTPS vietne pieprasa pārlūkam nosūtīt \"Referer "
+"header\", bet tā netika nosūtīta. Šī galvene ir nepieciešama drošības "
+"apsvērumu dēļ, lai nodrošinātu, ka pārlūku neietekmē trešās puses."
 
 msgid ""
 "If you have configured your browser to disable “Referer” headers, please re-"
 "enable them, at least for this site, or for HTTPS connections, or for “same-"
 "origin” requests."
 msgstr ""
-"Ja esat konfigurējis savu pārlūkprogrammu, lai atspējotu “Referer” headerus, "
-"lūdzu, atkārtoti iespējojiet tos vismaz šai vietnei, HTTPS savienojumiem vai "
-"“same-origin” pieprasījumiem."
+"Ja pārlūks ir konfigurēts, lai atspējotu “Referer” galvenes, lūgums tās "
+"iespējot no jauna vismaz šai vietnei, HTTPS savienojumiem vai “same-origin” "
+"pieprasījumiem."
 
 msgid ""
 "If you are using the <meta name=\"referrer\" content=\"no-referrer\"> tag or "
@@ -1241,38 +1250,36 @@ msgid ""
 "If you’re concerned about privacy, use alternatives like <a "
 "rel=\"noreferrer\" …> for links to third-party sites."
 msgstr ""
-"Ja jūs izmantojat <meta name=\"referrer\" content=\"no-referrer\"> tagu vai "
-"iekļaujat “Referrer-Policy: no-referrer” headeri, lūdzu noņemiet tos. CSRF "
-"aizsardzībai ir nepieciešams, lai “Referer” headerī tiktu veikta strikta "
-"pārvirzītāja pārbaude. Ja jūs domājat par privātumu, tad izmantojiet tādas "
-"alternatīvas kā <a rel=\"noreferrer\" …> priekš saitēm uz trešo pušu vietnēm."
+"Ja izmanto <meta name=\"referrer\" content=\"no-referrer\"> tagu vai iekļauj "
+"galveni “Referrer-Policy: no-referrer”, lūgums noņemt tos. CSRF aizsardzībai "
+"ir nepieciešams, lai galvenē “Referer” tiktu veikta stingra norvirzītāja "
+"pārbaude. Ja raizējies par privātumu, tad jāizmanto tādas iespējas kā <a "
+"rel=\"noreferrer\" …> saitēm, kas ved uz trešo pušu vietnēm."
 
 msgid ""
 "You are seeing this message because this site requires a CSRF cookie when "
 "submitting forms. This cookie is required for security reasons, to ensure "
 "that your browser is not being hijacked by third parties."
 msgstr ""
-"Jūs redzat šo ziņojumu, jo, iesniedzot veidlapas, šai vietnei ir "
-"nepieciešams CSRF sīkfails. Šis sīkfails ir vajadzīgs drošības apsvērumu "
-"dēļ, lai pārliecinātos, ka trešās personas nepārņems kontroli pār jūsu "
-"pārlūkprogrammu."
+"Tu redzi šo ziņojumu, jo šī vietne pieprasa CSRF sīkdatni, kad tiek "
+"iesniegtas veidlapas. Šī sīkdatne ir nepieciešama drošības apsvērumu dēļ, "
+"lai nodrošinātu, ka pārlūku neietekmē trešās puses."
 
 msgid ""
 "If you have configured your browser to disable cookies, please re-enable "
 "them, at least for this site, or for “same-origin” requests."
 msgstr ""
-"Ja esat konfigurējis pārlūkprogrammu, lai atspējotu sīkdatnes, lūdzu, "
-"atkārtoti iespējojiet tās vismaz šai vietnei vai “same-origin” "
-"pieprasījumiem."
+"Ja pārlūks ir konfigurēts, lai atspējotu sīkdatnes, lūgums tās iespējot "
+"vismaz šai vietnei vai “same-origin” pieprasījumiem."
 
 msgid "More information is available with DEBUG=True."
-msgstr "Vairāk informācijas ir pieejams ar DEBUG=True"
+msgstr "Vairāk informācijas ir pieejama ar DEBUG=True"
 
 msgid "No year specified"
 msgstr "Nav norādīts gads"
 
 msgid "Date out of range"
-msgstr "Datums ir ārpus diapazona"
+msgstr "Datums ir ārpus apgabala"
 
 msgid "No month specified"
 msgstr "Nav norādīts mēnesis"
@@ -1297,18 +1304,19 @@ msgstr ""
 
 #, python-format
 msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr "Nepareiza datuma rinda “%(datestr)s” norādītajā formātā “%(format)s”"
+msgstr ""
+"Nepareiza datuma virkne “%(datestr)s” norādītajā pierakstā “%(format)s”"
 
 #, python-format
 msgid "No %(verbose_name)s found matching the query"
 msgstr "Neviens %(verbose_name)s netika atrasts"
 
 msgid "Page is not “last”, nor can it be converted to an int."
-msgstr "Lapa nav “pēdējā”, kā arī tā nevar tikt konvertēta par ciparu."
+msgstr "Lapa nav ne “pēdējā”, ne arī to var pārveidot par veselu skaitli."
 
 #, python-format
 msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Nepareiza lapa (%(page_number)s): %(message)s"
+msgstr "Nederīga lapa (%(page_number)s): %(message)s"
 
 #, python-format
 msgid "Empty list and “%(class_name)s.allow_empty” is False."
@@ -1319,14 +1327,14 @@ msgstr "Direktoriju indeksi nav atļauti
 
 #, python-format
 msgid "“%(path)s” does not exist"
-msgstr "\"%(path)s\" neeksistē"
+msgstr "\"%(path)s\" nepastāv"
 
 #, python-format
 msgid "Index of %(directory)s"
 msgstr "%(directory)s saturs"
 
 msgid "The install worked successfully! Congratulations!"
-msgstr "Instalācija veiksmīga! Apsveicam!"
+msgstr "Uzstādīšana darbojās sekmīgi. Apsveicam!"
 
 #, python-format
 msgid ""
@@ -1343,25 +1351,24 @@ msgid ""
 "rel=\"noopener\">DEBUG=True</a> is in your settings file and you have not "
 "configured any URLs."
 msgstr ""
-"Jūs redziet šo lapu, jo <a href=\"https://docs.djangoproject.com/en/"
-"%(version)s/ref/settings/#debug\" target=\"_blank\" "
-"rel=\"noopener\">DEBUG=True</a> ir iestatījumu failā un Jūs neesiet "
-"konfigurējis nevienu saiti."
+"Tu redzi šo lapu, jo iestatījumu datnē ir <a href=\"https://docs."
+"djangoproject.com/en/%(version)s/ref/settings/#debug\" target=\"_blank\" "
+"rel=\"noopener\">DEBUG=True</a> un nav konfigurēts neviens URL."
 
 msgid "Django Documentation"
-msgstr "Django Dokumentācija"
+msgstr "Django dokumentācija"
 
 msgid "Topics, references, &amp; how-to’s"
-msgstr "Tēmas, atsauces, &amp; how-to"
+msgstr "Tēmas, atsauces un padomi"
 
 msgid "Tutorial: A Polling App"
-msgstr "Apmācība: Balsošanas aplikācija"
+msgstr "Pamācība: balsošanas lietotne"
 
 msgid "Get started with Django"
-msgstr "Sāciet ar Django"
+msgstr "Uzsākt ar Django"
 
 msgid "Django Community"
-msgstr "Django Komūna"
+msgstr "Django kopiena"
 
 msgid "Connect, get help, or contribute"
-msgstr "Sazinieties, saņemiet palīdzību vai sniedziet ieguldījumu"
+msgstr "Sazinies, saņem palīdzību vai līdzdarbojies"
Binary files 3:5.2.6-1/django/conf/locale/pt/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/pt/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/pt/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/pt/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/pt/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/pt/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -16,7 +16,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
 "Last-Translator: Manuela Silva <mmsrs@sky.com>, 2025\n"
 "Language-Team: Portuguese (http://app.transifex.com/django/django/language/"
 "pt/)\n"
@@ -477,6 +477,8 @@ msgid ""
 "File extension “%(extension)s” is not allowed. Allowed extensions are: "
 "%(allowed_extensions)s."
 msgstr ""
+"A extensão de ficheiro “%(extension)s” não é permitida. As extensões "
+"permitidas são: %(allowed_extensions)s."
 
 msgid "Null characters are not allowed."
 msgstr "Não são permitidos caracteres nulos."
@@ -520,11 +522,11 @@ msgstr "Campo do tipo: %(field_type)s"
 
 #, python-format
 msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "Valor “%(value)s” dever ser Verdadeiro ou Falso."
 
 #, python-format
 msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "Valor “%(value)s” dever ser Verdadeiro ou Falso."
 
 msgid "Boolean (Either True or False)"
 msgstr "Boolean (Pode ser True ou False)"
@@ -534,7 +536,7 @@ msgid "String (up to %(max_length)s)"
 msgstr "String (até %(max_length)s)"
 
 msgid "String (unlimited)"
-msgstr ""
+msgstr "String (ilimitado)"
 
 msgid "Comma-separated integers"
 msgstr "Inteiros separados por virgula"
@@ -544,12 +546,16 @@ msgid ""
 "“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
 "format."
 msgstr ""
+"Valor “%(value)s” tem um formato de data errado. Este deve ter o formato "
+"AAAA-MM-DD."
 
 #, python-format
 msgid ""
 "“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
 "date."
 msgstr ""
+"Valor \"%(value)s\" tem o formato correto AAAA-MM-DD mas tem uma data "
+"inválida."
 
 msgid "Date (without time)"
 msgstr "Data (sem hora)"
@@ -559,12 +565,16 @@ msgid ""
 "“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
 "uuuuuu]][TZ] format."
 msgstr ""
+"Valor “%(value)s” tem um formato inválido. Este deve ter o formato AAAA-MM-"
+"DD HH:MM[:ss[.uuuuuu]][TZ]."
 
 #, python-format
 msgid ""
 "“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
 "[TZ]) but it is an invalid date/time."
 msgstr ""
+"Valor “%(value)s” tem o formato correto (AAAA-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) "
+"mas tem uma data/hora inválida."
 
 msgid "Date (with time)"
 msgstr "Data (com hora)"
Binary files 3:5.2.6-1/django/conf/locale/ru/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/ru/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/ru/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/ru/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/ru/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/ru/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -19,16 +19,16 @@
 # Panasoft, 2021
 # Вася Аникин <anikin.vasya@gmail.com>, 2017
 # SeryiMysh <vital@dorokhin.kz>, 2020
-# Алексей Борискин <sun.void@gmail.com>, 2013-2017,2019-2020,2022-2024
+# Алексей Борискин <sun.void@gmail.com>, 2013-2017,2019-2020,2022-2025
 # Bobsans <mr.bobsans@gmail.com>, 2016,2018
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 06:49+0000\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
 "Last-Translator: Алексей Борискин <sun.void@gmail.com>, "
-"2013-2017,2019-2020,2022-2024\n"
+"2013-2017,2019-2020,2022-2025\n"
 "Language-Team: Russian (http://app.transifex.com/django/django/language/"
 "ru/)\n"
 "MIME-Version: 1.0\n"
@@ -729,10 +729,10 @@ msgid "Value must be valid JSON."
 msgstr "Значение должно быть корректным JSON-ом."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
 msgstr ""
-"Объект модели %(model)s со значением поля %(field)s, равным %(value)r, не "
-"существует."
+"Значение \"%(value)r\" не является допустимым для поля \"%(field)s\" объекта "
+"типа %(model)s"
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "Внешний Ключ (тип определен по связанному полю)"
Binary files 3:5.2.6-1/django/conf/locale/sv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/sv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/sv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/sv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/sv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/sv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -9,24 +9,29 @@
 # Elias Johnstone <eli87as@gmail.com>, 2022
 # Gustaf Hansen <gustaf.hansen@gmail.com>, 2015
 # Jannis Leidel <jannis@leidel.info>, 2011
+# Jonathan Lindén, 2014-2015
 # Jonathan Lindén, 2015
 # Jörgen Olofsson, 2024
+# Jörgen Olofsson, 2024
+# Ken Lewerentz, 2022
 # Ken Lewerentz, 2022
 # Jonathan Lindén, 2014
+# Mattias Benjaminsson <mattias@colourandcode.se>, 2011
 # Mattias Hansson <mattias.gothenburg@gmail.com>, 2016
 # Mattias Benjaminsson <mattias@colourandcode.se>, 2011
 # Petter Strandmark <petter.strandmark@gmail.com>, 2019
 # Rasmus Précenth <prillan91@gmail.com>, 2014
 # Samuel Linde <samuel@linde.im>, 2011
 # Thomas Lundqvist, 2013,2016
+# Thomas Lundqvist, 2013,2016
 # Tomas Lööw <tomas.loow@mailbox.org>, 2021
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 06:49+0000\n"
-"Last-Translator: Jörgen Olofsson, 2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Tomas Lööw <tomas.loow@mailbox.org>, 2021\n"
 "Language-Team: Swedish (http://app.transifex.com/django/django/language/"
 "sv/)\n"
 "MIME-Version: 1.0\n"
@@ -347,7 +352,7 @@ msgstr "Syndikering"
 #. Translators: String used to replace omitted page numbers in elided page
 #. range generated by paginators, e.g. [1, 2, '…', 5, 6, 7, '…', 9, 10].
 msgid "…"
-msgstr "..."
+msgstr "…"
 
 msgid "That page number is not an integer"
 msgstr "Sidnumret är inte ett heltal"
@@ -430,7 +435,7 @@ msgid ""
 msgstr ""
 "Kontrollera att detta värde är en multipel med stegstorlek %(limit_value)s, "
 "med början från %(offset)s, t ex. %(offset)s, %(valid_value1)s, "
-"%(valid_value2)s och så vidare"
+"%(valid_value2)s och så vidare."
 
 #, python-format
 msgid ""
@@ -710,8 +715,8 @@ msgid "Value must be valid JSON."
 msgstr "Värdet måste vara giltig JSON."
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "Modell %(model)s med %(field)s %(value)r finns inte."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr "%(model)s instans med %(field)s %(value)r är inte ett giltigt val."
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "Främmande nyckel (typ bestäms av relaterat fält)"
@@ -778,8 +783,7 @@ msgstr[1] ""
 
 msgid "Please either submit a file or check the clear checkbox, not both."
 msgstr ""
-"Var vänlig antingen skicka en fil eller markera kryssrutan för att rensa, "
-"inte både och. "
+"Antingen skicka en fil eller markera kryssrutan för att rensa, inte både och."
 
 msgid ""
 "Upload a valid image. The file you uploaded was either not an image or a "
@@ -825,14 +829,14 @@ msgstr ""
 #, python-format
 msgid "Please submit at most %(num)d form."
 msgid_plural "Please submit at most %(num)d forms."
-msgstr[0] "Vänligen skicka som mest %(num)d formulär."
-msgstr[1] "Vänligen skicka som mest %(num)d formulär."
+msgstr[0] "Skicka som mest %(num)d formulär."
+msgstr[1] "Skicka som mest %(num)d formulär."
 
 #, python-format
 msgid "Please submit at least %(num)d form."
 msgid_plural "Please submit at least %(num)d forms."
-msgstr[0] "Vänligen skicka minst %(num)d formulär."
-msgstr[1] "Vänligen skicka minst %(num)d formulär."
+msgstr[0] "Skicka minst %(num)d formulär."
+msgstr[1] "Skicka minst %(num)d formulär."
 
 msgid "Order"
 msgstr "Sortering"
@@ -842,22 +846,22 @@ msgstr "Radera"
 
 #, python-format
 msgid "Please correct the duplicate data for %(field)s."
-msgstr "Var vänlig korrigera duplikatdata för %(field)s."
+msgstr "Korrigera duplikatdata för %(field)s."
 
 #, python-format
 msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Var vänlig korrigera duplikatdata för %(field)s, som måste vara unik."
+msgstr "Korrigera duplikatdata för %(field)s, som måste vara unik."
 
 #, python-format
 msgid ""
 "Please correct the duplicate data for %(field_name)s which must be unique "
 "for the %(lookup)s in %(date_field)s."
 msgstr ""
-"Var vänlig korrigera duplikatdata för %(field_name)s som måste vara unik för "
-"%(lookup)s i %(date_field)s."
+"Korrigera duplikatdata för %(field_name)s som måste vara unik för %(lookup)s "
+"i %(date_field)s."
 
 msgid "Please correct the duplicate values below."
-msgstr "Vänligen korrigera duplikatvärdena nedan."
+msgstr "Korrigera duplikatvärdena nedan."
 
 msgid "The inline value did not match the parent instance."
 msgstr "Värdet för InlineForeignKeyField motsvarade inte dess motpart."
@@ -1227,8 +1231,8 @@ msgid ""
 "enable them, at least for this site, or for HTTPS connections, or for “same-"
 "origin” requests."
 msgstr ""
-"Om 'Referer' headers är inaktiverade i din webbläsare, vänligen återaktivera "
-"dem, åtminstone för denna sida, eller för HTTPS-anslutningar eller för 'same-"
+"Om 'Referer' headers är inaktiverade i din webbläsare, återaktivera dem, "
+"åtminstone för denna sida, eller för HTTPS-anslutningar eller för 'same-"
 "origin'-förfrågningar."
 
 msgid ""
@@ -1257,8 +1261,8 @@ msgid ""
 "If you have configured your browser to disable cookies, please re-enable "
 "them, at least for this site, or for “same-origin” requests."
 msgstr ""
-"Om cookies är inaktiverade i din webbläsare, vänligen återaktivera dem, "
-"åtminstone för denna sida eller för “same-origin”-förfrågningar."
+"Om cookies är inaktiverade i din webbläsare, återaktivera dem, åtminstone "
+"för denna sida eller för “same-origin”-förfrågningar."
 
 msgid "More information is available with DEBUG=True."
 msgstr "Mer information är tillgänglig med DEBUG=True."
Binary files 3:5.2.6-1/django/conf/locale/ug/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/ug/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/ug/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/ug/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/ug/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/ug/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -12,7 +12,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2013-04-25 06:49+0000\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
 "Last-Translator: Natalia, 2025\n"
 "Language-Team: Uyghur (http://app.transifex.com/django/django/language/ug/)\n"
 "MIME-Version: 1.0\n"
@@ -887,7 +887,7 @@ msgstr "ياق"
 
 #. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "ھەئە، ياق، بەلكىىم"
+msgstr "ھەئە, ياق, بەلكىىم"
 
 #, python-format
 msgid "%(size)d byte"
Binary files 3:5.2.6-1/django/conf/locale/ur/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/ur/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/ur/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/ur/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/ur/LC_MESSAGES/django.po	2025-04-01 14:58:54.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/ur/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,15 +1,16 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
-# Mansoorulhaq Mansoor <mnsrknp@gmail.com>, 2011
+# Mansoor Ul Haq <mnsrknp@gmail.com>, 2011
+# Natalia, 2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-09-27 22:40+0200\n"
-"PO-Revision-Date: 2019-11-05 00:38+0000\n"
-"Last-Translator: Ramiro Morales\n"
-"Language-Team: Urdu (http://www.transifex.com/django/django/language/ur/)\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Natalia, 2025\n"
+"Language-Team: Urdu (http://app.transifex.com/django/django/language/ur/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -22,6 +23,9 @@ msgstr ""
 msgid "Arabic"
 msgstr "عربی"
 
+msgid "Algerian Arabic"
+msgstr ""
+
 msgid "Asturian"
 msgstr ""
 
@@ -46,6 +50,9 @@ msgstr "بوسنیائی"
 msgid "Catalan"
 msgstr "کیٹالانی"
 
+msgid "Central Kurdish (Sorani)"
+msgstr ""
+
 msgid "Czech"
 msgstr "زیچ"
 
@@ -145,6 +152,9 @@ msgstr ""
 msgid "Indonesian"
 msgstr "انڈونیشین"
 
+msgid "Igbo"
+msgstr ""
+
 msgid "Ido"
 msgstr ""
 
@@ -175,6 +185,9 @@ msgstr "کناڈا"
 msgid "Korean"
 msgstr "کوریائی"
 
+msgid "Kyrgyz"
+msgstr ""
+
 msgid "Luxembourgish"
 msgstr ""
 
@@ -196,6 +209,9 @@ msgstr "منگولین"
 msgid "Marathi"
 msgstr ""
 
+msgid "Malay"
+msgstr ""
+
 msgid "Burmese"
 msgstr ""
 
@@ -259,9 +275,15 @@ msgstr "تاملی"
 msgid "Telugu"
 msgstr "تیلگو"
 
+msgid "Tajik"
+msgstr ""
+
 msgid "Thai"
 msgstr "تھائی"
 
+msgid "Turkmen"
+msgstr ""
+
 msgid "Turkish"
 msgstr "ترکش"
 
@@ -271,6 +293,9 @@ msgstr ""
 msgid "Udmurt"
 msgstr ""
 
+msgid "Uyghur"
+msgstr ""
+
 msgid "Ukrainian"
 msgstr "یوکرائنی"
 
@@ -301,6 +326,11 @@ msgstr ""
 msgid "Syndication"
 msgstr ""
 
+#. Translators: String used to replace omitted page numbers in elided page
+#. range generated by paginators, e.g. [1, 2, '…', 5, 6, 7, '…', 9, 10].
+msgid "…"
+msgstr ""
+
 msgid "That page number is not an integer"
 msgstr ""
 
@@ -313,6 +343,9 @@ msgstr ""
 msgid "Enter a valid value."
 msgstr "درست قیمت (ویلیو) درج کریں۔"
 
+msgid "Enter a valid domain name."
+msgstr ""
+
 msgid "Enter a valid URL."
 msgstr "درست یو آر ایل (URL) درج کریں۔"
 
@@ -332,13 +365,17 @@ msgid ""
 "hyphens."
 msgstr ""
 
-msgid "Enter a valid IPv4 address."
-msgstr "IPv4 کا درست پتہ درج کریں۔"
+#, python-format
+msgid "Enter a valid %(protocol)s address."
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
 
-msgid "Enter a valid IPv6 address."
+msgid "IPv6"
 msgstr ""
 
-msgid "Enter a valid IPv4 or IPv6 address."
+msgid "IPv4 or IPv6"
 msgstr ""
 
 msgid "Enter only digits separated by commas."
@@ -363,6 +400,16 @@ msgstr ""
 "برابر ھے۔"
 
 #, python-format
+msgid "Ensure this value is a multiple of step size %(limit_value)s."
+msgstr ""
+
+#, python-format
+msgid ""
+"Ensure this value is a multiple of step size %(limit_value)s, starting from "
+"%(offset)s, e.g. %(offset)s, %(valid_value1)s, %(valid_value2)s, and so on."
+msgstr ""
+
+#, python-format
 msgid ""
 "Ensure this value has at least %(limit_value)d character (it has "
 "%(show_value)d)."
@@ -422,6 +469,10 @@ msgid "%(model_name)s with this %(field_
 msgstr ""
 
 #, python-format
+msgid "Constraint “%(name)s” is violated."
+msgstr ""
+
+#, python-format
 msgid "Value %(value)r is not a valid choice."
 msgstr ""
 
@@ -435,8 +486,8 @@ msgstr "یہ خانہ خالی نھیں
 msgid "%(model_name)s with this %(field_label)s already exists."
 msgstr "%(model_name)s اس %(field_label)s کے ساتھ پہلے ہی موجود ھے۔"
 
-#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'.
-#. Eg: "Title must be unique for pub_date year"
+#. Translators: The 'lookup_type' is one of 'date', 'year' or
+#. 'month'. Eg: "Title must be unique for pub_date year"
 #, python-format
 msgid ""
 "%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s."
@@ -461,6 +512,9 @@ msgstr "بولین (True یا False)"
 msgid "String (up to %(max_length)s)"
 msgstr "سلسلۂ حروف (String) (%(max_length)s تک)"
 
+msgid "String (unlimited)"
+msgstr ""
+
 msgid "Comma-separated integers"
 msgstr " کومے سے الگ کئے ھوئے صحیح اعداد"
 
@@ -533,6 +587,9 @@ msgstr "صحیح عدد"
 msgid "Big (8 byte) integer"
 msgstr "بڑا (8 بائٹ) صحیح عدد"
 
+msgid "Small integer"
+msgstr ""
+
 msgid "IPv4 address"
 msgstr ""
 
@@ -546,6 +603,9 @@ msgstr ""
 msgid "Boolean (Either True, False or None)"
 msgstr "بولین (True، False یا None("
 
+msgid "Positive big integer"
+msgstr ""
+
 msgid "Positive integer"
 msgstr ""
 
@@ -556,9 +616,6 @@ msgstr ""
 msgid "Slug (up to %(max_length)s)"
 msgstr ""
 
-msgid "Small integer"
-msgstr ""
-
 msgid "Text"
 msgstr "متن"
 
@@ -596,8 +653,14 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
+msgid "A JSON object"
+msgstr ""
+
+msgid "Value must be valid JSON."
+msgstr ""
+
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
 msgstr ""
 
 msgid "Foreign Key (type determined by related field)"
@@ -684,6 +747,9 @@ msgstr ""
 msgid "Enter a valid UUID."
 msgstr ""
 
+msgid "Enter a valid JSON."
+msgstr ""
+
 #. Translators: This is the default suffix added to form field labels
 msgid ":"
 msgstr ""
@@ -692,18 +758,21 @@ msgstr ""
 msgid "(Hidden field %(name)s) %(error)s"
 msgstr ""
 
-msgid "ManagementForm data is missing or has been tampered with"
+#, python-format
+msgid ""
+"ManagementForm data is missing or has been tampered with. Missing fields: "
+"%(field_names)s. You may need to file a bug report if the issue persists."
 msgstr ""
 
 #, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
+msgid "Please submit at most %(num)d form."
+msgid_plural "Please submit at most %(num)d forms."
 msgstr[0] ""
 msgstr[1] ""
 
 #, python-format
-msgid "Please submit %d or more forms."
-msgid_plural "Please submit %d or more forms."
+msgid "Please submit at least %(num)d form."
+msgid_plural "Please submit at least %(num)d forms."
 msgstr[0] ""
 msgstr[1] ""
 
@@ -767,17 +836,9 @@ msgstr "ھاں"
 msgid "No"
 msgstr "نھیں"
 
-msgid "Year"
-msgstr ""
-
-msgid "Month"
-msgstr ""
-
-msgid "Day"
-msgstr ""
-
+#. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "ھاں،نہیں،ھوسکتاہے"
+msgstr "ھاں,نہیں,ھوسکتاہے"
 
 #, python-format
 msgid "%(size)d byte"
@@ -1049,44 +1110,41 @@ msgid ", "
 msgstr "،"
 
 #, python-format
-msgid "%d year"
-msgid_plural "%d years"
+msgid "%(num)d year"
+msgid_plural "%(num)d years"
 msgstr[0] ""
 msgstr[1] ""
 
 #, python-format
-msgid "%d month"
-msgid_plural "%d months"
+msgid "%(num)d month"
+msgid_plural "%(num)d months"
 msgstr[0] ""
 msgstr[1] ""
 
 #, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
+msgid "%(num)d week"
+msgid_plural "%(num)d weeks"
 msgstr[0] ""
 msgstr[1] ""
 
 #, python-format
-msgid "%d day"
-msgid_plural "%d days"
+msgid "%(num)d day"
+msgid_plural "%(num)d days"
 msgstr[0] ""
 msgstr[1] ""
 
 #, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
+msgid "%(num)d hour"
+msgid_plural "%(num)d hours"
 msgstr[0] ""
 msgstr[1] ""
 
 #, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
+msgid "%(num)d minute"
+msgid_plural "%(num)d minutes"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "0 minutes"
-msgstr ""
-
 msgid "Forbidden"
 msgstr ""
 
@@ -1095,7 +1153,7 @@ msgstr ""
 
 msgid ""
 "You are seeing this message because this HTTPS site requires a “Referer "
-"header” to be sent by your Web browser, but none was sent. This header is "
+"header” to be sent by your web browser, but none was sent. This header is "
 "required for security reasons, to ensure that your browser is not being "
 "hijacked by third parties."
 msgstr ""
@@ -1110,8 +1168,8 @@ msgid ""
 "If you are using the <meta name=\"referrer\" content=\"no-referrer\"> tag or "
 "including the “Referrer-Policy: no-referrer” header, please remove them. The "
 "CSRF protection requires the “Referer” header to do strict referer checking. "
-"If you’re concerned about privacy, use alternatives like <a rel=\"noreferrer"
-"\" …> for links to third-party sites."
+"If you’re concerned about privacy, use alternatives like <a "
+"rel=\"noreferrer\" …> for links to third-party sites."
 msgstr ""
 
 msgid ""
@@ -1183,7 +1241,7 @@ msgstr ""
 msgid "Index of %(directory)s"
 msgstr ""
 
-msgid "Django: the Web framework for perfectionists with deadlines."
+msgid "The install worked successfully! Congratulations!"
 msgstr ""
 
 #, python-format
@@ -1192,15 +1250,12 @@ msgid ""
 "target=\"_blank\" rel=\"noopener\">release notes</a> for Django %(version)s"
 msgstr ""
 
-msgid "The install worked successfully! Congratulations!"
-msgstr ""
-
 #, python-format
 msgid ""
 "You are seeing this page because <a href=\"https://docs.djangoproject.com/en/"
-"%(version)s/ref/settings/#debug\" target=\"_blank\" rel=\"noopener"
-"\">DEBUG=True</a> is in your settings file and you have not configured any "
-"URLs."
+"%(version)s/ref/settings/#debug\" target=\"_blank\" "
+"rel=\"noopener\">DEBUG=True</a> is in your settings file and you have not "
+"configured any URLs."
 msgstr ""
 
 msgid "Django Documentation"
Binary files 3:5.2.6-1/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/zh_Hans/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/zh_Hans/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/zh_Hans/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/zh_Hans/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -7,7 +7,7 @@
 # Fan Xu <xlivevil@aliyun.com>, 2022
 # Ford Guo <agile.guo@gmail.com>, 2022
 # Huanqun Yang, 2022
-# jack yang, 2023
+# sunfkny, 2023
 # jamin M <lxxmbyx@163.com>, 2019
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Kevin Sze <leiarix@gmail.com>, 2012
@@ -17,6 +17,7 @@
 # Liping Wang <lynn.config@gmail.com>, 2016-2017
 # L., 2024
 # matthew Yip <yymmatthew@gmail.com>, 2020
+# Natalia, 2025
 # mozillazg <opensource.mozillazg@gmail.com>, 2016
 # Ronald White <tkliuxing@me.com>, 2014
 # Lemon Li <leeway1985@gmail.com>, 2013
@@ -42,9 +43,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-10-07 06:49+0000\n"
-"Last-Translator: L., 2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Natalia, 2025\n"
 "Language-Team: Chinese (China) (http://app.transifex.com/django/django/"
 "language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
@@ -697,8 +698,8 @@ msgid "Value must be valid JSON."
 msgstr "值必须是有效的JSON。"
 
 #, python-format
-msgid "%(model)s instance with %(field)s %(value)r does not exist."
-msgstr "包含%(field)s %(value)r的%(model)s实例不存在。"
+msgid "%(model)s instance with %(field)s %(value)r is not a valid choice."
+msgstr ""
 
 msgid "Foreign Key (type determined by related field)"
 msgstr "外键(由相关字段确定)"
@@ -873,7 +874,7 @@ msgstr "否"
 
 #. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "是、否、也许"
+msgstr "是,否,也许"
 
 #, python-format
 msgid "%(size)d byte"
Binary files 3:5.2.6-1/django/conf/locale/zh_Hant/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/conf/locale/zh_Hant/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/conf/locale/zh_Hant/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/conf/locale/zh_Hant/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/conf/locale/zh_Hant/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/conf/locale/zh_Hant/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,25 +2,26 @@
 #
 # Translators:
 # Chen Chun-Chia <ccc.larc@gmail.com>, 2015
-# coby2023t, 2024-2025
+# yubike, 2024-2025
 # Eric Ho <eric913@gmail.com>, 2013
 # ilay <ilay@ilay.tw>, 2012
 # Jannis Leidel <jannis@leidel.info>, 2011
 # mail6543210 <mail6543210@yahoo.com.tw>, 2013
 # 0a3cb7bfd0810218facdfb511e592a6d_8d19d07 <c136e508049103f37d35b6c3314e9b1d_5225>, 2011
+# Natalia, 2025
 # tcc <tcchou@tcchou.org>, 2011
 # Tzu-ping Chung <uranusjr@gmail.com>, 2016-2017
 # YAO WEN LIANG, 2024
 # Yeh-Yung <yyc1217@gmail.com>, 2013
-# coby2023t, 2024
+# yubike, 2024
 # Yeh-Yung <yyc1217@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: coby2023t, 2024-2025\n"
+"PO-Revision-Date: 2025-09-17 06:49+0000\n"
+"Last-Translator: Natalia, 2025\n"
 "Language-Team: Chinese (Taiwan) (http://app.transifex.com/django/django/"
 "language/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -842,7 +843,7 @@ msgstr "否"
 
 #. Translators: Please do not add spaces around commas.
 msgid "yes,no,maybe"
-msgstr "是、否、也許"
+msgstr "是,否,也許"
 
 #, python-format
 msgid "%(size)d byte"
Binary files 3:5.2.6-1/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/ar/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ar/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/ar/LC_MESSAGES/django.po	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ar/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -5,17 +5,17 @@
 # Bashar Al-Abdulhadi, 2014
 # Eyad Toma <d.eyad.t@gmail.com>, 2013
 # Jannis Leidel <jannis@leidel.info>, 2011
-# Muaaz Alsaied, 2020
-# Tony xD <tony23dz@gmail.com>, 2020
+# Muaaz Alsaied, 2020,2025
+# Tony Ayoub <tony23dz@gmail.com>, 2020
 # صفا الفليج <safaalfulaij@hotmail.com>, 2020
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-21 10:22+0200\n"
-"PO-Revision-Date: 2021-10-15 21:11+0000\n"
-"Last-Translator: Bashar Al-Abdulhadi\n"
-"Language-Team: Arabic (http://www.transifex.com/django/django/language/ar/)\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Muaaz Alsaied, 2020,2025\n"
+"Language-Team: Arabic (http://app.transifex.com/django/django/language/ar/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -35,8 +35,8 @@ msgstr "نجح حذف %(count)d من %(i
 msgid "Cannot delete %(name)s"
 msgstr "تعذّر حذف %(name)s"
 
-msgid "Are you sure?"
-msgstr "هل أنت متأكد؟"
+msgid "Delete multiple objects"
+msgstr "حذف عدّة عناصر"
 
 msgid "Administration"
 msgstr "الإدارة"
@@ -85,7 +85,7 @@ msgid ""
 "Please enter the correct %(username)s and password for a staff account. Note "
 "that both fields may be case-sensitive."
 msgstr ""
-"من فضلك أدخِل قيمة %(username)s الصحيحة وكلمة السر لحساب الطاقم الإداري. "
+"من فضلك أدخِل قيمة %(username)s الصحيحة وكلمة المرور لحساب الطاقم الإداري. "
 "الحقلين حسّاسين لحالة الأحرف."
 
 msgid "Action:"
@@ -163,52 +163,51 @@ msgstr "و"
 
 #, python-brace-format
 msgid "Changed {fields} for {name} “{object}”."
-msgstr "تغيّرت {fields} ‏{name} ‏”{object}“."
+msgstr "تم تغيير {fields} لـ {name} \"{object}\"."
 
 #, python-brace-format
 msgid "Changed {fields}."
-msgstr "تغيّرت {fields}."
+msgstr "تم تغيير {fields}."
 
 #, python-brace-format
 msgid "Deleted {name} “{object}”."
 msgstr "حُذف {name} ‏”{object}“."
 
 msgid "No fields changed."
-msgstr "لم يتغيّر أي حقل."
+msgstr "لم يتم تغيير أية حقول."
 
 msgid "None"
 msgstr "بلا"
 
 msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
 msgstr ""
-"اضغط مفتاح ”Contrl“ (أو ”Command“ على أجهزة ماك) مطوّلًا لتحديد أكثر من عنصر."
+"اضغط مفتاح ”Control“ أو ”Command“ على أجهزة ماك مطوّلًا لتحديد أكثر من عنصر."
+
+msgid "Select this object for an action - {}"
+msgstr "حدد هذا الكائن لإجراء - {}"
 
 #, python-brace-format
 msgid "The {name} “{obj}” was added successfully."
 msgstr "نجحت إضافة {name} ‏”{obj}“."
 
 msgid "You may edit it again below."
-msgstr "يمكنك تعديله ثانيةً أسفله."
+msgstr "يمكن تعديله مرة أخرى أدناه."
 
 #, python-brace-format
 msgid ""
 "The {name} “{obj}” was added successfully. You may add another {name} below."
-msgstr "نجحت إضافة {name} ‏”{obj}“. يمكنك إضافة {name} آخر أسفله."
+msgstr "تمت إضافة {name} “{obj}” بنجاح. يمكنك إضافة {name} آخر أدناه."
 
 #, python-brace-format
 msgid ""
 "The {name} “{obj}” was changed successfully. You may edit it again below."
-msgstr "نجح تعديل {name} ‏”{obj}“. يمكنك تعديله ثانيةً أسفله."
-
-#, python-brace-format
-msgid "The {name} “{obj}” was added successfully. You may edit it again below."
-msgstr "نجحت إضافة {name} ‏”{obj}“. يمكنك تعديله ثانيةً أسفله."
+msgstr "تم تعديل {name} “{obj}” بنجاح. يمكنك تعديله مجدداً أدناه."
 
 #, python-brace-format
 msgid ""
 "The {name} “{obj}” was changed successfully. You may add another {name} "
 "below."
-msgstr "تمت إضافة {name} “{obj}” بنجاح، يمكنك إضافة {name} أخر بالأسفل."
+msgstr "تم تعديل {name} “{obj}” بنجاح. يمكنك إضافة {name} آخر أدناه."
 
 #, python-brace-format
 msgid "The {name} “{obj}” was changed successfully."
@@ -269,12 +268,16 @@ msgstr[5] "تم تحديد %(total_count
 msgid "0 of %(cnt)s selected"
 msgstr "لا شيء محدد من %(cnt)s"
 
+msgid "Delete"
+msgstr "احذف"
+
 #, python-format
 msgid "Change history: %s"
 msgstr "تاريخ التغيير: %s"
 
-#. Translators: Model verbose name and instance representation,
-#. suitable to be an item in a list.
+#. Translators: Model verbose name and instance
+#. representation, suitable to be an item in a
+#. list.
 #, python-format
 msgid "%(class_name)s %(instance)s"
 msgstr "%(class_name)s %(instance)s"
@@ -307,7 +310,7 @@ msgid "Page not found"
 msgstr "تعذر العثور على الصفحة"
 
 msgid "We’re sorry, but the requested page could not be found."
-msgstr "نحن آسفون، لكننا لم نعثر على الصفحة المطلوبة."
+msgstr "عذراً، تعذَّر العثور على الصفحة المطلوبة."
 
 msgid "Home"
 msgstr "الرئيسية"
@@ -344,10 +347,22 @@ msgstr "اختيار %(total_count)s %(m
 msgid "Clear selection"
 msgstr "إزالة الاختيار"
 
+msgid "Breadcrumbs"
+msgstr "روابط التنقُّل"
+
 #, python-format
 msgid "Models in the %(name)s application"
 msgstr "النماذج في تطبيق %(name)s"
 
+msgid "Model name"
+msgstr "اسم النموذج"
+
+msgid "Add link"
+msgstr "أضف رابط"
+
+msgid "Change or view list link"
+msgstr "عدِّل أو استعرض رابط القائمة"
+
 msgid "Add"
 msgstr "أضف"
 
@@ -355,31 +370,49 @@ msgid "View"
 msgstr "استعراض"
 
 msgid "You don’t have permission to view or edit anything."
-msgstr "ليست لديك الصلاحية لاستعراض أو لتعديل أي شيء."
+msgstr "ليس لديك إذن لعرض أو تغديل أي شيء."
 
-msgid ""
-"First, enter a username and password. Then, you’ll be able to edit more user "
-"options."
-msgstr ""
-"أولاً ، أدخل اسم المستخدم وكلمة المرور. بعد ذلك ، ستتمكن من تعديل المزيد من "
-"خيارات المستخدم."
+msgid "After you’ve created a user, you’ll be able to edit more user options."
+msgstr "بعد إضافة مستخدم, ستكون قادراً على تعديل المزيد من إعدادات المستخدم."
 
-msgid "Enter a username and password."
-msgstr "أدخل اسم مستخدم وكلمة مرور."
+msgid "Error:"
+msgstr "خطأ:"
 
 msgid "Change password"
 msgstr "غيّر كلمة المرور"
 
-msgid "Please correct the error below."
-msgstr "الرجاء تصحيح الأخطاء أدناه."
+msgid "Set password"
+msgstr "اختر كلمة مرور"
 
-msgid "Please correct the errors below."
-msgstr "الرجاء تصحيح الأخطاء أدناه."
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "لا توجد أخطاء لتصحيحها."
+msgstr[1] "الرجاء تصحيح الخطأ أدناه."
+msgstr[2] "الرجاء تصحيح الأخطاء أدناه."
+msgstr[3] "الرجاء تصحيح الأخطاء أدناه."
+msgstr[4] "الرجاء تصحيح الأخطاء أدناه."
+msgstr[5] "الرجاء تصحيح الأخطاء أدناه."
 
 #, python-format
 msgid "Enter a new password for the user <strong>%(username)s</strong>."
 msgstr "أدخل كلمة مرور جديدة للمستخدم <strong>%(username)s</strong>."
 
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+"<strong>ستُفعِّل</strong> هذه العملية المصادقة المعتمدة على كلمة المرور لهذا "
+"المستخدم."
+
+msgid "Disable password-based authentication"
+msgstr "تعطيل المصادقة المعتمدة على كلمة المرور"
+
+msgid "Enable password-based authentication"
+msgstr "تفعيل المصادقة المعتمدة على كلمة المرور"
+
+msgid "Skip to main content"
+msgstr "الانتقال إلى المحتوى الرئيسي"
+
 msgid "Welcome,"
 msgstr "أهلا، "
 
@@ -405,6 +438,12 @@ msgstr "مشاهدة على الموقع
 msgid "Filter"
 msgstr "مرشّح"
 
+msgid "Hide counts"
+msgstr "إخفاء الأعداد"
+
+msgid "Show counts"
+msgstr "إظهار الأعداد"
+
 msgid "Clear all filters"
 msgstr "مسح جميع المرشحات"
 
@@ -418,8 +457,14 @@ msgstr "أولوية الترتيب: %(p
 msgid "Toggle sorting"
 msgstr "عكس الترتيب"
 
-msgid "Delete"
-msgstr "احذف"
+msgid "Toggle theme (current theme: auto)"
+msgstr "تبديل السمة (السمة الحالية: تلقائي)"
+
+msgid "Toggle theme (current theme: light)"
+msgstr "تبديل السمة (السمة الحالية: فاتح)"
+
+msgid "Toggle theme (current theme: dark)"
+msgstr "تبديل السمة (السمة الحالية: داكنة)"
 
 #, python-format
 msgid ""
@@ -455,9 +500,6 @@ msgstr "نعم، أنا متأكد"
 msgid "No, take me back"
 msgstr "لا, تراجع للخلف"
 
-msgid "Delete multiple objects"
-msgstr "حذف عدّة عناصر"
-
 #, python-format
 msgid ""
 "Deleting the selected %(objects_name)s would result in deleting related "
@@ -502,6 +544,15 @@ msgstr "إجراءاتي"
 msgid "None available"
 msgstr "لا يوجد"
 
+msgid "Added:"
+msgstr "تم الإضافة:"
+
+msgid "Changed:"
+msgstr "تم التعديل:"
+
+msgid "Deleted:"
+msgstr "تم الحذف:"
+
 msgid "Unknown content"
 msgstr "مُحتوى مجهول"
 
@@ -521,12 +572,15 @@ msgstr ""
 "أنت مسجل الدخول بإسم المستخدم  %(username)s, ولكنك غير مخول للوصول لهذه "
 "الصفحة. هل ترغب بتسجيل الدخول بحساب آخر؟"
 
-msgid "Forgotten your password or username?"
-msgstr "نسيت كلمة المرور أو اسم المستخدم الخاص بك؟"
+msgid "Forgotten your login credentials?"
+msgstr "هل نسيت بيانات تسجيل الدخول؟"
 
 msgid "Toggle navigation"
 msgstr "تغيير التصفّح"
 
+msgid "Sidebar"
+msgstr "الشريط الجانبي"
+
 msgid "Start typing to filter…"
 msgstr "ابدأ الكتابة للتصفية ..."
 
@@ -542,6 +596,15 @@ msgstr "المستخدم"
 msgid "Action"
 msgstr "إجراء"
 
+msgid "entry"
+msgid_plural "entries"
+msgstr[0] "إدخال"
+msgstr[1] "إدخال"
+msgstr[2] "الإدخالات"
+msgstr[3] "الإدخالات"
+msgstr[4] "الإدخالات"
+msgstr[5] "الإدخالات"
+
 msgid ""
 "This object doesn’t have a change history. It probably wasn’t added via this "
 "admin site."
@@ -602,6 +665,10 @@ msgstr "أضف %(model)s آخر"
 msgid "Delete selected %(model)s"
 msgstr "حذف %(model)s المختارة"
 
+#, python-format
+msgid "View selected %(model)s"
+msgstr "استعرض %(model)s المختارة"
+
 msgid "Thanks for spending some quality time with the web site today."
 msgstr "شكرا لقضاء بعض الوقت الجيد في الموقع اليوم."
 
@@ -677,8 +744,8 @@ msgstr ""
 msgid "Please go to the following page and choose a new password:"
 msgstr "رجاءً اذهب إلى الصفحة التالية واختر كلمة مرور جديدة:"
 
-msgid "Your username, in case you’ve forgotten:"
-msgstr "اسم المستخدم الخاص بك، في حال كنت قد نسيته:"
+msgid "In case you’ve forgotten, you are:"
+msgstr "في حال نسيت، أنت:"
 
 msgid "Thanks for using our site!"
 msgstr "شكراً لاستخدامك موقعنا!"
@@ -700,6 +767,9 @@ msgstr "عنوان البريد الإل
 msgid "Reset my password"
 msgstr "استعد كلمة مروري"
 
+msgid "Select all objects on this page for an action"
+msgstr "حدد جميع الكائنات في هذه الصفحة لإجراء"
+
 msgid "All dates"
 msgstr "كافة التواريخ"
 
Binary files 3:5.2.6-1/django/contrib/admin/locale/az/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/az/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/az/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/az/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/az/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/az/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -13,7 +13,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
 "Last-Translator: Nijat Mammadov, 2024-2025\n"
 "Language-Team: Azerbaijani (http://app.transifex.com/django/django/language/"
 "az/)\n"
@@ -102,7 +102,7 @@ msgid "Addition"
 msgstr "Əlavə olunma"
 
 msgid "Change"
-msgstr "Dəyişiklik"
+msgstr "Düzəliş et"
 
 msgid "Deletion"
 msgstr "Silinmə"
@@ -404,10 +404,10 @@ msgstr ""
 "edəcək</strong>."
 
 msgid "Disable password-based authentication"
-msgstr "Şifrə əsaslı autentifikasiyanı ləğv elə."
+msgstr "Şifrə əsaslı autentifikasiyanı ləğv et"
 
 msgid "Enable password-based authentication"
-msgstr "Şifrə əsaslı autentifikasiyanı aktivləşdir."
+msgstr "Şifrə əsaslı autentifikasiyanı aktivləşdir"
 
 msgid "Skip to main content"
 msgstr "Əsas məzmuna keç"
@@ -419,7 +419,7 @@ msgid "View site"
 msgstr "Sayta bax"
 
 msgid "Documentation"
-msgstr "Dokumentasiya"
+msgstr "Sənədləşmə"
 
 msgid "Log out"
 msgstr "Çıx"
@@ -444,7 +444,7 @@ msgid "Show counts"
 msgstr "Sayı göstər"
 
 msgid "Clear all filters"
-msgstr "Bütün filterləri təmizlə"
+msgstr "Bütün süzgəcləri təmizlə"
 
 msgid "Remove from sorting"
 msgstr "Sıralamadan çıxar"
@@ -531,7 +531,7 @@ msgstr "Silinsin?"
 
 #, python-format
 msgid " By %(filter_title)s "
-msgstr "\"%(filter_title)s\" filtrına görə "
+msgstr "\"%(filter_title)s\" dəyərinə görə"
 
 msgid "Summary"
 msgstr "İcmal"
@@ -584,10 +584,10 @@ msgid "Sidebar"
 msgstr "Yan panel"
 
 msgid "Start typing to filter…"
-msgstr "Filterləmək üçün yazın..."
+msgstr "Süzmək üçün yazın..."
 
 msgid "Filter navigation items"
-msgstr "Naviqasiya elementlərini filterlə"
+msgstr "Naviqasiya elementlərini süz"
 
 msgid "Date/time"
 msgstr "Tarix/vaxt"
@@ -670,16 +670,16 @@ msgid "Log in again"
 msgstr "Yenidən daxil ol"
 
 msgid "Password change"
-msgstr "Şifrəni dəyişmək"
+msgstr "Şifrəni dəyiş"
 
 msgid "Your password was changed."
-msgstr "Sizin şifrəniz dəyişdirildi."
+msgstr "Şifrəniz dəyişdirildi."
 
 msgid ""
 "Please enter your old password, for security’s sake, and then enter your new "
 "password twice so we can verify you typed it in correctly."
 msgstr ""
-"Zəhmət olmasa təhlükəsizlik naminə köhnə şifrənizi daxil edin və sonra yeni "
+"Zəhmət olmasa, təhlükəsizlik naminə köhnə şifrənizi daxil edin və sonra yeni "
 "şifrənizi iki dəfə daxil edin ki, düzgün daxil yazdığınızı yoxlaya bilək."
 
 msgid "Change my password"
@@ -777,7 +777,7 @@ msgstr "%s dəyişmək üçün seç"
 
 #, python-format
 msgid "Select %s to view"
-msgstr "Görmək üçün %s seçin"
+msgstr "Baxmaq üçün %s seçin"
 
 msgid "Date:"
 msgstr "Tarix:"
Binary files 3:5.2.6-1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -11,7 +11,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-25 15:04-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
 "Last-Translator: Nijat Mammadov, 2024-2025\n"
 "Language-Team: Azerbaijani (http://app.transifex.com/django/django/language/"
 "az/)\n"
@@ -34,7 +34,7 @@ msgstr ""
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
-msgstr "Bu xanaya yazmaqla mövcud %s siyahısını filtrləyə bilərsiniz."
+msgstr "Bu xanaya yazmaqla mövcud %s siyahısını süzə bilərsiniz."
 
 msgid "Filter"
 msgstr "Süzgəc"
@@ -64,7 +64,7 @@ msgstr ""
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
-msgstr "Seçilmiş %s siyahısını filtrləmək üçün bu xanaya yazın"
+msgstr "Seçilmiş %s siyahısını süzmək üçün bu xanaya yazın"
 
 msgid "(click to clear)"
 msgstr "(təmizləmək üçün toxunun)"
@@ -97,7 +97,7 @@ msgid ""
 "action."
 msgstr ""
 "Əməliyyat seçmisiniz, amma fərdi xanalardakı dəyişiklikləriniz hələ də yadda "
-"saxlanılmayıb. Saxlamaq üçün lütfən Tamam düyməsinə klikləyin. Əməliyyatı "
+"saxlanılmayıb. Saxlamaq üçün lütfən OLDU düyməsinə toxunun. Əməliyyatı "
 "təkrar icra etməli olacaqsınız."
 
 msgid ""
Binary files 3:5.2.6-1/django/contrib/admin/locale/be/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/be/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/be/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/be/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/be/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/be/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,15 +2,15 @@
 #
 # Translators:
 # Viktar Palstsiuk <vipals@gmail.com>, 2015
-# znotdead <zhirafchik@gmail.com>, 2016-2017,2019-2021,2023-2024
+# znotdead <zhirafchik@gmail.com>, 2016-2017,2019-2021,2023-2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 07:05+0000\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
 "Last-Translator: znotdead <zhirafchik@gmail.com>, "
-"2016-2017,2019-2021,2023-2024\n"
+"2016-2017,2019-2021,2023-2025\n"
 "Language-Team: Belarusian (http://app.transifex.com/django/django/language/"
 "be/)\n"
 "MIME-Version: 1.0\n"
@@ -33,8 +33,8 @@ msgstr "Выдалілі %(count)d %(ite
 msgid "Cannot delete %(name)s"
 msgstr "Не ўдаецца выдаліць %(name)s"
 
-msgid "Are you sure?"
-msgstr "Ці ўпэўненыя вы?"
+msgid "Delete multiple objects"
+msgstr "Выдаліць некалькі аб’ектаў"
 
 msgid "Administration"
 msgstr "Адміністрацыя"
@@ -265,6 +265,9 @@ msgstr[3] "Абралі ўсе %(total_c
 msgid "0 of %(cnt)s selected"
 msgstr "Абралі 0 аб’ектаў з %(cnt)s"
 
+msgid "Delete"
+msgstr "Выдаліць"
+
 #, python-format
 msgid "Change history: %s"
 msgstr "Гісторыя зьменаў: %s"
@@ -349,6 +352,15 @@ msgstr "Навігацыйны ланц
 msgid "Models in the %(name)s application"
 msgstr "Мадэлі ў %(name)s праграме"
 
+msgid "Model name"
+msgstr "Назва мадэлі"
+
+msgid "Add link"
+msgstr "Дадаць спасылку"
+
+msgid "Change or view list link"
+msgstr "Змяніць ці праглядзець спіс спасылак"
+
 msgid "Add"
 msgstr "Дадаць"
 
@@ -358,15 +370,13 @@ msgstr "Праглядзець"
 msgid "You don’t have permission to view or edit anything."
 msgstr "Вы ня маеце дазволу праглядаць ці нешта зьмяняць."
 
-msgid ""
-"First, enter a username and password. Then, you’ll be able to edit more user "
-"options."
+msgid "After you’ve created a user, you’ll be able to edit more user options."
 msgstr ""
-"Спачатку пазначце імя карыстальніка ды пароль. Потым можна будзе наставіць "
-"іншыя можнасьці."
+"Пасля стварэння карыстальніка вы зможаце рэдагаваць дадатковыя параметры "
+"карыстальніка."
 
-msgid "Enter a username and password."
-msgstr "Пазначце імя карыстальніка ды пароль."
+msgid "Error:"
+msgstr "Памылка:"
 
 msgid "Change password"
 msgstr "Зьмяніць пароль"
@@ -454,9 +464,6 @@ msgstr "Пераключыць тэму
 msgid "Toggle theme (current theme: dark)"
 msgstr "Пераключыць тэму (бягучая тэма: цёмная)"
 
-msgid "Delete"
-msgstr "Выдаліць"
-
 #, python-format
 msgid ""
 "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -491,9 +498,6 @@ msgstr "Так, я ўпэўнены"
 msgid "No, take me back"
 msgstr "Не, вярнуцца назад"
 
-msgid "Delete multiple objects"
-msgstr "Выдаліць некалькі аб’ектаў"
-
 #, python-format
 msgid ""
 "Deleting the selected %(objects_name)s would result in deleting related "
@@ -566,8 +570,8 @@ msgstr ""
 "Вы апазнаны як %(username)s але не аўтарызаваны для доступу гэтай бачыны. Не "
 "жадаеце лі вы ўвайсці пад іншым карыстальнікам?"
 
-msgid "Forgotten your password or username?"
-msgstr "Забыліся на імя ці пароль?"
+msgid "Forgotten your login credentials?"
+msgstr "Забыліся на імя?"
 
 msgid "Toggle navigation"
 msgstr "Пераключыць навігацыю"
@@ -734,8 +738,8 @@ msgstr ""
 msgid "Please go to the following page and choose a new password:"
 msgstr "Перайдзіце да наступнае бачыны ды абярыце новы пароль:"
 
-msgid "Your username, in case you’ve forgotten:"
-msgstr "Імя карыстальніка, калі раптам вы забыліся:"
+msgid "In case you’ve forgotten, you are:"
+msgstr "Калі вы забыліся, то вы:"
 
 msgid "Thanks for using our site!"
 msgstr "Дзякуем, што карыстаецеся нашаю пляцоўкаю!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,14 +2,14 @@
 #
 # Translators:
 # Viktar Palstsiuk <vipals@gmail.com>, 2015
-# znotdead <zhirafchik@gmail.com>, 2016,2020-2021,2023
+# znotdead <zhirafchik@gmail.com>, 2016,2020-2021,2023,2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 15:04-0300\n"
-"PO-Revision-Date: 2023-12-04 07:59+0000\n"
-"Last-Translator: znotdead <zhirafchik@gmail.com>, 2016,2020-2021,2023\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: znotdead <zhirafchik@gmail.com>, 2016,2020-2021,2023,2025\n"
 "Language-Team: Belarusian (http://app.transifex.com/django/django/language/"
 "be/)\n"
 "MIME-Version: 1.0\n"
@@ -26,11 +26,9 @@ msgstr "Даступныя %s"
 
 #, javascript-format
 msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
+"Choose %s by selecting them and then select the \"Choose\" arrow button."
 msgstr ""
-"Сьпіс даступных %s. Каб нешта абраць, пазначце патрэбнае ў полі ніжэй і "
-"пстрыкніце па стрэлцы «Абраць» між двума палямі."
+"Абярыце %s, выбраўшы іх, а потым націсніце кнопку са стрэлкай «Абраць»."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -39,18 +37,17 @@ msgstr "Каб прасеяць даст
 msgid "Filter"
 msgstr "Прасеяць"
 
-msgid "Choose all"
-msgstr "Абраць усе"
-
 #, javascript-format
-msgid "Click to choose all %s at once."
-msgstr "Каб абраць усе %s, пстрыкніце тут."
+msgid "Choose all %s"
+msgstr "Абраць усе %s"
 
-msgid "Choose"
-msgstr "Абраць"
+#, javascript-format
+msgid "Choose selected %s"
+msgstr "Змяніць абраныя %s"
 
-msgid "Remove"
-msgstr "Прыбраць"
+#, javascript-format
+msgid "Remove selected %s"
+msgstr "Выдаліць абраныя %s"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -58,22 +55,20 @@ msgstr "Абралі %s"
 
 #, javascript-format
 msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
+"Remove %s by selecting them and then select the \"Remove\" arrow button."
 msgstr ""
-"Сьпіс абраных %s. Каб нешта прыбраць, пазначце патрэбнае ў полі ніжэй і "
-"пстрыкніце па стрэлцы «Прыбраць» між двума палямі."
+"Выдаліце ​​%s, выбраўшы іх, а потым націсніце кнопку са стрэлкай «Выдаліць»."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr "Друкуйце ў гэтым полі, каб прасеяць спіс выбраных %s."
 
-msgid "Remove all"
-msgstr "Прыбраць усё"
+msgid "(click to clear)"
+msgstr "(націсніце каб ачысьціць)"
 
 #, javascript-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Каб прыбраць усе %s, пстрыкніце тут."
+msgid "Remove all %s"
+msgstr "Прыбраць усе %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
@@ -325,9 +320,3 @@ msgstr "П"
 msgctxt "one letter Saturday"
 msgid "S"
 msgstr "С"
-
-msgid "Show"
-msgstr "Паказаць"
-
-msgid "Hide"
-msgstr "Схаваць"
Binary files 3:5.2.6-1/django/contrib/admin/locale/es/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/es/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/es/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/es/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/es/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/es/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -8,6 +8,7 @@
 # e4db27214f7e7544f2022c647b585925_bb0e321, 2015-2016
 # 8cb2d5a716c3c9a99b6d20472609a4d5_6d03802 <ce931cb71bc28f3f828fb2dad368a4f7_5255>, 2011
 # guillem <serra.guillem@gmail.com>, 2012
+# Gustavo Adolfo Huarcaya Delgado <diavolo@gahd.net>, 2025
 # Ignacio José Lizarán Rus <ilizaran@gmail.com>, 2019
 # Igor Támara <igor@tamarapatino.org>, 2013
 # Jannis Leidel <jannis@leidel.info>, 2011
@@ -22,15 +23,15 @@
 # Natalia, 2024
 # Pablo, 2015
 # Salomon Herrera, 2023
-# Uriel Medina <urimeba511@gmail.com>, 2020-2024
+# Uriel Medina <urimeba511@gmail.com>, 2020-2025
 # Veronicabh <vero.blazher@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2025-03-19 11:30-0500\n"
-"Last-Translator: Alberto MH, 2025\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Uriel Medina <urimeba511@gmail.com>, 2020-2025\n"
 "Language-Team: Spanish (http://app.transifex.com/django/django/language/"
 "es/)\n"
 "MIME-Version: 1.0\n"
@@ -380,7 +381,7 @@ msgid "Add link"
 msgstr "Añadir vínculo"
 
 msgid "Change or view list link"
-msgstr ""
+msgstr "Cambiar o ver el enlace de la lista"
 
 msgid "Add"
 msgstr "Añadir"
@@ -393,6 +394,7 @@ msgstr "No cuenta con permiso para ver n
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
 msgstr ""
+"Después de haber creado un usuario, podrá editar más opciones del mismo."
 
 msgid "Error:"
 msgstr "Error:"
@@ -594,7 +596,7 @@ msgstr ""
 "esta página. ¿Desea autenticarse con una cuenta diferente?"
 
 msgid "Forgotten your login credentials?"
-msgstr ""
+msgstr "¿Olvidó sus credenciales de inicio de sesión?"
 
 msgid "Toggle navigation"
 msgstr "Activar navegación"
@@ -765,7 +767,7 @@ msgid "Please go to the following page a
 msgstr "Por favor, vaya a la página siguiente y escoja una nueva contraseña."
 
 msgid "In case you’ve forgotten, you are:"
-msgstr ""
+msgstr "Por si lo ha olvidado, usted es:"
 
 msgid "Thanks for using our site!"
 msgstr "¡Gracias por usar nuestro sitio!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -3,18 +3,19 @@
 # Translators:
 # Antoni Aloy <aaloy@apsl.net>, 2011-2012
 # e4db27214f7e7544f2022c647b585925_bb0e321, 2015-2016
+# Gustavo Adolfo Huarcaya Delgado <diavolo@gahd.net>, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Josue Naaman Nistal Guerra <josuenistal@hotmail.com>, 2014
 # Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011
-# Uriel Medina <urimeba511@gmail.com>, 2020-2023
+# Uriel Medina <urimeba511@gmail.com>, 2020-2023,2025
 # Veronicabh <vero.blazher@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 15:04-0300\n"
-"PO-Revision-Date: 2023-12-04 07:59+0000\n"
-"Last-Translator: Uriel Medina <urimeba511@gmail.com>, 2020-2023\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: Uriel Medina <urimeba511@gmail.com>, 2020-2023,2025\n"
 "Language-Team: Spanish (http://app.transifex.com/django/django/language/"
 "es/)\n"
 "MIME-Version: 1.0\n"
@@ -29,12 +30,8 @@ msgstr "%s Disponibles"
 
 #, javascript-format
 msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de %s disponibles. Puede elegir algunos seleccionándolos en "
-"la caja inferior y luego haciendo clic en la flecha \"Elegir\" que hay entre "
-"las dos cajas."
+"Choose %s by selecting them and then select the \"Choose\" arrow button."
+msgstr "Elija %s seleccionándolos y luego use el botón \"Elegir\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -43,18 +40,17 @@ msgstr "Escriba en este cuadro para filt
 msgid "Filter"
 msgstr "Filtro"
 
-msgid "Choose all"
-msgstr "Selecciona todos"
-
 #, javascript-format
-msgid "Click to choose all %s at once."
-msgstr "Haga clic para seleccionar todos los %s de una vez"
+msgid "Choose all %s"
+msgstr "Seleccionar todos %s"
 
-msgid "Choose"
-msgstr "Elegir"
+#, javascript-format
+msgid "Choose selected %s"
+msgstr "Elegir %s seleccionados"
 
-msgid "Remove"
-msgstr "Eliminar"
+#, javascript-format
+msgid "Remove selected %s"
+msgstr "Eliminar %s seleccionados"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -62,23 +58,19 @@ msgstr "%s elegidos"
 
 #, javascript-format
 msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de los %s elegidos. Puede elmininar algunos "
-"seleccionándolos en la caja inferior y luego haciendo click en la flecha "
-"\"Eliminar\" que hay entre las dos cajas."
+"Remove %s by selecting them and then select the \"Remove\" arrow button."
+msgstr "Eliminar %s seleccionándolos y luego use el botón \"Eliminar\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr "Escriba en este cuadro para filtrar la lista de %s seleccionados."
 
-msgid "Remove all"
-msgstr "Eliminar todos"
+msgid "(click to clear)"
+msgstr "(click para limpiar)"
 
 #, javascript-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Haz clic para eliminar todos los %s elegidos"
+msgid "Remove all %s"
+msgstr "Eliminar todos %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
@@ -328,9 +320,3 @@ msgstr "V"
 msgctxt "one letter Saturday"
 msgid "S"
 msgstr "S"
-
-msgid "Show"
-msgstr "Mostrar"
-
-msgid "Hide"
-msgstr "Ocultar"
Binary files 3:5.2.6-1/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/fa/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/fa/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/fa/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/fa/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -16,14 +16,14 @@
 # Pouya Abbassi, 2016
 # rahim agh <rahim.aghareb@gmail.com>, 2021
 # Reza Mohammadi <reza@teeleh.ir>, 2013-2014
-# Sajad Rahimi <rahimisajad@outlook.com>, 2021
+# Sajad Rahimi <rahimisajad@outlook.com>, 2021,2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 11:41-0300\n"
-"PO-Revision-Date: 2023-12-04 07:05+0000\n"
-"Last-Translator: ali salehi, 2023\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Sajad Rahimi <rahimisajad@outlook.com>, 2021,2025\n"
 "Language-Team: Persian (http://app.transifex.com/django/django/language/"
 "fa/)\n"
 "MIME-Version: 1.0\n"
@@ -44,8 +44,8 @@ msgstr "%(count)d تا %(items)s با م
 msgid "Cannot delete %(name)s"
 msgstr "امکان حذف %(name)s نیست."
 
-msgid "Are you sure?"
-msgstr "آیا مطمئن هستید؟"
+msgid "Delete multiple objects"
+msgstr "حذف اشیاء متعدد"
 
 msgid "Administration"
 msgstr "مدیریت"
@@ -218,12 +218,6 @@ msgstr ""
 "پایین ویرایش کنید."
 
 #, python-brace-format
-msgid "The {name} “{obj}” was added successfully. You may edit it again below."
-msgstr ""
-" {name} \"{obj}\" به موفقیت اضافه شد. شما میتوانید در قسمت پایین، دوباره آن "
-"را ویرایش کنید."
-
-#, python-brace-format
 msgid ""
 "The {name} “{obj}” was changed successfully. You may add another {name} "
 "below."
@@ -284,6 +278,9 @@ msgstr[1] "همه موارد %(total_cou
 msgid "0 of %(cnt)s selected"
 msgstr "0 از %(cnt)s انتخاب شده‌اند"
 
+msgid "Delete"
+msgstr "حذف"
+
 #, python-format
 msgid "Change history: %s"
 msgstr "تاریخچهٔ تغییر: %s"
@@ -367,6 +364,15 @@ msgstr ""
 msgid "Models in the %(name)s application"
 msgstr "مدلها در برنامه %(name)s "
 
+msgid "Model name"
+msgstr ""
+
+msgid "Add link"
+msgstr "اضافه‌کردن پیوند"
+
+msgid "Change or view list link"
+msgstr "تغییر یا مشاهده لیست پیوند"
+
 msgid "Add"
 msgstr "اضافه کردن"
 
@@ -376,19 +382,18 @@ msgstr "مشاهده"
 msgid "You don’t have permission to view or edit anything."
 msgstr "شما اجازهٔ مشاهده یا ویرایش چیزی را ندارید."
 
-msgid ""
-"First, enter a username and password. Then, you’ll be able to edit more user "
-"options."
-msgstr ""
-"ابتدا یک نام کاربری و گذرواژه وارد کنید. سپس می توانید مشخصات دیگر کاربر را "
-"ویرایش کنید."
+msgid "After you’ve created a user, you’ll be able to edit more user options."
+msgstr "پس از ساخت یک کاربر، امکان ثبت یا تغییر گزینه‌های بیشتری را دارید."
 
-msgid "Enter a username and password."
-msgstr "یک نام کاربری و رمز عبور را وارد کنید."
+msgid "Error:"
+msgstr "خطا:"
 
 msgid "Change password"
 msgstr "تغییر گذرواژه"
 
+msgid "Set password"
+msgstr "تنظیم رمز عبور جدید"
+
 msgid "Please correct the error below."
 msgid_plural "Please correct the errors below."
 msgstr[0] ""
@@ -398,6 +403,17 @@ msgstr[1] ""
 msgid "Enter a new password for the user <strong>%(username)s</strong>."
 msgstr "برای کابر <strong>%(username)s</strong> یک گذرنامهٔ جدید وارد کنید."
 
+msgid ""
+"This action will <strong>enable</strong> password-based authentication for "
+"this user."
+msgstr ""
+
+msgid "Disable password-based authentication"
+msgstr "غیرفعال کردن احراز هویت مبتنی بر گذرواژه"
+
+msgid "Enable password-based authentication"
+msgstr "فعال کردن احراز هویت مبتنی بر گذرواژه"
+
 msgid "Skip to main content"
 msgstr "انتقال به محتوای اصلی"
 
@@ -427,7 +443,7 @@ msgid "Filter"
 msgstr "فیلتر"
 
 msgid "Hide counts"
-msgstr ""
+msgstr "مخفی‌کردن تعداد"
 
 msgid "Show counts"
 msgstr "نمایش تعداد"
@@ -454,9 +470,6 @@ msgstr "تغییر رنگ پوسته (ح
 msgid "Toggle theme (current theme: dark)"
 msgstr "تغییر رنگ پوسته (حالت کنونی: تیره)"
 
-msgid "Delete"
-msgstr "حذف"
-
 #, python-format
 msgid ""
 "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -491,9 +504,6 @@ msgstr "بله، مطمئن هستم."
 msgid "No, take me back"
 msgstr "نه، من را برگردان"
 
-msgid "Delete multiple objects"
-msgstr "حذف اشیاء متعدد"
-
 #, python-format
 msgid ""
 "Deleting the selected %(objects_name)s would result in deleting related "
@@ -567,7 +577,7 @@ msgstr ""
 "شما به عنوان %(username)sوارد شده اید. ولی اجازه مشاهده صفحه فوق را نداریدو "
 "آیا مایلید با کاربر دیگری وارد شوید؟"
 
-msgid "Forgotten your password or username?"
+msgid "Forgotten your login credentials?"
 msgstr "گذرواژه یا نام کاربری خود را فراموش کرده‌اید؟"
 
 msgid "Toggle navigation"
@@ -733,8 +743,8 @@ msgstr ""
 msgid "Please go to the following page and choose a new password:"
 msgstr "لطفاً به صفحهٔ زیر بروید و یک گذرواژهٔ جدید انتخاب کنید:"
 
-msgid "Your username, in case you’ve forgotten:"
-msgstr "نام کاربری‌تان، چنانچه احیاناً یادتان رفته است:"
+msgid "In case you’ve forgotten, you are:"
+msgstr ""
 
 msgid "Thanks for using our site!"
 msgstr "ممنون از استفادهٔ شما از وب‌گاه ما"
@@ -757,7 +767,7 @@ msgid "Reset my password"
 msgstr "ایجاد گذرواژهٔ جدید"
 
 msgid "Select all objects on this page for an action"
-msgstr ""
+msgstr "انتخاب تمام اشیاء داخل صفحه برای انجام یک اقدام"
 
 msgid "All dates"
 msgstr "همهٔ تاریخ‌ها"
Binary files 3:5.2.6-1/django/contrib/admin/locale/gl/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/gl/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/gl/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/gl/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/gl/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/gl/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -9,14 +9,14 @@
 # Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
 # 948a55bc37dd6d642f1875bb84258fff_07a28cc <c1911c41f2600393098639fceba5dab0_5932>, 2011-2012
 # Pablo, 2015
-# X Bello <xbello@gmail.com>, 2023-2024
+# X Bello <xbello@gmail.com>, 2023-2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 07:05+0000\n"
-"Last-Translator: X Bello <xbello@gmail.com>, 2023-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: X Bello <xbello@gmail.com>, 2023-2025\n"
 "Language-Team: Galician (http://app.transifex.com/django/django/language/"
 "gl/)\n"
 "MIME-Version: 1.0\n"
@@ -37,8 +37,8 @@ msgstr "Borrado exitosamente %(count)d %
 msgid "Cannot delete %(name)s"
 msgstr "Non foi posíble eliminar %(name)s"
 
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
+msgid "Delete multiple objects"
+msgstr "Eliminar múltiples obxectos"
 
 msgid "Administration"
 msgstr "Administración"
@@ -267,6 +267,9 @@ msgstr[1] "Tódolos %(total_count)s sele
 msgid "0 of %(cnt)s selected"
 msgstr "0 de %(cnt)s seleccionados."
 
+msgid "Delete"
+msgstr "Eliminar"
+
 #, python-format
 msgid "Change history: %s"
 msgstr "Histórico de cambios: %s"
@@ -350,6 +353,15 @@ msgstr "Migas de pan"
 msgid "Models in the %(name)s application"
 msgstr "Modelos na aplicación %(name)s"
 
+msgid "Model name"
+msgstr "Nome do modelo"
+
+msgid "Add link"
+msgstr "Engadir enlace"
+
+msgid "Change or view list link"
+msgstr "Cambiar ou ver lista de enlaces"
+
 msgid "Add"
 msgstr "Engadir"
 
@@ -359,15 +371,11 @@ msgstr "Vista"
 msgid "You don’t have permission to view or edit anything."
 msgstr "Non ten permiso para ver ou editar nada."
 
-msgid ""
-"First, enter a username and password. Then, you’ll be able to edit more user "
-"options."
-msgstr ""
-"Primeiro insira un nome de usuario e un contrasinal. Despois poderá editar "
-"máis opcións de usuario."
+msgid "After you’ve created a user, you’ll be able to edit more user options."
+msgstr "Cando teña creado un usuario, poderá editar máis opcións do usuario."
 
-msgid "Enter a username and password."
-msgstr "Introduza un nome de usuario e contrasinal."
+msgid "Error:"
+msgstr "Error:"
 
 msgid "Change password"
 msgstr "Cambiar contrasinal"
@@ -454,9 +462,6 @@ msgstr "Escoller tema (tema actual: clar
 msgid "Toggle theme (current theme: dark)"
 msgstr "Escoller tema (tema actual: escuro)"
 
-msgid "Delete"
-msgstr "Eliminar"
-
 #, python-format
 msgid ""
 "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -492,9 +497,6 @@ msgstr "Sí, estou seguro"
 msgid "No, take me back"
 msgstr "Non, lévame de volta"
 
-msgid "Delete multiple objects"
-msgstr "Eliminar múltiples obxectos"
-
 #, python-format
 msgid ""
 "Deleting the selected %(objects_name)s would result in deleting related "
@@ -570,8 +572,8 @@ msgstr ""
 "Está identificado como %(username)s, pero non está autorizado para acceder a "
 "esta páxina. Gustaríalle identificarse con una conta diferente?"
 
-msgid "Forgotten your password or username?"
-msgstr "¿Olvidou o usuario ou contrasinal?"
+msgid "Forgotten your login credentials?"
+msgstr "¿Esquecéu as súas credenciales de logueo?"
 
 msgid "Toggle navigation"
 msgstr "Activar navegación"
@@ -738,8 +740,8 @@ msgstr ""
 msgid "Please go to the following page and choose a new password:"
 msgstr "Por favor vaia á seguinte páxina e elixa una nova contrasinal:"
 
-msgid "Your username, in case you’ve forgotten:"
-msgstr "No caso de que o esquecese, o seu nome de usuario é:"
+msgid "In case you’ve forgotten, you are:"
+msgstr "No caso de que se esquecera, vostede é:"
 
 msgid "Thanks for using our site!"
 msgstr "Grazas por usar o noso sitio web!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -5,14 +5,14 @@
 # fonso <fonzzo@gmail.com>, 2011,2013
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-# X Bello <xbello@gmail.com>, 2023
+# X Bello <xbello@gmail.com>, 2023,2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 15:04-0300\n"
-"PO-Revision-Date: 2023-12-04 07:59+0000\n"
-"Last-Translator: X Bello <xbello@gmail.com>, 2023\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: X Bello <xbello@gmail.com>, 2023,2025\n"
 "Language-Team: Galician (http://app.transifex.com/django/django/language/"
 "gl/)\n"
 "MIME-Version: 1.0\n"
@@ -27,12 +27,10 @@ msgstr "%s dispoñíbeis"
 
 #, javascript-format
 msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
+"Choose %s by selecting them and then select the \"Choose\" arrow button."
 msgstr ""
-"Esta é unha lista de %s dispoñíbeis. Pode escoller algúns seleccionándoos na "
-"caixa inferior e a continuación facendo clic na frecha \"Escoller\" situada "
-"entre as dúas caixas."
+"Elixa %s seleccionándoos e despóis seleccionando o botón \"Escoller\" ca "
+"flecha."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -41,18 +39,17 @@ msgstr "Escriba nesta caixa para filtrar
 msgid "Filter"
 msgstr "Filtro"
 
-msgid "Choose all"
-msgstr "Escoller todo"
-
 #, javascript-format
-msgid "Click to choose all %s at once."
-msgstr "Prema para escoller todos/as os/as '%s' dunha vez."
+msgid "Choose all %s"
+msgstr "Escoller tódolos %s"
 
-msgid "Choose"
-msgstr "Escoller"
+#, javascript-format
+msgid "Choose selected %s"
+msgstr "Escoller os %s seleccionados"
 
-msgid "Remove"
-msgstr "Retirar"
+#, javascript-format
+msgid "Remove selected %s"
+msgstr "Eliminar os %s seleccionados"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -60,23 +57,21 @@ msgstr "%s escollido/a(s)"
 
 #, javascript-format
 msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
+"Remove %s by selecting them and then select the \"Remove\" arrow button."
 msgstr ""
-"Esta é a lista de %s escollidos/as. Pode eliminar algúns seleccionándoos na "
-"caixa inferior e a continuación facendo clic na frecha \"Eliminar\" situada "
-"entre as dúas caixas."
+"Eliminar %s seleccionándoos e despóis seleccionando o botón \"Eliminar\" ca "
+"flecha."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr "Escriba nesta caixa para filtrar a lista de %s seleccionados."
 
-msgid "Remove all"
-msgstr "Retirar todos"
+msgid "(click to clear)"
+msgstr "(pulse para limpar)"
 
 #, javascript-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Faga clic para eliminar da lista todos/as os/as '%s' escollidos/as."
+msgid "Remove all %s"
+msgstr "Eliminar tódolos %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
@@ -321,9 +316,3 @@ msgstr "V"
 msgctxt "one letter Saturday"
 msgid "S"
 msgstr "S"
-
-msgid "Show"
-msgstr "Amosar"
-
-msgid "Hide"
-msgstr "Esconder"
Binary files 3:5.2.6-1/django/contrib/admin/locale/id/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/id/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/id/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/id/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/id/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/id/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -3,7 +3,7 @@
 # Translators:
 # Bayu Satiyo <itsyuukunz@gmail.com>, 2024
 # Claude Paroz <claude@2xlibre.net>, 2014
-# Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2024
+# Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # M Asep Indrayana <me@drayanaindra.com>, 2015
 # oon arfiandwi (OonID) <oon.arfiandwi@gmail.com>, 2016,2020
@@ -16,8 +16,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2024\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Fery Setiawan <gembelweb@gmail.com>, 2015-2019,2021-2025\n"
 "Language-Team: Indonesian (http://app.transifex.com/django/django/language/"
 "id/)\n"
 "MIME-Version: 1.0\n"
@@ -353,13 +353,13 @@ msgid "Models in the %(name)s applicatio
 msgstr "Model pada aplikasi %(name)s"
 
 msgid "Model name"
-msgstr ""
+msgstr "Nama model"
 
 msgid "Add link"
-msgstr ""
+msgstr "Tambah tautan"
 
 msgid "Change or view list link"
-msgstr ""
+msgstr "Rubah atau tampilkan tautan kunjungan"
 
 msgid "Add"
 msgstr "Tambah"
@@ -372,9 +372,10 @@ msgstr "Anda tidak memiliki izin untuk m
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
 msgstr ""
+"Setelah anda membuat pengguna, anda akan dapat merubah pilihan pengguna."
 
 msgid "Error:"
-msgstr ""
+msgstr "Kesalahan:"
 
 msgid "Change password"
 msgstr "Ganti sandi"
@@ -568,7 +569,7 @@ msgstr ""
 "mengakses halaman ini. Ingin mencoba mengakses menggunakan akun yang lain?"
 
 msgid "Forgotten your login credentials?"
-msgstr ""
+msgstr "Lupa kredensial masuk?"
 
 msgid "Toggle navigation"
 msgstr "Alihkan navigasi"
@@ -735,7 +736,7 @@ msgid "Please go to the following page a
 msgstr "Kunjungi laman di bawah ini dan ketikkan sandi baru:"
 
 msgid "In case you’ve forgotten, you are:"
-msgstr ""
+msgstr "Jika anda lupa, anda:"
 
 msgid "Thanks for using our site!"
 msgstr "Terima kasih telah menggunakan situs kami!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,7 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
-# Fery Setiawan <gembelweb@gmail.com>, 2015-2016,2021-2024
+# Fery Setiawan <gembelweb@gmail.com>, 2015-2016,2021-2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # oon arfiandwi (OonID) <oon.arfiandwi@gmail.com>, 2020
 # rodin <romihardiyanto@gmail.com>, 2011-2012
@@ -11,8 +11,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-25 15:04-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Fery Setiawan <gembelweb@gmail.com>, 2015-2016,2021-2024\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: Fery Setiawan <gembelweb@gmail.com>, 2015-2016,2021-2025\n"
 "Language-Team: Indonesian (http://app.transifex.com/django/django/language/"
 "id/)\n"
 "MIME-Version: 1.0\n"
@@ -29,6 +29,7 @@ msgstr "%s yang tersedia"
 msgid ""
 "Choose %s by selecting them and then select the \"Choose\" arrow button."
 msgstr ""
+"Pilih %s dengan memilih mereka dan kemudian memilih tombol panah \"Choose\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -39,15 +40,15 @@ msgstr "Filter"
 
 #, javascript-format
 msgid "Choose all %s"
-msgstr ""
+msgstr "Pilih semua %s"
 
 #, javascript-format
 msgid "Choose selected %s"
-msgstr ""
+msgstr "Pilih terpilih %s"
 
 #, javascript-format
 msgid "Remove selected %s"
-msgstr ""
+msgstr "Pindahkan terpilih %s"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -57,17 +58,19 @@ msgstr "%s terpilih"
 msgid ""
 "Remove %s by selecting them and then select the \"Remove\" arrow button."
 msgstr ""
+"Pindahkan%s dengan memilih mereka dan kemudian memilih tombol panah "
+"\"Remove\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr "Ketik di dalam kotak utnuk menyaring daftar dar %s terpilih."
 
 msgid "(click to clear)"
-msgstr ""
+msgstr "(klik untuk membersihkan)"
 
 #, javascript-format
 msgid "Remove all %s"
-msgstr ""
+msgstr "Pindahkan semua %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
Binary files 3:5.2.6-1/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/ko/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ko/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/ko/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ko/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -10,6 +10,7 @@
 # Hoseok Lee <ihooi77@gmail.com>, 2016
 # Ian Y. Choi <ianyrchoi@gmail.com>, 2015,2019
 # Jaehong Kim <mixe@korea.com>, 2011
+# Jamie Seol, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Jay Oh <theanswer.jay@gmail.com>, 2020
 # Le Tartuffe <magno79@gmail.com>, 2014,2016
@@ -29,8 +30,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Lee Dogeon <dev.moreal@gmail.com>, 2025\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Jamie Seol, 2025\n"
 "Language-Team: Korean (http://app.transifex.com/django/django/language/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -66,7 +67,7 @@ msgid "No"
 msgstr "아니오"
 
 msgid "Unknown"
-msgstr "알 수 없습니다."
+msgstr "알 수 없음"
 
 msgid "Any date"
 msgstr "언제나"
@@ -111,7 +112,7 @@ msgid "Add another %(verbose_name)s"
 msgstr "%(verbose_name)s 더 추가하기"
 
 msgid "Remove"
-msgstr "삭제하기"
+msgstr "삭제"
 
 msgid "Addition"
 msgstr "추가"
@@ -153,15 +154,15 @@ msgstr "로그 엔트리"
 
 #, python-format
 msgid "Added “%(object)s”."
-msgstr "\"%(object)s\"이/가 추가되었습니다."
+msgstr "\"%(object)s\" 추가됨."
 
 #, python-format
 msgid "Changed “%(object)s” — %(changes)s"
-msgstr "\"%(object)s\"이/가 \"%(changes)s\"(으)로 변경되었습니다."
+msgstr "\"%(object)s\" 변경됨 — \"%(changes)s\""
 
 #, python-format
 msgid "Deleted “%(object)s.”"
-msgstr "%(object)s를 삭제했습니다."
+msgstr "%(object)s 삭제됨."
 
 msgid "LogEntry Object"
 msgstr "로그 엔트리 객체"
@@ -371,13 +372,13 @@ msgid "Models in the %(name)s applicatio
 msgstr "%(name)s 애플리케이션의 모델"
 
 msgid "Model name"
-msgstr ""
+msgstr "모델 이름"
 
 msgid "Add link"
-msgstr ""
+msgstr "링크 추가"
 
 msgid "Change or view list link"
-msgstr ""
+msgstr "변경 또는 표시 링크"
 
 msgid "Add"
 msgstr "추가"
@@ -389,10 +390,10 @@ msgid "You don’t have permission to vi
 msgstr "독자는 뷰 및 수정 권한이 없습니다."
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
-msgstr ""
+msgstr "사용자를 생성한 후에 상세 정보를 편집할 수 있습니다."
 
 msgid "Error:"
-msgstr ""
+msgstr "오류:"
 
 msgid "Change password"
 msgstr "비밀번호 변경"
@@ -456,10 +457,10 @@ msgid "Show counts"
 msgstr "개수 표시"
 
 msgid "Clear all filters"
-msgstr "모든 필터 삭제"
+msgstr "모든 필터 해제"
 
 msgid "Remove from sorting"
-msgstr "정렬에서 "
+msgstr "정렬에서 삭제"
 
 #, python-format
 msgid "Sorting priority: %(priority_number)s"
@@ -586,7 +587,7 @@ msgstr ""
 "른 계정으로 로그인하시겠습니까?"
 
 msgid "Forgotten your login credentials?"
-msgstr ""
+msgstr "로그인 인증 정보를 잊으셨나요?"
 
 msgid "Toggle navigation"
 msgstr "토글 메뉴"
@@ -749,7 +750,7 @@ msgid "Please go to the following page a
 msgstr "다음 페이지에서 새 비밀번호를 선택하세요."
 
 msgid "In case you’ve forgotten, you are:"
-msgstr ""
+msgstr "잊으신 경우, 귀하의 사용자 이름은 다음과 같습니다:"
 
 msgid "Thanks for using our site!"
 msgstr "사이트를 이용해 주셔서 고맙습니다."
Binary files 3:5.2.6-1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -5,6 +5,7 @@
 # alexhojinpark, 2023
 # Hoseok Lee <ihooi77@gmail.com>, 2016
 # Jaehong Kim <mixe@korea.com>, 2011
+# Jamie Seol, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Jay Oh <theanswer.jay@gmail.com>, 2020
 # Le Tartuffe <magno79@gmail.com>, 2014
@@ -16,9 +17,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 15:04-0300\n"
-"PO-Revision-Date: 2023-12-04 07:59+0000\n"
-"Last-Translator: alexhojinpark, 2023\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: Jamie Seol, 2025\n"
 "Language-Team: Korean (http://app.transifex.com/django/django/language/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -32,11 +33,8 @@ msgstr "이용 가능한 %s"
 
 #, javascript-format
 msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"사용 가능한 %s 의 리스트 입니다.  아래의 상자에서 선택하고 두 상자 사이의 "
-"\"선택\" 화살표를 클릭하여 몇 가지를 선택할 수 있습니다."
+"Choose %s by selecting them and then select the \"Choose\" arrow button."
+msgstr "%s 선택 후 \"선택\" 화살표 버튼을 누르세요."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -45,18 +43,17 @@ msgstr "사용 가능한 %s 리스트를
 msgid "Filter"
 msgstr "필터"
 
-msgid "Choose all"
-msgstr "모두 선택"
-
 #, javascript-format
-msgid "Click to choose all %s at once."
-msgstr "한번에 모든 %s 를 선택하려면 클릭하세요."
+msgid "Choose all %s"
+msgstr "모든 %s 선택"
 
-msgid "Choose"
-msgstr "선택"
+#, javascript-format
+msgid "Choose selected %s"
+msgstr "선택한 %s 선택"
 
-msgid "Remove"
-msgstr "삭제"
+#, javascript-format
+msgid "Remove selected %s"
+msgstr "선택한 %s 삭제"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -64,22 +61,19 @@ msgstr "선택된 %s"
 
 #, javascript-format
 msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"선택된 %s 리스트 입니다.  아래의 상자에서 선택하고 두 상자 사이의 \"제거\" 화"
-"살표를 클릭하여 일부를 제거 할 수 있습니다."
+"Remove %s by selecting them and then select the \"Remove\" arrow button."
+msgstr "%s 선택 후 \"삭제하기\" 화살표 버튼을 누르세요."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr "선택된 %s의 리스트를 필터링 하려면 이 박스에 입력 하세요 ."
 
-msgid "Remove all"
-msgstr "모두 제거"
+msgid "(click to clear)"
+msgstr "(클릭하여 해제)"
 
 #, javascript-format
-msgid "Click to remove all chosen %s at once."
-msgstr "한번에 선택된 모든 %s 를 제거하려면 클릭하세요."
+msgid "Remove all %s"
+msgstr "모든 %s 삭제"
 
 #, javascript-format
 msgid "%s selected option not visible"
@@ -319,9 +313,3 @@ msgstr "금"
 msgctxt "one letter Saturday"
 msgid "S"
 msgstr "토"
-
-msgid "Show"
-msgstr "보기"
-
-msgid "Hide"
-msgstr "감추기"
Binary files 3:5.2.6-1/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/lv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # edgars <edgars.jekabsons@gmail.com>, 2011
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2023-2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2017,2022
@@ -15,8 +16,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Edgars Voroboks <edgars.voroboks@gmail.com>, 2023-2025\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
 "Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
@@ -32,17 +33,17 @@ msgstr "Izdzēst izvēlēto %(verbose_na
 
 #, python-format
 msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Veiksmīgi izdzēsti %(count)d %(items)s."
+msgstr "Sekmīgi izdzēsti %(count)d %(items)s."
 
 #, python-format
 msgid "Cannot delete %(name)s"
 msgstr "Nevar izdzēst %(name)s"
 
 msgid "Delete multiple objects"
-msgstr "Dzēst vairākus objektus"
+msgstr "Izdzēst vairākus objektus"
 
 msgid "Administration"
-msgstr "Administrācija"
+msgstr "Pārvaldīšana"
 
 msgid "All"
 msgstr "Visi"
@@ -88,8 +89,8 @@ msgid ""
 "Please enter the correct %(username)s and password for a staff account. Note "
 "that both fields may be case-sensitive."
 msgstr ""
-"Lūdzu ievadi korektu %(username)s un paroli personāla kontam. Ņem vērā, ka "
-"abi ievades lauki ir reģistrjutīgi."
+"Lūgums ievadīt pareizu %(username)s un paroli personāla kontam. Jāņem vērā, "
+"ka abi lauki var būt reģistrjutīgi."
 
 msgid "Action:"
 msgstr "Darbība:"
@@ -108,7 +109,7 @@ msgid "Change"
 msgstr "Izmainīt"
 
 msgid "Deletion"
-msgstr "Dzēšana"
+msgstr "Izdzēšana"
 
 msgid "action time"
 msgstr "darbības laiks"
@@ -117,10 +118,10 @@ msgid "user"
 msgstr "lietotājs"
 
 msgid "content type"
-msgstr "satura tips"
+msgstr "satura veids"
 
 msgid "object id"
-msgstr "objekta id"
+msgstr "objekta Id"
 
 #. Translators: 'repr' means representation
 #. (https://docs.python.org/library/functions.html#repr)
@@ -149,7 +150,7 @@ msgstr "Labots “%(object)s” — %(ch
 
 #, python-format
 msgid "Deleted “%(object)s.”"
-msgstr "Dzēsts “%(object)s.”"
+msgstr "Izdzēsts “%(object)s.”"
 
 msgid "LogEntry Object"
 msgstr "LogEntry Objekts"
@@ -174,7 +175,7 @@ msgstr "Mainīts {fields}."
 
 #, python-brace-format
 msgid "Deleted {name} “{object}”."
-msgstr "Dzēsts {name} “{object}”."
+msgstr "Izdzēsts {name} “{object}”."
 
 msgid "No fields changed."
 msgstr "Neviens lauks nav mainīts."
@@ -184,39 +185,38 @@ msgstr "nekas"
 
 msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
 msgstr ""
-"Turiet nospiestu “Control”, vai “Command” uz Mac, lai iezīmētu vairāk par "
-"vienu."
+"Jātur nospiests taustiņš “Control” vai “Command” Mac datorā, lai atlasītu "
+"vairāk par vienu."
 
 msgid "Select this object for an action - {}"
-msgstr "Atzīmējiet šo objektu darbībai - {}"
+msgstr "Atlasīt šo objektu darbībai - {}"
 
 #, python-brace-format
 msgid "The {name} “{obj}” was added successfully."
-msgstr "{name} “{obj}” veiksmīgi pievienots."
+msgstr "{name} “{obj}” sekmīgi pievienots."
 
 msgid "You may edit it again below."
-msgstr "Jūs varat to atkal labot zemāk. "
+msgstr "Zemāk vari to labot atkal."
 
 #, python-brace-format
 msgid ""
 "The {name} “{obj}” was added successfully. You may add another {name} below."
-msgstr "{name} “{obj}” veiksmīgi pievienots. Zemāk varat pievienot vēl {name}."
+msgstr "{name} “{obj}” sekmīgi pievienots. Zemāk var pievienot vēl {name}."
 
 #, python-brace-format
 msgid ""
 "The {name} “{obj}” was changed successfully. You may edit it again below."
-msgstr "{name} “{obj}” tika veiksmīgi mainīts. Zemāk varat to labot vēlreiz."
+msgstr "{name} “{obj}” tika sekmīgi mainīts. Zemāk to var labot vēlreiz."
 
 #, python-brace-format
 msgid ""
 "The {name} “{obj}” was changed successfully. You may add another {name} "
 "below."
-msgstr ""
-"{name} “{obj}” tika veiksmīgi mainīts. Zemāk varat pievienot vēl {name}."
+msgstr "{name} “{obj}” tika sekmīgi mainīts. Zemāk var pievienot vēl {name}."
 
 #, python-brace-format
 msgid "The {name} “{obj}” was changed successfully."
-msgstr "{name} “{obj}” tika veiksmīgi mainīts."
+msgstr "{name} “{obj}” tika sekmīgi mainīts."
 
 msgid ""
 "Items must be selected in order to perform actions on them. No items have "
@@ -230,11 +230,11 @@ msgstr "Nav izvēlēta darbība."
 
 #, python-format
 msgid "The %(name)s “%(obj)s” was deleted successfully."
-msgstr "%(name)s “%(obj)s” veiksmīgi dzēsts."
+msgstr "%(name)s “%(obj)s” sekmīgi izdzēsts."
 
 #, python-format
 msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
-msgstr "%(name)s ar ID “%(key)s” neeksistē. Varbūt tas ir dzēsts?"
+msgstr "%(name)s ar Id “%(key)s” nepastāv. Varbūt tas ir izdzēsts?"
 
 #, python-format
 msgid "Add %s"
@@ -254,23 +254,23 @@ msgstr "Datubāzes kļūda"
 #, python-format
 msgid "%(count)s %(name)s was changed successfully."
 msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s tika veiksmīgi mainīti."
-msgstr[1] "%(count)s %(name)s tika veiksmīgi mainīts."
-msgstr[2] "%(count)s %(name)s tika veiksmīgi mainīti."
+msgstr[0] "%(count)s %(name)s tika sekmīgi mainīti."
+msgstr[1] "%(count)s %(name)s tika sekmīgi mainīts."
+msgstr[2] "%(count)s %(name)s tika sekmīgi mainīti."
 
 #, python-format
 msgid "%(total_count)s selected"
 msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s izvēlēti"
-msgstr[1] "%(total_count)s izvēlēts"
-msgstr[2] "%(total_count)s izvēlēti"
+msgstr[0] "Atlasīti visi %(total_count)s"
+msgstr[1] "Atlasīti visi %(total_count)s"
+msgstr[2] "Atlasīti visi %(total_count)s "
 
 #, python-format
 msgid "0 of %(cnt)s selected"
-msgstr "0 no %(cnt)s izvēlēti"
+msgstr "Atlasīti 0 no %(cnt)s"
 
 msgid "Delete"
-msgstr "Dzēst"
+msgstr "Izdzēst"
 
 #, python-format
 msgid "Change history: %s"
@@ -288,30 +288,30 @@ msgid ""
 "Deleting %(class_name)s %(instance)s would require deleting the following "
 "protected related objects: %(related_objects)s"
 msgstr ""
-"%(class_name)s %(instance)s dzēšanai ir nepieciešams izdzēst sekojošus "
+"%(class_name)s %(instance)s izdzēšanai ir nepieciešams izdzēst sekojošus "
 "aizsargātus saistītos objektus: %(related_objects)s"
 
 msgid "Django site admin"
-msgstr "Django administrācijas lapa"
+msgstr "Django vietnes pārvaldīšana"
 
 msgid "Django administration"
-msgstr "Django administrācija"
+msgstr "Django pārvaldīšana"
 
 msgid "Site administration"
-msgstr "Lapas administrācija"
+msgstr "Vietnes pārvaldīšana"
 
 msgid "Log in"
-msgstr "Pieslēgties"
+msgstr "Pieteikties"
 
 #, python-format
 msgid "%(app)s administration"
-msgstr "%(app)s administrācija"
+msgstr "%(app)s pārvaldīšana"
 
 msgid "Page not found"
 msgstr "Lapa nav atrasta"
 
 msgid "We’re sorry, but the requested page could not be found."
-msgstr "Atvainojiet, pieprasītā lapa neeksistē."
+msgstr "Atvainojamies, pieprasītā lapa nav atrodama."
 
 msgid "Home"
 msgstr "Sākums"
@@ -329,8 +329,8 @@ msgid ""
 "There’s been an error. It’s been reported to the site administrators via "
 "email and should be fixed shortly. Thanks for your patience."
 msgstr ""
-"Notika kļūda. Lapas administratoriem ir nosūtīts e-pasts un kļūda tuvākajā "
-"laikā tiks novērsta. Paldies par pacietību."
+"Atgadījās kļūda. Lapas pārvaldītājiem ir nosūtīts e-pasta ziņojumus, un "
+"kļūdai tuvākajā laikā vajadzētu būt novērstai. Paldies par pacietību!"
 
 msgid "Run the selected action"
 msgstr "Izpildīt izvēlēto darbību"
@@ -371,12 +371,10 @@ msgid "View"
 msgstr "Apskatīt"
 
 msgid "You don’t have permission to view or edit anything."
-msgstr "Jums nav tiesību neko skatīt vai labot."
+msgstr "Nav tiesību neko apskatīt vai labot."
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
-msgstr ""
-"Kad būsiet izveidojis lietotāju, varēsiet rediģēt vairāk lietotāja "
-"uzstādījumus."
+msgstr "Pēc lietotāja izveidošanas varēsi labot vairāk lietotāja uzstādījumu."
 
 msgid "Error:"
 msgstr "Kļūda:"
@@ -391,30 +389,30 @@ msgid "Please correct the error below."
 msgid_plural "Please correct the errors below."
 msgstr[0] "Lūdzu, izlabojiet zemāk norādītās kļūdas."
 msgstr[1] "Lūdzu, izlabojiet zemāk norādīto kļūdu."
-msgstr[2] "Lūdzu, izlabojiet zemāk norādītās kļūdas."
+msgstr[2] "Lūgums izlabot zemāk esošās kļūdas."
 
 #, python-format
 msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Ievadiet jaunu paroli lietotājam <strong>%(username)s</strong>."
+msgstr "Jāievada jauna parole lietotājam <strong>%(username)s</strong>."
 
 msgid ""
 "This action will <strong>enable</strong> password-based authentication for "
 "this user."
 msgstr ""
-"Šī darbība šim lietotājam <strong>iespējos</strong> paroles bāzētu "
-"autentifikāciju."
+"Šī darbība šim lietotājam <strong>iespējos</strong> autentificēšanos ar "
+"paroli."
 
 msgid "Disable password-based authentication"
-msgstr "Atspējot paroles bāzētu autentifikāciju"
+msgstr "Atspējot autentificēšanos ar parol"
 
 msgid "Enable password-based authentication"
-msgstr "Iespējot paroles bāzētu autentifikāciju"
+msgstr "Iespējot autentificēšanos ar paroli"
 
 msgid "Skip to main content"
 msgstr "Pāriet uz galveno saturu"
 
 msgid "Welcome,"
-msgstr "Sveicināti,"
+msgstr "Laipni lūdzam,"
 
 msgid "View site"
 msgstr "Apskatīt lapu"
@@ -458,13 +456,13 @@ msgid "Toggle sorting"
 msgstr "Pārslēgt kārtošanu"
 
 msgid "Toggle theme (current theme: auto)"
-msgstr "Pārslēgt motīvu (pašreizējais motīvs: automātisks)"
+msgstr "Pārslēgt izskatu (pašreizējais izskats: automātisks)"
 
 msgid "Toggle theme (current theme: light)"
-msgstr "Pārslēgt motīvu (pašreizējais motīvs: gaišs)"
+msgstr "Pārslēgt izskatu (pašreizējais izskats: gaišs)"
 
 msgid "Toggle theme (current theme: dark)"
-msgstr "Pārslēgt motīvu (pašreizējais motīvs: tumšs)"
+msgstr "Pārslēgt izskatu (pašreizējais izskats: tumšs)"
 
 #, python-format
 msgid ""
@@ -472,8 +470,9 @@ msgid ""
 "related objects, but your account doesn't have permission to delete the "
 "following types of objects:"
 msgstr ""
-"Izdzēšot objektu %(object_name)s '%(escaped_object)s', tiks dzēsti visi "
-"saistītie objekti, bet jums nav tiesību dzēst sekojošus objektu tipus:"
+"%(object_name)s '%(escaped_object)s' izdzēšana novedīs pie visu saistīto "
+"objektu izdzēšanas, bet Tavam kontam nav tiesību izdzēst šādus objektu "
+"veidus:"
 
 #, python-format
 msgid ""
@@ -488,8 +487,8 @@ msgid ""
 "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
 "All of the following related items will be deleted:"
 msgstr ""
-"Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s "
-"\"%(escaped_object)s\"? Tiks dzēsti arī sekojoši saistītie objekti:"
+"Vai tiešām izdzēst %(object_name)s \"%(escaped_object)s\"? Tiks izdzēsti arī "
+"visi šie saistītie vienumi:"
 
 msgid "Objects"
 msgstr "Objekti"
@@ -506,8 +505,8 @@ msgid ""
 "objects, but your account doesn't have permission to delete the following "
 "types of objects:"
 msgstr ""
-"Izdzēšot izvēlēto %(objects_name)s, tiks dzēsti visi saistītie objekti, bet "
-"jums nav tiesību dzēst sekojošus objektu tipus:"
+"Atlasīto %(objects_name)s izdzēšana novedīs pie visu saistīto objektu "
+"izdzēšanas, bet Tavam kontam nav tiesību izdzēst šādus objektu veidus:"
 
 #, python-format
 msgid ""
@@ -522,11 +521,11 @@ msgid ""
 "Are you sure you want to delete the selected %(objects_name)s? All of the "
 "following objects and their related items will be deleted:"
 msgstr ""
-"Vai esat pārliecināts, ka vēlaties dzēst izvēlētos %(objects_name)s "
-"objektus? Visi sekojošie objekti un tiem piesaistītie objekti tiks izdzēsti:"
+"Vai tiešām izdzēst atlasītos %(objects_name)s? Visi šie objekti un ar tiem "
+"saistītie vienumi tiks izdzēsti:"
 
 msgid "Delete?"
-msgstr "Dzēst?"
+msgstr "Izdzēst?"
 
 #, python-format
 msgid " By %(filter_title)s "
@@ -561,31 +560,32 @@ msgid ""
 "database tables have been created, and make sure the database is readable by "
 "the appropriate user."
 msgstr ""
-"Problēma ar datubāzes instalāciju. Pārliecinieties, ka attiecīgās tabulas ir "
-"izveidotas un attiecīgajam lietotājam ir tiesības tai piekļūt."
+"Kaut kas nav kārtībā ar datubāzes uzstādīšanu. Jānodrošina, ka attiecīgās "
+"datubāzes tabulas ir izveidotas un attiecīgajam lietotājam tajā ir lasīšanas "
+"tiesības."
 
 #, python-format
 msgid ""
 "You are authenticated as %(username)s, but are not authorized to access this "
 "page. Would you like to login to a different account?"
 msgstr ""
-"Jūs esat autentificējies kā %(username)s, bet jums nav tiesību piekļūt šai "
-"lapai. Vai vēlaties pieteikties citā kontā?"
+"Tu autentificējies kā %(username)s, bet Tev nav pilnvaru piekļūt šai lapai. "
+"Vai vēlies pieteikties citā kontā?"
 
 msgid "Forgotten your login credentials?"
-msgstr "Aizmirsāt savus pieteikšanās datus?"
+msgstr "Aizmirsi savus pieteikšanās datus?"
 
 msgid "Toggle navigation"
-msgstr "Pārslēgt navigāciju"
+msgstr "Pārslēgt pāŗvietošanos"
 
 msgid "Sidebar"
 msgstr "Sānjosla"
 
 msgid "Start typing to filter…"
-msgstr "Sāciet rakstīt, lai atlasītu…"
+msgstr "Jāsāk rakstīt, lai atlasītu…"
 
 msgid "Filter navigation items"
-msgstr "Atlasīt navigācijas vienības"
+msgstr "Atlasīt pārvietošanās vienumus"
 
 msgid "Date/time"
 msgstr "Datums/laiks"
@@ -606,8 +606,8 @@ msgid ""
 "This object doesn’t have a change history. It probably wasn’t added via this "
 "admin site."
 msgstr ""
-"Objektam nav izmaiņu vēstures. Tas visdrīzāk netika pievienots, izmantojot "
-"šo administrācijas rīku."
+"Objektam nav izmaiņu vēstures. Visdrīzāk, ka tas netika pievienots šajā "
+"pārvaldīšanas vietnē."
 
 msgid "Show all"
 msgstr "Rādīt visu"
@@ -624,13 +624,13 @@ msgstr "Meklēt"
 #, python-format
 msgid "%(counter)s result"
 msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s rezultāti"
-msgstr[1] "%(counter)s rezultāts"
-msgstr[2] "%(counter)s rezultāti"
+msgstr[0] "%(counter)s iznākumu"
+msgstr[1] "%(counter)s iznākums"
+msgstr[2] "%(counter)s iznākumi"
 
 #, python-format
 msgid "%(full_result_count)s total"
-msgstr "kopā - %(full_result_count)s"
+msgstr "Pavisam %(full_result_count)s"
 
 msgid "Save as new"
 msgstr "Saglabāt kā jaunu"
@@ -657,7 +657,7 @@ msgstr "Pievienot citu %(model)s"
 
 #, python-format
 msgid "Delete selected %(model)s"
-msgstr "Dzēst izvēlēto %(model)s"
+msgstr "Izdzēst atlasīto %(model)s"
 
 #, python-format
 msgid "View selected %(model)s"
@@ -667,20 +667,20 @@ msgid "Thanks for spending some quality
 msgstr "Paldies, ka šodien vietnei veltījāt kvalitatīvu laiku."
 
 msgid "Log in again"
-msgstr "Pieslēgties vēlreiz"
+msgstr "Pieteikties vēlreiz"
 
 msgid "Password change"
 msgstr "Paroles maiņa"
 
 msgid "Your password was changed."
-msgstr "Jūsu parole tika nomainīta."
+msgstr "Tava parole tika nomainīta."
 
 msgid ""
 "Please enter your old password, for security’s sake, and then enter your new "
 "password twice so we can verify you typed it in correctly."
 msgstr ""
-"Drošības nolūkos ievadiet veco paroli un pēc tam divreiz jauno paroli, lai "
-"mēs varētu pārbaudīt, ka tā ir ievadīta pareizi."
+"Lūgums drošības nolūkos ievadīt savu veco paroli un pēc tam divreiz savu "
+"jauno paroli, lai mēs varētu apliecināt, ka tā ir ievadīta pareizi."
 
 msgid "Change my password"
 msgstr "Nomainīt manu paroli"
@@ -689,7 +689,7 @@ msgid "Password reset"
 msgstr "Paroles atiestatīšana"
 
 msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Jūsu parole ir iestatīta. Varat pieslēgties."
+msgstr "Tava parole tika iestatīta. Tagad vari pieteikties."
 
 msgid "Password reset confirmation"
 msgstr "Paroles atiestatīšanas apstiprinājums"
@@ -698,8 +698,8 @@ msgid ""
 "Please enter your new password twice so we can verify you typed it in "
 "correctly."
 msgstr ""
-"Lūdzu ievadiet jauno paroli divreiz, lai varētu pārbaudīt, ka tā ir "
-"uzrakstīta pareizi."
+"Lūgums divreiz ievadīt savu jauno paroli, lai mēs varētu apliecināt, ka tā "
+"ir ievadīta pareizi."
 
 msgid "New password:"
 msgstr "Jaunā parole:"
@@ -711,37 +711,36 @@ msgid ""
 "The password reset link was invalid, possibly because it has already been "
 "used.  Please request a new password reset."
 msgstr ""
-"Paroles atiestatīšanas saite bija nekorekta, iespējams, tā jau ir izmantota. "
-"Lūdzu pieprasiet paroles pārstatīšanu vēlreiz."
+"Paroles atiestatīšanas saite bija nederīga, iespējams, ka tāpēc, ka tā jau "
+"ir izmantota. Lūgums no jauna pieprasīt paroles atiestatīšanu."
 
 msgid ""
 "We’ve emailed you instructions for setting your password, if an account "
 "exists with the email you entered. You should receive them shortly."
 msgstr ""
-"Ja sistēmā ir konts ar jūsu e-pasta adresi, tad mēs jums tikko nosūtījām e-"
-"pasta ziņojumu ar paroles iestatīšanas instrukciju. Jums to tūlīt vajadzētu "
-"saņemt."
+"Mēs e-pastā nosūtījām paroles iestatīšanas norādes, ja pastāv konts ar "
+"ievadīto e-pasta adresi. Tās tūlīt vajadzētu saņemt."
 
 msgid ""
 "If you don’t receive an email, please make sure you’ve entered the address "
 "you registered with, and check your spam folder."
 msgstr ""
-"Ja nesaņemat e-pastu, lūdzu, pārliecinieties, vai esat ievadījis reģistrētu "
-"adresi un pārbaudiet savu mēstuļu mapi."
+"Ja nesaņēmi e-pasta ziņojumu, lūgums pārliecināties, vai ievadīji adresi, ar "
+"kuru reģistrējies, un pārbaudīt mēstuļu mapi."
 
 #, python-format
 msgid ""
 "You're receiving this email because you requested a password reset for your "
 "user account at %(site_name)s."
 msgstr ""
-"Jūs saņemat šo e-pasta ziņojumu, jo pieprasījāt atiestatīt lietotāja konta "
-"paroli vietnē %(site_name)s."
+"Tu saņem šo e-pasta ziņojumu, jo pieprasīji atiestatīt sava %(site_name)s "
+"lietotāja konta paroli."
 
 msgid "Please go to the following page and choose a new password:"
-msgstr "Lūdzu apmeklējiet sekojošo lapu un ievadiet jaunu paroli:"
+msgstr "Lūgums doties uz sekojošo lapu un izvēlēties jaunu paroli:"
 
 msgid "In case you’ve forgotten, you are:"
-msgstr "Ja aizmirsāt, jūs esat:"
+msgstr "Ja aizmirsi, Tu esi:"
 
 msgid "Thanks for using our site!"
 msgstr "Paldies par mūsu lapas lietošanu!"
@@ -754,8 +753,8 @@ msgid ""
 "Forgotten your password? Enter your email address below, and we’ll email "
 "instructions for setting a new one."
 msgstr ""
-"Aizmirsāt savu paroli? Ievadiet jūsu e-pasta adresi un jums tiks nosūtīta "
-"instrukcija, kā iestatīt jaunu paroli."
+"Aizmirsi savu paroli? Zemāk ievadi savu e-pasta adresi, un mēs nosūtīsim "
+"jaunas paroles iestatīšanas norādes."
 
 msgid "Email address:"
 msgstr "E-pasta adrese:"
@@ -764,22 +763,22 @@ msgid "Reset my password"
 msgstr "Paroles atiestatīšana"
 
 msgid "Select all objects on this page for an action"
-msgstr "Atlasiet visus šīs lapas objektus darbībai"
+msgstr "Atlasīt visus šīs lapas objektus darbībai"
 
 msgid "All dates"
 msgstr "Visi datumi"
 
 #, python-format
 msgid "Select %s"
-msgstr "Izvēlēties %s"
+msgstr "Atlasīt %s"
 
 #, python-format
 msgid "Select %s to change"
-msgstr "Izvēlēties %s, lai izmainītu"
+msgstr "Atlasīt %s, lai izmainītu"
 
 #, python-format
 msgid "Select %s to view"
-msgstr "Izvēlēties %s, lai apskatītu"
+msgstr "Atlasīt %s, lai apskatītu"
 
 msgid "Date:"
 msgstr "Datums:"
@@ -791,7 +790,7 @@ msgid "Lookup"
 msgstr "Pārlūkot"
 
 msgid "Currently:"
-msgstr "Valūta:"
+msgstr "Pašreiz:"
 
 msgid "Change:"
 msgstr "Izmaiņa:"
Binary files 3:5.2.6-1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2023,2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2017,2022
 # Jannis Leidel <jannis@leidel.info>, 2011
@@ -12,8 +13,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-25 15:04-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Edgars Voroboks <edgars.voroboks@gmail.com>, 2023,2025\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
 "Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
@@ -30,13 +31,11 @@ msgstr "Pieejams %s"
 #, javascript-format
 msgid ""
 "Choose %s by selecting them and then select the \"Choose\" arrow button."
-msgstr ""
-"Izvēlēties %s tos atzīmējot un tad izvēloties \"Izvēlēties\" bultiņas pogu."
+msgstr "Jāizvēlas %s ar atlasīšanu un tad jāatlasa bultas poga \"Izvēlēties\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-"Raksti šajā logā, lai filtrētu zemāk esošo sarakstu ar pieejamajiem %s."
+msgstr "Raksti šajā logā, lai atsijātu sarakstu ar pieejamajiem %s."
 
 msgid "Filter"
 msgstr "Filtrs"
@@ -47,7 +46,7 @@ msgstr "Izvēlēties visus %s"
 
 #, javascript-format
 msgid "Choose selected %s"
-msgstr "Izvēlieties atzīmētos %s"
+msgstr "Izvēlēties atlasītos %s"
 
 #, javascript-format
 msgid "Remove selected %s"
@@ -55,7 +54,7 @@ msgstr "Noņemt atzīmētos %s"
 
 #, javascript-format
 msgid "Chosen %s"
-msgstr "Izvēlies %s"
+msgstr "Izvēlēts %s"
 
 #, javascript-format
 msgid ""
@@ -64,10 +63,10 @@ msgstr "Noņemt %s tos atzīmējot un ta
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
-msgstr "Rakstiet šajā laukā, lai filtrētu atlasīto %s sarakstu."
+msgstr "Raksti šajā laukā, lai atsijātu atlasīto %s sarakstu."
 
 msgid "(click to clear)"
-msgstr "(klikšķiniet, lai notīrītu)"
+msgstr "(klikšķināt, lai notīrītu)"
 
 #, javascript-format
 msgid "Remove all %s"
@@ -76,9 +75,9 @@ msgstr "Noņemt visu %s"
 #, javascript-format
 msgid "%s selected option not visible"
 msgid_plural "%s selected options not visible"
-msgstr[0] "%s atlasītās opcijas nav redzamas"
-msgstr[1] "%s atlasītā opcija nav redzama"
-msgstr[2] "%s atlasītās opcijas nav redzamas"
+msgstr[0] "%s atlasīto iespēju nav redzamas"
+msgstr[1] "%s atlasītā iespēja nav redzama"
+msgstr[2] "%s atlasītās iespējas nav redzamas"
 
 msgid "%(sel)s of %(cnt)s selected"
 msgid_plural "%(sel)s of %(cnt)s selected"
@@ -90,24 +89,24 @@ msgid ""
 "You have unsaved changes on individual editable fields. If you run an "
 "action, your unsaved changes will be lost."
 msgstr ""
-"Jūs neesat saglabājis izmaiņas rediģējamiem laukiem. Ja jūs tagad "
-"izpildīsiet izvēlēto darbību, šīs izmaiņas netiks saglabātas."
+"Atsevišķi labojamiem laukiem ir nesaglabātas izmaiņas. Ja tiks izpildīta "
+"darbība, nesaglabātās izmaiņas tiks zaudētas."
 
 msgid ""
 "You have selected an action, but you haven’t saved your changes to "
 "individual fields yet. Please click OK to save. You’ll need to re-run the "
 "action."
 msgstr ""
-"Jūs esiet izvēlējies veikt darbību, bet neesiet saglabājis veiktās izmaiņas. "
-"Lūdzu nospiediet OK, lai saglabātu. Šo darbību jums nāksies izpildīt vēlreiz."
+"Ir atlasīta darbība, bet nav saglabātas laukos veiktās izmaiņas. Lūgums "
+"klikšķināt uz “Labi”, lai saglabātu. Darbība būs jāizpilda vēlreiz."
 
 msgid ""
 "You have selected an action, and you haven’t made any changes on individual "
 "fields. You’re probably looking for the Go button rather than the Save "
 "button."
 msgstr ""
-"Jūs esiet izvēlējies veikt darbību un neesiet mainījis nevienu lauku. Jūs "
-"droši vien meklējiet pogu 'Aiziet' nevis 'Saglabāt'."
+"Tu atlasīji darbību un laukos neveici nekādas izmaiņas. Iespējams, ka meklē "
+"pogu “Aiziet”, nevis “Saglabāt”."
 
 msgid "Now"
 msgstr "Tagad"
@@ -119,7 +118,7 @@ msgid "6 a.m."
 msgstr "06.00"
 
 msgid "Noon"
-msgstr "Pusdienas laiks"
+msgstr "Pusdiena"
 
 msgid "6 p.m."
 msgstr "6:00"
@@ -142,7 +141,7 @@ msgid "Choose a Time"
 msgstr "Izvēlies laiku"
 
 msgid "Choose a time"
-msgstr "Izvēlieties laiku"
+msgstr "Izvēlēties laiku"
 
 msgid "Cancel"
 msgstr "Atcelt"
Binary files 3:5.2.6-1/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/pt/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/pt/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/pt/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/pt/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -16,7 +16,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
 "Last-Translator: Manuela Silva <mmsrs@sky.com>, 2025\n"
 "Language-Team: Portuguese (http://app.transifex.com/django/django/language/"
 "pt/)\n"
@@ -360,13 +360,13 @@ msgid "Models in the %(name)s applicatio
 msgstr "Modelos na aplicação %(name)s"
 
 msgid "Model name"
-msgstr ""
+msgstr "Nome do modelo"
 
 msgid "Add link"
-msgstr ""
+msgstr "Adicionar hiperligação"
 
 msgid "Change or view list link"
-msgstr ""
+msgstr "Alterar ou ver a hiperligação da lista"
 
 msgid "Add"
 msgstr "Adicionar"
@@ -379,6 +379,7 @@ msgstr "Não tem permissões para visual
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
 msgstr ""
+"Depois de criar um utilizador, poderá editar mais opções de utilizador."
 
 msgid "Error:"
 msgstr ""
Binary files 3:5.2.6-1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -5,6 +5,7 @@
 # andrewsmedina <andrewsmedina@gmail.com>, 2016
 # Eduardo Cereto Carvalho, 2011
 # Eduardo Felipe Castegnaro <eduardo@onsign.tv>, 2024
+# Felipe Silveira (Felipebros) <felipeiturama@gmail.com>, 2025
 # Gabriel da Mota <gabrielmotaa@hotmail.com>, 2023
 # fa9e10542e458baef0599ae856e43651_13d2225, 2012
 # Jannis Leidel <jannis@leidel.info>, 2011
@@ -18,9 +19,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2025-03-25 15:04-0500\n"
-"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2021,2025\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: Felipe Silveira (Felipebros) <felipeiturama@gmail.com>, "
+"2025\n"
 "Language-Team: Portuguese (Brazil) (http://app.transifex.com/django/django/"
 "language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
@@ -48,15 +50,15 @@ msgstr "Filtro"
 
 #, javascript-format
 msgid "Choose all %s"
-msgstr ""
+msgstr "Escolher todos %s"
 
 #, javascript-format
 msgid "Choose selected %s"
-msgstr ""
+msgstr "Escolher selecionado(s) %s"
 
 #, javascript-format
 msgid "Remove selected %s"
-msgstr ""
+msgstr "Remover selecionado(s) %s"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -66,6 +68,7 @@ msgstr "%s escolhido(s)"
 msgid ""
 "Remove %s by selecting them and then select the \"Remove\" arrow button."
 msgstr ""
+"Remova %s selecionando-os e depois selecione o botão de seta \"Remover\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
@@ -76,7 +79,7 @@ msgstr "(clique para limpar)"
 
 #, javascript-format
 msgid "Remove all %s"
-msgstr ""
+msgstr "Remover todos %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
Binary files 3:5.2.6-1/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/ru/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ru/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/ru/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ru/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -10,16 +10,16 @@
 # Sergey <inoks@mail.ru>, 2016
 # Jannis Leidel <jannis@leidel.info>, 2011
 # SeryiMysh <vital@dorokhin.kz>, 2020
-# Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2024
+# Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2025
 # Дмитрий <nerosketch@gmail.com>, 2019
 # Bobsans <mr.bobsans@gmail.com>, 2018
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 07:05+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2025\n"
 "Language-Team: Russian (http://app.transifex.com/django/django/language/"
 "ru/)\n"
 "MIME-Version: 1.0\n"
@@ -42,8 +42,8 @@ msgstr "Успешно удалены %(
 msgid "Cannot delete %(name)s"
 msgstr "Не удается удалить %(name)s"
 
-msgid "Are you sure?"
-msgstr "Вы уверены?"
+msgid "Delete multiple objects"
+msgstr "Удалить несколько объектов"
 
 msgid "Administration"
 msgstr "Администрирование"
@@ -276,6 +276,9 @@ msgstr[3] "Выбраны все %(total
 msgid "0 of %(cnt)s selected"
 msgstr "Выбрано 0 объектов из %(cnt)s "
 
+msgid "Delete"
+msgstr "Удалить"
+
 #, python-format
 msgid "Change history: %s"
 msgstr "История изменений: %s"
@@ -359,6 +362,15 @@ msgstr "Хлебные крошки"
 msgid "Models in the %(name)s application"
 msgstr "Модели в приложении %(name)s"
 
+msgid "Model name"
+msgstr "Имя модели"
+
+msgid "Add link"
+msgstr "Добавить"
+
+msgid "Change or view list link"
+msgstr "Просмотреть или редактировать"
+
 msgid "Add"
 msgstr "Добавить"
 
@@ -368,15 +380,13 @@ msgstr "Просмотреть"
 msgid "You don’t have permission to view or edit anything."
 msgstr "У вас недостаточно полномочий для просмотра или изменения чего либо."
 
-msgid ""
-"First, enter a username and password. Then, you’ll be able to edit more user "
-"options."
+msgid "After you’ve created a user, you’ll be able to edit more user options."
 msgstr ""
-"Сначала введите имя пользователя и пароль. Затем вы сможете ввести больше "
-"информации о пользователе."
+"После того, как вы создадите пользователя, у вас появится больше "
+"возможностей по редактированию."
 
-msgid "Enter a username and password."
-msgstr "Введите имя пользователя и пароль."
+msgid "Error:"
+msgstr "Ошибка:"
 
 msgid "Change password"
 msgstr "Изменить пароль"
@@ -464,9 +474,6 @@ msgstr "Переключить тему
 msgid "Toggle theme (current theme: dark)"
 msgstr "Переключить тему (текущая: тёмная)"
 
-msgid "Delete"
-msgstr "Удалить"
-
 #, python-format
 msgid ""
 "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -502,9 +509,6 @@ msgstr "Да, я уверен"
 msgid "No, take me back"
 msgstr "Нет, отменить и вернуться к выбору"
 
-msgid "Delete multiple objects"
-msgstr "Удалить несколько объектов"
-
 #, python-format
 msgid ""
 "Deleting the selected %(objects_name)s would result in deleting related "
@@ -579,8 +583,8 @@ msgstr ""
 "просмотра данной страницы. Возможно, вы хотели бы войти в систему, используя "
 "другую учётную запись?"
 
-msgid "Forgotten your password or username?"
-msgstr "Забыли свой пароль или имя пользователя?"
+msgid "Forgotten your login credentials?"
+msgstr "Забыли пароль?"
 
 msgid "Toggle navigation"
 msgstr "Переключить навигацию"
@@ -750,8 +754,8 @@ msgstr ""
 msgid "Please go to the following page and choose a new password:"
 msgstr "Пожалуйста, перейдите на эту страницу и введите новый пароль:"
 
-msgid "Your username, in case you’ve forgotten:"
-msgstr "Ваше имя пользователя (на случай, если вы его забыли):"
+msgid "In case you’ve forgotten, you are:"
+msgstr "На случай, если вы забыли, вы: "
 
 msgid "Thanks for using our site!"
 msgstr "Спасибо, что используете наш сайт!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -9,16 +9,17 @@
 # crazyzubr <hjcnbckfd@gmail.com>, 2020
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Panasoft, 2021
-# Алексей Борискин <sun.void@gmail.com>, 2012,2014-2015,2022-2023
+# Pavel Kutsenko <zebartcoc@gmail.com>, 2025
+# Алексей Борискин <sun.void@gmail.com>, 2012,2014-2015,2022-2023,2025
 # Андрей Щуров <shurov9009@gmail.com>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 15:04-0300\n"
-"PO-Revision-Date: 2023-12-04 07:59+0000\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
 "Last-Translator: Алексей Борискин <sun.void@gmail.com>, "
-"2012,2014-2015,2022-2023\n"
+"2012,2014-2015,2022-2023,2025\n"
 "Language-Team: Russian (http://app.transifex.com/django/django/language/"
 "ru/)\n"
 "MIME-Version: 1.0\n"
@@ -35,11 +36,10 @@ msgstr "Доступные %s"
 
 #, javascript-format
 msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
+"Choose %s by selecting them and then select the \"Choose\" arrow button."
 msgstr ""
-"Это список всех доступных %s. Вы можете выбрать некоторые из них, выделив их "
-"в поле ниже и кликнув \"Выбрать\", либо двойным щелчком."
+"Выделите элементы в списке \"%s\" и нажмите кнопку со стрелкой вправо, чтобы "
+"добавить их к выбранным."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -49,18 +49,17 @@ msgstr ""
 msgid "Filter"
 msgstr "Фильтр"
 
-msgid "Choose all"
-msgstr "Выбрать все"
-
 #, javascript-format
-msgid "Click to choose all %s at once."
-msgstr "Нажмите, чтобы выбрать все %s сразу."
+msgid "Choose all %s"
+msgstr "Выбрать все %s"
 
-msgid "Choose"
-msgstr "Выбрать"
+#, javascript-format
+msgid "Choose selected %s"
+msgstr "Выбрать отмеченные %s"
 
-msgid "Remove"
-msgstr "Удалить"
+#, javascript-format
+msgid "Remove selected %s"
+msgstr "Удалить отмеченные %s"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -68,23 +67,22 @@ msgstr "Выбранные %s"
 
 #, javascript-format
 msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
+"Remove %s by selecting them and then select the \"Remove\" arrow button."
 msgstr ""
-"Это список выбранных %s. Вы можете удалить некоторые из них, выделив их в "
-"поле ниже и кликнув \"Удалить\", либо двойным щелчком."
+"Выделите элементы в списке \"%s\" и и нажмите стрелку влево, чтобы убрать их "
+"из выбранных."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr ""
 "Набирайте символы в этом поле, чтобы отфильтровать список выбранных %s."
 
-msgid "Remove all"
-msgstr "Удалить все"
+msgid "(click to clear)"
+msgstr "(нажмите, чтобы очистить)"
 
 #, javascript-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Нажмите чтобы удалить все %s сразу."
+msgid "Remove all %s"
+msgstr "Удалить все %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
@@ -342,9 +340,3 @@ msgstr "П"
 msgctxt "one letter Saturday"
 msgid "S"
 msgstr "С"
-
-msgid "Show"
-msgstr "Показать"
-
-msgid "Hide"
-msgstr "Скрыть"
Binary files 3:5.2.6-1/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/sk/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sk/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/sk/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sk/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,7 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
-# Adam Zahradník, 2023-2024
+# Adam Zahradník, 2023-2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # 18f25ad6fa9930fc67cb11aca9d16a27, 2012-2013
 # Marian Andre <marian@andre.sk>, 2013-2015,2017,2025
@@ -15,9 +15,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2025-03-19 11:30-0500\n"
-"Last-Translator: Marian Andre <marian@andre.sk>, 2013-2015,2017,2025\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Adam Zahradník, 2023-2025\n"
 "Language-Team: Slovak (http://app.transifex.com/django/django/language/sk/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -360,13 +360,13 @@ msgid "Models in the %(name)s applicatio
 msgstr "Modely v %(name)s aplikácii"
 
 msgid "Model name"
-msgstr ""
+msgstr "Názov modelu"
 
 msgid "Add link"
-msgstr "Pridať odkaz"
+msgstr "Odkaz na pridanie"
 
 msgid "Change or view list link"
-msgstr ""
+msgstr "Odkaz na úpravu alebo zoznam"
 
 msgid "Add"
 msgstr "Pridať"
@@ -378,7 +378,7 @@ msgid "You don’t have permission to vi
 msgstr "Nemáte právo na zobrazenie alebo vykonávanie zmien."
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
-msgstr ""
+msgstr "Po vytvorení používateľa budete môcť upraviť ostané možnosti."
 
 msgid "Error:"
 msgstr "Chyba:"
@@ -748,7 +748,7 @@ msgid "Please go to the following page a
 msgstr "Prosím, choďte na túto stránku a zvoľte si nové heslo:"
 
 msgid "In case you’ve forgotten, you are:"
-msgstr ""
+msgstr "Ak ste zabudli, vaše používateľské meno je:"
 
 msgid "Thanks for using our site!"
 msgstr "Ďakujeme, že používate našu stránku!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/sv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/sv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -7,15 +7,22 @@
 # Andreas Pelme <andreas@pelme.se>, 2014
 # d7bcbd5f5cbecdc2b959899620582440, 2011
 # Cybjit <cybjit@gmail.com>, 2012
+# d7bcbd5f5cbecdc2b959899620582440, 2011
 # Elias Johnstone <eli87as@gmail.com>, 2022
 # Henrik Palmlund Wahlgren <henrik@pwit.se>, 2019
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Johan Rohdin, 2021
+# Johan Rohdin, 2021
+# Jonathan Lindén, 2014-2015
 # Jonathan Lindén, 2015
 # Jörgen Olofsson, 2024
+# Jörgen Olofsson, 2024
 # Jonathan Lindén, 2014
 # metteludwig <luudde@gmail.com>, 2019
 # Mattias Hansson <mattias.gothenburg@gmail.com>, 2016
+# metteludwig <luudde@gmail.com>, 2019
+# Mikko Hellsing <mikko@aino.se>, 2011
+# nip3o <n@niclasolofsson.se>, 2024
 # nip3o <n@niclasolofsson.se>, 2024
 # Mikko Hellsing <mikko@aino.se>, 2011
 # Thomas Lundqvist, 2013,2016-2017
@@ -24,8 +31,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: nip3o <n@niclasolofsson.se>, 2024\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: Mikko Hellsing <mikko@aino.se>, 2011\n"
 "Language-Team: Swedish (http://app.transifex.com/django/django/language/"
 "sv/)\n"
 "MIME-Version: 1.0\n"
@@ -40,7 +47,7 @@ msgstr "Ta bort markerade %(verbose_name
 
 #, python-format
 msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Tog bort %(count)d %(items)s"
+msgstr "Tog bort %(count)d %(items)s."
 
 #, python-format
 msgid "Cannot delete %(name)s"
@@ -202,7 +209,7 @@ msgid "The {name} “{obj}” was added
 msgstr "Lade till {name} “{obj}”."
 
 msgid "You may edit it again below."
-msgstr "Du kan redigera det igen nedan"
+msgstr "Du kan redigera det igen nedan."
 
 #, python-brace-format
 msgid ""
@@ -359,13 +366,13 @@ msgid "Models in the %(name)s applicatio
 msgstr "Modeller i applikationen %(name)s"
 
 msgid "Model name"
-msgstr ""
+msgstr "Modellens namn"
 
 msgid "Add link"
-msgstr ""
+msgstr "Lägg till länk"
 
 msgid "Change or view list link"
-msgstr ""
+msgstr "Ändra eller visa listlänk"
 
 msgid "Add"
 msgstr "Lägg till"
@@ -378,9 +385,10 @@ msgstr "Du har inte tillåtelse att se e
 
 msgid "After you’ve created a user, you’ll be able to edit more user options."
 msgstr ""
+"När du har skapat en användare kan du redigera fler användaralternativ."
 
 msgid "Error:"
-msgstr ""
+msgstr "Fel:"
 
 msgid "Change password"
 msgstr "Ändra lösenord"
@@ -525,7 +533,7 @@ msgid ""
 "following objects and their related items will be deleted:"
 msgstr ""
 "Är du säker på att du vill ta bort valda %(objects_name)s? Alla följande "
-"objekt samt relaterade objekt kommer att tas bort: "
+"objekt samt relaterade objekt kommer att tas bort:"
 
 msgid "Delete?"
 msgstr "Radera?"
@@ -576,7 +584,7 @@ msgstr ""
 "sida. Vill du logga in med ett annat konto?"
 
 msgid "Forgotten your login credentials?"
-msgstr ""
+msgstr "Har du glömt dina inloggningsuppgifter?"
 
 msgid "Toggle navigation"
 msgstr "Växla navigering"
@@ -585,7 +593,7 @@ msgid "Sidebar"
 msgstr "Sidopanel"
 
 msgid "Start typing to filter…"
-msgstr "Börja skriv för att filtrera..."
+msgstr "Börja skriv för att filtrera…"
 
 msgid "Filter navigation items"
 msgstr "Filtrera navigeringsobjekt"
@@ -618,7 +626,7 @@ msgid "Save"
 msgstr "Spara"
 
 msgid "Popup closing…"
-msgstr "Popup stängs..."
+msgstr "Popup stängs…"
 
 msgid "Search"
 msgstr "Sök"
@@ -742,7 +750,7 @@ msgid "Please go to the following page a
 msgstr "Var god gå till följande sida och välj ett nytt lösenord:"
 
 msgid "In case you’ve forgotten, you are:"
-msgstr ""
+msgstr "Om du har glömt det, du är:"
 
 msgid "Thanks for using our site!"
 msgstr "Tack för att du använder vår webbplats!"
Binary files 3:5.2.6-1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po
--- 3:5.2.6-1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po	2025-11-27 12:32:16.000000000 +0000
@@ -4,21 +4,26 @@
 # Anders Hovmöller <boxed@killingar.net>, 2023
 # Andreas Pelme <andreas@pelme.se>, 2012,2024
 # Danijel Grujicic, 2023
+# Danijel Grujicic, 2023
 # Elias Johnstone <eli87as@gmail.com>, 2022
 # Jannis Leidel <jannis@leidel.info>, 2011
+# Jonathan Lindén, 2014
+# Jörgen Olofsson, 2024
 # Jörgen Olofsson, 2024
 # Jonathan Lindén, 2014
+# Mattias Benjaminsson <mattias@colourandcode.se>, 2011
 # Mattias Hansson <mattias.gothenburg@gmail.com>, 2016
 # Mattias Benjaminsson <mattias@colourandcode.se>, 2011
 # Samuel Linde <samuel@linde.im>, 2011
 # Thomas Lundqvist, 2016
+# Thomas Lundqvist, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 07:59+0000\n"
-"Last-Translator: Jörgen Olofsson, 2024\n"
+"POT-Creation-Date: 2025-03-25 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 07:59+0000\n"
+"Last-Translator: Thomas Lundqvist, 2016\n"
 "Language-Team: Swedish (http://app.transifex.com/django/django/language/"
 "sv/)\n"
 "MIME-Version: 1.0\n"
@@ -33,12 +38,8 @@ msgstr "Tillgängliga %s"
 
 #, javascript-format
 msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Detta är listan med tillgängliga %s. Du kan välja ut vissa genom att markera "
-"dem i rutan nedan och sedan klicka på \"Välj\"-knapparna mellan de två "
-"rutorna."
+"Choose %s by selecting them and then select the \"Choose\" arrow button."
+msgstr "Välj %s genom att markera dem och sedan välja pilknappen \"Välj\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of available %s."
@@ -47,18 +48,17 @@ msgstr "Skriv i denna ruta för att filt
 msgid "Filter"
 msgstr "Filter"
 
-msgid "Choose all"
-msgstr "Välj alla"
-
 #, javascript-format
-msgid "Click to choose all %s at once."
-msgstr "Klicka för att välja alla %s på en gång."
+msgid "Choose all %s"
+msgstr "Välj alla %s"
 
-msgid "Choose"
-msgstr "Välj"
+#, javascript-format
+msgid "Choose selected %s"
+msgstr "Välj vald %s"
 
-msgid "Remove"
-msgstr "Ta bort"
+#, javascript-format
+msgid "Remove selected %s"
+msgstr "Ta bort markerad %s"
 
 #, javascript-format
 msgid "Chosen %s"
@@ -66,22 +66,20 @@ msgstr "Välj %s"
 
 #, javascript-format
 msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
+"Remove %s by selecting them and then select the \"Remove\" arrow button."
 msgstr ""
-"Detta är listan med utvalda %s. Du kan ta bort vissa genom att markera dem i "
-"rutan nedan och sedan klicka på \"Ta bort\"-pilen mellan de två rutorna."
+"Ta bort %s genom att markera dem och sedan välja pilknappen \"Ta bort\"."
 
 #, javascript-format
 msgid "Type into this box to filter down the list of selected %s."
 msgstr "Skriv i denna ruta för att filtrera listan av tillgängliga %s."
 
-msgid "Remove all"
-msgstr "Ta bort alla"
+msgid "(click to clear)"
+msgstr "(klicka för att rensa)"
 
 #, javascript-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klicka för att ta bort alla valda %s på en gång."
+msgid "Remove all %s"
+msgstr "Ta bort alla %s"
 
 #, javascript-format
 msgid "%s selected option not visible"
Binary files 3:5.2.6-1/django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,24 +2,25 @@
 #
 # Translators:
 # Chen Chun-Chia <ccc.larc@gmail.com>, 2015
-# coby2023t, 2025
+# yubike, 2025
 # ilay <ilay@ilay.tw>, 2012
 # Jannis Leidel <jannis@leidel.info>, 2011
 # mail6543210 <mail6543210@yahoo.com.tw>, 2013-2014
 # 0a3cb7bfd0810218facdfb511e592a6d_8d19d07 <c136e508049103f37d35b6c3314e9b1d_5225>, 2011
 # tcc <tcchou@tcchou.org>, 2011
 # Tzu-ping Chung <uranusjr@gmail.com>, 2016-2017
+# W. H. Wang <mattwang44@gmail.com>, 2025
 # YAO WEN LIANG, 2024
 # Yeh-Yung <yyc1217@gmail.com>, 2013
-# coby2023t, 2024
+# yubike, 2024
 # Yeh-Yung <yyc1217@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: coby2023t, 2025\n"
+"PO-Revision-Date: 2025-09-17 07:05+0000\n"
+"Last-Translator: W. H. Wang <mattwang44@gmail.com>, 2025\n"
 "Language-Team: Chinese (Taiwan) (http://app.transifex.com/django/django/"
 "language/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -347,7 +348,7 @@ msgid "Models in the %(name)s applicatio
 msgstr "%(name)s 應用程式中的模型"
 
 msgid "Model name"
-msgstr "型號"
+msgstr "模型名稱"
 
 msgid "Add link"
 msgstr "加入鏈結"
@@ -368,7 +369,7 @@ msgid "After you’ve created a user, yo
 msgstr "建立帳號後即可編輯更多用戶選項。"
 
 msgid "Error:"
-msgstr "錯誤:"
+msgstr "錯誤："
 
 msgid "Change password"
 msgstr "修改密碼"
@@ -554,7 +555,7 @@ msgstr ""
 "入？"
 
 msgid "Forgotten your login credentials?"
-msgstr "忘記您的簽入証 ?"
+msgstr "忘記您的登入驗證資訊 ?"
 
 msgid "Toggle navigation"
 msgstr "切換導航"
diff -pruN 3:5.2.6-1/django/contrib/admin/static/admin/css/widgets.css 3:5.2.9-0ubuntu1/django/contrib/admin/static/admin/css/widgets.css
--- 3:5.2.6-1/django/contrib/admin/static/admin/css/widgets.css	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/static/admin/css/widgets.css	2025-12-02 12:30:32.000000000 +0000
@@ -49,7 +49,7 @@
     padding: 8px;
 }
 
-.aligned .selector-chosen-title label {
+.selector-chosen-title label {
     color: var(--header-link-color);
     width: 100%;
 }
@@ -60,7 +60,7 @@
     padding: 8px;
 }
 
-.aligned .selector-available-title label {
+.selector-available-title label {
     width: 100%;
 }
 
diff -pruN 3:5.2.6-1/django/contrib/admin/templatetags/base.py 3:5.2.9-0ubuntu1/django/contrib/admin/templatetags/base.py
--- 3:5.2.6-1/django/contrib/admin/templatetags/base.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admin/templatetags/base.py	2025-12-02 12:26:58.000000000 +0000
@@ -1,6 +1,7 @@
 from inspect import getfullargspec
 
 from django.template.library import InclusionNode, parse_bits
+from django.utils.inspect import lazy_annotations
 
 
 class InclusionAdminNode(InclusionNode):
@@ -11,9 +12,10 @@ class InclusionAdminNode(InclusionNode):
 
     def __init__(self, parser, token, func, template_name, takes_context=True):
         self.template_name = template_name
-        params, varargs, varkw, defaults, kwonly, kwonly_defaults, _ = getfullargspec(
-            func
-        )
+        with lazy_annotations():
+            params, varargs, varkw, defaults, kwonly, kwonly_defaults, _ = (
+                getfullargspec(func)
+            )
         bits = token.split_contents()
         args, kwargs = parse_bits(
             parser,
Binary files 3:5.2.6-1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -3,14 +3,14 @@
 # Translators:
 # Ali Ismayilov <ali@ismailov.info>, 2011
 # Nicat Məmmədov <n1c4t97@gmail.com>, 2022
-# Nijat Mammadov, 2024
+# Nijat Mammadov, 2024-2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-01-15 09:00+0100\n"
-"PO-Revision-Date: 2024-08-07 20:19+0000\n"
-"Last-Translator: Nijat Mammadov, 2024\n"
+"PO-Revision-Date: 2025-09-17 20:19+0000\n"
+"Last-Translator: Nijat Mammadov, 2024-2025\n"
 "Language-Team: Azerbaijani (http://app.transifex.com/django/django/language/"
 "az/)\n"
 "MIME-Version: 1.0\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Administrative Documentation"
-msgstr "Administrativ Dokumentasiya"
+msgstr "İdarəçi Sənədləşməsi"
 
 msgid "Home"
 msgstr "Ev"
@@ -32,25 +32,24 @@ msgid "Bookmarklets"
 msgstr "Bukmarkletlər"
 
 msgid "Documentation bookmarklets"
-msgstr "Dokumentasiya bukmarkletləri"
+msgstr "Sənədləşmə əlfəcinləri"
 
 msgid ""
 "To install bookmarklets, drag the link to your bookmarks toolbar, or right-"
 "click the link and add it to your bookmarks. Now you can select the "
 "bookmarklet from any page in the site."
 msgstr ""
-"Bukmarkletləri quraşdırmaq üçün linki əlfəcin alətləri panelinizə sürükləyin "
+"Sənədləşmələri quraşdırmaq üçün linki əlfəcin alətləri panelinizə sürükləyin "
 "və ya linki sağ klikləyin və onu əlfəcinlərinizə əlavə edin. İndi siz saytın "
 "istənilən səhifəsindən bukmarklet seçə bilərsiniz."
 
 msgid "Documentation for this page"
-msgstr "Bu səhifənin dokumentasiyası"
+msgstr "Bu səhifənin sənədləri"
 
 msgid ""
 "Jumps you from any page to the documentation for the view that generates "
 "that page."
-msgstr ""
-"Hər hansı səhifəni əmələ gətirən funksiyanın dokumentasiyasını göstərir."
+msgstr "Hər hansı səhifəni yaradan funksiyanın sənədləşməsini göstərir."
 
 msgid "Tags"
 msgstr "Teqlər"
@@ -59,13 +58,13 @@ msgid "List of all the template tags and
 msgstr "Bütün şablon teqləri və onların funksiyaları."
 
 msgid "Filters"
-msgstr "Filterlər"
+msgstr "Süzgəclər"
 
 msgid ""
 "Filters are actions which can be applied to variables in a template to alter "
 "the output."
 msgstr ""
-"Filterlər şablondakı dəyişənlərə nəticəni dəyişmək üçün tətbiq oluna bilən "
+"Süzgəclər şablondakı dəyişənlərə nəticəni dəyişmək üçün tətbiq oluna bilən "
 "əməliyyatlarıdr."
 
 msgid "Models"
@@ -170,20 +169,20 @@ msgid "Back to Documentation"
 msgstr "Dokumentasiyaya qayıt"
 
 msgid "Template filters"
-msgstr "Şablon filterləri"
+msgstr "Şablon süzgəcləri"
 
 msgid "Template filter documentation"
-msgstr "Şablon filter dokumentasiyası"
+msgstr "Şablon süzgəc dokumentasiyası"
 
 msgid "Built-in filters"
-msgstr "Qurlu filterlər"
+msgstr "Qurulmuş süzgəclər"
 
 #, python-format
 msgid ""
 "To use these filters, put <code>%(code)s</code> in your template before "
 "using the filter."
 msgstr ""
-"Bu filterləri istifadə etmək üçün, şablonun əvvəlinə bunu qoyun: "
+"Bu süzgəclərdən istifadə etmək üçün, şablonun əvvəlinə bunu qoyun: "
 "<code>%(code)s</code> "
 
 msgid "Template tags"
Binary files 3:5.2.6-1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po	2025-08-14 13:30:54.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,18 +1,19 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
-# NullIsNot0 <nullisnot0@inbox.lv>, 2017
+# Edgars Andersons, 2025
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2017
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Māris Nartišs <maris.gis@gmail.com>, 2016
-# NullIsNot0 <nullisnot0@inbox.lv>, 2019,2021
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2019,2021
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-01-15 09:00+0100\n"
-"PO-Revision-Date: 2021-01-25 22:44+0000\n"
-"Last-Translator: NullIsNot0 <nullisnot0@inbox.lv>\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 20:19+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -22,7 +23,7 @@ msgstr ""
 "2);\n"
 
 msgid "Administrative Documentation"
-msgstr "Administrācijas dokumentācija"
+msgstr "Pārvaldīšanas dokumentācija"
 
 msgid "Home"
 msgstr "Sākums"
@@ -31,7 +32,7 @@ msgid "Documentation"
 msgstr "Dokumentācija"
 
 msgid "Bookmarklets"
-msgstr "Grāmatzīmes"
+msgstr "Grāmatzīmju sīklietotnes"
 
 msgid "Documentation bookmarklets"
 msgstr "Dokumentācijas grāmatzīmes"
@@ -41,25 +42,25 @@ msgid ""
 "click the link and add it to your bookmarks. Now you can select the "
 "bookmarklet from any page in the site."
 msgstr ""
-"Lai instalētu bukmarkletu, velciet saiti uz grāmatzīmju rīkjoslu, vai ar "
-"peles labo pogu noklikšķiniet uz saites un pievienojiet to savām "
-"grāmatzīmēm. Tagad jūs varat izvēlēties bukmarkletu no jebkuras vietnes "
-"lapas."
+"Lai uzstādītu grāmatzīmju sīklietotni, saiti jāievelk grāmatzīmju rīkjoslā "
+"vai ar peles labo pogu jāklikšķina uz saites un jāpievieno tā savām "
+"grāmatzīmēm. Tagad vari izvēlēties grāmatzīmju sīklietotni jebkurā vietnes "
+"lapā."
 
 msgid "Documentation for this page"
-msgstr "Dokumentācija šai lapai"
+msgstr "Šīs lapas dokumentācija"
 
 msgid ""
 "Jumps you from any page to the documentation for the view that generates "
 "that page."
 msgstr ""
-"Pārvieto no jebkuras lapas uz tā skata dokumentāciju, kas ģenerē šo lapu."
+"Pārlec no jebkuras lapas uz tā skata, kas izveido šo lapu, dokumentāciju."
 
 msgid "Tags"
 msgstr "Tagi"
 
 msgid "List of all the template tags and their functions."
-msgstr "Visu šablonu tagu un to funkciju saraksts."
+msgstr "Visu veidņu tagu un to funkciju saraksts."
 
 msgid "Filters"
 msgstr "Filtri"
@@ -68,8 +69,8 @@ msgid ""
 "Filters are actions which can be applied to variables in a template to alter "
 "the output."
 msgstr ""
-"Filtri ir darbības, kuras var tikt pielietotas šablona mainīgajiem, lai "
-"mainītu izvades rezultātu."
+"Filtri ir darbības, kuras var tikt pielietotas veidnes mainīgajiem, lai "
+"izmainītu izvades iznākumu."
 
 msgid "Models"
 msgstr "Modeļi"
@@ -80,7 +81,7 @@ msgid ""
 "template variables"
 msgstr ""
 "Modeļi ir visu sistēmas objektu un to saistīto lauku apraksti. Katram "
-"modelim ir saraksts ar laukiem, kuriem var piekļūt kā šablonu mainīgajiem"
+"modelim ir saraksts ar laukiem, kuriem var piekļūt kā veidnes mainīgajiem"
 
 msgid "Views"
 msgstr "Skati"
@@ -90,29 +91,28 @@ msgid ""
 "template is used to generate the page and which objects are available to "
 "that template."
 msgstr ""
-"Katru lapu publiskajā vietnē ģenerē skats. Skats nosaka, kuru šablonu "
-"izmanto lapas ģenerēšanai un kādi objekti ir pieejami šim šablonam."
+"Katru lapu publiskajā vietnē izveido skats. Skats nosaka, kuru veidni "
+"izmanto lapas izveidošanai un kuri objekti ir pieejami attiecīgajai veidnei."
 
 msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Rīki Jūsu pārlūkprogrammai, lai ātri piekļūtu administratora "
-"funkcionalitātei."
+msgstr "Rīki pārlūkam, lai ātri piekļūtu pārvaldīšanas iespējām."
 
 msgid "Please install docutils"
-msgstr "Lūdzu instalējiet 'docutils'"
+msgstr "Lūgums uzstādīt 'docutils'"
 
 #, python-format
 msgid ""
-"The admin documentation system requires Python’s <a href=\"%(link)s"
-"\">docutils</a> library."
+"The admin documentation system requires Python’s <a "
+"href=\"%(link)s\">docutils</a> library."
 msgstr ""
-"Administratora dokumentācijas sistēmai ir nepieciešama Python <a href="
-"\"%(link)s\">docutils</a> bibliotēka."
+"Pārvaldīšanas dokumentācijas sistēmai ir nepieciešama Python <a "
+"href=\"%(link)s\">docutils</a> bibliotēka."
 
 #, python-format
 msgid ""
 "Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr "Palūdziet administratoram instalēt <a href=\"%(link)s\">docutils</a>."
+msgstr ""
+"Lūgums vaicāt savam pārvaldītājam uzstādīt <a href=\"%(link)s\">docutils</a>."
 
 #, python-format
 msgid "Model: %(name)s"
@@ -125,7 +125,7 @@ msgid "Field"
 msgstr "Lauks"
 
 msgid "Type"
-msgstr "Tips"
+msgstr "Veids"
 
 msgid "Description"
 msgstr "Apraksts"
@@ -140,41 +140,41 @@ msgid "Arguments"
 msgstr "Parametrs"
 
 msgid "Back to Model documentation"
-msgstr "Atpakaļ uz Modeļu dokumentāciju"
+msgstr "Atpakaļ uz modeļu dokumentāciju"
 
 msgid "Model documentation"
 msgstr "Modeļu dokumentācija"
 
 msgid "Model groups"
-msgstr "Modeļu grupas"
+msgstr "Modeļu kopas"
 
 msgid "Templates"
-msgstr "Šabloni"
+msgstr "Veidnes"
 
 #, python-format
 msgid "Template: %(name)s"
-msgstr "Šablons: %(name)s"
+msgstr "Veidne: %(name)s"
 
 #, python-format
 msgid "Template: <q>%(name)s</q>"
-msgstr "Šablons: <q>%(name)s</q>"
+msgstr "Veidne: <q>%(name)s</q>"
 
 #. Translators: Search is not a verb here, it qualifies path (a search path)
 #, python-format
 msgid "Search path for template <q>%(name)s</q>:"
-msgstr "Šablona <q>%(name)s</q> ceļš:"
+msgstr "Veidnes <q>%(name)s</q> ceļš:"
 
 msgid "(does not exist)"
-msgstr "(neeksistē)"
+msgstr "(nepastāv)"
 
 msgid "Back to Documentation"
-msgstr "Atpakaļ pie Dokumentācijas"
+msgstr "Atpakaļ uz dokumentāciju"
 
 msgid "Template filters"
-msgstr "Šablona filtri"
+msgstr "Veidnes filtri"
 
 msgid "Template filter documentation"
-msgstr "Šablona filtru dokumentācija"
+msgstr "Veidņu filtru dokumentācija"
 
 msgid "Built-in filters"
 msgstr "Iebūvētie filtri"
@@ -184,14 +184,14 @@ msgid ""
 "To use these filters, put <code>%(code)s</code> in your template before "
 "using the filter."
 msgstr ""
-"Lai izmantotu šos filtrus, ievietojiet <code>%(code)s</code> šablonā pirms "
+"Lai izmantotu šos filtrus, veidnē jāievieto <code>%(code)s</code> pirms "
 "filtra izmantošanas."
 
 msgid "Template tags"
-msgstr "Šablonu tagi"
+msgstr "Veidņu tagi"
 
 msgid "Template tag documentation"
-msgstr "Šablonu tagu dokumentācija"
+msgstr "Veidņu tagu dokumentācija"
 
 msgid "Built-in tags"
 msgstr "Iebūvētie tagi"
@@ -201,8 +201,8 @@ msgid ""
 "To use these tags, put <code>%(code)s</code> in your template before using "
 "the tag."
 msgstr ""
-"Lai izmantotu šos tagus, ievietojiet <code>%(code)s</code> šablonā pirms "
-"taga izmantošanas."
+"Lai izmantotu šos tagus, veidnē jāieviet <code>%(code)s</code> pirms taga "
+"izmantošanas."
 
 #, python-format
 msgid "View: %(name)s"
@@ -212,26 +212,26 @@ msgid "Context:"
 msgstr "Konteksts:"
 
 msgid "Templates:"
-msgstr "Šabloni:"
+msgstr "Veidnes:"
 
 msgid "Back to View documentation"
-msgstr "Atpakaļ pie Skatu dokumentācijas"
+msgstr "Atpakaļ uz skatu dokumentācijas"
 
 msgid "View documentation"
 msgstr "Skatu dokumentācija"
 
 msgid "Jump to namespace"
-msgstr "Pāriet uz vārdtelpu"
+msgstr "Pārlēkt uz nosaukumu telpu"
 
 msgid "Empty namespace"
-msgstr "Tukša vārdtelpa"
+msgstr "Tukša nosaukumu telpa"
 
 #, python-format
 msgid "Views by namespace %(name)s"
-msgstr "Skati pēc vārdtelpas %(name)s"
+msgstr "Skati pēc nosaukumu telpas %(name)s"
 
 msgid "Views by empty namespace"
-msgstr "Skati pēc tukšas vārdtelpas"
+msgstr "Skati pēc tukšas nosaukumu telpas"
 
 #, python-format
 msgid ""
@@ -240,8 +240,8 @@ msgid ""
 "code>.\n"
 msgstr ""
 "\n"
-"    Skata funkcija: <code>%(full_name)s</code>. Nosaukums: <code>"
-"%(url_name)s</code>.\n"
+"    Skata funkcija: <code>%(full_name)s</code>. Nosaukums: "
+"<code>%(url_name)s</code>.\n"
 
 msgid "tag:"
 msgstr "tags:"
@@ -281,4 +281,4 @@ msgstr "%s skaits"
 
 #, python-format
 msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nav urlpattern objekts"
+msgstr "neizskatās, ka%s ir urlpattern objekts"
Binary files 3:5.2.6-1/django/contrib/auth/locale/be/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/be/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/be/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/be/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/be/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/be/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,15 +2,15 @@
 #
 # Translators:
 # Viktar Palstsiuk <vipals@gmail.com>, 2015
-# znotdead <zhirafchik@gmail.com>, 2016-2017,2019,2021,2023-2024
+# znotdead <zhirafchik@gmail.com>, 2016-2017,2019,2021,2023-2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 08:09+0000\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
 "Last-Translator: znotdead <zhirafchik@gmail.com>, "
-"2016-2017,2019,2021,2023-2024\n"
+"2016-2017,2019,2021,2023-2025\n"
 "Language-Team: Belarusian (http://app.transifex.com/django/django/language/"
 "be/)\n"
 "MIME-Version: 1.0\n"
@@ -60,12 +60,12 @@ msgstr "пароль"
 msgid "last login"
 msgstr "апошні раз уваходзіў"
 
-msgid "No password set."
-msgstr "Пароль не зададзены."
-
 msgid "Invalid password format or unknown hashing algorithm."
 msgstr "Няправільны фармат паролю або невядомы алгарытм хэшавання."
 
+msgid "No password set."
+msgstr "Пароль не зададзены."
+
 msgid "Reset password"
 msgstr "Узнавіць пароль"
 
@@ -75,15 +75,6 @@ msgstr "Усталяваць парол
 msgid "The two password fields didn’t match."
 msgstr "Не супадаюць паролі ў двух палях."
 
-msgid ""
-"Whether the user will be able to authenticate using a password or not. If "
-"disabled, they may still be able to authenticate using other backends, such "
-"as Single Sign-On or LDAP."
-msgstr ""
-"Зможа карыстальнік прайсці аўтэнтыфікацыю з дапамогай пароля ці не. Калі "
-"гэта функцыя адключана, яны ўсё роўна могуць прайсці аўтэнтыфікацыю з "
-"дапамогай іншых бэкэндаў, такіх як Single Sign-On або LDAP."
-
 msgid "Password"
 msgstr "Пароль"
 
@@ -93,6 +84,15 @@ msgstr "Пацьвердзіце пар
 msgid "Enter the same password as before, for verification."
 msgstr "Дзеля пэўнасьці набярыце такі самы пароль яшчэ раз."
 
+msgid ""
+"Whether the user will be able to authenticate using a password or not. If "
+"disabled, they may still be able to authenticate using other backends, such "
+"as Single Sign-On or LDAP."
+msgstr ""
+"Зможа карыстальнік прайсці аўтэнтыфікацыю з дапамогай пароля ці не. Калі "
+"гэта функцыя адключана, яны ўсё роўна могуць прайсці аўтэнтыфікацыю з "
+"дапамогай іншых бэкэндаў, такіх як Single Sign-On або LDAP."
+
 msgid "Password-based authentication"
 msgstr "Аўтэнтыфікацыя на аснове пароля"
 
@@ -263,20 +263,13 @@ msgid "users"
 msgstr "карыстальнікі"
 
 #, python-format
-msgid ""
-"This password is too short. It must contain at least %(min_length)d "
-"character."
+msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
-"This password is too short. It must contain at least %(min_length)d "
-"characters."
-msgstr[0] ""
-"Гэты пароль занадта кароткі. Ён павінен мець не менш %(min_length)d сімвал."
-msgstr[1] ""
-"Гэты пароль занадта кароткі. Ён павінен мець не менш %(min_length)d сімвала."
-msgstr[2] ""
-"Гэты пароль занадта кароткі. Ён павінен мець не менш %(min_length)d сімвалаў."
-msgstr[3] ""
-"Гэты пароль занадта кароткі. Ён павінен мець не менш %(min_length)d сімвалаў."
+"This password is too short. It must contain at least %d characters."
+msgstr[0] "Гэты пароль занадта кароткі. Ён павінен мець не менш %d сімвал."
+msgstr[1] "Гэты пароль занадта кароткі. Ён павінен мець не менш %d сімвала."
+msgstr[2] "Гэты пароль занадта кароткі. Ён павінен мець не менш %d сімвалаў."
+msgstr[3] "Гэты пароль занадта кароткі. Ён павінен мець не менш %d сімвалаў."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
Binary files 3:5.2.6-1/django/contrib/auth/locale/es/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/es/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/es/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/es/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/es/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/es/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -13,15 +13,15 @@
 # Josue Naaman Nistal Guerra <josuenistal@hotmail.com>, 2014
 # Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011
 # Natalia, 2024
-# Uriel Medina <urimeba511@gmail.com>, 2020-2021,2023-2024
+# Uriel Medina <urimeba511@gmail.com>, 2020-2021,2023-2025
 # Veronicabh <vero.blazher@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-10-07 08:09+0000\n"
-"Last-Translator: Uriel Medina <urimeba511@gmail.com>, 2020-2021,2023-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
+"Last-Translator: Uriel Medina <urimeba511@gmail.com>, 2020-2021,2023-2025\n"
 "Language-Team: Spanish (http://app.transifex.com/django/django/language/"
 "es/)\n"
 "MIME-Version: 1.0\n"
@@ -71,12 +71,12 @@ msgstr "contraseña"
 msgid "last login"
 msgstr "último inicio de sesión"
 
-msgid "No password set."
-msgstr "No se ha establecido la clave."
-
 msgid "Invalid password format or unknown hashing algorithm."
 msgstr "Formato de clave incorrecto o algoritmo de hash desconocido."
 
+msgid "No password set."
+msgstr "No se ha establecido la clave."
+
 msgid "Reset password"
 msgstr "Restablecer contraseña"
 
@@ -86,15 +86,6 @@ msgstr "Establecer contraseña"
 msgid "The two password fields didn’t match."
 msgstr "Los dos campos de contraseña no coinciden."
 
-msgid ""
-"Whether the user will be able to authenticate using a password or not. If "
-"disabled, they may still be able to authenticate using other backends, such "
-"as Single Sign-On or LDAP."
-msgstr ""
-"Determina si el usuario podrá autenticarse usando una contraseña. Si está "
-"deshabilitado, el usuario aún podría autenticarse mediante otros métodos, "
-"como Single Sign-On o LDAP."
-
 msgid "Password"
 msgstr "Contraseña"
 
@@ -104,6 +95,15 @@ msgstr "Contraseña (confirmación)"
 msgid "Enter the same password as before, for verification."
 msgstr "Para verificar, introduzca la misma contraseña anterior."
 
+msgid ""
+"Whether the user will be able to authenticate using a password or not. If "
+"disabled, they may still be able to authenticate using other backends, such "
+"as Single Sign-On or LDAP."
+msgstr ""
+"Determina si el usuario podrá autenticarse usando una contraseña. Si está "
+"deshabilitado, el usuario aún podría autenticarse mediante otros métodos, "
+"como Single Sign-On o LDAP."
+
 msgid "Password-based authentication"
 msgstr "Autenticación basada en contraseña"
 
@@ -278,21 +278,15 @@ msgid "users"
 msgstr "usuarios"
 
 #, python-format
-msgid ""
-"This password is too short. It must contain at least %(min_length)d "
-"character."
+msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
-"This password is too short. It must contain at least %(min_length)d "
-"characters."
+"This password is too short. It must contain at least %d characters."
 msgstr[0] ""
-"Esta contraseña es demasiado corta. Debe contener al menos %(min_length)d "
-"caracter."
+"La contraseña es demasiado corta. Debe contener por lo menos %d carácter."
 msgstr[1] ""
-"Esta contraseña es demasiado corta. Debe contener al menos %(min_length)d "
-"caracteres."
+"La contraseña es demasiado corta. Debe contener por lo menos %d caracteres."
 msgstr[2] ""
-"Esta contraseña es demasiado corta. Debe contener al menos %(min_length)d "
-"caracteres."
+"La contraseña es demasiado corta. Debe contener por lo menos %d caracteres."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
Binary files 3:5.2.6-1/django/contrib/auth/locale/gl/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/gl/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/gl/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/gl/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/gl/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/gl/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -6,14 +6,14 @@
 # fasouto <fsoutomoure@gmail.com>, 2019
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Leandro Regueiro <leandro.regueiro@gmail.com>, 2011,2013
-# X Bello <xbello@gmail.com>, 2023-2024
+# X Bello <xbello@gmail.com>, 2023-2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 08:09+0000\n"
-"Last-Translator: X Bello <xbello@gmail.com>, 2023-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
+"Last-Translator: X Bello <xbello@gmail.com>, 2023-2025\n"
 "Language-Team: Galician (http://app.transifex.com/django/django/language/"
 "gl/)\n"
 "MIME-Version: 1.0\n"
@@ -61,12 +61,12 @@ msgstr "contrasinal"
 msgid "last login"
 msgstr "última sesión"
 
-msgid "No password set."
-msgstr "Non se configurou ningún contrasinal."
-
 msgid "Invalid password format or unknown hashing algorithm."
 msgstr "Formato de contrasinal non válido ou algoritmo de hash descoñecido."
 
+msgid "No password set."
+msgstr "Non se configurou ningún contrasinal."
+
 msgid "Reset password"
 msgstr "Reconfigurar contrasinal"
 
@@ -76,15 +76,6 @@ msgstr "Configurar contrasinal"
 msgid "The two password fields didn’t match."
 msgstr "Os dous campos de contrasinal non coinciden."
 
-msgid ""
-"Whether the user will be able to authenticate using a password or not. If "
-"disabled, they may still be able to authenticate using other backends, such "
-"as Single Sign-On or LDAP."
-msgstr ""
-"Se o usuario vai poder autentificarse usando un contrasinal ou non. Si se "
-"deshabilita, poderían ser capaces de autentificarse usando outros medios, "
-"como Single Sign-On ou LDAP."
-
 msgid "Password"
 msgstr "Contrasinal"
 
@@ -94,6 +85,15 @@ msgstr "Confirmación do contrasinal"
 msgid "Enter the same password as before, for verification."
 msgstr "Introduza o mesmo contrasinal que antes, para verificalo."
 
+msgid ""
+"Whether the user will be able to authenticate using a password or not. If "
+"disabled, they may still be able to authenticate using other backends, such "
+"as Single Sign-On or LDAP."
+msgstr ""
+"Se o usuario vai poder autentificarse usando un contrasinal ou non. Si se "
+"deshabilita, poderían ser capaces de autentificarse usando outros medios, "
+"como Single Sign-On ou LDAP."
+
 msgid "Password-based authentication"
 msgstr "Autentificación basada en contrasinal"
 
@@ -264,18 +264,13 @@ msgid "users"
 msgstr "usuarios"
 
 #, python-format
-msgid ""
-"This password is too short. It must contain at least %(min_length)d "
-"character."
+msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
-"This password is too short. It must contain at least %(min_length)d "
-"characters."
+"This password is too short. It must contain at least %d characters."
 msgstr[0] ""
-"Este contrasinal é moi curto. Ten que conter polo menos %(min_length)d "
-"caracter."
+"Este contrasinal é moi curto. Ten que conter polo menos %d caracter."
 msgstr[1] ""
-"Este contrasinal é moi curto. Ten que conter polo menos %(min_length)d "
-"caracteres."
+"Este contrasinal é moi curto. Ten que conter polo menos %d caracteres."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
Binary files 3:5.2.6-1/django/contrib/auth/locale/id/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/id/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/id/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/id/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/id/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/id/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,7 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
-# Fery Setiawan <gembelweb@gmail.com>, 2015-2016,2018,2020-2021,2023-2024
+# Fery Setiawan <gembelweb@gmail.com>, 2015-2016,2018,2020-2021,2023-2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # oon arfiandwi (OonID) <oon.arfiandwi@gmail.com>, 2016
 # rodin <romihardiyanto@gmail.com>, 2011,2013
@@ -12,9 +12,9 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
 "Last-Translator: Fery Setiawan <gembelweb@gmail.com>, "
-"2015-2016,2018,2020-2021,2023-2024\n"
+"2015-2016,2018,2020-2021,2023-2025\n"
 "Language-Team: Indonesian (http://app.transifex.com/django/django/language/"
 "id/)\n"
 "MIME-Version: 1.0\n"
@@ -268,7 +268,7 @@ msgstr "pengguna"
 msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
 "This password is too short. It must contain at least %d characters."
-msgstr[0] ""
+msgstr[0] "Kata sandi terlalu pendek. Harus mengandung setidaknya %d karakter."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
Binary files 3:5.2.6-1/django/contrib/auth/locale/ko/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/ko/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/ko/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/ko/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/ko/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/ko/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -8,6 +8,7 @@
 # Dummy Iam, 2021
 # Geonho Kim / Leo Kim <gh.leokim@gmail.com>, 2019
 # Ian Y. Choi <ianyrchoi@gmail.com>, 2015
+# Jamie Seol, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Le Tartuffe <magno79@gmail.com>, 2014,2016
 # Jiyoon, Ha <cryptography@konkuk.ac.kr>, 2016
@@ -23,8 +24,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Lee Dogeon <dev.moreal@gmail.com>, 2025\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
+"Last-Translator: Jamie Seol, 2025\n"
 "Language-Team: Korean (http://app.transifex.com/django/django/language/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -274,7 +275,7 @@ msgstr "사용자(들)"
 msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
 "This password is too short. It must contain at least %d characters."
-msgstr[0] ""
+msgstr[0] "이 비밀번호는 너무 짧습니다. 최소 %d자 이상이어야 합니다."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
@@ -289,7 +290,7 @@ msgid "Your password can’t be too simi
 msgstr "다른 개인 정보와 유사한 비밀번호는 사용할 수 없습니다."
 
 msgid "This password is too common."
-msgstr "비밀번호가 너무 일상적인 단어입니다."
+msgstr "너무 흔히 사용되는 비밀번호입니다."
 
 msgid "Your password can’t be a commonly used password."
 msgstr "통상적으로 자주 사용되는 비밀번호는 사용할 수 없습니다."
Binary files 3:5.2.6-1/django/contrib/auth/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/lv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2023-2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2017,2022
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2017
@@ -14,8 +15,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2025-03-19 11:30-0500\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
-"Last-Translator: Edgars Voroboks <edgars.voroboks@gmail.com>, 2023-2025\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
 "Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
@@ -36,16 +37,16 @@ msgstr "Svarīgi datumi"
 
 #, python-format
 msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s objekts ar primāro atslēgu %(key)r neeksistē."
+msgstr "%(name)s objekts ar galveno atslēgu %(key)r nepastāv."
 
 msgid "Conflicting form data submitted. Please try again."
-msgstr "Iesniegti pretrunīgi veidlapas dati. Lūdzu mēģiniet vēlreiz."
+msgstr "Iesniegti pretrunīgi veidlapas dati. Lūgums mēģināt vēlreiz."
 
 msgid "Password changed successfully."
-msgstr "Parole nomainīta sekmīgi."
+msgstr "Parole sekmīgi nomainīta."
 
 msgid "Password-based authentication was disabled."
-msgstr "Paroles bāzēta autentifikācija tika atspējota."
+msgstr "Autentificēšanās ar paroli tika atspējota."
 
 #, python-format
 msgid "Change password: %s"
@@ -56,16 +57,16 @@ msgid "Set password: %s"
 msgstr "Iestatīt paroli: %s"
 
 msgid "Authentication and Authorization"
-msgstr "Autentifikācija un autorizācija"
+msgstr "Autentificēšanās un pilnvarošana"
 
 msgid "password"
 msgstr "parole"
 
 msgid "last login"
-msgstr "pēdējoreiz pieslēdzies"
+msgstr "pēdējā pieteikšanās"
 
 msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Nederīgs paroles formāts vai nezināms hash algoritms."
+msgstr "Nederīgs paroles formāts vai nezināms jaucējalgoritms."
 
 msgid "No password set."
 msgstr "Nav norādīta parole"
@@ -99,7 +100,7 @@ msgstr ""
 "On) vai LDAP."
 
 msgid "Password-based authentication"
-msgstr "Paroles bāzēta autentifikācija"
+msgstr "Autentificēšanās ar paroli"
 
 msgid "Enabled"
 msgstr "Iespējots"
@@ -116,15 +117,15 @@ msgstr ""
 msgid ""
 "Enable password-based authentication for this user by setting a password."
 msgstr ""
-"Iespējojiet šim lietotājam paroles balstītu autentifikāciju, iestatot paroli."
+"Iespējot šim lietotājam autentificēšanos ar paroli ar paroles iestatīšanu."
 
 #, python-format
 msgid ""
 "Please enter a correct %(username)s and password. Note that both fields may "
 "be case-sensitive."
 msgstr ""
-"Lūdzu ievadiet korektu informāciju laukos %(username)s un parole. Ņemiet "
-"vērā, ka abi ievades lauki ir reģistrjutīgi."
+"Lūgums ievadīt pareizu %(username)s un paroli. Jāņem vērā, ka abi lauki var "
+"būt reģistrjutīgi."
 
 msgid "This account is inactive."
 msgstr "Šis konts nav aktīvs."
@@ -140,7 +141,7 @@ msgstr "Jaunā parole vēlreiz"
 
 msgid "Your old password was entered incorrectly. Please enter it again."
 msgstr ""
-"Jūsu iepriekšējā parole netika ievadīta korekti. Lūdzu ievadiet to atkārtoti."
+"Tava iepriekšējā parole tika ievadīta nepareizi. Lūgums ievadīt to vēlreiz."
 
 msgid "Old password"
 msgstr "Vecā parole"
@@ -149,13 +150,13 @@ msgid "algorithm"
 msgstr "algoritms"
 
 msgid "iterations"
-msgstr "iterācijas"
+msgstr "atkārtojumi"
 
 msgid "salt"
-msgstr "salt"
+msgstr "sāls"
 
 msgid "hash"
-msgstr "hash"
+msgstr "jaucējvērtība"
 
 msgid "variety"
 msgstr "dažādība"
@@ -170,7 +171,7 @@ msgid "time cost"
 msgstr "laika izmaksas"
 
 msgid "parallelism"
-msgstr "paralēlisms"
+msgstr "paralelitāte"
 
 msgid "work factor"
 msgstr "darba faktors"
@@ -185,7 +186,7 @@ msgid "name"
 msgstr "nosaukums"
 
 msgid "content type"
-msgstr "satura tips"
+msgstr "satura veids"
 
 msgid "codename"
 msgstr "kods"
@@ -197,10 +198,10 @@ msgid "permissions"
 msgstr "tiesības"
 
 msgid "group"
-msgstr "grupa"
+msgstr "kopa"
 
 msgid "groups"
-msgstr "grupas"
+msgstr "kopas"
 
 msgid "superuser status"
 msgstr "superlietotāja statuss"
@@ -215,23 +216,24 @@ msgid ""
 "The groups this user belongs to. A user will get all permissions granted to "
 "each of their groups."
 msgstr ""
-"Grupas, kurām lietotājs pieder. Lietotājam būs visas tiesības, kuras ir "
-"piešķirtas grupām, kurām tas pieder."
+"Kopas, kurās ir lietotājs. Lietotājam būs visas tiesības, kuras ir "
+"piešķirtas katrai no kopām."
 
 msgid "user permissions"
 msgstr "lietotāja tiesības"
 
 msgid "Specific permissions for this user."
-msgstr "Lietotāja specifiskās tiesības."
+msgstr "Noteiktas šī lietotāja tiesības."
 
 msgid "username"
 msgstr "lietotājvārds"
 
 msgid "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Obligāts. 150 vai mazāk zīmes. Tikai burti, cipari un @/./+/-/_ ."
+msgstr ""
+"Nepieciešams. 150 vai mazāk rakstzīmju. Tikai burti, cipari un @/./+/-/_ ."
 
 msgid "A user with that username already exists."
-msgstr "Lietotājs ar šādu lietotāja vārdu jau eksistē."
+msgstr "Jau pastāv lietotājs ar šādu lietotājvārdu."
 
 msgid "first name"
 msgstr "vārds"
@@ -246,8 +248,7 @@ msgid "staff status"
 msgstr "personāla statuss"
 
 msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā."
+msgstr "Nosaka, vai lietotājs var pieteikties šajā pārvaldīšanas vietnē."
 
 msgid "active"
 msgstr "aktīvs"
@@ -256,7 +257,8 @@ msgid ""
 "Designates whether this user should be treated as active. Unselect this "
 "instead of deleting accounts."
 msgstr ""
-"Nosaka, vai lietotājs ir aktīvs. Lietojiet šo kā alternatīvu kontu dzēšanai."
+"Nosaka, vai lietotāju vajadzētu uztvert kā aktīvu. Atzīmes noņemšana ir "
+"izmantojama kontu izdzēšanas vietā."
 
 msgid "date joined"
 msgstr "datums, kad pievienojies"
@@ -271,29 +273,29 @@ msgstr "lietotāji"
 msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
 "This password is too short. It must contain at least %d characters."
-msgstr[0] "Šī parole ir pārāk īsa. Tai ir jābūt vismaz %d zīmes garai."
-msgstr[1] "Šī parole ir pārāk īsa. Tai ir jābūt vismaz %d zīmi garai."
-msgstr[2] "Šī parole ir pārāk īsa. Tai ir jābūt vismaz %d zīmēm garai."
+msgstr[0] "Šī parole ir pārāk īsa. Tajā ir jābūt vismaz %d rakstzīmēm."
+msgstr[1] "Šī parole ir pārāk īsa. Tajā ir jābūt vismaz %d rakstzīmei."
+msgstr[2] "Šī parole ir pārāk īsa. Tajā ir jābūt vismaz %d rakstzīmēm."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
 msgid_plural "Your password must contain at least %(min_length)d characters."
-msgstr[0] "Parolei ir jābūt vismaz %(min_length)d zīmēm garai."
-msgstr[1] "Parolei ir jābūt vismaz %(min_length)d zīmi garai."
-msgstr[2] "Parolei ir jābūt vismaz %(min_length)d zīmēm garai."
+msgstr[0] "Parolē ir jābūt vismaz %(min_length)d rakstzīmēm."
+msgstr[1] "Parolē ir jābūt vismaz %(min_length)d rakstzīmei."
+msgstr[2] "Parolē ir jābūt vismaz %(min_length)d rakstzīmēm."
 
 #, python-format
 msgid "The password is too similar to the %(verbose_name)s."
 msgstr "Parole ir pārāk līdzīga %(verbose_name)s."
 
 msgid "Your password can’t be too similar to your other personal information."
-msgstr "Parole nedrīkst būt pārāk līdzīga pārējai personīgajai informācijai."
+msgstr "Parole nevar būt pārāk līdzīga pārējai personīgajai informācijai."
 
 msgid "This password is too common."
-msgstr "Parole ir pārāk bieži lietota."
+msgstr "Parole ir pārāk bieži izmantota."
 
 msgid "Your password can’t be a commonly used password."
-msgstr "Parole nedrīkst būt no bieži lietotu paroļu saraksta."
+msgstr "Parole nedrīkst būt no bieži izmantotu paroļu saraksta."
 
 msgid "This password is entirely numeric."
 msgstr "Parole sastāv tikai no cipariem."
@@ -303,21 +305,21 @@ msgstr "Parole nedrīkst sastāvēt tika
 
 #, python-format
 msgid "Password reset on %(site_name)s"
-msgstr "Paroles pārstatīšana %(site_name)s"
+msgstr "Paroles atiestatīšana %(site_name)s"
 
 msgid ""
 "Enter a valid username. This value may contain only unaccented lowercase a-z "
 "and uppercase A-Z letters, numbers, and @/./+/-/_ characters."
 msgstr ""
-"Ievadi derīgu lietotāja vārdu. Šī vērtība var saturēt tikai mazos a-z un "
-"lielos A-Z burtus bez diakritiskajām zīmēm, ciparus un @/./+/-/_ simbolus."
+"Jāievada derīgs lietotājvārds. Šī vērtība var saturēt tikai mazos a-z un "
+"lielos A-Z burtus bez diakritiskajām zīmēm, ciparus un rakstzīmes @/./+/-/_."
 
 msgid ""
 "Enter a valid username. This value may contain only letters, numbers, and "
 "@/./+/-/_ characters."
 msgstr ""
-"Ievadi derīgu lietotāja vārdu. Šī vērtība var saturēt tikai burtus, ciparus "
-"un @/./+/-/_ simbolus."
+"Jāievada derīgs lietotājvārds. Šī vērtība var saturēt tikai burtus, ciparus "
+"un rakstzīmes @/./+/-/_."
 
 msgid "Logged out"
 msgstr "Atslēdzies"
@@ -329,7 +331,7 @@ msgid "Password reset sent"
 msgstr "Paroles atiestatīšanas informācija nosūtīta"
 
 msgid "Enter new password"
-msgstr "Ievadiet jauno paroli"
+msgstr "Ievadīt jauno paroli"
 
 msgid "Password reset unsuccessful"
 msgstr "Paroles atiestatīšana nesekmīga"
Binary files 3:5.2.6-1/django/contrib/auth/locale/ru/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/ru/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/ru/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/ru/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/ru/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/ru/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -4,7 +4,7 @@
 # crazyzubr <hjcnbckfd@gmail.com>, 2020
 # Ivan Khomutov <iskhomutov@gmail.com>, 2017
 # Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2024
+# Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2025
 # Андрей Щуров <shurov9009@gmail.com>, 2016
 # Влад Мещеряков <victimofamisery@gmail.com>, 2021
 # Bobsans <mr.bobsans@gmail.com>, 2016
@@ -12,9 +12,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 08:09+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
+"Last-Translator: Алексей Борискин <sun.void@gmail.com>, 2012-2015,2022-2025\n"
 "Language-Team: Russian (http://app.transifex.com/django/django/language/"
 "ru/)\n"
 "MIME-Version: 1.0\n"
@@ -65,12 +65,12 @@ msgstr "пароль"
 msgid "last login"
 msgstr "последний вход"
 
-msgid "No password set."
-msgstr "Пароль не задан."
-
 msgid "Invalid password format or unknown hashing algorithm."
 msgstr "Неизвестный формат пароля или алгоритм хеширования."
 
+msgid "No password set."
+msgstr "Пароль не задан."
+
 msgid "Reset password"
 msgstr "Сбросить пароль"
 
@@ -80,15 +80,6 @@ msgstr "Задать пароль"
 msgid "The two password fields didn’t match."
 msgstr "Введенные пароли не совпадают."
 
-msgid ""
-"Whether the user will be able to authenticate using a password or not. If "
-"disabled, they may still be able to authenticate using other backends, such "
-"as Single Sign-On or LDAP."
-msgstr ""
-"Может ли пользователь аутентифироваться по паролю. Если эта возможность "
-"выключена, пользователь всё ещё может аутентифицироваться иными способами, "
-"например, Single Sing-On или LDAP, если они сконфигурированы и разрешены."
-
 msgid "Password"
 msgstr "Пароль"
 
@@ -98,6 +89,15 @@ msgstr "Подтверждение па
 msgid "Enter the same password as before, for verification."
 msgstr "Для подтверждения введите, пожалуйста, пароль ещё раз."
 
+msgid ""
+"Whether the user will be able to authenticate using a password or not. If "
+"disabled, they may still be able to authenticate using other backends, such "
+"as Single Sign-On or LDAP."
+msgstr ""
+"Может ли пользователь аутентифироваться по паролю. Если эта возможность "
+"выключена, пользователь всё ещё может аутентифицироваться иными способами, "
+"например, Single Sing-On или LDAP, если они сконфигурированы и разрешены."
+
 msgid "Password-based authentication"
 msgstr "Аутентификация по паролю"
 
@@ -269,24 +269,21 @@ msgid "users"
 msgstr "пользователи"
 
 #, python-format
-msgid ""
-"This password is too short. It must contain at least %(min_length)d "
-"character."
+msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
-"This password is too short. It must contain at least %(min_length)d "
-"characters."
+"This password is too short. It must contain at least %d characters."
 msgstr[0] ""
-"Введённый пароль слишком короткий. Он должен содержать как минимум "
-"%(min_length)d символ."
+"Введённый пароль слишком короткий. Он должен состоять из как минимум %d "
+"символ."
 msgstr[1] ""
-"Введённый пароль слишком короткий. Он должен содержать как минимум "
-"%(min_length)d символа."
+"Введённый пароль слишком короткий. Он должен состоять из как минимум %d "
+"символа."
 msgstr[2] ""
-"Введённый пароль слишком короткий. Он должен содержать как минимум "
-"%(min_length)d символов."
+"Введённый пароль слишком короткий. Он должен состоять из как минимум %d "
+"символов."
 msgstr[3] ""
-"Введённый пароль слишком короткий. Он должен содержать как минимум "
-"%(min_length)d символов."
+"Введённый пароль слишком короткий. Он должен состоять из как минимум %d "
+"символов."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
Binary files 3:5.2.6-1/django/contrib/auth/locale/sv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/auth/locale/sv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/auth/locale/sv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/auth/locale/sv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/auth/locale/sv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/auth/locale/sv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -6,22 +6,26 @@
 # Anders Hovmöller <boxed@killingar.net>, 2023
 # Cybjit <cybjit@gmail.com>, 2012
 # Jannis Leidel <jannis@leidel.info>, 2011
+# Jonathan Lindén, 2014-2015
 # Jonathan Lindén, 2015
 # Jörgen Olofsson, 2024
+# Jörgen Olofsson, 2024
 # Jonathan Lindén, 2014
 # Mattias Hansson <mattias.gothenburg@gmail.com>, 2016
 # nip3o <n@niclasolofsson.se>, 2014
+# nip3o <n@niclasolofsson.se>, 2014
 # Petter Strandmark <petter.strandmark@gmail.com>, 2019
 # Samuel Linde <samuel@linde.im>, 2011
 # Thomas Lundqvist, 2013,2016
+# Thomas Lundqvist, 2013,2016
 # Tomas Lööw <tomas.loow@mailbox.org>, 2021
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-05-22 11:46-0300\n"
-"PO-Revision-Date: 2024-08-07 08:09+0000\n"
-"Last-Translator: Jörgen Olofsson, 2024\n"
+"POT-Creation-Date: 2025-03-19 11:30-0500\n"
+"PO-Revision-Date: 2025-09-17 08:09+0000\n"
+"Last-Translator: Tomas Lööw <tomas.loow@mailbox.org>, 2021\n"
 "Language-Team: Swedish (http://app.transifex.com/django/django/language/"
 "sv/)\n"
 "MIME-Version: 1.0\n"
@@ -69,12 +73,12 @@ msgstr "lösenord"
 msgid "last login"
 msgstr "senaste inloggning"
 
-msgid "No password set."
-msgstr "Inget lösenord angivet."
-
 msgid "Invalid password format or unknown hashing algorithm."
 msgstr "Ogiltigt lösenordsformat eller okänd hashalgoritm."
 
+msgid "No password set."
+msgstr "Inget lösenord angivet."
+
 msgid "Reset password"
 msgstr "Återställ lösenord"
 
@@ -84,15 +88,6 @@ msgstr "Sätt lösenord"
 msgid "The two password fields didn’t match."
 msgstr "De två lösenordsfälten stämmer inte överens."
 
-msgid ""
-"Whether the user will be able to authenticate using a password or not. If "
-"disabled, they may still be able to authenticate using other backends, such "
-"as Single Sign-On or LDAP."
-msgstr ""
-"Om användaren kommer att kunna autentisera sig med ett lösenord eller inte. "
-"Om inaktiverat, kan användaren fortfarande ha möjlighet att autentisera sig "
-"via andra backend-lösningar, såsom Single Sign-On eller LDAP."
-
 msgid "Password"
 msgstr "Lösenord"
 
@@ -102,8 +97,17 @@ msgstr "Lösenordsbekräftelse"
 msgid "Enter the same password as before, for verification."
 msgstr "Fyll i samma lösenord som tidigare för verifiering."
 
+msgid ""
+"Whether the user will be able to authenticate using a password or not. If "
+"disabled, they may still be able to authenticate using other backends, such "
+"as Single Sign-On or LDAP."
+msgstr ""
+"Om användaren kommer att kunna autentisera sig med ett lösenord eller inte. "
+"Om inaktiverat, kan användaren fortfarande ha möjlighet att autentisera sig "
+"via andra backend-lösningar, såsom Single Sign-On eller LDAP."
+
 msgid "Password-based authentication"
-msgstr "Lösenordsbaserad autentisering."
+msgstr "Lösenordsbaserad autentisering"
 
 msgid "Enabled"
 msgstr "Aktiverad"
@@ -144,7 +148,7 @@ msgid "New password confirmation"
 msgstr "Bekräfta nytt lösenord"
 
 msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen."
+msgstr "Ditt gamla lösenord var felaktigt ifyllt. Fyll i det igen."
 
 msgid "Old password"
 msgstr "Gammalt lösenord"
@@ -275,16 +279,13 @@ msgid "users"
 msgstr "användare"
 
 #, python-format
-msgid ""
-"This password is too short. It must contain at least %(min_length)d "
-"character."
+msgid "This password is too short. It must contain at least %d character."
 msgid_plural ""
-"This password is too short. It must contain at least %(min_length)d "
-"characters."
+"This password is too short. It must contain at least %d characters."
 msgstr[0] ""
-"Detta lösenord är för kort. Det måste innehålla minst %(min_length)d tecken."
+"Det här lösenordet är för kort. Det måste innehålla minst %d tecken."
 msgstr[1] ""
-"Detta lösenord är för kort. Det måste innehålla minst %(min_length)d tecken."
+"Det här lösenordet är för kort. Det måste innehålla minst %d tecken."
 
 #, python-format
 msgid "Your password must contain at least %(min_length)d character."
Binary files 3:5.2.6-1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po	2025-04-01 14:58:54.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,17 +1,18 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
-# NullIsNot0 <nullisnot0@inbox.lv>, 2019
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2019
 # peterisb <pb@sungis.lv>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-09-08 17:27+0200\n"
-"PO-Revision-Date: 2019-11-07 07:19+0000\n"
-"Last-Translator: NullIsNot0 <nullisnot0@inbox.lv>\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 19:22+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,25 +22,25 @@ msgstr ""
 "2);\n"
 
 msgid "Content Types"
-msgstr "Satura tipi"
+msgstr "Satura veidi"
 
 msgid "python model class name"
 msgstr "python modeļa klases nosaukums"
 
 msgid "content type"
-msgstr "satura tips"
+msgstr "satura veids"
 
 msgid "content types"
-msgstr "satura tipi"
+msgstr "satura veidi"
 
 #, python-format
 msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Satura tipa %(ct_id)s objektam nav asociētā modeļa"
+msgstr "Satura veida %(ct_id)s objektam nav saistītā modeļa"
 
 #, python-format
 msgid "Content type %(ct_id)s object %(obj_id)s doesn’t exist"
-msgstr "Satura tipa %(ct_id)s objekts %(obj_id)s neeksistē"
+msgstr "Satura veida %(ct_id)s objekts %(obj_id)s nepastāv"
 
 #, python-format
 msgid "%(ct_name)s objects don’t have a get_absolute_url() method"
-msgstr "%(ct_name)s objekti nesatur get_absolute_url() metodi"
+msgstr "%(ct_name)s objektiem nav metodes get_absolute_url()"
Binary files 3:5.2.6-1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po	2025-04-01 14:58:54.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,17 +1,18 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
-# NullIsNot0 <nullisnot0@inbox.lv>, 2019
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2019
 # peterisb <pb@sungis.lv>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-09-08 17:27+0200\n"
-"PO-Revision-Date: 2019-11-07 07:17+0000\n"
-"Last-Translator: NullIsNot0 <nullisnot0@inbox.lv>\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 19:03+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,7 +22,7 @@ msgstr ""
 "2);\n"
 
 msgid "Advanced options"
-msgstr "Papildus opcijas"
+msgstr "Papildu iespējas"
 
 msgid "Flat Pages"
 msgstr "Vienkāršās lapas"
@@ -32,30 +33,28 @@ msgstr "URL"
 msgid ""
 "Example: “/about/contact/”. Make sure to have leading and trailing slashes."
 msgstr ""
-"Piemēram: “/about/contact/”. Pārliecinieties, ka esat ievietojuši sākuma un "
-"beigu slīpsvītras."
+"Piemērs: “/par/sazinaties/”. Jāpārliecinās, ka sākumā un beigās ir "
+"slīpsvītra."
 
 msgid ""
 "This value must contain only letters, numbers, dots, underscores, dashes, "
 "slashes or tildes."
 msgstr ""
-"Šai vērtība ir jāsatur tikai burtus, ciparus, punktus, pasvītrojumi, "
-"domuzīmes, slīpsvītras vai tildes simboli."
+"Šajā vērtībā drīkst būt tikai burti, cipari, punkti, apakšsvītras, "
+"domuzīmes, slīpsvītras vai tildes."
 
 msgid "Example: “/about/contact”. Make sure to have a leading slash."
-msgstr ""
-"Piemēram: “/about/contact”. Pārliecinieties, ka esat ievietojuši sākuma "
-"slīpsvītru."
+msgstr "Piemērs: “/par/sazināties”. Jāpārliecinās, ka sākumā ir slīpsvītra."
 
 msgid "URL is missing a leading slash."
-msgstr "URL trūkst sākuma slīpsvītra."
+msgstr "URL trūkst sākuma slīpsvītras."
 
 msgid "URL is missing a trailing slash."
-msgstr "URL trūkst beigu slīpsvītra."
+msgstr "URL trūkst beigu slīpsvītras."
 
 #, python-format
 msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Vienkāršā lapa ar url %(url)s jau eksistē vietnei %(site)s"
+msgstr "Vienkāršā lapa ar URL %(url)s jau pastāv vietnei %(site)s"
 
 msgid "title"
 msgstr "virsraksts"
@@ -64,24 +63,24 @@ msgid "content"
 msgstr "saturs"
 
 msgid "enable comments"
-msgstr "ieslēgt komentārus"
+msgstr "ieslēgt piebildes"
 
 msgid "template name"
-msgstr "šablona nosaukums"
+msgstr "veidnes nosaukums"
 
 msgid ""
 "Example: “flatpages/contact_page.html”. If this isn’t provided, the system "
 "will use “flatpages/default.html”."
 msgstr ""
-"Piemēram: “flatpages/contact_page.html”. Ja tas nav norādīts, sistēma lietos "
-"“flatpages/default.html”."
+"Piemērs: “flatpages/contact_page.html”. Ja tas nav norādīts, sistēma "
+"izmantos “flatpages/default.html”."
 
 msgid "registration required"
-msgstr "reģistrācija obligāta"
+msgstr "nepieciešama reģistrēšanās"
 
 msgid "If this is checked, only logged-in users will be able to view the page."
 msgstr ""
-"Ja šis ir atzīmēts, tikai pieslēgušies lietotāji, varēs piekļūt šai lapu."
+"Ja šis ir atzīmēts, tikai pieteikušies lietotāji varēs apskatīt šo lapu."
 
 msgid "sites"
 msgstr "vietnes"
Binary files 3:5.2.6-1/django/contrib/gis/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/gis/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/gis/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/gis/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/gis/locale/lv/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/gis/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2019
 # peterisb <pb@sungis.lv>, 2016
@@ -9,8 +10,8 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-09-18 11:41-0300\n"
-"PO-Revision-Date: 2023-12-04 18:45+0000\n"
-"Last-Translator: Edgars Voroboks <edgars.voroboks@gmail.com>, 2019\n"
+"PO-Revision-Date: 2025-09-17 18:45+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
 "Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
@@ -29,7 +30,7 @@ msgstr "ĢIS bāzes lauks."
 msgid ""
 "The base Geometry field — maps to the OpenGIS Specification Geometry type."
 msgstr ""
-"Bāzes Ģeometrijas lauks -- atbilst OpenGIS specifikācijas Geometry tipam."
+"Pamata Ģeometrijas lauks — atbilst OpenGIS specifikācijas Geometry veidam."
 
 msgid "Point"
 msgstr "Punkts"
@@ -50,7 +51,7 @@ msgid "Multi polygon"
 msgstr "Vairāki daudzstūri"
 
 msgid "Geometry collection"
-msgstr "Ģeometrijas kolekcija"
+msgstr "Ģeometrijas krājums"
 
 msgid "Extent Aggregate Field"
 msgstr "Apjoma agregācijas lauks"
@@ -62,19 +63,20 @@ msgid "No geometry value provided."
 msgstr "Nav norādīta ģeometrijas vērtība."
 
 msgid "Invalid geometry value."
-msgstr "Nekorekta ģeometrijas vērtība."
+msgstr "Nederīga ģeometrijas vērtība."
 
 msgid "Invalid geometry type."
-msgstr "Nekorekts ģeometrijas tips."
+msgstr "Nederīgs ģeometrijas veids."
 
 msgid ""
 "An error occurred when transforming the geometry to the SRID of the geometry "
 "form field."
 msgstr ""
-"Sastapta kļūda, pārveidojot ģeometriju uz ģeometriskās formas lauka SRID."
+"Veidlapas ģeometrijas lauka ģeometrijas pārveidošanas uz SRID laikā "
+"atgadījās kļūda."
 
 msgid "Delete all Features"
-msgstr "Dzēst visus objektus"
+msgstr "Izdzēst visus objektus"
 
 msgid "Debugging window (serialized value)"
 msgstr "Atkļūdošanas logs (serializēta vērtība)"
Binary files 3:5.2.6-1/django/contrib/gis/locale/pt/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/gis/locale/pt/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/gis/locale/pt/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/gis/locale/pt/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/gis/locale/pt/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/gis/locale/pt/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -14,7 +14,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-09-18 11:41-0300\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 18:45+0000\n"
 "Last-Translator: Manuela Silva <mmsrs@sky.com>, 2025\n"
 "Language-Team: Portuguese (http://app.transifex.com/django/django/language/"
 "pt/)\n"
@@ -33,8 +33,8 @@ msgstr "O campo GIS base."
 msgid ""
 "The base Geometry field — maps to the OpenGIS Specification Geometry type."
 msgstr ""
-"O campo básico Geometria - aponta para o tipo de Geometria de Especificação "
-"OpenGIS."
+"O campo básico de Geometria - aponta para o tipo de Geometria de "
+"Especificação OpenGIS."
 
 msgid "Point"
 msgstr "Ponto"
@@ -90,4 +90,4 @@ msgstr "Nenhum feed está registado."
 
 #, python-format
 msgid "Slug %r isn’t registered."
-msgstr ""
+msgstr "Slug %r não está registada."
Binary files 3:5.2.6-1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -5,15 +5,15 @@
 # fonso <fonzzo@gmail.com>, 2013
 # Jannis Leidel <jannis@leidel.info>, 2011
 # Leandro Regueiro <leandro.regueiro@gmail.com>, 2011,2013
-# X Bello <xbello@gmail.com>, 2023
+# X Bello <xbello@gmail.com>, 2023,2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-07 14:40+0200\n"
-"PO-Revision-Date: 2023-04-24 18:40+0000\n"
-"Last-Translator: X Bello <xbello@gmail.com>, 2023\n"
-"Language-Team: Galician (http://www.transifex.com/django/django/language/"
+"POT-Creation-Date: 2023-09-18 11:41-0300\n"
+"PO-Revision-Date: 2025-09-17 18:40+0000\n"
+"Last-Translator: X Bello <xbello@gmail.com>, 2023,2025\n"
+"Language-Team: Galician (http://app.transifex.com/django/django/language/"
 "gl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -44,7 +44,7 @@ msgctxt "ordinal 2"
 msgid "{}nd"
 msgstr "{}º"
 
-#. Translators: Ordinal format when value ends with 3, e.g. 83th, except 13.
+#. Translators: Ordinal format when value ends with 3, e.g. 83rd, except 13.
 msgctxt "ordinal 3"
 msgid "{}rd"
 msgstr "{}º"
@@ -185,7 +185,7 @@ msgstr "onte"
 #. weeks'
 #, python-format
 msgid "%(delta)s ago"
-msgstr "fai %(delta)s"
+msgstr "hai %(delta)s"
 
 #. Translators: please keep a non-breaking space (U+00A0) between count
 #. and time unit.
@@ -193,7 +193,7 @@ msgstr "fai %(delta)s"
 msgid "an hour ago"
 msgid_plural "%(count)s hours ago"
 msgstr[0] "Fai unha hora"
-msgstr[1] "Fai %(count)s horas"
+msgstr[1] "Hai %(count)s horas"
 
 #. Translators: please keep a non-breaking space (U+00A0) between count
 #. and time unit.
@@ -201,7 +201,7 @@ msgstr[1] "Fai %(count)s horas"
 msgid "a minute ago"
 msgid_plural "%(count)s minutes ago"
 msgstr[0] "Fai un minuto"
-msgstr[1] "Fai %(count)s minutos"
+msgstr[1] "Hai %(count)s minutos"
 
 #. Translators: please keep a non-breaking space (U+00A0) between count
 #. and time unit.
@@ -209,7 +209,7 @@ msgstr[1] "Fai %(count)s minutos"
 msgid "a second ago"
 msgid_plural "%(count)s seconds ago"
 msgstr[0] "Fai un segundo"
-msgstr[1] "Fai %(count)s segundos"
+msgstr[1] "Hai %(count)s segundos"
 
 msgid "now"
 msgstr "agora"
Binary files 3:5.2.6-1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,20 +1,21 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
-# NullIsNot0 <nullisnot0@inbox.lv>, 2017
-# NullIsNot0 <nullisnot0@inbox.lv>, 2017-2018
+# Edgars Andersons, 2025
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2017
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2017-2018
 # Jannis Leidel <jannis@leidel.info>, 2011
-# NullIsNot0 <nullisnot0@inbox.lv>, 2021
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2021
 # peterisb <pb@sungis.lv>, 2016
 # peterisb <pb@sungis.lv>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-07 14:40+0200\n"
-"PO-Revision-Date: 2021-10-06 05:15+0000\n"
-"Last-Translator: NullIsNot0 <nullisnot0@inbox.lv>\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"POT-Creation-Date: 2023-09-18 11:41-0300\n"
+"PO-Revision-Date: 2025-09-17 18:40+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -29,134 +30,134 @@ msgstr "Padarīt cilvēcīgu"
 #. Translators: Ordinal format for 11 (11th), 12 (12th), and 13 (13th).
 msgctxt "ordinal 11, 12, 13"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 0, e.g. 80th.
 msgctxt "ordinal 0"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 1, e.g. 81st, except 11.
 msgctxt "ordinal 1"
 msgid "{}st"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 2, e.g. 82nd, except 12.
 msgctxt "ordinal 2"
 msgid "{}nd"
-msgstr "{}"
+msgstr "{}."
 
-#. Translators: Ordinal format when value ends with 3, e.g. 83th, except 13.
+#. Translators: Ordinal format when value ends with 3, e.g. 83rd, except 13.
 msgctxt "ordinal 3"
 msgid "{}rd"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 4, e.g. 84th.
 msgctxt "ordinal 4"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 5, e.g. 85th.
 msgctxt "ordinal 5"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 6, e.g. 86th.
 msgctxt "ordinal 6"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 7, e.g. 87th.
 msgctxt "ordinal 7"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 8, e.g. 88th.
 msgctxt "ordinal 8"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #. Translators: Ordinal format when value ends with 9, e.g. 89th.
 msgctxt "ordinal 9"
 msgid "{}th"
-msgstr "{}"
+msgstr "{}."
 
 #, python-format
 msgid "%(value)s million"
 msgid_plural "%(value)s million"
 msgstr[0] "%(value)s miljonu"
 msgstr[1] "%(value)s miljons"
-msgstr[2] "%(value)s miljonu"
+msgstr[2] "%(value)s miljoni"
 
 #, python-format
 msgid "%(value)s billion"
 msgid_plural "%(value)s billion"
 msgstr[0] "%(value)s miljardu"
 msgstr[1] "%(value)s miljards"
-msgstr[2] "%(value)s miljardu"
+msgstr[2] "%(value)s miljardi"
 
 #, python-format
 msgid "%(value)s trillion"
 msgid_plural "%(value)s trillion"
 msgstr[0] "%(value)s triljonu"
 msgstr[1] "%(value)s triljons"
-msgstr[2] "%(value)s triljonu"
+msgstr[2] "%(value)s triljoni"
 
 #, python-format
 msgid "%(value)s quadrillion"
 msgid_plural "%(value)s quadrillion"
 msgstr[0] "%(value)s kvadriljonu"
 msgstr[1] "%(value)s kvadriljons"
-msgstr[2] "%(value)s kvadriljonu"
+msgstr[2] "%(value)s kvadriljoni"
 
 #, python-format
 msgid "%(value)s quintillion"
 msgid_plural "%(value)s quintillion"
 msgstr[0] "%(value)s kvintiljonu"
 msgstr[1] "%(value)s kvintiljons"
-msgstr[2] "%(value)s kvintiljonu"
+msgstr[2] "%(value)s kvintiljoni"
 
 #, python-format
 msgid "%(value)s sextillion"
 msgid_plural "%(value)s sextillion"
 msgstr[0] "%(value)s sekstiljonu"
 msgstr[1] "%(value)s sekstiljons"
-msgstr[2] "%(value)s sekstiljonu"
+msgstr[2] "%(value)s sekstiljoni"
 
 #, python-format
 msgid "%(value)s septillion"
 msgid_plural "%(value)s septillion"
 msgstr[0] "%(value)s septiljonu"
 msgstr[1] "%(value)s septiljons"
-msgstr[2] "%(value)s septiljonu"
+msgstr[2] "%(value)s septiljoni"
 
 #, python-format
 msgid "%(value)s octillion"
 msgid_plural "%(value)s octillion"
 msgstr[0] "%(value)s oktiljonu"
 msgstr[1] "%(value)s oktiljons"
-msgstr[2] "%(value)s oktiljonu"
+msgstr[2] "%(value)s oktiljoni"
 
 #, python-format
 msgid "%(value)s nonillion"
 msgid_plural "%(value)s nonillion"
 msgstr[0] "%(value)s noniljonu"
 msgstr[1] "%(value)s noniljons"
-msgstr[2] "%(value)s noniljonu"
+msgstr[2] "%(value)s noniljoni"
 
 #, python-format
 msgid "%(value)s decillion"
 msgid_plural "%(value)s decillion"
 msgstr[0] "%(value)s dekaljonu"
 msgstr[1] "%(value)s dekaljons"
-msgstr[2] "%(value)s dekaljonu"
+msgstr[2] "%(value)s dekaljoni"
 
 #, python-format
 msgid "%(value)s googol"
 msgid_plural "%(value)s googol"
 msgstr[0] "%(value)s gugolu"
 msgstr[1] "%(value)s gugols"
-msgstr[2] "%(value)s gugolu"
+msgstr[2] "%(value)s gugoli"
 
 msgid "one"
 msgstr "viens"
@@ -268,7 +269,7 @@ msgstr "pēc %(delta)s"
 msgctxt "naturaltime-past"
 msgid "%(num)d year"
 msgid_plural "%(num)d years"
-msgstr[0] "%(num)d gadi"
+msgstr[0] "%(num)d gadu"
 msgstr[1] "%(num)d gads"
 msgstr[2] "%(num)d gadi"
 
@@ -276,7 +277,7 @@ msgstr[2] "%(num)d gadi"
 msgctxt "naturaltime-past"
 msgid "%(num)d month"
 msgid_plural "%(num)d months"
-msgstr[0] "%(num)d mēneši"
+msgstr[0] "%(num)d mēnešu"
 msgstr[1] "%(num)d mēnesis"
 msgstr[2] "%(num)d mēneši"
 
@@ -284,7 +285,7 @@ msgstr[2] "%(num)d mēneši"
 msgctxt "naturaltime-past"
 msgid "%(num)d week"
 msgid_plural "%(num)d weeks"
-msgstr[0] "%(num)d nedēļas"
+msgstr[0] "%(num)d nedēļu"
 msgstr[1] "%(num)d nedēļa"
 msgstr[2] "%(num)d nedēļas"
 
@@ -292,7 +293,7 @@ msgstr[2] "%(num)d nedēļas"
 msgctxt "naturaltime-past"
 msgid "%(num)d day"
 msgid_plural "%(num)d days"
-msgstr[0] "%(num)d dienas"
+msgstr[0] "%(num)d dienu"
 msgstr[1] "%(num)d diena"
 msgstr[2] "%(num)d dienas"
 
@@ -300,7 +301,7 @@ msgstr[2] "%(num)d dienas"
 msgctxt "naturaltime-past"
 msgid "%(num)d hour"
 msgid_plural "%(num)d hours"
-msgstr[0] "%(num)d stundas"
+msgstr[0] "%(num)d stundu"
 msgstr[1] "%(num)d stunda"
 msgstr[2] "%(num)d stundas"
 
@@ -318,7 +319,7 @@ msgstr[2] "%(num)d minūtes"
 msgctxt "naturaltime-future"
 msgid "%(num)d year"
 msgid_plural "%(num)d years"
-msgstr[0] "%(num)d gadi"
+msgstr[0] "%(num)d gadu"
 msgstr[1] "%(num)d gads"
 msgstr[2] "%(num)d gadi"
 
@@ -326,7 +327,7 @@ msgstr[2] "%(num)d gadi"
 msgctxt "naturaltime-future"
 msgid "%(num)d month"
 msgid_plural "%(num)d months"
-msgstr[0] "%(num)d mēneši"
+msgstr[0] "%(num)d mēnešu"
 msgstr[1] "%(num)d mēnesis"
 msgstr[2] "%(num)d mēneši"
 
@@ -334,7 +335,7 @@ msgstr[2] "%(num)d mēneši"
 msgctxt "naturaltime-future"
 msgid "%(num)d week"
 msgid_plural "%(num)d weeks"
-msgstr[0] "%(num)d nedēļas"
+msgstr[0] "%(num)d nedēļu"
 msgstr[1] "%(num)d nedēļa"
 msgstr[2] "%(num)d nedēļas"
 
@@ -342,7 +343,7 @@ msgstr[2] "%(num)d nedēļas"
 msgctxt "naturaltime-future"
 msgid "%(num)d day"
 msgid_plural "%(num)d days"
-msgstr[0] "%(num)d dienas"
+msgstr[0] "%(num)d dienu"
 msgstr[1] "%(num)d diena"
 msgstr[2] "%(num)d dienas"
 
@@ -358,6 +359,6 @@ msgstr[2] "%(num)d stundas"
 msgctxt "naturaltime-future"
 msgid "%(num)d minute"
 msgid_plural "%(num)d minutes"
-msgstr[0] "%(num)d minūtes"
+msgstr[0] "%(num)d minūšu"
 msgstr[1] "%(num)d minūte"
 msgstr[2] "%(num)d minūtes"
Binary files 3:5.2.6-1/django/contrib/postgres/locale/ar/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/postgres/locale/ar/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/postgres/locale/ar/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/postgres/locale/ar/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/postgres/locale/ar/LC_MESSAGES/django.po	2025-08-14 13:25:33.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/postgres/locale/ar/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -2,15 +2,15 @@
 #
 # Translators:
 # Bashar Al-Abdulhadi, 2015-2017
-# Muaaz Alsaied, 2020
+# Muaaz Alsaied, 2020,2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-11 20:56+0200\n"
-"PO-Revision-Date: 2020-05-12 20:01+0000\n"
-"Last-Translator: Transifex Bot <>\n"
-"Language-Team: Arabic (http://www.transifex.com/django/django/language/ar/)\n"
+"POT-Creation-Date: 2023-01-17 02:13-0600\n"
+"PO-Revision-Date: 2025-09-17 09:22+0000\n"
+"Last-Translator: Muaaz Alsaied, 2020,2025\n"
+"Language-Team: Arabic (http://app.transifex.com/django/django/language/ar/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -121,11 +121,10 @@ msgstr "بعض المفاتيح المز
 
 #, python-format
 msgid ""
-"Ensure that this range is completely less than or equal to %(limit_value)s."
-msgstr "تأكد من أن هذا المدى أقل من أو يساوي %(limit_value)s."
+"Ensure that the upper bound of the range is not greater than %(limit_value)s."
+msgstr "تأكد من أن الحد الأعلى لهذا المجال أقل من أو يساوي %(limit_value)s."
 
 #, python-format
 msgid ""
-"Ensure that this range is completely greater than or equal to "
-"%(limit_value)s."
-msgstr "تأكد من أن هذا المدى أكثر من أو يساوي %(limit_value)s."
+"Ensure that the lower bound of the range is not less than %(limit_value)s."
+msgstr "تأكد من أن الحد الأدنى لهذا المجال أكبر من أو يساوي %(limit_value)s."
Binary files 3:5.2.6-1/django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/postgres/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/postgres/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/postgres/locale/lv/LC_MESSAGES/django.po	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/postgres/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2023
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2017
 # Edgars Voroboks <edgars.voroboks@gmail.com>, 2018
@@ -11,9 +12,9 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-01-17 02:13-0600\n"
-"PO-Revision-Date: 2023-04-19 09:22+0000\n"
-"Last-Translator: Edgars Voroboks <edgars.voroboks@gmail.com>, 2023\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 09:22+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -23,21 +24,21 @@ msgstr ""
 "2);\n"
 
 msgid "PostgreSQL extensions"
-msgstr "PostgreSQL paplašinājums"
+msgstr "PostgreSQL paplašinājumi"
 
 #, python-format
 msgid "Item %(nth)s in the array did not validate:"
-msgstr "Masīva %(nth)s elements nav pareizs:"
+msgstr "Masīva %(nth)s vienums nav derīgs:"
 
 msgid "Nested arrays must have the same length."
 msgstr "Iekļauto masīvu garumam jābūt vienādam."
 
 msgid "Map of strings to strings/nulls"
-msgstr "Virkņu karte uz virknēm/tukšumiem"
+msgstr "Virkņu karte uz virknēm / tukšām vērtībām (null)"
 
 #, python-format
 msgid "The value of “%(key)s” is not a string or null."
-msgstr "\"%(key)s\" vērtība nav teksta rinda vai nulles simbols."
+msgstr "\"%(key)s\" vērtība nav virkne vai tukša vērtība."
 
 msgid "Could not load JSON data."
 msgstr "Nevarēja ielādēt JSON datus."
@@ -46,22 +47,22 @@ msgid "Input must be a JSON dictionary."
 msgstr "Ieejošajiem datiem ir jābūt JSON vārdnīcai."
 
 msgid "Enter two valid values."
-msgstr "Ievadi divas derīgas vērtības."
+msgstr "Jāievada divas derīgas vērtības."
 
 msgid "The start of the range must not exceed the end of the range."
-msgstr "Diapazona sākums nedrīkst būt liekāks par beigām."
+msgstr "Apgabala sākums nedrīkst būt liekāks par beigām."
 
 msgid "Enter two whole numbers."
-msgstr "Ievadiet divus veselus skaitļus."
+msgstr "Jāievada divi veseli skaitļi."
 
 msgid "Enter two numbers."
-msgstr "Ievadiet divus skaitļus."
+msgstr "Jāievada divi skaitļi."
 
 msgid "Enter two valid date/times."
-msgstr "Ievadiet divus derīgus datumus/laikus."
+msgstr "Jāievada divi derīgi datumi/laiki."
 
 msgid "Enter two valid dates."
-msgstr "Ievadiet divus korektus datumus."
+msgstr "Jāievada divi derīgi datumi."
 
 #, python-format
 msgid ""
@@ -71,13 +72,13 @@ msgid_plural ""
 "List contains %(show_value)d items, it should contain no more than "
 "%(limit_value)d."
 msgstr[0] ""
-"Saraksts satur %(show_value)d ierakstus, bet tam jāsatur ne vairāk kā "
+"Sarakstā ir%(show_value)d vienumu, bet tam jāsatur ne vairāk kā "
 "%(limit_value)d."
 msgstr[1] ""
-"Saraksts satur %(show_value)d ierakstu, bet tam jāsatur ne vairāk kā "
+"Sarakstā ir %(show_value)d vienums, bet tam jāsatur ne vairāk kā "
 "%(limit_value)d."
 msgstr[2] ""
-"Saraksts satur %(show_value)d ierakstus, bet tam jāsatur ne vairāk kā "
+"Sarakstā ir %(show_value)d vienumi, bet tam jāsatur ne vairāk kā "
 "%(limit_value)d."
 
 #, python-format
@@ -88,14 +89,11 @@ msgid_plural ""
 "List contains %(show_value)d items, it should contain no fewer than "
 "%(limit_value)d."
 msgstr[0] ""
-"Saraksts satur %(show_value)d ierakstus, bet tam jāsatur vismaz "
-"%(limit_value)d."
+"Sarakstā ir %(show_value)d vienumu, bet tam jāsatur vismaz %(limit_value)d."
 msgstr[1] ""
-"Saraksts satur %(show_value)d ierakstu, bet tam jāsatur vismaz "
-"%(limit_value)d."
+"Sarakstā ir %(show_value)d vienums, bet tam jāsatur vismaz %(limit_value)d."
 msgstr[2] ""
-"Saraksts satur %(show_value)d ierakstus, bet tam jāsatur vismaz "
-"%(limit_value)d."
+"Sarakstā ir %(show_value)d vienumi, bet tam jāsatur vismaz %(limit_value)d."
 
 #, python-format
 msgid "Some keys were missing: %(keys)s"
@@ -109,10 +107,10 @@ msgstr "Tika norādītas dažas nezinām
 msgid ""
 "Ensure that the upper bound of the range is not greater than %(limit_value)s."
 msgstr ""
-"Pārliecinieties, ka diapazona augšējā robeža nav lielāka par %(limit_value)s."
+"Jānodrošina, ka apgabala augšējā robeža nav lielāka par %(limit_value)s."
 
 #, python-format
 msgid ""
 "Ensure that the lower bound of the range is not less than %(limit_value)s."
 msgstr ""
-"Pārliecinieties, ka diapazona apakšējā robeža nav mazāka par %(limit_value)s."
+"Jānodrošina, ka apgabala apakšējā robeža nav mazāka par %(limit_value)s."
Binary files 3:5.2.6-1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po	2025-08-14 13:30:54.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,17 +1,18 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # Jannis Leidel <jannis@leidel.info>, 2011
-# NullIsNot0 <nullisnot0@inbox.lv>, 2019,2021
+# Edgars Voroboks <edgars.voroboks@gmail.com>, 2019,2021
 # peterisb <pb@sungis.lv>, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-01-15 09:00+0100\n"
-"PO-Revision-Date: 2021-01-25 22:49+0000\n"
-"Last-Translator: NullIsNot0 <nullisnot0@inbox.lv>\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 18:32+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -33,8 +34,7 @@ msgid ""
 "This should be an absolute path, excluding the domain name. Example: “/"
 "events/search/”."
 msgstr ""
-"Tam jābūt absolūtajam ceļam, atskaitot domēna vārdu. Piemēram: \"/notikumi/"
-"meklet/\"."
+"Tam jābūt absolūtam ceļam bez domēna vārda. Piemēram: \"/notikumi/meklet/\"."
 
 msgid "redirect to"
 msgstr "pārvirzīt(redirect) uz"
Binary files 3:5.2.6-1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-01-15 09:00+0100\n"
-"PO-Revision-Date: 2025-04-01 15:04-0500\n"
+"PO-Revision-Date: 2025-09-17 18:32+0000\n"
 "Last-Translator: Manuela Silva <mmsrs@sky.com>, 2025\n"
 "Language-Team: Portuguese (http://app.transifex.com/django/django/language/"
 "pt/)\n"
@@ -33,8 +33,8 @@ msgid ""
 "This should be an absolute path, excluding the domain name. Example: “/"
 "events/search/”."
 msgstr ""
-"Isto deveria ser um caminho absoluto, excluindo o domínio. Exemplo: \"/"
-"events/search/\"."
+"Isto deveria ser um caminho absoluto, excluindo o nome de domínio. Exemplo: "
+"\"/events/search/\"."
 
 msgid "redirect to"
 msgstr "redirecionar para"
@@ -44,7 +44,7 @@ msgid ""
 "scheme such as “https://”."
 msgstr ""
 "Isto pode ser um caminho absoluto (como acima) ou um URL completo, começando "
-"com um esquema como \"https://\"."
+"com um esquema, como \"https://\"."
 
 msgid "redirect"
 msgstr "redirecionar"
Binary files 3:5.2.6-1/django/contrib/sites/locale/az/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/sites/locale/az/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/sites/locale/az/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/sites/locale/az/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/sites/locale/az/LC_MESSAGES/django.po	2025-04-01 14:58:55.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/sites/locale/az/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -3,14 +3,15 @@
 # Translators:
 # Ali Ismayilov <ali@ismailov.info>, 2011
 # Emin Mastizada <emin@linux.com>, 2018
+# Nijat Mammadov, 2025
 msgid ""
 msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-01-17 11:07+0100\n"
-"PO-Revision-Date: 2018-04-27 17:01+0000\n"
-"Last-Translator: Emin Mastizada <emin@linux.com>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 18:05+0000\n"
+"Last-Translator: Nijat Mammadov, 2025\n"
+"Language-Team: Azerbaijani (http://app.transifex.com/django/django/language/"
 "az/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,7 +29,7 @@ msgid "domain name"
 msgstr "domen"
 
 msgid "display name"
-msgstr "adı"
+msgstr "ekran adı"
 
 msgid "site"
 msgstr "sayt"
Binary files 3:5.2.6-1/django/contrib/sites/locale/lv/LC_MESSAGES/django.mo and 3:5.2.9-0ubuntu1/django/contrib/sites/locale/lv/LC_MESSAGES/django.mo differ
diff -pruN 3:5.2.6-1/django/contrib/sites/locale/lv/LC_MESSAGES/django.po 3:5.2.9-0ubuntu1/django/contrib/sites/locale/lv/LC_MESSAGES/django.po
--- 3:5.2.6-1/django/contrib/sites/locale/lv/LC_MESSAGES/django.po	2025-04-01 14:58:55.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/contrib/sites/locale/lv/LC_MESSAGES/django.po	2025-11-27 12:32:16.000000000 +0000
@@ -1,6 +1,7 @@
 # This file is distributed under the same license as the Django package.
 #
 # Translators:
+# Edgars Andersons, 2025
 # edgars <edgars.jekabsons@gmail.com>, 2011
 # Jannis Leidel <jannis@leidel.info>, 2011
 # peterisb <pb@sungis.lv>, 2016
@@ -9,9 +10,9 @@ msgstr ""
 "Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-01-17 11:07+0100\n"
-"PO-Revision-Date: 2017-09-19 16:40+0000\n"
-"Last-Translator: peterisb <pb@sungis.lv>\n"
-"Language-Team: Latvian (http://www.transifex.com/django/django/language/"
+"PO-Revision-Date: 2025-09-17 18:05+0000\n"
+"Last-Translator: Edgars Andersons, 2025\n"
+"Language-Team: Latvian (http://app.transifex.com/django/django/language/"
 "lv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,7 +25,7 @@ msgid "Sites"
 msgstr "Vietnes"
 
 msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domēna nosaukumā nevar būt tukšumi vai tabulatori."
+msgstr "Domēna vārdā nevar būt atstarpes vai atkāpes."
 
 msgid "domain name"
 msgstr "domēna vārds"
diff -pruN 3:5.2.6-1/django/core/exceptions.py 3:5.2.9-0ubuntu1/django/core/exceptions.py
--- 3:5.2.6-1/django/core/exceptions.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/core/exceptions.py	2025-12-02 12:30:32.000000000 +0000
@@ -54,7 +54,7 @@ class DisallowedHost(SuspiciousOperation
 
 
 class DisallowedRedirect(SuspiciousOperation):
-    """Redirect to scheme not in allowed list"""
+    """Redirect was too long or scheme was not in allowed list."""
 
     pass
 
diff -pruN 3:5.2.6-1/django/core/serializers/xml_serializer.py 3:5.2.9-0ubuntu1/django/core/serializers/xml_serializer.py
--- 3:5.2.6-1/django/core/serializers/xml_serializer.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/core/serializers/xml_serializer.py	2025-12-02 12:30:32.000000000 +0000
@@ -3,7 +3,8 @@ XML serializer.
 """
 
 import json
-from xml.dom import pulldom
+from contextlib import contextmanager
+from xml.dom import minidom, pulldom
 from xml.sax import handler
 from xml.sax.expatreader import ExpatParser as _ExpatParser
 
@@ -15,6 +16,25 @@ from django.db import DEFAULT_DB_ALIAS,
 from django.utils.xmlutils import SimplerXMLGenerator, UnserializableContentError
 
 
+@contextmanager
+def fast_cache_clearing():
+    """Workaround for performance issues in minidom document checks.
+
+    Speeds up repeated DOM operations by skipping unnecessary full traversal
+    of the DOM tree.
+    """
+    module_helper_was_lambda = False
+    if original_fn := getattr(minidom, "_in_document", None):
+        module_helper_was_lambda = original_fn.__name__ == "<lambda>"
+        if not module_helper_was_lambda:
+            minidom._in_document = lambda node: bool(node.ownerDocument)
+    try:
+        yield
+    finally:
+        if original_fn and not module_helper_was_lambda:
+            minidom._in_document = original_fn
+
+
 class Serializer(base.Serializer):
     """Serialize a QuerySet to XML."""
 
@@ -210,7 +230,8 @@ class Deserializer(base.Deserializer):
     def __next__(self):
         for event, node in self.event_stream:
             if event == "START_ELEMENT" and node.nodeName == "object":
-                self.event_stream.expandNode(node)
+                with fast_cache_clearing():
+                    self.event_stream.expandNode(node)
                 return self._handle_object(node)
         raise StopIteration
 
@@ -394,19 +415,25 @@ class Deserializer(base.Deserializer):
 
 def getInnerText(node):
     """Get all the inner text of a DOM node (recursively)."""
+    inner_text_list = getInnerTextList(node)
+    return "".join(inner_text_list)
+
+
+def getInnerTextList(node):
+    """Return a list of the inner texts of a DOM node (recursively)."""
     # inspired by https://mail.python.org/pipermail/xml-sig/2005-March/011022.html
-    inner_text = []
+    result = []
     for child in node.childNodes:
         if (
             child.nodeType == child.TEXT_NODE
             or child.nodeType == child.CDATA_SECTION_NODE
         ):
-            inner_text.append(child.data)
+            result.append(child.data)
         elif child.nodeType == child.ELEMENT_NODE:
-            inner_text.extend(getInnerText(child))
+            result.extend(getInnerTextList(child))
         else:
             pass
-    return "".join(inner_text)
+    return result
 
 
 # Below code based on Christian Heimes' defusedxml
diff -pruN 3:5.2.6-1/django/db/backends/oracle/base.py 3:5.2.9-0ubuntu1/django/db/backends/oracle/base.py
--- 3:5.2.6-1/django/db/backends/oracle/base.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/backends/oracle/base.py	2025-12-02 12:30:32.000000000 +0000
@@ -438,7 +438,7 @@ class OracleParam:
                 param = 0
         if hasattr(param, "bind_parameter"):
             self.force_bytes = param.bind_parameter(cursor)
-        elif isinstance(param, (Database.Binary, datetime.timedelta)):
+        elif isinstance(param, (bytes, datetime.timedelta)):
             self.force_bytes = param
         else:
             # To transmit to the database, we need Unicode if supported
diff -pruN 3:5.2.6-1/django/db/backends/oracle/operations.py 3:5.2.9-0ubuntu1/django/db/backends/oracle/operations.py
--- 3:5.2.6-1/django/db/backends/oracle/operations.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/backends/oracle/operations.py	2025-12-02 12:30:32.000000000 +0000
@@ -273,12 +273,12 @@ END;
         return value
 
     def convert_datefield_value(self, value, expression, connection):
-        if isinstance(value, Database.Timestamp):
+        if isinstance(value, datetime.datetime):
             value = value.date()
         return value
 
     def convert_timefield_value(self, value, expression, connection):
-        if isinstance(value, Database.Timestamp):
+        if isinstance(value, datetime.datetime):
             value = value.time()
         return value
 
diff -pruN 3:5.2.6-1/django/db/backends/oracle/utils.py 3:5.2.9-0ubuntu1/django/db/backends/oracle/utils.py
--- 3:5.2.6-1/django/db/backends/oracle/utils.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/backends/oracle/utils.py	2025-12-02 12:30:32.000000000 +0000
@@ -24,7 +24,7 @@ class InsertVar:
         "BooleanField": int,
         "FloatField": Database.DB_TYPE_BINARY_DOUBLE,
         "DateTimeField": Database.DB_TYPE_TIMESTAMP,
-        "DateField": Database.Date,
+        "DateField": datetime.date,
         "DecimalField": decimal.Decimal,
     }
 
diff -pruN 3:5.2.6-1/django/db/backends/postgresql/compiler.py 3:5.2.9-0ubuntu1/django/db/backends/postgresql/compiler.py
--- 3:5.2.6-1/django/db/backends/postgresql/compiler.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/backends/postgresql/compiler.py	2025-12-02 12:30:32.000000000 +0000
@@ -1,6 +1,6 @@
 from django.db.models.sql.compiler import (
     SQLAggregateCompiler,
-    SQLCompiler,
+    SQLCompiler as BaseSQLCompiler,
     SQLDeleteCompiler,
 )
 from django.db.models.sql.compiler import SQLInsertCompiler as BaseSQLInsertCompiler
@@ -25,6 +25,15 @@ class InsertUnnest(list):
         return "UNNEST(%s)" % ", ".join(self)
 
 
+class SQLCompiler(BaseSQLCompiler):
+    def quote_name_unless_alias(self, name):
+        if "$" in name:
+            raise ValueError(
+                "Dollar signs are not permitted in column aliases on PostgreSQL."
+            )
+        return super().quote_name_unless_alias(name)
+
+
 class SQLInsertCompiler(BaseSQLInsertCompiler):
     def assemble_as_sql(self, fields, value_rows):
         # Specialize bulk-insertion of literal values through UNNEST to
@@ -36,6 +45,11 @@ class SQLInsertCompiler(BaseSQLInsertCom
             # Lack of fields denote the usage of the DEFAULT keyword
             # for the insertion of empty rows.
             or any(field is None for field in fields)
+            # Field.get_placeholder takes value as an argument, so the
+            # resulting placeholder might be dependent on the value.
+            # in UNNEST requires a single placeholder to "fit all values" in
+            # the array.
+            or any(hasattr(field, "get_placeholder") for field in fields)
             # Fields that don't use standard internal types might not be
             # unnest'able (e.g. array and geometry types are known to be
             # problematic).
diff -pruN 3:5.2.6-1/django/db/models/base.py 3:5.2.9-0ubuntu1/django/db/models/base.py
--- 3:5.2.6-1/django/db/models/base.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/models/base.py	2025-12-02 12:30:32.000000000 +0000
@@ -1782,7 +1782,7 @@ class Model(AltersData, metaclass=ModelB
         meta = cls._meta
         pk = meta.pk
 
-        if not isinstance(pk, CompositePrimaryKey):
+        if meta.proxy or not isinstance(pk, CompositePrimaryKey):
             return errors
 
         seen_columns = defaultdict(list)
diff -pruN 3:5.2.6-1/django/db/models/expressions.py 3:5.2.9-0ubuntu1/django/db/models/expressions.py
--- 3:5.2.6-1/django/db/models/expressions.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/models/expressions.py	2025-12-02 12:30:32.000000000 +0000
@@ -425,7 +425,7 @@ class BaseExpression:
         clone = self.copy()
         clone.set_source_expressions(
             [
-                expr.replace_expressions(replacements) if expr else None
+                None if expr is None else expr.replace_expressions(replacements)
                 for expr in source_expressions
             ]
         )
diff -pruN 3:5.2.6-1/django/db/models/query.py 3:5.2.9-0ubuntu1/django/db/models/query.py
--- 3:5.2.6-1/django/db/models/query.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/models/query.py	2025-12-02 12:30:32.000000000 +0000
@@ -42,6 +42,8 @@ MAX_GET_RESULTS = 21
 # The maximum number of items to display in a QuerySet.__repr__
 REPR_OUTPUT_SIZE = 20
 
+PROHIBITED_FILTER_KWARGS = frozenset(["_connector", "_negated"])
+
 
 class BaseIterable:
     def __init__(
@@ -1512,6 +1514,9 @@ class QuerySet(AltersData):
         return clone
 
     def _filter_or_exclude_inplace(self, negate, args, kwargs):
+        if invalid_kwargs := PROHIBITED_FILTER_KWARGS.intersection(kwargs):
+            invalid_kwargs_str = ", ".join(f"'{k}'" for k in sorted(invalid_kwargs))
+            raise TypeError(f"The following kwargs are invalid: {invalid_kwargs_str}")
         if negate:
             self._query.add_q(~Q(*args, **kwargs))
         else:
@@ -2031,8 +2036,14 @@ class QuerySet(AltersData):
             raise TypeError(f"Cannot use {operator_} operator with combined queryset.")
 
     def _check_ordering_first_last_queryset_aggregation(self, method):
-        if isinstance(self.query.group_by, tuple) and not any(
-            col.output_field is self.model._meta.pk for col in self.query.group_by
+        if (
+            isinstance(self.query.group_by, tuple)
+            # Raise if the pk fields are not in the group_by.
+            and self.model._meta.pk
+            not in {col.output_field for col in self.query.group_by}
+            and set(self.model._meta.pk_fields).difference(
+                {col.target for col in self.query.group_by}
+            )
         ):
             raise TypeError(
                 f"Cannot use QuerySet.{method}() on an unordered queryset performing "
diff -pruN 3:5.2.6-1/django/db/models/query_utils.py 3:5.2.9-0ubuntu1/django/db/models/query_utils.py
--- 3:5.2.6-1/django/db/models/query_utils.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/models/query_utils.py	2025-12-02 12:30:32.000000000 +0000
@@ -48,8 +48,12 @@ class Q(tree.Node):
     XOR = "XOR"
     default = AND
     conditional = True
+    connectors = (None, AND, OR, XOR)
 
     def __init__(self, *args, _connector=None, _negated=False, **kwargs):
+        if _connector not in self.connectors:
+            connector_reprs = ", ".join(f"{conn!r}" for conn in self.connectors[1:])
+            raise ValueError(f"_connector must be one of {connector_reprs}, or None.")
         super().__init__(
             children=[*args, *sorted(kwargs.items())],
             connector=_connector,
diff -pruN 3:5.2.6-1/django/db/models/sql/query.py 3:5.2.9-0ubuntu1/django/db/models/sql/query.py
--- 3:5.2.6-1/django/db/models/sql/query.py	2025-09-03 11:14:44.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/db/models/sql/query.py	2025-12-02 12:30:32.000000000 +0000
@@ -48,9 +48,9 @@ from django.utils.tree import Node
 
 __all__ = ["Query", "RawQuery"]
 
-# Quotation marks ('"`[]), whitespace characters, semicolons, or inline
+# Quotation marks ('"`[]), whitespace characters, semicolons, hashes, or inline
 # SQL comments are forbidden in column aliases.
-FORBIDDEN_ALIAS_PATTERN = _lazy_re_compile(r"['`\"\]\[;\s]|--|/\*|\*/")
+FORBIDDEN_ALIAS_PATTERN = _lazy_re_compile(r"['`\"\]\[;\s]|#|--|/\*|\*/")
 
 # Inspired from
 # https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
@@ -1208,8 +1208,8 @@ class Query(BaseExpression):
     def check_alias(self, alias):
         if FORBIDDEN_ALIAS_PATTERN.search(alias):
             raise ValueError(
-                "Column aliases cannot contain whitespace characters, quotation marks, "
-                "semicolons, or SQL comments."
+                "Column aliases cannot contain whitespace characters, hashes, "
+                "quotation marks, semicolons, or SQL comments."
             )
 
     def add_annotation(self, annotation, alias, select=True):
diff -pruN 3:5.2.6-1/django/http/response.py 3:5.2.9-0ubuntu1/django/http/response.py
--- 3:5.2.6-1/django/http/response.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/http/response.py	2025-12-02 12:30:32.000000000 +0000
@@ -22,7 +22,11 @@ from django.utils import timezone
 from django.utils.datastructures import CaseInsensitiveMapping
 from django.utils.encoding import iri_to_uri
 from django.utils.functional import cached_property
-from django.utils.http import content_disposition_header, http_date
+from django.utils.http import (
+    MAX_URL_REDIRECT_LENGTH,
+    content_disposition_header,
+    http_date,
+)
 from django.utils.regex_helper import _lazy_re_compile
 
 _charset_from_content_type_re = _lazy_re_compile(
@@ -630,7 +634,12 @@ class HttpResponseRedirectBase(HttpRespo
     def __init__(self, redirect_to, preserve_request=False, *args, **kwargs):
         super().__init__(*args, **kwargs)
         self["Location"] = iri_to_uri(redirect_to)
-        parsed = urlsplit(str(redirect_to))
+        redirect_to_str = str(redirect_to)
+        if len(redirect_to_str) > MAX_URL_REDIRECT_LENGTH:
+            raise DisallowedRedirect(
+                f"Unsafe redirect exceeding {MAX_URL_REDIRECT_LENGTH} characters"
+            )
+        parsed = urlsplit(redirect_to_str)
         if preserve_request:
             self.status_code = self.status_code_preserve_request
         if parsed.scheme and parsed.scheme not in self.allowed_schemes:
diff -pruN 3:5.2.6-1/django/template/base.py 3:5.2.9-0ubuntu1/django/template/base.py
--- 3:5.2.6-1/django/template/base.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/template/base.py	2025-12-02 12:30:32.000000000 +0000
@@ -58,6 +58,7 @@ from enum import Enum
 from django.template.context import BaseContext
 from django.utils.formats import localize
 from django.utils.html import conditional_escape
+from django.utils.inspect import lazy_annotations
 from django.utils.regex_helper import _lazy_re_compile
 from django.utils.safestring import SafeData, SafeString, mark_safe
 from django.utils.text import get_text_list, smart_split, unescape_string_literal
@@ -760,7 +761,8 @@ class FilterExpression:
         # Check to see if a decorator is providing the real function.
         func = inspect.unwrap(func)
 
-        args, _, _, defaults, _, _, _ = inspect.getfullargspec(func)
+        with lazy_annotations():
+            args, _, _, defaults, _, _, _ = inspect.getfullargspec(func)
         alen = len(args)
         dlen = len(defaults or [])
         # Not enough OR Too many
diff -pruN 3:5.2.6-1/django/template/library.py 3:5.2.9-0ubuntu1/django/template/library.py
--- 3:5.2.6-1/django/template/library.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/template/library.py	2025-12-02 12:30:32.000000000 +0000
@@ -4,6 +4,7 @@ from importlib import import_module
 from inspect import getfullargspec, unwrap
 
 from django.utils.html import conditional_escape
+from django.utils.inspect import lazy_annotations
 
 from .base import Node, Template, token_kwargs
 from .exceptions import TemplateSyntaxError
@@ -109,15 +110,16 @@ class Library:
         """
 
         def dec(func):
-            (
-                params,
-                varargs,
-                varkw,
-                defaults,
-                kwonly,
-                kwonly_defaults,
-                _,
-            ) = getfullargspec(unwrap(func))
+            with lazy_annotations():
+                (
+                    params,
+                    varargs,
+                    varkw,
+                    defaults,
+                    kwonly,
+                    kwonly_defaults,
+                    _,
+                ) = getfullargspec(unwrap(func))
             function_name = name or func.__name__
 
             @wraps(func)
@@ -164,16 +166,16 @@ class Library:
 
         def dec(func):
             nonlocal end_name
-
-            (
-                params,
-                varargs,
-                varkw,
-                defaults,
-                kwonly,
-                kwonly_defaults,
-                _,
-            ) = getfullargspec(unwrap(func))
+            with lazy_annotations():
+                (
+                    params,
+                    varargs,
+                    varkw,
+                    defaults,
+                    kwonly,
+                    kwonly_defaults,
+                    _,
+                ) = getfullargspec(unwrap(func))
             function_name = name or func.__name__
 
             if end_name is None:
@@ -248,15 +250,16 @@ class Library:
         """
 
         def dec(func):
-            (
-                params,
-                varargs,
-                varkw,
-                defaults,
-                kwonly,
-                kwonly_defaults,
-                _,
-            ) = getfullargspec(unwrap(func))
+            with lazy_annotations():
+                (
+                    params,
+                    varargs,
+                    varkw,
+                    defaults,
+                    kwonly,
+                    kwonly_defaults,
+                    _,
+                ) = getfullargspec(unwrap(func))
             function_name = name or func.__name__
 
             @wraps(func)
diff -pruN 3:5.2.6-1/django/utils/archive.py 3:5.2.9-0ubuntu1/django/utils/archive.py
--- 3:5.2.6-1/django/utils/archive.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/utils/archive.py	2025-12-02 12:30:32.000000000 +0000
@@ -145,7 +145,11 @@ class BaseArchive:
     def target_filename(self, to_path, name):
         target_path = os.path.abspath(to_path)
         filename = os.path.abspath(os.path.join(target_path, name))
-        if not filename.startswith(target_path):
+        try:
+            if os.path.commonpath([target_path, filename]) != target_path:
+                raise SuspiciousOperation("Archive contains invalid path: '%s'" % name)
+        except ValueError:
+            # Different drives on Windows raises ValueError.
             raise SuspiciousOperation("Archive contains invalid path: '%s'" % name)
         return filename
 
diff -pruN 3:5.2.6-1/django/utils/feedgenerator.py 3:5.2.9-0ubuntu1/django/utils/feedgenerator.py
--- 3:5.2.6-1/django/utils/feedgenerator.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/utils/feedgenerator.py	2025-12-02 12:30:32.000000000 +0000
@@ -28,6 +28,7 @@ import mimetypes
 from io import StringIO
 from urllib.parse import urlparse
 
+from django.forms.utils import flatatt
 from django.utils.encoding import iri_to_uri
 from django.utils.xmlutils import SimplerXMLGenerator
 
@@ -94,12 +95,12 @@ class Stylesheet:
         return self._mimetype
 
     def __str__(self):
-        data = [f'href="{self.url}"']
-        if self.mimetype is not None:
-            data.append(f'type="{self.mimetype}"')
-        if self.media is not None:
-            data.append(f'media="{self.media}"')
-        return " ".join(data)
+        attrs = {
+            "href": iri_to_uri(self._url),
+            "type": self.mimetype,
+            "media": self.media,
+        }
+        return flatatt(attrs).strip()
 
     def __repr__(self):
         return repr((self.url, self.mimetype, self.media))
diff -pruN 3:5.2.6-1/django/utils/http.py 3:5.2.9-0ubuntu1/django/utils/http.py
--- 3:5.2.6-1/django/utils/http.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/utils/http.py	2025-12-02 12:30:32.000000000 +0000
@@ -38,6 +38,7 @@ ASCTIME_DATE = _lazy_re_compile(r"^\w{3}
 RFC3986_GENDELIMS = ":/?#[]@"
 RFC3986_SUBDELIMS = "!$&'()*+,;="
 MAX_URL_LENGTH = 2048
+MAX_URL_REDIRECT_LENGTH = 16384
 
 
 def urlencode(query, doseq=False):
diff -pruN 3:5.2.6-1/django/utils/inspect.py 3:5.2.9-0ubuntu1/django/utils/inspect.py
--- 3:5.2.6-1/django/utils/inspect.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/utils/inspect.py	2025-12-02 12:30:32.000000000 +0000
@@ -1,10 +1,32 @@
 import functools
 import inspect
+import threading
+from contextlib import contextmanager
+
+from django.utils.version import PY314
+
+if PY314:
+    import annotationlib
+
+    lock = threading.Lock()
+    safe_signature_from_callable = functools.partial(
+        inspect._signature_from_callable,
+        annotation_format=annotationlib.Format.FORWARDREF,
+    )
 
 
 @functools.lru_cache(maxsize=512)
 def _get_func_parameters(func, remove_first):
-    parameters = tuple(inspect.signature(func).parameters.values())
+    # As the annotations are not used in any case, inspect the signature with
+    # FORWARDREF to leave any deferred annotations unevaluated.
+    if PY314:
+        signature = inspect.signature(
+            func, annotation_format=annotationlib.Format.FORWARDREF
+        )
+    else:
+        signature = inspect.signature(func)
+
+    parameters = tuple(signature.parameters.values())
     if remove_first:
         parameters = parameters[1:]
     return parameters
@@ -74,3 +96,27 @@ def method_has_no_args(meth):
 
 def func_supports_parameter(func, name):
     return any(param.name == name for param in _get_callable_parameters(func))
+
+
+@contextmanager
+def lazy_annotations():
+    """
+    inspect.getfullargspec eagerly evaluates type annotations. To add
+    compatibility with Python 3.14+ deferred evaluation, patch the module-level
+    helper to provide the annotation_format that we are using elsewhere.
+
+    This private helper could be removed when there is an upstream solution for
+    https://github.com/python/cpython/issues/141560.
+
+    This context manager is not reentrant.
+    """
+    if not PY314:
+        yield
+        return
+    with lock:
+        original_helper = inspect._signature_from_callable
+        inspect._signature_from_callable = safe_signature_from_callable
+        try:
+            yield
+        finally:
+            inspect._signature_from_callable = original_helper
diff -pruN 3:5.2.6-1/django/views/i18n.py 3:5.2.9-0ubuntu1/django/views/i18n.py
--- 3:5.2.6-1/django/views/i18n.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/django/views/i18n.py	2025-12-02 12:30:32.000000000 +0000
@@ -29,9 +29,9 @@ def builtin_template_path(name):
 
 def set_language(request):
     """
-    Redirect to a given URL while setting the chosen language in the session
-    (if enabled) and in a cookie. The URL and the language code need to be
-    specified in the request parameters.
+    Redirect to a given URL while setting the chosen language in the language
+    cookie. The URL and the language code need to be specified in the request
+    parameters.
 
     Since this view changes how the user will see the rest of the site, it must
     only be accessed as a POST request. If called as a GET request, it will
diff -pruN 3:5.2.6-1/docs/faq/install.txt 3:5.2.9-0ubuntu1/docs/faq/install.txt
--- 3:5.2.6-1/docs/faq/install.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/faq/install.txt	2025-12-02 12:30:32.000000000 +0000
@@ -53,7 +53,7 @@ Django version Python versions
 4.2            3.8, 3.9, 3.10, 3.11, 3.12 (added in 4.2.8)
 5.0            3.10, 3.11, 3.12
 5.1            3.10, 3.11, 3.12, 3.13 (added in 5.1.3)
-5.2            3.10, 3.11, 3.12, 3.13
+5.2            3.10, 3.11, 3.12, 3.13, 3.14 (added in 5.2.8)
 ============== ===============
 
 For each version of Python, only the latest micro release (A.B.C) is officially
diff -pruN 3:5.2.6-1/docs/howto/upgrade-version.txt 3:5.2.9-0ubuntu1/docs/howto/upgrade-version.txt
--- 3:5.2.6-1/docs/howto/upgrade-version.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/howto/upgrade-version.txt	2025-12-02 12:30:32.000000000 +0000
@@ -12,6 +12,13 @@ version has several benefits:
 * Upgrading as each new Django release is available makes future upgrades less
   painful by keeping your code base up to date.
 
+.. admonition:: Tools to help with version upgrades
+
+    Django has a vibrant ecosystem. There are automated upgrade helpers
+    highlighted on the `Community Ecosystem
+    <https://www.djangoproject.com/community/ecosystem/#upgrade-utilities>`__
+    page.
+
 Here are some things to consider to help make your upgrade process as smooth as
 possible.
 
diff -pruN 3:5.2.6-1/docs/howto/windows.txt 3:5.2.9-0ubuntu1/docs/howto/windows.txt
--- 3:5.2.6-1/docs/howto/windows.txt	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/howto/windows.txt	2025-11-27 12:32:16.000000000 +0000
@@ -2,7 +2,7 @@
 How to install Django on Windows
 ================================
 
-This document will guide you through installing Python 3.13 and Django on
+This document will guide you through installing Python 3.14 and Django on
 Windows. It also provides instructions for setting up a virtual environment,
 which makes it easier to work on Python projects. This is meant as a beginner's
 guide for users working on Django projects and does not reflect how Django
@@ -18,7 +18,7 @@ Install Python
 ==============
 
 Django is a Python web framework, thus requiring Python to be installed on your
-machine. At the time of writing, Python 3.13 is the latest version.
+machine. At the time of writing, Python 3.14 is the latest version.
 
 To install Python on your machine go to https://www.python.org/downloads/. The
 website should offer you a download button for the latest Python version.
diff -pruN 3:5.2.6-1/docs/howto/writing-migrations.txt 3:5.2.9-0ubuntu1/docs/howto/writing-migrations.txt
--- 3:5.2.6-1/docs/howto/writing-migrations.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/howto/writing-migrations.txt	2025-12-02 12:30:32.000000000 +0000
@@ -334,7 +334,7 @@ model, the default migration will delete
 one, losing the existing relations. To avoid this, you can use
 :class:`.SeparateDatabaseAndState` to rename the existing table to the new
 table name while telling the migration autodetector that the new model has
-been created. You can check the existing table name through
+been created. You can check the existing table name and constraint name through
 :djadmin:`sqlmigrate` or :djadmin:`dbshell`. You can check the new table name
 with the through model's ``_meta.db_table`` property. Your new ``through``
 model should use the same names for the ``ForeignKey``\s as Django did. Also if
@@ -392,6 +392,14 @@ For example, if we had a ``Book`` model
                                 ),
                             ),
                         ],
+                        options={
+                            "constraints": [
+                                models.UniqueConstraint(
+                                    fields=["author", "book"],
+                                    name="unique_author_book",
+                                )
+                            ],
+                        },
                     ),
                     migrations.AlterField(
                         model_name="book",
diff -pruN 3:5.2.6-1/docs/internals/contributing/writing-code/submitting-patches.txt 3:5.2.9-0ubuntu1/docs/internals/contributing/writing-code/submitting-patches.txt
--- 3:5.2.6-1/docs/internals/contributing/writing-code/submitting-patches.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/internals/contributing/writing-code/submitting-patches.txt	2025-12-02 12:30:32.000000000 +0000
@@ -421,8 +421,8 @@ All code changes
 
 * Does the :doc:`coding style
   </internals/contributing/writing-code/coding-style>` conform to our
-  guidelines? Are there any  ``black``, ``blacken-docs``, ``flake8``, or
-  ``isort`` errors? You can install the :ref:`pre-commit
+  guidelines? Are there any  ``black``, ``blacken-docs``, ``flake8``,
+  ``isort``, or ``zizmor`` errors? You can install the :ref:`pre-commit
   <coding-style-pre-commit>` hooks to automatically catch these errors.
 * If the change is backwards incompatible in any way, is there a note
   in the release notes (``docs/releases/A.B.txt``)?
diff -pruN 3:5.2.6-1/docs/internals/contributing/writing-code/unit-tests.txt 3:5.2.9-0ubuntu1/docs/internals/contributing/writing-code/unit-tests.txt
--- 3:5.2.6-1/docs/internals/contributing/writing-code/unit-tests.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/internals/contributing/writing-code/unit-tests.txt	2025-12-02 12:30:32.000000000 +0000
@@ -69,7 +69,7 @@ command from any place in the Django sou
     $ tox
 
 By default, ``tox`` runs the test suite with the bundled test settings file for
-SQLite, ``black``, ``blacken-docs``, ``flake8``, ``isort``, and the
+SQLite, ``black``, ``blacken-docs``, ``flake8``, ``isort``, ``zizmor``, and the
 documentation spelling checker. In addition to the system dependencies noted
 elsewhere in this documentation, the command ``python3`` must be on your path
 and linked to the appropriate version of Python. A list of default environments
@@ -84,6 +84,7 @@ can be seen as follows:
     flake8>=3.7.0
     docs
     isort>=5.1.0
+    zizmor>=1.16.3
 
 Testing other Python versions and database backends
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff -pruN 3:5.2.6-1/docs/intro/reusable-apps.txt 3:5.2.9-0ubuntu1/docs/intro/reusable-apps.txt
--- 3:5.2.6-1/docs/intro/reusable-apps.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/intro/reusable-apps.txt	2025-12-02 12:30:32.000000000 +0000
@@ -209,7 +209,7 @@ this. For a small app like polls, this p
        :caption: ``django-polls/pyproject.toml``
 
        [build-system]
-       requires = ["setuptools>=69.3"]
+       requires = ["setuptools>=77.0.3"]
        build-backend = "setuptools.build_meta"
 
        [project]
@@ -220,6 +220,7 @@ this. For a small app like polls, this p
        ]
        description = "A Django app to conduct web-based polls."
        readme = "README.rst"
+       license = "BSD-3-Clause"
        requires-python = ">= 3.10"
        authors = [
            {name = "Your Name", email = "yourname@example.com"},
@@ -229,7 +230,6 @@ this. For a small app like polls, this p
            "Framework :: Django",
            "Framework :: Django :: X.Y",  # Replace "X.Y" as appropriate
            "Intended Audience :: Developers",
-           "License :: OSI Approved :: BSD License",
            "Operating System :: OS Independent",
            "Programming Language :: Python",
            "Programming Language :: Python :: 3",
@@ -238,6 +238,7 @@ this. For a small app like polls, this p
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
+           "Programming Language :: Python :: 3.14",
            "Topic :: Internet :: WWW/HTTP",
            "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
        ]
diff -pruN 3:5.2.6-1/docs/intro/tutorial02.txt 3:5.2.9-0ubuntu1/docs/intro/tutorial02.txt
--- 3:5.2.6-1/docs/intro/tutorial02.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/intro/tutorial02.txt	2025-12-02 12:30:32.000000000 +0000
@@ -438,8 +438,13 @@ time-zone-related utilities in :mod:`dja
 you aren't familiar with time zone handling in Python, you can learn more in
 the :doc:`time zone support docs </topics/i18n/timezones>`.
 
-Save these changes and start a new Python interactive shell by running
-``python manage.py shell`` again:
+Save these changes and start a new Python interactive shell. (If a
+three-chevron prompt (>>>) indicates you are still in the shell, you need to
+exit first using ``exit()``). Run ``python manage.py shell`` again to reload
+the models.
+
+.. RemovedInDjango70Warning: When Python 3.12 is no longer supported,
+  ``exit()`` can be replaced with ``exit``.
 
 .. code-block:: pycon
 
diff -pruN 3:5.2.6-1/docs/ref/checks.txt 3:5.2.9-0ubuntu1/docs/ref/checks.txt
--- 3:5.2.6-1/docs/ref/checks.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/checks.txt	2025-12-02 12:30:32.000000000 +0000
@@ -814,11 +814,11 @@ The following checks are performed on an
 :class:`~django.contrib.contenttypes.admin.GenericInlineModelAdmin` that is
 registered as an inline on a :class:`~django.contrib.admin.ModelAdmin`.
 
-* **admin.E301**: ``'ct_field'`` references ``<label>``, which is not a field
+* **admin.E301**: ``<model>`` has no ``GenericForeignKey``.
+* **admin.E302**: ``'ct_field'`` references ``<label>``, which is not a field
   on ``<model>``.
-* **admin.E302**: ``'ct_fk_field'`` references ``<label>``, which is not a
+* **admin.E303**: ``'ct_fk_field'`` references ``<label>``, which is not a
   field on ``<model>``.
-* **admin.E303**: ``<model>`` has no ``GenericForeignKey``.
 * **admin.E304**: ``<model>`` has no ``GenericForeignKey`` using content type
   field ``<field name>`` and object ID field ``<field name>``.
 
diff -pruN 3:5.2.6-1/docs/ref/contrib/auth.txt 3:5.2.9-0ubuntu1/docs/ref/contrib/auth.txt
--- 3:5.2.6-1/docs/ref/contrib/auth.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/contrib/auth.txt	2025-12-02 12:30:32.000000000 +0000
@@ -293,7 +293,7 @@ Methods
 
         Sends an email to the user. If ``from_email`` is ``None``, Django uses
         the :setting:`DEFAULT_FROM_EMAIL`. Any ``**kwargs`` are passed to the
-        underlying :meth:`~django.core.mail.send_mail()` call.
+        underlying :func:`~django.core.mail.send_mail` call.
 
 Manager methods
 ---------------
diff -pruN 3:5.2.6-1/docs/ref/contrib/contenttypes.txt 3:5.2.9-0ubuntu1/docs/ref/contrib/contenttypes.txt
--- 3:5.2.6-1/docs/ref/contrib/contenttypes.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/contrib/contenttypes.txt	2025-12-02 12:30:32.000000000 +0000
@@ -386,7 +386,7 @@ normal field object, these examples will
     >>> TaggedItem.objects.get(content_object=guido)
 
 Likewise, :class:`~django.contrib.contenttypes.fields.GenericForeignKey`\s
-does not appear in :class:`~django.forms.ModelForm`\s.
+do not appear in :class:`~django.forms.ModelForm`\s.
 
 Reverse generic relations
 -------------------------
diff -pruN 3:5.2.6-1/docs/ref/contrib/postgres/search.txt 3:5.2.9-0ubuntu1/docs/ref/contrib/postgres/search.txt
--- 3:5.2.6-1/docs/ref/contrib/postgres/search.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/contrib/postgres/search.txt	2025-12-02 12:30:32.000000000 +0000
@@ -27,7 +27,7 @@ single column in the database. For examp
 .. code-block:: pycon
 
     >>> Entry.objects.filter(body_text__search="Cheese")
-    [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
+    <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]>
 
 This creates a ``to_tsvector`` in the database from the ``body_text`` field
 and a ``plainto_tsquery`` from the search term ``'Cheese'``, both using the
@@ -52,7 +52,7 @@ To query against both fields, use a ``Se
     >>> Entry.objects.annotate(
     ...     search=SearchVector("body_text", "blog__tagline"),
     ... ).filter(search="Cheese")
-    [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
+    <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]>
 
 The arguments to ``SearchVector`` can be any
 :class:`~django.db.models.Expression` or the name of a field. Multiple
@@ -67,7 +67,7 @@ For example:
     >>> Entry.objects.annotate(
     ...     search=SearchVector("body_text") + SearchVector("blog__tagline"),
     ... ).filter(search="Cheese")
-    [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
+    <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]>
 
 See :ref:`postgresql-fts-search-configuration` and
 :ref:`postgresql-fts-weighting-queries` for an explanation of the ``config``
@@ -137,7 +137,7 @@ order by relevancy:
     >>> vector = SearchVector("body_text")
     >>> query = SearchQuery("cheese")
     >>> Entry.objects.annotate(rank=SearchRank(vector, query)).order_by("-rank")
-    [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]
+    <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]>
 
 See :ref:`postgresql-fts-weighting-queries` for an explanation of the
 ``weights`` parameter.
@@ -235,7 +235,7 @@ different language parsers and dictionar
     >>> Entry.objects.annotate(
     ...     search=SearchVector("body_text", config="french"),
     ... ).filter(search=SearchQuery("œuf", config="french"))
-    [<Entry: Pain perdu>]
+    <QuerySet [<Entry: Pain perdu>]>
 
 The value of ``config`` could also be stored in another column:
 
@@ -245,7 +245,7 @@ The value of ``config`` could also be st
     >>> Entry.objects.annotate(
     ...     search=SearchVector("body_text", config=F("blog__language")),
     ... ).filter(search=SearchQuery("œuf", config=F("blog__language")))
-    [<Entry: Pain perdu>]
+    <QuerySet [<Entry: Pain perdu>]>
 
 .. _postgresql-fts-weighting-queries:
 
@@ -313,7 +313,7 @@ if it were an annotated ``SearchVector``
 
     >>> Entry.objects.update(search_vector=SearchVector("body_text"))
     >>> Entry.objects.filter(search_vector="cheese")
-    [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]
+    <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]>
 
 .. _PostgreSQL documentation: https://www.postgresql.org/docs/current/textsearch-features.html#TEXTSEARCH-UPDATE-TRIGGERS
 
@@ -352,7 +352,7 @@ Usage example:
     ... ).filter(
     ...     similarity__gt=0.3
     ... ).order_by("-similarity")
-    [<Author: Katy Stevens>, <Author: Stephen Keats>]
+    <QuerySet [<Author: Katy Stevens>, <Author: Stephen Keats>]>
 
 ``TrigramWordSimilarity``
 -------------------------
@@ -375,7 +375,7 @@ Usage example:
     ... ).filter(
     ...     similarity__gt=0.3
     ... ).order_by("-similarity")
-    [<Author: Katy Stevens>]
+    <QuerySet [<Author: Katy Stevens>]>
 
 ``TrigramStrictWordSimilarity``
 -------------------------------
@@ -408,7 +408,7 @@ Usage example:
     ... ).filter(
     ...     distance__lte=0.7
     ... ).order_by("distance")
-    [<Author: Katy Stevens>, <Author: Stephen Keats>]
+    <QuerySet [<Author: Katy Stevens>, <Author: Stephen Keats>]>
 
 ``TrigramWordDistance``
 -----------------------
@@ -431,7 +431,7 @@ Usage example:
     ... ).filter(
     ...     distance__lte=0.7
     ... ).order_by("distance")
-    [<Author: Katy Stevens>]
+    <QuerySet [<Author: Katy Stevens>]>
 
 ``TrigramStrictWordDistance``
 -----------------------------
diff -pruN 3:5.2.6-1/docs/ref/databases.txt 3:5.2.9-0ubuntu1/docs/ref/databases.txt
--- 3:5.2.6-1/docs/ref/databases.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/databases.txt	2025-12-02 12:30:32.000000000 +0000
@@ -1305,6 +1305,7 @@ by 3rd parties that allow you to use oth
 * :pypi:`Firebird <django-firebird>`
 * :pypi:`Google Cloud Spanner <django-google-spanner>`
 * :pypi:`Microsoft SQL Server <mssql-django>`
+* :pypi:`MongoDB <django-mongodb-backend>`
 * :pypi:`Snowflake <django-snowflake>`
 * :pypi:`TiDB <django-tidb>`
 * :pypi:`YugabyteDB <django-yugabytedb>`
diff -pruN 3:5.2.6-1/docs/ref/django-admin.txt 3:5.2.9-0ubuntu1/docs/ref/django-admin.txt
--- 3:5.2.6-1/docs/ref/django-admin.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/django-admin.txt	2025-12-02 12:30:32.000000000 +0000
@@ -1051,12 +1051,12 @@ together:
 .. django-admin-option:: --managers
 
 Mails the email addresses specified in :setting:`MANAGERS` using
-:meth:`~django.core.mail.mail_managers()`.
+:func:`~django.core.mail.mail_managers`.
 
 .. django-admin-option:: --admins
 
 Mails the email addresses specified in :setting:`ADMINS` using
-:meth:`~django.core.mail.mail_admins()`.
+:func:`~django.core.mail.mail_admins`.
 
 ``shell``
 ---------
@@ -1303,6 +1303,15 @@ zip files, you can use a URL like:
 
     django-admin startapp --template=https://github.com/githubuser/django-app-template/archive/main.zip myapp
 
+.. warning::
+
+    Templates provided via ``--template`` are used as is. Malicious or poorly
+    constructed templates may introduce security weaknesses or unintended
+    behavior. Compressed archives may also consume excessive resources during
+    extraction, potentially causing crashes or hangs.
+
+    Contents of templates should be carefully inspected before use.
+
 .. django-admin-option:: --extension EXTENSIONS, -e EXTENSIONS
 
 Specifies which file extensions in the app template should be rendered with the
@@ -1391,7 +1400,10 @@ For example:
 .. django-admin-option:: --template TEMPLATE
 
 Specifies a directory, file path, or URL of a custom project template. See the
-:option:`startapp --template` documentation for examples and usage.
+:option:`startapp --template` documentation for examples and usage. The same
+**security considerations** described for ``startapp`` templates apply here:
+malicious or poorly constructed templates may introduce weaknesses or consume
+excessive resources, and templates should be carefully inspected before use.
 
 .. django-admin-option:: --extension EXTENSIONS, -e EXTENSIONS
 
diff -pruN 3:5.2.6-1/docs/ref/models/expressions.txt 3:5.2.9-0ubuntu1/docs/ref/models/expressions.txt
--- 3:5.2.6-1/docs/ref/models/expressions.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/models/expressions.txt	2025-12-02 12:30:32.000000000 +0000
@@ -37,6 +37,12 @@ determine the result's field type, such
 types. For example, adding a ``DecimalField()`` and a ``FloatField()`` requires
 an output field, like ``output_field=FloatField()``.
 
+``output_field`` also allows using custom fields that perform type conversions
+outside a specific model field context. For example, if you frequently need to
+perform date arithmetic with ``timedelta``, you can create a custom field that
+handles the conversion, ensuring consistent results across databases. See
+:doc:`/howto/custom-model-fields`.
+
 Some examples
 =============
 
@@ -192,8 +198,8 @@ Slicing ``F()`` expressions
 
 For string-based fields, text-based fields, and
 :class:`~django.contrib.postgres.fields.ArrayField`, you can use Python's
-array-slicing syntax. The indices are 0-based and the ``step`` argument to
-``slice`` is not supported. For example:
+array-slicing syntax. The indices are 0-based. The ``step`` argument to
+``slice`` and negative indexing are not supported. For example:
 
 .. code-block:: pycon
 
@@ -559,6 +565,12 @@ available on other expressions. ``Expres
 arithmetic on ``F()`` expressions with different types as described in
 :ref:`using-f-with-annotations`.
 
+.. admonition:: Database casting not performed
+
+    ``ExpressionWrapper`` only sets the output field for the ORM and does not
+    perform any database-level casting. To ensure a specific type is returned
+    from the database, use :class:`~django.db.models.functions.Cast` instead.
+
 Conditional expressions
 -----------------------
 
diff -pruN 3:5.2.6-1/docs/ref/models/fields.txt 3:5.2.9-0ubuntu1/docs/ref/models/fields.txt
--- 3:5.2.6-1/docs/ref/models/fields.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/models/fields.txt	2025-12-02 12:30:32.000000000 +0000
@@ -841,6 +841,39 @@ Any combination of these options will re
     instance, removing its time component. This is true for both storage and
     comparison.
 
+.. warning::
+
+    On PostgreSQL and MySQL, arithmetic operations on a ``DateField`` with a
+    :class:`~datetime.timedelta` return a ``datetime`` instead of a ``date``.
+    This occurs because Python's ``timedelta`` is converted to SQL
+    ``INTERVAL``, and the SQL operation ``date +/- interval`` returns a
+    ``timestamp`` on these databases.
+
+    To ensure a ``date`` result, use one of the following approaches. Either
+    explicitly cast the result to a date::
+
+        import datetime
+        from django.db.models import DateField, F
+        from django.db.models.functions import Cast
+
+        qs = MyModel.objects.annotate(
+            previous_day=Cast(
+                F("date_field") - datetime.timedelta(days=1),
+                output_field=DateField(),
+            )
+        )
+
+    Or on PostgreSQL only, use integer arithmetic to represent days::
+
+        from django.db.models import DateField, ExpressionWrapper, F
+
+        qs = MyModel.objects.annotate(
+            previous_day=ExpressionWrapper(
+                F("date_field") - 1,  # Subtract 1 day as integer
+                output_field=DateField(),
+            )
+        )
+
 ``DateTimeField``
 -----------------
 
@@ -1727,8 +1760,9 @@ The possible values for :attr:`~ForeignK
 
 * .. attribute:: CASCADE
 
-    Cascade deletes. Django emulates the behavior of the SQL constraint ON
-    DELETE CASCADE and also deletes the object containing the ForeignKey.
+    Cascade deletes. Django emulates the behavior of the SQL constraint ``ON
+    DELETE CASCADE`` and also deletes the object containing the
+    :class:`ForeignKey`.
 
     :meth:`.Model.delete` isn't called on related models, but the
     :data:`~django.db.models.signals.pre_delete` and
@@ -1947,9 +1981,9 @@ The possible values for :attr:`~ForeignK
 
     Setting it to ``False`` does not mean you can reference a swappable model
     even if it is swapped out - ``False`` means that the migrations made
-    with this ForeignKey will always reference the exact model you specify
-    (so it will fail hard if the user tries to run with a User model you don't
-    support, for example).
+    with this :class:`ForeignKey` will always reference the exact model you
+    specify (so it will fail hard if the user tries to run with a ``User``
+    model you don't support, for example).
 
     If in doubt, leave it to its default of ``True``.
 
diff -pruN 3:5.2.6-1/docs/ref/models/options.txt 3:5.2.9-0ubuntu1/docs/ref/models/options.txt
--- 3:5.2.6-1/docs/ref/models/options.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/models/options.txt	2025-12-02 12:30:32.000000000 +0000
@@ -309,6 +309,12 @@ not be looking at your Django code. For
 
         ordering = [F("author").asc(nulls_last=True)]
 
+.. admonition:: Default ordering and GROUP BY
+
+    In :ref:`GROUP BY queries <aggregation-ordering-interaction>` (for example,
+    those using :meth:`~.QuerySet.values` and :meth:`~.QuerySet.annotate`), the
+    default ordering is not applied.
+
 .. warning::
 
     Ordering is not a free operation. Each field you add to the ordering
diff -pruN 3:5.2.6-1/docs/ref/models/querysets.txt 3:5.2.9-0ubuntu1/docs/ref/models/querysets.txt
--- 3:5.2.6-1/docs/ref/models/querysets.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/models/querysets.txt	2025-12-02 12:30:32.000000000 +0000
@@ -2449,8 +2449,8 @@ This has a number of caveats though:
         Entry.objects.bulk_create(batch, batch_size)
 
 The ``batch_size`` parameter controls how many objects are created in a single
-query. The default is to create all objects in one batch, except for SQLite
-where the default is such that at most 999 variables per query are used.
+query. The default is to create as many objects in one batch as the database
+will allow. (SQLite and Oracle limit the number of parameters in a query.)
 
 On databases that support it (all but Oracle), setting the ``ignore_conflicts``
 parameter to ``True`` tells the database to ignore failure to insert any rows
@@ -2510,6 +2510,21 @@ them, but it has a few caveats:
 * If updating a large number of columns in a large number of rows, the SQL
   generated can be very large. Avoid this by specifying a suitable
   ``batch_size``.
+* When updating a large number of objects, be aware that ``bulk_update()``
+  prepares all of the ``WHEN`` clauses for every object across all batches
+  before executing any queries. This can require more memory than expected. To
+  reduce memory usage, you can use an approach like this::
+
+    from itertools import islice
+
+    batch_size = 100
+    ids_iter = range(1000)
+    while ids := list(islice(ids_iter, batch_size)):
+        batch = Entry.objects.filter(ids__in=ids)
+        for entry in batch:
+            entry.headline = f"Updated headline {entry.pk}"
+        Entry.objects.bulk_update(batch, ["headline"], batch_size=batch_size)
+
 * Updating fields defined on multi-table inheritance ancestors will incur an
   extra query per ancestor.
 * When an individual batch contains duplicates, only the first instance in that
diff -pruN 3:5.2.6-1/docs/ref/settings.txt 3:5.2.9-0ubuntu1/docs/ref/settings.txt
--- 3:5.2.6-1/docs/ref/settings.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/ref/settings.txt	2025-12-02 12:30:32.000000000 +0000
@@ -2565,7 +2565,7 @@ protocol.
 .. admonition:: Why are my emails sent from a different address?
 
     This address is used only for error messages. It is *not* the address that
-    regular email messages sent with :meth:`~django.core.mail.send_mail()`
+    regular email messages sent with :func:`~django.core.mail.send_mail`
     come from; for that, see :setting:`DEFAULT_FROM_EMAIL`.
 
 .. setting:: SHORT_DATE_FORMAT
diff -pruN 3:5.2.6-1/docs/releases/1.2.txt 3:5.2.9-0ubuntu1/docs/releases/1.2.txt
--- 3:5.2.6-1/docs/releases/1.2.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/1.2.txt	2025-12-02 12:30:32.000000000 +0000
@@ -878,7 +878,7 @@ of an SMTPConnection::
     messages = get_notification_email()
     connection.send_messages(messages)
 
-...should now call :meth:`~django.core.mail.get_connection()` to
+...should now call :func:`~django.core.mail.get_connection` to
 instantiate a generic email connection::
 
     from django.core.mail import get_connection
@@ -900,7 +900,7 @@ SMTP connection::
 
 If your call to construct an instance of ``SMTPConnection`` required
 additional arguments, those arguments can be passed to the
-:meth:`~django.core.mail.get_connection()` call::
+:func:`~django.core.mail.get_connection` call::
 
     connection = get_connection(
         "django.core.mail.backends.smtp.EmailBackend", hostname="localhost", port=1234
diff -pruN 3:5.2.6-1/docs/releases/1.3.txt 3:5.2.9-0ubuntu1/docs/releases/1.3.txt
--- 3:5.2.6-1/docs/releases/1.3.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/1.3.txt	2025-12-02 12:30:32.000000000 +0000
@@ -292,8 +292,8 @@ requests. These include:
 
 * Support for HttpOnly_ cookies.
 
-* :meth:`~django.core.mail.mail_admins()` and
-  :meth:`~django.core.mail.mail_managers()` now support easily attaching
+* :func:`~django.core.mail.mail_admins` and
+  :func:`~django.core.mail.mail_managers` now support easily attaching
   HTML content to messages.
 
 * :class:`~django.core.mail.EmailMessage` now supports CC's.
diff -pruN 3:5.2.6-1/docs/releases/1.7.txt 3:5.2.9-0ubuntu1/docs/releases/1.7.txt
--- 3:5.2.6-1/docs/releases/1.7.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/1.7.txt	2025-12-02 12:30:32.000000000 +0000
@@ -417,7 +417,7 @@ Minor features
 
 * Any ``**kwargs`` passed to
   :meth:`~django.contrib.auth.models.User.email_user()` are passed to the
-  underlying :meth:`~django.core.mail.send_mail()` call.
+  underlying :func:`~django.core.mail.send_mail` call.
 
 * The :func:`~django.contrib.auth.decorators.permission_required` decorator can
   take a list of permissions as well as a single permission.
diff -pruN 3:5.2.6-1/docs/releases/4.2.25.txt 3:5.2.9-0ubuntu1/docs/releases/4.2.25.txt
--- 3:5.2.6-1/docs/releases/4.2.25.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/4.2.25.txt	2025-10-22 18:22:16.000000000 +0000
@@ -0,0 +1,25 @@
+===========================
+Django 4.2.25 release notes
+===========================
+
+*October 1, 2025*
+
+Django 4.2.25 fixes one security issue with severity "high" and one security
+issue with severity "low" in 4.2.24.
+
+CVE-2025-59681: Potential SQL injection in ``QuerySet.annotate()``, ``alias()``, ``aggregate()``, and ``extra()`` on MySQL and MariaDB
+======================================================================================================================================
+
+:meth:`.QuerySet.annotate`, :meth:`~.QuerySet.alias`,
+:meth:`~.QuerySet.aggregate`, and :meth:`~.QuerySet.extra` methods were subject
+to SQL injection in column aliases, using a suitably crafted dictionary, with
+dictionary expansion, as the ``**kwargs`` passed to these methods (follow up to
+:cve:`2022-28346`).
+
+CVE-2025-59682: Potential partial directory-traversal via ``archive.extract()``
+===============================================================================
+
+The ``django.utils.archive.extract()`` function, used by
+:option:`startapp --template` and :option:`startproject --template`, allowed
+partial directory-traversal via an archive with file paths sharing a common
+prefix with the target directory (follow up to :cve:`2021-3281`).
diff -pruN 3:5.2.6-1/docs/releases/4.2.26.txt 3:5.2.9-0ubuntu1/docs/releases/4.2.26.txt
--- 3:5.2.6-1/docs/releases/4.2.26.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/4.2.26.txt	2025-11-05 12:53:18.000000000 +0000
@@ -0,0 +1,25 @@
+===========================
+Django 4.2.26 release notes
+===========================
+
+*November 5, 2025*
+
+Django 4.2.26 fixes one security issue with severity "high" and one security
+issue with severity "moderate" in 4.2.25.
+
+CVE-2025-64458: Potential denial-of-service vulnerability in ``HttpResponseRedirect`` and ``HttpResponsePermanentRedirect`` on Windows
+======================================================================================================================================
+
+Python's :func:`NFKC normalization <python:unicodedata.normalize>` is slow on
+Windows. As a consequence, :class:`~django.http.HttpResponseRedirect`,
+:class:`~django.http.HttpResponsePermanentRedirect`, and the shortcut
+:func:`redirect() <django.shortcuts.redirect>` were subject to a potential
+denial-of-service attack via certain inputs with a very large number of Unicode
+characters (follow up to :cve:`2025-27556`).
+
+CVE-2025-64459: Potential SQL injection via ``_connector`` keyword argument
+===========================================================================
+
+:meth:`.QuerySet.filter`, :meth:`~.QuerySet.exclude`, :meth:`~.QuerySet.get`,
+and :class:`~.Q` were subject to SQL injection using a suitably crafted
+dictionary, with dictionary expansion, as the ``_connector`` argument.
diff -pruN 3:5.2.6-1/docs/releases/4.2.27.txt 3:5.2.9-0ubuntu1/docs/releases/4.2.27.txt
--- 3:5.2.6-1/docs/releases/4.2.27.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/4.2.27.txt	2025-12-02 12:27:50.000000000 +0000
@@ -0,0 +1,34 @@
+===========================
+Django 4.2.27 release notes
+===========================
+
+*December 2, 2025*
+
+Django 4.2.27 fixes one security issue with severity "high", one security issue
+with severity "moderate", and one bug in 4.2.26.
+
+CVE-2025-13372: Potential SQL injection in ``FilteredRelation`` column aliases on PostgreSQL
+============================================================================================
+
+:class:`.FilteredRelation` was subject to SQL injection in column aliases,
+using a suitably crafted dictionary, with dictionary expansion, as the
+``**kwargs`` passed to :meth:`.QuerySet.annotate` or :meth:`.QuerySet.alias` on
+PostgreSQL.
+
+CVE-2025-64460: Potential denial-of-service vulnerability in XML ``Deserializer``
+=================================================================================
+
+:ref:`XML Serialization <serialization-formats-xml>` was subject to a potential
+denial-of-service attack due to quadratic time complexity when deserializing
+crafted documents containing many nested invalid elements. The internal helper
+``django.core.serializers.xml_serializer.getInnerText()`` previously
+accumulated inner text inefficiently during recursion. It now collects text per
+element, avoiding excessive resource usage.
+
+Bugfixes
+========
+
+* Fixed a regression in Django 4.2.26 where ``DisallowedRedirect`` was raised
+  by :class:`~django.http.HttpResponseRedirect` and
+  :class:`~django.http.HttpResponsePermanentRedirect` for URLs longer than 2048
+  characters. The limit is now 16384 characters (:ticket:`36743`).
diff -pruN 3:5.2.6-1/docs/releases/5.1.13.txt 3:5.2.9-0ubuntu1/docs/releases/5.1.13.txt
--- 3:5.2.6-1/docs/releases/5.1.13.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.1.13.txt	2025-11-27 12:32:16.000000000 +0000
@@ -0,0 +1,25 @@
+===========================
+Django 5.1.13 release notes
+===========================
+
+*October 1, 2025*
+
+Django 5.1.13 fixes one security issue with severity "high" and one security
+issue with severity "low" in 5.1.12.
+
+CVE-2025-59681: Potential SQL injection in ``QuerySet.annotate()``, ``alias()``, ``aggregate()``, and ``extra()`` on MySQL and MariaDB
+======================================================================================================================================
+
+:meth:`.QuerySet.annotate`, :meth:`~.QuerySet.alias`,
+:meth:`~.QuerySet.aggregate`, and :meth:`~.QuerySet.extra` methods were subject
+to SQL injection in column aliases, using a suitably crafted dictionary, with
+dictionary expansion, as the ``**kwargs`` passed to these methods (follow up to
+:cve:`2022-28346`).
+
+CVE-2025-59682: Potential partial directory-traversal via ``archive.extract()``
+===============================================================================
+
+The ``django.utils.archive.extract()`` function, used by
+:option:`startapp --template` and :option:`startproject --template`, allowed
+partial directory-traversal via an archive with file paths sharing a common
+prefix with the target directory (follow up to :cve:`2021-3281`).
diff -pruN 3:5.2.6-1/docs/releases/5.1.14.txt 3:5.2.9-0ubuntu1/docs/releases/5.1.14.txt
--- 3:5.2.6-1/docs/releases/5.1.14.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.1.14.txt	2025-11-27 12:32:16.000000000 +0000
@@ -0,0 +1,25 @@
+===========================
+Django 5.1.14 release notes
+===========================
+
+*November 5, 2025*
+
+Django 5.1.14 fixes one security issue with severity "high" and one security
+issue with severity "moderate" in 5.1.13.
+
+CVE-2025-64458: Potential denial-of-service vulnerability in ``HttpResponseRedirect`` and ``HttpResponsePermanentRedirect`` on Windows
+======================================================================================================================================
+
+Python's :func:`NFKC normalization <python:unicodedata.normalize>` is slow on
+Windows. As a consequence, :class:`~django.http.HttpResponseRedirect`,
+:class:`~django.http.HttpResponsePermanentRedirect`, and the shortcut
+:func:`redirect() <django.shortcuts.redirect>` were subject to a potential
+denial-of-service attack via certain inputs with a very large number of Unicode
+characters (follow up to :cve:`2025-27556`).
+
+CVE-2025-64459: Potential SQL injection via ``_connector`` keyword argument
+===========================================================================
+
+:meth:`.QuerySet.filter`, :meth:`~.QuerySet.exclude`, :meth:`~.QuerySet.get`,
+and :class:`~.Q` were subject to SQL injection using a suitably crafted
+dictionary, with dictionary expansion, as the ``_connector`` argument.
diff -pruN 3:5.2.6-1/docs/releases/5.1.15.txt 3:5.2.9-0ubuntu1/docs/releases/5.1.15.txt
--- 3:5.2.6-1/docs/releases/5.1.15.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.1.15.txt	2025-12-02 12:27:50.000000000 +0000
@@ -0,0 +1,34 @@
+===========================
+Django 5.1.15 release notes
+===========================
+
+*December 2, 2025*
+
+Django 5.1.15 fixes one security issue with severity "high", one security issue
+with severity "moderate", and one bug in 5.1.14.
+
+CVE-2025-13372: Potential SQL injection in ``FilteredRelation`` column aliases on PostgreSQL
+============================================================================================
+
+:class:`.FilteredRelation` was subject to SQL injection in column aliases,
+using a suitably crafted dictionary, with dictionary expansion, as the
+``**kwargs`` passed to :meth:`.QuerySet.annotate` or :meth:`.QuerySet.alias` on
+PostgreSQL.
+
+CVE-2025-64460: Potential denial-of-service vulnerability in XML ``Deserializer``
+=================================================================================
+
+:ref:`XML Serialization <serialization-formats-xml>` was subject to a potential
+denial-of-service attack due to quadratic time complexity when deserializing
+crafted documents containing many nested invalid elements. The internal helper
+``django.core.serializers.xml_serializer.getInnerText()`` previously
+accumulated inner text inefficiently during recursion. It now collects text per
+element, avoiding excessive resource usage.
+
+Bugfixes
+========
+
+* Fixed a regression in Django 5.1.14 where ``DisallowedRedirect`` was raised
+  by :class:`~django.http.HttpResponseRedirect` and
+  :class:`~django.http.HttpResponsePermanentRedirect` for URLs longer than 2048
+  characters. The limit is now 16384 characters (:ticket:`36743`).
diff -pruN 3:5.2.6-1/docs/releases/5.2.7.txt 3:5.2.9-0ubuntu1/docs/releases/5.2.7.txt
--- 3:5.2.6-1/docs/releases/5.2.7.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.2.7.txt	2025-11-27 12:32:16.000000000 +0000
@@ -0,0 +1,33 @@
+==========================
+Django 5.2.7 release notes
+==========================
+
+*October 1, 2025*
+
+Django 5.2.7 fixes one security issue with severity "high", one security issue
+with severity "low", and one bug in 5.2.6. Also, the latest string translations
+from Transifex are incorporated.
+
+CVE-2025-59681: Potential SQL injection in ``QuerySet.annotate()``, ``alias()``, ``aggregate()``, and ``extra()`` on MySQL and MariaDB
+======================================================================================================================================
+
+:meth:`.QuerySet.annotate`, :meth:`~.QuerySet.alias`,
+:meth:`~.QuerySet.aggregate`, and :meth:`~.QuerySet.extra` methods were subject
+to SQL injection in column aliases, using a suitably crafted dictionary, with
+dictionary expansion, as the ``**kwargs`` passed to these methods (follow up to
+:cve:`2022-28346`).
+
+CVE-2025-59682: Potential partial directory-traversal via ``archive.extract()``
+===============================================================================
+
+The ``django.utils.archive.extract()`` function, used by
+:option:`startapp --template` and :option:`startproject --template`, allowed
+partial directory-traversal via an archive with file paths sharing a common
+prefix with the target directory (follow up to :cve:`2021-3281`).
+
+Bugfixes
+========
+
+* Fixed a regression in Django 5.2 that reduced the color contrast of
+  the chosen label of ``filter_horizontal`` and ``filter_vertical`` widgets
+  within a ``TabularInline`` (:ticket:`36601`).
diff -pruN 3:5.2.6-1/docs/releases/5.2.8.txt 3:5.2.9-0ubuntu1/docs/releases/5.2.8.txt
--- 3:5.2.6-1/docs/releases/5.2.8.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.2.8.txt	2025-11-27 12:32:16.000000000 +0000
@@ -0,0 +1,38 @@
+==========================
+Django 5.2.8 release notes
+==========================
+
+*November 5, 2025*
+
+Django 5.2.8 fixes one security issue with severity "high", one security issue
+with severity "moderate", and several bugs in 5.2.7. It also adds compatibility
+with Python 3.14.
+
+CVE-2025-64458: Potential denial-of-service vulnerability in ``HttpResponseRedirect`` and ``HttpResponsePermanentRedirect`` on Windows
+======================================================================================================================================
+
+Python's :func:`NFKC normalization <python:unicodedata.normalize>` is slow on
+Windows. As a consequence, :class:`~django.http.HttpResponseRedirect`,
+:class:`~django.http.HttpResponsePermanentRedirect`, and the shortcut
+:func:`redirect() <django.shortcuts.redirect>` were subject to a potential
+denial-of-service attack via certain inputs with a very large number of Unicode
+characters (follow up to :cve:`2025-27556`).
+
+CVE-2025-64459: Potential SQL injection via ``_connector`` keyword argument
+===========================================================================
+
+:meth:`.QuerySet.filter`, :meth:`~.QuerySet.exclude`, :meth:`~.QuerySet.get`,
+and :class:`~.Q` were subject to SQL injection using a suitably crafted
+dictionary, with dictionary expansion, as the ``_connector`` argument.
+
+Bugfixes
+========
+
+* Added compatibility for ``oracledb`` 3.4.0 (:ticket:`36646`).
+
+* Fixed a bug in Django 5.2 where ``QuerySet.first()`` and ``QuerySet.last()``
+  raised an error on querysets performing aggregation that selected all fields
+  of a composite primary key (:ticket:`36648`).
+
+* Fixed a bug in Django 5.2 where proxy models having a ``CompositePrimaryKey``
+  incorrectly raised a ``models.E042`` system check error (:ticket:`36704`).
diff -pruN 3:5.2.6-1/docs/releases/5.2.9.txt 3:5.2.9-0ubuntu1/docs/releases/5.2.9.txt
--- 3:5.2.6-1/docs/releases/5.2.9.txt	1970-01-01 00:00:00.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.2.9.txt	2025-12-02 12:27:50.000000000 +0000
@@ -0,0 +1,50 @@
+==========================
+Django 5.2.9 release notes
+==========================
+
+*December 2, 2025*
+
+Django 5.2.9 fixes one security issue with severity "high", one security issue
+with severity "moderate", and several bugs in 5.2.8.
+
+CVE-2025-13372: Potential SQL injection in ``FilteredRelation`` column aliases on PostgreSQL
+============================================================================================
+
+:class:`.FilteredRelation` was subject to SQL injection in column aliases,
+using a suitably crafted dictionary, with dictionary expansion, as the
+``**kwargs`` passed to :meth:`.QuerySet.annotate` or :meth:`.QuerySet.alias` on
+PostgreSQL.
+
+CVE-2025-64460: Potential denial-of-service vulnerability in XML ``Deserializer``
+=================================================================================
+
+:ref:`XML Serialization <serialization-formats-xml>` was subject to a potential
+denial-of-service attack due to quadratic time complexity when deserializing
+crafted documents containing many nested invalid elements. The internal helper
+``django.core.serializers.xml_serializer.getInnerText()`` previously
+accumulated inner text inefficiently during recursion. It now collects text per
+element, avoiding excessive resource usage.
+
+Bugfixes
+========
+
+* Fixed a bug in Django 5.2 where
+  ``django.utils.feedgenerator.Stylesheet.__str__()`` did not escape
+  the ``url``, ``mimetype``, and ``media`` attributes, potentially leading
+  to invalid XML markup (:ticket:`36733`).
+
+* Fixed a bug in Django 5.2 on PostgreSQL where ``bulk_create()`` did not apply
+  a field's custom query placeholders (:ticket:`36748`).
+
+* Fixed a regression in Django 5.2.2 that caused a crash when using aggregate
+  functions with an empty ``Q`` filter over a queryset with annotations
+  (:ticket:`36751`).
+
+* Fixed a regression in Django 5.2.8 where ``DisallowedRedirect`` was raised by
+  :class:`~django.http.HttpResponseRedirect` and
+  :class:`~django.http.HttpResponsePermanentRedirect` for URLs longer than 2048
+  characters. The limit is now 16384 characters (:ticket:`36743`).
+
+* Fixed a crash on Python 3.14+ that prevented template tag functions from
+  being registered when their type annotations required deferred evaluation
+  (:ticket:`36712`).
diff -pruN 3:5.2.6-1/docs/releases/5.2.txt 3:5.2.9-0ubuntu1/docs/releases/5.2.txt
--- 3:5.2.6-1/docs/releases/5.2.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/5.2.txt	2025-12-02 12:30:32.000000000 +0000
@@ -23,8 +23,9 @@ end in April 2026.
 Python compatibility
 ====================
 
-Django 5.2 supports Python 3.10, 3.11, 3.12, and 3.13. We **highly recommend**
-and only officially support the latest release of each series.
+Django 5.2 supports Python 3.10, 3.11, 3.12, 3.13, and 3.14 (as of 5.2.8). We
+**highly recommend** and only officially support the latest release of each
+series.
 
 .. _whats-new-5.2:
 
diff -pruN 3:5.2.6-1/docs/releases/index.txt 3:5.2.9-0ubuntu1/docs/releases/index.txt
--- 3:5.2.6-1/docs/releases/index.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/index.txt	2025-12-02 12:30:32.000000000 +0000
@@ -25,6 +25,9 @@ versions of the documentation contain th
 .. toctree::
    :maxdepth: 1
 
+   5.2.9
+   5.2.8
+   5.2.7
    5.2.6
    5.2.5
    5.2.4
@@ -38,6 +41,9 @@ versions of the documentation contain th
 .. toctree::
    :maxdepth: 1
 
+   5.1.15
+   5.1.14
+   5.1.13
    5.1.12
    5.1.11
    5.1.10
@@ -79,6 +85,9 @@ versions of the documentation contain th
 .. toctree::
    :maxdepth: 1
 
+   4.2.27
+   4.2.26
+   4.2.25
    4.2.24
    4.2.23
    4.2.22
diff -pruN 3:5.2.6-1/docs/releases/security.txt 3:5.2.9-0ubuntu1/docs/releases/security.txt
--- 3:5.2.6-1/docs/releases/security.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/releases/security.txt	2025-12-02 12:30:32.000000000 +0000
@@ -36,6 +36,65 @@ Issues under Django's security process
 All security issues have been handled under versions of Django's security
 process. These are listed below.
 
+November 5, 2025 - :cve:`2025-64458`
+------------------------------------
+
+Potential denial-of-service vulnerability in ``HttpResponseRedirect`` and
+``HttpResponsePermanentRedirect`` on Windows. `Full description
+<https://www.djangoproject.com/weblog/2025/nov/05/security-releases/>`__
+
+* Django 6.0 :commit:`(patch) <6e13348436fccf8f22982921d6a3a3e65c956a9f>`
+* Django 5.2 :commit:`(patch) <4f5d904b63751dea9ffc3b0e046404a7fa5881ac>`
+* Django 5.1 :commit:`(patch) <3790593781d26168e7306b5b2f8ea0309de16242>`
+* Django 4.2 :commit:`(patch) <770eea38d7a0e9ba9455140b5a9a9e33618226a7>`
+
+November 5, 2025 - :cve:`2025-64459`
+------------------------------------
+
+Potential SQL injection via ``_connector`` keyword argument in ``QuerySet`` and
+``Q`` objects. `Full description
+<https://www.djangoproject.com/weblog/2025/nov/05/security-releases/>`__
+
+* Django 6.0 :commit:`(patch) <06dd38324ac3d60d83d9f3adabf0dcdf423d2a85>`
+* Django 5.2 :commit:`(patch) <6703f364d767e949c5b0e4016433ef75063b4f9b>`
+* Django 5.1 :commit:`(patch) <72d2c87431f2ae0431d65d0ec792047f078c8241>`
+* Django 4.2 :commit:`(patch) <59ae82e67053d281ff4562a24bbba21299f0a7d4>`
+
+October 1, 2025 - :cve:`2025-59681`
+-----------------------------------
+
+Potential SQL injection in ``QuerySet.annotate()``, ``alias()``,
+``aggregate()``, and ``extra()`` on MySQL and MariaDB. `Full description
+<https://www.djangoproject.com/weblog/2025/oct/01/security-releases/>`__
+
+* Django 6.0 :commit:`(patch) <4ceaaee7e04b416fc465e838a6ef43ca0ccffafe>`
+* Django 5.2 :commit:`(patch) <52fbae0a4dbbe5faa59827f8f05694a0065cc135>`
+* Django 5.1 :commit:`(patch) <01d2d770e22bffe53c7f1e611e2bbca94cb8a2e7>`
+* Django 4.2 :commit:`(patch) <38d9ef8c7b5cb6ef51b933e51a20e0e0063f33d5>`
+
+October 1, 2025 - :cve:`2025-59682`
+-----------------------------------
+
+Potential partial directory-traversal via ``archive.extract()``.
+`Full description
+<https://www.djangoproject.com/weblog/2025/oct/01/security-releases/>`__
+
+* Django 6.0 :commit:`(patch) <af067f56c1dd467df4abd0ddd409a700da1f03ba>`
+* Django 5.2 :commit:`(patch) <ed8fc39d77465eddbde1191a054ae965f6a8a584>`
+* Django 5.1 :commit:`(patch) <74fa85c688a87224637155902bcd738bb9e65e11>`
+* Django 4.2 :commit:`(patch) <9504bbaa392c9fe37eee9291f5b4c29eb6037619>`
+
+September 3, 2025 - :cve:`2025-57833`
+-------------------------------------
+
+Potential SQL injection in ``FilteredRelation`` column aliases.
+`Full description
+<https://www.djangoproject.com/weblog/2025/sep/03/security-releases/>`__
+
+* Django 5.2 :commit:`(patch) <4c044fcc866ec226f612c475950b690b0139d243>`
+* Django 5.1 :commit:`(patch) <102965ea93072fe3c39a30be437c683ec1106ef5>`
+* Django 4.2 :commit:`(patch) <31334e6965ad136a5e369993b01721499c5d1a92>`
+
 June 4, 2025 - :cve:`2025-48432`
 --------------------------------
 
diff -pruN 3:5.2.6-1/docs/topics/cache.txt 3:5.2.9-0ubuntu1/docs/topics/cache.txt
--- 3:5.2.6-1/docs/topics/cache.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/cache.txt	2025-12-02 12:30:32.000000000 +0000
@@ -188,7 +188,7 @@ To use Redis as your cache backend with
 * Set :setting:`LOCATION <CACHES-LOCATION>` to the URL pointing to your Redis
   instance, using the appropriate scheme. See the ``redis-py`` docs for
   `details on the available schemes
-  <https://redis-py.readthedocs.io/en/stable/connections.html#redis.connection.ConnectionPool.from_url>`_.
+  <https://redis.readthedocs.io/en/stable/connections.html#redis.connection.ConnectionPool.from_url>`__.
 
 For example, if Redis is running on localhost (127.0.0.1) port 6379::
 
@@ -863,8 +863,8 @@ For cases like this, Django exposes a lo
 to store objects in the cache with any level of granularity you like.  You can
 cache any Python object that can be pickled safely: strings, dictionaries,
 lists of model objects, and so forth. (Most common Python objects can be
-pickled; refer to the Python documentation for more information about
-pickling.)
+pickled; refer to the :mod:`Python documentation <pickle>` for more information
+about pickling.)
 
 Accessing the cache
 -------------------
diff -pruN 3:5.2.6-1/docs/topics/db/aggregation.txt 3:5.2.9-0ubuntu1/docs/topics/db/aggregation.txt
--- 3:5.2.6-1/docs/topics/db/aggregation.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/db/aggregation.txt	2025-12-02 12:30:32.000000000 +0000
@@ -623,8 +623,15 @@ fields you also select in a ``values()``
     You might reasonably ask why Django doesn't remove the extraneous columns
     for you. The main reason is consistency with ``distinct()`` and other
     places: Django **never** removes ordering constraints that you have
-    specified (and we can't change those other methods' behavior, as that
-    would violate our :doc:`/misc/api-stability` policy).
+    specified *explicitly with* ``order_by()`` (and we can't change those
+    other methods' behavior, as that would violate our
+    :doc:`/misc/api-stability` policy).
+
+.. admonition:: Default ordering not applied to GROUP BY
+
+    ``GROUP BY`` queries (for example, those using ``.values()`` and
+    ``.annotate()``) don't use the model's default ordering.
+    Use ``order_by()`` explicitly when a given order is needed.
 
 Aggregating annotations
 -----------------------
diff -pruN 3:5.2.6-1/docs/topics/email.txt 3:5.2.9-0ubuntu1/docs/topics/email.txt
--- 3:5.2.6-1/docs/topics/email.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/email.txt	2025-12-02 12:30:32.000000000 +0000
@@ -124,10 +124,10 @@ can be ``0`` or ``1`` since it can only
     (subject, message, from_email, recipient_list)
 
 ``fail_silently``, ``auth_user`` and ``auth_password`` have the same functions
-as in :meth:`~django.core.mail.send_mail()`.
+as in :func:`~django.core.mail.send_mail`.
 
 Each separate element of ``datatuple`` results in a separate email message.
-As in :meth:`~django.core.mail.send_mail()`, recipients in the same
+As in :func:`~django.core.mail.send_mail`, recipients in the same
 ``recipient_list`` will all see the other addresses in the email messages'
 "To:" field.
 
@@ -154,12 +154,12 @@ The return value will be the number of s
 ``send_mass_mail()`` vs. ``send_mail()``
 ----------------------------------------
 
-The main difference between :meth:`~django.core.mail.send_mass_mail()` and
-:meth:`~django.core.mail.send_mail()` is that
-:meth:`~django.core.mail.send_mail()` opens a connection to the mail server
-each time it's executed, while :meth:`~django.core.mail.send_mass_mail()` uses
+The main difference between :func:`~django.core.mail.send_mass_mail` and
+:func:`~django.core.mail.send_mail` is that
+:func:`~django.core.mail.send_mail` opens a connection to the mail server
+each time it's executed, while :func:`~django.core.mail.send_mass_mail` uses
 a single connection for all of its messages. This makes
-:meth:`~django.core.mail.send_mass_mail()` slightly more efficient.
+:func:`~django.core.mail.send_mass_mail` slightly more efficient.
 
 ``mail_admins()``
 =================
@@ -223,7 +223,7 @@ scripts generate.
 The Django email functions outlined above all protect against header injection
 by forbidding newlines in header values. If any ``subject``, ``from_email`` or
 ``recipient_list`` contains a newline (in either Unix, Windows or Mac style),
-the email function (e.g. :meth:`~django.core.mail.send_mail()`) will raise
+the email function (e.g. :func:`~django.core.mail.send_mail`) will raise
 ``django.core.mail.BadHeaderError`` (a subclass of ``ValueError``) and, hence,
 will not send the email. It's your responsibility to validate all data before
 passing it to the email functions.
@@ -261,18 +261,18 @@ from the request's POST data, sends that
 The ``EmailMessage`` class
 ==========================
 
-Django's :meth:`~django.core.mail.send_mail()` and
-:meth:`~django.core.mail.send_mass_mail()` functions are actually thin
+Django's :func:`~django.core.mail.send_mail` and
+:func:`~django.core.mail.send_mass_mail` functions are actually thin
 wrappers that make use of the :class:`~django.core.mail.EmailMessage` class.
 
 Not all features of the :class:`~django.core.mail.EmailMessage` class are
-available through the :meth:`~django.core.mail.send_mail()` and related
+available through the :func:`~django.core.mail.send_mail` and related
 wrapper functions. If you wish to use advanced features, such as BCC'ed
 recipients, file attachments, or multi-part email, you'll need to create
 :class:`~django.core.mail.EmailMessage` instances directly.
 
 .. note::
-    This is a design feature. :meth:`~django.core.mail.send_mail()` and
+    This is a design feature. :func:`~django.core.mail.send_mail` and
     related functions were originally the only interface Django provided.
     However, the list of parameters they accepted was slowly growing over
     time. It made sense to move to a more object-oriented design for email
@@ -577,7 +577,7 @@ It can also be used as a context manager
 Obtaining an instance of an email backend
 -----------------------------------------
 
-The :meth:`get_connection` function in ``django.core.mail`` returns an
+The :func:`get_connection` function in ``django.core.mail`` returns an
 instance of the email backend that you can use.
 
 .. currentmodule:: django.core.mail
@@ -656,7 +656,7 @@ The file backend writes emails to a file
 session that is opened on this backend. The directory to which the files are
 written is either taken from the :setting:`EMAIL_FILE_PATH` setting or from
 the ``file_path`` keyword when creating a connection with
-:meth:`~django.core.mail.get_connection`.
+:func:`~django.core.mail.get_connection`.
 
 To specify this backend, put the following in your settings::
 
diff -pruN 3:5.2.6-1/docs/topics/http/file-uploads.txt 3:5.2.9-0ubuntu1/docs/topics/http/file-uploads.txt
--- 3:5.2.6-1/docs/topics/http/file-uploads.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/http/file-uploads.txt	2025-12-02 12:30:32.000000000 +0000
@@ -288,9 +288,10 @@ handler to your upload handlers like thi
 
     request.upload_handlers.insert(0, ProgressBarUploadHandler(request))
 
-You'd probably want to use ``list.insert()`` in this case (instead of
-``append()``) because a progress bar handler would need to run *before* any
-other handlers. Remember, the upload handlers are processed in order.
+Using ``list.insert()``, as shown above, ensures that the progress bar handler
+is placed at the beginning of the list. Since upload handlers are executed in
+order, this placement guarantees that the progress bar handler runs before the
+default handlers, allowing it to track progress across the entire upload.
 
 If you want to replace the upload handlers completely, you can assign a new
 list::
diff -pruN 3:5.2.6-1/docs/topics/i18n/formatting.txt 3:5.2.9-0ubuntu1/docs/topics/i18n/formatting.txt
--- 3:5.2.6-1/docs/topics/i18n/formatting.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/i18n/formatting.txt	2025-12-02 12:30:32.000000000 +0000
@@ -188,12 +188,13 @@ Limitations of the provided locale forma
 Some locales use context-sensitive formats for numbers, which Django's
 localization system cannot handle automatically.
 
-Switzerland (German)
---------------------
+Switzerland (German, French)
+----------------------------
 
-The Swiss number formatting depends on the type of number that is being
-formatted. For monetary values, a comma is used as the thousand separator and
-a decimal point for the decimal separator. For all other numbers, a comma is
-used as decimal separator and a space as thousand separator. The locale format
-provided by Django uses the generic separators, a comma for decimal and a space
-for thousand separators.
+The Swiss number formatting traditionally varies depending on context. For
+example, monetary values may use a dot as decimal separator (``Fr. 23.50``),
+while measurements often use a comma (``22,5 m``). Django’s localization system
+does not support such context-specific variations automatically.
+
+The locale format provided by Django uses the generic separators, a comma for
+decimal and a space for thousand separators.
diff -pruN 3:5.2.6-1/docs/topics/i18n/translation.txt 3:5.2.9-0ubuntu1/docs/topics/i18n/translation.txt
--- 3:5.2.6-1/docs/topics/i18n/translation.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/i18n/translation.txt	2025-12-02 12:30:32.000000000 +0000
@@ -715,7 +715,7 @@ An example:
 .. code-block:: html+django
 
     {% blocktranslate count counter=list|length %}
-    There is only one {{ name }} object.
+    There is {{ counter }} {{ name }} object.
     {% plural %}
     There are {{ counter }} {{ name }} objects.
     {% endblocktranslate %}
@@ -1881,10 +1881,9 @@ Activate this view by adding the followi
     language-independent itself to work correctly.
 
 The view expects to be called via the ``POST`` method, with a ``language``
-parameter set in request. If session support is enabled, the view saves the
-language choice in the user's session. It also saves the language choice in a
-cookie that is named ``django_language`` by default. (The name can be changed
-through the :setting:`LANGUAGE_COOKIE_NAME` setting.)
+parameter set in request. The view saves the language choice in a cookie that
+is named ``django_language`` by default. (The name can be changed through the
+:setting:`LANGUAGE_COOKIE_NAME` setting.)
 
 After setting the language choice, Django looks for a ``next`` parameter in the
 ``POST`` or ``GET`` data. If that is found and Django considers it to be a safe
diff -pruN 3:5.2.6-1/docs/topics/serialization.txt 3:5.2.9-0ubuntu1/docs/topics/serialization.txt
--- 3:5.2.6-1/docs/topics/serialization.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/docs/topics/serialization.txt	2025-12-02 12:30:32.000000000 +0000
@@ -19,7 +19,7 @@ At the highest level, you can serialize
 
     from django.core import serializers
 
-    data = serializers.serialize("xml", SomeModel.objects.all())
+    data = serializers.serialize("json", SomeModel.objects.all())
 
 The arguments to the ``serialize`` function are the format to serialize the data
 to (see `Serialization formats`_) and a
@@ -31,16 +31,16 @@ almost always be a QuerySet).
 
 You can also use a serializer object directly::
 
-    XMLSerializer = serializers.get_serializer("xml")
-    xml_serializer = XMLSerializer()
-    xml_serializer.serialize(queryset)
-    data = xml_serializer.getvalue()
+    JSONSerializer = serializers.get_serializer("json")
+    json_serializer = JSONSerializer()
+    json_serializer.serialize(queryset)
+    data = json_serializer.getvalue()
 
 This is useful if you want to serialize data directly to a file-like object
 (which includes an :class:`~django.http.HttpResponse`)::
 
-    with open("file.xml", "w") as out:
-        xml_serializer.serialize(SomeModel.objects.all(), stream=out)
+    with open("file.json", "w") as out:
+        json_serializer.serialize(SomeModel.objects.all(), stream=out)
 
 .. note::
 
@@ -58,7 +58,7 @@ specify a ``fields`` argument to the ser
 
     from django.core import serializers
 
-    data = serializers.serialize("xml", SomeModel.objects.all(), fields=["name", "size"])
+    data = serializers.serialize("json", SomeModel.objects.all(), fields=["name", "size"])
 
 In this example, only the ``name`` and ``size`` attributes of each model will
 be serialized. The primary key is always serialized as the ``pk`` element in the
@@ -94,7 +94,7 @@ model will be serialized. For example, c
 
 If you only serialize the Restaurant model::
 
-    data = serializers.serialize("xml", Restaurant.objects.all())
+    data = serializers.serialize("json", Restaurant.objects.all())
 
 the fields on the serialized output will only contain the ``serves_hot_dogs``
 attribute. The ``name`` attribute of the base class will be ignored.
@@ -103,14 +103,14 @@ In order to fully serialize your ``Resta
 serialize the ``Place`` models as well::
 
     all_objects = [*Restaurant.objects.all(), *Place.objects.all()]
-    data = serializers.serialize("xml", all_objects)
+    data = serializers.serialize("json", all_objects)
 
 Deserializing data
 ==================
 
 Deserializing data is very similar to serializing it::
 
-    for obj in serializers.deserialize("xml", data):
+    for obj in serializers.deserialize("json", data):
         do_something_with(obj)
 
 As you can see, the ``deserialize`` function takes the same format argument as
@@ -133,7 +133,7 @@ data in your serialized representation d
 database. Usually, working with these ``DeserializedObject`` instances looks
 something like::
 
-    for deserialized_object in serializers.deserialize("xml", data):
+    for deserialized_object in serializers.deserialize("json", data):
         if object_should_be_saved(deserialized_object):
             deserialized_object.save()
 
@@ -146,7 +146,7 @@ If fields in the serialized data do not
 ``DeserializationError`` will be raised unless the ``ignorenonexistent``
 argument is passed in as ``True``::
 
-    serializers.deserialize("xml", data, ignorenonexistent=True)
+    serializers.deserialize("json", data, ignorenonexistent=True)
 
 .. _serialization-formats:
 
@@ -173,6 +173,8 @@ Identifier  Information
 .. _jsonl: https://jsonlines.org/
 .. _PyYAML: https://pyyaml.org/
 
+.. _serialization-formats-xml:
+
 XML
 ---
 
@@ -671,7 +673,7 @@ Typical usage looks like this::
 
     objs_with_deferred_fields = []
 
-    for obj in serializers.deserialize("xml", data, handle_forward_references=True):
+    for obj in serializers.deserialize("json", data, handle_forward_references=True):
         obj.save()
         if obj.deferred_fields is not None:
             objs_with_deferred_fields.append(obj)
diff -pruN 3:5.2.6-1/pyproject.toml 3:5.2.9-0ubuntu1/pyproject.toml
--- 3:5.2.6-1/pyproject.toml	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/pyproject.toml	2025-12-02 12:30:32.000000000 +0000
@@ -1,5 +1,5 @@
 [build-system]
-requires = ["setuptools>=75.8.1"]
+requires = ["setuptools>=77.0.3"]
 build-backend = "setuptools.build_meta"
 
 [project]
@@ -16,13 +16,13 @@ authors = [
 ]
 description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
 readme = "README.rst"
-license = {text = "BSD-3-Clause"}
+license = "BSD-3-Clause"
+license-files = ["LICENSE", "LICENSE.python"]
 classifiers = [
     "Development Status :: 5 - Production/Stable",
     "Environment :: Web Environment",
     "Framework :: Django",
     "Intended Audience :: Developers",
-    "License :: OSI Approved :: BSD License",
     "Operating System :: OS Independent",
     "Programming Language :: Python",
     "Programming Language :: Python :: 3",
@@ -31,6 +31,7 @@ classifiers = [
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
     "Topic :: Internet :: WWW/HTTP",
     "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
     "Topic :: Internet :: WWW/HTTP :: WSGI",
diff -pruN 3:5.2.6-1/scripts/manage_translations.py 3:5.2.9-0ubuntu1/scripts/manage_translations.py
--- 3:5.2.6-1/scripts/manage_translations.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/scripts/manage_translations.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,402 +0,0 @@
-#!/usr/bin/env python
-#
-# This Python file contains utility scripts to manage Django translations.
-# It has to be run inside the django git root directory.
-#
-# The following commands are available:
-#
-# * update_catalogs: check for new strings in core and contrib catalogs, and
-#                    output how much strings are new/changed.
-#
-# * lang_stats: output statistics for each catalog/language combination
-#
-# * fetch: fetch translations from transifex.com
-#
-# Each command support the --languages and --resources options to limit their
-# operation to the specified language or resource. For example, to get stats
-# for Spanish in contrib.admin, run:
-#
-#  $ python scripts/manage_translations.py lang_stats --language=es --resources=admin
-#
-# Also each command supports a --verbosity option to get progress feedback.
-
-import json
-import os
-import subprocess
-from argparse import ArgumentParser
-from collections import defaultdict
-from configparser import ConfigParser
-from datetime import datetime
-from itertools import product
-
-import requests
-
-import django
-from django.conf import settings
-from django.core.management import call_command
-
-HAVE_JS = ["admin"]
-LANG_OVERRIDES = {
-    "zh_CN": "zh_Hans",
-    "zh_TW": "zh_Hant",
-}
-
-
-def run(*args, verbosity=0, **kwargs):
-    if verbosity > 1:
-        print(f"\n** subprocess.run ** command: {args=} {kwargs=}")
-    return subprocess.run(*args, **kwargs)
-
-
-def get_api_token():
-    # Read token from ENV, otherwise read from the ~/.transifexrc file.
-    api_token = os.getenv("TRANSIFEX_API_TOKEN")
-    if not api_token:
-        parser = ConfigParser()
-        parser.read(os.path.expanduser("~/.transifexrc"))
-        api_token = parser.get("https://www.transifex.com", "token")
-
-    assert api_token, "Please define the TRANSIFEX_API_TOKEN env var."
-    return api_token
-
-
-def get_api_response(endpoint, api_token=None, params=None, verbosity=0):
-    if api_token is None:
-        api_token = get_api_token()
-    headers = {
-        "Authorization": f"Bearer {api_token}",
-        "Accept": "application/vnd.api+json",
-        "Content-Type": "application/json",
-    }
-    endpoint = endpoint.strip("/")
-    url = f"https://rest.api.transifex.com/{endpoint}"
-    if verbosity > 2:
-        print(f"\n>>> GET {url=} {params=}")
-    response = requests.get(url, headers=headers, params=params)
-    if verbosity > 2:
-        print(f">>>> GET {response=}\n")
-    response.raise_for_status()
-    return response.json()["data"]
-
-
-def list_resources_with_updates(
-    date_since, resources=None, languages=None, verbosity=0
-):
-    api_token = get_api_token()
-    project = "o:django:p:django"
-    date_since_iso = date_since.isoformat().strip("Z") + "Z"
-    if verbosity:
-        print(f"\n== Starting list_resources_with_updates at {date_since_iso=}")
-
-    if not languages:
-        languages = [  # List languages using Transifex projects API.
-            d["attributes"]["code"]
-            for d in get_api_response(
-                f"projects/{project}/languages", api_token, verbosity=verbosity
-            )
-        ]
-    if verbosity > 1:
-        print(f"\n=== Languages to process: {languages=}")
-
-    if not resources:
-        resources = [  # List resources using Transifex resources API.
-            d["attributes"]["slug"]
-            for d in get_api_response(
-                "resources",
-                api_token,
-                params={"filter[project]": project},
-                verbosity=verbosity,
-            )
-        ]
-    else:
-        resources = [_tx_resource_slug_for_name(r) for r in resources]
-    if verbosity > 1:
-        print(f"\n=== Resources to process: {resources=}")
-
-    resource_lang_changed = defaultdict(list)
-    for lang, resource in product(languages, resources):
-        if verbosity:
-            print(f"\n=== Getting data for: {lang=} {resource=} {date_since_iso=}")
-        data = get_api_response(
-            "resource_translations",
-            api_token,
-            params={
-                "filter[resource]": f"{project}:r:{resource}",
-                "filter[language]": f"l:{lang}",
-                "filter[date_translated][gt]": date_since_iso,
-            },
-            verbosity=verbosity,
-        )
-        local_resource = resource.replace("contrib-", "", 1)
-        local_lang = lang  # XXX: LANG_OVERRIDES.get(lang, lang)
-        if data:
-            resource_lang_changed[local_resource].append(local_lang)
-            if verbosity > 2:
-                fname = f"{local_resource}-{local_lang}.json"
-                with open(fname, "w") as f:
-                    f.write(json.dumps(data, sort_keys=True, indent=2))
-                print(f"==== Stored full data JSON in: {fname}")
-        if verbosity > 1:
-            print(f"==== Result for {local_resource=} {local_lang=}: {len(data)=}")
-
-    return resource_lang_changed
-
-
-def _get_locale_dirs(resources, include_core=True):
-    """
-    Return a tuple (contrib name, absolute path) for all locale directories,
-    optionally including the django core catalog.
-    If resources list is not None, filter directories matching resources content.
-    """
-    contrib_dir = os.path.join(os.getcwd(), "django", "contrib")
-    dirs = []
-
-    # Collect all locale directories
-    for contrib_name in os.listdir(contrib_dir):
-        path = os.path.join(contrib_dir, contrib_name, "locale")
-        if os.path.isdir(path):
-            dirs.append((contrib_name, path))
-            if contrib_name in HAVE_JS:
-                dirs.append(("%s-js" % contrib_name, path))
-    if include_core:
-        dirs.insert(0, ("core", os.path.join(os.getcwd(), "django", "conf", "locale")))
-
-    # Filter by resources, if any
-    if resources is not None:
-        res_names = [d[0] for d in dirs]
-        dirs = [ld for ld in dirs if ld[0] in resources]
-        if len(resources) > len(dirs):
-            print(
-                "You have specified some unknown resources. "
-                "Available resource names are: %s" % (", ".join(res_names),)
-            )
-            exit(1)
-    return dirs
-
-
-def _tx_resource_slug_for_name(name):
-    """Return the Transifex resource slug for the given name."""
-    if name != "core":
-        name = f"contrib-{name}"
-    return name
-
-
-def _tx_resource_for_name(name):
-    """Return the Transifex resource name."""
-    return "django." + _tx_resource_slug_for_name(name)
-
-
-def _check_diff(cat_name, base_path):
-    """
-    Output the approximate number of changed/added strings in the en catalog.
-    """
-    po_path = "%(path)s/en/LC_MESSAGES/django%(ext)s.po" % {
-        "path": base_path,
-        "ext": "js" if cat_name.endswith("-js") else "",
-    }
-    p = run(
-        "git diff -U0 %s | egrep '^[-+]msgid' | wc -l" % po_path,
-        capture_output=True,
-        shell=True,
-    )
-    num_changes = int(p.stdout.strip())
-    print("%d changed/added messages in '%s' catalog." % (num_changes, cat_name))
-
-
-def update_catalogs(resources=None, languages=None, verbosity=0):
-    """
-    Update the en/LC_MESSAGES/django.po (main and contrib) files with
-    new/updated translatable strings.
-    """
-    settings.configure()
-    django.setup()
-    if resources is not None:
-        print("`update_catalogs` will always process all resources.")
-    contrib_dirs = _get_locale_dirs(None, include_core=False)
-
-    os.chdir(os.path.join(os.getcwd(), "django"))
-    print("Updating en catalogs for Django and contrib apps...")
-    call_command("makemessages", locale=["en"], verbosity=verbosity)
-    print("Updating en JS catalogs for Django and contrib apps...")
-    call_command("makemessages", locale=["en"], domain="djangojs", verbosity=verbosity)
-
-    # Output changed stats
-    _check_diff("core", os.path.join(os.getcwd(), "conf", "locale"))
-    for name, dir_ in contrib_dirs:
-        _check_diff(name, dir_)
-
-
-def lang_stats(resources=None, languages=None, verbosity=0):
-    """
-    Output language statistics of committed translation files for each
-    Django catalog.
-    If resources is provided, it should be a list of translation resource to
-    limit the output (e.g. ['core', 'gis']).
-    """
-    locale_dirs = _get_locale_dirs(resources)
-
-    for name, dir_ in locale_dirs:
-        print("\nShowing translations stats for '%s':" % name)
-        langs = sorted(d for d in os.listdir(dir_) if not d.startswith("_"))
-        for lang in langs:
-            if languages and lang not in languages:
-                continue
-            # TODO: merge first with the latest en catalog
-            po_path = "{path}/{lang}/LC_MESSAGES/django{ext}.po".format(
-                path=dir_, lang=lang, ext="js" if name.endswith("-js") else ""
-            )
-            p = run(
-                ["msgfmt", "-vc", "-o", "/dev/null", po_path],
-                capture_output=True,
-                env={"LANG": "C"},
-                encoding="utf-8",
-                verbosity=verbosity,
-            )
-            if p.returncode == 0:
-                # msgfmt output stats on stderr
-                print("%s: %s" % (lang, p.stderr.strip()))
-            else:
-                print(
-                    "Errors happened when checking %s translation for %s:\n%s"
-                    % (lang, name, p.stderr)
-                )
-
-
-def fetch(resources=None, languages=None, date_since=None, verbosity=0):
-    """
-    Fetch translations from Transifex, wrap long lines, generate mo files.
-    """
-    if date_since is None:
-        resource_lang_mapping = {}
-    else:
-        # Filter resources and languages that were updates after `date_since`
-        resource_lang_mapping = list_resources_with_updates(
-            date_since=date_since,
-            resources=resources,
-            languages=languages,
-            verbosity=verbosity,
-        )
-        resources = resource_lang_mapping.keys()
-
-    locale_dirs = _get_locale_dirs(resources)
-    errors = []
-
-    for name, dir_ in locale_dirs:
-        cmd = [
-            "tx",
-            "pull",
-            "-r",
-            _tx_resource_for_name(name),
-            "-f",
-            "--minimum-perc=5",
-        ]
-        per_resource_langs = resource_lang_mapping.get(name, languages)
-        # Transifex pull
-        if per_resource_langs is None:
-            run([*cmd, "--all"], verbosity=verbosity)
-            target_langs = sorted(
-                d for d in os.listdir(dir_) if not d.startswith("_") and d != "en"
-            )
-        else:
-            run([*cmd, "-l", ",".join(per_resource_langs)], verbosity=verbosity)
-            target_langs = per_resource_langs
-
-        target_langs = [LANG_OVERRIDES.get(d, d) for d in target_langs]
-
-        # msgcat to wrap lines and msgfmt for compilation of .mo file
-        for lang in target_langs:
-            po_path = "%(path)s/%(lang)s/LC_MESSAGES/django%(ext)s.po" % {
-                "path": dir_,
-                "lang": lang,
-                "ext": "js" if name.endswith("-js") else "",
-            }
-            if not os.path.exists(po_path):
-                print(
-                    "No %(lang)s translation for resource %(name)s"
-                    % {"lang": lang, "name": name}
-                )
-                continue
-            run(
-                ["msgcat", "--no-location", "-o", po_path, po_path], verbosity=verbosity
-            )
-            msgfmt = run(
-                ["msgfmt", "-c", "-o", "%s.mo" % po_path[:-3], po_path],
-                verbosity=verbosity,
-            )
-            if msgfmt.returncode != 0:
-                errors.append((name, lang))
-    if errors:
-        print("\nWARNING: Errors have occurred in following cases:")
-        for resource, lang in errors:
-            print("\tResource %s for language %s" % (resource, lang))
-        exit(1)
-
-    if verbosity:
-        print("\nCOMPLETED.")
-
-
-def add_common_arguments(parser):
-    parser.add_argument(
-        "-r",
-        "--resources",
-        action="append",
-        help="limit operation to the specified resources",
-    )
-    parser.add_argument(
-        "-l",
-        "--languages",
-        action="append",
-        help="limit operation to the specified languages",
-    )
-    parser.add_argument(
-        "-v",
-        "--verbosity",
-        default=1,
-        type=int,
-        choices=[0, 1, 2, 3],
-        help=(
-            "Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, "
-            "3=very verbose output"
-        ),
-    )
-
-
-if __name__ == "__main__":
-    parser = ArgumentParser()
-
-    subparsers = parser.add_subparsers(
-        dest="cmd", help="choose the operation to perform"
-    )
-
-    parser_update = subparsers.add_parser(
-        "update_catalogs",
-        help="update English django.po files with new/updated translatable strings",
-    )
-    add_common_arguments(parser_update)
-
-    parser_stats = subparsers.add_parser(
-        "lang_stats",
-        help="print the approximate number of changed/added strings in the en catalog",
-    )
-    add_common_arguments(parser_stats)
-
-    parser_fetch = subparsers.add_parser(
-        "fetch",
-        help="fetch translations from Transifex, wrap long lines, generate mo files",
-    )
-    add_common_arguments(parser_fetch)
-    parser_fetch.add_argument(
-        "-s",
-        "--since",
-        dest="date_since",
-        metavar="YYYY-MM-DD",
-        type=datetime.fromisoformat,
-        help=(
-            "fetch translations that were done after this date (ISO format YYYY-MM-DD)."
-        ),
-    )
-
-    options = parser.parse_args()
-    kwargs = options.__dict__
-    cmd = kwargs.pop("cmd")
-    eval(cmd)(**kwargs)
diff -pruN 3:5.2.6-1/tests/admin_inlines/tests.py 3:5.2.9-0ubuntu1/tests/admin_inlines/tests.py
--- 3:5.2.6-1/tests/admin_inlines/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/admin_inlines/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -2525,3 +2525,15 @@ class SeleniumTests(AdminSeleniumTestCas
             delete.get_attribute("innerHTML"),
         )
         self.take_screenshot("loaded")
+
+    @screenshot_cases(["desktop_size", "mobile_size", "rtl", "dark", "high_contrast"])
+    def test_tabular_inline_with_filter_horizontal(self):
+        from selenium.webdriver.common.by import By
+
+        self.admin_login(username="super", password="secret")
+        self.selenium.get(
+            self.live_server_url + reverse("admin:admin_inlines_courseproxy2_add")
+        )
+        m2m_widget = self.selenium.find_element(By.CSS_SELECTOR, "div.selector")
+        self.assertTrue(m2m_widget.is_displayed())
+        self.take_screenshot("tabular")
diff -pruN 3:5.2.6-1/tests/admin_views/test_templatetags.py 3:5.2.9-0ubuntu1/tests/admin_views/test_templatetags.py
--- 3:5.2.6-1/tests/admin_views/test_templatetags.py	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/admin_views/test_templatetags.py	2025-12-02 12:26:58.000000000 +0000
@@ -1,13 +1,17 @@
 import datetime
+import unittest
 
 from django.contrib.admin import ModelAdmin
 from django.contrib.admin.templatetags.admin_list import date_hierarchy
 from django.contrib.admin.templatetags.admin_modify import submit_row
+from django.contrib.admin.templatetags.base import InclusionAdminNode
 from django.contrib.auth import get_permission_codename
 from django.contrib.auth.admin import UserAdmin
 from django.contrib.auth.models import User
+from django.template.base import Token, TokenType
 from django.test import RequestFactory, TestCase
 from django.urls import reverse
+from django.utils.version import PY314
 
 from .admin import ArticleAdmin, site
 from .models import Article, Question
@@ -131,6 +135,22 @@ class AdminTemplateTagsTest(AdminViewBas
         self.assertContains(response, "override-pagination")
         self.assertContains(response, "override-search_form")
 
+    @unittest.skipUnless(PY314, "Deferred annotations are Python 3.14+ only")
+    def test_inclusion_admin_node_deferred_annotation(self):
+        def action(arg: SomeType = None):  # NOQA: F821
+            pass
+
+        # This used to raise TypeError via the underlying call to
+        # inspect.getfullargspec(), which is not ready for deferred
+        # evaluation of annotations.
+        InclusionAdminNode(
+            parser=object(),
+            token=Token(token_type=TokenType.TEXT, contents="a"),
+            func=action,
+            template_name="test.html",
+            takes_context=False,
+        )
+
 
 class DateHierarchyTests(TestCase):
     factory = RequestFactory()
diff -pruN 3:5.2.6-1/tests/aggregation/test_filter_argument.py 3:5.2.9-0ubuntu1/tests/aggregation/test_filter_argument.py
--- 3:5.2.6-1/tests/aggregation/test_filter_argument.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/aggregation/test_filter_argument.py	2025-11-27 12:32:16.000000000 +0000
@@ -88,6 +88,17 @@ class FilteredAggregateTests(TestCase):
         agg = Count("pk", filter=Q())
         self.assertEqual(Author.objects.aggregate(count=agg)["count"], 3)
 
+    def test_empty_filtered_aggregates_with_annotation(self):
+        agg = Count("pk", filter=Q())
+        self.assertEqual(
+            Author.objects.annotate(
+                age_annotation=F("age"),
+            ).aggregate(
+                count=agg
+            )["count"],
+            3,
+        )
+
     def test_double_filtered_aggregates(self):
         agg = Sum("age", filter=Q(Q(name="test2") & ~Q(name="test")))
         self.assertEqual(Author.objects.aggregate(age=agg)["age"], 60)
diff -pruN 3:5.2.6-1/tests/aggregation/tests.py 3:5.2.9-0ubuntu1/tests/aggregation/tests.py
--- 3:5.2.6-1/tests/aggregation/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/aggregation/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -2136,8 +2136,8 @@ class AggregateTestCase(TestCase):
     def test_alias_sql_injection(self):
         crafted_alias = """injected_name" from "aggregation_author"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Author.objects.aggregate(**{crafted_alias: Avg("age")})
diff -pruN 3:5.2.6-1/tests/annotations/tests.py 3:5.2.9-0ubuntu1/tests/annotations/tests.py
--- 3:5.2.6-1/tests/annotations/tests.py	2025-09-03 11:14:44.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/annotations/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -1159,8 +1159,8 @@ class NonAggregateAnnotationTestCase(Tes
     def test_alias_sql_injection(self):
         crafted_alias = """injected_name" from "annotations_book"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Book.objects.annotate(**{crafted_alias: Value(1)})
@@ -1168,8 +1168,8 @@ class NonAggregateAnnotationTestCase(Tes
     def test_alias_filtered_relation_sql_injection(self):
         crafted_alias = """injected_name" from "annotations_book"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Book.objects.annotate(**{crafted_alias: FilteredRelation("author")})
@@ -1186,13 +1186,14 @@ class NonAggregateAnnotationTestCase(Tes
             "ali/*as",
             "alias*/",
             "alias;",
-            # [] are used by MSSQL.
+            # [] and # are used by MSSQL.
             "alias[",
             "alias]",
+            "ali#as",
         ]
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         for crafted_alias in tests:
             with self.subTest(crafted_alias):
@@ -1492,8 +1493,8 @@ class AliasTests(TestCase):
     def test_alias_sql_injection(self):
         crafted_alias = """injected_name" from "annotations_book"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Book.objects.alias(**{crafted_alias: Value(1)})
@@ -1501,8 +1502,19 @@ class AliasTests(TestCase):
     def test_alias_filtered_relation_sql_injection(self):
         crafted_alias = """injected_name" from "annotations_book"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Book.objects.alias(**{crafted_alias: FilteredRelation("authors")})
+
+    def test_alias_filtered_relation_sql_injection_dollar_sign(self):
+        qs = Book.objects.alias(
+            **{"crafted_alia$": FilteredRelation("authors")}
+        ).values("name", "crafted_alia$")
+        if connection.vendor == "postgresql":
+            msg = "Dollar signs are not permitted in column aliases on PostgreSQL."
+            with self.assertRaisesMessage(ValueError, msg):
+                list(qs)
+        else:
+            self.assertEqual(qs.first()["name"], self.b1.name)
diff -pruN 3:5.2.6-1/tests/composite_pk/test_aggregate.py 3:5.2.9-0ubuntu1/tests/composite_pk/test_aggregate.py
--- 3:5.2.6-1/tests/composite_pk/test_aggregate.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/composite_pk/test_aggregate.py	2025-11-27 12:32:16.000000000 +0000
@@ -141,3 +141,23 @@ class CompositePKAggregateTests(TestCase
         msg = "Max expression does not support composite primary keys."
         with self.assertRaisesMessage(ValueError, msg):
             Comment.objects.aggregate(Max("pk"))
+
+    def test_first_from_unordered_queryset_aggregation_pk_selected(self):
+        self.assertEqual(
+            Comment.objects.values("pk").annotate(max=Max("id")).first(),
+            {"pk": (self.comment_1.tenant_id, 1), "max": 1},
+        )
+
+    def test_first_from_unordered_queryset_aggregation_pk_selected_separately(self):
+        self.assertEqual(
+            Comment.objects.values("tenant", "id").annotate(max=Max("id")).first(),
+            {"tenant": self.comment_1.tenant_id, "id": 1, "max": 1},
+        )
+
+    def test_first_from_unordered_queryset_aggregation_pk_incomplete(self):
+        msg = (
+            "Cannot use QuerySet.first() on an unordered queryset performing "
+            "aggregation. Add an ordering with order_by()."
+        )
+        with self.assertRaisesMessage(TypeError, msg):
+            Comment.objects.values("tenant").annotate(max=Max("id")).first()
diff -pruN 3:5.2.6-1/tests/composite_pk/test_checks.py 3:5.2.9-0ubuntu1/tests/composite_pk/test_checks.py
--- 3:5.2.6-1/tests/composite_pk/test_checks.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/composite_pk/test_checks.py	2025-11-27 12:32:16.000000000 +0000
@@ -268,3 +268,38 @@ class CompositePKChecksTests(TestCase):
                 ),
             ],
         )
+
+    def test_proxy_model_can_subclass_model_with_composite_pk(self):
+        class Foo(models.Model):
+            pk = models.CompositePrimaryKey("a", "b")
+            a = models.SmallIntegerField()
+            b = models.SmallIntegerField()
+
+        class Bar(Foo):
+            class Meta:
+                proxy = True
+
+        self.assertEqual(Foo.check(databases=self.databases), [])
+        self.assertEqual(Bar.check(databases=self.databases), [])
+
+    def test_proxy_model_does_not_check_superclass_composite_pk_errors(self):
+        class Foo(models.Model):
+            pk = models.CompositePrimaryKey("a", "b")
+            a = models.SmallIntegerField()
+
+        class Bar(Foo):
+            class Meta:
+                proxy = True
+
+        self.assertEqual(
+            Foo.check(databases=self.databases),
+            [
+                checks.Error(
+                    "'b' cannot be included in the composite primary key.",
+                    hint="'b' is not a valid field.",
+                    obj=Foo,
+                    id="models.E042",
+                ),
+            ],
+        )
+        self.assertEqual(Bar.check(databases=self.databases), [])
diff -pruN 3:5.2.6-1/tests/expressions/test_queryset_values.py 3:5.2.9-0ubuntu1/tests/expressions/test_queryset_values.py
--- 3:5.2.6-1/tests/expressions/test_queryset_values.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/expressions/test_queryset_values.py	2025-12-02 12:30:32.000000000 +0000
@@ -37,8 +37,8 @@ class ValuesExpressionsTests(TestCase):
     def test_values_expression_alias_sql_injection(self):
         crafted_alias = """injected_name" from "expressions_company"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Company.objects.values(**{crafted_alias: F("ceo__salary")})
@@ -47,8 +47,8 @@ class ValuesExpressionsTests(TestCase):
     def test_values_expression_alias_sql_injection_json_field(self):
         crafted_alias = """injected_name" from "expressions_company"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             JSONFieldModel.objects.values(f"data__{crafted_alias}")
diff -pruN 3:5.2.6-1/tests/expressions/tests.py 3:5.2.9-0ubuntu1/tests/expressions/tests.py
--- 3:5.2.6-1/tests/expressions/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/expressions/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -1537,6 +1537,24 @@ class SimpleExpressionTests(SimpleTestCa
         with self.assertRaisesMessage(ValueError, msg):
             expression.get_expression_for_validation()
 
+    def test_replace_expressions_falsey(self):
+        class AssignableExpression(Expression):
+            def __init__(self, *source_expressions):
+                super().__init__()
+                self.set_source_expressions(list(source_expressions))
+
+            def get_source_expressions(self):
+                return self.source_expressions
+
+            def set_source_expressions(self, exprs):
+                self.source_expressions = exprs
+
+        expression = AssignableExpression()
+        falsey = Q()
+        expression.set_source_expressions([falsey])
+        replaced = expression.replace_expressions({"replacement": Expression()})
+        self.assertEqual(replaced.get_source_expressions(), [falsey])
+
 
 class ExpressionsNumericTests(TestCase):
     @classmethod
diff -pruN 3:5.2.6-1/tests/file_storage/tests.py 3:5.2.9-0ubuntu1/tests/file_storage/tests.py
--- 3:5.2.6-1/tests/file_storage/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/file_storage/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -723,9 +723,11 @@ class OverwritingStorageTests(FileStorag
         content_1 = b"content one"
         content_2 = b"second content"
         f_1 = TemporaryUploadedFile("tmp1", "text/plain", 11, "utf8")
+        self.addCleanup(f_1.close)
         f_1.write(content_1)
         f_1.seek(0)
         f_2 = TemporaryUploadedFile("tmp2", "text/plain", 14, "utf8")
+        self.addCleanup(f_2.close)
         f_2.write(content_2)
         f_2.seek(0)
         stored_name_1 = self.storage.save(name, f_1)
diff -pruN 3:5.2.6-1/tests/gis_tests/inspectapp/tests.py 3:5.2.9-0ubuntu1/tests/gis_tests/inspectapp/tests.py
--- 3:5.2.6-1/tests/gis_tests/inspectapp/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/gis_tests/inspectapp/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -6,6 +6,7 @@ from django.contrib.gis.gdal import GDAL
 from django.contrib.gis.utils.ogrinspect import ogrinspect
 from django.core.management import call_command
 from django.db import connection, connections
+from django.db.backends.sqlite3.creation import DatabaseCreation
 from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature
 from django.test.utils import modify_settings
 
@@ -232,7 +233,7 @@ def get_ogr_db_string():
         return None
 
     # SQLite/SpatiaLite in-memory databases
-    if db["NAME"] == ":memory:":
+    if DatabaseCreation.is_in_memory_db(db["NAME"]):
         return None
 
     # Build the params of the OGR database connection string
diff -pruN 3:5.2.6-1/tests/gis_tests/relatedapp/tests.py 3:5.2.9-0ubuntu1/tests/gis_tests/relatedapp/tests.py
--- 3:5.2.6-1/tests/gis_tests/relatedapp/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/gis_tests/relatedapp/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -99,10 +99,15 @@ class RelatedGeoModelTest(TestCase):
         self.assertEqual(type(u3), MultiPoint)
 
         # Ordering of points in the result of the union is not defined and
-        # implementation-dependent (DB backend, GEOS version)
-        self.assertEqual({p.ewkt for p in ref_u1}, {p.ewkt for p in u1})
-        self.assertEqual({p.ewkt for p in ref_u2}, {p.ewkt for p in u2})
-        self.assertEqual({p.ewkt for p in ref_u1}, {p.ewkt for p in u3})
+        # implementation-dependent (DB backend, GEOS version).
+        tests = [
+            (u1, ref_u1),
+            (u2, ref_u2),
+            (u3, ref_u1),
+        ]
+        for union, ref in tests:
+            for point, ref_point in zip(sorted(union), sorted(ref), strict=True):
+                self.assertIs(point.equals_exact(ref_point, tolerance=6), True)
 
     def test05_select_related_fk_to_subclass(self):
         """
diff -pruN 3:5.2.6-1/tests/httpwrappers/tests.py 3:5.2.9-0ubuntu1/tests/httpwrappers/tests.py
--- 3:5.2.6-1/tests/httpwrappers/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/httpwrappers/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -24,6 +24,7 @@ from django.http import (
 )
 from django.test import SimpleTestCase
 from django.utils.functional import lazystr
+from django.utils.http import MAX_URL_REDIRECT_LENGTH
 
 
 class QueryDictTests(SimpleTestCase):
@@ -485,11 +486,25 @@ class HttpResponseTests(SimpleTestCase):
         r.writelines(["foo\n", "bar\n", "baz\n"])
         self.assertEqual(r.content, b"foo\nbar\nbaz\n")
 
+    def test_redirect_url_max_length(self):
+        base_url = "https://example.com/"
+        for length in (
+            MAX_URL_REDIRECT_LENGTH - 1,
+            MAX_URL_REDIRECT_LENGTH,
+        ):
+            long_url = base_url + "x" * (length - len(base_url))
+            with self.subTest(length=length):
+                response = HttpResponseRedirect(long_url)
+                self.assertEqual(response.url, long_url)
+                response = HttpResponsePermanentRedirect(long_url)
+                self.assertEqual(response.url, long_url)
+
     def test_unsafe_redirect(self):
         bad_urls = [
             'data:text/html,<script>window.alert("xss")</script>',
             "mailto:test@example.com",
             "file:///etc/passwd",
+            "é" * (MAX_URL_REDIRECT_LENGTH + 1),
         ]
         for url in bad_urls:
             with self.assertRaises(DisallowedRedirect):
diff -pruN 3:5.2.6-1/tests/mail/tests.py 3:5.2.9-0ubuntu1/tests/mail/tests.py
--- 3:5.2.6-1/tests/mail/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/mail/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -185,7 +185,7 @@ class MailTests(MailTestsMixin, SimpleTe
         """Line length check should encode the payload supporting `surrogateescape`.
 
         Following https://github.com/python/cpython/issues/76511, newer
-        versions of Python (3.11.9, 3.12.3 and 3.13) ensure that a message's
+        versions of Python (3.11.9, 3.12.3 and 3.13+) ensure that a message's
         payload is encoded with the provided charset and `surrogateescape` is
         used as the error handling strategy.
 
diff -pruN 3:5.2.6-1/tests/postgres_tests/fields.py 3:5.2.9-0ubuntu1/tests/postgres_tests/fields.py
--- 3:5.2.6-1/tests/postgres_tests/fields.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/postgres_tests/fields.py	2025-11-27 12:32:16.000000000 +0000
@@ -57,3 +57,8 @@ except ImportError:
 class EnumField(models.CharField):
     def get_prep_value(self, value):
         return value.value if isinstance(value, enum.Enum) else value
+
+
+class OffByOneField(models.IntegerField):
+    def get_placeholder(self, value, compiler, connection):
+        return "(%s + 1)"
diff -pruN 3:5.2.6-1/tests/postgres_tests/migrations/0002_create_test_models.py 3:5.2.9-0ubuntu1/tests/postgres_tests/migrations/0002_create_test_models.py
--- 3:5.2.6-1/tests/postgres_tests/migrations/0002_create_test_models.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/postgres_tests/migrations/0002_create_test_models.py	2025-12-02 12:30:32.000000000 +0000
@@ -9,6 +9,7 @@ from ..fields import (
     EnumField,
     HStoreField,
     IntegerRangeField,
+    OffByOneField,
     SearchVectorField,
 )
 from ..models import TagField
@@ -570,4 +571,26 @@ class Migration(migrations.Migration):
                 "required_db_vendor": "postgresql",
             },
         ),
+        migrations.CreateModel(
+            name="OffByOneModel",
+            fields=[
+                (
+                    "id",
+                    models.BigAutoField(
+                        verbose_name="ID",
+                        serialize=False,
+                        auto_created=True,
+                        primary_key=True,
+                    ),
+                ),
+                (
+                    "one_off",
+                    OffByOneField(),
+                ),
+            ],
+            options={
+                "required_db_vendor": "postgresql",
+            },
+            bases=(models.Model,),
+        ),
     ]
diff -pruN 3:5.2.6-1/tests/postgres_tests/models.py 3:5.2.9-0ubuntu1/tests/postgres_tests/models.py
--- 3:5.2.6-1/tests/postgres_tests/models.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/postgres_tests/models.py	2025-12-02 12:30:32.000000000 +0000
@@ -9,6 +9,7 @@ from .fields import (
     EnumField,
     HStoreField,
     IntegerRangeField,
+    OffByOneField,
     SearchVectorField,
 )
 
@@ -207,3 +208,7 @@ class HotelReservation(PostgreSQLModel):
     end = models.DateTimeField()
     cancelled = models.BooleanField(default=False)
     requirements = models.JSONField(blank=True, null=True)
+
+
+class OffByOneModel(PostgreSQLModel):
+    one_off = OffByOneField()
diff -pruN 3:5.2.6-1/tests/postgres_tests/test_bulk_update.py 3:5.2.9-0ubuntu1/tests/postgres_tests/test_bulk_update.py
--- 3:5.2.6-1/tests/postgres_tests/test_bulk_update.py	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/postgres_tests/test_bulk_update.py	2025-11-27 12:32:16.000000000 +0000
@@ -6,6 +6,7 @@ from .models import (
     IntegerArrayModel,
     NestedIntegerArrayModel,
     NullableIntegerArrayModel,
+    OffByOneModel,
     OtherTypesArrayModel,
     RangesModel,
 )
@@ -44,3 +45,10 @@ class BulkSaveTests(PostgreSQLTestCase):
                 self.assertSequenceEqual(
                     Model.objects.filter(**{field: new}), instances
                 )
+
+    def test_bulk_create(self):
+        OffByOneModel.objects.bulk_create(OffByOneModel(one_off=0) for _ in range(20))
+
+        self.assertSequenceEqual(
+            [m.one_off for m in OffByOneModel.objects.all()], 20 * [1]
+        )
diff -pruN 3:5.2.6-1/tests/queries/test_q.py 3:5.2.9-0ubuntu1/tests/queries/test_q.py
--- 3:5.2.6-1/tests/queries/test_q.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/queries/test_q.py	2025-11-27 12:32:16.000000000 +0000
@@ -272,6 +272,11 @@ class QTests(SimpleTestCase):
                     Q(*items, _connector=connector),
                 )
 
+    def test_connector_validation(self):
+        msg = f"_connector must be one of {Q.AND!r}, {Q.OR!r}, {Q.XOR!r}, or None."
+        with self.assertRaisesMessage(ValueError, msg):
+            Q(_connector="evil")
+
     def test_referenced_base_fields(self):
         # Make sure Q.referenced_base_fields retrieves all base fields from
         # both filters and F expressions.
diff -pruN 3:5.2.6-1/tests/queries/tests.py 3:5.2.9-0ubuntu1/tests/queries/tests.py
--- 3:5.2.6-1/tests/queries/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/queries/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -1961,8 +1961,8 @@ class Queries5Tests(TestCase):
     def test_extra_select_alias_sql_injection(self):
         crafted_alias = """injected_name" from "queries_note"; --"""
         msg = (
-            "Column aliases cannot contain whitespace characters, quotation marks, "
-            "semicolons, or SQL comments."
+            "Column aliases cannot contain whitespace characters, hashes, quotation "
+            "marks, semicolons, or SQL comments."
         )
         with self.assertRaisesMessage(ValueError, msg):
             Note.objects.extra(select={crafted_alias: "1"})
@@ -4506,6 +4506,14 @@ class TestInvalidValuesRelation(SimpleTe
             Annotation.objects.filter(tag__in=[123, "abc"])
 
 
+class TestInvalidFilterArguments(TestCase):
+    def test_filter_rejects_invalid_arguments(self):
+        school = School.objects.create()
+        msg = "The following kwargs are invalid: '_connector', '_negated'"
+        with self.assertRaisesMessage(TypeError, msg):
+            School.objects.filter(pk=school.pk, _negated=True, _connector="evil")
+
+
 class TestTicket24605(TestCase):
     def test_ticket_24605(self):
         """
diff -pruN 3:5.2.6-1/tests/requirements/py3.txt 3:5.2.9-0ubuntu1/tests/requirements/py3.txt
--- 3:5.2.6-1/tests/requirements/py3.txt	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/requirements/py3.txt	2025-12-02 12:30:32.000000000 +0000
@@ -6,8 +6,8 @@ black
 docutils >= 0.19
 geoip2
 jinja2 >= 2.11.0
-numpy; python_version < '3.14'
-Pillow >= 6.2.1; sys.platform != 'win32' or python_version < '3.14'
+numpy
+Pillow >= 6.2.1
 # pylibmc/libmemcached can't be built on Windows.
 pylibmc; sys_platform != 'win32'
 pymemcache >= 3.4.0
diff -pruN 3:5.2.6-1/tests/serializers/test_deserialization.py 3:5.2.9-0ubuntu1/tests/serializers/test_deserialization.py
--- 3:5.2.6-1/tests/serializers/test_deserialization.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/serializers/test_deserialization.py	2025-12-02 12:27:50.000000000 +0000
@@ -1,11 +1,15 @@
 import json
+import time
 import unittest
 
 from django.core.serializers.base import DeserializationError, DeserializedObject
 from django.core.serializers.json import Deserializer as JsonDeserializer
 from django.core.serializers.jsonl import Deserializer as JsonlDeserializer
 from django.core.serializers.python import Deserializer
+from django.core.serializers.xml_serializer import Deserializer as XMLDeserializer
+from django.db import models
 from django.test import SimpleTestCase
+from django.test.utils import garbage_collect
 
 from .models import Author
 
@@ -133,3 +137,53 @@ class TestDeserializer(SimpleTestCase):
 
         self.assertEqual(first_item.object, self.jane)
         self.assertEqual(second_item.object, self.joe)
+
+    def test_crafted_xml_performance(self):
+        """The time to process invalid inputs is not quadratic."""
+
+        def build_crafted_xml(depth, leaf_text_len):
+            nested_open = "<nested>" * depth
+            nested_close = "</nested>" * depth
+            leaf = "x" * leaf_text_len
+            field_content = f"{nested_open}{leaf}{nested_close}"
+            return f"""
+                <django-objects version="1.0">
+                   <object model="contenttypes.contenttype" pk="1">
+                      <field name="app_label">{field_content}</field>
+                      <field name="model">m</field>
+                   </object>
+                </django-objects>
+            """
+
+        def deserialize(crafted_xml):
+            iterator = XMLDeserializer(crafted_xml)
+            garbage_collect()
+
+            start_time = time.perf_counter()
+            result = list(iterator)
+            end_time = time.perf_counter()
+
+            self.assertEqual(len(result), 1)
+            self.assertIsInstance(result[0].object, models.Model)
+            return end_time - start_time
+
+        def assertFactor(label, params, factor=2):
+            factors = []
+            prev_time = None
+            for depth, length in params:
+                crafted_xml = build_crafted_xml(depth, length)
+                elapsed = deserialize(crafted_xml)
+                if prev_time is not None:
+                    factors.append(elapsed / prev_time)
+                prev_time = elapsed
+
+            with self.subTest(label):
+                # Assert based on the average factor to reduce test flakiness.
+                self.assertLessEqual(sum(factors) / len(factors), factor)
+
+        assertFactor(
+            "varying depth, varying length",
+            [(50, 2000), (100, 4000), (200, 8000), (400, 16000), (800, 32000)],
+            2,
+        )
+        assertFactor("constant depth, varying length", [(100, 1), (100, 1000)], 2)
diff -pruN 3:5.2.6-1/tests/syndication_tests/tests.py 3:5.2.9-0ubuntu1/tests/syndication_tests/tests.py
--- 3:5.2.6-1/tests/syndication_tests/tests.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/syndication_tests/tests.py	2025-12-02 12:30:32.000000000 +0000
@@ -577,51 +577,51 @@ class SyndicationFeedTest(FeedTestCase):
     def test_stylesheets(self):
         testdata = [
             # Plain strings.
-            ("/test.xsl", 'href="/test.xsl" type="text/xsl" media="screen"'),
-            ("/test.xslt", 'href="/test.xslt" type="text/xsl" media="screen"'),
-            ("/test.css", 'href="/test.css" type="text/css" media="screen"'),
+            ("/test.xsl", 'href="/test.xsl" media="screen" type="text/xsl"'),
+            ("/test.xslt", 'href="/test.xslt" media="screen" type="text/xsl"'),
+            ("/test.css", 'href="/test.css" media="screen" type="text/css"'),
             ("/test", 'href="/test" media="screen"'),
             (
                 "https://example.com/test.xsl",
-                'href="https://example.com/test.xsl" type="text/xsl" media="screen"',
+                'href="https://example.com/test.xsl" media="screen" type="text/xsl"',
             ),
             (
                 "https://example.com/test.css",
-                'href="https://example.com/test.css" type="text/css" media="screen"',
+                'href="https://example.com/test.css" media="screen" type="text/css"',
             ),
             (
                 "https://example.com/test",
                 'href="https://example.com/test" media="screen"',
             ),
-            ("/♥.xsl", 'href="/%E2%99%A5.xsl" type="text/xsl" media="screen"'),
+            ("/♥.xsl", 'href="/%E2%99%A5.xsl" media="screen" type="text/xsl"'),
             (
                 static("stylesheet.xsl"),
-                'href="/static/stylesheet.xsl" type="text/xsl" media="screen"',
+                'href="/static/stylesheet.xsl" media="screen" type="text/xsl"',
             ),
             (
                 static("stylesheet.css"),
-                'href="/static/stylesheet.css" type="text/css" media="screen"',
+                'href="/static/stylesheet.css" media="screen" type="text/css"',
             ),
             (static("stylesheet"), 'href="/static/stylesheet" media="screen"'),
             (
                 reverse("syndication-xsl-stylesheet"),
-                'href="/syndication/stylesheet.xsl" type="text/xsl" media="screen"',
+                'href="/syndication/stylesheet.xsl" media="screen" type="text/xsl"',
             ),
             (
                 reverse_lazy("syndication-xsl-stylesheet"),
-                'href="/syndication/stylesheet.xsl" type="text/xsl" media="screen"',
+                'href="/syndication/stylesheet.xsl" media="screen" type="text/xsl"',
             ),
             # Stylesheet objects.
             (
                 Stylesheet("/test.xsl"),
-                'href="/test.xsl" type="text/xsl" media="screen"',
+                'href="/test.xsl" media="screen" type="text/xsl"',
             ),
             (Stylesheet("/test.xsl", mimetype=None), 'href="/test.xsl" media="screen"'),
             (Stylesheet("/test.xsl", media=None), 'href="/test.xsl" type="text/xsl"'),
             (Stylesheet("/test.xsl", mimetype=None, media=None), 'href="/test.xsl"'),
             (
                 Stylesheet("/test.xsl", mimetype="text/xml"),
-                'href="/test.xsl" type="text/xml" media="screen"',
+                'href="/test.xsl" media="screen" type="text/xml"',
             ),
         ]
         for stylesheet, expected in testdata:
@@ -641,12 +641,12 @@ class SyndicationFeedTest(FeedTestCase):
         self.assertEqual(doc.childNodes[0].nodeName, "xml-stylesheet")
         self.assertEqual(
             doc.childNodes[0].data,
-            'href="/stylesheet1.xsl" type="text/xsl" media="screen"',
+            'href="/stylesheet1.xsl" media="screen" type="text/xsl"',
         )
         self.assertEqual(doc.childNodes[1].nodeName, "xml-stylesheet")
         self.assertEqual(
             doc.childNodes[1].data,
-            'href="/stylesheet2.xsl" type="text/xsl" media="screen"',
+            'href="/stylesheet2.xsl" media="screen" type="text/xsl"',
         )
 
     def test_stylesheets_typeerror_if_str_or_stylesheet(self):
diff -pruN 3:5.2.6-1/tests/template_tests/test_library.py 3:5.2.9-0ubuntu1/tests/template_tests/test_library.py
--- 3:5.2.6-1/tests/template_tests/test_library.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/template_tests/test_library.py	2025-12-02 12:26:58.000000000 +0000
@@ -1,8 +1,10 @@
 import functools
+import unittest
 
 from django.template import Library
 from django.template.base import Node
 from django.test import SimpleTestCase
+from django.utils.version import PY314
 
 
 class FilterRegistrationTests(SimpleTestCase):
@@ -78,6 +80,14 @@ class InclusionTagRegistrationTests(Simp
         self.assertIs(func_wrapped, func)
         self.assertTrue(hasattr(func_wrapped, "cache_info"))
 
+    @unittest.skipUnless(PY314, "Deferred annotations are Python 3.14+ only")
+    def test_inclusion_tag_deferred_annotation(self):
+        @self.library.inclusion_tag("template.html")
+        def func(arg: SomeType):  # NOQA: F821
+            return ""
+
+        self.assertIn("func", self.library.tags)
+
 
 class SimpleTagRegistrationTests(SimpleTestCase):
     def setUp(self):
@@ -104,6 +114,14 @@ class SimpleTagRegistrationTests(SimpleT
 
         self.assertIn("name", self.library.tags)
 
+    @unittest.skipUnless(PY314, "Deferred annotations are Python 3.14+ only")
+    def test_tag_deferred_annotation(self):
+        @self.library.simple_tag
+        def func(parser, token: SomeType):  # NOQA: F821
+            return Node()
+
+        self.assertIn("func", self.library.tags)
+
     def test_simple_tag_invalid(self):
         msg = "Invalid arguments provided to simple_tag"
         with self.assertRaisesMessage(ValueError, msg):
@@ -132,7 +150,7 @@ class SimpleBlockTagRegistrationTests(Si
         self.assertIn("func", self.library.tags)
 
     def test_simple_block_tag_parens(self):
-        @self.library.simple_tag()
+        @self.library.simple_block_tag()
         def func(content):
             return content
 
@@ -145,6 +163,14 @@ class SimpleBlockTagRegistrationTests(Si
 
         self.assertIn("name", self.library.tags)
 
+    @unittest.skipUnless(PY314, "Deferred annotations are Python 3.14+ only")
+    def test_simple_block_tag_deferred_annotation(self):
+        @self.library.simple_block_tag
+        def func(content: SomeType):  # NOQA: F821
+            return content
+
+        self.assertIn("func", self.library.tags)
+
     def test_simple_block_tag_invalid(self):
         msg = "Invalid arguments provided to simple_block_tag"
         with self.assertRaisesMessage(ValueError, msg):
diff -pruN 3:5.2.6-1/tests/template_tests/test_parser.py 3:5.2.9-0ubuntu1/tests/template_tests/test_parser.py
--- 3:5.2.6-1/tests/template_tests/test_parser.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/template_tests/test_parser.py	2025-12-02 12:30:32.000000000 +0000
@@ -3,6 +3,8 @@ Testing some internals of the template p
 These are *not* examples to be copied in user code.
 """
 
+import unittest
+
 from django.template import Library, TemplateSyntaxError
 from django.template.base import (
     FilterExpression,
@@ -14,6 +16,7 @@ from django.template.base import (
 )
 from django.template.defaultfilters import register as filter_library
 from django.test import SimpleTestCase
+from django.utils.version import PY314
 
 
 class ParserTests(SimpleTestCase):
@@ -148,3 +151,17 @@ class ParserTests(SimpleTestCase):
             '1|two_one_opt_arg:"1"',
         ):
             FilterExpression(expr, parser)
+
+    @unittest.skipUnless(PY314, "Deferred annotations are Python 3.14+ only")
+    def test_filter_deferred_annotation(self):
+        register = Library()
+
+        @register.filter("example")
+        def example_filter(value: str, arg: SomeType):  # NOQA: F821
+            return f"{value}_{arg}"
+
+        result = FilterExpression.args_check(
+            "example", example_filter, ["extra_example"]
+        )
+
+        self.assertIs(result, True)
diff -pruN 3:5.2.6-1/tests/test_runner/test_parallel.py 3:5.2.9-0ubuntu1/tests/test_runner/test_parallel.py
--- 3:5.2.6-1/tests/test_runner/test_parallel.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/test_runner/test_parallel.py	2025-12-02 12:30:32.000000000 +0000
@@ -31,6 +31,12 @@ class ExceptionThatFailsUnpickling(Excep
     def __init__(self, arg):
         super().__init__()
 
+    def __reduce__(self):
+        # tblib 3.2+ makes exception subclasses picklable by default.
+        # Return (cls, ()) so the constructor fails on unpickle, preserving
+        # the needed behavior for test_pickle_errors_detection.
+        return (self.__class__, ())
+
 
 class ParallelTestRunnerTest(SimpleTestCase):
     """
@@ -166,6 +172,8 @@ class RemoteTestResultTest(SimpleTestCas
         result = RemoteTestResult()
         result._confirm_picklable(picklable_error)
 
+        # The exception can be pickled but not unpickled.
+        pickle.dumps(not_unpicklable_error)
         msg = "__init__() missing 1 required positional argument"
         with self.assertRaisesMessage(TypeError, msg):
             result._confirm_picklable(not_unpicklable_error)
diff -pruN 3:5.2.6-1/tests/utils_tests/test_archive.py 3:5.2.9-0ubuntu1/tests/utils_tests/test_archive.py
--- 3:5.2.6-1/tests/utils_tests/test_archive.py	2025-09-03 10:08:01.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/utils_tests/test_archive.py	2025-11-27 12:32:16.000000000 +0000
@@ -3,6 +3,7 @@ import stat
 import sys
 import tempfile
 import unittest
+import zipfile
 
 from django.core.exceptions import SuspiciousOperation
 from django.test import SimpleTestCase
@@ -94,3 +95,21 @@ class TestArchiveInvalid(SimpleTestCase)
             with self.subTest(entry), tempfile.TemporaryDirectory() as tmpdir:
                 with self.assertRaisesMessage(SuspiciousOperation, msg % invalid_path):
                     archive.extract(os.path.join(archives_dir, entry), tmpdir)
+
+    def test_extract_function_traversal_startswith(self):
+        with tempfile.TemporaryDirectory() as tmpdir:
+            base = os.path.abspath(tmpdir)
+            tarfile_handle = tempfile.NamedTemporaryFile(suffix=".zip", delete=False)
+            tar_path = tarfile_handle.name
+            tarfile_handle.close()
+            self.addCleanup(os.remove, tar_path)
+
+            malicious_member = os.path.join(base + "abc", "evil.txt")
+            with zipfile.ZipFile(tar_path, "w") as zf:
+                zf.writestr(malicious_member, "evil\n")
+                zf.writestr("test.txt", "data\n")
+
+            with self.assertRaisesMessage(
+                SuspiciousOperation, "Archive contains invalid path"
+            ):
+                archive.extract(tar_path, base)
diff -pruN 3:5.2.6-1/tests/utils_tests/test_feedgenerator.py 3:5.2.9-0ubuntu1/tests/utils_tests/test_feedgenerator.py
--- 3:5.2.6-1/tests/utils_tests/test_feedgenerator.py	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/utils_tests/test_feedgenerator.py	2025-12-02 12:30:32.000000000 +0000
@@ -156,6 +156,20 @@ class FeedgeneratorTests(SimpleTestCase)
         stylesheet = feedgenerator.Stylesheet(SimpleLazyObject(m))
         m.assert_not_called()
         self.assertEqual(
-            str(stylesheet), 'href="test.css" type="text/css" media="screen"'
+            str(stylesheet), 'href="test.css" media="screen" type="text/css"'
         )
         m.assert_called_once()
+
+    def test_stylesheet_attribute_escaping(self):
+        style = feedgenerator.Stylesheet(
+            url='http://example.com/style.css?foo="bar"&baz=<>',
+            mimetype='text/css; charset="utf-8"',
+            media='screen and (max-width: "600px")',
+        )
+
+        self.assertEqual(
+            str(style),
+            'href="http://example.com/style.css?foo=%22bar%22&amp;baz=%3C%3E" '
+            'media="screen and (max-width: &quot;600px&quot;)" '
+            'type="text/css; charset=&quot;utf-8&quot;"',
+        )
diff -pruN 3:5.2.6-1/tests/utils_tests/test_inspect.py 3:5.2.9-0ubuntu1/tests/utils_tests/test_inspect.py
--- 3:5.2.6-1/tests/utils_tests/test_inspect.py	2025-08-14 13:33:37.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tests/utils_tests/test_inspect.py	2025-12-02 12:30:32.000000000 +0000
@@ -1,6 +1,11 @@
 import unittest
+from typing import TYPE_CHECKING
 
 from django.utils import inspect
+from django.utils.version import PY314
+
+if TYPE_CHECKING:
+    from django.utils.safestring import SafeString
 
 
 class Person:
@@ -100,3 +105,13 @@ class TestInspectMethods(unittest.TestCa
         self.assertIs(inspect.func_accepts_kwargs(Person().just_args), False)
         self.assertIs(inspect.func_accepts_kwargs(Person.all_kinds), True)
         self.assertIs(inspect.func_accepts_kwargs(Person().just_args), False)
+
+    @unittest.skipUnless(PY314, "Deferred annotations are Python 3.14+ only")
+    def test_func_accepts_kwargs_deferred_annotations(self):
+
+        def func_with_annotations(self, name: str, complex: SafeString) -> None:
+            pass
+
+        # Inspection fails with deferred annotations with python 3.14+. Earlier
+        # Python versions trigger the NameError on module initialization.
+        self.assertIs(inspect.func_accepts_kwargs(func_with_annotations), False)
diff -pruN 3:5.2.6-1/tox.ini 3:5.2.9-0ubuntu1/tox.ini
--- 3:5.2.6-1/tox.ini	2025-09-03 11:14:19.000000000 +0000
+++ 3:5.2.9-0ubuntu1/tox.ini	2025-12-02 12:30:32.000000000 +0000
@@ -13,6 +13,7 @@ envlist =
     flake8
     docs
     isort
+    zizmor
 
 # Add environment to use the default python3 installation
 [testenv:py3]
@@ -26,7 +27,7 @@ setenv =
     PYTHONDONTWRITEBYTECODE=1
 deps =
     -e .
-    py{3,310,311,312,313,py3}: -rtests/requirements/py3.txt
+    py{3,310,311,312,313,314,py3}: -rtests/requirements/py3.txt
     postgres: -rtests/requirements/postgres.txt
     mysql: -rtests/requirements/mysql.txt
     oracle: -rtests/requirements/oracle.txt
@@ -87,3 +88,11 @@ allowlist_externals =
 commands =
     npm install
     npm test
+
+[testenv:zizmor]
+basepython = python3
+usedevelop = false
+deps = zizmor >= 1.16.3
+changedir = {toxinidir}
+commands =
+    zizmor .
