diff --git a/AUTHORS b/AUTHORS
index 642cdc0b6132..2431fe61e14c 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -9,6 +9,7 @@ answer newbie questions, and generally made Django that much better:
Aaron Swartz
Aaron T. Myers
Abeer Upadhyay
+ Abhijeet Viswa
Abhinav Patil
Abhishek Gautam
Adam Allred
@@ -239,6 +240,7 @@ answer newbie questions, and generally made Django that much better:
David Sanders
David Schein
David Tulig
+ David Wobrock
Davide Ceretti
Deepak Thukral
Denis Kuzmichyov
@@ -894,6 +896,7 @@ answer newbie questions, and generally made Django that much better:
valtron
Vasiliy Stavenko
Vasil Vangelovski
+ Vibhu Agarwal
Victor Andrée
viestards.lists@gmail.com
Viktor Danyliuk
diff --git a/django/__init__.py b/django/__init__.py
index 15a3107fd494..e2082dfde8bc 100644
--- a/django/__init__.py
+++ b/django/__init__.py
@@ -1,6 +1,6 @@
from django.utils.version import get_version
-VERSION = (3, 0, 2, 'final', 0)
+VERSION = (3, 0, 7, 'final', 0)
__version__ = get_version(VERSION)
diff --git a/django/conf/locale/az/LC_MESSAGES/django.mo b/django/conf/locale/az/LC_MESSAGES/django.mo
index d004cb059751..dfb7d4435285 100644
Binary files a/django/conf/locale/az/LC_MESSAGES/django.mo and b/django/conf/locale/az/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/az/LC_MESSAGES/django.po b/django/conf/locale/az/LC_MESSAGES/django.po
index 21bf2a96b948..95be54a4c727 100644
--- a/django/conf/locale/az/LC_MESSAGES/django.po
+++ b/django/conf/locale/az/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Emin Mastizada , 2018
+# Emin Mastizada , 2018,2020
# Emin Mastizada , 2015-2016
# Metin Amiroff , 2011
msgid ""
@@ -9,8 +9,8 @@ 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"
+"PO-Revision-Date: 2020-01-12 07:21+0000\n"
+"Last-Translator: Emin Mastizada \n"
"Language-Team: Azerbaijani (http://www.transifex.com/django/django/language/"
"az/)\n"
"MIME-Version: 1.0\n"
@@ -140,7 +140,7 @@ msgid "Hungarian"
msgstr "Macarca"
msgid "Armenian"
-msgstr ""
+msgstr "Ermənicə"
msgid "Interlingua"
msgstr "İnterlinqua"
@@ -281,7 +281,7 @@ msgid "Urdu"
msgstr "Urduca"
msgid "Uzbek"
-msgstr ""
+msgstr "Özbəkcə"
msgid "Vietnamese"
msgstr "Vyetnamca"
@@ -329,11 +329,15 @@ msgstr "Düzgün e-poçt ünvanı daxil edin."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Hərflərdən, rəqəmlərdən, alt-xətlərdən və ya defislərdən ibarət düzgün "
+"qısaltma (“slug”) daxil edin."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Unicode hərflərdən, rəqəmlərdən, alt-xətlərdən və ya defislərdən ibarət "
+"düzgün qısaltma (“slug”) daxil edin."
msgid "Enter a valid IPv4 address."
msgstr "Düzgün IPv4 ünvanı daxil edin."
@@ -417,6 +421,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"“%(extension)s” fayl uzantısına icazə verilmir. İcazə verilən fayl "
+"uzantıları: %(allowed_extensions)s."
msgid "Null characters are not allowed."
msgstr "Null simvollara icazə verilmir."
@@ -457,11 +463,11 @@ msgstr "Sahənin tipi: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "“%(value)s” dəyəri True və ya False olmalıdır."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "“%(value)s” dəyəri True, False və ya None olmalıdır."
msgid "Boolean (Either True or False)"
msgstr "Bul (ya Doğru, ya Yalan)"
@@ -478,12 +484,14 @@ 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."
#, python-format
msgid ""
"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
"date."
msgstr ""
+"“%(value)s” dəyəri düzgün formatdadır (YYYY-MM-DD) amma bu tarix xətalıdır."
msgid "Date (without time)"
msgstr "Tarix (saatsız)"
@@ -493,19 +501,23 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
"uuuuuu]][TZ] format."
msgstr ""
+"“%(value)s” dəyərinin formatı səhvdir. Formatı YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
+"[TZ] olmalıdır."
#, 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” dəyərinin formatı düzgündür (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) "
+"amma bu tarix xətalıdır."
msgid "Date (with time)"
msgstr "Tarix (vaxt ilə)"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "“%(value)s” dəyəri onluq kəsrli (decimal) rəqəm olmalıdır."
msgid "Decimal number"
msgstr "Rasional ədəd"
@@ -515,6 +527,8 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
msgstr ""
+"“%(value)s” dəyərinin formatı səhvdir. Formatı [DD] [HH:[MM:]]ss[.uuuuuu] "
+"olmalıdır."
msgid "Duration"
msgstr "Müddət"
@@ -527,14 +541,14 @@ msgstr "Faylın ünvanı"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "“%(value)s” dəyəri float olmalıdır."
msgid "Floating point number"
msgstr "Sürüşən vergüllü ədəd"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "“%(value)s” dəyəri tam rəqəm olmalıdır."
msgid "Integer"
msgstr "Tam ədəd"
@@ -550,7 +564,7 @@ msgstr "IP ünvan"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "“%(value)s” dəyəri None, True və ya False olmalıdır."
msgid "Boolean (Either True, False or None)"
msgstr "Bul (Ya Doğru, ya Yalan, ya da Heç nə)"
@@ -576,12 +590,15 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
msgstr ""
+"“%(value)s” dəyərinin formatı səhvdir. Formatı HH:MM[:ss[.uuuuuu]] olmalıdır."
#, python-format
msgid ""
"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
"invalid time."
msgstr ""
+"“%(value)s” dəyəri düzgün formatdadır (HH:MM[:ss[.uuuuuu]]), amma vaxtı "
+"xətalıdır."
msgid "Time"
msgstr "Vaxt"
@@ -594,10 +611,10 @@ msgstr "Düz ikili (binary) məlumat"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "“%(value)s” keçərli UUID deyil."
msgid "Universally unique identifier"
-msgstr ""
+msgstr "Universal təkrarolunmaz identifikator"
msgid "File"
msgstr "Fayl"
@@ -754,13 +771,15 @@ msgstr "Düzgün seçim edin. Bu seçim mümkün deyil."
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "“%(pk)s” düzgün dəyər deyil."
#, python-format
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 vaxtı %(current_timezone)s zaman qurşağında ifadə oluna bilmir; "
+"ya duallıq, ya da mövcud olmaya bilər."
msgid "Clear"
msgstr "Təmizlə"
@@ -781,13 +800,13 @@ msgid "No"
msgstr "Yox"
msgid "Year"
-msgstr ""
+msgstr "İl"
msgid "Month"
-msgstr ""
+msgstr "Ay"
msgid "Day"
-msgstr ""
+msgstr "Gün"
msgid "yes,no,maybe"
msgstr "hə,yox,bəlkə"
@@ -1052,7 +1071,7 @@ msgstr "Bu doğru IPv6 ünvanı deyil."
#, python-format
msgctxt "String to return when truncating text"
msgid "%(truncated_text)s…"
-msgstr ""
+msgstr "%(truncated_text)s…"
msgid "or"
msgstr "və ya"
@@ -1112,12 +1131,18 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Bu HTTPS sayt səyyahınız tərəfindən “Referer header” göndərilməsini tələb "
+"edir, amma göndərilmir. Bu başlıq səyyahınızın üçüncü biri tərəfindən hack-"
+"lənmədiyinə əmin olmaq üçün istifadə edilir."
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 ""
+"Əgər səyyahınızın “Referer” başlığını göndərməsini söndürmüsünüzsə, lütfən "
+"bu sayt üçün, HTTPS əlaqələr üçün və ya “same-origin” sorğular üçün aktiv "
+"edin."
msgid ""
"If you are using the tag or "
@@ -1126,6 +1151,11 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Əgər etiketini və ya "
+"“Referrer-Policy: no-referrer” başlığını işlədirsinizsə, lütfən silin. CSRF "
+"qoruma dəqiq yönləndirən yoxlaması üçün “Referer” başlığını tələb edir. Əgər "
+"məxfilik üçün düşünürsünüzsə, üçüncü tərəf sayt keçidləri üçün kimi bir alternativ işlədin."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1140,6 +1170,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 ""
+"Əgər səyyahınızda çərəzlər söndürülübsə, lütfən bu sayt və ya “same-origin” "
+"sorğular üçün aktiv edin."
msgid "More information is available with DEBUG=True."
msgstr "Daha ətraflı məlumat DEBUG=True ilə mövcuddur."
@@ -1173,14 +1205,14 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr ""
+msgstr "“%(format)s” formatına görə “%(datestr)s” tarixi düzgün deyil"
#, python-format
msgid "No %(verbose_name)s found matching the query"
msgstr "Sorğuya uyğun %(verbose_name)s tapılmadı"
msgid "Page is not “last”, nor can it be converted to an int."
-msgstr ""
+msgstr "Səhifə həm “axırıncı” deyil, həm də tam ədədə çevrilə bilmir."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1188,14 +1220,14 @@ msgstr "Qeyri-düzgün səhifə (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Siyahı boşdur və “%(class_name)s.allow_empty” dəyəri False-dur."
msgid "Directory indexes are not allowed here."
msgstr "Ünvan indekslərinə icazə verilmir."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "“%(path)s” mövcud deyil"
#, python-format
msgid "Index of %(directory)s"
@@ -1231,7 +1263,7 @@ msgid "Django Documentation"
msgstr "Django Sənədləri"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Mövzular, istinadlar və nümunələr"
msgid "Tutorial: A Polling App"
msgstr "Məşğələ: Səsvermə Tətbiqi"
diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo
index 0c9b03df4d4d..6864e7f03e6f 100644
Binary files a/django/conf/locale/de/LC_MESSAGES/django.mo and b/django/conf/locale/de/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/de/LC_MESSAGES/django.po b/django/conf/locale/de/LC_MESSAGES/django.po
index 744b1c548c4f..3041c6f1409e 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.po
+++ b/django/conf/locale/de/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@
# Daniel Roschka , 2016
# Florian Apolloner , 2018
# Jannis Vajen, 2011,2013
-# Jannis Leidel , 2013-2018
+# Jannis Leidel , 2013-2018,2020
# Jannis Vajen, 2016
# Markus Holtermann , 2013,2015
msgid ""
@@ -14,8 +14,8 @@ 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"
+"PO-Revision-Date: 2020-01-17 22:58+0000\n"
+"Last-Translator: Jannis Leidel \n"
"Language-Team: German (http://www.transifex.com/django/django/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -144,7 +144,7 @@ msgid "Hungarian"
msgstr "Ungarisch"
msgid "Armenian"
-msgstr ""
+msgstr "Armenisch"
msgid "Interlingua"
msgstr "Interlingua"
@@ -285,7 +285,7 @@ msgid "Urdu"
msgstr "Urdu"
msgid "Uzbek"
-msgstr ""
+msgstr "Usbekisch"
msgid "Vietnamese"
msgstr "Vietnamesisch"
@@ -333,11 +333,15 @@ msgstr "Bitte gültige E-Mail-Adresse eingeben."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Bitte ein gültiges Kürzel, bestehend aus Buchstaben, Ziffern, Unterstrichen "
+"und Bindestrichen, eingeben."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Bitte ein gültiges Kürzel eingeben, bestehend aus Buchstaben (Unicode), "
+"Ziffern, Unter- und Bindestrichen."
msgid "Enter a valid IPv4 address."
msgstr "Bitte eine gültige IPv4-Adresse eingeben."
@@ -429,6 +433,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"Dateiendung „%(extension)s“ ist nicht erlaubt. Erlaubte Dateiendungen sind: "
+"„%(allowed_extensions)s“."
msgid "Null characters are not allowed."
msgstr "Nullzeichen sind nicht erlaubt."
@@ -468,11 +474,11 @@ msgstr "Feldtyp: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "Wert „%(value)s“ muss entweder True oder False sein."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "Wert „%(value)s“ muss True, False oder None sein."
msgid "Boolean (Either True or False)"
msgstr "Boolescher Wert (True oder False)"
@@ -489,12 +495,16 @@ msgid ""
"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
"format."
msgstr ""
+"Wert „%(value)s“ hat ein ungültiges Datumsformat. Es muss YYYY-MM-DD "
+"entsprechen."
#, python-format
msgid ""
"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
"date."
msgstr ""
+"Wert „%(value)s“ hat das korrekte Format (YYYY-MM-DD) aber ein ungültiges "
+"Datum."
msgid "Date (without time)"
msgstr "Datum (ohne Uhrzeit)"
@@ -504,19 +514,23 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
"uuuuuu]][TZ] format."
msgstr ""
+"Wert „%(value)s“ hat ein ungültiges Format. Es muss YYYY-MM-DD HH:MM[:ss[."
+"uuuuuu]][TZ] entsprechen."
#, 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 ""
+"Wert „%(value)s“ hat das korrekte Format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
+"[TZ]) aber eine ungültige Zeit-/Datumsangabe."
msgid "Date (with time)"
msgstr "Datum (mit Uhrzeit)"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "Wert „%(value)s“ muss eine Dezimalzahl sein."
msgid "Decimal number"
msgstr "Dezimalzahl"
@@ -526,6 +540,8 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
msgstr ""
+"Wert „%(value)s“ hat ein ungültiges Format. Es muss der Form [DD] [HH:"
+"[MM:]]ss[.uuuuuu] entsprechen."
msgid "Duration"
msgstr "Zeitspanne"
@@ -538,14 +554,14 @@ msgstr "Dateipfad"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "Wert „%(value)s“ muss eine Fließkommazahl sein."
msgid "Floating point number"
msgstr "Gleitkommazahl"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "Wert „%(value)s“ muss eine Ganzzahl sein."
msgid "Integer"
msgstr "Ganzzahl"
@@ -561,7 +577,7 @@ msgstr "IP-Adresse"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "Wert „%(value)s“ muss entweder None, True oder False sein."
msgid "Boolean (Either True, False or None)"
msgstr "Boolescher Wert (True, False oder None)"
@@ -587,12 +603,16 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
msgstr ""
+"Wert „%(value)s“ hat ein ungültiges Format. Es muss HH:MM[:ss[.uuuuuu]] "
+"entsprechen."
#, python-format
msgid ""
"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
"invalid time."
msgstr ""
+"Wert „%(value)s“ hat das korrekte Format (HH:MM[:ss[.uuuuuu]]), aber ist "
+"eine ungültige Zeitangabe."
msgid "Time"
msgstr "Zeit"
@@ -605,10 +625,10 @@ msgstr "Binärdaten"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "Wert „%(value)s“ ist keine gültige UUID."
msgid "Universally unique identifier"
-msgstr ""
+msgstr "Universally Unique Identifier"
msgid "File"
msgstr "Datei"
@@ -769,13 +789,15 @@ msgstr "Bitte eine gültige Auswahl treffen. Dies ist keine gültige Auswahl."
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "„%(pk)s“ ist kein gültiger Wert."
#, python-format
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 konnte mit der Zeitzone %(current_timezone)s nicht eindeutig "
+"interpretiert werden, da es doppeldeutig oder eventuell inkorrekt ist."
msgid "Clear"
msgstr "Zurücksetzen"
@@ -796,13 +818,13 @@ msgid "No"
msgstr "Nein"
msgid "Year"
-msgstr ""
+msgstr "Jahr"
msgid "Month"
-msgstr ""
+msgstr "Monat"
msgid "Day"
-msgstr ""
+msgstr "Tag"
msgid "yes,no,maybe"
msgstr "Ja,Nein,Vielleicht"
@@ -1067,7 +1089,7 @@ msgstr "Dies ist keine gültige IPv6-Adresse."
#, python-format
msgctxt "String to return when truncating text"
msgid "%(truncated_text)s…"
-msgstr ""
+msgstr "%(truncated_text)s…"
msgid "or"
msgstr "oder"
@@ -1127,12 +1149,20 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Sie sehen diese Fehlermeldung da diese HTTPS-Seite einen „Referer“-Header "
+"von Ihrem Webbrowser erwartet, aber keinen erhalten hat. Dieser Header ist "
+"aus Sicherheitsgründen notwendig, um sicherzustellen, dass Ihr Webbrowser "
+"nicht von Dritten missbraucht wird."
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 ""
+"Falls Sie Ihren Webbrowser so konfiguriert haben, dass „Referer“-Header "
+"nicht gesendet werden, müssen Sie diese Funktion mindestens für diese Seite, "
+"für sichere HTTPS-Verbindungen oder für „Same-Origin“-Verbindungen "
+"reaktivieren."
msgid ""
"If you are using the tag or "
@@ -1141,6 +1171,11 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Wenn der Tag „“ oder der "
+"„Referrer-Policy: no-referrer“-Header verwendet wird, entfernen Sie sie "
+"bitte. Der „Referer“-Header wird zur korrekten CSRF-Verifizierung benötigt. "
+"Falls es datenschutzrechtliche Gründe gibt, benutzen Sie bitte Alternativen "
+"wie „“ für Links zu Drittseiten."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1156,6 +1191,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 ""
+"Falls Sie Cookies in Ihren Webbrowser deaktiviert haben, müssen Sie sie "
+"mindestens für diese Seite oder für „Same-Origin“-Verbindungen reaktivieren."
msgid "More information is available with DEBUG=True."
msgstr "Mehr Information ist verfügbar mit DEBUG=True."
@@ -1189,7 +1226,7 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr ""
+msgstr "Ungültiges Datum „%(datestr)s“ für das Format „%(format)s“"
#, python-format
msgid "No %(verbose_name)s found matching the query"
@@ -1197,6 +1234,8 @@ msgstr "Konnte keine %(verbose_name)s mit diesen Parametern finden."
msgid "Page is not “last”, nor can it be converted to an int."
msgstr ""
+"Weder ist dies die letzte Seite („last“) noch konnte sie in einen "
+"ganzzahligen Wert umgewandelt werden."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1204,14 +1243,14 @@ msgstr "Ungültige Seite (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Leere Liste und „%(class_name)s.allow_empty“ ist False."
msgid "Directory indexes are not allowed here."
msgstr "Dateilisten sind untersagt."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "„%(path)s“ ist nicht vorhanden"
#, python-format
msgid "Index of %(directory)s"
@@ -1248,7 +1287,7 @@ msgid "Django Documentation"
msgstr "Django-Dokumentation"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Themen, Referenz, & Kurzanleitungen"
msgid "Tutorial: A Polling App"
msgstr "Tutorial: Eine Umfrage-App"
diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo
index bc326c0b95bf..4db6a2b78c0e 100644
Binary files a/django/conf/locale/es/LC_MESSAGES/django.mo and b/django/conf/locale/es/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/es/LC_MESSAGES/django.po b/django/conf/locale/es/LC_MESSAGES/django.po
index 93202e1421dc..d46654411886 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.po
+++ b/django/conf/locale/es/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Abraham Estrada, 2013
+# Abe Estrada, 2013
# albertoalcolea , 2014
# Amanda Copete, 2017
# Antoni Aloy , 2011-2014,2017,2019
@@ -9,7 +9,8 @@
# Diego Schulz , 2012
# Ernesto Avilés, 2015-2016
# Ernesto Avilés, 2014
-# Ernesto Rico-Schmidt , 2017
+# Ernesto Avilés, 2020
+# Ernesto Rico Schmidt , 2017
# franchukelly , 2011
# Ignacio José Lizarán Rus , 2019
# Igor Támara , 2015
@@ -30,8 +31,8 @@ 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"
+"PO-Revision-Date: 2020-01-08 08:24+0000\n"
+"Last-Translator: Ernesto Avilés\n"
"Language-Team: Spanish (http://www.transifex.com/django/django/language/"
"es/)\n"
"MIME-Version: 1.0\n"
@@ -350,6 +351,8 @@ msgstr "Introduzca una dirección de correo electrónico válida."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Introduzca un 'slug' válido, consistente en letras, números, guiones bajos o "
+"medios."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
diff --git a/django/conf/locale/es_MX/LC_MESSAGES/django.mo b/django/conf/locale/es_MX/LC_MESSAGES/django.mo
index aeebdf3a5fbf..497ca815c9c4 100644
Binary files a/django/conf/locale/es_MX/LC_MESSAGES/django.mo and b/django/conf/locale/es_MX/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/es_MX/LC_MESSAGES/django.po b/django/conf/locale/es_MX/LC_MESSAGES/django.po
index 2c3e72c3b1e1..671b67abf432 100644
--- a/django/conf/locale/es_MX/LC_MESSAGES/django.po
+++ b/django/conf/locale/es_MX/LC_MESSAGES/django.po
@@ -1,15 +1,16 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Abraham Estrada, 2011-2013
+# Abe Estrada, 2011-2013
+# Jesús Bautista , 2019-2020
# zodman , 2011
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"
+"PO-Revision-Date: 2020-01-13 02:18+0000\n"
+"Last-Translator: Jesús Bautista \n"
"Language-Team: Spanish (Mexico) (http://www.transifex.com/django/django/"
"language/es_MX/)\n"
"MIME-Version: 1.0\n"
@@ -85,7 +86,7 @@ msgid "Argentinian Spanish"
msgstr "Español de Argentina"
msgid "Colombian Spanish"
-msgstr ""
+msgstr "Español Colombiano"
msgid "Mexican Spanish"
msgstr "Español de México"
@@ -292,13 +293,13 @@ msgid "Traditional Chinese"
msgstr "Chino tradicional"
msgid "Messages"
-msgstr ""
+msgstr "Mensajes"
msgid "Site Maps"
msgstr ""
msgid "Static Files"
-msgstr ""
+msgstr "Archivos Estáticos"
msgid "Syndication"
msgstr ""
@@ -319,7 +320,7 @@ msgid "Enter a valid URL."
msgstr "Ingrese una URL válida."
msgid "Enter a valid integer."
-msgstr ""
+msgstr "Ingrese un entero válido."
msgid "Enter a valid email address."
msgstr "Introduzca una dirección de correo electrónico válida."
@@ -508,7 +509,7 @@ msgid ""
msgstr ""
msgid "Duration"
-msgstr ""
+msgstr "Duración"
msgid "Email address"
msgstr "Dirección de correo electrónico"
@@ -518,7 +519,7 @@ msgstr "Ruta de archivo"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "El valor \"%(value)s\" debe ser flotante."
msgid "Floating point number"
msgstr "Número de punto flotante"
@@ -682,7 +683,7 @@ msgid "Enter a list of values."
msgstr "Introduzca una lista de valores."
msgid "Enter a complete value."
-msgstr ""
+msgstr "Ingrese un valor completo."
msgid "Enter a valid UUID."
msgstr ""
@@ -773,13 +774,13 @@ msgid "No"
msgstr "No"
msgid "Year"
-msgstr ""
+msgstr "Año"
msgid "Month"
-msgstr ""
+msgstr "Mes"
msgid "Day"
-msgstr ""
+msgstr "Día"
msgid "yes,no,maybe"
msgstr "sí, no, tal vez"
@@ -1039,7 +1040,7 @@ msgid "December"
msgstr "Diciembre"
msgid "This is not a valid IPv6 address."
-msgstr ""
+msgstr "Esta no es una dirección IPv6 válida."
#, python-format
msgctxt "String to return when truncating text"
@@ -1093,7 +1094,7 @@ msgid "0 minutes"
msgstr "0 minutos"
msgid "Forbidden"
-msgstr ""
+msgstr "Prohibido"
msgid "CSRF verification failed. Request aborted."
msgstr ""
@@ -1137,7 +1138,7 @@ msgid "No year specified"
msgstr "No se ha especificado el valor año"
msgid "Date out of range"
-msgstr ""
+msgstr "Fecha fuera de rango"
msgid "No month specified"
msgstr "No se ha especificado el valor mes"
@@ -1211,7 +1212,7 @@ msgid ""
msgstr ""
msgid "Django Documentation"
-msgstr ""
+msgstr "Documentación de Django"
msgid "Topics, references, & how-to’s"
msgstr ""
diff --git a/django/conf/locale/et/LC_MESSAGES/django.mo b/django/conf/locale/et/LC_MESSAGES/django.mo
index 789f0903d214..91b5e24393f4 100644
Binary files a/django/conf/locale/et/LC_MESSAGES/django.mo and b/django/conf/locale/et/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/et/LC_MESSAGES/django.po b/django/conf/locale/et/LC_MESSAGES/django.po
index 616852a8bfee..d934fd91159e 100644
--- a/django/conf/locale/et/LC_MESSAGES/django.po
+++ b/django/conf/locale/et/LC_MESSAGES/django.po
@@ -8,13 +8,14 @@
# Martin Pajuste , 2014-2015
# Martin Pajuste , 2016-2017,2019
# Marti Raudsepp , 2014,2016
+# Ragnar Rebase , 2019
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"
+"PO-Revision-Date: 2019-12-28 02:29+0000\n"
+"Last-Translator: Ragnar Rebase \n"
"Language-Team: Estonian (http://www.transifex.com/django/django/language/"
"et/)\n"
"MIME-Version: 1.0\n"
@@ -168,7 +169,7 @@ msgid "Georgian"
msgstr "gruusia"
msgid "Kabyle"
-msgstr ""
+msgstr "Kabiili"
msgid "Kazakh"
msgstr "kasahhi"
@@ -285,7 +286,7 @@ msgid "Urdu"
msgstr "urdu"
msgid "Uzbek"
-msgstr ""
+msgstr "Usbeki"
msgid "Vietnamese"
msgstr "vietnami"
@@ -333,11 +334,15 @@ msgstr "Sisestage korrektne e-posti aadress."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Sisestage korrektne “nälk”, mis koosneb tähtedest, numbritest, "
+"alakriipsudest või sidekriipsudest."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Sisestage korrektne “nälk”, mis koosneb Unicode tähtedest, numbritest, ala- "
+"või sidekriipsudest."
msgid "Enter a valid IPv4 address."
msgstr "Sisestage korrektne IPv4 aadress."
@@ -421,6 +426,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"Faililaiend “%(extension)s” pole lubatud. Lubatud laiendid on: "
+"%(allowed_extensions)s."
msgid "Null characters are not allowed."
msgstr "Tühjad tähemärgid ei ole lubatud."
@@ -461,11 +468,11 @@ msgstr "Lahter tüüpi: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "“%(value)s” väärtus peab olema Tõene või Väär."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "“%(value)s” väärtus peab olema Tõene, Väär või Tühi."
msgid "Boolean (Either True or False)"
msgstr "Tõeväärtus (Kas tõene või väär)"
@@ -482,12 +489,15 @@ msgid ""
"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
"format."
msgstr ""
+"“%(value)s” väärtusel on vale kuupäevaformaat. See peab olema kujul AAAA-KK-"
+"PP."
#, python-format
msgid ""
"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
"date."
msgstr ""
+"“%(value)s” väärtusel on õige formaat (AAAA-KK-PP), kuid kuupäev on vale."
msgid "Date (without time)"
msgstr "Kuupäev (kellaajata)"
@@ -497,19 +507,23 @@ 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äärtusel on vale formaat. Peab olema formaadis AAAA-KK-PP 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äärtusel on õige formaat (AAAA-KK-PP HH:MM[:ss[.uuuuuu]][TZ]), "
+"kuid kuupäev/kellaaeg on vale."
msgid "Date (with time)"
msgstr "Kuupäev (kellaajaga)"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "“%(value)s” väärtus peab olema kümnendarv."
msgid "Decimal number"
msgstr "Kümnendmurd"
@@ -519,6 +533,8 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
msgstr ""
+"“%(value)s” väärtusel on vale formaat. Peab olema formaadis [DD] "
+"[[HH:]MM:]ss[.uuuuuu]."
msgid "Duration"
msgstr "Kestus"
@@ -531,14 +547,14 @@ msgstr "Faili asukoht"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "“%(value)s” väärtus peab olema ujukomaarv."
msgid "Floating point number"
msgstr "Ujukomaarv"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "“%(value)s” väärtus peab olema täisarv."
msgid "Integer"
msgstr "Täisarv"
@@ -554,7 +570,7 @@ msgstr "IP aadress"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "“%(value)s” väärtus peab olema kas Tühi, Tõene või Väär."
msgid "Boolean (Either True, False or None)"
msgstr "Tõeväärtus (Kas tõene, väär või tühi)"
@@ -580,12 +596,16 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
msgstr ""
+"“%(value)s” väärtusel on vale formaat. Peab olema formaadis 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äärtusel on õige formaat (HH:MM[:ss[.uuuuuu]]), kuid kellaaeg "
+"on vale."
msgid "Time"
msgstr "Aeg"
@@ -598,10 +618,10 @@ msgstr "Töötlemata binaarandmed"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "“%(value)s” ei ole korrektne UUID."
msgid "Universally unique identifier"
-msgstr ""
+msgstr "Universaalne unikaalne identifikaator"
msgid "File"
msgstr "Fail"
@@ -758,13 +778,15 @@ msgstr "Valige korrektne väärtus. Valitud väärtus ei ole valitav."
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "“%(pk)s” ei ole korrektne väärtus."
#, python-format
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 ei saanud tõlgendada ajavööndis %(current_timezone)s; see on "
+"kas mitmetähenduslik või seda ei eksisteeri."
msgid "Clear"
msgstr "Tühjenda"
@@ -785,13 +807,13 @@ msgid "No"
msgstr "Ei"
msgid "Year"
-msgstr ""
+msgstr "Aasta"
msgid "Month"
-msgstr ""
+msgstr "Kuu"
msgid "Day"
-msgstr ""
+msgstr "Päev"
msgid "yes,no,maybe"
msgstr "jah,ei,võib-olla"
@@ -1056,7 +1078,7 @@ msgstr "See ei ole korrektne IPv6 aadress."
#, python-format
msgctxt "String to return when truncating text"
msgid "%(truncated_text)s…"
-msgstr ""
+msgstr "%(truncated_text)s…"
msgid "or"
msgstr "või"
@@ -1116,12 +1138,19 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Näete seda sõnumit, kuna käesolev HTTPS leht nõuab “Viitaja päise” saatmist "
+"teie brauserile, kuid seda ei saadetud. Seda päist on vaja "
+"turvakaalutlustel, kindlustamaks et teie brauserit ei ole kolmandate "
+"osapoolte poolt üle võetud."
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 ""
+"Kui olete oma brauseri seadistustes välja lülitanud “Viitaja” päised siis "
+"lülitage need taas sisse vähemalt antud lehe jaoks või HTTPS üheduste jaoks "
+"või “sama-allika” päringute jaoks."
msgid ""
"If you are using the tag or "
@@ -1130,6 +1159,11 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Kui kasutate silti või "
+"saadate päist “Referrer-Policy: no-referrer”, siis palun eemaldage need. "
+"CSRF kaitse vajab range viitaja kontrolliks päist “Referer”. Kui privaatsus "
+"on probleemiks, kasutage alternatiive nagu "
+"linkidele, mis viivad kolmandate poolte lehtedele."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1144,6 +1178,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 ""
+"Kui olete oma brauseris küpsised keelanud, siis palun lubage need vähemalt "
+"selle lehe jaoks või “sama-allika” päringute jaoks."
msgid "More information is available with DEBUG=True."
msgstr "Saadaval on rohkem infot kasutades DEBUG=True"
@@ -1152,7 +1188,7 @@ msgid "No year specified"
msgstr "Aasta on valimata"
msgid "Date out of range"
-msgstr ""
+msgstr "Kuupäev vahemikust väljas"
msgid "No month specified"
msgstr "Kuu on valimata"
@@ -1177,14 +1213,14 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr ""
+msgstr "Vigane kuupäeva sõne “%(datestr)s” lähtudes formaadist “%(format)s”"
#, python-format
msgid "No %(verbose_name)s found matching the query"
msgstr "Päringule vastavat %(verbose_name)s ei leitud"
msgid "Page is not “last”, nor can it be converted to an int."
-msgstr ""
+msgstr "Lehekülg pole “viimane” ja ei saa teda konvertida täisarvuks."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1192,30 +1228,32 @@ msgstr "Vigane leht (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Tühi list ja “%(class_name)s.allow_empty” on Väär."
msgid "Directory indexes are not allowed here."
msgstr "Kausta sisuloendid ei ole siin lubatud."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "“%(path)s” ei eksisteeri"
#, python-format
msgid "Index of %(directory)s"
msgstr "%(directory)s sisuloend"
msgid "Django: the Web framework for perfectionists with deadlines."
-msgstr ""
+msgstr "Django: Veebiraamistik tähtaegadega perfektsionistidele."
#, python-format
msgid ""
"View release notes for Django %(version)s"
msgstr ""
+"Vaata release notes Djangole %(version)s"
msgid "The install worked successfully! Congratulations!"
-msgstr ""
+msgstr "Paigaldamine õnnestus! Palju õnne!"
#, python-format
msgid ""
@@ -1232,16 +1270,16 @@ msgid "Django Documentation"
msgstr "Django dokumentatsioon"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Teemad, viited, & õpetused"
msgid "Tutorial: A Polling App"
-msgstr ""
+msgstr "Õpetus: Küsitlusrakendus"
msgid "Get started with Django"
-msgstr ""
+msgstr "Alusta Djangoga"
msgid "Django Community"
-msgstr ""
+msgstr "Django Kogukond"
msgid "Connect, get help, or contribute"
-msgstr ""
+msgstr "Suhelge, küsige abi või panustage"
diff --git a/django/conf/locale/fi/LC_MESSAGES/django.mo b/django/conf/locale/fi/LC_MESSAGES/django.mo
index 06ab8e83e5d6..259e1d2792b0 100644
Binary files a/django/conf/locale/fi/LC_MESSAGES/django.mo and b/django/conf/locale/fi/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/fi/LC_MESSAGES/django.po b/django/conf/locale/fi/LC_MESSAGES/django.po
index fd2e7967f884..c84aee9fbb4f 100644
--- a/django/conf/locale/fi/LC_MESSAGES/django.po
+++ b/django/conf/locale/fi/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Aarni Koskela, 2015,2017-2018
+# Aarni Koskela, 2015,2017-2018,2020
# Antti Kaihola , 2011
# Jannis Leidel , 2011
# Lasse Liehu , 2015
@@ -12,8 +12,8 @@ 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"
+"PO-Revision-Date: 2020-01-21 09:38+0000\n"
+"Last-Translator: Aarni Koskela\n"
"Language-Team: Finnish (http://www.transifex.com/django/django/language/"
"fi/)\n"
"MIME-Version: 1.0\n"
@@ -143,7 +143,7 @@ msgid "Hungarian"
msgstr "unkari"
msgid "Armenian"
-msgstr ""
+msgstr "armenian kieli"
msgid "Interlingua"
msgstr "interlingua"
@@ -284,7 +284,7 @@ msgid "Urdu"
msgstr "urdu"
msgid "Uzbek"
-msgstr ""
+msgstr "uzbekki"
msgid "Vietnamese"
msgstr "vietnam"
@@ -332,11 +332,15 @@ msgstr "Syötä kelvollinen sähköpostiosoite."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Tässä voidaan käyttää vain kirjaimia, numeroita sekä ala- ja tavuviivoja (_ "
+"-)."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Tässä voidaan käyttää vain Unicode-kirjaimia, numeroita sekä ala- ja "
+"tavuviivoja."
msgid "Enter a valid IPv4 address."
msgstr "Syötä kelvollinen IPv4-osoite."
@@ -420,6 +424,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"Pääte \"%(extension)s\" ei ole sallittu. Sallittuja päätteitä ovat "
+"\"%(allowed_extensions)s\"."
msgid "Null characters are not allowed."
msgstr "Tyhjiä merkkejä (null) ei sallita."
@@ -460,11 +466,11 @@ msgstr "Kenttä tyyppiä: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "%(value)s-arvo pitää olla joko tosi tai epätosi."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "%(value)s-arvo pitää olla joko tosi, epätosi tai ei mitään."
msgid "Boolean (Either True or False)"
msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)"
@@ -481,12 +487,16 @@ msgid ""
"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
"format."
msgstr ""
+"%(value)s-arvo on väärässä päivämäärämuodossa. Sen tulee olla VVVV-KK-PP -"
+"muodossa."
#, python-format
msgid ""
"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
"date."
msgstr ""
+"%(value)s-arvo on oikeassa päivämäärämuodossa (VVVV-KK-PP), muttei ole "
+"kelvollinen päivämäärä."
msgid "Date (without time)"
msgstr "Päivämäärä (ilman kellonaikaa)"
@@ -496,19 +506,23 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
"uuuuuu]][TZ] format."
msgstr ""
+"%(value)s-arvon muoto ei kelpaa. Se tulee olla VVVV-KK-PP TT:MM[:ss[.uuuuuu]]"
+"[TZ] -muodossa."
#, 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-arvon muoto on oikea (VVVV-KK-PP TT:MM[:ss[.uuuuuu]][TZ]), mutta "
+"päivämäärä/aika ei ole kelvollinen."
msgid "Date (with time)"
msgstr "Päivämäärä ja kellonaika"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "%(value)s-arvo tulee olla desimaaliluku."
msgid "Decimal number"
msgstr "Desimaaliluku"
@@ -517,7 +531,7 @@ msgstr "Desimaaliluku"
msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
-msgstr ""
+msgstr "%(value)s-arvo pitää olla muodossa [PP] TT:MM[:ss[.uuuuuu]]."
msgid "Duration"
msgstr "Kesto"
@@ -530,14 +544,14 @@ msgstr "Tiedostopolku"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "%(value)s-arvo tulee olla liukuluku."
msgid "Floating point number"
msgstr "Liukuluku"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "%(value)s-arvo tulee olla kokonaisluku."
msgid "Integer"
msgstr "Kokonaisluku"
@@ -553,7 +567,7 @@ msgstr "IP-osoite"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "%(value)s-arvo tulee olla joko ei mitään, tosi tai epätosi."
msgid "Boolean (Either True, False or None)"
msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)"
@@ -578,13 +592,15 @@ msgstr "Tekstiä"
msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
-msgstr ""
+msgstr "%(value)s-arvo pitää olla muodossa TT: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-arvo on oikeassa muodossa (TT:MM[:ss[.uuuuuu]]), mutta kellonaika "
+"ei kelpaa."
msgid "Time"
msgstr "Kellonaika"
@@ -597,10 +613,10 @@ msgstr "Raaka binaaridata"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "%(value)s ei ole kelvollinen UUID."
msgid "Universally unique identifier"
-msgstr ""
+msgstr "UUID-tunnus"
msgid "File"
msgstr "Tiedosto"
@@ -755,13 +771,15 @@ msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta."
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "\"%(pk)s\" ei ole kelvollinen arvo."
#, python-format
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 -arvoa ei pystytty lukemaan aikavyöhykkeellä "
+"%(current_timezone)s; se saattaa olla moniarvoinen tai määrittämätön."
msgid "Clear"
msgstr "Poista"
@@ -782,13 +800,13 @@ msgid "No"
msgstr "Ei"
msgid "Year"
-msgstr ""
+msgstr "Vuosi"
msgid "Month"
-msgstr ""
+msgstr "Kuukausi"
msgid "Day"
-msgstr ""
+msgstr "Päivä"
msgid "yes,no,maybe"
msgstr "kyllä,ei,ehkä"
@@ -1053,7 +1071,7 @@ msgstr "Tämä ei ole kelvollinen IPv6-osoite."
#, python-format
msgctxt "String to return when truncating text"
msgid "%(truncated_text)s…"
-msgstr ""
+msgstr "%(truncated_text)s…"
msgid "or"
msgstr "tai"
@@ -1113,12 +1131,19 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Näet tämän viestin, koska tämä HTTPS-sivusto vaatii selaintasi lähettämään "
+"Referer-otsakkeen, mutta sitä ei vastaanotettu. Otsake vaaditaan "
+"turvallisuussyistä, varmistamaan etteivät kolmannet osapuolet ole ottaneet "
+"selaintasi haltuun."
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 ""
+"Jos olet konfiguroinut selaimesi olemaan lähettämättä Referer-otsaketta, ole "
+"hyvä ja kytke otsake takaisin päälle ainakin tälle sivulle, HTTPS-"
+"yhteyksille tai saman lähteen (\"same-origin\") pyynnöille."
msgid ""
"If you are using the tag or "
@@ -1127,6 +1152,11 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Jos käytät -tagia tai "
+"\"Referrer-Policy: no-referrer\" -otsaketta, ole hyvä ja poista ne. CSRF-"
+"suojaus vaatii Referer-otsakkeen tehdäkseen tarkan referer-tarkistuksen. Jos "
+"vaadit yksityisyyttä, käytä vaihtoehtoja kuten linkittääksesi kolmannen osapuolen sivuille."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1141,6 +1171,9 @@ 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 ""
+"Jos olet konfiguroinut selaimesi olemaan vastaanottamatta tai lähettämättä "
+"evästeitä, ole hyvä ja kytke evästeet takaisin päälle ainakin tälle sivulle "
+"tai saman lähteen (\"same-origin\") pyynnöille."
msgid "More information is available with DEBUG=True."
msgstr "Lisätietoja `DEBUG=True`-konfiguraatioasetuksella."
@@ -1174,14 +1207,14 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr ""
+msgstr "Päivämäärä '%(datestr)s' ei ole muotoa '%(format)s'"
#, python-format
msgid "No %(verbose_name)s found matching the query"
msgstr "Hakua vastaavaa %(verbose_name)s -kohdetta ei löytynyt"
msgid "Page is not “last”, nor can it be converted to an int."
-msgstr ""
+msgstr "Sivunumero ei ole 'last' (viimeinen) eikä näytä luvulta."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1189,14 +1222,14 @@ msgstr "Epäkelpo sivu (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Lista on tyhjä, ja '%(class_name)s.allow_empty':n arvo on False."
msgid "Directory indexes are not allowed here."
msgstr "Hakemistolistauksia ei sallita täällä."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "\"%(path)s\" ei ole olemassa"
#, python-format
msgid "Index of %(directory)s"
@@ -1231,7 +1264,7 @@ msgid "Django Documentation"
msgstr "Django-dokumentaatio"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Aiheet, viittaukset & how-tot"
msgid "Tutorial: A Polling App"
msgstr "Tutoriaali: kyselyapplikaatio"
diff --git a/django/conf/locale/gd/LC_MESSAGES/django.mo b/django/conf/locale/gd/LC_MESSAGES/django.mo
index 225a7b6b8393..8497b252cced 100644
Binary files a/django/conf/locale/gd/LC_MESSAGES/django.mo and b/django/conf/locale/gd/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/gd/LC_MESSAGES/django.po b/django/conf/locale/gd/LC_MESSAGES/django.po
index a41b191d269c..2b8feebf26e7 100644
--- a/django/conf/locale/gd/LC_MESSAGES/django.po
+++ b/django/conf/locale/gd/LC_MESSAGES/django.po
@@ -11,8 +11,8 @@ 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"
+"PO-Revision-Date: 2019-12-13 12:46+0000\n"
+"Last-Translator: GunChleoc\n"
"Language-Team: Gaelic, Scottish (http://www.transifex.com/django/django/"
"language/gd/)\n"
"MIME-Version: 1.0\n"
@@ -143,7 +143,7 @@ msgid "Hungarian"
msgstr "Ungairis"
msgid "Armenian"
-msgstr ""
+msgstr "Airmeinis"
msgid "Interlingua"
msgstr "Interlingua"
@@ -284,7 +284,7 @@ msgid "Urdu"
msgstr "Ùrdu"
msgid "Uzbek"
-msgstr ""
+msgstr "Usbagais"
msgid "Vietnamese"
msgstr "Bhiet-Namais"
@@ -332,11 +332,15 @@ msgstr "Cuir a-steach seòladh puist-d dligheach."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Cuir a-steach “sluga” dligheach anns nach eil ach litrichean, àireamhan, fo-"
+"loidhnichean is tàthanan."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Cuir a-steach “sluga” dligheach anns nach eil ach litrichean Unicode, "
+"àireamhan, fo-loidhnichean is tàthanan."
msgid "Enter a valid IPv4 address."
msgstr "Cuir a-steach seòladh IPv4 dligheach."
@@ -454,6 +458,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"Chan eil an leudachan faidhle “%(extension)s” ceadaichte. Seo na leudachain "
+"a tha ceadaichte: %(allowed_extensions)s."
msgid "Null characters are not allowed."
msgstr "Chan eil caractaran null ceadaichte."
@@ -494,11 +500,11 @@ msgstr "Raon dhen t-seòrsa: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "Feumaidh “%(value)s” a bhith True no False."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "Feumaidh “%(value)s” a bhith True, False no None."
msgid "Boolean (Either True or False)"
msgstr "Booleach (True no False)"
@@ -515,12 +521,16 @@ msgid ""
"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
"format."
msgstr ""
+"Tha fòrmat cinn-là mì-dhligheach aig an luach “%(value)s”. Feumaidh e bhith "
+"san fhòrmat BBBB-MM-LL."
#, python-format
msgid ""
"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
"date."
msgstr ""
+"Tha fòrmat mar bu chòir (BBBB-MM-LL) aig an luach “%(value)s” ach tha an "
+"ceann-là mì-dligheach."
msgid "Date (without time)"
msgstr "Ceann-là (gun àm)"
@@ -530,19 +540,23 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
"uuuuuu]][TZ] format."
msgstr ""
+"Tha fòrmat mì-dhligheach aig an luach “%(value)s”. Feumaidh e bhith san "
+"fhòrmat BBBB-MM-LL HH:MM[:dd[.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 ""
+"Tha fòrmat mar bu chòir (BBBB-MM-LL HH:MM[:dd[.uuuuuu]][TZ]) aig an luach "
+"“%(value)s” ach tha an ceann-là/an t-àm mì-dligheach."
msgid "Date (with time)"
msgstr "Ceann-là (le àm)"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "Feumaidh “%(value)s” a bhith ’na àireamh dheicheach."
msgid "Decimal number"
msgstr "Àireamh dheicheach"
@@ -552,6 +566,8 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
msgstr ""
+"Tha fòrmat mì-dhligheach aig an luach “%(value)s”. Feumaidh e bhith san "
+"fhòrmat [DD] [[HH:]MM:]ss[.uuuuuu]."
msgid "Duration"
msgstr "Faid"
@@ -564,14 +580,14 @@ msgstr "Slighe an fhaidhle"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "Feumaidh “%(value)s” a bhith ’na àireamh floda."
msgid "Floating point number"
-msgstr "Àireamh le puing floid."
+msgstr "Àireamh le puing floda"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "Feumaidh “%(value)s” a bhith ’na àireamh shlàn."
msgid "Integer"
msgstr "Àireamh shlàn"
@@ -587,7 +603,7 @@ msgstr "Seòladh IP"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "Feumaidh “%(value)s” a bhith None, True no False."
msgid "Boolean (Either True, False or None)"
msgstr "Booleach (True, False no None)"
@@ -613,12 +629,16 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
msgstr ""
+"Tha fòrmat mì-dhligheach aig an luach “%(value)s”. Feumaidh e bhith san "
+"fhòrmat HH:MM[:dd[.uuuuuu]]."
#, python-format
msgid ""
"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
"invalid time."
msgstr ""
+"Tha fòrmat mar bu chòir (HH:MM[:dd[.uuuuuu]]) aig an luach “%(value)s” ach "
+"tha an t-àm mì-dligheach."
msgid "Time"
msgstr "Àm"
@@ -631,10 +651,10 @@ msgstr "Dàta bìnearaidh amh"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "Chan eil “%(value)s” ’na UUID dligheach."
msgid "Universally unique identifier"
-msgstr ""
+msgstr "Aithnichear àraidh gu h-uile-choitcheann"
msgid "File"
msgstr "Faidhle"
@@ -647,9 +667,7 @@ msgid "%(model)s instance with %(field)s %(value)r does not exist."
msgstr "Chan eil ionstans dhe %(model)s le %(field)s %(value)r ann."
msgid "Foreign Key (type determined by related field)"
-msgstr ""
-" \t\n"
-"Iuchair chèin (thèid a sheòrsa a mhìneachadh leis an raon dàimheach)"
+msgstr "Iuchair chèin (thèid a sheòrsa a mhìneachadh leis an raon dàimheach)"
msgid "One-to-one relationship"
msgstr "Dàimh aonan gu aonan"
@@ -810,13 +828,15 @@ msgstr "Tagh rud dligheach. Chan eil an rud seo ’na roghainn dhut."
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "Chan e luach dligheach a tha ann an “%(pk)s”."
#, python-format
msgid ""
"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it "
"may be ambiguous or it may not exist."
msgstr ""
+"Cha chiall dha %(datetime)s san roinn-tìde %(current_timezone)s; dh’fhaoidte "
+"gu bheil e dà-sheaghach no nach eil e ann."
msgid "Clear"
msgstr "Falamhaich"
@@ -837,13 +857,13 @@ msgid "No"
msgstr "Chan eil"
msgid "Year"
-msgstr ""
+msgstr "Bliadhna"
msgid "Month"
-msgstr ""
+msgstr "Mìos"
msgid "Day"
-msgstr ""
+msgstr "Latha"
msgid "yes,no,maybe"
msgstr "yes,no,maybe"
@@ -1110,7 +1130,7 @@ msgstr "Chan eil seo ’na sheòladh IPv6 dligheach."
#, python-format
msgctxt "String to return when truncating text"
msgid "%(truncated_text)s…"
-msgstr ""
+msgstr "%(truncated_text)s…"
msgid "or"
msgstr "no"
@@ -1182,12 +1202,20 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Chì thu an teachdaireachd seo air sgàth ’s gu bheil an làrach-lìn HTTPS seo "
+"ag iarraidh air a’ bhrabhsair-lìn agad gun cuir e bann-cinn “Referer” thuice "
+"ach cha deach gin a chur a-null. Tha feum air a’ bhann-chinn seo a chum "
+"tèarainteachd ach nach cleachd treas-phàrtaidh am brabhsair agad gu droch-"
+"rùnach."
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 ""
+"Ma rèitich thu am brabhsair agad ach an cuir e bannan-cinn “Referer” à "
+"comas, cuir an comas iad a-rithist, co-dhiù airson na làraich seo no airson "
+"ceanglaichean HTTPS no airson iarrtasan “same-origin”."
msgid ""
"If you are using the tag or "
@@ -1196,6 +1224,12 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Ma tha thu a’ cleachdadh taga no a’ gabhail a-staigh bann-cinn “'Referrer-Policy: no-referrer” feuch "
+"an doir thu air falbh iad. Iarraidh an dìon CSRF bann-cinn “Referer” gus na "
+"referers a dhearbhadh gu teann. Ma tha thu iomagaineach a thaobh do "
+"prìobhaideachd, cleachd roghainnean eile mar airson "
+"ceangal gu làraichean-lìn threas-phàrtaidhean."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1211,6 +1245,9 @@ 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 ""
+"Ma rèitich thu am brabhsair agad ach an cuir e briosgaidean à comas, cuir an "
+"comas iad a-rithist, co-dhiù airson na làraich seo no airson iarrtasan “same-"
+"origin”."
msgid "More information is available with DEBUG=True."
msgstr "Gheibh thu barrachd fiosrachaidh le DEBUG=True."
@@ -1245,6 +1282,7 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
msgstr ""
+"Sreang cinn-là “%(datestr)s” mì-dhligheach airson an fhòrmait “%(format)s”"
#, python-format
msgid "No %(verbose_name)s found matching the query"
@@ -1252,6 +1290,7 @@ msgstr "Cha deach %(verbose_name)s a lorg a fhreagras dhan cheist"
msgid "Page is not “last”, nor can it be converted to an int."
msgstr ""
+"Chan eil an duilleag ’na “last” is cha ghabh a h-iompachadh gu àireamh shlàn."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1260,13 +1299,15 @@ msgstr "Duilleag mhì-dhligheach (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
msgstr ""
+"Tha liosta fhalamh ann agus chaidh “%(class_name)s.allow_empty” a "
+"shuidheachadh air False."
msgid "Directory indexes are not allowed here."
msgstr "Chan eil clàran-amais pasgain falamh ceadaichte an-seo."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "Chan eil “%(path)s” ann"
#, python-format
msgid "Index of %(directory)s"
@@ -1303,7 +1344,7 @@ msgid "Django Documentation"
msgstr "Docamaideadh Django"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Cuspairean, iomraidhean ⁊ treòraichean"
msgid "Tutorial: A Polling App"
msgstr "Oideachadh: Aplacaid cunntais-bheachd"
diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo
index 456dcd283eee..007e72f6c09f 100644
Binary files a/django/conf/locale/he/LC_MESSAGES/django.mo and b/django/conf/locale/he/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/he/LC_MESSAGES/django.po b/django/conf/locale/he/LC_MESSAGES/django.po
index 8f544f017b8d..a9aed4a8194f 100644
--- a/django/conf/locale/he/LC_MESSAGES/django.po
+++ b/django/conf/locale/he/LC_MESSAGES/django.po
@@ -4,13 +4,14 @@
# Alex Gaynor , 2011-2012
# Jannis Leidel , 2011
# Meir Kriheli , 2011-2015,2017,2019
+# אורי רודברג , 2020
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"
+"PO-Revision-Date: 2020-01-19 11:47+0000\n"
+"Last-Translator: אורי רודברג \n"
"Language-Team: Hebrew (http://www.transifex.com/django/django/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -541,7 +542,7 @@ msgstr "מספר עשרוני"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "הערך '%(value)s' חייב להיות מספר שלם."
msgid "Integer"
msgstr "מספר שלם"
@@ -763,7 +764,7 @@ msgstr "יש לבחור אפשרות חוקית; אפשרות זו אינה אח
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "\"%(pk)s\" אינו ערך חוקי."
#, python-format
msgid ""
diff --git a/django/conf/locale/nb/LC_MESSAGES/django.mo b/django/conf/locale/nb/LC_MESSAGES/django.mo
index e3e4a69a22ad..7f721bcefa77 100644
Binary files a/django/conf/locale/nb/LC_MESSAGES/django.mo and b/django/conf/locale/nb/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/nb/LC_MESSAGES/django.po b/django/conf/locale/nb/LC_MESSAGES/django.po
index e880451d6395..0010309bc634 100644
--- a/django/conf/locale/nb/LC_MESSAGES/django.po
+++ b/django/conf/locale/nb/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@
# jensadne , 2014-2015
# Jon , 2015-2016
# Jon , 2014
-# Jon , 2017-2019
+# Jon , 2017-2020
# Jon , 2013
# Jon , 2011
# Sigurd Gartmann , 2012
@@ -17,8 +17,8 @@ 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"
+"PO-Revision-Date: 2020-01-21 12:28+0000\n"
+"Last-Translator: Jon \n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/"
"language/nb/)\n"
"MIME-Version: 1.0\n"
@@ -289,7 +289,7 @@ msgid "Urdu"
msgstr "Urdu"
msgid "Uzbek"
-msgstr ""
+msgstr "Usbekisk"
msgid "Vietnamese"
msgstr "Vietnamesisk"
@@ -337,11 +337,15 @@ msgstr "Oppgi en gyldig e-postadresse"
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Oppgi en gyldig \"slug\" bestående av bokstaver, nummer, understreker eller "
+"bindestreker."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Oppgi en gyldig \"slug\" bestående av Unicode-bokstaver, nummer, "
+"understreker eller bindestreker."
msgid "Enter a valid IPv4 address."
msgstr "Oppgi en gyldig IPv4-adresse."
@@ -422,6 +426,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"Filendelsen \"%(extension)s\" er ikke tillatt. Tillatte filendelser er: "
+"%(allowed_extensions)s."
msgid "Null characters are not allowed."
msgstr "Null-tegn er ikke tillatt."
@@ -460,11 +466,11 @@ msgstr "Felt av typen: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "\"%(value)s\"-verdien må være enten True eller False."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "\"%(value)s\"-verdien må være enten True, False, eller None."
msgid "Boolean (Either True or False)"
msgstr "Boolsk (True eller False)"
@@ -481,12 +487,16 @@ msgid ""
"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
"format."
msgstr ""
+"\"%(value)s\"-verdien har et ugyldig datoformat. Det må være på formen 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\"-verdien er på den korrekte formen (YYYY-MM-DD), men det er en "
+"ugyldig dato."
msgid "Date (without time)"
msgstr "Dato (uten tid)"
@@ -496,19 +506,23 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
"uuuuuu]][TZ] format."
msgstr ""
+"\"%(value)s\"-verdien har et ugyldig datoformat. Det må være på formen 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\"-verdien er på den korrekte formen (YYYY-MM-DD HH:MM[:ss[."
+"uuuuuu]][TZ]), men er ugyldig dato/tid."
msgid "Date (with time)"
msgstr "Dato (med tid)"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "\"%(value)s\"-verdien må være et desimaltall."
msgid "Decimal number"
msgstr "Desimaltall"
@@ -518,6 +532,8 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
msgstr ""
+"\"%(value)s\"-verdien har et ugyldig format. Det må være på formen [DD] [HH:"
+"[MM:]]ss[.uuuuuu]."
msgid "Duration"
msgstr "Varighet"
@@ -530,14 +546,14 @@ msgstr "Filsti"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "Verdien \"%(value)s\" må være et flyttall."
msgid "Floating point number"
msgstr "Flyttall"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "\"%(value)s\"-verdien må være et heltall."
msgid "Integer"
msgstr "Heltall"
@@ -553,7 +569,7 @@ msgstr "IP-adresse"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "Verdien \"%(value)s\" må være enten None, True eller False."
msgid "Boolean (Either True, False or None)"
msgstr "Boolsk (True, False eller None)"
@@ -579,12 +595,16 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
msgstr ""
+"\"%(value)s\"-verdien har et ugyldig format. Det må være på formen 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 ""
+"Verdien \"%(value)s\" har riktig format (HH:MM[:ss[.uuuuuu]]), men er ikke "
+"et gyldig klokkeslett."
msgid "Time"
msgstr "Tid"
@@ -597,7 +617,7 @@ msgstr "Rå binærdata"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "\"%(value)s\" er ikke en gyldig UUID."
msgid "Universally unique identifier"
msgstr "Universelt unik identifikator"
@@ -753,13 +773,15 @@ msgstr "Velg et gyldig valg. Valget er ikke av de tilgjengelige valgene."
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "\"%(pk)s\" er ikke en gyldig verdi."
#, python-format
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 kunne ikke tolkes i tidssonen %(current_timezone)s, det kan "
+"være tvetydig eller ikke eksistere."
msgid "Clear"
msgstr "Fjern"
@@ -780,13 +802,13 @@ msgid "No"
msgstr "Nei"
msgid "Year"
-msgstr ""
+msgstr "År"
msgid "Month"
-msgstr ""
+msgstr "Måned"
msgid "Day"
-msgstr ""
+msgstr "Dag"
msgid "yes,no,maybe"
msgstr "ja,nei,kanskje"
@@ -1111,12 +1133,19 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Du ser denne meldingen fordi dette HTTPS-nettstedet krever en 'Referer'-"
+"header for å bli sendt av nettleseren, men ingen ble sendt. Denne headeren "
+"er nødvendig av sikkerhetsmessige årsaker, for å sikre at nettleseren din "
+"ikke blir kapret av tredjeparter."
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 ""
+"Hvis du har konfigurert nettleseren din til å deaktivere 'Referer'-headers, "
+"kan du aktivere dem, i hvert fall for dette nettstedet, eller for HTTPS-"
+"tilkoblinger, eller for 'same-origin'-forespørsler."
msgid ""
"If you are using the tag or "
@@ -1125,6 +1154,11 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Hvis du bruker -taggen eller "
+"inkluderer 'Referrer-Policy: no-referrer'-header, vennligst fjern dem. CSRF-"
+"beskyttelsen krever 'Referer'-headeren for å utføre streng kontroll av "
+"referanser. Hvis du er bekymret for personvern, bruk alternativer som for koblinger til tredjeparts nettsteder."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1140,6 +1174,9 @@ 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 ""
+"Hvis du har konfigurert nettleseren din til å deaktivere "
+"informasjonskapsler, kan du aktivere dem, i hvert fall for dette nettstedet, "
+"eller for 'same-origin'-forespørsler."
msgid "More information is available with DEBUG=True."
msgstr "Mer informasjon er tilgjengelig med DEBUG=True."
@@ -1173,14 +1210,14 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr ""
+msgstr "Ugyldig datostreng \"%(datestr)s\" gitt formatet \"%(format)s\""
#, python-format
msgid "No %(verbose_name)s found matching the query"
msgstr "Fant ingen %(verbose_name)s som passet spørringen"
msgid "Page is not “last”, nor can it be converted to an int."
-msgstr ""
+msgstr "Siden er ikke \"last\", og kan heller ikke konverteres til et heltall."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1188,14 +1225,14 @@ msgstr "Ugyldig side (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Tom liste og \"%(class_name)s.allow_empty\" er False."
msgid "Directory indexes are not allowed here."
msgstr "Mappeinnhold er ikke tillatt her."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "\"%(path)s\" finnes ikke"
#, python-format
msgid "Index of %(directory)s"
@@ -1232,7 +1269,7 @@ msgid "Django Documentation"
msgstr "Django-dokumentasjon"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Temaer, referanser & how-tos"
msgid "Tutorial: A Polling App"
msgstr "Tutorial: en polling-app"
diff --git a/django/conf/locale/ne/LC_MESSAGES/django.mo b/django/conf/locale/ne/LC_MESSAGES/django.mo
index 93f55366c80b..9d1ae0b33dab 100644
Binary files a/django/conf/locale/ne/LC_MESSAGES/django.mo and b/django/conf/locale/ne/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/ne/LC_MESSAGES/django.po b/django/conf/locale/ne/LC_MESSAGES/django.po
index 453700ff8e9f..33a5d2825d37 100644
--- a/django/conf/locale/ne/LC_MESSAGES/django.po
+++ b/django/conf/locale/ne/LC_MESSAGES/django.po
@@ -10,8 +10,8 @@ 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"
+"PO-Revision-Date: 2019-12-07 12:11+0000\n"
+"Last-Translator: Sagar Chalise \n"
"Language-Team: Nepali (http://www.transifex.com/django/django/language/ne/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -140,7 +140,7 @@ msgid "Hungarian"
msgstr "हन्गेरियन"
msgid "Armenian"
-msgstr ""
+msgstr "अर्मेनियन"
msgid "Interlingua"
msgstr "ईन्टरलिन्गुवा"
@@ -281,7 +281,7 @@ msgid "Urdu"
msgstr "उर्दु"
msgid "Uzbek"
-msgstr ""
+msgstr "उज्बेक"
msgid "Vietnamese"
msgstr "भियतनामी"
@@ -777,13 +777,13 @@ msgid "No"
msgstr "होइन"
msgid "Year"
-msgstr ""
+msgstr "वर्ष"
msgid "Month"
-msgstr ""
+msgstr "महिना"
msgid "Day"
-msgstr ""
+msgstr "दिन"
msgid "yes,no,maybe"
msgstr "हो, होइन, सायद"
@@ -1048,7 +1048,7 @@ msgstr "यो उपयुक्त IPv6 ठेगाना होइन ।"
#, python-format
msgctxt "String to return when truncating text"
msgid "%(truncated_text)s…"
-msgstr ""
+msgstr "%(truncated_text)s…"
msgid "or"
msgstr "अथवा"
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo
index d90e8973d1a5..502ffb84d649 100644
Binary files a/django/conf/locale/pl/LC_MESSAGES/django.mo and b/django/conf/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po
index c91658843326..bd13e2c6ce57 100644
--- a/django/conf/locale/pl/LC_MESSAGES/django.po
+++ b/django/conf/locale/pl/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@
#
# Translators:
# sidewinder , 2014
-# Adam Stachowicz , 2015
+# Saibamen , 2015
# angularcircle, 2011,2013
# angularcircle, 2011,2013
# angularcircle, 2014
@@ -14,7 +14,7 @@
# konryd , 2011
# konryd , 2011
# Łukasz Rekucki (lqc) , 2011
-# m_aciek , 2016-2019
+# m_aciek , 2016-2020
# m_aciek , 2015
# Michał Pasternak , 2013
# p , 2012
@@ -31,7 +31,7 @@ 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-06 19:58+0000\n"
+"PO-Revision-Date: 2020-01-01 22:45+0000\n"
"Last-Translator: m_aciek \n"
"Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n"
"MIME-Version: 1.0\n"
@@ -623,7 +623,7 @@ msgstr "Dodatnia mała liczba całkowita"
#, python-format
msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (max. %(max_length)s znaków)"
+msgstr "Slug (do %(max_length)s znaków)"
msgid "Small integer"
msgstr "Mała liczba całkowita"
diff --git a/django/conf/locale/sr/LC_MESSAGES/django.mo b/django/conf/locale/sr/LC_MESSAGES/django.mo
index 3b1a3c146ca1..0f05b624d086 100644
Binary files a/django/conf/locale/sr/LC_MESSAGES/django.mo and b/django/conf/locale/sr/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/sr/LC_MESSAGES/django.po b/django/conf/locale/sr/LC_MESSAGES/django.po
index 7d5bf31ddd94..617fbc43d730 100644
--- a/django/conf/locale/sr/LC_MESSAGES/django.po
+++ b/django/conf/locale/sr/LC_MESSAGES/django.po
@@ -1,8 +1,8 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Branko Kokanovic , 2018
-# Igor Jerosimić, 2019
+# Branko Kokanovic , 2018-2019
+# Igor Jerosimić, 2019-2020
# Jannis Leidel , 2011
# Janos Guljas , 2011-2012
msgid ""
@@ -10,8 +10,8 @@ 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"
+"PO-Revision-Date: 2020-01-21 20:36+0000\n"
+"Last-Translator: Igor Jerosimić\n"
"Language-Team: Serbian (http://www.transifex.com/django/django/language/"
"sr/)\n"
"MIME-Version: 1.0\n"
@@ -283,7 +283,7 @@ msgid "Urdu"
msgstr "урду"
msgid "Uzbek"
-msgstr ""
+msgstr "Узбекистански"
msgid "Vietnamese"
msgstr "вијетнамски"
@@ -331,11 +331,15 @@ msgstr "Унесите исправну и-мејл адресу."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Унесите исрпаван „слаг“, који се састоји од слова, бројки, доњих црта или "
+"циртица."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Унесите исправан \"слаг\", који се састоји од Уникод слова, бројки, доњих "
+"црта или цртица."
msgid "Enter a valid IPv4 address."
msgstr "Унесите исправну IPv4 адресу."
@@ -426,6 +430,8 @@ msgid ""
"File extension “%(extension)s” is not allowed. Allowed extensions are: "
"%(allowed_extensions)s."
msgstr ""
+"Екстензија датотеке \"%(extension)s\" није дозвољена. Дозвољене су следеће "
+"екстензије: %(allowed_extensions)s."
msgid "Null characters are not allowed."
msgstr "'Null' карактери нису дозвољени."
@@ -466,11 +472,11 @@ msgstr "Поље типа: %(field_type)s"
#, python-format
msgid "“%(value)s” value must be either True or False."
-msgstr ""
+msgstr "Вредност \"%(value)s\" мора бити True или False."
#, python-format
msgid "“%(value)s” value must be either True, False, or None."
-msgstr ""
+msgstr "\"%(value)s\" вредност мора бити True, False или None."
msgid "Boolean (Either True or False)"
msgstr "Булова вредност (True или False)"
@@ -487,12 +493,16 @@ msgid ""
"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD "
"format."
msgstr ""
+"Вредност \"%(value)s\" нема исправан формат датума. Мора бити у формату ГГГГ-"
+"ММ-ДД."
#, python-format
msgid ""
"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid "
"date."
msgstr ""
+"Вредност \"%(value)s\" има исправан формат (ГГГГ-ММ-ДД) али то није исправан "
+"датум."
msgid "Date (without time)"
msgstr "Датум (без времена)"
@@ -502,19 +512,23 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
"uuuuuu]][TZ] format."
msgstr ""
+"Вредност \"%(value)s\" нема исправан формат. Мора бити у формату ГГГГ-ММ-ДД "
+"ЧЧ:ММ[:сс[.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\" има исправан формат (ГГГГ-ММ-ДД ЧЧ:ММ[:сс[.uuuuuu]]"
+"[TZ]) али то није исправан датум/време."
msgid "Date (with time)"
msgstr "Датум (са временом)"
#, python-format
msgid "“%(value)s” value must be a decimal number."
-msgstr ""
+msgstr "Вредност \"%(value)s\" мора бити децимални број."
msgid "Decimal number"
msgstr "Децимални број"
@@ -524,6 +538,8 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[."
"uuuuuu] format."
msgstr ""
+"Вредност \"%(value)s\" нема исправан формат. Мора бити у формату [ДД] [ЧЧ:"
+"[ММ:]]сс[.uuuuuu]."
msgid "Duration"
msgstr "Временски интервал"
@@ -536,14 +552,14 @@ msgstr "Путања фајла"
#, python-format
msgid "“%(value)s” value must be a float."
-msgstr ""
+msgstr "Вредност \"%(value)s\" мора бити број са покретним зарезом."
msgid "Floating point number"
msgstr "Број са покретним зарезом"
#, python-format
msgid "“%(value)s” value must be an integer."
-msgstr ""
+msgstr "Вредност \"%(value)s\" мора бити цео број."
msgid "Integer"
msgstr "Цео број"
@@ -559,7 +575,7 @@ msgstr "IP адреса"
#, python-format
msgid "“%(value)s” value must be either None, True or False."
-msgstr ""
+msgstr "Вредност \"%(value)s\" мора бити None, True или False."
msgid "Boolean (Either True, False or None)"
msgstr "Булова вредност (True, False или None)"
@@ -585,12 +601,16 @@ msgid ""
"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
"format."
msgstr ""
+"Вредност \"%(value)s\" нема исправан формат. Мора бити у формату ЧЧ:ММ[:сс[."
+"uuuuuu]] ."
#, python-format
msgid ""
"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
"invalid time."
msgstr ""
+"Вредност \"%(value)s\" има исправан формат (ЧЧ:ММ[:сс[.uuuuuu]]) али то није "
+"исправно време."
msgid "Time"
msgstr "Време"
@@ -603,7 +623,7 @@ msgstr "Сирови бинарни подаци"
#, python-format
msgid "“%(value)s” is not a valid UUID."
-msgstr ""
+msgstr "\"%(value)s\" није исправан UUID."
msgid "Universally unique identifier"
msgstr "Универзално јединствени идентификатор"
@@ -767,13 +787,15 @@ msgstr "Одабрана вредност није међу понуђенима
#, python-format
msgid "“%(pk)s” is not a valid value."
-msgstr ""
+msgstr "\"%(pk)s\" није исправна вредност."
#, python-format
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 се не може протумачити у временској зони "
+"%(current_timezone)s; можда је двосмислено или не постоји."
msgid "Clear"
msgstr "Очисти"
@@ -794,13 +816,13 @@ msgid "No"
msgstr "Не"
msgid "Year"
-msgstr ""
+msgstr "Година"
msgid "Month"
-msgstr ""
+msgstr "Месец"
msgid "Day"
-msgstr ""
+msgstr "Дан"
msgid "yes,no,maybe"
msgstr "да,не,можда"
@@ -1132,12 +1154,19 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Ова порука је приказана јер овај HTTPS сајт захтева да \"Referer header\" "
+"буде послат од стране вашег интернет прегледача, што тренутно није случај. "
+"Поменуто заглавље је потребно из безбедоносних разлога, да би се осигурало "
+"да ваш прегледач није под контролом трећих лица."
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 ""
+"Ако сте подесили интернет прегледач да не шаље \"Referer\" заглавља, поново "
+"их укључите, барем за овај сајт, или за HTTPS конекције, или за \"same-origin"
+"\" захтеве."
msgid ""
"If you are using the tag or "
@@ -1146,6 +1175,11 @@ msgid ""
"If you’re concerned about privacy, use alternatives like for links to third-party sites."
msgstr ""
+"Ако користите таг или "
+"\"Referrer-Policy: no-referrer\" заглавље, молимо да их уклоните. CSRF "
+"заштита захтева \"Referer\" заглавље да би се обавила стриктна \"referrer\" "
+"провера. Уколико вас брине приватност, користите алтернативе као за линкове ка другим сајтовима."
msgid ""
"You are seeing this message because this site requires a CSRF cookie when "
@@ -1160,6 +1194,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 ""
+"Ако је ваш интернет прегедач подешен да онемогући колачиће, молимо да их "
+"укључите, барем за овај сајт, или за \"same-origin\" захтеве."
msgid "More information is available with DEBUG=True."
msgstr "Више информација је доступно са DEBUG=True."
@@ -1193,14 +1229,14 @@ msgstr ""
#, python-format
msgid "Invalid date string “%(datestr)s” given format “%(format)s”"
-msgstr ""
+msgstr "Неисправан датум „%(datestr)s“ за формат „%(format)s“"
#, python-format
msgid "No %(verbose_name)s found matching the query"
msgstr "Ниједан објекат класе %(verbose_name)s није нађен датим упитом."
msgid "Page is not “last”, nor can it be converted to an int."
-msgstr ""
+msgstr "Страница није последња, нити може бити конвертована у тип \"int\"."
#, python-format
msgid "Invalid page (%(page_number)s): %(message)s"
@@ -1208,14 +1244,14 @@ msgstr "Неисправна страна (%(page_number)s): %(message)s"
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Празна листа и „%(class_name)s.allow_empty“ има вредност False."
msgid "Directory indexes are not allowed here."
msgstr "Индекси директоријума нису дозвољени овде."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "„%(path)s“ не постоји"
#, python-format
msgid "Index of %(directory)s"
@@ -1251,7 +1287,7 @@ msgid "Django Documentation"
msgstr "Ђанго документација"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Теме, референце, & како-да"
msgid "Tutorial: A Polling App"
msgstr "Упутство: апликација за гласање"
diff --git a/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo b/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo
index b285fd0eb479..53ceaf93e518 100644
Binary files a/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo and b/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/sr_Latn/LC_MESSAGES/django.po b/django/conf/locale/sr_Latn/LC_MESSAGES/django.po
index c9fa21e8367b..ea5aa68013c1 100644
--- a/django/conf/locale/sr_Latn/LC_MESSAGES/django.po
+++ b/django/conf/locale/sr_Latn/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Igor Jerosimić, 2019
+# Igor Jerosimić, 2019-2020
# Jannis Leidel , 2011
# Janos Guljas , 2011-2012
msgid ""
@@ -9,8 +9,8 @@ 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"
+"PO-Revision-Date: 2020-01-23 22:15+0000\n"
+"Last-Translator: Igor Jerosimić\n"
"Language-Team: Serbian (Latin) (http://www.transifex.com/django/django/"
"language/sr@latin/)\n"
"MIME-Version: 1.0\n"
@@ -63,7 +63,7 @@ msgid "German"
msgstr "nemački"
msgid "Lower Sorbian"
-msgstr ""
+msgstr "donjolužičkosrpski"
msgid "Greek"
msgstr "grčki"
@@ -135,7 +135,7 @@ msgid "Croatian"
msgstr "hrvatski"
msgid "Upper Sorbian"
-msgstr ""
+msgstr "gornjolužičkosrpski"
msgid "Hungarian"
msgstr "mađarski"
@@ -144,7 +144,7 @@ msgid "Armenian"
msgstr "jermenski"
msgid "Interlingua"
-msgstr ""
+msgstr "interlingva"
msgid "Indonesian"
msgstr "indonežanski"
@@ -165,7 +165,7 @@ msgid "Georgian"
msgstr "gruzijski"
msgid "Kabyle"
-msgstr ""
+msgstr "kabilski"
msgid "Kazakh"
msgstr "kazaški"
@@ -198,7 +198,7 @@ msgid "Mongolian"
msgstr "mongolski"
msgid "Marathi"
-msgstr ""
+msgstr "marathi"
msgid "Burmese"
msgstr "burmanski"
@@ -216,7 +216,7 @@ msgid "Norwegian Nynorsk"
msgstr "norveški novi"
msgid "Ossetic"
-msgstr ""
+msgstr "osetinski"
msgid "Punjabi"
msgstr "Pandžabi"
@@ -273,7 +273,7 @@ msgid "Tatar"
msgstr "tatarski"
msgid "Udmurt"
-msgstr ""
+msgstr "udmurtski"
msgid "Ukrainian"
msgstr "ukrajinski"
@@ -282,7 +282,7 @@ msgid "Urdu"
msgstr "Urdu"
msgid "Uzbek"
-msgstr ""
+msgstr "Uzbekistanski"
msgid "Vietnamese"
msgstr "vijetnamski"
@@ -303,7 +303,7 @@ msgid "Static Files"
msgstr "Statičke datoteke"
msgid "Syndication"
-msgstr ""
+msgstr "Udruživanje sadržaja"
msgid "That page number is not an integer"
msgstr "Zadati broj strane nije ceo broj"
@@ -330,11 +330,15 @@ msgstr "Unesite ispravnu e-mail adresu."
msgid ""
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens."
msgstr ""
+"Unesite isrpavan „slag“, koji se sastoji od slova, brojki, donjih crta ili "
+"cirtica."
msgid ""
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or "
"hyphens."
msgstr ""
+"Unesite ispravan \"slag\", koji se sastoji od Unikod slova, brojki, donjih "
+"crta ili crtica."
msgid "Enter a valid IPv4 address."
msgstr "Unesite ispravnu IPv4 adresu."
@@ -368,8 +372,14 @@ msgid_plural ""
"Ensure this value has at least %(limit_value)d characters (it has "
"%(show_value)d)."
msgstr[0] ""
+"Ovo polje mora da ima najmanje %(limit_value)d karakter (trenutno ima "
+"%(show_value)d)."
msgstr[1] ""
+"Ovo polje mora da ima najmanje %(limit_value)d karaktera (trenutno ima "
+"%(show_value)d)."
msgstr[2] ""
+"Ovo polje mora da ima %(limit_value)d najmanje karaktera (trenutno ima "
+"%(show_value)d )."
#, python-format
msgid ""
@@ -415,7 +425,7 @@ msgid ""
msgstr ""
msgid "Null characters are not allowed."
-msgstr ""
+msgstr "'Null' karakteri nisu dozvoljeni."
msgid "and"
msgstr "i"
@@ -426,7 +436,7 @@ msgstr "%(model_name)ssa poljem %(field_labels)sveć postoji."
#, python-format
msgid "Value %(value)r is not a valid choice."
-msgstr ""
+msgstr "Vrednost %(value)r nije validna."
msgid "This field cannot be null."
msgstr "Ovo polje ne može da ostane prazno."
@@ -511,7 +521,7 @@ msgid ""
msgstr ""
msgid "Duration"
-msgstr ""
+msgstr "Vremenski interval"
msgid "Email address"
msgstr "Imejl adresa"
@@ -584,7 +594,7 @@ msgid "URL"
msgstr "URL"
msgid "Raw binary data"
-msgstr ""
+msgstr "Sirovi binarni podaci"
#, python-format
msgid "“%(value)s” is not a valid UUID."
@@ -684,7 +694,7 @@ msgid "Enter a list of values."
msgstr "Unesite listu vrednosti."
msgid "Enter a complete value."
-msgstr ""
+msgstr "Unesite kompletnu vrednost."
msgid "Enter a valid UUID."
msgstr "Unesite ispravan UUID."
@@ -698,7 +708,7 @@ msgid "(Hidden field %(name)s) %(error)s"
msgstr ""
msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
+msgstr "ManagementForm nedostaje ili je izmenjena na pogrešan način."
#, python-format
msgid "Please submit %d or fewer forms."
@@ -741,7 +751,7 @@ msgid "Please correct the duplicate values below."
msgstr "Ispravite duplirane vrednosti dole."
msgid "The inline value did not match the parent instance."
-msgstr ""
+msgstr "Direktno uneta vrednost ne odgovara instanci roditelja."
msgid "Select a valid choice. That choice is not one of the available choices."
msgstr "Odabrana vrednost nije među ponuđenima. Odaberite jednu od ponuđenih."
@@ -775,13 +785,13 @@ msgid "No"
msgstr "Ne"
msgid "Year"
-msgstr ""
+msgstr "Godina"
msgid "Month"
-msgstr ""
+msgstr "Mesec"
msgid "Day"
-msgstr ""
+msgstr "Dan"
msgid "yes,no,maybe"
msgstr "da,ne,možda"
@@ -1105,7 +1115,7 @@ msgid "Forbidden"
msgstr "Zabranjeno"
msgid "CSRF verification failed. Request aborted."
-msgstr ""
+msgstr "CSRF verifikacija nije prošla. Zahtev odbijen."
msgid ""
"You are seeing this message because this HTTPS site requires a “Referer "
@@ -1113,12 +1123,19 @@ msgid ""
"required for security reasons, to ensure that your browser is not being "
"hijacked by third parties."
msgstr ""
+"Ova poruka je prikazana jer ovaj HTTPS sajt zahteva da \"Referer header\" "
+"bude poslat od strane vašeg internet pregledača, što trenutno nije slučaj. "
+"Pomenuto zaglavlje je potrebno iz bezbedonosnih razloga, da bi se osiguralo "
+"da vaš pregledač nije pod kontrolom trećih lica."
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 ""
+"Ako ste podesili internet pregledač da ne šalje \"Referer\" zaglavlja, "
+"ponovo ih uključite, barem za ovaj sajt, ili za HTTPS konekcije, ili za "
+"\"same-origin\" zahteve."
msgid ""
"If you are using the tag or "
@@ -1133,20 +1150,25 @@ msgid ""
"submitting forms. This cookie is required for security reasons, to ensure "
"that your browser is not being hijacked by third parties."
msgstr ""
+"Ova poruka je prikazana jer ovaj sajt zahteva CSRF kuki kada se prosleđuju "
+"podaci iz formi. Ovaj kuki je potreban iz sigurnosnih razloga, da bi se "
+"osiguralo da vaš pretraživač nije pod kontrolom trećih lica."
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 ""
+"Ako je vaš internet pregedač podešen da onemogući kolačiće, molimo da ih "
+"uključite, barem za ovaj sajt, ili za \"same-origin\" zahteve."
msgid "More information is available with DEBUG=True."
-msgstr ""
+msgstr "Više informacija je dostupno sa DEBUG=True."
msgid "No year specified"
msgstr "Godina nije naznačena"
msgid "Date out of range"
-msgstr ""
+msgstr "Datum van opsega"
msgid "No month specified"
msgstr "Mesec nije naznačen"
@@ -1186,30 +1208,33 @@ msgstr ""
#, python-format
msgid "Empty list and “%(class_name)s.allow_empty” is False."
-msgstr ""
+msgstr "Prazna lista i „%(class_name)s.allow_empty“ ima vrednost False."
msgid "Directory indexes are not allowed here."
msgstr "Indeksi direktorijuma nisu dozvoljeni ovde."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "„%(path)s“ ne postoji"
#, python-format
msgid "Index of %(directory)s"
msgstr "Indeks direktorijuma %(directory)s"
msgid "Django: the Web framework for perfectionists with deadlines."
-msgstr ""
+msgstr "Đango: veb okruženje za perfekcioniste sa strogim rokovima."
#, python-format
msgid ""
"View release notes for Django %(version)s"
msgstr ""
+"Pogledajte napomene uz izdanje za Đango "
+"%(version)s"
msgid "The install worked successfully! Congratulations!"
-msgstr ""
+msgstr "Instalacija je prošla uspešno. Čestitke!"
#, python-format
msgid ""
@@ -1218,21 +1243,24 @@ msgid ""
"\">DEBUG=True is in your settings file and you have not configured any "
"URLs."
msgstr ""
+"Ova strana je prikazana jer je DEBUG=True u vašim podešavanjima i niste konfigurisali nijedan URL."
msgid "Django Documentation"
-msgstr ""
+msgstr "Đango dokumentacija"
msgid "Topics, references, & how-to’s"
-msgstr ""
+msgstr "Teme, reference, & kako-da"
msgid "Tutorial: A Polling App"
-msgstr ""
+msgstr "Uputstvo: aplikacija za glasanje"
msgid "Get started with Django"
-msgstr ""
+msgstr "Počnite sa Đangom"
msgid "Django Community"
-msgstr ""
+msgstr "Đango zajednica"
msgid "Connect, get help, or contribute"
-msgstr ""
+msgstr "Povežite se, potražite pomoć ili dajte doprinos"
diff --git a/django/conf/locale/uk/LC_MESSAGES/django.mo b/django/conf/locale/uk/LC_MESSAGES/django.mo
index fd78ec75a369..2d081ea90f40 100644
Binary files a/django/conf/locale/uk/LC_MESSAGES/django.mo and b/django/conf/locale/uk/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/uk/LC_MESSAGES/django.po b/django/conf/locale/uk/LC_MESSAGES/django.po
index 938db5ba875b..39b8d5931910 100644
--- a/django/conf/locale/uk/LC_MESSAGES/django.po
+++ b/django/conf/locale/uk/LC_MESSAGES/django.po
@@ -5,6 +5,7 @@
# Boryslav Larin , 2011
# Денис Подлесный , 2016
# Igor Melnyk, 2014-2015,2017
+# Illia Volochii , 2019
# Jannis Leidel , 2011
# Kirill Gagarski , 2014
# Max V. Stotsky , 2014
@@ -21,8 +22,8 @@ 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"
+"PO-Revision-Date: 2019-12-26 20:22+0000\n"
+"Last-Translator: Illia Volochii \n"
"Language-Team: Ukrainian (http://www.transifex.com/django/django/language/"
"uk/)\n"
"MIME-Version: 1.0\n"
@@ -296,7 +297,7 @@ msgid "Urdu"
msgstr "Урду"
msgid "Uzbek"
-msgstr ""
+msgstr "Узбецька"
msgid "Vietnamese"
msgstr "В'єтнамська"
@@ -835,13 +836,13 @@ msgid "No"
msgstr "Ні"
msgid "Year"
-msgstr ""
+msgstr "Рік"
msgid "Month"
-msgstr ""
+msgstr "Місяць"
msgid "Day"
-msgstr ""
+msgstr "День"
msgid "yes,no,maybe"
msgstr "так,ні,можливо"
@@ -1263,7 +1264,7 @@ msgstr "Перегляд вмісту каталогу не дозволено."
#, python-format
msgid "“%(path)s” does not exist"
-msgstr ""
+msgstr "\"%(path)s\" не існує"
#, python-format
msgid "Index of %(directory)s"
diff --git a/django/contrib/admin/locale/az/LC_MESSAGES/django.mo b/django/contrib/admin/locale/az/LC_MESSAGES/django.mo
index 13228817dee2..557d95d4a0da 100644
Binary files a/django/contrib/admin/locale/az/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/az/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/az/LC_MESSAGES/django.po b/django/contrib/admin/locale/az/LC_MESSAGES/django.po
index 1bedd485256e..e4932f1df68a 100644
--- a/django/contrib/admin/locale/az/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/az/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Emin Mastizada , 2018
+# Emin Mastizada , 2018,2020
# Emin Mastizada , 2016
# Konul Allahverdiyeva , 2016
# Zulfugar Ismayilzadeh , 2017
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-21 14:16-0300\n"
-"PO-Revision-Date: 2018-09-09 12:44+0000\n"
+"POT-Creation-Date: 2019-09-08 17:27+0200\n"
+"PO-Revision-Date: 2020-01-12 07:34+0000\n"
"Last-Translator: Emin Mastizada \n"
"Language-Team: Azerbaijani (http://www.transifex.com/django/django/language/"
"az/)\n"
@@ -111,7 +111,7 @@ msgid "object id"
msgstr "obyekt id"
#. Translators: 'repr' means representation
-#. (https://docs.python.org/3/library/functions.html#repr)
+#. (https://docs.python.org/library/functions.html#repr)
msgid "object repr"
msgstr "obyekt repr"
@@ -128,23 +128,23 @@ msgid "log entries"
msgstr "loq yazıları"
#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" əlavə olundu."
+msgid "Added “%(object)s”."
+msgstr "“%(object)s” əlavə edildi."
#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" - %(changes)s dəyişiklikləri qeydə alındı."
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "“%(object)s” dəyişdirildi — %(changes)s"
#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" silindi."
+msgid "Deleted “%(object)s.”"
+msgstr "“%(object)s” silindi."
msgid "LogEntry Object"
msgstr "LogEntry obyekti"
#, python-brace-format
-msgid "Added {name} \"{object}\"."
-msgstr "{name} \"{object}\" əlavə edildi."
+msgid "Added {name} “{object}”."
+msgstr ""
msgid "Added."
msgstr "Əlavə edildi."
@@ -153,16 +153,16 @@ msgid "and"
msgstr "və"
#, python-brace-format
-msgid "Changed {fields} for {name} \"{object}\"."
-msgstr "{name} \"{object}\" üçün {fields} dəyişdirildi."
+msgid "Changed {fields} for {name} “{object}”."
+msgstr ""
#, python-brace-format
msgid "Changed {fields}."
msgstr "{fields} dəyişdirildi."
#, python-brace-format
-msgid "Deleted {name} \"{object}\"."
-msgstr "{name} \"{object}\" silindi."
+msgid "Deleted {name} “{object}”."
+msgstr ""
msgid "No fields changed."
msgstr "Heç bir sahə dəyişmədi."
@@ -170,51 +170,39 @@ msgstr "Heç bir sahə dəyişmədi."
msgid "None"
msgstr "Heç nə"
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
msgstr ""
-"Birdən çox seçmək üçün \"Control\" və ya Mac üçün \"Command\" düyməsini "
-"basılı tutun."
#, python-brace-format
-msgid "The {name} \"{obj}\" was added successfully."
-msgstr "{name} \"{obj}\" uğurla əlavə edildi."
+msgid "The {name} “{obj}” was added successfully."
+msgstr ""
msgid "You may edit it again below."
msgstr "Bunu aşağıda təkrar redaktə edə bilərsiz."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was added successfully. You may add another {name} "
-"below."
+"The {name} “{obj}” was added successfully. You may add another {name} below."
msgstr ""
-"{name} \"{obj}\" uğurla əlavə edildi. Aşağıdan başqa bir {name} əlavə edə "
-"bilərsiz."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+"The {name} “{obj}” was changed successfully. You may edit it again below."
msgstr ""
-"{name} \"{obj}\" uğurla dəyişdirildi. Təkrar aşağıdan dəyişdirə bilərsiz."
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
msgstr ""
-"{name} \"{obj}\" uğurla əlavə edildi. Bunu təkrar aşağıdan dəyişdirə "
-"bilərsiz."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"The {name} “{obj}” was changed successfully. You may add another {name} "
"below."
msgstr ""
-"{name} \"{obj}\" uğurla dəyişdirildi. Aşağıdan başqa bir {name} əlavə edə "
-"bilərsiz."
#, python-brace-format
-msgid "The {name} \"{obj}\" was changed successfully."
-msgstr "{name} \"{obj}\" uğurla dəyişdirildi."
+msgid "The {name} “{obj}” was changed successfully."
+msgstr ""
msgid ""
"Items must be selected in order to perform actions on them. No items have "
@@ -227,12 +215,12 @@ msgid "No action selected."
msgstr "Heç bir əməliyyat seçilmədi."
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" uğurla silindi."
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr ""
#, python-format
-msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
-msgstr "\"%(key)s\" id nömrəli %(name)s mövcud deyil. Çox güman ki, silinib?"
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr ""
#, python-format
msgid "Add %s"
@@ -302,8 +290,8 @@ msgstr "%(app)s administrasiyası"
msgid "Page not found"
msgstr "Səhifə tapılmadı"
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Üzrlər, amma soruşduğunuz sayt tapılmadı."
+msgid "We’re sorry, but the requested page could not be found."
+msgstr ""
msgid "Home"
msgstr "Ev"
@@ -318,11 +306,9 @@ msgid "Server Error (500)"
msgstr "Serverdə xəta (500)"
msgid ""
-"There's been an error. It's been reported to the site administrators via "
+"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 ""
-"Xəta baş verdi. Sayt administratorlarına e-poçt göndərildi və onlar xəta ilə "
-"tezliklə məşğul olacaqlar. Səbrli olun."
msgid "Run the selected action"
msgstr "Seçdiyim əməliyyatı yerinə yetir"
@@ -341,11 +327,9 @@ msgid "Clear selection"
msgstr "Seçimi təmizlə"
msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
+"First, enter a username and password. Then, you’ll be able to edit more user "
"options."
msgstr ""
-"Əvvəlcə istifadəçi adını və parolu daxil edin. Ondan sonra daha çox "
-"istifadəçi imkanlarını redaktə edə biləcəksiniz."
msgid "Enter a username and password."
msgstr "İstifadəçi adını və parolu daxil edin."
@@ -430,8 +414,8 @@ msgstr ""
msgid "Objects"
msgstr "Obyektlər"
-msgid "Yes, I'm sure"
-msgstr "Hə, əminəm"
+msgid "Yes, I’m sure"
+msgstr ""
msgid "No, take me back"
msgstr "Xeyr, məni geri götür"
@@ -485,8 +469,8 @@ msgstr "%(name)s proqramındakı modellər"
msgid "Add"
msgstr "Əlavə et"
-msgid "You don't have permission to view or edit anything."
-msgstr "Heç nəyi görmə və ya redaktə etmə icazəniz yoxdur."
+msgid "You don’t have permission to view or edit anything."
+msgstr ""
msgid "Recent actions"
msgstr "Son əməliyyatlar"
@@ -501,12 +485,10 @@ msgid "Unknown content"
msgstr "Naməlum"
msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
+"Something’s wrong with your database installation. Make sure the appropriate "
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
-"Bazanın qurulması ilə nəsə problem var. Lazımi cədvəllərin bazada "
-"yaradıldığını və uyğun istifadəçinin bazadan oxuya bildiyini yoxlayın."
#, python-format
msgid ""
@@ -529,11 +511,9 @@ msgid "Action"
msgstr "Əməliyyat"
msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
+"This object doesn’t have a change history. It probably wasn’t added via this "
"admin site."
msgstr ""
-"Bu obyektin dəyişməsinə aid tarix mövcud deyil. Yəqin ki, o, bu admin saytı "
-"vasitəsilə yaradılmayıb."
msgid "Show all"
msgstr "Hamısını göstər"
@@ -541,24 +521,8 @@ msgstr "Hamısını göstər"
msgid "Save"
msgstr "Yadda saxla"
-msgid "Popup closing..."
-msgstr "Qəfl pəncərə qapatılır..."
-
-#, python-format
-msgid "Change selected %(model)s"
-msgstr "Seçilmiş %(model)s dəyişdir"
-
-#, python-format
-msgid "View selected %(model)s"
-msgstr "Seçilən %(model)s gör"
-
-#, python-format
-msgid "Add another %(model)s"
-msgstr "Başqa %(model)s əlavə et"
-
-#, python-format
-msgid "Delete selected %(model)s"
-msgstr "Seçilmiş %(model)s sil"
+msgid "Popup closing…"
+msgstr ""
msgid "Search"
msgstr "Axtar"
@@ -588,6 +552,18 @@ msgstr "Saxla və gör"
msgid "Close"
msgstr "Qapat"
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Seçilmiş %(model)s dəyişdir"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Başqa %(model)s əlavə et"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Seçilmiş %(model)s sil"
+
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Sayt ilə səmərəli vaxt keçirdiyiniz üçün təşəkkür."
@@ -601,11 +577,9 @@ msgid "Your password was changed."
msgstr "Sizin parolunuz dəyişdi."
msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
+"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 ""
-"Yoxlama üçün köhnə parolunuzu daxil edin. Sonra isə yeni parolu iki dəfə "
-"daxil edin ki, səhv etmədiyinizə əmin olaq."
msgid "Change my password"
msgstr "Mənim parolumu dəyiş"
@@ -638,18 +612,14 @@ msgstr ""
"Parolu sıfırlamaq üçün yenə müraciət edin."
msgid ""
-"We've emailed you instructions for setting your password, if an account "
+"We’ve emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgstr ""
-"Əgər daxil etdiyiniz e-poçt ünvanıyla hesab mövcuddursa, parolu qurmağınız "
-"üçün sizə e-poçt göndərdik. Qısa zamanda alacaqsınız."
msgid ""
-"If you don't receive an email, please make sure you've entered the address "
+"If you don’t receive an email, please make sure you’ve entered the address "
"you registered with, and check your spam folder."
msgstr ""
-"Əgər e-poçt gəlmədiysə lütfən, qeyd olduğunuz ünvanla istədiyinizə əmin olun "
-"və spam qutunuzu yoxlayın."
#, python-format
msgid ""
@@ -662,8 +632,8 @@ msgstr ""
msgid "Please go to the following page and choose a new password:"
msgstr "Növbəti səhifəyə keçid alın və yeni parolu seçin:"
-msgid "Your username, in case you've forgotten:"
-msgstr "Sizin istifadəçi adınız:"
+msgid "Your username, in case you’ve forgotten:"
+msgstr ""
msgid "Thanks for using our site!"
msgstr "Bizim saytdan istifadə etdiyiniz üçün təşəkkür edirik!"
@@ -673,11 +643,9 @@ msgid "The %(site_name)s team"
msgstr "%(site_name)s komandası"
msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
+"Forgotten your password? Enter your email address below, and we’ll email "
"instructions for setting a new one."
msgstr ""
-"Parolu unutmusunuz? Aşağıda e-poçt ünvanınızı təqdim edin, biz isə yeni "
-"parol seçmək təlimatlarını sizə göndərək."
msgid "Email address:"
msgstr "E-poçt:"
diff --git a/django/contrib/admin/locale/de/LC_MESSAGES/django.mo b/django/contrib/admin/locale/de/LC_MESSAGES/django.mo
index 21391ce9e603..270fb3a69f99 100644
Binary files a/django/contrib/admin/locale/de/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/de/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/de/LC_MESSAGES/django.po b/django/contrib/admin/locale/de/LC_MESSAGES/django.po
index afbd3e3aed4a..0baf5169e9f9 100644
--- a/django/contrib/admin/locale/de/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/de/LC_MESSAGES/django.po
@@ -5,16 +5,17 @@
# Florian Apolloner , 2011
# Dimitris Glezos , 2012
# Jannis Vajen, 2013
-# Jannis Leidel , 2013-2018
+# Jannis Leidel , 2013-2018,2020
# Jannis Vajen, 2016
+# Markus Holtermann , 2020
# Markus Holtermann , 2013,2015
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-01-16 20:42+0100\n"
-"PO-Revision-Date: 2019-01-18 00:36+0000\n"
-"Last-Translator: Ramiro Morales\n"
+"POT-Creation-Date: 2019-09-08 17:27+0200\n"
+"PO-Revision-Date: 2020-01-17 22:40+0000\n"
+"Last-Translator: Jannis Leidel \n"
"Language-Team: German (http://www.transifex.com/django/django/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -130,22 +131,22 @@ msgid "log entries"
msgstr "Logeinträge"
#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" hinzufügt."
+msgid "Added “%(object)s”."
+msgstr "„%(object)s“ hinzufügt."
#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" verändert - %(changes)s"
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "„%(object)s“ geändert – %(changes)s"
#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" gelöscht."
+msgid "Deleted “%(object)s.”"
+msgstr "„%(object)s“ gelöscht."
msgid "LogEntry Object"
msgstr "LogEntry Objekt"
#, python-brace-format
-msgid "Added {name} \"{object}\"."
+msgid "Added {name} “{object}”."
msgstr "{name} „{object}“ hinzugefügt."
msgid "Added."
@@ -155,7 +156,7 @@ msgid "and"
msgstr "und"
#, python-brace-format
-msgid "Changed {fields} for {name} \"{object}\"."
+msgid "Changed {fields} for {name} “{object}”."
msgstr "{fields} für {name} „{object}“ geändert."
#, python-brace-format
@@ -163,7 +164,7 @@ msgid "Changed {fields}."
msgstr "{fields} geändert."
#, python-brace-format
-msgid "Deleted {name} \"{object}\"."
+msgid "Deleted {name} “{object}”."
msgstr "{name} „{object}“ gelöscht."
msgid "No fields changed."
@@ -172,14 +173,13 @@ msgstr "Keine Felder geändert."
msgid "None"
msgstr "-"
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
msgstr ""
"Halten Sie die Strg-Taste (⌘ für Mac) während des Klickens gedrückt, um "
"mehrere Einträge auszuwählen."
#, python-brace-format
-msgid "The {name} \"{obj}\" was added successfully."
+msgid "The {name} “{obj}” was added successfully."
msgstr "{name} „{obj}“ wurde erfolgreich hinzugefügt."
msgid "You may edit it again below."
@@ -187,35 +187,33 @@ msgstr "Es kann unten erneut geändert werden."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was added successfully. You may add another {name} "
-"below."
+"The {name} “{obj}” was added successfully. You may add another {name} below."
msgstr ""
"{name} „{obj}“ wurde erfolgreich hinzugefügt und kann nun unten um ein "
"Weiteres ergänzt werden."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+"The {name} “{obj}” was changed successfully. You may edit it again below."
msgstr ""
"{name} „{obj}“ wurde erfolgreich geändert und kann unten erneut geändert "
"werden."
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
msgstr ""
"{name} „{obj}“ wurde erfolgreich hinzugefügt und kann unten geändert werden."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"The {name} “{obj}” was changed successfully. You may add another {name} "
"below."
msgstr ""
-"{name} „{obj}“ wurde erfolgreich geändert und kann nun unten um ein Weiteres "
-"ergänzt werden."
+"{name} „{obj}“ wurde erfolgreich geändert und kann nun unten erneut ergänzt "
+"werden."
#, python-brace-format
-msgid "The {name} \"{obj}\" was changed successfully."
+msgid "The {name} “{obj}” was changed successfully."
msgstr "{name} „{obj}“ wurde erfolgreich geändert."
msgid ""
@@ -229,12 +227,12 @@ msgid "No action selected."
msgstr "Keine Aktion ausgewählt."
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht."
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s „%(obj)s“ wurde erfolgreich gelöscht."
#, python-format
-msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
-msgstr "%(name)s mit ID \"%(key)s\" existiert nicht. Eventuell gelöscht?"
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s mit ID „%(key)s“ existiert nicht. Eventuell gelöscht?"
#, python-format
msgid "Add %s"
@@ -304,7 +302,7 @@ msgstr "%(app)s-Administration"
msgid "Page not found"
msgstr "Seite nicht gefunden"
-msgid "We're sorry, but the requested page could not be found."
+msgid "We’re sorry, but the requested page could not be found."
msgstr ""
"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
@@ -321,7 +319,7 @@ msgid "Server Error (500)"
msgstr "Serverfehler (500)"
msgid ""
-"There's been an error. It's been reported to the site administrators via "
+"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 ""
"Ein Fehler ist aufgetreten und wurde an die Administratoren per E-Mail "
@@ -344,11 +342,11 @@ msgid "Clear selection"
msgstr "Auswahl widerrufen"
msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
+"First, enter a username and password. Then, you’ll be able to edit more user "
"options."
msgstr ""
-"Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere "
-"Optionen für den Benutzer geändert werden."
+"Bitte zuerst einen Benutzernamen und ein Passwort eingeben. Danach können "
+"weitere Optionen für den Benutzer geändert werden."
msgid "Enter a username and password."
msgstr "Bitte einen Benutzernamen und ein Passwort eingeben."
@@ -435,7 +433,7 @@ msgstr ""
msgid "Objects"
msgstr "Objekte"
-msgid "Yes, I'm sure"
+msgid "Yes, I’m sure"
msgstr "Ja, ich bin sicher"
msgid "No, take me back"
@@ -490,9 +488,9 @@ msgstr "Modelle der %(name)s-Anwendung"
msgid "Add"
msgstr "Hinzufügen"
-msgid "You don't have permission to view or edit anything."
+msgid "You don’t have permission to view or edit anything."
msgstr ""
-"Ihr Benutzerkonto besitzt nicht die nötigen Rechte, um etwas anzusehen oder "
+"Das Benutzerkonto besitzt nicht die nötigen Rechte, um etwas anzusehen oder "
"zu ändern."
msgid "Recent actions"
@@ -508,7 +506,7 @@ msgid "Unknown content"
msgstr "Unbekannter Inhalt"
msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
+"Something’s wrong with your database installation. Make sure the appropriate "
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
@@ -537,7 +535,7 @@ msgid "Action"
msgstr "Aktion"
msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
+"This object doesn’t have a change history. It probably wasn’t added via this "
"admin site."
msgstr ""
"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht "
@@ -550,7 +548,7 @@ msgid "Save"
msgstr "Sichern"
msgid "Popup closing…"
-msgstr ""
+msgstr "Popup wird geschlossen..."
msgid "Search"
msgstr "Suchen"
@@ -605,12 +603,12 @@ msgid "Your password was changed."
msgstr "Ihr Passwort wurde geändert."
msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
+"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 ""
-"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter "
-"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das "
-"neue Passwort ein."
+"Aus Sicherheitsgründen bitte zuerst das alte Passwort und darunter dann "
+"zweimal das neue Passwort eingeben, um sicherzustellen, dass es es korrekt "
+"eingegeben wurde."
msgid "Change my password"
msgstr "Mein Passwort ändern"
@@ -645,7 +643,7 @@ msgstr ""
"er schon einmal benutzt wurde. Bitte setzen Sie Ihr Passwort erneut zurück."
msgid ""
-"We've emailed you instructions for setting your password, if an account "
+"We’ve emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgstr ""
"Wir haben eine E-Mail zum Zurücksetzen des Passwortes an die angegebene E-"
@@ -653,7 +651,7 @@ msgstr ""
"in Kürze ankommen."
msgid ""
-"If you don't receive an email, please make sure you've entered the address "
+"If you don’t receive an email, please make sure you’ve entered the address "
"you registered with, and check your spam folder."
msgstr ""
"Falls die E-Mail nicht angekommen sein sollte, bitte die E-Mail-Adresse auf "
@@ -670,8 +668,8 @@ msgstr ""
msgid "Please go to the following page and choose a new password:"
msgstr "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:"
-msgid "Your username, in case you've forgotten:"
-msgstr "Ihr Benutzername, falls Sie ihn vergessen haben:"
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Der Benutzername, falls vergessen:"
msgid "Thanks for using our site!"
msgstr "Vielen Dank, dass Sie unsere Website benutzen!"
@@ -681,7 +679,7 @@ msgid "The %(site_name)s team"
msgstr "Das Team von %(site_name)s"
msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
+"Forgotten your password? Enter your email address below, and we’ll email "
"instructions for setting a new one."
msgstr ""
"Passwort vergessen? Einfach die E-Mail-Adresse unten eingeben und den "
diff --git a/django/contrib/admin/locale/et/LC_MESSAGES/django.mo b/django/contrib/admin/locale/et/LC_MESSAGES/django.mo
index 3af4426f1bb4..195ac375b74a 100644
Binary files a/django/contrib/admin/locale/et/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/et/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/et/LC_MESSAGES/django.po b/django/contrib/admin/locale/et/LC_MESSAGES/django.po
index a9674165d12a..f0feb715bd08 100644
--- a/django/contrib/admin/locale/et/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/et/LC_MESSAGES/django.po
@@ -7,13 +7,14 @@
# Martin Pajuste , 2015
# Martin Pajuste , 2016,2019
# Marti Raudsepp , 2016
+# Ragnar Rebase , 2019
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-01-16 20:42+0100\n"
-"PO-Revision-Date: 2019-01-18 16:25+0000\n"
-"Last-Translator: Martin Pajuste \n"
+"POT-Creation-Date: 2019-09-08 17:27+0200\n"
+"PO-Revision-Date: 2019-12-28 01:34+0000\n"
+"Last-Translator: Ragnar Rebase \n"
"Language-Team: Estonian (http://www.transifex.com/django/django/language/"
"et/)\n"
"MIME-Version: 1.0\n"
@@ -92,13 +93,13 @@ msgid "Remove"
msgstr "Eemalda"
msgid "Addition"
-msgstr ""
+msgstr "Lisamine"
msgid "Change"
msgstr "Muuda"
msgid "Deletion"
-msgstr ""
+msgstr "Kustutamine"
msgid "action time"
msgstr "toimingu aeg"
@@ -130,23 +131,23 @@ msgid "log entries"
msgstr "logisissekanded"
#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Lisatud \"%(object)s\"."
+msgid "Added “%(object)s”."
+msgstr "Lisati “%(object)s”."
#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Muudetud \"%(object)s\" - %(changes)s"
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Muudeti “%(object)s” — %(changes)s"
#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Kustutatud \"%(object)s.\""
+msgid "Deleted “%(object)s.”"
+msgstr "Kustutati “%(object)s.”"
msgid "LogEntry Object"
msgstr "Objekt LogEntry"
#, python-brace-format
-msgid "Added {name} \"{object}\"."
-msgstr "Lisatud {name} \"{object}\"."
+msgid "Added {name} “{object}”."
+msgstr "Lisati {name} “{object}”."
msgid "Added."
msgstr "Lisatud."
@@ -155,16 +156,16 @@ msgid "and"
msgstr "ja"
#, python-brace-format
-msgid "Changed {fields} for {name} \"{object}\"."
-msgstr "Muudetud {fields} objektil {name} \"{object}\"."
+msgid "Changed {fields} for {name} “{object}”."
+msgstr "Muudeti {fields} -> {name} “{object}”."
#, python-brace-format
msgid "Changed {fields}."
msgstr "Muudetud {fields}."
#, python-brace-format
-msgid "Deleted {name} \"{object}\"."
-msgstr "Kustutatud {name} \"{object}\"."
+msgid "Deleted {name} “{object}”."
+msgstr "Kustutati {name} “{object}”."
msgid "No fields changed."
msgstr "Ühtegi välja ei muudetud."
@@ -172,42 +173,40 @@ msgstr "Ühtegi välja ei muudetud."
msgid "None"
msgstr "Puudub"
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Et valida mitu, hoidke all \"Control\"-nuppu (Maci puhul \"Command\")."
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
+msgstr "Hoia all “Control” või “Command” Macil, et valida rohkem kui üks."
#, python-brace-format
-msgid "The {name} \"{obj}\" was added successfully."
-msgstr "{name} \"{obj}\" lisamine õnnestus."
+msgid "The {name} “{obj}” was added successfully."
+msgstr "{name} “{obj}” lisamine õnnestus."
msgid "You may edit it again below."
-msgstr ""
+msgstr "Võite seda uuesti muuta."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was added successfully. You may add another {name} "
-"below."
-msgstr "{name} \"{obj}\" lisamine õnnestus. Allpool saate lisada uue {name}."
+"The {name} “{obj}” was added successfully. You may add another {name} below."
+msgstr ""
+"{name} “{obj}” lisamine õnnestus. Allpool saate lisada järgmise {name}."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may edit it again below."
-msgstr "{name} \"{obj}\" muutmine õnnestus. Allpool saate seda uuesti muuta."
+"The {name} “{obj}” was changed successfully. You may edit it again below."
+msgstr "{name} “{obj}” muutmine õnnestus. Allpool saate seda uuesti muuta."
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was added successfully. You may edit it again below."
-msgstr "{name} \"{obj}\" lisamine õnnestus. Allpool saate seda uuesti muuta."
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
+msgstr "{name} “{obj}” lisamine õnnestus. Allpool saate seda uuesti muuta."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"The {name} “{obj}” was changed successfully. You may add another {name} "
"below."
-msgstr "{name} \"{obj}\" muutmine õnnestus. Allpool saate lisada uue {name}."
+msgstr "{name} ”{obj}” muutmine õnnestus. Allpool saate lisada uue {name}."
#, python-brace-format
-msgid "The {name} \"{obj}\" was changed successfully."
-msgstr "{name} \"{obj}\" muutmine õnnestus."
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name} “{obj}” muutmine õnnestus."
msgid ""
"Items must be selected in order to perform actions on them. No items have "
@@ -220,12 +219,12 @@ msgid "No action selected."
msgstr "Toiming valimata."
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" kustutati."
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s “%(obj)s” kustutamine õnnestus."
#, python-format
-msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
-msgstr ""
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
+msgstr "%(name)s ID-ga “%(key)s” ei eksisteeri. Võib-olla on see kustutatud?"
#, python-format
msgid "Add %s"
@@ -237,7 +236,7 @@ msgstr "Muuda %s"
#, python-format
msgid "View %s"
-msgstr ""
+msgstr "Vaata %s"
msgid "Database error"
msgstr "Andmebaasi viga"
@@ -295,7 +294,7 @@ msgstr "%(app)s administreerimine"
msgid "Page not found"
msgstr "Lehte ei leitud"
-msgid "We're sorry, but the requested page could not be found."
+msgid "We’re sorry, but the requested page could not be found."
msgstr "Vabandame, kuid soovitud lehte ei leitud."
msgid "Home"
@@ -311,7 +310,7 @@ msgid "Server Error (500)"
msgstr "Serveri Viga (500)"
msgid ""
-"There's been an error. It's been reported to the site administrators via "
+"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 ""
"Ilmnes viga. Sellest on e-posti teel teavitatud lehe administraatorit ja "
@@ -334,10 +333,10 @@ msgid "Clear selection"
msgstr "Tühjenda valik"
msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
+"First, enter a username and password. Then, you’ll be able to edit more user "
"options."
msgstr ""
-"Kõige pealt sisestage kasutajatunnus ja salasõna, seejärel on võimalik muuta "
+"Kõigepealt sisestage kasutajatunnus ja salasõna. Seejärel saate muuta "
"täiendavaid kasutajaandmeid."
msgid "Enter a username and password."
@@ -424,7 +423,7 @@ msgstr ""
msgid "Objects"
msgstr "Objektid"
-msgid "Yes, I'm sure"
+msgid "Yes, I’m sure"
msgstr "Jah, olen kindel"
msgid "No, take me back"
@@ -459,7 +458,7 @@ msgstr ""
"järgnevad objektid ja seotud objektid kustutatakse:"
msgid "View"
-msgstr ""
+msgstr "Vaata"
msgid "Delete?"
msgstr "Kustutan?"
@@ -478,8 +477,8 @@ msgstr "Rakenduse %(name)s moodulid"
msgid "Add"
msgstr "Lisa"
-msgid "You don't have permission to view or edit anything."
-msgstr ""
+msgid "You don’t have permission to view or edit anything."
+msgstr "Teil pole õigust midagi vaadata ega muuta."
msgid "Recent actions"
msgstr "Hiljutised toimingud"
@@ -494,13 +493,12 @@ msgid "Unknown content"
msgstr "Tundmatu sisu"
msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
+"Something’s wrong with your database installation. Make sure the appropriate "
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
"On tekkinud viga seoses andmebaasiga. Veenduge, et kõik vajalikud "
-"andmebaasitabelid on loodud ning et andmebaas on vastava kasutaja poolt "
-"loetav."
+"andmebaasitabelid on loodud ja andmebaas on loetav vastava kasutaja poolt."
#, python-format
msgid ""
@@ -523,11 +521,11 @@ msgid "Action"
msgstr "Toiming"
msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
+"This object doesn’t have a change history. It probably wasn’t added via this "
"admin site."
msgstr ""
-"Sellel objektil puudub muudatuste ajalugu. Tõenäoliselt ei kasutatud selle "
-"objekti lisamisel käesolevat administreerimislidest."
+"Sellel objektil puudub muudatuste ajalugu. Tõenäoliselt ei lisatud objekti "
+"läbi selle administreerimisliidese."
msgid "Show all"
msgstr "Näita kõiki"
@@ -536,7 +534,7 @@ msgid "Save"
msgstr "Salvesta"
msgid "Popup closing…"
-msgstr ""
+msgstr "Hüpikaken sulgub…"
msgid "Search"
msgstr "Otsing"
@@ -561,10 +559,10 @@ msgid "Save and continue editing"
msgstr "Salvesta ja jätka muutmist"
msgid "Save and view"
-msgstr ""
+msgstr "Salvesta ja vaata"
msgid "Close"
-msgstr ""
+msgstr "Sulge"
#, python-format
msgid "Change selected %(model)s"
@@ -591,12 +589,12 @@ msgid "Your password was changed."
msgstr "Teie salasõna on vahetatud."
msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
+"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 ""
-"Turvalisuse tagamiseks palun sisestage oma praegune salasõna ning seejärel "
-"uus salasõna.Veendumaks, et uue salasõna sisestamisel ei tekkinud vigu, "
-"palun sisestage see kaks korda."
+"Turvalisuse tagamiseks palun sisestage oma praegune salasõna ja seejärel uus "
+"salasõna. Veendumaks, et uue salasõna sisestamisel ei tekkinud vigu, palun "
+"sisestage see kaks korda."
msgid "Change my password"
msgstr "Muuda salasõna"
@@ -631,18 +629,18 @@ msgstr ""
"kasutatud. Esitage uue salasõna taotlus uuesti."
msgid ""
-"We've emailed you instructions for setting your password, if an account "
+"We’ve emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgstr ""
-"Saatsime teile parooli muutmise juhendi, kui teie poolt sisestatud e-posti "
-"aadressiga konto on olemas. Peaksite selle lähiajal kätte saama."
+"Saatsime teile meilile parooli muutmise juhendi. Kui teie poolt sisestatud e-"
+"posti aadressiga konto on olemas, siis jõuab kiri peagi kohale."
msgid ""
-"If you don't receive an email, please make sure you've entered the address "
+"If you don’t receive an email, please make sure you’ve entered the address "
"you registered with, and check your spam folder."
msgstr ""
-"Kui te ei saa kirja siis kontrollige, et sisestasite e-posti aadressi "
-"millega registreerisite ning kontrollige oma rämpsposti kausta."
+"Kui te ei saa kirja kätte siis veenduge, et sisestasite just selle e-posti "
+"aadressi, millega registreerisite. Kontrollige ka oma rämpsposti kausta."
#, python-format
msgid ""
@@ -655,8 +653,8 @@ msgstr ""
msgid "Please go to the following page and choose a new password:"
msgstr "Palun minge järmisele lehele ning sisestage uus salasõna"
-msgid "Your username, in case you've forgotten:"
-msgstr "Teie kasutajatunnus juhul, kui olete unustanud:"
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Teie kasutajatunnus juhuks, kui olete unustanud:"
msgid "Thanks for using our site!"
msgstr "Täname meie lehte külastamast!"
@@ -666,11 +664,11 @@ msgid "The %(site_name)s team"
msgstr "%(site_name)s meeskond"
msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
+"Forgotten your password? Enter your email address below, and we’ll email "
"instructions for setting a new one."
msgstr ""
-"Unustasite oma parooli? Sisestage allpool oma e-posti aadress ja me saadame "
-"teile juhendi, kuidas parooli muuta."
+"Unustasite oma salasõna? Sisestage oma e-posti aadress ja saadame meilile "
+"juhised uue saamiseks."
msgid "Email address:"
msgstr "E-posti aadress:"
@@ -691,7 +689,7 @@ msgstr "Vali %s mida muuta"
#, python-format
msgid "Select %s to view"
-msgstr ""
+msgstr "Vali %s vaatamiseks"
msgid "Date:"
msgstr "Kuupäev:"
diff --git a/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo
index 9b3fafbc139e..1c8e66387a30 100644
Binary files a/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo differ
diff --git a/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
index ae6713fb751e..21e137f4c4b1 100644
--- a/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
+++ b/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
@@ -5,13 +5,14 @@
# Jannis Leidel , 2011
# Janno Liivak , 2013-2015
# Martin Pajuste , 2016
+# Ragnar Rebase , 2019
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-17 23:12+0200\n"
-"PO-Revision-Date: 2017-09-19 16:41+0000\n"
-"Last-Translator: Martin Pajuste \n"
+"POT-Creation-Date: 2018-05-17 11:50+0200\n"
+"PO-Revision-Date: 2019-12-28 01:38+0000\n"
+"Last-Translator: Ragnar Rebase \n"
"Language-Team: Estonian (http://www.transifex.com/django/django/language/"
"et/)\n"
"MIME-Version: 1.0\n"
@@ -90,16 +91,31 @@ msgid ""
"individual fields yet. Please click OK to save. You'll need to re-run the "
"action."
msgstr ""
-"Valisid toimingu, kuid pole salvestanud muudatusi lahtrites. Salvestamiseks "
-"palun vajuta OK. Pead toimingu uuesti käivitama."
+"Valisite toimingu, kuid pole salvestanud muudatusi lahtrites. Salvestamiseks "
+"palun vajutage OK. Peate toimingu uuesti käivitama."
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 ""
-"Valisid toimingu, kuid sa pole ühtegi lahtrit muutnud. Tõenäoliselt peaksid "
-"vajutama 'Mine' mitte 'Salvesta' nuppu."
+"Valisite toimingu, kuid ei muutnud ühtegi lahtrit. Tõenäoliselt otsite Mine "
+"mitte Salvesta nuppu."
+
+msgid "Now"
+msgstr "Praegu"
+
+msgid "Midnight"
+msgstr "Kesköö"
+
+msgid "6 a.m."
+msgstr "6 hommikul"
+
+msgid "Noon"
+msgstr "Keskpäev"
+
+msgid "6 p.m."
+msgstr "6 õhtul"
#, javascript-format
msgid "Note: You are %s hour ahead of server time."
@@ -113,27 +129,12 @@ msgid_plural "Note: You are %s hours behind server time."
msgstr[0] "Märkus: Olete %s tund serveri ajast maas."
msgstr[1] "Märkus: Olete %s tundi serveri ajast maas."
-msgid "Now"
-msgstr "Praegu"
-
msgid "Choose a Time"
msgstr "Vali aeg"
msgid "Choose a time"
msgstr "Vali aeg"
-msgid "Midnight"
-msgstr "Kesköö"
-
-msgid "6 a.m."
-msgstr "6 hommikul"
-
-msgid "Noon"
-msgstr "Keskpäev"
-
-msgid "6 p.m."
-msgstr "6 õhtul"
-
msgid "Cancel"
msgstr "Tühista"
diff --git a/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo b/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo
index ad734b846271..cc210211c84e 100644
Binary files a/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/gd/LC_MESSAGES/django.po b/django/contrib/admin/locale/gd/LC_MESSAGES/django.po
index ef8f4bc789a6..9fd3338d2346 100644
--- a/django/contrib/admin/locale/gd/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/gd/LC_MESSAGES/django.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-21 14:16-0300\n"
-"PO-Revision-Date: 2018-05-29 09:32+0000\n"
+"POT-Creation-Date: 2019-09-08 17:27+0200\n"
+"PO-Revision-Date: 2019-12-13 12:51+0000\n"
"Last-Translator: GunChleoc\n"
"Language-Team: Gaelic, Scottish (http://www.transifex.com/django/django/"
"language/gd/)\n"
@@ -22,7 +22,7 @@ msgstr ""
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Chaidh %(count)d %(items)s a sguabadh às gu soirbheachail."
+msgstr "Chaidh %(count)d %(items)s a sguabadh às."
#, python-format
msgid "Cannot delete %(name)s"
@@ -112,7 +112,7 @@ msgid "object id"
msgstr "id an oibceict"
#. Translators: 'repr' means representation
-#. (https://docs.python.org/3/library/functions.html#repr)
+#. (https://docs.python.org/library/functions.html#repr)
msgid "object repr"
msgstr "riochdachadh oibseict"
@@ -129,22 +129,22 @@ msgid "log entries"
msgstr "innteartan loga"
#, python-format
-msgid "Added \"%(object)s\"."
+msgid "Added “%(object)s”."
msgstr "Chaidh “%(object)s” a chur ris."
#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Chaidh “%(object)s” atharrachadh - %(changes)s"
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Chaidh “%(object)s” atharrachadh – %(changes)s"
#, python-format
-msgid "Deleted \"%(object)s.\""
+msgid "Deleted “%(object)s.”"
msgstr "Chaidh “%(object)s” a sguabadh às."
msgid "LogEntry Object"
msgstr "Oibseact innteart an loga"
#, python-brace-format
-msgid "Added {name} \"{object}\"."
+msgid "Added {name} “{object}”."
msgstr "Chaidh {name} “{object}” a chur ris."
msgid "Added."
@@ -154,7 +154,7 @@ msgid "and"
msgstr "agus"
#, python-brace-format
-msgid "Changed {fields} for {name} \"{object}\"."
+msgid "Changed {fields} for {name} “{object}”."
msgstr "Chaidh {fields} atharrachadh airson {name} “{object}”."
#, python-brace-format
@@ -162,7 +162,7 @@ msgid "Changed {fields}."
msgstr "Chaidh {fields} atharrachadh."
#, python-brace-format
-msgid "Deleted {name} \"{object}\"."
+msgid "Deleted {name} “{object}”."
msgstr "Chaidh {name} “{object}” a sguabadh às."
msgid "No fields changed."
@@ -171,50 +171,47 @@ msgstr "Cha deach raon atharrachadh."
msgid "None"
msgstr "Chan eil gin"
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
msgstr "Cum sìos “Control” no “Command” air Mac gus iomadh nì a thaghadh."
#, python-brace-format
-msgid "The {name} \"{obj}\" was added successfully."
-msgstr "Chaidh {name} “{obj}” a chur ris gu soirbheachail."
+msgid "The {name} “{obj}” was added successfully."
+msgstr "Chaidh {name} “{obj}” a chur ris."
msgid "You may edit it again below."
msgstr "’S urrainn dhut a dheasachadh a-rithist gu h-ìosal."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was added successfully. You may add another {name} "
-"below."
+"The {name} “{obj}” was added successfully. You may add another {name} below."
msgstr ""
-"Chaidh {name} “%{obj}” a chur ris gu soirbheachail. ’S urrainn dhut {name} "
-"eile a chur ris gu h-ìosal."
+"Chaidh {name} “%{obj}” a chur ris. ’S urrainn dhut {name} eile a chur ris gu "
+"h-ìosal."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+"The {name} “{obj}” was changed successfully. You may edit it again below."
msgstr ""
-"Chaidh {name} “{obj}” atharrachadh gu soirbheachail. ’S urrainn dhut a "
-"dheasachadh a-rithist gu h-ìosal."
+"Chaidh {name} “{obj}” atharrachadh. ’S urrainn dhut a dheasachadh a-rithist "
+"gu h-ìosal."
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
msgstr ""
-"Chaidh {name} “{obj}” a chur ris gu soirbheachail. ’S urrainn dhut a "
-"dheasachadh a-rithist gu h-ìosal."
+"Chaidh {name} “{obj}” a chur ris. ’S urrainn dhut a dheasachadh a-rithist gu "
+"h-ìosal."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"The {name} “{obj}” was changed successfully. You may add another {name} "
"below."
msgstr ""
-"Chaidh {name} “{obj}” atharrachadh gu soirbheachail. ’S urrainn dhut {name} "
-"eile a chur ris gu h-ìosal."
+"Chaidh {name} “{obj}” atharrachadh. ’S urrainn dhut {name} eile a chur ris "
+"gu h-ìosal."
#, python-brace-format
-msgid "The {name} \"{obj}\" was changed successfully."
-msgstr "Chaidh {name} “{obj}” atharrachadh gu soirbheachail."
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "Chaidh {name} “{obj}” atharrachadh."
msgid ""
"Items must be selected in order to perform actions on them. No items have "
@@ -227,11 +224,11 @@ msgid "No action selected."
msgstr "Cha deach gnìomh a thaghadh."
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Chaidh %(name)s “%(obj)s” a sguabadh às gu soirbheachail."
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "Chaidh %(name)s “%(obj)s” a sguabadh às."
#, python-format
-msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
msgstr ""
"Chan eil %(name)s leis an ID \"%(key)s\" ann. 'S dòcha gun deach a sguabadh "
"às?"
@@ -254,10 +251,10 @@ msgstr "Mearachd an stòir-dhàta"
#, python-format
msgid "%(count)s %(name)s was changed successfully."
msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Chaidh %(count)s %(name)s atharrachadh gu soirbheachail."
-msgstr[1] "Chaidh %(count)s %(name)s atharrachadh gu soirbheachail."
-msgstr[2] "Chaidh %(count)s %(name)s atharrachadh gu soirbheachail."
-msgstr[3] "Chaidh %(count)s %(name)s atharrachadh gu soirbheachail."
+msgstr[0] "Chaidh %(count)s %(name)s atharrachadh."
+msgstr[1] "Chaidh %(count)s %(name)s atharrachadh."
+msgstr[2] "Chaidh %(count)s %(name)s atharrachadh."
+msgstr[3] "Chaidh %(count)s %(name)s atharrachadh."
#, python-format
msgid "%(total_count)s selected"
@@ -308,7 +305,7 @@ msgstr "Rianachd %(app)s"
msgid "Page not found"
msgstr "Cha deach an duilleag a lorg"
-msgid "We're sorry, but the requested page could not be found."
+msgid "We’re sorry, but the requested page could not be found."
msgstr "Tha sinn duilich ach cha do lorg sinn an duilleag a dh’iarr thu."
msgid "Home"
@@ -324,7 +321,7 @@ msgid "Server Error (500)"
msgstr "Mearachd an fhrithealaiche (500)"
msgid ""
-"There's been an error. It's been reported to the site administrators via "
+"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 ""
"Chaidh rudeigin cearr. Fhuair rianairean na làraich aithris air a’ phost-d "
@@ -349,7 +346,7 @@ msgid "Clear selection"
msgstr "Falamhaich an taghadh"
msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
+"First, enter a username and password. Then, you’ll be able to edit more user "
"options."
msgstr ""
"Cuir ainm-cleachdaiche is facal-faire a-steach an toiseach. ’S urrainn dhut "
@@ -441,8 +438,8 @@ msgstr ""
msgid "Objects"
msgstr "Oibseactan"
-msgid "Yes, I'm sure"
-msgstr "Tha, tha mi cinnteach"
+msgid "Yes, I’m sure"
+msgstr "Tha mi cinnteach"
msgid "No, take me back"
msgstr "Chan eil, air ais leam"
@@ -497,7 +494,7 @@ msgstr "Modailean ann an aplacaid %(name)s"
msgid "Add"
msgstr "Cuir ris"
-msgid "You don't have permission to view or edit anything."
+msgid "You don’t have permission to view or edit anything."
msgstr "Chan eil cead agad gus dad a shealltainn no a dheasachadh."
msgid "Recent actions"
@@ -513,7 +510,7 @@ msgid "Unknown content"
msgstr "Susbaint nach aithne dhuinn"
msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
+"Something’s wrong with your database installation. Make sure the appropriate "
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
@@ -543,7 +540,7 @@ msgid "Action"
msgstr "Gnìomh"
msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
+"This object doesn’t have a change history. It probably wasn’t added via this "
"admin site."
msgstr ""
"Chan eil eachdraidh nan atharraichean aig an oibseact seo. Dh’fhaoidte nach "
@@ -555,25 +552,9 @@ msgstr "Seall na h-uile"
msgid "Save"
msgstr "Sàbhail"
-msgid "Popup closing..."
+msgid "Popup closing…"
msgstr "Tha a’ phriob-uinneag ’ga dùnadh…"
-#, python-format
-msgid "Change selected %(model)s"
-msgstr "Atharraich a’ %(model)s a thagh thu"
-
-#, python-format
-msgid "View selected %(model)s"
-msgstr "Seall %(model)s a thagh thu"
-
-#, python-format
-msgid "Add another %(model)s"
-msgstr "Cuir %(model)s eile ris"
-
-#, python-format
-msgid "Delete selected %(model)s"
-msgstr "Sguab às a’ %(model)s a thagh thu"
-
msgid "Search"
msgstr "Lorg"
@@ -604,6 +585,18 @@ msgstr "Sàbhail is seall"
msgid "Close"
msgstr "Dùin"
+#, python-format
+msgid "Change selected %(model)s"
+msgstr "Atharraich a’ %(model)s a thagh thu"
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr "Cuir %(model)s eile ris"
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr "Sguab às a’ %(model)s a thagh thu"
+
msgid "Thanks for spending some quality time with the Web site today."
msgstr ""
"Mòran taing gun do chuir thu seachad deagh-àm air an làrach-lìn an-diugh."
@@ -618,7 +611,7 @@ msgid "Your password was changed."
msgstr "Chaidh am facal-faire agad atharrachadh."
msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
+"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 ""
"Cuir a-steach an seann fhacal-faire agad ri linn tèarainteachd agus cuir a-"
@@ -661,7 +654,7 @@ msgstr ""
"ùr."
msgid ""
-"We've emailed you instructions for setting your password, if an account "
+"We’ve emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgstr ""
"Chuir sinn stiùireadh thugad air mar a dh’ath-shuidhicheas tu am facal-faire "
@@ -669,10 +662,10 @@ msgstr ""
"dhut fhaighinn a dh’aithghearr."
msgid ""
-"If you don't receive an email, please make sure you've entered the address "
+"If you don’t receive an email, please make sure you’ve entered the address "
"you registered with, and check your spam folder."
msgstr ""
-"Mura faigh thu post-d, dèan cinnteach gun do chuir thu an-steach an seòladh "
+"Mura faigh thu post-d, dèan cinnteach gun do chuir thu a-steach an seòladh "
"puist-d leis an do chlàraich thu agus thoir sùil air pasgan an spama agad."
#, python-format
@@ -687,7 +680,7 @@ msgstr ""
msgid "Please go to the following page and choose a new password:"
msgstr "Tadhail air an duilleag seo is tagh facal-faire ùr:"
-msgid "Your username, in case you've forgotten:"
+msgid "Your username, in case you’ve forgotten:"
msgstr ""
"Seo an t-ainm-cleachdaiche agad air eagal ’s gun do dhìochuimhnich thu e:"
@@ -699,7 +692,7 @@ msgid "The %(site_name)s team"
msgstr "Sgioba %(site_name)s"
msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
+"Forgotten your password? Enter your email address below, and we’ll email "
"instructions for setting a new one."
msgstr ""
"Na dhìochuimhnich thu am facal-faire agad? Cuir a-steach an seòladh puist-d "
diff --git a/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo b/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo
index 1f7329445173..59c0813bbe72 100644
Binary files a/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/nb/LC_MESSAGES/django.po b/django/contrib/admin/locale/nb/LC_MESSAGES/django.po
index c457c3de2565..ed32303788d3 100644
--- a/django/contrib/admin/locale/nb/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/nb/LC_MESSAGES/django.po
@@ -4,7 +4,7 @@
# Jannis Leidel , 2011
# jensadne , 2013-2014
# Jon , 2015-2016
-# Jon , 2017-2019
+# Jon , 2017-2020
# Jon , 2013
# Jon , 2011,2013
# Sigurd Gartmann , 2012
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-01-16 20:42+0100\n"
-"PO-Revision-Date: 2019-05-06 13:01+0000\n"
+"POT-Creation-Date: 2019-09-08 17:27+0200\n"
+"PO-Revision-Date: 2020-01-21 12:21+0000\n"
"Last-Translator: Jon \n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/"
"language/nb/)\n"
@@ -133,22 +133,22 @@ msgid "log entries"
msgstr "logginnlegg"
#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "La til «%(object)s»."
+msgid "Added “%(object)s”."
+msgstr "La til \"%(object)s\"."
#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Endret «%(object)s» - %(changes)s"
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "Endret \"%(object)s\" — %(changes)s"
#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Slettet «%(object)s»."
+msgid "Deleted “%(object)s.”"
+msgstr "Slettet \"%(object)s\"."
msgid "LogEntry Object"
msgstr "LogEntry-objekt"
#, python-brace-format
-msgid "Added {name} \"{object}\"."
+msgid "Added {name} “{object}”."
msgstr "La til {name} \"{object}\"."
msgid "Added."
@@ -158,7 +158,7 @@ msgid "and"
msgstr "og"
#, python-brace-format
-msgid "Changed {fields} for {name} \"{object}\"."
+msgid "Changed {fields} for {name} “{object}”."
msgstr "Endret {fields} for {name} \"{object}\"."
#, python-brace-format
@@ -166,7 +166,7 @@ msgid "Changed {fields}."
msgstr "Endret {fields}."
#, python-brace-format
-msgid "Deleted {name} \"{object}\"."
+msgid "Deleted {name} “{object}”."
msgstr "Slettet {name} \"{object}\"."
msgid "No fields changed."
@@ -175,13 +175,12 @@ msgstr "Ingen felt endret."
msgid "None"
msgstr "Ingen"
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
msgstr ""
-"Hold nede «Control», eller «Command» på en Mac, for å velge mer enn en."
+"Hold nede «Control», eller «Command» på en Mac, for å velge mer enn én."
#, python-brace-format
-msgid "The {name} \"{obj}\" was added successfully."
+msgid "The {name} “{obj}” was added successfully."
msgstr "{name} \"{obj}\" ble lagt til."
msgid "You may edit it again below."
@@ -189,29 +188,27 @@ msgstr "Du kan endre det igjen nedenfor."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was added successfully. You may add another {name} "
-"below."
+"The {name} “{obj}” was added successfully. You may add another {name} below."
msgstr "{name} \"{obj}\" ble lagt til. Du kan legge til en ny {name} nedenfor."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+"The {name} “{obj}” was changed successfully. You may edit it again below."
msgstr "{name} \"{obj}\" ble endret. Du kan redigere videre nedenfor."
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
msgstr "{name} \"{obj}\" ble lagt til. Du kan redigere videre nedenfor."
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"The {name} “{obj}” was changed successfully. You may add another {name} "
"below."
msgstr "{name} \"{obj}\" ble endret. Du kan legge til en ny {name} nedenfor."
#, python-brace-format
-msgid "The {name} \"{obj}\" was changed successfully."
-msgstr "{name} \"{obj}\" ble lagt til."
+msgid "The {name} “{obj}” was changed successfully."
+msgstr "{name} \"{obj}\" ble endret."
msgid ""
"Items must be selected in order to perform actions on them. No items have "
@@ -224,11 +221,11 @@ msgid "No action selected."
msgstr "Ingen handling valgt."
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s «%(obj)s» ble slettet."
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" ble slettet."
#, python-format
-msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
msgstr "%(name)s med ID \"%(key)s\" eksisterer ikke. Kanskje det ble slettet?"
#, python-format
@@ -299,7 +296,7 @@ msgstr "%(app)s-administrasjon"
msgid "Page not found"
msgstr "Fant ikke siden"
-msgid "We're sorry, but the requested page could not be found."
+msgid "We’re sorry, but the requested page could not be found."
msgstr "Beklager, men siden du spør etter finnes ikke."
msgid "Home"
@@ -315,7 +312,7 @@ msgid "Server Error (500)"
msgstr "Tjenerfeil (500)"
msgid ""
-"There's been an error. It's been reported to the site administrators via "
+"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 ""
"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
@@ -338,7 +335,7 @@ msgid "Clear selection"
msgstr "Nullstill valg"
msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
+"First, enter a username and password. Then, you’ll be able to edit more user "
"options."
msgstr ""
"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å "
@@ -427,7 +424,7 @@ msgstr ""
msgid "Objects"
msgstr "Objekter"
-msgid "Yes, I'm sure"
+msgid "Yes, I’m sure"
msgstr "Ja, jeg er sikker"
msgid "No, take me back"
@@ -482,7 +479,7 @@ msgstr "Modeller i %(name)s-applikasjonen"
msgid "Add"
msgstr "Legg til"
-msgid "You don't have permission to view or edit anything."
+msgid "You don’t have permission to view or edit anything."
msgstr "Du har ikke tillatelse til å vise eller endre noe."
msgid "Recent actions"
@@ -498,7 +495,7 @@ msgid "Unknown content"
msgstr "Ukjent innhold"
msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
+"Something’s wrong with your database installation. Make sure the appropriate "
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
@@ -526,7 +523,7 @@ msgid "Action"
msgstr "Handling"
msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
+"This object doesn’t have a change history. It probably wasn’t added via this "
"admin site."
msgstr ""
"Dette objektet har ingen endringshistorikk. Det ble sannsynligvis ikke lagt "
@@ -594,7 +591,7 @@ msgid "Your password was changed."
msgstr "Ditt passord ble endret."
msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
+"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 ""
"Av sikkerhetsgrunner må du oppgi ditt gamle passord. Deretter oppgir du det "
@@ -632,7 +629,7 @@ msgstr ""
"Vennligst nullstill passordet ditt på nytt."
msgid ""
-"We've emailed you instructions for setting your password, if an account "
+"We’ve emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgstr ""
"Vi har sendt deg en e-post med instruksjoner for nullstilling av passord, "
@@ -640,11 +637,11 @@ msgstr ""
"kort tid."
msgid ""
-"If you don't receive an email, please make sure you've entered the address "
+"If you don’t receive an email, please make sure you’ve entered the address "
"you registered with, and check your spam folder."
msgstr ""
-"Hvis du ikke mottar en epost, sjekk igjen at du har oppgitt den adressen du "
-"er registrert med og sjekk ditt spam filter."
+"Hvis du ikke mottar en e-post, sjekk igjen at du har oppgitt den adressen du "
+"er registrert med og sjekk spam-mappen din."
#, python-format
msgid ""
@@ -657,7 +654,7 @@ msgstr ""
msgid "Please go to the following page and choose a new password:"
msgstr "Vennligst gå til følgende side og velg et nytt passord:"
-msgid "Your username, in case you've forgotten:"
+msgid "Your username, in case you’ve forgotten:"
msgstr "Brukernavnet ditt, i tilfelle du har glemt det:"
msgid "Thanks for using our site!"
@@ -668,7 +665,7 @@ msgid "The %(site_name)s team"
msgstr "Hilsen %(site_name)s"
msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
+"Forgotten your password? Enter your email address below, and we’ll email "
"instructions for setting a new one."
msgstr ""
"Glemt passordet ditt? Oppgi e-postadressen din under, så sender vi deg en e-"
diff --git a/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo
index 8423b8e20568..903f979ff1e4 100644
Binary files a/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/ne/LC_MESSAGES/django.po b/django/contrib/admin/locale/ne/LC_MESSAGES/django.po
index c7e4294a492e..a328113848d6 100644
--- a/django/contrib/admin/locale/ne/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/ne/LC_MESSAGES/django.po
@@ -2,13 +2,14 @@
#
# Translators:
# Sagar Chalise , 2011
+# Santosh Purbey , 2020
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-01-19 16:49+0100\n"
-"PO-Revision-Date: 2017-10-07 02:46+0000\n"
-"Last-Translator: Sagar Chalise \n"
+"POT-Creation-Date: 2019-09-08 17:27+0200\n"
+"PO-Revision-Date: 2020-01-21 09:52+0000\n"
+"Last-Translator: Santosh Purbey \n"
"Language-Team: Nepali (http://www.transifex.com/django/django/language/ne/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -62,10 +63,10 @@ msgid "This year"
msgstr "यो साल"
msgid "No date"
-msgstr ""
+msgstr "मिति छैन"
msgid "Has date"
-msgstr ""
+msgstr "मिति छ"
#, python-format
msgid ""
@@ -85,6 +86,15 @@ msgstr "अर्को %(verbose_name)s थप्नुहोस ।"
msgid "Remove"
msgstr "हटाउनुहोस"
+msgid "Addition"
+msgstr "थप"
+
+msgid "Change"
+msgstr "फेर्नुहोस"
+
+msgid "Deletion"
+msgstr "हटाइयो"
+
msgid "action time"
msgstr "कार्य समय"
@@ -98,7 +108,7 @@ msgid "object id"
msgstr "वस्तु परिचय"
#. Translators: 'repr' means representation
-#. (https://docs.python.org/3/library/functions.html#repr)
+#. (https://docs.python.org/library/functions.html#repr)
msgid "object repr"
msgstr ""
@@ -115,23 +125,23 @@ msgid "log entries"
msgstr "लगहरु"
#, python-format
-msgid "Added \"%(object)s\"."
-msgstr " \"%(object)s\" थपिएको छ ।"
+msgid "Added “%(object)s”."
+msgstr "थपियो “%(object)s”."
#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" - %(changes)s फेरियो ।"
+msgid "Changed “%(object)s” — %(changes)s"
+msgstr "बदलियो “%(object)s” — %(changes)s"
#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" मेटिएको छ ।"
+msgid "Deleted “%(object)s.”"
+msgstr "हटाईयो “%(object)s.”"
msgid "LogEntry Object"
msgstr "लग ईन्ट्री वस्तु"
#, python-brace-format
-msgid "Added {name} \"{object}\"."
-msgstr ""
+msgid "Added {name} “{object}”."
+msgstr "थपियो {name} “{object}”."
msgid "Added."
msgstr "थपिएको छ ।"
@@ -140,7 +150,7 @@ msgid "and"
msgstr "र"
#, python-brace-format
-msgid "Changed {fields} for {name} \"{object}\"."
+msgid "Changed {fields} for {name} “{object}”."
msgstr ""
#, python-brace-format
@@ -148,7 +158,7 @@ msgid "Changed {fields}."
msgstr ""
#, python-brace-format
-msgid "Deleted {name} \"{object}\"."
+msgid "Deleted {name} “{object}”."
msgstr ""
msgid "No fields changed."
@@ -157,38 +167,38 @@ msgstr "कुनै फाँट फेरिएन ।"
msgid "None"
msgstr "शुन्य"
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
msgstr ""
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was added successfully. You may edit it again below."
+msgid "The {name} “{obj}” was added successfully."
msgstr ""
+msgid "You may edit it again below."
+msgstr "तपाईं तल फेरि सम्पादन गर्न सक्नुहुन्छ।"
+
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was added successfully. You may add another {name} "
-"below."
+"The {name} “{obj}” was added successfully. You may add another {name} below."
msgstr ""
#, python-brace-format
-msgid "The {name} \"{obj}\" was added successfully."
+msgid ""
+"The {name} “{obj}” was changed successfully. You may edit it again below."
msgstr ""
#, python-brace-format
-msgid ""
-"The {name} \"{obj}\" was changed successfully. You may edit it again below."
+msgid "The {name} “{obj}” was added successfully. You may edit it again below."
msgstr ""
#, python-brace-format
msgid ""
-"The {name} \"{obj}\" was changed successfully. You may add another {name} "
+"The {name} “{obj}” was changed successfully. You may add another {name} "
"below."
msgstr ""
#, python-brace-format
-msgid "The {name} \"{obj}\" was changed successfully."
+msgid "The {name} “{obj}” was changed successfully."
msgstr ""
msgid ""
@@ -200,11 +210,11 @@ msgid "No action selected."
msgstr "कार्य छानिएको छैन ।"
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" सफलतापूर्वक मेटियो । "
+msgid "The %(name)s “%(obj)s” was deleted successfully."
+msgstr ""
#, python-format
-msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?"
+msgid "%(name)s with ID “%(key)s” doesn’t exist. Perhaps it was deleted?"
msgstr ""
#, python-format
@@ -215,6 +225,10 @@ msgstr "%s थप्नुहोस"
msgid "Change %s"
msgstr "%s परिवर्तित ।"
+#, python-format
+msgid "View %s"
+msgstr ""
+
msgid "Database error"
msgstr "डाटाबेस त्रुटि"
@@ -269,8 +283,8 @@ msgstr ""
msgid "Page not found"
msgstr "पृष्ठ भेटिएन"
-msgid "We're sorry, but the requested page could not be found."
-msgstr "क्षमापार्थी छौं तर अनुरोध गरिएको पृष्ठ भेटिएन ।"
+msgid "We’re sorry, but the requested page could not be found."
+msgstr "हामी क्षमाप्रार्थी छौं, तर अनुरोध गरिएको पृष्ठ फेला पार्न सकिएन।"
msgid "Home"
msgstr "गृह"
@@ -285,11 +299,11 @@ msgid "Server Error (500)"
msgstr "सर्भर त्रुटि (५००)"
msgid ""
-"There's been an error. It's been reported to the site administrators via "
+"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 ""
-"त्रुटी भयो । साइट प्रशासकलाई ई-मेलबाट खबर गरिएको छ र चाँडै समाधान हुनेछ । धैर्यताको "
-"लागि धन्यवाद ।"
+"त्यहाँ त्रुटि रहेको छ। यो ईमेल मार्फत साइट प्रशासकहरूलाई सूचित गरिएको छ र तुरुन्तै ठिक "
+"गर्नुपर्नेछ। तपाईको धैर्यताको लागि धन्यबाद।"
msgid "Run the selected action"
msgstr "छानिएको कार्य गर्नुहोस ।"
@@ -308,11 +322,11 @@ msgid "Clear selection"
msgstr "चुनेको कुरा हटाउनुहोस ।"
msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
+"First, enter a username and password. Then, you’ll be able to edit more user "
"options."
msgstr ""
-"सर्वप्रथम प्रयोगकर्ता नाम र पासवर्ड हाल्नुहोस । अनिपछि तपाइ प्रयोगकर्ताका विकल्पहरु "
-"संपादन गर्न सक्नुहुनेछ ।"
+"पहिले, प्रयोगकर्ता नाम र पासवर्ड प्रविष्ट गर्नुहोस्। त्यसो भए, तपाई बढि उपयोगकर्ता "
+"विकल्पहरू सम्पादन गर्न सक्षम हुनुहुनेछ।"
msgid "Enter a username and password."
msgstr "प्रयोगकर्ता नाम र पासवर्ड राख्नुहोस।"
@@ -321,7 +335,7 @@ msgid "Change password"
msgstr "पासवर्ड फेर्नुहोस "
msgid "Please correct the error below."
-msgstr "कृपया तलका त्रुटिहरु सच्याउनुहोस ।"
+msgstr "कृपया तल त्रुटि सुधार गर्नुहोस्।"
msgid "Please correct the errors below."
msgstr "कृपया तलका त्रुटी सुधार्नु होस ।"
@@ -390,8 +404,8 @@ msgstr ""
msgid "Objects"
msgstr ""
-msgid "Yes, I'm sure"
-msgstr "हुन्छ, म पक्का छु ।"
+msgid "Yes, I’m sure"
+msgstr ""
msgid "No, take me back"
msgstr ""
@@ -418,8 +432,8 @@ msgid ""
"following objects and their related items will be deleted:"
msgstr "%(objects_name)s "
-msgid "Change"
-msgstr "फेर्नुहोस"
+msgid "View"
+msgstr ""
msgid "Delete?"
msgstr "मेट्नुहुन्छ ?"
@@ -438,14 +452,14 @@ msgstr "%(name)s एप्लिकेसनमा भएको मोडेल
msgid "Add"
msgstr "थप्नुहोस "
-msgid "You don't have permission to edit anything."
-msgstr "तपाइलाई केही पनि संपादन गर्ने अनुमति छैन ।"
+msgid "You don’t have permission to view or edit anything."
+msgstr "तपाईंसँग केहि पनि हेर्न वा सम्पादन गर्न अनुमति छैन।"
msgid "Recent actions"
-msgstr ""
+msgstr "भर्खरका कार्यहरू"
msgid "My actions"
-msgstr ""
+msgstr "मेरो कार्यहरू"
msgid "None available"
msgstr "कुनै पनि उपलब्ध छैन ।"
@@ -454,18 +468,21 @@ msgid "Unknown content"
msgstr "अज्ञात सामग्री"
msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
+"Something’s wrong with your database installation. Make sure the appropriate "
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
-"डाटाबेस स्थापनामा केही त्रुटी छ । सम्वद्ध टेबल बनाएको र प्रयोगकर्तालाई डाटाबेसमा अनुमति "
-"भएको छ छैन जाच्नुहोस ।"
+"तपाईंको डाटाबेस स्थापनामा केहि गलत छ। निश्चित गर्नुहोस् कि उपयुक्त डाटाबेस टेबलहरू सिर्जना "
+"गरिएको छ, र यो सुनिश्चित गर्नुहोस् कि उपयुक्त डाटाबेस उपयुक्त प्रयोगकर्ताद्वारा पढ्न योग्य "
+"छ।"
#, 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 ""
+"तपाईं यस %(username)s रूपमा प्रमाणिकरण हुनुहुन्छ, तर यस पृष्ठ पहुँच गर्न अधिकृत हुनुहुन्न। के "
+"तपाइँ बिभिन्न खातामा लगईन गर्न चाहानुहुन्छ?"
msgid "Forgotten your password or username?"
msgstr "पासवर्ड अथवा प्रयोगकर्ता नाम भुल्नुभयो ।"
@@ -480,9 +497,9 @@ msgid "Action"
msgstr "कार्य:"
msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
+"This object doesn’t have a change history. It probably wasn’t added via this "
"admin site."
-msgstr "यो अब्जेक्टको पुर्व परिवर्तन छैन । यो यस "
+msgstr ""
msgid "Show all"
msgstr "सबै देखाउनुहोस"
@@ -490,19 +507,7 @@ msgstr "सबै देखाउनुहोस"
msgid "Save"
msgstr "बचत गर्नुहोस"
-msgid "Popup closing..."
-msgstr ""
-
-#, python-format
-msgid "Change selected %(model)s"
-msgstr ""
-
-#, python-format
-msgid "Add another %(model)s"
-msgstr ""
-
-#, python-format
-msgid "Delete selected %(model)s"
+msgid "Popup closing…"
msgstr ""
msgid "Search"
@@ -527,6 +532,24 @@ msgstr "बचत गरेर अर्को थप्नुहोस"
msgid "Save and continue editing"
msgstr "बचत गरेर संशोधन जारी राख्नुहोस"
+msgid "Save and view"
+msgstr ""
+
+msgid "Close"
+msgstr ""
+
+#, python-format
+msgid "Change selected %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Add another %(model)s"
+msgstr ""
+
+#, python-format
+msgid "Delete selected %(model)s"
+msgstr ""
+
msgid "Thanks for spending some quality time with the Web site today."
msgstr "वेब साइटमा समय बिताउनु भएकोमा धन्यवाद ।"
@@ -540,11 +563,9 @@ msgid "Your password was changed."
msgstr "तपाइको पासवर्ड फेरिएको छ ।"
msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
+"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 ""
-"सुरक्षाको निम्ति आफ्नो पुरानो पासवर्ड राख्नुहोस र कृपया दोहर्याएर आफ्नो नयाँ पासवर्ड "
-"राख्नुहोस ताकी प्रमाणीकरण होस । "
msgid "Change my password"
msgstr "मेरो पासवर्ड फेर्नुहोस "
@@ -575,16 +596,14 @@ msgid ""
msgstr "पासवर्ड पुनर्स्थापना प्रयोग भइसकेको छ । कृपया नयाँ पासवर्ड रिसेट माग्नुहोस ।"
msgid ""
-"We've emailed you instructions for setting your password, if an account "
+"We’ve emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgstr ""
msgid ""
-"If you don't receive an email, please make sure you've entered the address "
+"If you don’t receive an email, please make sure you’ve entered the address "
"you registered with, and check your spam folder."
msgstr ""
-"ई-मेल नपाइए मा कृपया ई-मेल ठेगाना सही राखेको नराखेको जाँच गर्नु होला र साथै आफ्नो ई-"
-"मेलको स्प्याम पनि जाँच गर्नु होला ।"
#, python-format
msgid ""
@@ -596,8 +615,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 "Your username, in case you’ve forgotten:"
+msgstr "तपाईंको प्रयोगकर्ता नाम, यदि तपाईंले बिर्सनुभयो भने:"
msgid "Thanks for using our site!"
msgstr "हाम्रो साइट प्रयोग गरेकोमा धन्यवाद"
@@ -607,10 +626,11 @@ msgid "The %(site_name)s team"
msgstr "%(site_name)s टोली"
msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
+"Forgotten your password? Enter your email address below, and we’ll email "
"instructions for setting a new one."
msgstr ""
-"पासवर्ड बिर्सनु भयो ? तल ई-मेल दिनु होस र हामी नयाँ पासवर्ड हाल्ने प्रकृया पठाइ दिनेछौँ ।"
+"तपाईँको पासवर्ड बिर्सनुभयो? तल तपाईंको ईमेल ठेगाना राख्नुहोस् र हामी नयाँ सेट गर्न ईमेल "
+"निर्देशनहरू दिनेछौं।"
msgid "Email address:"
msgstr "ई-मेल ठेगाना :"
@@ -629,6 +649,10 @@ msgstr "%s छान्नुहोस"
msgid "Select %s to change"
msgstr "%s परिवर्तन गर्न छान्नुहोस ।"
+#, python-format
+msgid "Select %s to view"
+msgstr ""
+
msgid "Date:"
msgstr "मिति:"
diff --git a/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo
index c7a67677b4d7..d8e3570fad3d 100644
Binary files a/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo differ
diff --git a/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
index 06178f2c8227..2dd469ca5bf1 100644
--- a/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
+++ b/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
@@ -7,7 +7,7 @@
# Ilja Maas , 2015
# Jannis Leidel , 2011
# Jeffrey Gelens , 2011-2012
-# Meteor 0id, 2019
+# Meteor0id, 2019
# Sander Steffann , 2015
# Tonnes , 2019
# wunki , 2011
@@ -16,8 +16,8 @@ msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-17 11:50+0200\n"
-"PO-Revision-Date: 2019-08-20 19:50+0000\n"
-"Last-Translator: Meteor 0id\n"
+"PO-Revision-Date: 2019-12-09 16:09+0000\n"
+"Last-Translator: Tonnes \n"
"Language-Team: Dutch (http://www.transifex.com/django/django/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -72,7 +72,7 @@ msgstr ""
"twee vakken te klikken."
msgid "Remove all"
-msgstr "Verwijder alles"
+msgstr "Alle verwijderen"
#, javascript-format
msgid "Click to remove all chosen %s at once."
diff --git a/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo b/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo
index a548e8a53598..730ab99f7f65 100644
Binary files a/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po b/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
index ae31df07f0f8..2e40b70f38ab 100644
--- a/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
@@ -4,8 +4,8 @@
# Allisson Azevedo , 2014
# Bruce de Sá , 2019
# bruno.devpod , 2014
-# Carlos E C Leite - Cadu , 2019
-# Carlos E C Leite - Cadu , 2019
+# Carlos C. Leite , 2019
+# Carlos C. Leite , 2019
# Filipe Cifali Stangler , 2016
# dudanogueira , 2012
# Elyézer Rezende , 2013
@@ -26,13 +26,14 @@
# R.J Lelis , 2019
# Sergio Garcia , 2015
# Vinícius Damaceno , 2019
+# Vinícius Muniz de Melo , 2019
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-10-14 16:27+0000\n"
-"Last-Translator: R.J Lelis \n"
+"PO-Revision-Date: 2019-12-19 17:58+0000\n"
+"Last-Translator: Vinícius Muniz de Melo \n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/"
"language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -150,7 +151,7 @@ msgstr "entradas de log"
#, python-format
msgid "Added “%(object)s”."
-msgstr "Adicionado “%(object)s”. "
+msgstr "Adicionado “%(object)s”."
#, python-format
msgid "Changed “%(object)s” — %(changes)s"
diff --git a/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo
index 73da12644ec3..b1b5dffd9481 100644
Binary files a/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo differ
diff --git a/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
index 1ac469b2a802..11127e87e68b 100644
--- a/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
+++ b/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
@@ -1,19 +1,19 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
-# Bogdan Mateescu, 2018
+# Bogdan Mateescu, 2018-2019
# Daniel Ursache-Dogariu, 2011
# Denis Darii , 2011
# Ionel Cristian Mărieș , 2012
# Jannis Leidel , 2011
-# Răzvan Ionescu , 2015
+# razvan ionescu , 2015
# Razvan Stefanescu , 2016-2017
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-17 11:50+0200\n"
-"PO-Revision-Date: 2018-02-27 12:32+0000\n"
+"PO-Revision-Date: 2019-04-18 17:06+0000\n"
"Last-Translator: Bogdan Mateescu\n"
"Language-Team: Romanian (http://www.transifex.com/django/django/language/"
"ro/)\n"
@@ -149,7 +149,7 @@ msgid "Today"
msgstr "Astăzi"
msgid "Choose a Date"
-msgstr "Alege a dată"
+msgstr "Alege o dată"
msgid "Yesterday"
msgstr "Ieri"
diff --git a/django/contrib/admin/locale/uz/LC_MESSAGES/django.mo b/django/contrib/admin/locale/uz/LC_MESSAGES/django.mo
index 14c84537c39d..66b854d9a302 100644
Binary files a/django/contrib/admin/locale/uz/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/uz/LC_MESSAGES/django.mo differ
diff --git a/django/contrib/admin/locale/uz/LC_MESSAGES/django.po b/django/contrib/admin/locale/uz/LC_MESSAGES/django.po
index 72403bc4c965..767edf7f5ba7 100644
--- a/django/contrib/admin/locale/uz/LC_MESSAGES/django.po
+++ b/django/contrib/admin/locale/uz/LC_MESSAGES/django.po
@@ -1,6 +1,7 @@
# This file is distributed under the same license as the Django package.
#
# Translators:
+# Anvar Ulugov , 2020
# Bedilbek Khamidov , 2019
# Claude Paroz , 2019
# Sukhrobbek Ismatov , 2019
@@ -10,8 +11,8 @@ 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-29 09:01+0000\n"
-"Last-Translator: Claude Paroz \n"
+"PO-Revision-Date: 2020-01-21 09:24+0000\n"
+"Last-Translator: Anvar Ulugov \n"
"Language-Team: Uzbek (http://www.transifex.com/django/django/language/uz/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -341,16 +342,16 @@ msgid "Enter a new password for the user %(username)s."
msgstr ""
msgid "Welcome,"
-msgstr ""
+msgstr "Xush kelibsiz,"
msgid "View site"
-msgstr ""
+msgstr "Saytni ko'rish"
msgid "Documentation"
-msgstr ""
+msgstr "Qo'llanma"
msgid "Log out"
-msgstr ""
+msgstr "Chiqish"
#, python-format
msgid "Add %(name)s"
@@ -360,13 +361,13 @@ msgid "History"
msgstr ""
msgid "View on site"
-msgstr ""
+msgstr "Saytda ko'rish"
msgid "Filter"
-msgstr ""
+msgstr "Saralash"
msgid "Remove from sorting"
-msgstr ""
+msgstr "Tartiblashdan chiqarish"
#, python-format
msgid "Sorting priority: %(priority_number)s"
@@ -376,7 +377,7 @@ msgid "Toggle sorting"
msgstr ""
msgid "Delete"
-msgstr ""
+msgstr "O'chirish"
#, python-format
msgid ""
@@ -429,33 +430,33 @@ msgid ""
msgstr ""
msgid "View"
-msgstr ""
+msgstr "Ko'rish"
msgid "Delete?"
-msgstr ""
+msgstr "O'chirasizmi?"
#, python-format
msgid " By %(filter_title)s "
msgstr ""
msgid "Summary"
-msgstr ""
+msgstr "Xulosa"
#, python-format
msgid "Models in the %(name)s application"
msgstr ""
msgid "Add"
-msgstr ""
+msgstr "Qo'shish"
msgid "You don’t have permission to view or edit anything."
msgstr ""
msgid "Recent actions"
-msgstr ""
+msgstr "So'ngi harakatlar"
msgid "My actions"
-msgstr ""
+msgstr "Mening harakatlarim"
msgid "None available"
msgstr ""
@@ -496,13 +497,13 @@ msgid "Show all"
msgstr ""
msgid "Save"
-msgstr ""
+msgstr "Saqlash"
msgid "Popup closing…"
msgstr ""
msgid "Search"
-msgstr ""
+msgstr "Izlash"
#, python-format
msgid "%(counter)s result"
diff --git a/django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.mo
new file mode 100644
index 000000000000..914da0810261
Binary files /dev/null and b/django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.mo differ
diff --git a/django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.po
new file mode 100644
index 000000000000..05e46414e699
--- /dev/null
+++ b/django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.po
@@ -0,0 +1,218 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Otabek Umurzakov , 2019
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-05-17 11:50+0200\n"
+"PO-Revision-Date: 2019-12-13 21:48+0000\n"
+"Last-Translator: Otabek Umurzakov \n"
+"Language-Team: Uzbek (http://www.transifex.com/django/django/language/uz/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: uz\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#, javascript-format
+msgid "Available %s"
+msgstr "Mavjud %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 ""
+"Bu mavjud %s ro'yxati. Siz ulardan ba'zilarini quyidagi maydonchada "
+"belgilab, so'ng ikkala maydonlar orasidagi \"Tanlash\" ko'rsatkichiga bosish "
+"orqali tanlashingiz mumkin."
+
+#, javascript-format
+msgid "Type into this box to filter down the list of available %s."
+msgstr ""
+"Mavjud bo'lgan %s larni ro'yxatini filtrlash uchun ushbu maydonchaga "
+"kiriting."
+
+msgid "Filter"
+msgstr "Filtrlash"
+
+msgid "Choose all"
+msgstr "Barchasini tanlash"
+
+#, javascript-format
+msgid "Click to choose all %s at once."
+msgstr "Barcha %s larni birdan tanlash uchun bosing."
+
+msgid "Choose"
+msgstr "Tanlash"
+
+msgid "Remove"
+msgstr "O'chirish"
+
+#, javascript-format
+msgid "Chosen %s"
+msgstr "Tanlangan %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 ""
+"Bu tanlangan %s ro'yxati. Siz ulardan ba'zilarini quyidagi maydonchada "
+"belgilab, so'ng ikkala maydonlar orasidagi \"O'chirish\" ko'rsatkichiga "
+"bosish orqali o'chirishingiz mumkin."
+
+msgid "Remove all"
+msgstr "Barchasini o'chirish"
+
+#, javascript-format
+msgid "Click to remove all chosen %s at once."
+msgstr "Barcha tanlangan %s larni birdan o'chirib tashlash uchun bosing."
+
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(cnt)s dan %(sel)s tanlandi"
+
+msgid ""
+"You have unsaved changes on individual editable fields. If you run an "
+"action, your unsaved changes will be lost."
+msgstr ""
+"Siz alohida tahrirlash mumkin bo'lgan maydonlarda saqlanmagan "
+"o‘zgarishlaringiz mavjud. Agar siz harakatni ishga tushirsangiz, saqlanmagan "
+"o'zgarishlaringiz yo'qotiladi."
+
+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 ""
+"Siz harakatni tanladingiz, lekin hali ham o'zgartirishlaringizni alohida "
+"maydonlarga saqlamadingiz. Iltimos saqlash uchun OK ni bosing. Harakatni "
+"qayta ishga tushurishingiz kerak bo'ladi."
+
+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 ""
+"Siz harakatni tanladingiz va alohida maydonlarda hech qanday o'zgartirishlar "
+"kiritmadingiz. Ehtimol siz Saqlash tugmasini emas, balki O'tish tugmasini "
+"qidirmoqdasiz."
+
+msgid "Now"
+msgstr "Hozir"
+
+msgid "Midnight"
+msgstr "Yarim tun"
+
+msgid "6 a.m."
+msgstr "6 t.o."
+
+msgid "Noon"
+msgstr "Kun o'rtasi"
+
+msgid "6 p.m."
+msgstr "6 t.k."
+
+#, javascript-format
+msgid "Note: You are %s hour ahead of server time."
+msgid_plural "Note: You are %s hours ahead of server time."
+msgstr[0] "Eslatma: Siz server vaqtidan %s soat oldindasiz."
+
+#, javascript-format
+msgid "Note: You are %s hour behind server time."
+msgid_plural "Note: You are %s hours behind server time."
+msgstr[0] "Eslatma: Siz server vaqtidan %s soat orqadasiz."
+
+msgid "Choose a Time"
+msgstr "Vaqtni tanlang"
+
+msgid "Choose a time"
+msgstr "Vaqtni tanlang"
+
+msgid "Cancel"
+msgstr "Bekor qilish"
+
+msgid "Today"
+msgstr "Bugun"
+
+msgid "Choose a Date"
+msgstr "Sanani tanlang"
+
+msgid "Yesterday"
+msgstr "Kecha"
+
+msgid "Tomorrow"
+msgstr "Ertaga"
+
+msgid "January"
+msgstr "Yanvar"
+
+msgid "February"
+msgstr "Fevral"
+
+msgid "March"
+msgstr "Mart"
+
+msgid "April"
+msgstr "Aprel"
+
+msgid "May"
+msgstr "May"
+
+msgid "June"
+msgstr "Iyun"
+
+msgid "July"
+msgstr "Iyul"
+
+msgid "August"
+msgstr "Avgust"
+
+msgid "September"
+msgstr "Sentabr"
+
+msgid "October"
+msgstr "Oktabr"
+
+msgid "November"
+msgstr "Noyabr"
+
+msgid "December"
+msgstr "Dekabr"
+
+msgctxt "one letter Sunday"
+msgid "S"
+msgstr "S"
+
+msgctxt "one letter Monday"
+msgid "M"
+msgstr "M"
+
+msgctxt "one letter Tuesday"
+msgid "T"
+msgstr "T"
+
+msgctxt "one letter Wednesday"
+msgid "W"
+msgstr "W"
+
+msgctxt "one letter Thursday"
+msgid "T"
+msgstr "T"
+
+msgctxt "one letter Friday"
+msgid "F"
+msgstr "F"
+
+msgctxt "one letter Saturday"
+msgid "S"
+msgstr "S"
+
+msgid "Show"
+msgstr "Ko'rsatish"
+
+msgid "Hide"
+msgstr "Yashirish"
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 795d20f96ac9..284498f6654c 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -1059,7 +1059,7 @@ def message_user(self, request, message, level=messages.INFO, extra_tags='',
level = getattr(messages.constants, level.upper())
except AttributeError:
levels = messages.constants.DEFAULT_TAGS.values()
- levels_repr = ', '.join('`%s`' % l for l in levels)
+ levels_repr = ', '.join('`%s`' % level for level in levels)
raise ValueError(
'Bad message level string: `%s`. Possible values are: %s'
% (level, levels_repr)
diff --git a/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js b/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js
index 773ad95c56f8..50937333b99a 100644
--- a/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js
+++ b/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js
@@ -1,5 +1,5 @@
/*!
- * jQuery JavaScript Library v3.4.1
+ * jQuery JavaScript Library v3.5.1
* https://jquery.com/
*
* Includes Sizzle.js
@@ -9,7 +9,7 @@
* Released under the MIT license
* https://jquery.org/license
*
- * Date: 2019-05-01T21:04Z
+ * Date: 2020-05-04T22:49Z
*/
( function( global, factory ) {
@@ -47,13 +47,16 @@
var arr = [];
-var document = window.document;
-
var getProto = Object.getPrototypeOf;
var slice = arr.slice;
-var concat = arr.concat;
+var flat = arr.flat ? function( array ) {
+ return arr.flat.call( array );
+} : function( array ) {
+ return arr.concat.apply( [], array );
+};
+
var push = arr.push;
@@ -86,6 +89,8 @@ var isWindow = function isWindow( obj ) {
};
+var document = window.document;
+
var preservedScriptAttributes = {
@@ -142,7 +147,7 @@ function toType( obj ) {
var
- version = "3.4.1",
+ version = "3.5.1",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@@ -150,11 +155,7 @@ var
// The jQuery object is actually just the init constructor 'enhanced'
// Need init if jQuery is called (just allow error to be thrown if not included)
return new jQuery.fn.init( selector, context );
- },
-
- // Support: Android <=4.0 only
- // Make sure we trim BOM and NBSP
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+ };
jQuery.fn = jQuery.prototype = {
@@ -220,6 +221,18 @@ jQuery.fn = jQuery.prototype = {
return this.eq( -1 );
},
+ even: function() {
+ return this.pushStack( jQuery.grep( this, function( _elem, i ) {
+ return ( i + 1 ) % 2;
+ } ) );
+ },
+
+ odd: function() {
+ return this.pushStack( jQuery.grep( this, function( _elem, i ) {
+ return i % 2;
+ } ) );
+ },
+
eq: function( i ) {
var len = this.length,
j = +i + ( i < 0 ? len : 0 );
@@ -353,9 +366,10 @@ jQuery.extend( {
return true;
},
- // Evaluates a script in a global context
- globalEval: function( code, options ) {
- DOMEval( code, { nonce: options && options.nonce } );
+ // Evaluates a script in a provided context; falls back to the global one
+ // if not specified.
+ globalEval: function( code, options, doc ) {
+ DOMEval( code, { nonce: options && options.nonce }, doc );
},
each: function( obj, callback ) {
@@ -379,13 +393,6 @@ jQuery.extend( {
return obj;
},
- // Support: Android <=4.0 only
- trim: function( text ) {
- return text == null ?
- "" :
- ( text + "" ).replace( rtrim, "" );
- },
-
// results is for internal usage only
makeArray: function( arr, results ) {
var ret = results || [];
@@ -472,7 +479,7 @@ jQuery.extend( {
}
// Flatten any nested arrays
- return concat.apply( [], ret );
+ return flat( ret );
},
// A global GUID counter for objects
@@ -489,7 +496,7 @@ if ( typeof Symbol === "function" ) {
// Populate the class2type map
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
-function( i, name ) {
+function( _i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
@@ -511,17 +518,16 @@ function isArrayLike( obj ) {
}
var Sizzle =
/*!
- * Sizzle CSS Selector Engine v2.3.4
+ * Sizzle CSS Selector Engine v2.3.5
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
- * Date: 2019-04-08
+ * Date: 2020-03-14
*/
-(function( window ) {
-
+( function( window ) {
var i,
support,
Expr,
@@ -561,59 +567,70 @@ var i,
},
// Instance methods
- hasOwn = ({}).hasOwnProperty,
+ hasOwn = ( {} ).hasOwnProperty,
arr = [],
pop = arr.pop,
- push_native = arr.push,
+ pushNative = arr.push,
push = arr.push,
slice = arr.slice,
+
// Use a stripped-down indexOf as it's faster than native
// https://jsperf.com/thor-indexof-vs-for/5
indexOf = function( list, elem ) {
var i = 0,
len = list.length;
for ( ; i < len; i++ ) {
- if ( list[i] === elem ) {
+ if ( list[ i ] === elem ) {
return i;
}
}
return -1;
},
- booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
+ "ismap|loop|multiple|open|readonly|required|scoped",
// Regular expressions
// http://www.w3.org/TR/css3-selectors/#whitespace
whitespace = "[\\x20\\t\\r\\n\\f]",
- // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+ // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
+ identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
+ "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+
// Operator (capture 2)
"*([*^$|!~]?=)" + whitespace +
- // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
- "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
- "*\\]",
+
+ // "Attribute values must be CSS identifiers [capture 5]
+ // or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
+ whitespace + "*\\]",
pseudos = ":(" + identifier + ")(?:\\((" +
+
// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
// 1. quoted (capture 3; capture 4 or capture 5)
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+
// 2. simple (capture 6)
"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+
// 3. anything else (capture 2)
".*" +
")\\)|)",
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
rwhitespace = new RegExp( whitespace + "+", "g" ),
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
+ whitespace + "+$", "g" ),
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
+ "*" ),
rdescend = new RegExp( whitespace + "|>" ),
rpseudo = new RegExp( pseudos ),
@@ -625,14 +642,16 @@ var i,
"TAG": new RegExp( "^(" + identifier + "|[*])" ),
"ATTR": new RegExp( "^" + attributes ),
"PSEUDO": new RegExp( "^" + pseudos ),
- "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
- "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
- "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
+ whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
+ whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+
// For use in libraries implementing .is()
// We use this for POS matching in `select`
- "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
- whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ "needsContext": new RegExp( "^" + whitespace +
+ "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
+ "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
},
rhtml = /HTML$/i,
@@ -648,18 +667,21 @@ var i,
// CSS escapes
// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
- runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
- funescape = function( _, escaped, escapedWhitespace ) {
- var high = "0x" + escaped - 0x10000;
- // NaN means non-codepoint
- // Support: Firefox<24
- // Workaround erroneous numeric interpretation of +"0x"
- return high !== high || escapedWhitespace ?
- escaped :
+ runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
+ funescape = function( escape, nonHex ) {
+ var high = "0x" + escape.slice( 1 ) - 0x10000;
+
+ return nonHex ?
+
+ // Strip the backslash prefix from a non-hex escape sequence
+ nonHex :
+
+ // Replace a hexadecimal escape sequence with the encoded Unicode code point
+ // Support: IE <=11+
+ // For values outside the Basic Multilingual Plane (BMP), manually construct a
+ // surrogate pair
high < 0 ?
- // BMP codepoint
String.fromCharCode( high + 0x10000 ) :
- // Supplemental Plane codepoint (surrogate pair)
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
},
@@ -675,7 +697,8 @@ var i,
}
// Control characters and (dependent upon position) numbers get escaped as code points
- return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ return ch.slice( 0, -1 ) + "\\" +
+ ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
}
// Other potentially-special ASCII characters get backslash-escaped
@@ -700,18 +723,20 @@ var i,
// Optimize for push.apply( _, NodeList )
try {
push.apply(
- (arr = slice.call( preferredDoc.childNodes )),
+ ( arr = slice.call( preferredDoc.childNodes ) ),
preferredDoc.childNodes
);
+
// Support: Android<4.0
// Detect silently failing push.apply
+ // eslint-disable-next-line no-unused-expressions
arr[ preferredDoc.childNodes.length ].nodeType;
} catch ( e ) {
push = { apply: arr.length ?
// Leverage slice if possible
function( target, els ) {
- push_native.apply( target, slice.call(els) );
+ pushNative.apply( target, slice.call( els ) );
} :
// Support: IE<9
@@ -719,8 +744,9 @@ try {
function( target, els ) {
var j = target.length,
i = 0;
+
// Can't trust NodeList.length
- while ( (target[j++] = els[i++]) ) {}
+ while ( ( target[ j++ ] = els[ i++ ] ) ) {}
target.length = j - 1;
}
};
@@ -744,24 +770,21 @@ function Sizzle( selector, context, results, seed ) {
// Try to shortcut find operations (as opposed to filters) in HTML documents
if ( !seed ) {
-
- if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
- setDocument( context );
- }
+ setDocument( context );
context = context || document;
if ( documentIsHTML ) {
// If the selector is sufficiently simple, try using a "get*By*" DOM method
// (excepting DocumentFragment context, where the methods don't exist)
- if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+ if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
// ID selector
- if ( (m = match[1]) ) {
+ if ( ( m = match[ 1 ] ) ) {
// Document context
if ( nodeType === 9 ) {
- if ( (elem = context.getElementById( m )) ) {
+ if ( ( elem = context.getElementById( m ) ) ) {
// Support: IE, Opera, Webkit
// TODO: identify versions
@@ -780,7 +803,7 @@ function Sizzle( selector, context, results, seed ) {
// Support: IE, Opera, Webkit
// TODO: identify versions
// getElementById can match elements by name instead of ID
- if ( newContext && (elem = newContext.getElementById( m )) &&
+ if ( newContext && ( elem = newContext.getElementById( m ) ) &&
contains( context, elem ) &&
elem.id === m ) {
@@ -790,12 +813,12 @@ function Sizzle( selector, context, results, seed ) {
}
// Type selector
- } else if ( match[2] ) {
+ } else if ( match[ 2 ] ) {
push.apply( results, context.getElementsByTagName( selector ) );
return results;
// Class selector
- } else if ( (m = match[3]) && support.getElementsByClassName &&
+ } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
context.getElementsByClassName ) {
push.apply( results, context.getElementsByClassName( m ) );
@@ -806,11 +829,11 @@ function Sizzle( selector, context, results, seed ) {
// Take advantage of querySelectorAll
if ( support.qsa &&
!nonnativeSelectorCache[ selector + " " ] &&
- (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
// Support: IE 8 only
// Exclude object elements
- (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
+ ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
newSelector = selector;
newContext = context;
@@ -819,27 +842,36 @@ function Sizzle( selector, context, results, seed ) {
// descendant combinators, which is not what we want.
// In such cases, we work around the behavior by prefixing every selector in the
// list with an ID selector referencing the scope context.
+ // The technique has to be used as well when a leading combinator is used
+ // as such selectors are not recognized by querySelectorAll.
// Thanks to Andrew Dupont for this technique.
- if ( nodeType === 1 && rdescend.test( selector ) ) {
+ if ( nodeType === 1 &&
+ ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
- // Capture the context ID, setting it first if necessary
- if ( (nid = context.getAttribute( "id" )) ) {
- nid = nid.replace( rcssescape, fcssescape );
- } else {
- context.setAttribute( "id", (nid = expando) );
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+
+ // We can use :scope instead of the ID hack if the browser
+ // supports it & if we're not changing the context.
+ if ( newContext !== context || !support.scope ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( ( nid = context.getAttribute( "id" ) ) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", ( nid = expando ) );
+ }
}
// Prefix every selector in the list
groups = tokenize( selector );
i = groups.length;
while ( i-- ) {
- groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
+ toSelector( groups[ i ] );
}
newSelector = groups.join( "," );
-
- // Expand context for sibling selectors
- newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
- context;
}
try {
@@ -872,12 +904,14 @@ function createCache() {
var keys = [];
function cache( key, value ) {
+
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
if ( keys.push( key + " " ) > Expr.cacheLength ) {
+
// Only keep the most recent entries
delete cache[ keys.shift() ];
}
- return (cache[ key + " " ] = value);
+ return ( cache[ key + " " ] = value );
}
return cache;
}
@@ -896,17 +930,19 @@ function markFunction( fn ) {
* @param {Function} fn Passed the created element and returns a boolean result
*/
function assert( fn ) {
- var el = document.createElement("fieldset");
+ var el = document.createElement( "fieldset" );
try {
return !!fn( el );
- } catch (e) {
+ } catch ( e ) {
return false;
} finally {
+
// Remove from its parent by default
if ( el.parentNode ) {
el.parentNode.removeChild( el );
}
+
// release memory in IE
el = null;
}
@@ -918,11 +954,11 @@ function assert( fn ) {
* @param {Function} handler The method that will be applied
*/
function addHandle( attrs, handler ) {
- var arr = attrs.split("|"),
+ var arr = attrs.split( "|" ),
i = arr.length;
while ( i-- ) {
- Expr.attrHandle[ arr[i] ] = handler;
+ Expr.attrHandle[ arr[ i ] ] = handler;
}
}
@@ -944,7 +980,7 @@ function siblingCheck( a, b ) {
// Check if b follows a
if ( cur ) {
- while ( (cur = cur.nextSibling) ) {
+ while ( ( cur = cur.nextSibling ) ) {
if ( cur === b ) {
return -1;
}
@@ -972,7 +1008,7 @@ function createInputPseudo( type ) {
function createButtonPseudo( type ) {
return function( elem ) {
var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
+ return ( name === "input" || name === "button" ) && elem.type === type;
};
}
@@ -1015,7 +1051,7 @@ function createDisabledPseudo( disabled ) {
// Where there is no isDisabled, check manually
/* jshint -W018 */
elem.isDisabled !== !disabled &&
- inDisabledFieldset( elem ) === disabled;
+ inDisabledFieldset( elem ) === disabled;
}
return elem.disabled === disabled;
@@ -1037,21 +1073,21 @@ function createDisabledPseudo( disabled ) {
* @param {Function} fn
*/
function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
+ return markFunction( function( argument ) {
argument = +argument;
- return markFunction(function( seed, matches ) {
+ return markFunction( function( seed, matches ) {
var j,
matchIndexes = fn( [], seed.length, argument ),
i = matchIndexes.length;
// Match elements found at the specified indexes
while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
+ if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
+ seed[ j ] = !( matches[ j ] = seed[ j ] );
}
}
- });
- });
+ } );
+ } );
}
/**
@@ -1073,7 +1109,7 @@ support = Sizzle.support = {};
*/
isXML = Sizzle.isXML = function( elem ) {
var namespace = elem.namespaceURI,
- docElem = (elem.ownerDocument || elem).documentElement;
+ docElem = ( elem.ownerDocument || elem ).documentElement;
// Support: IE <=8
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
@@ -1091,7 +1127,11 @@ setDocument = Sizzle.setDocument = function( node ) {
doc = node ? node.ownerDocument || node : preferredDoc;
// Return early if doc is invalid or already selected
- if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
return document;
}
@@ -1100,10 +1140,14 @@ setDocument = Sizzle.setDocument = function( node ) {
docElem = document.documentElement;
documentIsHTML = !isXML( document );
- // Support: IE 9-11, Edge
+ // Support: IE 9 - 11+, Edge 12 - 18+
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
- if ( preferredDoc !== document &&
- (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( preferredDoc != document &&
+ ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
// Support: IE 11, Edge
if ( subWindow.addEventListener ) {
@@ -1115,25 +1159,36 @@ setDocument = Sizzle.setDocument = function( node ) {
}
}
+ // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
+ // Safari 4 - 5 only, Opera <=11.6 - 12.x only
+ // IE/Edge & older browsers don't support the :scope pseudo-class.
+ // Support: Safari 6.0 only
+ // Safari 6.0 supports :scope but it's an alias of :root there.
+ support.scope = assert( function( el ) {
+ docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
+ return typeof el.querySelectorAll !== "undefined" &&
+ !el.querySelectorAll( ":scope fieldset div" ).length;
+ } );
+
/* Attributes
---------------------------------------------------------------------- */
// Support: IE<8
// Verify that getAttribute really returns attributes and not properties
// (excepting IE8 booleans)
- support.attributes = assert(function( el ) {
+ support.attributes = assert( function( el ) {
el.className = "i";
- return !el.getAttribute("className");
- });
+ return !el.getAttribute( "className" );
+ } );
/* getElement(s)By*
---------------------------------------------------------------------- */
// Check if getElementsByTagName("*") returns only elements
- support.getElementsByTagName = assert(function( el ) {
- el.appendChild( document.createComment("") );
- return !el.getElementsByTagName("*").length;
- });
+ support.getElementsByTagName = assert( function( el ) {
+ el.appendChild( document.createComment( "" ) );
+ return !el.getElementsByTagName( "*" ).length;
+ } );
// Support: IE<9
support.getElementsByClassName = rnative.test( document.getElementsByClassName );
@@ -1142,38 +1197,38 @@ setDocument = Sizzle.setDocument = function( node ) {
// Check if getElementById returns elements by name
// The broken getElementById methods don't pick up programmatically-set names,
// so use a roundabout getElementsByName test
- support.getById = assert(function( el ) {
+ support.getById = assert( function( el ) {
docElem.appendChild( el ).id = expando;
return !document.getElementsByName || !document.getElementsByName( expando ).length;
- });
+ } );
// ID filter and find
if ( support.getById ) {
- Expr.filter["ID"] = function( id ) {
+ Expr.filter[ "ID" ] = function( id ) {
var attrId = id.replace( runescape, funescape );
return function( elem ) {
- return elem.getAttribute("id") === attrId;
+ return elem.getAttribute( "id" ) === attrId;
};
};
- Expr.find["ID"] = function( id, context ) {
+ Expr.find[ "ID" ] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var elem = context.getElementById( id );
return elem ? [ elem ] : [];
}
};
} else {
- Expr.filter["ID"] = function( id ) {
+ Expr.filter[ "ID" ] = function( id ) {
var attrId = id.replace( runescape, funescape );
return function( elem ) {
var node = typeof elem.getAttributeNode !== "undefined" &&
- elem.getAttributeNode("id");
+ elem.getAttributeNode( "id" );
return node && node.value === attrId;
};
};
// Support: IE 6 - 7 only
// getElementById is not reliable as a find shortcut
- Expr.find["ID"] = function( id, context ) {
+ Expr.find[ "ID" ] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var node, i, elems,
elem = context.getElementById( id );
@@ -1181,7 +1236,7 @@ setDocument = Sizzle.setDocument = function( node ) {
if ( elem ) {
// Verify the id attribute
- node = elem.getAttributeNode("id");
+ node = elem.getAttributeNode( "id" );
if ( node && node.value === id ) {
return [ elem ];
}
@@ -1189,8 +1244,8 @@ setDocument = Sizzle.setDocument = function( node ) {
// Fall back on getElementsByName
elems = context.getElementsByName( id );
i = 0;
- while ( (elem = elems[i++]) ) {
- node = elem.getAttributeNode("id");
+ while ( ( elem = elems[ i++ ] ) ) {
+ node = elem.getAttributeNode( "id" );
if ( node && node.value === id ) {
return [ elem ];
}
@@ -1203,7 +1258,7 @@ setDocument = Sizzle.setDocument = function( node ) {
}
// Tag
- Expr.find["TAG"] = support.getElementsByTagName ?
+ Expr.find[ "TAG" ] = support.getElementsByTagName ?
function( tag, context ) {
if ( typeof context.getElementsByTagName !== "undefined" ) {
return context.getElementsByTagName( tag );
@@ -1218,12 +1273,13 @@ setDocument = Sizzle.setDocument = function( node ) {
var elem,
tmp = [],
i = 0,
+
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
results = context.getElementsByTagName( tag );
// Filter out possible comments
if ( tag === "*" ) {
- while ( (elem = results[i++]) ) {
+ while ( ( elem = results[ i++ ] ) ) {
if ( elem.nodeType === 1 ) {
tmp.push( elem );
}
@@ -1235,7 +1291,7 @@ setDocument = Sizzle.setDocument = function( node ) {
};
// Class
- Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
return context.getElementsByClassName( className );
}
@@ -1256,10 +1312,14 @@ setDocument = Sizzle.setDocument = function( node ) {
// See https://bugs.jquery.com/ticket/13378
rbuggyQSA = [];
- if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
+
// Build QSA regex
// Regex strategy adopted from Diego Perini
- assert(function( el ) {
+ assert( function( el ) {
+
+ var input;
+
// Select is set to empty string on purpose
// This is to test IE's treatment of not explicitly
// setting a boolean content attribute,
@@ -1273,78 +1333,98 @@ setDocument = Sizzle.setDocument = function( node ) {
// Nothing should be selected when empty strings follow ^= or $= or *=
// The test attribute must be unknown in Opera but "safe" for WinRT
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
- if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
}
// Support: IE8
// Boolean attributes and "value" are not treated correctly
- if ( !el.querySelectorAll("[selected]").length ) {
+ if ( !el.querySelectorAll( "[selected]" ).length ) {
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
}
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
- rbuggyQSA.push("~=");
+ rbuggyQSA.push( "~=" );
+ }
+
+ // Support: IE 11+, Edge 15 - 18+
+ // IE 11/Edge don't find elements on a `[name='']` query in some cases.
+ // Adding a temporary attribute to the document before the selection works
+ // around the issue.
+ // Interestingly, IE 10 & older don't seem to have the issue.
+ input = document.createElement( "input" );
+ input.setAttribute( "name", "" );
+ el.appendChild( input );
+ if ( !el.querySelectorAll( "[name='']" ).length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
+ whitespace + "*(?:''|\"\")" );
}
// Webkit/Opera - :checked should return selected option elements
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
// IE8 throws error here and will not see later tests
- if ( !el.querySelectorAll(":checked").length ) {
- rbuggyQSA.push(":checked");
+ if ( !el.querySelectorAll( ":checked" ).length ) {
+ rbuggyQSA.push( ":checked" );
}
// Support: Safari 8+, iOS 8+
// https://bugs.webkit.org/show_bug.cgi?id=136851
// In-page `selector#id sibling-combinator selector` fails
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
- rbuggyQSA.push(".#.+[+~]");
+ rbuggyQSA.push( ".#.+[+~]" );
}
- });
- assert(function( el ) {
+ // Support: Firefox <=3.6 - 5 only
+ // Old Firefox doesn't throw on a badly-escaped identifier.
+ el.querySelectorAll( "\\\f" );
+ rbuggyQSA.push( "[\\r\\n\\f]" );
+ } );
+
+ assert( function( el ) {
el.innerHTML = "" +
"";
// Support: Windows 8 Native Apps
// The type and name attributes are restricted during .innerHTML assignment
- var input = document.createElement("input");
+ var input = document.createElement( "input" );
input.setAttribute( "type", "hidden" );
el.appendChild( input ).setAttribute( "name", "D" );
// Support: IE8
// Enforce case-sensitivity of name attribute
- if ( el.querySelectorAll("[name=d]").length ) {
+ if ( el.querySelectorAll( "[name=d]" ).length ) {
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
}
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
// IE8 throws error here and will not see later tests
- if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
rbuggyQSA.push( ":enabled", ":disabled" );
}
// Support: IE9-11+
// IE's :disabled selector does not pick up the children of disabled fieldsets
docElem.appendChild( el ).disabled = true;
- if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
rbuggyQSA.push( ":enabled", ":disabled" );
}
+ // Support: Opera 10 - 11 only
// Opera 10-11 does not throw on post-comma invalid pseudos
- el.querySelectorAll("*,:x");
- rbuggyQSA.push(",.*:");
- });
+ el.querySelectorAll( "*,:x" );
+ rbuggyQSA.push( ",.*:" );
+ } );
}
- if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
docElem.webkitMatchesSelector ||
docElem.mozMatchesSelector ||
docElem.oMatchesSelector ||
- docElem.msMatchesSelector) )) ) {
+ docElem.msMatchesSelector ) ) ) ) {
+
+ assert( function( el ) {
- assert(function( el ) {
// Check to see if it's possible to do matchesSelector
// on a disconnected node (IE 9)
support.disconnectedMatch = matches.call( el, "*" );
@@ -1353,11 +1433,11 @@ setDocument = Sizzle.setDocument = function( node ) {
// Gecko does not error, returns false instead
matches.call( el, "[s!='']:x" );
rbuggyMatches.push( "!=", pseudos );
- });
+ } );
}
- rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
- rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
/* Contains
---------------------------------------------------------------------- */
@@ -1374,11 +1454,11 @@ setDocument = Sizzle.setDocument = function( node ) {
adown.contains ?
adown.contains( bup ) :
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
- ));
+ ) );
} :
function( a, b ) {
if ( b ) {
- while ( (b = b.parentNode) ) {
+ while ( ( b = b.parentNode ) ) {
if ( b === a ) {
return true;
}
@@ -1407,7 +1487,11 @@ setDocument = Sizzle.setDocument = function( node ) {
}
// Calculate position if both inputs belong to the same document
- compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
a.compareDocumentPosition( b ) :
// Otherwise we know they are disconnected
@@ -1415,13 +1499,24 @@ setDocument = Sizzle.setDocument = function( node ) {
// Disconnected nodes
if ( compare & 1 ||
- (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+ ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
// Choose the first element that is related to our preferred document
- if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( a == document || a.ownerDocument == preferredDoc &&
+ contains( preferredDoc, a ) ) {
return -1;
}
- if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( b == document || b.ownerDocument == preferredDoc &&
+ contains( preferredDoc, b ) ) {
return 1;
}
@@ -1434,6 +1529,7 @@ setDocument = Sizzle.setDocument = function( node ) {
return compare & 4 ? -1 : 1;
} :
function( a, b ) {
+
// Exit early if the nodes are identical
if ( a === b ) {
hasDuplicate = true;
@@ -1449,8 +1545,14 @@ setDocument = Sizzle.setDocument = function( node ) {
// Parentless nodes are either documents or disconnected
if ( !aup || !bup ) {
- return a === document ? -1 :
- b === document ? 1 :
+
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ /* eslint-disable eqeqeq */
+ return a == document ? -1 :
+ b == document ? 1 :
+ /* eslint-enable eqeqeq */
aup ? -1 :
bup ? 1 :
sortInput ?
@@ -1464,26 +1566,32 @@ setDocument = Sizzle.setDocument = function( node ) {
// Otherwise we need full lists of their ancestors for comparison
cur = a;
- while ( (cur = cur.parentNode) ) {
+ while ( ( cur = cur.parentNode ) ) {
ap.unshift( cur );
}
cur = b;
- while ( (cur = cur.parentNode) ) {
+ while ( ( cur = cur.parentNode ) ) {
bp.unshift( cur );
}
// Walk down the tree looking for a discrepancy
- while ( ap[i] === bp[i] ) {
+ while ( ap[ i ] === bp[ i ] ) {
i++;
}
return i ?
+
// Do a sibling check if the nodes have a common ancestor
- siblingCheck( ap[i], bp[i] ) :
+ siblingCheck( ap[ i ], bp[ i ] ) :
// Otherwise nodes in our document sort first
- ap[i] === preferredDoc ? -1 :
- bp[i] === preferredDoc ? 1 :
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ /* eslint-disable eqeqeq */
+ ap[ i ] == preferredDoc ? -1 :
+ bp[ i ] == preferredDoc ? 1 :
+ /* eslint-enable eqeqeq */
0;
};
@@ -1495,10 +1603,7 @@ Sizzle.matches = function( expr, elements ) {
};
Sizzle.matchesSelector = function( elem, expr ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
+ setDocument( elem );
if ( support.matchesSelector && documentIsHTML &&
!nonnativeSelectorCache[ expr + " " ] &&
@@ -1510,12 +1615,13 @@ Sizzle.matchesSelector = function( elem, expr ) {
// IE 9's matchesSelector returns false on disconnected nodes
if ( ret || support.disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9
- elem.document && elem.document.nodeType !== 11 ) {
+
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
return ret;
}
- } catch (e) {
+ } catch ( e ) {
nonnativeSelectorCache( expr, true );
}
}
@@ -1524,20 +1630,31 @@ Sizzle.matchesSelector = function( elem, expr ) {
};
Sizzle.contains = function( context, elem ) {
+
// Set document vars if needed
- if ( ( context.ownerDocument || context ) !== document ) {
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( ( context.ownerDocument || context ) != document ) {
setDocument( context );
}
return contains( context, elem );
};
Sizzle.attr = function( elem, name ) {
+
// Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( ( elem.ownerDocument || elem ) != document ) {
setDocument( elem );
}
var fn = Expr.attrHandle[ name.toLowerCase() ],
+
// Don't get fooled by Object.prototype properties (jQuery #13807)
val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
fn( elem, name, !documentIsHTML ) :
@@ -1547,13 +1664,13 @@ Sizzle.attr = function( elem, name ) {
val :
support.attributes || !documentIsHTML ?
elem.getAttribute( name ) :
- (val = elem.getAttributeNode(name)) && val.specified ?
+ ( val = elem.getAttributeNode( name ) ) && val.specified ?
val.value :
null;
};
Sizzle.escape = function( sel ) {
- return (sel + "").replace( rcssescape, fcssescape );
+ return ( sel + "" ).replace( rcssescape, fcssescape );
};
Sizzle.error = function( msg ) {
@@ -1576,7 +1693,7 @@ Sizzle.uniqueSort = function( results ) {
results.sort( sortOrder );
if ( hasDuplicate ) {
- while ( (elem = results[i++]) ) {
+ while ( ( elem = results[ i++ ] ) ) {
if ( elem === results[ i ] ) {
j = duplicates.push( i );
}
@@ -1604,17 +1721,21 @@ getText = Sizzle.getText = function( elem ) {
nodeType = elem.nodeType;
if ( !nodeType ) {
+
// If no nodeType, this is expected to be an array
- while ( (node = elem[i++]) ) {
+ while ( ( node = elem[ i++ ] ) ) {
+
// Do not traverse comment nodes
ret += getText( node );
}
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+
// Use textContent for elements
// innerText usage removed for consistency of new lines (jQuery #11153)
if ( typeof elem.textContent === "string" ) {
return elem.textContent;
} else {
+
// Traverse its children
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
ret += getText( elem );
@@ -1623,6 +1744,7 @@ getText = Sizzle.getText = function( elem ) {
} else if ( nodeType === 3 || nodeType === 4 ) {
return elem.nodeValue;
}
+
// Do not include comment or processing instruction nodes
return ret;
@@ -1650,19 +1772,21 @@ Expr = Sizzle.selectors = {
preFilter: {
"ATTR": function( match ) {
- match[1] = match[1].replace( runescape, funescape );
+ match[ 1 ] = match[ 1 ].replace( runescape, funescape );
// Move the given value to match[3] whether quoted or unquoted
- match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+ match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
+ match[ 5 ] || "" ).replace( runescape, funescape );
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
+ if ( match[ 2 ] === "~=" ) {
+ match[ 3 ] = " " + match[ 3 ] + " ";
}
return match.slice( 0, 4 );
},
"CHILD": function( match ) {
+
/* matches from matchExpr["CHILD"]
1 type (only|nth|...)
2 what (child|of-type)
@@ -1673,22 +1797,25 @@ Expr = Sizzle.selectors = {
7 sign of y-component
8 y of y-component
*/
- match[1] = match[1].toLowerCase();
+ match[ 1 ] = match[ 1 ].toLowerCase();
+
+ if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
- if ( match[1].slice( 0, 3 ) === "nth" ) {
// nth-* requires argument
- if ( !match[3] ) {
- Sizzle.error( match[0] );
+ if ( !match[ 3 ] ) {
+ Sizzle.error( match[ 0 ] );
}
// numeric x and y parameters for Expr.filter.CHILD
// remember that false/true cast respectively to 0/1
- match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
- match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+ match[ 4 ] = +( match[ 4 ] ?
+ match[ 5 ] + ( match[ 6 ] || 1 ) :
+ 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
+ match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
- // other types prohibit arguments
- } else if ( match[3] ) {
- Sizzle.error( match[0] );
+ // other types prohibit arguments
+ } else if ( match[ 3 ] ) {
+ Sizzle.error( match[ 0 ] );
}
return match;
@@ -1696,26 +1823,28 @@ Expr = Sizzle.selectors = {
"PSEUDO": function( match ) {
var excess,
- unquoted = !match[6] && match[2];
+ unquoted = !match[ 6 ] && match[ 2 ];
- if ( matchExpr["CHILD"].test( match[0] ) ) {
+ if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
return null;
}
// Accept quoted arguments as-is
- if ( match[3] ) {
- match[2] = match[4] || match[5] || "";
+ if ( match[ 3 ] ) {
+ match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
// Strip excess characters from unquoted arguments
} else if ( unquoted && rpseudo.test( unquoted ) &&
+
// Get excess from tokenize (recursively)
- (excess = tokenize( unquoted, true )) &&
+ ( excess = tokenize( unquoted, true ) ) &&
+
// advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+ ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
// excess is a negative index
- match[0] = match[0].slice( 0, excess );
- match[2] = unquoted.slice( 0, excess );
+ match[ 0 ] = match[ 0 ].slice( 0, excess );
+ match[ 2 ] = unquoted.slice( 0, excess );
}
// Return only captures needed by the pseudo filter method (type and argument)
@@ -1728,7 +1857,9 @@ Expr = Sizzle.selectors = {
"TAG": function( nodeNameSelector ) {
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
return nodeNameSelector === "*" ?
- function() { return true; } :
+ function() {
+ return true;
+ } :
function( elem ) {
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
};
@@ -1738,10 +1869,16 @@ Expr = Sizzle.selectors = {
var pattern = classCache[ className + " " ];
return pattern ||
- (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
- classCache( className, function( elem ) {
- return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
- });
+ ( pattern = new RegExp( "(^|" + whitespace +
+ ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
+ className, function( elem ) {
+ return pattern.test(
+ typeof elem.className === "string" && elem.className ||
+ typeof elem.getAttribute !== "undefined" &&
+ elem.getAttribute( "class" ) ||
+ ""
+ );
+ } );
},
"ATTR": function( name, operator, check ) {
@@ -1757,6 +1894,8 @@ Expr = Sizzle.selectors = {
result += "";
+ /* eslint-disable max-len */
+
return operator === "=" ? result === check :
operator === "!=" ? result !== check :
operator === "^=" ? check && result.indexOf( check ) === 0 :
@@ -1765,10 +1904,12 @@ Expr = Sizzle.selectors = {
operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
false;
+ /* eslint-enable max-len */
+
};
},
- "CHILD": function( type, what, argument, first, last ) {
+ "CHILD": function( type, what, _argument, first, last ) {
var simple = type.slice( 0, 3 ) !== "nth",
forward = type.slice( -4 ) !== "last",
ofType = what === "of-type";
@@ -1780,7 +1921,7 @@ Expr = Sizzle.selectors = {
return !!elem.parentNode;
} :
- function( elem, context, xml ) {
+ function( elem, _context, xml ) {
var cache, uniqueCache, outerCache, node, nodeIndex, start,
dir = simple !== forward ? "nextSibling" : "previousSibling",
parent = elem.parentNode,
@@ -1794,7 +1935,7 @@ Expr = Sizzle.selectors = {
if ( simple ) {
while ( dir ) {
node = elem;
- while ( (node = node[ dir ]) ) {
+ while ( ( node = node[ dir ] ) ) {
if ( ofType ?
node.nodeName.toLowerCase() === name :
node.nodeType === 1 ) {
@@ -1802,6 +1943,7 @@ Expr = Sizzle.selectors = {
return false;
}
}
+
// Reverse direction for :only-* (if we haven't yet done so)
start = dir = type === "only" && !start && "nextSibling";
}
@@ -1817,22 +1959,22 @@ Expr = Sizzle.selectors = {
// ...in a gzip-friendly way
node = parent;
- outerCache = node[ expando ] || (node[ expando ] = {});
+ outerCache = node[ expando ] || ( node[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
+ ( outerCache[ node.uniqueID ] = {} );
cache = uniqueCache[ type ] || [];
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
diff = nodeIndex && cache[ 2 ];
node = nodeIndex && parent.childNodes[ nodeIndex ];
- while ( (node = ++nodeIndex && node && node[ dir ] ||
+ while ( ( node = ++nodeIndex && node && node[ dir ] ||
// Fallback to seeking `elem` from the start
- (diff = nodeIndex = 0) || start.pop()) ) {
+ ( diff = nodeIndex = 0 ) || start.pop() ) ) {
// When found, cache indexes on `parent` and break
if ( node.nodeType === 1 && ++diff && node === elem ) {
@@ -1842,16 +1984,18 @@ Expr = Sizzle.selectors = {
}
} else {
+
// Use previously-cached element index if available
if ( useCache ) {
+
// ...in a gzip-friendly way
node = elem;
- outerCache = node[ expando ] || (node[ expando ] = {});
+ outerCache = node[ expando ] || ( node[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
+ ( outerCache[ node.uniqueID ] = {} );
cache = uniqueCache[ type ] || [];
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
@@ -1861,9 +2005,10 @@ Expr = Sizzle.selectors = {
// xml :nth-child(...)
// or :nth-last-child(...) or :nth(-last)?-of-type(...)
if ( diff === false ) {
+
// Use the same loop as above to seek `elem` from the start
- while ( (node = ++nodeIndex && node && node[ dir ] ||
- (diff = nodeIndex = 0) || start.pop()) ) {
+ while ( ( node = ++nodeIndex && node && node[ dir ] ||
+ ( diff = nodeIndex = 0 ) || start.pop() ) ) {
if ( ( ofType ?
node.nodeName.toLowerCase() === name :
@@ -1872,12 +2017,13 @@ Expr = Sizzle.selectors = {
// Cache the index of each encountered element
if ( useCache ) {
- outerCache = node[ expando ] || (node[ expando ] = {});
+ outerCache = node[ expando ] ||
+ ( node[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
+ ( outerCache[ node.uniqueID ] = {} );
uniqueCache[ type ] = [ dirruns, diff ];
}
@@ -1898,6 +2044,7 @@ Expr = Sizzle.selectors = {
},
"PSEUDO": function( pseudo, argument ) {
+
// pseudo-class names are case-insensitive
// http://www.w3.org/TR/selectors/#pseudo-classes
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
@@ -1917,15 +2064,15 @@ Expr = Sizzle.selectors = {
if ( fn.length > 1 ) {
args = [ pseudo, pseudo, "", argument ];
return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
+ markFunction( function( seed, matches ) {
var idx,
matched = fn( seed, argument ),
i = matched.length;
while ( i-- ) {
- idx = indexOf( seed, matched[i] );
- seed[ idx ] = !( matches[ idx ] = matched[i] );
+ idx = indexOf( seed, matched[ i ] );
+ seed[ idx ] = !( matches[ idx ] = matched[ i ] );
}
- }) :
+ } ) :
function( elem ) {
return fn( elem, 0, args );
};
@@ -1936,8 +2083,10 @@ Expr = Sizzle.selectors = {
},
pseudos: {
+
// Potentially complex pseudos
- "not": markFunction(function( selector ) {
+ "not": markFunction( function( selector ) {
+
// Trim the selector passed to compile
// to avoid treating leading and trailing
// spaces as combinators
@@ -1946,39 +2095,40 @@ Expr = Sizzle.selectors = {
matcher = compile( selector.replace( rtrim, "$1" ) );
return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
+ markFunction( function( seed, matches, _context, xml ) {
var elem,
unmatched = matcher( seed, null, xml, [] ),
i = seed.length;
// Match elements unmatched by `matcher`
while ( i-- ) {
- if ( (elem = unmatched[i]) ) {
- seed[i] = !(matches[i] = elem);
+ if ( ( elem = unmatched[ i ] ) ) {
+ seed[ i ] = !( matches[ i ] = elem );
}
}
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
+ } ) :
+ function( elem, _context, xml ) {
+ input[ 0 ] = elem;
matcher( input, null, xml, results );
+
// Don't keep the element (issue #299)
- input[0] = null;
+ input[ 0 ] = null;
return !results.pop();
};
- }),
+ } ),
- "has": markFunction(function( selector ) {
+ "has": markFunction( function( selector ) {
return function( elem ) {
return Sizzle( selector, elem ).length > 0;
};
- }),
+ } ),
- "contains": markFunction(function( text ) {
+ "contains": markFunction( function( text ) {
text = text.replace( runescape, funescape );
return function( elem ) {
return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
};
- }),
+ } ),
// "Whether an element is represented by a :lang() selector
// is based solely on the element's language value
@@ -1988,25 +2138,26 @@ Expr = Sizzle.selectors = {
// The identifier C does not have to be a valid language name."
// http://www.w3.org/TR/selectors/#lang-pseudo
"lang": markFunction( function( lang ) {
+
// lang value must be a valid identifier
- if ( !ridentifier.test(lang || "") ) {
+ if ( !ridentifier.test( lang || "" ) ) {
Sizzle.error( "unsupported lang: " + lang );
}
lang = lang.replace( runescape, funescape ).toLowerCase();
return function( elem ) {
var elemLang;
do {
- if ( (elemLang = documentIsHTML ?
+ if ( ( elemLang = documentIsHTML ?
elem.lang :
- elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+ elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
elemLang = elemLang.toLowerCase();
return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
}
- } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
return false;
};
- }),
+ } ),
// Miscellaneous
"target": function( elem ) {
@@ -2019,7 +2170,9 @@ Expr = Sizzle.selectors = {
},
"focus": function( elem ) {
- return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ return elem === document.activeElement &&
+ ( !document.hasFocus || document.hasFocus() ) &&
+ !!( elem.type || elem.href || ~elem.tabIndex );
},
// Boolean properties
@@ -2027,16 +2180,20 @@ Expr = Sizzle.selectors = {
"disabled": createDisabledPseudo( true ),
"checked": function( elem ) {
+
// In CSS3, :checked should return both checked and selected elements
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
var nodeName = elem.nodeName.toLowerCase();
- return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ return ( nodeName === "input" && !!elem.checked ) ||
+ ( nodeName === "option" && !!elem.selected );
},
"selected": function( elem ) {
+
// Accessing this property makes selected-by-default
// options in Safari work properly
if ( elem.parentNode ) {
+ // eslint-disable-next-line no-unused-expressions
elem.parentNode.selectedIndex;
}
@@ -2045,6 +2202,7 @@ Expr = Sizzle.selectors = {
// Contents
"empty": function( elem ) {
+
// http://www.w3.org/TR/selectors/#empty-pseudo
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
// but not by others (comment: 8; processing instruction: 7; etc.)
@@ -2058,7 +2216,7 @@ Expr = Sizzle.selectors = {
},
"parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
+ return !Expr.pseudos[ "empty" ]( elem );
},
// Element/input types
@@ -2082,39 +2240,40 @@ Expr = Sizzle.selectors = {
// Support: IE<8
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ ( ( attr = elem.getAttribute( "type" ) ) == null ||
+ attr.toLowerCase() === "text" );
},
// Position-in-collection
- "first": createPositionalPseudo(function() {
+ "first": createPositionalPseudo( function() {
return [ 0 ];
- }),
+ } ),
- "last": createPositionalPseudo(function( matchIndexes, length ) {
+ "last": createPositionalPseudo( function( _matchIndexes, length ) {
return [ length - 1 ];
- }),
+ } ),
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
return [ argument < 0 ? argument + length : argument ];
- }),
+ } ),
- "even": createPositionalPseudo(function( matchIndexes, length ) {
+ "even": createPositionalPseudo( function( matchIndexes, length ) {
var i = 0;
for ( ; i < length; i += 2 ) {
matchIndexes.push( i );
}
return matchIndexes;
- }),
+ } ),
- "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ "odd": createPositionalPseudo( function( matchIndexes, length ) {
var i = 1;
for ( ; i < length; i += 2 ) {
matchIndexes.push( i );
}
return matchIndexes;
- }),
+ } ),
- "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
var i = argument < 0 ?
argument + length :
argument > length ?
@@ -2124,19 +2283,19 @@ Expr = Sizzle.selectors = {
matchIndexes.push( i );
}
return matchIndexes;
- }),
+ } ),
- "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
var i = argument < 0 ? argument + length : argument;
for ( ; ++i < length; ) {
matchIndexes.push( i );
}
return matchIndexes;
- })
+ } )
}
};
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
+Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
// Add button/input type pseudos
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
@@ -2167,37 +2326,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
while ( soFar ) {
// Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
if ( match ) {
+
// Don't consume trailing commas as valid
- soFar = soFar.slice( match[0].length ) || soFar;
+ soFar = soFar.slice( match[ 0 ].length ) || soFar;
}
- groups.push( (tokens = []) );
+ groups.push( ( tokens = [] ) );
}
matched = false;
// Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
+ if ( ( match = rcombinators.exec( soFar ) ) ) {
matched = match.shift();
- tokens.push({
+ tokens.push( {
value: matched,
+
// Cast descendant combinators to space
- type: match[0].replace( rtrim, " " )
- });
+ type: match[ 0 ].replace( rtrim, " " )
+ } );
soFar = soFar.slice( matched.length );
}
// Filters
for ( type in Expr.filter ) {
- if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
- (match = preFilters[ type ]( match ))) ) {
+ if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
+ ( match = preFilters[ type ]( match ) ) ) ) {
matched = match.shift();
- tokens.push({
+ tokens.push( {
value: matched,
type: type,
matches: match
- });
+ } );
soFar = soFar.slice( matched.length );
}
}
@@ -2214,6 +2375,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
soFar.length :
soFar ?
Sizzle.error( selector ) :
+
// Cache the tokens
tokenCache( selector, groups ).slice( 0 );
};
@@ -2223,7 +2385,7 @@ function toSelector( tokens ) {
len = tokens.length,
selector = "";
for ( ; i < len; i++ ) {
- selector += tokens[i].value;
+ selector += tokens[ i ].value;
}
return selector;
}
@@ -2236,9 +2398,10 @@ function addCombinator( matcher, combinator, base ) {
doneName = done++;
return combinator.first ?
+
// Check against closest ancestor/preceding element
function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
+ while ( ( elem = elem[ dir ] ) ) {
if ( elem.nodeType === 1 || checkNonElements ) {
return matcher( elem, context, xml );
}
@@ -2253,7 +2416,7 @@ function addCombinator( matcher, combinator, base ) {
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
if ( xml ) {
- while ( (elem = elem[ dir ]) ) {
+ while ( ( elem = elem[ dir ] ) ) {
if ( elem.nodeType === 1 || checkNonElements ) {
if ( matcher( elem, context, xml ) ) {
return true;
@@ -2261,27 +2424,29 @@ function addCombinator( matcher, combinator, base ) {
}
}
} else {
- while ( (elem = elem[ dir ]) ) {
+ while ( ( elem = elem[ dir ] ) ) {
if ( elem.nodeType === 1 || checkNonElements ) {
- outerCache = elem[ expando ] || (elem[ expando ] = {});
+ outerCache = elem[ expando ] || ( elem[ expando ] = {} );
// Support: IE <9 only
// Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+ uniqueCache = outerCache[ elem.uniqueID ] ||
+ ( outerCache[ elem.uniqueID ] = {} );
if ( skip && skip === elem.nodeName.toLowerCase() ) {
elem = elem[ dir ] || elem;
- } else if ( (oldCache = uniqueCache[ key ]) &&
+ } else if ( ( oldCache = uniqueCache[ key ] ) &&
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
// Assign to newCache so results back-propagate to previous elements
- return (newCache[ 2 ] = oldCache[ 2 ]);
+ return ( newCache[ 2 ] = oldCache[ 2 ] );
} else {
+
// Reuse newcache so results back-propagate to previous elements
uniqueCache[ key ] = newCache;
// A match means we're done; a fail means we have to keep checking
- if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
return true;
}
}
@@ -2297,20 +2462,20 @@ function elementMatcher( matchers ) {
function( elem, context, xml ) {
var i = matchers.length;
while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
+ if ( !matchers[ i ]( elem, context, xml ) ) {
return false;
}
}
return true;
} :
- matchers[0];
+ matchers[ 0 ];
}
function multipleContexts( selector, contexts, results ) {
var i = 0,
len = contexts.length;
for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results );
+ Sizzle( selector, contexts[ i ], results );
}
return results;
}
@@ -2323,7 +2488,7 @@ function condense( unmatched, map, filter, context, xml ) {
mapped = map != null;
for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
+ if ( ( elem = unmatched[ i ] ) ) {
if ( !filter || filter( elem, context, xml ) ) {
newUnmatched.push( elem );
if ( mapped ) {
@@ -2343,14 +2508,18 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
if ( postFinder && !postFinder[ expando ] ) {
postFinder = setMatcher( postFinder, postSelector );
}
- return markFunction(function( seed, results, context, xml ) {
+ return markFunction( function( seed, results, context, xml ) {
var temp, i, elem,
preMap = [],
postMap = [],
preexisting = results.length,
// Get initial elements from seed or context
- elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+ elems = seed || multipleContexts(
+ selector || "*",
+ context.nodeType ? [ context ] : context,
+ []
+ ),
// Prefilter to get matcher input, preserving a map for seed-results synchronization
matcherIn = preFilter && ( seed || !selector ) ?
@@ -2358,6 +2527,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
elems,
matcherOut = matcher ?
+
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
@@ -2381,8 +2551,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
// Un-match failing elements by moving them back to matcherIn
i = temp.length;
while ( i-- ) {
- if ( (elem = temp[i]) ) {
- matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ if ( ( elem = temp[ i ] ) ) {
+ matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
}
}
}
@@ -2390,25 +2560,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
if ( seed ) {
if ( postFinder || preFilter ) {
if ( postFinder ) {
+
// Get the final matcherOut by condensing this intermediate into postFinder contexts
temp = [];
i = matcherOut.length;
while ( i-- ) {
- if ( (elem = matcherOut[i]) ) {
+ if ( ( elem = matcherOut[ i ] ) ) {
+
// Restore matcherIn since elem is not yet a final match
- temp.push( (matcherIn[i] = elem) );
+ temp.push( ( matcherIn[ i ] = elem ) );
}
}
- postFinder( null, (matcherOut = []), temp, xml );
+ postFinder( null, ( matcherOut = [] ), temp, xml );
}
// Move matched elements from seed to results to keep them synchronized
i = matcherOut.length;
while ( i-- ) {
- if ( (elem = matcherOut[i]) &&
- (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+ if ( ( elem = matcherOut[ i ] ) &&
+ ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
- seed[temp] = !(results[temp] = elem);
+ seed[ temp ] = !( results[ temp ] = elem );
}
}
}
@@ -2426,14 +2598,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
push.apply( results, matcherOut );
}
}
- });
+ } );
}
function matcherFromTokens( tokens ) {
var checkContext, matcher, j,
len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
+ leadingRelative = Expr.relative[ tokens[ 0 ].type ],
+ implicitRelative = leadingRelative || Expr.relative[ " " ],
i = leadingRelative ? 1 : 0,
// The foundational matcher ensures that elements are reachable from top-level context(s)
@@ -2445,38 +2617,43 @@ function matcherFromTokens( tokens ) {
}, implicitRelative, true ),
matchers = [ function( elem, context, xml ) {
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
+ ( checkContext = context ).nodeType ?
matchContext( elem, context, xml ) :
matchAnyContext( elem, context, xml ) );
+
// Avoid hanging onto element (issue #299)
checkContext = null;
return ret;
} ];
for ( ; i < len; i++ ) {
- if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
- matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
+ matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
} else {
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+ matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
// Return special upon seeing a positional matcher
if ( matcher[ expando ] ) {
+
// Find the next relative operator (if any) for proper handling
j = ++i;
for ( ; j < len; j++ ) {
- if ( Expr.relative[ tokens[j].type ] ) {
+ if ( Expr.relative[ tokens[ j ].type ] ) {
break;
}
}
return setMatcher(
i > 1 && elementMatcher( matchers ),
i > 1 && toSelector(
- // If the preceding token was a descendant combinator, insert an implicit any-element `*`
- tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens
+ .slice( 0, i - 1 )
+ .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
).replace( rtrim, "$1" ),
matcher,
i < j && matcherFromTokens( tokens.slice( i, j ) ),
- j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
j < len && toSelector( tokens )
);
}
@@ -2497,28 +2674,40 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
unmatched = seed && [],
setMatched = [],
contextBackup = outermostContext,
+
// We must always have either seed elements or outermost context
- elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
+
// Use integer dirruns iff this is the outermost matcher
- dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
len = elems.length;
if ( outermost ) {
- outermostContext = context === document || context || outermost;
+
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ outermostContext = context == document || context || outermost;
}
// Add elements passing elementMatchers directly to results
// Support: IE<9, Safari
// Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id
- for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
if ( byElement && elem ) {
j = 0;
- if ( !context && elem.ownerDocument !== document ) {
+
+ // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ if ( !context && elem.ownerDocument != document ) {
setDocument( elem );
xml = !documentIsHTML;
}
- while ( (matcher = elementMatchers[j++]) ) {
- if ( matcher( elem, context || document, xml) ) {
+ while ( ( matcher = elementMatchers[ j++ ] ) ) {
+ if ( matcher( elem, context || document, xml ) ) {
results.push( elem );
break;
}
@@ -2530,8 +2719,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
// Track unmatched elements for set filters
if ( bySet ) {
+
// They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
+ if ( ( elem = !matcher && elem ) ) {
matchedCount--;
}
@@ -2555,16 +2745,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
// numerically zero.
if ( bySet && i !== matchedCount ) {
j = 0;
- while ( (matcher = setMatchers[j++]) ) {
+ while ( ( matcher = setMatchers[ j++ ] ) ) {
matcher( unmatched, setMatched, context, xml );
}
if ( seed ) {
+
// Reintegrate element matches to eliminate the need for sorting
if ( matchedCount > 0 ) {
while ( i-- ) {
- if ( !(unmatched[i] || setMatched[i]) ) {
- setMatched[i] = pop.call( results );
+ if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
+ setMatched[ i ] = pop.call( results );
}
}
}
@@ -2605,13 +2796,14 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
cached = compilerCache[ selector + " " ];
if ( !cached ) {
+
// Generate a function of recursive functions that can be used to check each element
if ( !match ) {
match = tokenize( selector );
}
i = match.length;
while ( i-- ) {
- cached = matcherFromTokens( match[i] );
+ cached = matcherFromTokens( match[ i ] );
if ( cached[ expando ] ) {
setMatchers.push( cached );
} else {
@@ -2620,7 +2812,10 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
}
// Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ cached = compilerCache(
+ selector,
+ matcherFromGroupMatchers( elementMatchers, setMatchers )
+ );
// Save selector and tokenization
cached.selector = selector;
@@ -2640,7 +2835,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
select = Sizzle.select = function( selector, context, results, seed ) {
var i, tokens, token, type, find,
compiled = typeof selector === "function" && selector,
- match = !seed && tokenize( (selector = compiled.selector || selector) );
+ match = !seed && tokenize( ( selector = compiled.selector || selector ) );
results = results || [];
@@ -2649,11 +2844,12 @@ select = Sizzle.select = function( selector, context, results, seed ) {
if ( match.length === 1 ) {
// Reduce context if the leading compound selector is an ID
- tokens = match[0] = match[0].slice( 0 );
- if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+ tokens = match[ 0 ] = match[ 0 ].slice( 0 );
+ if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
- context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
+ .replace( runescape, funescape ), context ) || [] )[ 0 ];
if ( !context ) {
return results;
@@ -2666,20 +2862,22 @@ select = Sizzle.select = function( selector, context, results, seed ) {
}
// Fetch a seed set for right-to-left matching
- i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
while ( i-- ) {
- token = tokens[i];
+ token = tokens[ i ];
// Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
+ if ( Expr.relative[ ( type = token.type ) ] ) {
break;
}
- if ( (find = Expr.find[ type ]) ) {
+ if ( ( find = Expr.find[ type ] ) ) {
+
// Search, expanding context for leading sibling combinators
- if ( (seed = find(
- token.matches[0].replace( runescape, funescape ),
- rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
- )) ) {
+ if ( ( seed = find(
+ token.matches[ 0 ].replace( runescape, funescape ),
+ rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
+ context
+ ) ) ) {
// If seed is empty or no tokens remain, we can return early
tokens.splice( i, 1 );
@@ -2710,7 +2908,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
// One-time assignments
// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
// Support: Chrome 14-35+
// Always assume duplicates if they aren't passed to the comparison function
@@ -2721,58 +2919,59 @@ setDocument();
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( el ) {
+support.sortDetached = assert( function( el ) {
+
// Should return 1, but returns 4 (following)
- return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
-});
+ return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
+} );
// Support: IE<8
// Prevent attribute/property "interpolation"
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( el ) {
+if ( !assert( function( el ) {
el.innerHTML = "";
- return el.firstChild.getAttribute("href") === "#" ;
-}) ) {
+ return el.firstChild.getAttribute( "href" ) === "#";
+} ) ) {
addHandle( "type|href|height|width", function( elem, name, isXML ) {
if ( !isXML ) {
return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
}
- });
+ } );
}
// Support: IE<9
// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( el ) {
+if ( !support.attributes || !assert( function( el ) {
el.innerHTML = "";
el.firstChild.setAttribute( "value", "" );
return el.firstChild.getAttribute( "value" ) === "";
-}) ) {
- addHandle( "value", function( elem, name, isXML ) {
+} ) ) {
+ addHandle( "value", function( elem, _name, isXML ) {
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
return elem.defaultValue;
}
- });
+ } );
}
// Support: IE<9
// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( el ) {
- return el.getAttribute("disabled") == null;
-}) ) {
+if ( !assert( function( el ) {
+ return el.getAttribute( "disabled" ) == null;
+} ) ) {
addHandle( booleans, function( elem, name, isXML ) {
var val;
if ( !isXML ) {
return elem[ name ] === true ? name.toLowerCase() :
- (val = elem.getAttributeNode( name )) && val.specified ?
+ ( val = elem.getAttributeNode( name ) ) && val.specified ?
val.value :
- null;
+ null;
}
- });
+ } );
}
return Sizzle;
-})( window );
+} )( window );
@@ -3141,7 +3340,7 @@ jQuery.each( {
parents: function( elem ) {
return dir( elem, "parentNode" );
},
- parentsUntil: function( elem, i, until ) {
+ parentsUntil: function( elem, _i, until ) {
return dir( elem, "parentNode", until );
},
next: function( elem ) {
@@ -3156,10 +3355,10 @@ jQuery.each( {
prevAll: function( elem ) {
return dir( elem, "previousSibling" );
},
- nextUntil: function( elem, i, until ) {
+ nextUntil: function( elem, _i, until ) {
return dir( elem, "nextSibling", until );
},
- prevUntil: function( elem, i, until ) {
+ prevUntil: function( elem, _i, until ) {
return dir( elem, "previousSibling", until );
},
siblings: function( elem ) {
@@ -3169,7 +3368,13 @@ jQuery.each( {
return siblings( elem.firstChild );
},
contents: function( elem ) {
- if ( typeof elem.contentDocument !== "undefined" ) {
+ if ( elem.contentDocument != null &&
+
+ // Support: IE 11+
+ //