diff --git a/AUTHORS b/AUTHORS index 539f1c5cc3f0f..90b49ced90269 100644 --- a/AUTHORS +++ b/AUTHORS @@ -38,6 +38,7 @@ answer newbie questions, and generally made Django that much better: Alexander Dutton Alexander Myodov Alexandr Tatarinov + Alex Becker Alex Couper Alex Dedul Alex Gaynor @@ -147,6 +148,7 @@ answer newbie questions, and generally made Django that much better: bthomas btoll@bestweb.net C8E + Caio Ariede Calvin Spealman Cameron Curry Cameron Knight (ckknight) @@ -280,6 +282,7 @@ answer newbie questions, and generally made Django that much better: Flávio Juvenal da Silva Junior flavio.curella@gmail.com Florian Apolloner + Florian Moussous Francisco Albarran Cristobal François Freitag Frank Tegtmeyer @@ -358,6 +361,7 @@ answer newbie questions, and generally made Django that much better: Jaap Roes Jack Moffitt Jacob Burch + Jacob Green Jacob Kaplan-Moss Jakub Paczkowski Jakub Wilk @@ -756,6 +760,7 @@ answer newbie questions, and generally made Django that much better: schwank@gmail.com Scot Hacker Scott Barr + Scott Fitsimones Scott Pashley scott@staplefish.com Sean Brant diff --git a/django/__init__.py b/django/__init__.py index 4ebf3e779a48b..d0e1bd999a287 100644 --- a/django/__init__.py +++ b/django/__init__.py @@ -1,6 +1,6 @@ from django.utils.version import get_version -VERSION = (2, 2, 0, 'alpha', 0) +VERSION = (2, 2, 4, 'alpha', 0) __version__ = get_version(VERSION) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 03aa87bf21378..f3abfada25f2f 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -460,7 +460,7 @@ def gettext_noop(s): SESSION_COOKIE_SECURE = False # The path of the session cookie. SESSION_COOKIE_PATH = '/' -# Whether to use the non-RFC standard httpOnly flag (IE, FF3+, others) +# Whether to use the HttpOnly flag. SESSION_COOKIE_HTTPONLY = True # Whether to set the flag restricting cookie leaks on cross-site requests. # This can be 'Lax', 'Strict', or None to disable the flag. diff --git a/django/conf/locale/af/LC_MESSAGES/django.mo b/django/conf/locale/af/LC_MESSAGES/django.mo index 8d85caeb10aeb..ea048a7ec6bd1 100644 Binary files a/django/conf/locale/af/LC_MESSAGES/django.mo and b/django/conf/locale/af/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/af/LC_MESSAGES/django.po b/django/conf/locale/af/LC_MESSAGES/django.po index 7f34b0756c265..f85a36df4ba3a 100644 --- a/django/conf/locale/af/LC_MESSAGES/django.po +++ b/django/conf/locale/af/LC_MESSAGES/django.po @@ -1,15 +1,16 @@ # This file is distributed under the same license as the Django package. # # Translators: +# F Wolff , 2019 # Stephen Cox , 2011-2012 -# unklphil , 2014 +# unklphil , 2014,2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-18 22:37+0000\n" +"Last-Translator: unklphil \n" "Language-Team: Afrikaans (http://www.transifex.com/django/django/language/" "af/)\n" "MIME-Version: 1.0\n" @@ -25,7 +26,7 @@ msgid "Arabic" msgstr "Arabies" msgid "Asturian" -msgstr "" +msgstr "Asturies" msgid "Azerbaijani" msgstr "Aserbeidjans" @@ -61,7 +62,7 @@ msgid "German" msgstr "Duits" msgid "Lower Sorbian" -msgstr "" +msgstr "Neder-Sorbies" msgid "Greek" msgstr "Grieks" @@ -85,7 +86,7 @@ msgid "Argentinian Spanish" msgstr "Argentynse Spaans" msgid "Colombian Spanish" -msgstr "" +msgstr "Kolombiaanse Spaans" msgid "Mexican Spanish" msgstr "Meksikaanse Spaans" @@ -118,7 +119,7 @@ msgid "Irish" msgstr "Iers" msgid "Scottish Gaelic" -msgstr "" +msgstr "Skots-Gaelies" msgid "Galician" msgstr "Galicies" @@ -133,11 +134,14 @@ msgid "Croatian" msgstr "Kroaties" msgid "Upper Sorbian" -msgstr "" +msgstr "Opper-Sorbies" msgid "Hungarian" msgstr "Hongaars" +msgid "Armenian" +msgstr "Armeens" + msgid "Interlingua" msgstr "Interlingua" @@ -145,7 +149,7 @@ msgid "Indonesian" msgstr "Indonesies" msgid "Ido" -msgstr "" +msgstr "Ido" msgid "Icelandic" msgstr "Yslands" @@ -159,6 +163,9 @@ msgstr "Japannees" msgid "Georgian" msgstr "Georgian" +msgid "Kabyle" +msgstr "Kabilies" + msgid "Kazakh" msgstr "Kazakh" @@ -169,7 +176,7 @@ msgid "Kannada" msgstr "Kannada" msgid "Korean" -msgstr "Koreaanse" +msgstr "Koreaans" msgid "Luxembourgish" msgstr "Luxemburgs" @@ -190,13 +197,13 @@ msgid "Mongolian" msgstr "Mongools" msgid "Marathi" -msgstr "" +msgstr "Marathi" msgid "Burmese" msgstr "Birmaans" msgid "Norwegian Bokmål" -msgstr "" +msgstr "Noorweegse Bokmål" msgid "Nepali" msgstr "Nepalees" @@ -229,10 +236,10 @@ msgid "Russian" msgstr "Russiese" msgid "Slovak" -msgstr "Slowaakse" +msgstr "Slowaaks" msgid "Slovenian" -msgstr "Sloveens" +msgstr "Sloweens" msgid "Albanian" msgstr "Albanees" @@ -259,7 +266,7 @@ msgid "Thai" msgstr "Thai" msgid "Turkish" -msgstr "Turkish" +msgstr "Turks" msgid "Tatar" msgstr "Tataars" @@ -271,7 +278,7 @@ msgid "Ukrainian" msgstr "Oekraïens" msgid "Urdu" -msgstr "Urdu" +msgstr "Oerdoe" msgid "Vietnamese" msgstr "Viëtnamees" @@ -280,79 +287,79 @@ msgid "Simplified Chinese" msgstr "Vereenvoudigde Sjinees" msgid "Traditional Chinese" -msgstr "Tradisionele Chinese" +msgstr "Tradisionele Sjinees" msgid "Messages" -msgstr "" +msgstr "Boodskappe" msgid "Site Maps" -msgstr "" +msgstr "Werfkaarte" msgid "Static Files" -msgstr "" +msgstr "Statiese lêers" msgid "Syndication" msgstr "Sindikasie" msgid "That page number is not an integer" -msgstr "" +msgstr "Daai bladsynommer is nie 'n heelgetal nie" msgid "That page number is less than 1" -msgstr "" +msgstr "Daai bladsynommer is minder as 1" msgid "That page contains no results" -msgstr "" +msgstr "Daai bladsy bevat geen resultate nie" msgid "Enter a valid value." -msgstr "Sleutel 'n geldige waarde in." +msgstr "Gee 'n geldige waarde." msgid "Enter a valid URL." -msgstr "Sleutel 'n geldige URL in." +msgstr "Gee ’n geldige URL." msgid "Enter a valid integer." -msgstr "Sleutel 'n geldige heelgetal in." +msgstr "Gee ’n geldige heelgetal." msgid "Enter a valid email address." -msgstr "Sleutel 'n geldige e-pos adres in." +msgstr "Gee ’n geldige e-posadres." #. Translators: "letters" means latin letters: a-z and A-Z. msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" -"Sleutel 'n geldige \"slak\" wat bestaan ​​uit letters, syfers, beklemtoon of " -"koppel." +"Gee ’n geldige \"slak\" in wat bestaan ​​uit letters, syfers, onderstreep of " +"koppelteken." msgid "" "Enter a valid 'slug' consisting of Unicode letters, numbers, underscores, or " "hyphens." msgstr "" +"Gee ’n geldige “slak” in wat bestaan ​​uit Unicode-letters, syfers, " +"onderstreep of koppelteken." msgid "Enter a valid IPv4 address." -msgstr "Sleutel 'n geldige IPv4-adres in." +msgstr "Gee ’n geldige IPv4-adres." msgid "Enter a valid IPv6 address." -msgstr "Voer 'n geldige IPv6-adres in." +msgstr "Gee ’n geldige IPv6-adres." msgid "Enter a valid IPv4 or IPv6 address." -msgstr "Voer 'n geldige IPv4 of IPv6-adres in." +msgstr "Gee ’n geldige IPv4- of IPv6-adres." msgid "Enter only digits separated by commas." -msgstr "Sleutel slegs syfers in wat deur kommas geskei is." +msgstr "Gee slegs syfers in wat deur kommas geskei is." #, python-format msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." msgstr "" -"Maak seker dat hierdie waarde %(limit_value)s is (dit is %(show_value)s )." +"Maak seker dat hierdie waarde %(limit_value)s is (dit is %(show_value)s)." #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." -msgstr "" -"Maak seker dat hierdie waarde minder as of gelyk aan %(limit_value)s is." +msgstr "Maak seker dat hierdie waarde kleiner of gelyk is aan %(limit_value)s." #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." -msgstr "" -"Maak seker dat hierdie waarde groter as of gelyk aan %(limit_value)s is." +msgstr "Maak seker dat hierdie waarde groter of gelyk is aan %(limit_value)s." #, python-format msgid "" @@ -382,6 +389,9 @@ msgstr[1] "" "Maak seker hierdie waarde het op die meeste %(limit_value)d karakters (dit " "het %(show_value)d)." +msgid "Enter a number." +msgstr "Gee ’n getal." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -409,9 +419,11 @@ msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" +"Lêeruitbreiding “%(extension)s” word nie toegelaat nie. Toegelate " +"uitbreidings is: “%(allowed_extensions)s”." msgid "Null characters are not allowed." -msgstr "" +msgstr "Nul-karakters word nie toegelaat nie." msgid "and" msgstr "en" @@ -422,7 +434,7 @@ msgstr "%(model_name)s met hierdie %(field_labels)s bestaan alreeds." #, python-format msgid "Value %(value)r is not a valid choice." -msgstr "Waarde %(value)r is nie 'n geldige keuse nie." +msgstr "Waarde %(value)r is nie ’n geldige keuse nie." msgid "This field cannot be null." msgstr "Hierdie veld kan nie nil wees nie." @@ -440,50 +452,54 @@ msgstr "%(model_name)s met hierdie %(field_label)s bestaan ​​alreeds." msgid "" "%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." msgstr "" -"%(field_label)s moet uniek wees vir %(date_field_label)s %(lookup_type)s." +"%(field_label)s moet uniek wees per %(date_field_label)s %(lookup_type)s." #, python-format msgid "Field of type: %(field_type)s" -msgstr "Veld van type: %(field_type)s " +msgstr "Veld van tipe: %(field_type)s " msgid "Integer" msgstr "Heelgetal" #, python-format msgid "'%(value)s' value must be an integer." -msgstr "'%(value)s' waarde moet 'n heelgetal wees." +msgstr "Die waarde “%(value)s” moet ’n heelgetal wees." msgid "Big (8 byte) integer" msgstr "Groot (8 greep) heelgetal" #, python-format msgid "'%(value)s' value must be either True or False." -msgstr "'%(value)s' waarde moet óf True of False wees." +msgstr "Die waarde “%(value)s” moet óf True (waar) óf False (vals) wees." + +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Die waarde “%(value)s” moet True, False of None wees." msgid "Boolean (Either True or False)" -msgstr "Boole (Eder waar of vals)" +msgstr "Boole (True of False)" #, python-format msgid "String (up to %(max_length)s)" -msgstr "String (tot %(max_length)s)" +msgstr "String (hoogstens %(max_length)s karakters)" msgid "Comma-separated integers" -msgstr "Kommas geskeide heelgetalle" +msgstr "Heelgetalle geskei met kommas" #, python-format msgid "" "'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD " "format." msgstr "" -"'%(value)s' waarde het 'n ongeldige datumformaat. Dit met in die JJJJ-MM-DD " -"formaat wees." +"Die waarde “%(value)s” het ’n ongeldige datumformaat. Dit moet in die " +"formaat JJJJ-MM-DD wees." #, python-format msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid " "date." msgstr "" -"'%(value)s' waarde het die korrekte formaat (JJJJ-MM-DD), maar dit is 'n " +"Die waarde “%(value)s” het die korrekte formaat (JJJJ-MM-DD), maar dit is ’n " "ongeldige datum." msgid "Date (without time)" @@ -494,23 +510,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' waarde se formaat is ongeldig. Dit moet in JJJJ-MM-DD HH:MM[:ss[." -"uuuuuu]][TZ] formaat wees." +"Die waarde “%(value)s” se formaat is ongeldig. Dit moet in die formaat JJJJ-" +"MM-DD HH:MM[:ss[.uuuuuu]][TZ] wees." #, 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' waarde het die korrekte formaat (JJJJ-MM-DD HH:MM[:ss[.uuuuuu]]" -"[TZ]) maar dit is 'n ongeldige datum/tyd." +"Die waarde “%(value)s” het die korrekte formaat (JJJJ-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ]) maar dit is ’n ongeldige datum/tyd." msgid "Date (with time)" msgstr "Datum (met die tyd)" #, python-format msgid "'%(value)s' value must be a decimal number." -msgstr "'%(value)s' waarde moet 'n desimale getal wees." +msgstr "Die waarde “%(value)s” moet ’n desimale getal wees." msgid "Decimal number" msgstr "Desimale getal" @@ -520,45 +536,47 @@ msgid "" "'%(value)s' value has an invalid format. It must be in [DD] [HH:[MM:]]ss[." "uuuuuu] format." msgstr "" +"Die waarde “%(value)s” het ’n ongeldige formaat. Dit moet in die formaat " +"[DD] [HH:[MM:]]ss[.uuuuuu] wees." msgid "Duration" -msgstr "" +msgstr "Duur" msgid "Email address" -msgstr "E-pos adres" +msgstr "E-posadres" msgid "File path" -msgstr "Lêer pad" +msgstr "Lêerpad" #, python-format msgid "'%(value)s' value must be a float." -msgstr "'%(value)s' waarde meote 'n dryfpunt getal wees." +msgstr "Die waarde “%(value)s” moete ’n dryfpuntgetal wees." msgid "Floating point number" -msgstr "Dryfpunt getal" +msgstr "Dryfpuntgetal" msgid "IPv4 address" -msgstr "IPv4 adres" +msgstr "IPv4-adres" msgid "IP address" -msgstr "IP adres" +msgstr "IP-adres" #, python-format msgid "'%(value)s' value must be either None, True or False." -msgstr "'%(value)s' waarde moet óf None, True of False wees." +msgstr "Die waarde “%(value)s” moet None, True of False wees." msgid "Boolean (Either True, False or None)" -msgstr "Boole (Eder waar, vals of niks)" +msgstr "Boole (True, False, of None)" msgid "Positive integer" msgstr "Positiewe heelgetal" msgid "Positive small integer" -msgstr "Positiewe klein heelgetal" +msgstr "Klein positiewe heelgetal" #, python-format msgid "Slug (up to %(max_length)s)" -msgstr "Slug (tot by %(max_length)s)" +msgstr "Slug (tot en met %(max_length)s karakters)" msgid "Small integer" msgstr "Klein heelgetal" @@ -571,16 +589,16 @@ msgid "" "'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " "format." msgstr "" -"'%(value)s' waarde se formaat is ongeldig. Dit moet in HH:MM[:ss[.uuuuuu]] " -"formaat wees." +"Die waarde “%(value)s” se formaat is ongeldig. Dit moet in die formaat HH:" +"MM[:ss[.uuuuuu]] wees." #, python-format msgid "" "'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " "invalid time." msgstr "" -"'%(value)s' waarde het die regte formaat (HH:MM[:ss[.uuuuuu]]) maar is nie " -"'n geldige tyd nie." +"Die waarde “%(value)s” het die regte formaat (HH:MM[:ss[.uuuuuu]]) maar is " +"nie ’n geldige tyd nie." msgid "Time" msgstr "Tyd" @@ -593,7 +611,10 @@ msgstr "Rou binêre data" #, python-format msgid "'%(value)s' is not a valid UUID." -msgstr "" +msgstr "“%(value)s” is nie ’n geldige UUID nie." + +msgid "Universally unique identifier" +msgstr "Universeel unieke identifiseerder" msgid "File" msgstr "Lêer" @@ -603,7 +624,7 @@ msgstr "Prent" #, python-format msgid "%(model)s instance with %(field)s %(value)r does not exist." -msgstr "" +msgstr "%(model)s-objek met %(field)s %(value)r bestaan nie." msgid "Foreign Key (type determined by related field)" msgstr "Vreemde sleutel (tipe bepaal deur verwante veld)" @@ -613,11 +634,11 @@ msgstr "Een-tot-een-verhouding" #, python-format msgid "%(from)s-%(to)s relationship" -msgstr "" +msgstr "%(from)s-%(to)s-verwantskap" #, python-format msgid "%(from)s-%(to)s relationships" -msgstr "" +msgstr "%(from)s-%(to)s-verwantskappe" msgid "Many-to-many relationship" msgstr "Baie-tot-baie-verwantskap" @@ -629,29 +650,30 @@ msgid ":?.!" msgstr ":?.!" msgid "This field is required." -msgstr "Die veld is verpligtend." +msgstr "Dié veld is verpligtend." msgid "Enter a whole number." -msgstr "Sleutel 'n hele getal in." - -msgid "Enter a number." -msgstr "Sleutel 'n nommer in." +msgstr "Tik ’n heelgetal in." msgid "Enter a valid date." -msgstr "Sleutel 'n geldige datum in." +msgstr "Tik ’n geldige datum in." msgid "Enter a valid time." -msgstr "Sleutel 'n geldige tyd in." +msgstr "Tik ’n geldige tyd in." msgid "Enter a valid date/time." -msgstr "Sleutel 'n geldige datum/tyd in." +msgstr "Tik ’n geldige datum/tyd in." msgid "Enter a valid duration." -msgstr "" +msgstr "Tik ’n geldige tydsduur in." + +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Die aantal dae moet tussen {min_days} en {max_days} wees." msgid "No file was submitted. Check the encoding type on the form." msgstr "" -"Geen lêer is ingedien nie. Maak seker die kodering tipe op die vorm is reg." +"Geen lêer is ingedien nie. Maak seker die koderingtipe op die vorm is reg." msgid "No file was submitted." msgstr "Geen lêer is ingedien nie." @@ -664,35 +686,35 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" -"Maak seker hierdie lêernaam het op die meeste %(max)d karakter (dit het " +"Maak seker hierdie lêernaam het hoogstens %(max)d karakter (dit het " "%(length)d)." msgstr[1] "" -"Maak seker hierdie lêernaam het op die meeste %(max)d karakters (dit het " +"Maak seker hierdie lêernaam het hoogstens %(max)d karakters (dit het " "%(length)d)." msgid "Please either submit a file or check the clear checkbox, not both." -msgstr "Stuur die lêer of tiek die maak skoon boksie, nie beide nie." +msgstr "Dien die lêer in óf merk die Maak skoon-boksie, nie altwee nie." msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -"Laai 'n geldige prent. Die lêer wat jy opgelaai het is nie 'n prent nie of " -"dit is 'n korrupte prent." +"Laai ’n geldige prent. Die lêer wat jy opgelaai het, is nie ’n prent nie of " +"dit is ’n korrupte prent." #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" -"Kies 'n geldige keuse. %(value)s is nie een van die beskikbare keuses nie." +"Kies 'n geldige keuse. %(value)s is nie een van die beskikbare keuses nie." msgid "Enter a list of values." -msgstr "Sleatel 'n lys van waardes in." +msgstr "Tik ’n lys waardes in." msgid "Enter a complete value." -msgstr "Sleutel 'n volledige waarde in." +msgstr "Tik ’n volledige waarde in." msgid "Enter a valid UUID." -msgstr "" +msgstr "Tik ’n geldig UUID in." #. Translators: This is the default suffix added to form field labels msgid ":" @@ -703,7 +725,7 @@ msgid "(Hidden field %(name)s) %(error)s" msgstr "(Versteekte veld %(name)s) %(error)s" msgid "ManagementForm data is missing or has been tampered with" -msgstr "" +msgstr "Die ManagementForm-data ontbreek of is mee gepeuter" #, python-format msgid "Please submit %d or fewer forms." @@ -725,11 +747,11 @@ msgstr "Verwyder" #, python-format msgid "Please correct the duplicate data for %(field)s." -msgstr "Korrigeer die dubbele data vir %(field)s ." +msgstr "Korrigeer die dubbele data vir %(field)s." #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "Korrigeer die dubbele data vir %(field)s , dit moet uniek wees." +msgstr "Korrigeer die dubbele data vir %(field)s, dit moet uniek wees." #, python-format msgid "" @@ -737,30 +759,30 @@ msgid "" "for the %(lookup)s in %(date_field)s." msgstr "" "Korrigeer die dubbele data vir %(field_name)s, dit moet uniek wees vir die " -"%(lookup)s in %(date_field)s ." +"%(lookup)s in %(date_field)s." msgid "Please correct the duplicate values below." msgstr "Korrigeer die dubbele waardes hieronder." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "Die waarde inlyn pas nie by die ouerobjek nie." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" -"Kies 'n geldige keuse. Daardie keuse is nie een van die beskikbare keuses " +"Kies ’n geldige keuse. Daardie keuse is nie een van die beskikbare keuses " "nie." #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "“%(pk)s” is nie 'n geldige waarde nie." #, 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 kon nie in tydsone %(current_timezone)s vertolk word nie; dit " -"mag dubbelsinnig wees, of nie bestaan nie." +"%(datetime)s kon nie in die tydsone %(current_timezone)s vertolk word nie; " +"dit is dalk dubbelsinnig, of bestaan nie." msgid "Clear" msgstr "Maak skoon" @@ -810,10 +832,10 @@ msgid "%s PB" msgstr "%s PB" msgid "p.m." -msgstr "nm" +msgstr "nm." msgid "a.m." -msgstr "vm" +msgstr "vm." msgid "PM" msgstr "NM" @@ -912,7 +934,7 @@ msgid "feb" msgstr "feb" msgid "mar" -msgstr "mar" +msgstr "mrt" msgid "apr" msgstr "apr" @@ -1038,19 +1060,19 @@ msgid "December" msgstr "Desember" msgid "This is not a valid IPv6 address." -msgstr "HIerdie is nie 'n geldige IPv6-adres nie." +msgstr "Hierdie is nie ’n geldige IPv6-adres nie." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "of" #. Translators: This string is used as a separator between list elements msgid ", " -msgstr "," +msgstr ", " #, python-format msgid "%d year" @@ -1092,10 +1114,10 @@ msgid "0 minutes" msgstr "0 minute" msgid "Forbidden" -msgstr "Verbied" +msgstr "Verbode" msgid "CSRF verification failed. Request aborted." -msgstr "" +msgstr "CSRF-verifikasie het misluk. Versoek is laat val." msgid "" "You are seeing this message because this HTTPS site requires a 'Referer " @@ -1103,12 +1125,19 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" +"U sien hierdie boodskap omdat dié HTTPS-werf vereis dat u blaaier ’n " +"“Referer header” moet stuur, maar dit is nie gestuur nie. Hierdie header is " +"vir sekuriteitsredes nodig om te verseker dat u blaaier nie deur derde " +"partye gekaap is nie." 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 "" +"As “Referer headers” in u blaaier gedeaktiveer is, heraktiveer hulle asb. " +"ten minste vir dié werf, of vir HTTPS-verbindings, of vir “same-origin”-" +"versoeke." msgid "" "If you are using the tag or " @@ -1117,35 +1146,46 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Indien u die -etiket gebruik " +"of die “Referrer-Policy: no-referrer header” gebruik, verwyder hulle asb. " +"Die CSRF-beskerming vereis die “Referer header” om streng kontrole van die " +"verwysende bladsy te doen. Indien u besorg is oor privaatheid, gebruik " +"alternatiewe soos vir skakels na " +"derdepartywebwerwe." msgid "" "You are seeing this message because this site requires a CSRF cookie when " "submitting forms. This cookie is required for security reasons, to ensure " "that your browser is not being hijacked by third parties." msgstr "" +"U sien hierdie boodskap omdat dié werf ’n CSRF-koekie benodig wanneer vorms " +"ingedien word. Dié koekie word vir sekuriteitsredes benodig om te te " +"verseker dat u blaaier nie deur derde partye gekaap word nie." 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 "" +"Indien koekies in u blaaier gedeaktiveer is, heraktiveer hulle asb ten " +"minste vir dié werf, of vir “same-origin”-versoeke." msgid "More information is available with DEBUG=True." msgstr "Meer inligting is beskikbaar met DEBUG=True." msgid "No year specified" -msgstr "Geen jaar gespesifiseer" +msgstr "Geen jaar gespesifiseer nie" msgid "Date out of range" -msgstr "" +msgstr "Datum buite omvang" msgid "No month specified" -msgstr "Geen maand gespesifiseer" +msgstr "Geen maand gespesifiseer nie" msgid "No day specified" -msgstr "Geen dag gespesifiseer" +msgstr "Geen dag gespesifiseer nie" msgid "No week specified" -msgstr "Geen week gespesifiseer" +msgstr "Geen week gespesifiseer nie" #, python-format msgid "No %(verbose_name_plural)s available" @@ -1156,13 +1196,12 @@ msgid "" "Future %(verbose_name_plural)s not available because %(class_name)s." "allow_future is False." msgstr "" -"Toekomstige %(verbose_name_plural)s is nie beskikbaar nie, omdat " +"Toekomstige %(verbose_name_plural)s is nie beskikbaar nie, omdat " "%(class_name)s.allow_future vals is." #, python-format msgid "Invalid date string '%(datestr)s' given format '%(format)s'" -msgstr "" -"Ongeldige datum string '%(datestr)s' die formaat moet wees '%(format)s'" +msgstr "Ongeldige datumstring “%(datestr)s” vir formaat “%(format)s”" #, python-format msgid "No %(verbose_name)s found matching the query" @@ -1170,8 +1209,7 @@ msgstr "Geen %(verbose_name)s gevind vir die soektog" msgid "Page is not 'last', nor can it be converted to an int." msgstr "" -"Bladsy is nie 'laaste' nie, en dit kan nie omgeskakel word na 'n heelgetal " -"nie." +"Bladsy is nie “last” nie, en dit kan nie omgeskakel word na ’n heelgetal nie." #, python-format msgid "Invalid page (%(page_number)s): %(message)s" @@ -1179,30 +1217,33 @@ msgstr "Ongeldige bladsy (%(page_number)s): %(message)s" #, python-format msgid "Empty list and '%(class_name)s.allow_empty' is False." -msgstr "Leë lys en ' %(class_name)s.allow_empty' is vals." +msgstr "Leë lys en “%(class_name)s.allow_empty” is vals." msgid "Directory indexes are not allowed here." -msgstr "Gids indekse word nie hier toegelaat nie." +msgstr "Gidsindekse word nie hier toegelaat nie." #, python-format msgid "\"%(path)s\" does not exist" -msgstr "\"%(path)s\" bestaan nie" +msgstr "“%(path)s” bestaan nie" #, python-format msgid "Index of %(directory)s" msgstr "Indeks van %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Django: die webraamwerk vir perfeksioniste met sperdatums." #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"Sien die vrystellingsnotas vir Django " +"%(version)s" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "Die installasie was suksesvol! Geluk!" #, python-format msgid "" @@ -1211,9 +1252,12 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"U sien dié bladsy omdat DEBUG=True in die settings-lêer is en geen URL’e opgestel is nie." msgid "Django Documentation" -msgstr "" +msgstr "Django-dokumentasie" msgid "Topics, references, & how-to's" msgstr "" @@ -1222,10 +1266,10 @@ msgid "Tutorial: A Polling App" msgstr "" msgid "Get started with Django" -msgstr "" +msgstr "Kom aan die gang met Django" msgid "Django Community" -msgstr "" +msgstr "Django-gemeenskap" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "Kontak, kry hulp om dra by" diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo index 6baaaa5be4f75..9ce89a903dc39 100644 Binary files a/django/conf/locale/ca/LC_MESSAGES/django.mo and b/django/conf/locale/ca/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ca/LC_MESSAGES/django.po b/django/conf/locale/ca/LC_MESSAGES/django.po index dae6fe86b1900..2511e0a7b17c9 100644 --- a/django/conf/locale/ca/LC_MESSAGES/django.po +++ b/django/conf/locale/ca/LC_MESSAGES/django.po @@ -4,6 +4,7 @@ # Antoni Aloy , 2012,2015-2017 # Carles Barrobés , 2011-2012,2014 # duub qnnp, 2015 +# Gil Obradors Via , 2019 # Jannis Leidel , 2011 # Manuel Miranda , 2015 # Roger Pons , 2015 @@ -11,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-28 21:13+0000\n" +"Last-Translator: Gil Obradors Via \n" "Language-Team: Catalan (http://www.transifex.com/django/django/language/" "ca/)\n" "MIME-Version: 1.0\n" @@ -142,6 +143,9 @@ msgstr "Upper Sorbian" msgid "Hungarian" msgstr "hongarès" +msgid "Armenian" +msgstr "Armeni" + msgid "Interlingua" msgstr "Interlingua" @@ -163,6 +167,9 @@ msgstr "japonès" msgid "Georgian" msgstr "georgià" +msgid "Kabyle" +msgstr "Cabilenc" + msgid "Kazakh" msgstr "Kazakh" @@ -387,6 +394,9 @@ msgstr[1] "" "Assegureu-vos que aquest valor té com a molt %(limit_value)d caràcters (en " "té %(show_value)d)." +msgid "Enter a number." +msgstr "Introduïu un número." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -418,7 +428,7 @@ msgstr "" "són: '%(allowed_extensions)s'." msgid "Null characters are not allowed." -msgstr "" +msgstr "Caràcters nul no estan permesos." msgid "and" msgstr "i" @@ -467,6 +477,10 @@ msgstr "Enter gran (8 bytes)" msgid "'%(value)s' value must be either True or False." msgstr "El valor '%(value)s' ha de ser \"True\" o \"False\"." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "El valor '%(value)s' ha de ser cert, fals o cap." + msgid "Boolean (Either True or False)" msgstr "Booleà (Cert o Fals)" @@ -604,6 +618,9 @@ msgstr "Dades binàries" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' no és un UUID vàlid." +msgid "Universally unique identifier" +msgstr "Identificador únic universal" + msgid "File" msgstr "Arxiu" @@ -643,9 +660,6 @@ msgstr "Aquest camp és obligatori." msgid "Enter a whole number." msgstr "Introduïu un número sencer." -msgid "Enter a number." -msgstr "Introduïu un número." - msgid "Enter a valid date." msgstr "Introduïu una data vàlida." @@ -658,6 +672,10 @@ msgstr "Introduïu una data/hora vàlides." msgid "Enter a valid duration." msgstr "Introdueixi una durada vàlida." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "El número de dies ha de ser entre {min_days} i {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No s'ha enviat cap fitxer. Comproveu el tipus de codificació del formulari." @@ -755,7 +773,7 @@ msgid "Please correct the duplicate values below." msgstr "Si us plau, corregiu els valors duplicats a sota." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "El valor en línia no coincideix la instancia mare ." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" @@ -763,7 +781,7 @@ msgstr "" #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "\"%(pk)s\" no és un valor vàlid" #, python-format msgid "" @@ -1053,7 +1071,7 @@ msgstr "Aquesta no és una adreça IPv6 vàlida." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s..." msgid "or" @@ -1135,6 +1153,12 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Si utilitza l'etiqueta o " +"inclou la capçalera 'Referrer-Policy: no-referrer' , si et plau elimina-la. " +"La protecció CSRF requereix la capçalera 'Referer' per a fer una " +"comprovació estricte. Si està preocupat en quan a la privacitat, utilitzi " +"alternatives com per enllaçar a aplicacions de " +"tercers." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1161,7 +1185,7 @@ msgid "No year specified" msgstr "No s'ha especificat any" msgid "Date out of range" -msgstr "" +msgstr "Data fora de rang" msgid "No month specified" msgstr "No s'ha especificat mes" @@ -1215,16 +1239,19 @@ msgid "Index of %(directory)s" msgstr "Índex de %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Django: l'entorn de treball per a perfeccionistes de temps rècord." #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"Visualitza notes de llançament per Django " +"%(version)s" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "La instal·lació ha estat un èxit! Felicitats!" #, python-format msgid "" @@ -1233,21 +1260,25 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Està veient aquesta pàgina degut a que el paràmetre DEBUG=Trueconsta al fitxer de configuració i no teniu " +"direccions URLs configurades." msgid "Django Documentation" -msgstr "" +msgstr "Documentació de Django" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Temes, referències, & Com es fa" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "Programa d'aprenentatge: Una aplicació enquesta" msgid "Get started with Django" -msgstr "" +msgstr "Primers passos amb Django" msgid "Django Community" -msgstr "" +msgstr "Comunitat Django" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "Connecta, obté ajuda, o col·labora" diff --git a/django/conf/locale/cs/LC_MESSAGES/django.mo b/django/conf/locale/cs/LC_MESSAGES/django.mo index 784bf33409ea9..7da05abda3671 100644 Binary files a/django/conf/locale/cs/LC_MESSAGES/django.mo and b/django/conf/locale/cs/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/cs/LC_MESSAGES/django.po b/django/conf/locale/cs/LC_MESSAGES/django.po index 8bf8bc65c95a9..f173a43b9a346 100644 --- a/django/conf/locale/cs/LC_MESSAGES/django.po +++ b/django/conf/locale/cs/LC_MESSAGES/django.po @@ -6,13 +6,13 @@ # Jirka Vejrazka , 2011 # Tomáš Ehrlich , 2015 # Vláďa Macek , 2012-2014 -# Vláďa Macek , 2015-2018 +# Vláďa Macek , 2015-2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-15 18:02+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 07:53+0000\n" "Last-Translator: Vláďa Macek \n" "Language-Team: Czech (http://www.transifex.com/django/django/language/cs/)\n" "MIME-Version: 1.0\n" @@ -142,6 +142,9 @@ msgstr "hornolužickou srbštinou" msgid "Hungarian" msgstr "maďarsky" +msgid "Armenian" +msgstr "arménštinou" + msgid "Interlingua" msgstr "interlingua" @@ -629,6 +632,9 @@ msgstr "Přímá binární data" msgid "'%(value)s' is not a valid UUID." msgstr "\"%(value)s\" není platná hodnota typu UUID." +msgid "Universally unique identifier" +msgstr "Všeobecně jedinečný identifikátor" + msgid "File" msgstr "Soubor" @@ -1082,8 +1088,8 @@ msgstr "Toto není platná adresa typu IPv6." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "nebo" diff --git a/django/conf/locale/da/LC_MESSAGES/django.mo b/django/conf/locale/da/LC_MESSAGES/django.mo index 0f4189e38040e..e0e64f998738b 100644 Binary files a/django/conf/locale/da/LC_MESSAGES/django.mo and b/django/conf/locale/da/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/da/LC_MESSAGES/django.po b/django/conf/locale/da/LC_MESSAGES/django.po index 51d970d2dd3e6..c36e6a531ec7e 100644 --- a/django/conf/locale/da/LC_MESSAGES/django.po +++ b/django/conf/locale/da/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Christian Joergensen , 2012 # Danni Randeris , 2014 -# Erik Wognsen , 2013-2018 +# Erik Wognsen , 2013-2019 # Finn Gruwier Larsen, 2011 # Jannis Leidel , 2011 # jonaskoelker , 2012 @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 20:46+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 07:05+0000\n" "Last-Translator: Erik Wognsen \n" "Language-Team: Danish (http://www.transifex.com/django/django/language/da/)\n" "MIME-Version: 1.0\n" @@ -143,6 +143,9 @@ msgstr "øvresorbisk" msgid "Hungarian" msgstr "ungarsk" +msgid "Armenian" +msgstr "armensk" + msgid "Interlingua" msgstr "interlingua" @@ -607,6 +610,9 @@ msgstr "Rå binære data" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' er ikke et gyldigt UUID." +msgid "Universally unique identifier" +msgstr "Universelt unik identifikator" + msgid "File" msgstr "Fil" @@ -1053,8 +1059,8 @@ msgstr "Dette er ikke en gyldig IPv6-adresse." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "eller" diff --git a/django/conf/locale/dsb/LC_MESSAGES/django.mo b/django/conf/locale/dsb/LC_MESSAGES/django.mo index 34cf9c5a869df..a85f85d044462 100644 Binary files a/django/conf/locale/dsb/LC_MESSAGES/django.mo and b/django/conf/locale/dsb/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/dsb/LC_MESSAGES/django.po b/django/conf/locale/dsb/LC_MESSAGES/django.po index e3e343818f98e..0f0ca4fb7dd79 100644 --- a/django/conf/locale/dsb/LC_MESSAGES/django.po +++ b/django/conf/locale/dsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2018 +# Michael Wolf , 2016-2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-26 10:19+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 10:16+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Lower Sorbian (http://www.transifex.com/django/django/" "language/dsb/)\n" @@ -138,6 +138,9 @@ msgstr "Górnoserbšćina" msgid "Hungarian" msgstr "Hungoršćina" +msgid "Armenian" +msgstr "Armeńšćina" + msgid "Interlingua" msgstr "Interlingua" @@ -625,6 +628,9 @@ msgstr "Gropne binarne daty" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' njejo płaśiwy UUID." +msgid "Universally unique identifier" +msgstr "Uniwerselnje jadnorazowy identifikator" + msgid "File" msgstr "Dataja" @@ -1089,8 +1095,8 @@ msgstr "To njejo płaśiwa IPv6-adresa." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "abo" diff --git a/django/conf/locale/el/LC_MESSAGES/django.mo b/django/conf/locale/el/LC_MESSAGES/django.mo index 29beef7c18e28..d5c9ba29c2b1b 100644 Binary files a/django/conf/locale/el/LC_MESSAGES/django.mo and b/django/conf/locale/el/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/el/LC_MESSAGES/django.po b/django/conf/locale/el/LC_MESSAGES/django.po index 1669421d5bd98..881df90423307 100644 --- a/django/conf/locale/el/LC_MESSAGES/django.po +++ b/django/conf/locale/el/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # Dimitris Glezos , 2011,2013,2017 # Giannis Meletakis , 2015 # Jannis Leidel , 2011 -# Nick Mavrakis , 2017-2018 +# Nick Mavrakis , 2017-2019 # Nikolas Demiridis , 2014 # Nick Mavrakis , 2016 # Pãnoș , 2014 @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-09-22 10:11+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-05-23 19:25+0000\n" "Last-Translator: Nick Mavrakis \n" "Language-Team: Greek (http://www.transifex.com/django/django/language/el/)\n" "MIME-Version: 1.0\n" @@ -147,6 +147,9 @@ msgstr "Άνω Σορβικά" msgid "Hungarian" msgstr "Ουγγρικά" +msgid "Armenian" +msgstr "Αρμενικά" + msgid "Interlingua" msgstr "Ιντερλίνγκουα" @@ -622,6 +625,9 @@ msgstr "Δυαδικά δεδομένα" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' δεν είναι ένα έγκυρο UUID." +msgid "Universally unique identifier" +msgstr "Καθολικά μοναδικό αναγνωριστικό" + msgid "File" msgstr "Αρχείο" @@ -1077,8 +1083,8 @@ msgstr "Αυτή δεν είναι έγκυρη διεύθυνση IPv6." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "ή" diff --git a/django/conf/locale/eo/LC_MESSAGES/django.mo b/django/conf/locale/eo/LC_MESSAGES/django.mo index 6b3f0ec01f188..64c1b8fabca5d 100644 Binary files a/django/conf/locale/eo/LC_MESSAGES/django.mo and b/django/conf/locale/eo/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/eo/LC_MESSAGES/django.po b/django/conf/locale/eo/LC_MESSAGES/django.po index bb16d5d62fddb..d3fa9a1855289 100644 --- a/django/conf/locale/eo/LC_MESSAGES/django.po +++ b/django/conf/locale/eo/LC_MESSAGES/django.po @@ -2,19 +2,20 @@ # # Translators: # Baptiste Darthenay , 2012-2013 -# Baptiste Darthenay , 2013-2018 +# Baptiste Darthenay , 2013-2019 # batisteo , 2011 # Dinu Gherman , 2011 # kristjan , 2011 # Nikolay Korotkiy , 2017-2018 +# Robin van der Vliet , 2019 # Adamo Mesha , 2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-30 21:46+0000\n" -"Last-Translator: Baptiste Darthenay \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-04 21:34+0000\n" +"Last-Translator: Robin van der Vliet \n" "Language-Team: Esperanto (http://www.transifex.com/django/django/language/" "eo/)\n" "MIME-Version: 1.0\n" @@ -143,6 +144,9 @@ msgstr "Suprasoraba" msgid "Hungarian" msgstr "Hungara" +msgid "Armenian" +msgstr "Armena" + msgid "Interlingua" msgstr "Interlingvaa" @@ -369,10 +373,10 @@ msgid_plural "" "Ensure this value has at least %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" -"Certigu, ke tiu valuto havas %(limit_value)d karaktero (ĝi havas " +"Certigu, ke tiu valoro havas %(limit_value)d signon (ĝi havas " "%(show_value)d)." msgstr[1] "" -"Certigu, ke tiu valuto havas %(limit_value)d karakteroj (ĝi havas " +"Certigu, ke tiu valoro havas %(limit_value)d signojn (ĝi havas " "%(show_value)d)." #, python-format @@ -386,7 +390,7 @@ msgstr[0] "" "Certigu, ke tio valuto maksimume havas %(limit_value)d karakterojn (ĝi havas " "%(show_value)d)." msgstr[1] "" -"Certigu, ke tio valuto maksimume havas %(limit_value)d karakterojn (ĝi havas " +"Certigu, ke tiu valoro maksimume havas %(limit_value)d signojn (ĝi havas " "%(show_value)d)." msgid "Enter a number." @@ -611,6 +615,9 @@ msgstr "Kruda binara datumo" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' ne estas valida UUID." +msgid "Universally unique identifier" +msgstr "Universe unika identigilo" + msgid "File" msgstr "Dosiero" @@ -685,7 +692,7 @@ msgstr[0] "" "Certigu, ke tio dosiernomo maksimume havas %(max)d karakteron (ĝi havas " "%(length)d)." msgstr[1] "" -"Certigu, ke tio dosiernomo maksimume havas %(max)d karakterojn (ĝi havas " +"Certigu, ke tiu dosiernomo maksimume havas %(max)d signojn (ĝi havas " "%(length)d)." msgid "Please either submit a file or check the clear checkbox, not both." @@ -1059,8 +1066,8 @@ msgstr "Tiu ne estas valida IPv6-adreso." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "aŭ" diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo index 05290ef2ef22c..7ebd8f82f3baa 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 15638c5d7c48b..5749ffea110e5 100644 --- a/django/conf/locale/es/LC_MESSAGES/django.po +++ b/django/conf/locale/es/LC_MESSAGES/django.po @@ -11,25 +11,27 @@ # Ernesto Avilés Vázquez , 2014 # Ernesto Rico-Schmidt , 2017 # franchukelly , 2011 +# Ignacio José Lizarán Rus , 2019 # Igor Támara , 2015 # Jannis Leidel , 2011 # José Luis , 2016 # Josue Naaman Nistal Guerra , 2014 # Leonardo J. Caballero G. , 2011,2013 +# Luigy, 2019 # Marc Garcia , 2011 # monobotsoft , 2012 # ntrrgc , 2013 # ntrrgc , 2013 # Pablo, 2015 -# Sebastián Magrí , 2013 +# Sebastián Magrí, 2013 # Veronicabh , 2015 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 14:56+0000\n" -"Last-Translator: Ernesto Rico-Schmidt \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 08:50+0000\n" +"Last-Translator: Ignacio José Lizarán Rus \n" "Language-Team: Spanish (http://www.transifex.com/django/django/language/" "es/)\n" "MIME-Version: 1.0\n" @@ -158,6 +160,9 @@ msgstr "Alto sorbio" msgid "Hungarian" msgstr "Húngaro" +msgid "Armenian" +msgstr "Armenio/a" + msgid "Interlingua" msgstr "Interlingua" @@ -179,6 +184,9 @@ msgstr "Japonés" msgid "Georgian" msgstr "Georgiano" +msgid "Kabyle" +msgstr "Cabilio" + msgid "Kazakh" msgstr "Kazajo" @@ -402,6 +410,9 @@ msgstr[1] "" "Asegúrese de que este valor tenga menos de %(limit_value)d caracteres (tiene " "%(show_value)d)." +msgid "Enter a number." +msgstr "Introduzca un número." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -482,6 +493,10 @@ msgstr "Entero grande (8 bytes)" msgid "'%(value)s' value must be either True or False." msgstr "El valor '%(value)s' debe ser verdadero o falso." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "El valor '%(value)s' debe ser Verdadero, Falso o Ninguno" + msgid "Boolean (Either True or False)" msgstr "Booleano (Verdadero o Falso)" @@ -619,6 +634,9 @@ msgstr "Data de binarios brutos" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' no es un UUID válido." +msgid "Universally unique identifier" +msgstr "Identificador universal único" + msgid "File" msgstr "Archivo" @@ -658,9 +676,6 @@ msgstr "Este campo es obligatorio." msgid "Enter a whole number." msgstr "Introduzca un número entero." -msgid "Enter a number." -msgstr "Introduzca un número." - msgid "Enter a valid date." msgstr "Introduzca una fecha válida." @@ -673,6 +688,10 @@ msgstr "Introduzca una fecha/hora válida." msgid "Enter a valid duration." msgstr "Introduzca una duración válida." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "El número de días debe estar entre {min_days} y {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el " @@ -1067,7 +1086,7 @@ msgstr "Esta no es una dirección IPv6 válida." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s..." msgid "or" diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/django/conf/locale/es_AR/LC_MESSAGES/django.mo index d4f0f2a1f0a2f..35e8cfdd63fe4 100644 Binary files a/django/conf/locale/es_AR/LC_MESSAGES/django.mo and b/django/conf/locale/es_AR/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.po b/django/conf/locale/es_AR/LC_MESSAGES/django.po index bd53fe8f787d5..36ed3b3b5cc5f 100644 --- a/django/conf/locale/es_AR/LC_MESSAGES/django.po +++ b/django/conf/locale/es_AR/LC_MESSAGES/django.po @@ -4,13 +4,13 @@ # Jannis Leidel , 2011 # lardissone , 2014 # poli , 2014 -# Ramiro Morales, 2013-2018 +# Ramiro Morales, 2013-2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-06-18 20:22+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-20 14:07+0000\n" "Last-Translator: Ramiro Morales\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/django/django/" "language/es_AR/)\n" @@ -140,6 +140,9 @@ msgstr "alto sorabo" msgid "Hungarian" msgstr "húngaro" +msgid "Armenian" +msgstr "Armenio" + msgid "Interlingua" msgstr "Interlingua" @@ -613,6 +616,9 @@ msgstr "Datos binarios crudos" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' no es un UUID válido." +msgid "Universally unique identifier" +msgstr "Identificador universalmente único" + msgid "File" msgstr "Archivo" @@ -1065,8 +1071,8 @@ msgstr "Esta no es una dirección IPv6 válida." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "o" diff --git a/django/conf/locale/et/LC_MESSAGES/django.mo b/django/conf/locale/et/LC_MESSAGES/django.mo index 92688c5dd5c4c..23acf41b776e4 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 7e8fccba69037..9102e8f8d7b52 100644 --- a/django/conf/locale/et/LC_MESSAGES/django.po +++ b/django/conf/locale/et/LC_MESSAGES/django.po @@ -6,14 +6,14 @@ # Janno Liivak , 2013-2015 # madisvain , 2011 # Martin Pajuste , 2014-2015 -# Martin Pajuste , 2016-2017 +# Martin Pajuste , 2016-2017,2019 # Marti Raudsepp , 2014,2016 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 10:26+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 16:27+0000\n" "Last-Translator: Martin Pajuste \n" "Language-Team: Estonian (http://www.transifex.com/django/django/language/" "et/)\n" @@ -143,6 +143,9 @@ msgstr "ülemsorbi" msgid "Hungarian" msgstr "ungari" +msgid "Armenian" +msgstr "armeenia" + msgid "Interlingua" msgstr "interlingua" @@ -164,6 +167,9 @@ msgstr "jaapani" msgid "Georgian" msgstr "gruusia" +msgid "Kabyle" +msgstr "" + msgid "Kazakh" msgstr "kasahhi" @@ -385,6 +391,9 @@ msgstr[1] "" "Väärtuses võib olla kõige rohkem %(limit_value)d tähemärki (praegu on " "%(show_value)d)." +msgid "Enter a number." +msgstr "Sisestage arv." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -416,7 +425,7 @@ msgstr "" "'%(allowed_extensions)s'." msgid "Null characters are not allowed." -msgstr "" +msgstr "Tühjad tähemärgid ei ole lubatud." msgid "and" msgstr "ja" @@ -466,6 +475,10 @@ msgstr "Suur (8 baiti) täisarv" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' väärtus peab olema kas Tõene või Väär." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Tõeväärtus (Kas tõene või väär)" @@ -602,6 +615,9 @@ msgstr "Töötlemata binaarandmed" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' ei ole korrektne UUID." +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "Fail" @@ -641,9 +657,6 @@ msgstr "See lahter on nõutav." msgid "Enter a whole number." msgstr "Sisestage täisarv." -msgid "Enter a number." -msgstr "Sisestage arv." - msgid "Enter a valid date." msgstr "Sisestage korrektne kuupäev." @@ -656,6 +669,10 @@ msgstr "Sisestage korrektne kuupäev ja kellaaeg." msgid "Enter a valid duration." msgstr "Sisestage korrektne kestus." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Päevade arv peab jääma vahemikku {min_days} kuni {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Ühtegi faili ei saadetud. Kontrollige vormi kodeeringutüüpi." @@ -1046,8 +1063,8 @@ msgstr "See ei ole korrektne IPv6 aadress." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "või" diff --git a/django/conf/locale/eu/LC_MESSAGES/django.mo b/django/conf/locale/eu/LC_MESSAGES/django.mo index 9b7d8433b3a5b..3a88f999b8ea3 100644 Binary files a/django/conf/locale/eu/LC_MESSAGES/django.mo and b/django/conf/locale/eu/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/eu/LC_MESSAGES/django.po b/django/conf/locale/eu/LC_MESSAGES/django.po index ba3c41dc8a2c5..a18089d295966 100644 --- a/django/conf/locale/eu/LC_MESSAGES/django.po +++ b/django/conf/locale/eu/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Aitzol Naberan , 2013,2016 # Ander Martínez , 2013-2014 -# Eneko Illarramendi , 2017-2018 +# Eneko Illarramendi , 2017-2019 # Jannis Leidel , 2011 # jazpillaga , 2011 # julen, 2011-2012 @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-08-23 14:04+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-22 10:02+0000\n" "Last-Translator: Eneko Illarramendi \n" "Language-Team: Basque (http://www.transifex.com/django/django/language/eu/)\n" "MIME-Version: 1.0\n" @@ -145,6 +145,9 @@ msgstr "Goi-sorbiera" msgid "Hungarian" msgstr "Hungariera" +msgid "Armenian" +msgstr "Armeniera" + msgid "Interlingua" msgstr "Interlingua" @@ -615,6 +618,9 @@ msgstr "Datu bitar gordinak" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' ez da baleko UUID bat." +msgid "Universally unique identifier" +msgstr "\"Universally unique identifier\"" + msgid "File" msgstr "Fitxategia" @@ -1061,8 +1067,8 @@ msgstr "Hau ez da baleko IPv6 helbide bat." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "edo" diff --git a/django/conf/locale/fa/LC_MESSAGES/django.mo b/django/conf/locale/fa/LC_MESSAGES/django.mo index fa9d7e48dff6a..ca829e48b31b3 100644 Binary files a/django/conf/locale/fa/LC_MESSAGES/django.mo and b/django/conf/locale/fa/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/fa/LC_MESSAGES/django.po b/django/conf/locale/fa/LC_MESSAGES/django.po index 1143b2eea2c05..da3111a40326a 100644 --- a/django/conf/locale/fa/LC_MESSAGES/django.po +++ b/django/conf/locale/fa/LC_MESSAGES/django.po @@ -3,10 +3,12 @@ # Translators: # Ali Vakilzade , 2015 # Arash Fazeli , 2012 +# Eric Hamiter , 2019 # Jannis Leidel , 2011 # Mazdak Badakhshan , 2014 +# Milad Hazrati , 2019 # MJafar Mashhadi , 2018 -# Mohammad Hossein Mojtahedi , 2013 +# Mohammad Hossein Mojtahedi , 2013,2019 # Pouya Abbassi, 2016 # Reza Mohammadi , 2013-2016 # Saeed , 2011 @@ -15,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-06-23 23:00+0000\n" -"Last-Translator: MJafar Mashhadi \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-22 09:42+0000\n" +"Last-Translator: Milad Hazrati \n" "Language-Team: Persian (http://www.transifex.com/django/django/language/" "fa/)\n" "MIME-Version: 1.0\n" @@ -93,7 +95,7 @@ msgid "Argentinian Spanish" msgstr "اسپانیایی آرژانتینی" msgid "Colombian Spanish" -msgstr "کلمبیائی اسپانیایی" +msgstr "اسپانیایی کلمبیایی" msgid "Mexican Spanish" msgstr "اسپانیولی مکزیکی" @@ -146,6 +148,9 @@ msgstr "صربستانی بالا" msgid "Hungarian" msgstr "مجاری" +msgid "Armenian" +msgstr "ارمنی" + msgid "Interlingua" msgstr "اینترلینگوا" @@ -168,7 +173,7 @@ msgid "Georgian" msgstr "گرجی" msgid "Kabyle" -msgstr "" +msgstr "قبایلی" msgid "Kazakh" msgstr "قزاقستان" @@ -420,7 +425,7 @@ msgstr "" "از: '%(allowed_extensions)s'" msgid "Null characters are not allowed." -msgstr "" +msgstr "کاراکترهای تهی مجاز نیستند." msgid "and" msgstr "و" @@ -610,6 +615,9 @@ msgstr "دادهٔ دودویی خام" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' یک UUID معتبر نیست." +msgid "Universally unique identifier" +msgstr "شناسه منحصر به فرد سراسری" + msgid "File" msgstr "پرونده" @@ -663,7 +671,7 @@ msgstr "یک بازهٔ زمانی معتبر وارد کنید." #, python-brace-format msgid "The number of days must be between {min_days} and {max_days}." -msgstr "" +msgstr "عدد روز باید بین {min_days} و {max_days} باشد." msgid "No file was submitted. Check the encoding type on the form." msgstr "پرونده‌ای ارسال نشده است. نوع کدگذاری فرم را بررسی کنید." @@ -755,14 +763,14 @@ msgid "Please correct the duplicate values below." msgstr "لطفا مقدار تکراری را اصلاح کنید." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "مقدار درون خطی موجود با نمونه والد آن مطابقت ندارد." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "یک گزینهٔ معتبر انتخاب کنید. آن گزینه از گزینه‌های موجود نیست." #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "\"%(pk)s\" یک مقدار معتبر نیست." #, python-format msgid "" @@ -1052,8 +1060,8 @@ msgstr "این مقدار آدرس IPv6 معتبری نیست." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "یا" @@ -1134,6 +1142,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"اگر از تگ یا هدر " +"'Referrer-Policy: no-referrer' استفاده می کنید، لطفا حذفشان کنید. محافظ CSRF " +"به هدر 'Referer' برای بررسی قوی ارجاع دهنده نیازمند است. اگر شما نگران حریم " +"خصوصی هستید، از جایگزین هایی مانند پیوندهای به " +"سایت های دیگر استفاده کنید. " msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1212,16 +1225,19 @@ msgid "Index of %(directory)s" msgstr "فهرست %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "جنگو: فریمورک وب برای کمال گرایانی که محدودیت زمانی دارند." #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"نمایش release notes برای نسخه %(version)s " +"جنگو" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "نصب درست کار کرد. تبریک می گویم!" #, python-format msgid "" @@ -1230,12 +1246,16 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"شما این صفحه را به این دلیل مشاهده می کنید که DEBUG=True در فایل تنظیمات شما وجود دارد و شما هیچ URL " +"تنظیم نکرده اید." msgid "Django Documentation" msgstr "مستندات جنگو" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "مباحث، ارجاعات و سوالات آغاز شونده با \"چگونه؟\"" msgid "Tutorial: A Polling App" msgstr "آموزش گام به گام: برنامکی برای رأی‌گیری" @@ -1247,4 +1267,4 @@ msgid "Django Community" msgstr "جامعهٔ جنگو" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "متصل شوید، کمک بگیرید یا مشارکت کنید" diff --git a/django/conf/locale/fi/LC_MESSAGES/django.mo b/django/conf/locale/fi/LC_MESSAGES/django.mo index 1d027960ed23f..c3c7baa154609 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 fbab3be89ed85..4cef64f303e0e 100644 --- a/django/conf/locale/fi/LC_MESSAGES/django.po +++ b/django/conf/locale/fi/LC_MESSAGES/django.po @@ -5,14 +5,15 @@ # Antti Kaihola , 2011 # Jannis Leidel , 2011 # Lasse Liehu , 2015 +# Mika Mäkelä , 2018 # Klaus Dahlén , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 00:21+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 00:44+0000\n" +"Last-Translator: Ramiro Morales\n" "Language-Team: Finnish (http://www.transifex.com/django/django/language/" "fi/)\n" "MIME-Version: 1.0\n" @@ -141,6 +142,9 @@ msgstr "Yläsorbi" msgid "Hungarian" msgstr "unkari" +msgid "Armenian" +msgstr "" + msgid "Interlingua" msgstr "interlingua" @@ -473,7 +477,7 @@ 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)" @@ -608,6 +612,9 @@ msgstr "Raaka binaaridata" msgid "'%(value)s' is not a valid UUID." msgstr "%(value)s ei ole kelvollinen UUID." +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "Tiedosto" @@ -661,7 +668,7 @@ msgstr "Syötä oikea kesto." #, python-brace-format msgid "The number of days must be between {min_days} and {max_days}." -msgstr "" +msgstr "Päivien määrä täytyy olla välillä {min_days} ja {max_days}." msgid "No file was submitted. Check the encoding type on the form." msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)." @@ -754,7 +761,7 @@ msgid "Please correct the duplicate values below." msgstr "Korjaa allaolevat kaksoisarvot." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "Liittyvä arvo ei vastannut vanhempaa instanssia." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta." @@ -1051,8 +1058,8 @@ msgstr "Tämä ei ole kelvollinen IPv6-osoite." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s…" +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "tai" @@ -1224,6 +1231,8 @@ msgid "" "View release notes for Django %(version)s" msgstr "" +"Katso Django %(version)s julkaisutiedot" msgid "The install worked successfully! Congratulations!" msgstr "Asennus toimi! Onneksi olkoon!" @@ -1255,4 +1264,4 @@ msgid "Django Community" msgstr "Django-yhteisö" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "Verkostoidu, saa apua tai jatkokehitä" diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo index cd2bbfd6caf8d..92fc64e8c2124 100644 Binary files a/django/conf/locale/fr/LC_MESSAGES/django.mo and b/django/conf/locale/fr/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index 91c9d9ef6da49..fad7a32a592b0 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -1,8 +1,8 @@ # This file is distributed under the same license as the Django package. # # Translators: -# charettes , 2012 -# Claude Paroz , 2013-2018 +# Simon Charette , 2012 +# Claude Paroz , 2013-2019 # Claude Paroz , 2011 # Jannis Leidel , 2011 # Jean-Baptiste Mora, 2014 @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 12:50+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 17:30+0000\n" "Last-Translator: Claude Paroz \n" "Language-Team: French (http://www.transifex.com/django/django/language/fr/)\n" "MIME-Version: 1.0\n" @@ -142,6 +142,9 @@ msgstr "Haut-sorabe" msgid "Hungarian" msgstr "Hongrois" +msgid "Armenian" +msgstr "Arménien" + msgid "Interlingua" msgstr "Interlingua" @@ -622,6 +625,9 @@ msgstr "Données binaires brutes" msgid "'%(value)s' is not a valid UUID." msgstr "La valeur « %(value)s » n'est pas un UUID valide." +msgid "Universally unique identifier" +msgstr "Identifiant unique universel" + msgid "File" msgstr "Fichier" @@ -1073,7 +1079,7 @@ msgstr "Ceci n'est pas une adresse IPv6 valide." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s…" msgid "or" diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo index e1d0f022864ac..cc04701d36593 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 1058a504262f0..4dcccb45fb626 100644 --- a/django/conf/locale/he/LC_MESSAGES/django.po +++ b/django/conf/locale/he/LC_MESSAGES/django.po @@ -3,20 +3,21 @@ # Translators: # Alex Gaynor , 2011-2012 # Jannis Leidel , 2011 -# Meir Kriheli , 2011-2015,2017 +# Meir Kriheli , 2011-2015,2017,2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-28 08:17+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-19 16:32+0000\n" "Last-Translator: Meir Kriheli \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" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % " +"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" msgid "Afrikaans" msgstr "אפריקאנס" @@ -138,6 +139,9 @@ msgstr "סורבית עילית" msgid "Hungarian" msgstr "הונגרית" +msgid "Armenian" +msgstr "ארמנית" + msgid "Interlingua" msgstr "אינטרלינגואה" @@ -159,6 +163,9 @@ msgstr "יפנית" msgid "Georgian" msgstr "גיאורגית" +msgid "Kabyle" +msgstr "קבילה" + msgid "Kazakh" msgstr "קזחית" @@ -361,6 +368,10 @@ msgstr[0] "" "נא לוודא שערך זה מכיל תו %(limit_value)d לכל הפחות (מכיל %(show_value)d)." msgstr[1] "" "נא לוודא שערך זה מכיל %(limit_value)d תווים לכל הפחות (מכיל %(show_value)d)." +msgstr[2] "" +"נא לוודא שערך זה מכיל %(limit_value)d תווים לכל הפחות (מכיל %(show_value)d)." +msgstr[3] "" +"נא לוודא שערך זה מכיל %(limit_value)d תווים לכל הפחות (מכיל %(show_value)d)." #, python-format msgid "" @@ -373,18 +384,29 @@ msgstr[0] "" "נא לוודא שערך זה מכיל תו %(limit_value)d לכל היותר (מכיל %(show_value)d)." msgstr[1] "" "נא לוודא שערך זה מכיל %(limit_value)d תווים לכל היותר (מכיל %(show_value)d)." +msgstr[2] "" +"נא לוודא שערך זה מכיל %(limit_value)d תווים לכל היותר (מכיל %(show_value)d)." +msgstr[3] "" +"נא לוודא שערך זה מכיל %(limit_value)d תווים לכל היותר (מכיל %(show_value)d)." + +msgid "Enter a number." +msgstr "נא להזין מספר." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "נא לוודא שאין יותר מספרה %(max)s בסה\"כ." msgstr[1] "נא לוודא שאין יותר מ־%(max)s ספרות בסה\"כ." +msgstr[2] "נא לוודא שאין יותר מ־%(max)s ספרות בסה\"כ." +msgstr[3] "נא לוודא שאין יותר מ־%(max)s ספרות בסה\"כ." #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "נא לוודא שאין יותר מספרה %(max)s אחרי הנקודה." msgstr[1] "נא לוודא שאין יותר מ־%(max)s ספרות אחרי הנקודה." +msgstr[2] "נא לוודא שאין יותר מ־%(max)s ספרות אחרי הנקודה." +msgstr[3] "נא לוודא שאין יותר מ־%(max)s ספרות אחרי הנקודה." #, python-format msgid "" @@ -393,6 +415,8 @@ msgid_plural "" "Ensure that there are no more than %(max)s digits before the decimal point." msgstr[0] "נא לוודא שאין יותר מספרה %(max)s לפני הנקודה העשרונית" msgstr[1] "נא לוודא שאין יותר מ־%(max)s ספרות לפני הנקודה העשרונית" +msgstr[2] "נא לוודא שאין יותר מ־%(max)s ספרות לפני הנקודה העשרונית" +msgstr[3] "נא לוודא שאין יותר מ־%(max)s ספרות לפני הנקודה העשרונית" #, python-format msgid "" @@ -452,6 +476,10 @@ msgstr "מספר שלם גדול (8 בתים)" msgid "'%(value)s' value must be either True or False." msgstr "הערך '%(value)s' חייב להיות אמת או שקר." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' חייב להיות אחד מ־True‏, False, או None." + msgid "Boolean (Either True or False)" msgstr "בוליאני (אמת או שקר)" @@ -584,6 +612,9 @@ msgstr "מידע בינארי גולמי" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' אינו UUID חוקי." +msgid "Universally unique identifier" +msgstr "מזהה ייחודי אוניברסלי" + msgid "File" msgstr "קובץ" @@ -623,9 +654,6 @@ msgstr "יש להזין תוכן בשדה זה." msgid "Enter a whole number." msgstr "נא להזין מספר שלם." -msgid "Enter a number." -msgstr "נא להזין מספר." - msgid "Enter a valid date." msgstr "יש להזין תאריך חוקי." @@ -638,6 +666,10 @@ msgstr "יש להזין תאריך ושעה חוקיים." msgid "Enter a valid duration." msgstr "יש להזין משך חוקי." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "מספר הימים חייב להיות בין {min_days} ל־{max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס." @@ -654,6 +686,10 @@ msgid_plural "" msgstr[0] "נא לוודא ששם קובץ זה מכיל תו %(max)d לכל היותר (מכיל %(length)d)." msgstr[1] "" "נא לוודא ששם קובץ זה מכיל %(max)d תווים לכל היותר (מכיל %(length)d)." +msgstr[2] "" +"נא לוודא ששם קובץ זה מכיל %(max)d תווים לכל היותר (מכיל %(length)d)." +msgstr[3] "" +"נא לוודא ששם קובץ זה מכיל %(max)d תווים לכל היותר (מכיל %(length)d)." msgid "Please either submit a file or check the clear checkbox, not both." msgstr "נא לשים קובץ או סימן את התיבה לניקוי, לא שניהם." @@ -692,12 +728,16 @@ msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." msgstr[0] "נא לשלוח טופס %d לכל היותר." msgstr[1] "נא לשלוח %d טפסים לכל היותר." +msgstr[2] "נא לשלוח %d טפסים לכל היותר." +msgstr[3] "נא לשלוח %d טפסים לכל היותר." #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." msgstr[0] "נא לשלוח טופס %d או יותר." msgstr[1] "נא לשלוח %d טפסים או יותר." +msgstr[2] "נא לשלוח %d טפסים או יותר." +msgstr[3] "נא לשלוח %d טפסים או יותר." msgid "Order" msgstr "מיון" @@ -768,6 +808,8 @@ msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "בית %(size)d " msgstr[1] "%(size)d בתים" +msgstr[2] "%(size)d בתים" +msgstr[3] "%(size)d בתים" #, python-format msgid "%s KB" @@ -1022,8 +1064,8 @@ msgstr "זו אינה כתובת IPv6 חוקית." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s‮…" msgid "or" msgstr "או" @@ -1037,36 +1079,48 @@ msgid "%d year" msgid_plural "%d years" msgstr[0] "שנה %d" msgstr[1] "%d שנים" +msgstr[2] "%d שנים" +msgstr[3] "%d שנים" #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "חודש %d" msgstr[1] "%d חודשים" +msgstr[2] "%d חודשים" +msgstr[3] "%d חודשים" #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "שבוע %d" msgstr[1] "%d שבועות" +msgstr[2] "%d שבועות" +msgstr[3] "%d שבועות" #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "יום %d" msgstr[1] "%d ימים" +msgstr[2] "%d ימים" +msgstr[3] "%d ימים" #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "שעה %d" msgstr[1] "%d שעות" +msgstr[2] "%d שעות" +msgstr[3] "%d שעות" #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "דקה %d" msgstr[1] "%d דקות" +msgstr[2] "%d דקות" +msgstr[3] "%d דקות" msgid "0 minutes" msgstr "0 דקות" diff --git a/django/conf/locale/hsb/LC_MESSAGES/django.mo b/django/conf/locale/hsb/LC_MESSAGES/django.mo index 909649f45d099..6c80bb57bd88f 100644 Binary files a/django/conf/locale/hsb/LC_MESSAGES/django.mo and b/django/conf/locale/hsb/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/hsb/LC_MESSAGES/django.po b/django/conf/locale/hsb/LC_MESSAGES/django.po index 37cc5ba7d6ebf..6e97b1bb93d20 100644 --- a/django/conf/locale/hsb/LC_MESSAGES/django.po +++ b/django/conf/locale/hsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2018 +# Michael Wolf , 2016-2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-26 11:17+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-04 13:50+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Upper Sorbian (http://www.transifex.com/django/django/" "language/hsb/)\n" @@ -138,6 +138,9 @@ msgstr "Hornjoserbšćina" msgid "Hungarian" msgstr "Madźaršćina" +msgid "Armenian" +msgstr "Armenšćina" + msgid "Interlingua" msgstr "Interlingua" @@ -623,6 +626,9 @@ msgstr "Hrube binarne daty" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' płaćiwy UUID njeje." +msgid "Universally unique identifier" +msgstr "Uniwerselnje jónkróćny identifikator" + msgid "File" msgstr "Dataja" @@ -1084,8 +1090,8 @@ msgstr "To płaćiwa IPv6-adresa njeje." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "abo" diff --git a/django/conf/locale/hu/LC_MESSAGES/django.mo b/django/conf/locale/hu/LC_MESSAGES/django.mo index a7ac689d9a0f5..0489b6c1c7698 100644 Binary files a/django/conf/locale/hu/LC_MESSAGES/django.mo and b/django/conf/locale/hu/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/hu/LC_MESSAGES/django.po b/django/conf/locale/hu/LC_MESSAGES/django.po index 64456a665dcbf..a53d082374bdb 100644 --- a/django/conf/locale/hu/LC_MESSAGES/django.po +++ b/django/conf/locale/hu/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Akos Zsolt Hochrein , 2018 -# András Veres-Szentkirályi, 2016-2018 +# András Veres-Szentkirályi, 2016-2019 # Attila Nagy <>, 2012 # Dóra Szendrei , 2017 # Jannis Leidel , 2011 @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-26 09:24+0000\n" -"Last-Translator: Akos Zsolt Hochrein \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-04-17 07:38+0000\n" +"Last-Translator: András Veres-Szentkirályi\n" "Language-Team: Hungarian (http://www.transifex.com/django/django/language/" "hu/)\n" "MIME-Version: 1.0\n" @@ -144,6 +144,9 @@ msgstr "Felsőszorb" msgid "Hungarian" msgstr "Magyar" +msgid "Armenian" +msgstr "Örmény" + msgid "Interlingua" msgstr "Interlingua" @@ -622,6 +625,9 @@ msgstr "Nyers bináris adat" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' nem egy érvényes UUID." +msgid "Universally unique identifier" +msgstr "Univerzálisan egyedi azonosító" + msgid "File" msgstr "Fájl" @@ -1073,8 +1079,8 @@ msgstr "Ez nem egy érvényes IPv6 cím." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "vagy" diff --git a/django/conf/locale/id/LC_MESSAGES/django.mo b/django/conf/locale/id/LC_MESSAGES/django.mo index df13536c20dd1..6d0b6776ff9ae 100644 Binary files a/django/conf/locale/id/LC_MESSAGES/django.mo and b/django/conf/locale/id/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/id/LC_MESSAGES/django.po b/django/conf/locale/id/LC_MESSAGES/django.po index 99fc195f05b0e..9fbe179488e4e 100644 --- a/django/conf/locale/id/LC_MESSAGES/django.po +++ b/django/conf/locale/id/LC_MESSAGES/django.po @@ -2,20 +2,22 @@ # # Translators: # Adiyat Mubarak , 2017 -# Fery Setiawan , 2015-2018 +# Claude Paroz , 2018 +# Fery Setiawan , 2015-2019 # Jannis Leidel , 2011 # M Asep Indrayana , 2015 -# oon arfiandwi (OonID) , 2016 +# oon arfiandwi , 2016 # rodin , 2011 # rodin , 2013-2016 +# sage , 2018-2019 # Sutrisno Efendi , 2015,2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-06-18 23:24+0000\n" -"Last-Translator: Fery Setiawan \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-05-05 04:23+0000\n" +"Last-Translator: sage \n" "Language-Team: Indonesian (http://www.transifex.com/django/django/language/" "id/)\n" "MIME-Version: 1.0\n" @@ -144,6 +146,9 @@ msgstr "Sorbian Atas" msgid "Hungarian" msgstr "Hungaria" +msgid "Armenian" +msgstr "Armenian" + msgid "Interlingua" msgstr "Interlingua" @@ -605,6 +610,9 @@ msgstr "Data biner mentah" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' bukan UUID yang benar" +msgid "Universally unique identifier" +msgstr "Penciri unik secara universal" + msgid "File" msgstr "Berkas" @@ -1049,8 +1057,8 @@ msgstr "Ini bukan alamat IPv6 yang benar" #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "atau" @@ -1104,19 +1112,19 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" -"Anda melihat pesan ini karena situs HTTP ini membutuhkan 'Referer header' " -"dikirim dari Web browser anda, tapi tidak terkirim. Header tersebut wajib " -"karena alasan keamanan, untuk memastikan bahwa browser anda tidak dibajak " -"oleh pihak ketiga." +"Anda melihat pesan ini karena situs HTTP ini membutuhkan header 'Referrer' " +"dikirim dari web browser Anda, tetapi tidak terkirim. Header tersebut " +"dibutuhkan karena alasan keamanan, untuk memastikan bahwa browser Anda tidak " +"dibajak oleh pihak ketiga." 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 "" -"Jika anda menonaktifkan 'Referer' headers pada konfigurasi browser anda, " +"Jika Anda menonaktifkan header 'Referrer' pada konfigurasi browser Anda, " "mohon aktfikan kembali, setidaknya untuk situs ini atau untuk koneksi HTTPS, " -"atau untuk 'same-origin' requests." +"atau untuk request 'same-origin'." msgid "" "If you are using the tag or " @@ -1125,28 +1133,29 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" -"Jika anda sedang menggunakan etiket atau menyertakan kepala 'Referrer-Policy: no-referrer', harap " -"memindahkan mereka. Perlindungan CSRF membutuhkan kepala 'Referer' untuk " -"melakukan pemeriksaan pengarahan ketat. Jika anda sedang khawatir mengenai " -"pribadi, gunakan cara lain seperti untuk tautan " -"pada situs pihak-ketiga." +"Jika Anda menggunakan tag " +"atau menyertakan kepala 'Referrer-Policy: no-referrer', harap hapus mereka. " +"Perlindungan CSRF membutuhkan kepala 'Referrer' untuk melakukan pemeriksaan " +"pengarahan ketat. Jika Anda khawatir mengenai privasi, gunakan cara lain " +"seperti untuk tautan pada situs pihak ketiga." msgid "" "You are seeing this message because this site requires a CSRF cookie when " "submitting forms. This cookie is required for security reasons, to ensure " "that your browser is not being hijacked by third parties." msgstr "" -"Kamu melihat pesan ini karena situs ini membutuhkan sebuah CSRF cookie " -"ketika mengirimkan sebuah form. Cookie ini dibutuhkan for alasalan keamanan, " -"untuk memastikan bahwa browser Anda tidak sedang dibajak oleh pihak ketiga." +"Anda melihat pesan ini karena situs ini membutuhkan sebuah CSRF cookie " +"ketika mengirimkan sebuah formulir. Cookie ini dibutuhkan untuk alasan " +"keamanan, untuk memastikan bahwa browser Anda tidak sedang dibajak oleh " +"pihak ketiga." 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 "" -"Jika browser kamu memiliki konfigurasi untuk menyalakan cookies, maka " -"nyalakan kembali, setidak nya untuk website ini." +"Jika Anda telah mengatur browser Anda untuk menonaktifkan cookies, maka " +"aktifkanlah kembali, setidaknya untuk website ini, atau untuk request 'same-" +"origin'." msgid "More information is available with DEBUG=True." msgstr "Informasi lebih lanjut tersedia dengan DEBUG=True" @@ -1220,7 +1229,7 @@ msgid "" "target=\"_blank\" rel=\"noopener\">release notes for Django %(version)s" msgstr "" "Lihat release notes untuk Django %(version)s" +"target=\"_blank\" rel=\"noopener\">catatan rilis untuk Django %(version)s" msgid "The install worked successfully! Congratulations!" msgstr "Selamat! Pemasangan berjalan lancar!" @@ -1232,10 +1241,10 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" -"Anda sedang elihat halaman ini karena DEBUG=True berada di berkas pengaturan anda dan anda belum " -"mengkonfigurasi URL apapun." +"\">DEBUG=True berada di berkas pengaturan Anda dan Anda belum " +"mengonfigurasi URL apa pun." msgid "Django Documentation" msgstr "Dokumentasi Django" @@ -1244,7 +1253,7 @@ msgid "Topics, references, & how-to's" msgstr "Topik, referensi & cara pemakaian" msgid "Tutorial: A Polling App" -msgstr "Tutorial: Sebuah aplikasi jejak pendapat" +msgstr "Tutorial: Sebuah aplikasi jajak pendapat" msgid "Get started with Django" msgstr "Memulai dengan Django" diff --git a/django/conf/locale/is/LC_MESSAGES/django.mo b/django/conf/locale/is/LC_MESSAGES/django.mo index 463814a893f1d..4859aafe2253d 100644 Binary files a/django/conf/locale/is/LC_MESSAGES/django.mo and b/django/conf/locale/is/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/is/LC_MESSAGES/django.po b/django/conf/locale/is/LC_MESSAGES/django.po index 09aaab84b57f5..60dc67ef295ca 100644 --- a/django/conf/locale/is/LC_MESSAGES/django.po +++ b/django/conf/locale/is/LC_MESSAGES/django.po @@ -7,13 +7,13 @@ # Matt R, 2018 # saevarom , 2011 # saevarom , 2013,2015 -# Thordur Sigurdsson , 2016-2018 +# Thordur Sigurdsson , 2016-2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-06-22 20:45+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 15:48+0000\n" "Last-Translator: Thordur Sigurdsson \n" "Language-Team: Icelandic (http://www.transifex.com/django/django/language/" "is/)\n" @@ -143,6 +143,9 @@ msgstr "Efri sorbíska" msgid "Hungarian" msgstr "Ungverska" +msgid "Armenian" +msgstr "Armenska" + msgid "Interlingua" msgstr "Interlingua" @@ -614,6 +617,9 @@ msgstr "Hrá tvíundargögn (binary data)" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' er ekki gilt UUID." +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "Skrá" @@ -1060,8 +1066,8 @@ msgstr "Þetta er ekki gilt IPv6 vistfang." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "eða" diff --git a/django/conf/locale/it/LC_MESSAGES/django.mo b/django/conf/locale/it/LC_MESSAGES/django.mo index ece4baa2aa5e2..be6bd5ad41844 100644 Binary files a/django/conf/locale/it/LC_MESSAGES/django.mo and b/django/conf/locale/it/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po index 35ad800b54e6b..ca12fe3ba4f3c 100644 --- a/django/conf/locale/it/LC_MESSAGES/django.po +++ b/django/conf/locale/it/LC_MESSAGES/django.po @@ -1,10 +1,10 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Topolino_Hackerino , 2017 +# AndreiCR , 2017 # Carlo Miron , 2011 # Carlo Miron , 2014 -# Carlo Miron , 2018 +# Carlo Miron , 2018-2019 # Denis Darii , 2011 # Flavio Curella , 2013,2016 # Jannis Leidel , 2011 @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-30 21:04+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 10:28+0000\n" "Last-Translator: Carlo Miron \n" "Language-Team: Italian (http://www.transifex.com/django/django/language/" "it/)\n" @@ -152,6 +152,9 @@ msgstr "Sorabo superiore" msgid "Hungarian" msgstr "Ungherese" +msgid "Armenian" +msgstr "Armeno" + msgid "Interlingua" msgstr "Interlingua" @@ -622,6 +625,9 @@ msgstr "Dati binari grezzi" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' non è uno UUID valido." +msgid "Universally unique identifier" +msgstr "Identificatore univoco universale" + msgid "File" msgstr "File" @@ -1071,8 +1077,8 @@ msgstr "Questo non è un indirizzo IPv6 valido." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr " %(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "o" diff --git a/django/conf/locale/ja/LC_MESSAGES/django.mo b/django/conf/locale/ja/LC_MESSAGES/django.mo index cf1abc4c03483..4440f6339ae9b 100644 Binary files a/django/conf/locale/ja/LC_MESSAGES/django.mo and b/django/conf/locale/ja/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ja/LC_MESSAGES/django.po b/django/conf/locale/ja/LC_MESSAGES/django.po index 04b771bfaab96..9a610ab3c295f 100644 --- a/django/conf/locale/ja/LC_MESSAGES/django.po +++ b/django/conf/locale/ja/LC_MESSAGES/django.po @@ -2,18 +2,21 @@ # # Translators: # xiu1 , 2016 +# GOTO Hayato , 2019 # Jannis Leidel , 2011 # Kentaro Matsuzaki , 2015 # Masashi SHIBATA , 2017 -# Shinya Okano , 2012-2018 +# Nikita K , 2019 +# Shinichi Katsumata , 2019 +# Shinya Okano , 2012-2019 # Tetsuya Morimoto , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-23 03:26+0000\n" -"Last-Translator: Shinya Okano \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-07 08:56+0000\n" +"Last-Translator: GOTO Hayato \n" "Language-Team: Japanese (http://www.transifex.com/django/django/language/" "ja/)\n" "MIME-Version: 1.0\n" @@ -142,6 +145,9 @@ msgstr "高地ソルブ語" msgid "Hungarian" msgstr "ハンガリー語" +msgid "Armenian" +msgstr "アルメニア" + msgid "Interlingua" msgstr "インターリングア" @@ -325,14 +331,14 @@ msgstr "有効なメールアドレスを入力してください。" #. Translators: "letters" means latin letters: a-z and A-Z. msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." -msgstr "slug には半角の英数字、アンダースコア、ハイフン以外は使用できません。" +msgstr "スラグには半角の英数字、アンダースコア、ハイフン以外は使用できません。" msgid "" "Enter a valid 'slug' consisting of Unicode letters, numbers, underscores, or " "hyphens." msgstr "" -"ユニコード文字、数字、アンダースコアまたはハイフンで構成された、有効な" -"「slug」を入力してください" +"ユニコード文字、数字、アンダースコアまたはハイフンで構成された、有効なスラグ" +"を入力してください" msgid "Enter a valid IPv4 address." msgstr "有効なIPアドレス (IPv4) を入力してください。" @@ -383,7 +389,7 @@ msgstr[0] "" "なっています)。" msgid "Enter a number." -msgstr "整数を入力してください。" +msgstr "数値を入力してください。" #, python-format msgid "Ensure that there are no more than %(max)s digit in total." @@ -597,6 +603,9 @@ msgstr "生のバイナリデータ" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' は有効なUUIDではありません。" +msgid "Universally unique identifier" +msgstr "汎用一意識別子" + msgid "File" msgstr "ファイル" @@ -643,7 +652,7 @@ msgid "Enter a valid time." msgstr "時間を正しく入力してください。" msgid "Enter a valid date/time." -msgstr "日付/時間を正しく入力してください。" +msgstr "日時を正しく入力してください。" msgid "Enter a valid duration." msgstr "時間差分を正しく入力してください。" @@ -654,7 +663,7 @@ msgstr "日数は{min_days}から{max_days}の間でなければなりません msgid "No file was submitted. Check the encoding type on the form." msgstr "" -"ファイルが取得できませんでした。formのencoding typeを確認してください。" +"ファイルが取得できませんでした。フォームのencoding typeを確認してください。" msgid "No file was submitted." msgstr "ファイルが送信されていません。" @@ -704,7 +713,7 @@ msgid "(Hidden field %(name)s) %(error)s" msgstr "(隠しフィールド %(name)s) %(error)s" msgid "ManagementForm data is missing or has been tampered with" -msgstr "ManagementFormデータが見つからないか、改竄されています。" +msgstr "マネジメントフォームのデータが見つからないか、改竄されています。" #, python-format msgid "Please submit %d or fewer forms." @@ -1040,8 +1049,8 @@ msgstr "これは有効なIPv6アドレスではありません。" #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "または" @@ -1187,18 +1196,18 @@ msgid "Empty list and '%(class_name)s.allow_empty' is False." msgstr "空の一覧かつ '%(class_name)s.allow_empty' がFalseです。" msgid "Directory indexes are not allowed here." -msgstr "Directory indexes are not allowed here." +msgstr "ここではディレクトリインデックスが許可されていません。" #, python-format msgid "\"%(path)s\" does not exist" -msgstr "\"%(path)s\" does not exist" +msgstr "\"%(path)s\" が存在しません。" #, python-format msgid "Index of %(directory)s" -msgstr "Index of %(directory)s" +msgstr "%(directory)sのディレクトリインデックス" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "Django: 納期を逃さない開発者のためのWebフレームワーク" +msgstr "Django: 納期を逃さない完璧主義者のためのWebフレームワーク" #, python-format msgid "" @@ -1206,8 +1215,7 @@ msgid "" "target=\"_blank\" rel=\"noopener\">release notes for Django %(version)s" msgstr "" "Django%(version)sのリリースノートを見てくださ" -"い。" +"releases/\" target=\"_blank\" rel=\"noopener\">リリースノートを見る。" msgid "The install worked successfully! Congratulations!" msgstr "インストールは成功しました!おめでとうございます!" diff --git a/django/conf/locale/ka/LC_MESSAGES/django.mo b/django/conf/locale/ka/LC_MESSAGES/django.mo index 1eef01f042889..39b30fbd102fe 100644 Binary files a/django/conf/locale/ka/LC_MESSAGES/django.mo and b/django/conf/locale/ka/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ka/LC_MESSAGES/django.po b/django/conf/locale/ka/LC_MESSAGES/django.po index d05ebeb21cd5e..7e27909d75282 100644 --- a/django/conf/locale/ka/LC_MESSAGES/django.po +++ b/django/conf/locale/ka/LC_MESSAGES/django.po @@ -2,6 +2,7 @@ # # Translators: # André Bouatchidzé , 2013-2015 +# David A. , 2019 # David A. , 2011 # Jannis Leidel , 2011 # Tornike Beradze , 2018 @@ -9,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-02-07 12:13+0000\n" -"Last-Translator: Tornike Beradze \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-25 09:06+0000\n" +"Last-Translator: David A. \n" "Language-Team: Georgian (http://www.transifex.com/django/django/language/" "ka/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ka\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" msgid "Afrikaans" msgstr "აფრიკაანსი" @@ -63,7 +64,7 @@ msgid "German" msgstr "გერმანული" msgid "Lower Sorbian" -msgstr "" +msgstr "ქვემო სორბული" msgid "Greek" msgstr "ბერძნული" @@ -120,7 +121,7 @@ msgid "Irish" msgstr "ირლანდიური" msgid "Scottish Gaelic" -msgstr "" +msgstr "შოტლანდიური-გელური" msgid "Galician" msgstr "გალიციური" @@ -135,11 +136,14 @@ msgid "Croatian" msgstr "ხორვატიული" msgid "Upper Sorbian" -msgstr "" +msgstr "ზემო სორბიული" msgid "Hungarian" msgstr "უნგრული" +msgid "Armenian" +msgstr "სომხური" + msgid "Interlingua" msgstr "ინტერლინგუა" @@ -162,7 +166,7 @@ msgid "Georgian" msgstr "ქართული" msgid "Kabyle" -msgstr "" +msgstr "კაბილური" msgid "Kazakh" msgstr "ყაზახური" @@ -201,7 +205,7 @@ msgid "Burmese" msgstr "ბირმული" msgid "Norwegian Bokmål" -msgstr "" +msgstr "ნორვეგიული Bokmål" msgid "Nepali" msgstr "ნეპალური" @@ -300,13 +304,13 @@ msgid "Syndication" msgstr "სინდიკაცია" msgid "That page number is not an integer" -msgstr "" +msgstr "გვერდის ნომერი არ არის მთელი რიცხვი" msgid "That page number is less than 1" -msgstr "" +msgstr "გვერდის ნომერი ნაკლებია 1-ზე" msgid "That page contains no results" -msgstr "" +msgstr "გვერდი არ შეიცავს მონაცემებს" msgid "Enter a valid value." msgstr "შეიყვანეთ სწორი მნიშვნელობა." @@ -331,6 +335,8 @@ msgid "" "Enter a valid 'slug' consisting of Unicode letters, numbers, underscores, or " "hyphens." msgstr "" +"შეიყვანეთ სწორი 'slug' მნიშვნელობა, რომელიც უნდა შეიცავდეს Unicode ასოებს, " +"ციფრებს, ხაზგასმის ნიშნებს, ან დეფისებს." msgid "Enter a valid IPv4 address." msgstr "შეიყვანეთ სწორი IPv4 მისამართი." @@ -366,6 +372,9 @@ msgid_plural "" msgstr[0] "" "მნიშვნელობას უნდა ჰქონდეს სულ ცოტა %(limit_value)d სიმბოლო (მას აქვს " "%(show_value)d)." +msgstr[1] "" +"მნიშვნელობას უნდა ჰქონდეს სულ ცოტა %(limit_value)d სიმბოლო (მას აქვს " +"%(show_value)d)." #, python-format msgid "" @@ -377,16 +386,26 @@ msgid_plural "" msgstr[0] "" "მნიშვნელობას უნდა ჰქონდეს არაუმეტეს %(limit_value)d სიმბოლოსი (მას აქვს " "%(show_value)d)." +msgstr[1] "" +"მნიშვნელობას უნდა ჰქონდეს არაუმეტეს %(limit_value)d სიმბოლოსი (მას აქვს " +"%(show_value)d)." + +msgid "Enter a number." +msgstr "შეიყვანეთ რიცხვი." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." -msgstr[0] "" +msgstr[0] "ციფრების სრული რაოდენობა %(max)s-ს არ უნდა აღემატებოდეს." +msgstr[1] "ციფრების სრული რაოდენობა %(max)s-ს არ უნდა აღემატებოდეს." #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "" +"ათობითი გამყოფის შემდეგ ციფრების რაოდენობა %(max)s-ს არ უნდა აღემატებოდეს." +msgstr[1] "" +"ათობითი გამყოფის შემდეგ ციფრების რაოდენობა %(max)s-ს არ უნდა აღემატებოდეს." #, python-format msgid "" @@ -394,15 +413,20 @@ msgid "" msgid_plural "" "Ensure that there are no more than %(max)s digits before the decimal point." msgstr[0] "" +"ათობითი გამყოფის შემდეგ ციფრების რაოდენობა %(max)s-ს არ უნდა აღემატებოდეს." +msgstr[1] "" +"ათობითი გამყოფის წინ ციფრების რაოდენობა %(max)s-ს არ უნდა აღემატებოდეს." #, python-format 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 "" +msgstr "Null მნიშვნელობები დაუშვებელია." msgid "and" msgstr "და" @@ -452,6 +476,10 @@ msgstr "დიდი მთელი (8-ბაიტიანი)" msgid "'%(value)s' value must be either True or False." msgstr "მნიშვნელობა '%(value)s' უნდა იყოს True ან False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "\"%(value)s\"-ის მნიშვნელობა შეიძლება იყოს True, False ან None." + msgid "Boolean (Either True or False)" msgstr "ლოგიკური (True ან False)" @@ -526,7 +554,7 @@ msgstr "გზა ფაილისაკენ" #, python-format msgid "'%(value)s' value must be a float." -msgstr "" +msgstr "\"%(value)s\"-ის მნიშვნელობა უნდა იყოს float ტიპის." msgid "Floating point number" msgstr "რიცხვი მცოცავი წერტილით" @@ -565,12 +593,16 @@ msgid "" "'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " "format." msgstr "" +"\"%(value)s\" მნიშვნელობას აქვს არასწორი ფორმატი. უნდა იყოს 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\"-ს აქვს სწორი ფორმატი (HH:MM[:ss[.uuuuuu]]), მაგრამ დროის " +"მნიშვნელობა არასწორია." msgid "Time" msgstr "დრო" @@ -579,11 +611,14 @@ msgid "URL" msgstr "URL" msgid "Raw binary data" -msgstr "" +msgstr "დაუმუშავებელი ორობითი მონაცემები" #, python-format msgid "'%(value)s' is not a valid UUID." -msgstr "" +msgstr "\"%(value)s\"-ს აქვს დაუშვებელი UUID-ის მნიშვნელობა." + +msgid "Universally unique identifier" +msgstr "უნივერსალური უნიკალური იდენტიფიკატორი." msgid "File" msgstr "ფაილი" @@ -624,9 +659,6 @@ msgstr "ეს ველი აუცილებელია." msgid "Enter a whole number." msgstr "შეიყვანეთ მთელი რიცხვი" -msgid "Enter a number." -msgstr "შეიყვანეთ რიცხვი." - msgid "Enter a valid date." msgstr "შეიყვანეთ სწორი თარიღი." @@ -639,6 +671,10 @@ msgstr "შეიყვანეთ სწორი თარიღი და msgid "Enter a valid duration." msgstr "შეიყვანეთ სწორი დროის პერიოდი." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "ფაილი არ იყო გამოგზავნილი. შეამოწმეთ კოდირების ტიპი მოცემული ფორმისათვის." @@ -654,6 +690,7 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" +msgstr[1] "" msgid "Please either submit a file or check the clear checkbox, not both." msgstr "ან გამოგზავნეთ ფაილი, ან მონიშნეთ \"წაშლის\" დროშა." @@ -693,11 +730,13 @@ msgstr "" msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." msgstr[0] "" +msgstr[1] "" #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." msgstr[0] "" +msgstr[1] "" msgid "Order" msgstr "დალაგება" @@ -767,6 +806,7 @@ msgstr "კი,არა,შესაძლოა" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d ბაიტი" +msgstr[1] "%(size)d ბაიტი" #, python-format msgid "%s KB" @@ -1021,8 +1061,8 @@ msgstr "ეს არ არის სწორი IPv6 მისამართ #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "ან" @@ -1035,31 +1075,37 @@ msgstr ", " msgid "%d year" msgid_plural "%d years" msgstr[0] "%d წელი" +msgstr[1] "%d წელი" #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d თვე" +msgstr[1] "%d თვე" #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d კვირა" +msgstr[1] "%d კვირა" #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d დღე" +msgstr[1] "%d დღე" #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d საათი" +msgstr[1] "%d საათი" #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d წუთი" +msgstr[1] "%d წუთი" msgid "0 minutes" msgstr "0 წუთი" diff --git a/django/conf/locale/kk/LC_MESSAGES/django.mo b/django/conf/locale/kk/LC_MESSAGES/django.mo index 7eac65b561b7a..0c426b6c0516b 100644 Binary files a/django/conf/locale/kk/LC_MESSAGES/django.mo and b/django/conf/locale/kk/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/kk/LC_MESSAGES/django.po b/django/conf/locale/kk/LC_MESSAGES/django.po index c430f88274f6d..01e7bb766e211 100644 --- a/django/conf/locale/kk/LC_MESSAGES/django.po +++ b/django/conf/locale/kk/LC_MESSAGES/django.po @@ -10,15 +10,15 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 00:44+0000\n" +"Last-Translator: Ramiro Morales\n" "Language-Team: Kazakh (http://www.transifex.com/django/django/language/kk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kk\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" msgid "Afrikaans" msgstr "" @@ -140,6 +140,9 @@ msgstr "" msgid "Hungarian" msgstr "Венгрия" +msgid "Armenian" +msgstr "" + msgid "Interlingua" msgstr "" @@ -161,6 +164,9 @@ msgstr "Жапон" msgid "Georgian" msgstr "Грузин" +msgid "Kabyle" +msgstr "" + msgid "Kazakh" msgstr "Қазақша" @@ -364,6 +370,7 @@ msgid_plural "" "Ensure this value has at least %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" +msgstr[1] "" #, python-format msgid "" @@ -373,16 +380,22 @@ msgid_plural "" "Ensure this value has at most %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" +msgstr[1] "" + +msgid "Enter a number." +msgstr "Сан енгізіңіз." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "" +msgstr[1] "" #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "" +msgstr[1] "" #, python-format msgid "" @@ -390,6 +403,7 @@ msgid "" msgid_plural "" "Ensure that there are no more than %(max)s digits before the decimal point." msgstr[0] "" +msgstr[1] "" #, python-format msgid "" @@ -446,6 +460,10 @@ msgstr "Ұзын (8 байт) бүтін сан" msgid "'%(value)s' value must be either True or False." msgstr "" +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Boolean (True немесе False)" @@ -569,6 +587,9 @@ msgstr "" msgid "'%(value)s' is not a valid UUID." msgstr "" +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "" @@ -608,9 +629,6 @@ msgstr "Бұл өрісті толтыру міндетті." msgid "Enter a whole number." msgstr "Толық санды енгізіңіз." -msgid "Enter a number." -msgstr "Сан енгізіңіз." - msgid "Enter a valid date." msgstr "Дұрыс күнді енгізіңіз." @@ -623,6 +641,10 @@ msgstr "Дұрыс күнді/уақытты енгізіңіз." msgid "Enter a valid duration." msgstr "" +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "Ешқандай файл жіберілмеді. Форманың кодтау түрін тексеріңіз." @@ -637,6 +659,7 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" +msgstr[1] "" msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Файлды жіберіңіз немесе тазалауды белгіленіз, екеуін бірге емес." @@ -675,11 +698,13 @@ msgstr "" msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." msgstr[0] "" +msgstr[1] "" #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." msgstr[0] "" +msgstr[1] "" msgid "Order" msgstr "Сұрыптау" @@ -747,6 +772,7 @@ msgstr "иә,жоқ,мүмкін" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d байт" +msgstr[1] "%(size)d байт" #, python-format msgid "%s KB" @@ -1001,7 +1027,7 @@ msgstr "" #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "" msgid "or" @@ -1015,31 +1041,37 @@ msgstr ", " msgid "%d year" msgid_plural "%d years" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" +msgstr[1] "" msgid "0 minutes" msgstr "" diff --git a/django/conf/locale/kn/LC_MESSAGES/django.mo b/django/conf/locale/kn/LC_MESSAGES/django.mo index 6fa8804200650..ccae161f31461 100644 Binary files a/django/conf/locale/kn/LC_MESSAGES/django.mo and b/django/conf/locale/kn/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/kn/LC_MESSAGES/django.po b/django/conf/locale/kn/LC_MESSAGES/django.po index a268ab31b5218..cb0e8edc99b25 100644 --- a/django/conf/locale/kn/LC_MESSAGES/django.po +++ b/django/conf/locale/kn/LC_MESSAGES/django.po @@ -8,16 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 00:44+0000\n" +"Last-Translator: Ramiro Morales\n" "Language-Team: Kannada (http://www.transifex.com/django/django/language/" "kn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kn\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "Afrikaans" msgstr "" @@ -139,6 +139,9 @@ msgstr "" msgid "Hungarian" msgstr "ಹಂಗೇರಿಯನ್" +msgid "Armenian" +msgstr "" + msgid "Interlingua" msgstr "" @@ -160,6 +163,9 @@ msgstr "ಜಾಪನೀಸ್" msgid "Georgian" msgstr "ಜಾರ್ಜೆಯನ್ " +msgid "Kabyle" +msgstr "" + msgid "Kazakh" msgstr "" @@ -365,6 +371,7 @@ msgid_plural "" "Ensure this value has at least %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" +msgstr[1] "" #, python-format msgid "" @@ -374,16 +381,22 @@ msgid_plural "" "Ensure this value has at most %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" +msgstr[1] "" + +msgid "Enter a number." +msgstr "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "" +msgstr[1] "" #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "" +msgstr[1] "" #, python-format msgid "" @@ -391,6 +404,7 @@ msgid "" msgid_plural "" "Ensure that there are no more than %(max)s digits before the decimal point." msgstr[0] "" +msgstr[1] "" #, python-format msgid "" @@ -448,6 +462,10 @@ msgstr "ಬೃಹತ್ (೮ ಬೈಟ್) ಪೂರ್ಣ ಸಂಖ್ಯೆ" msgid "'%(value)s' value must be either True or False." msgstr "" +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "ಬೂಲಿಯನ್ (ಹೌದು ಅಥವ ಅಲ್ಲ)" @@ -571,6 +589,9 @@ msgstr "" msgid "'%(value)s' is not a valid UUID." msgstr "" +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "" @@ -610,9 +631,6 @@ msgstr "ಈ ಸ್ಥಳವು ಅಗತ್ಯವಿರುತ್ತದೆ." msgid "Enter a whole number." msgstr "ಪೂರ್ಣಾಂಕವೊಂದನ್ನು ನಮೂದಿಸಿ." -msgid "Enter a number." -msgstr "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ." - msgid "Enter a valid date." msgstr "ಸರಿಯಾದ ದಿನಾಂಕವನ್ನು ನಮೂದಿಸಿ." @@ -625,6 +643,10 @@ msgstr "ಸರಿಯಾದ ದಿನಾಂಕ/ಸಮಯವನ್ನು ನಮೂ msgid "Enter a valid duration." msgstr "" +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "ಯಾವದೇ ಕಡತವನ್ನೂ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ. ನಮೂನೆಯ ಮೇಲಿನ ಸಂಕೇತೀಕರಣ (ಎನ್ಕೋಡಿಂಗ್) ಬಗೆಯನ್ನು " @@ -641,6 +663,7 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" +msgstr[1] "" msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" @@ -682,11 +705,13 @@ msgstr "" msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." msgstr[0] "" +msgstr[1] "" #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." msgstr[0] "" +msgstr[1] "" msgid "Order" msgstr "ಕ್ರಮ" @@ -756,6 +781,7 @@ msgstr "ಹೌದು,ಇಲ್ಲ,ಇರಬಹುದು" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d ಬೈಟ್‌ಗಳು" +msgstr[1] "%(size)d ಬೈಟ್‌ಗಳು" #, python-format msgid "%s KB" @@ -1010,7 +1036,7 @@ msgstr "" #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "" msgid "or" @@ -1024,31 +1050,37 @@ msgstr ", " msgid "%d year" msgid_plural "%d years" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" +msgstr[1] "" #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" +msgstr[1] "" msgid "0 minutes" msgstr "" diff --git a/django/conf/locale/ko/LC_MESSAGES/django.mo b/django/conf/locale/ko/LC_MESSAGES/django.mo index 319303c44f6e5..dfbc08446a0ab 100644 Binary files a/django/conf/locale/ko/LC_MESSAGES/django.mo and b/django/conf/locale/ko/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ko/LC_MESSAGES/django.po b/django/conf/locale/ko/LC_MESSAGES/django.po index 03c1f6643ce91..13ba0d3f563fb 100644 --- a/django/conf/locale/ko/LC_MESSAGES/django.po +++ b/django/conf/locale/ko/LC_MESSAGES/django.po @@ -4,12 +4,13 @@ # BJ Jang , 2014 # JunGu Kang , 2017 # Jiyoon, Ha , 2016 -# lqez , 2017 +# Park Hyunwoo , 2017 # hoseung2 , 2017 # Ian Y. Choi , 2015 # Jaehong Kim , 2011 # Jannis Leidel , 2011 # Le Tartuffe , 2014,2016 +# Jonghwa Seo , 2019 # JuneHyeon Bae , 2014 # JunGu Kang , 2015 # Kagami Sascha Rosylight , 2017 @@ -20,9 +21,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-18 08:57+0000\n" -"Last-Translator: Noh Seho \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-04-28 13:30+0000\n" +"Last-Translator: Jonghwa Seo \n" "Language-Team: Korean (http://www.transifex.com/django/django/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -150,6 +151,9 @@ msgstr "고지 소르브어" msgid "Hungarian" msgstr "헝가리어" +msgid "Armenian" +msgstr "아르메니아어" + msgid "Interlingua" msgstr "인테르링구아어" @@ -607,6 +611,9 @@ msgstr "Raw binary data" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' 은 유효하지 않은 UUID 입니다." +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "파일" @@ -678,7 +685,8 @@ msgid_plural "" msgstr[0] "파일이름의 길이가 최대 %(max)d 자인지 확인하세요(%(length)d 자)." msgid "Please either submit a file or check the clear checkbox, not both." -msgstr "파일을 보내거나 취소 체크박스를 체크하세요. 또는 둘다 비워두세요." +msgstr "" +"파일 업로드 또는 삭제 체크박스를 선택하세요. 동시에 둘 다 할 수는 없습니다." msgid "" "Upload a valid image. The file you uploaded was either not an image or a " @@ -1043,8 +1051,8 @@ msgstr "올바른 IPv6 주소가 아닙니다." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s ..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "또는" diff --git a/django/conf/locale/lt/LC_MESSAGES/django.mo b/django/conf/locale/lt/LC_MESSAGES/django.mo index 96ff3bdfb2ede..23004a59f1349 100644 Binary files a/django/conf/locale/lt/LC_MESSAGES/django.mo and b/django/conf/locale/lt/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/lt/LC_MESSAGES/django.po b/django/conf/locale/lt/LC_MESSAGES/django.po index 5480854cbd836..0af50ea79422b 100644 --- a/django/conf/locale/lt/LC_MESSAGES/django.po +++ b/django/conf/locale/lt/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # Jannis Leidel , 2011 # Kostas , 2011 # lauris , 2011 -# Matas Dailyda , 2015-2018 +# Matas Dailyda , 2015-2019 # naktinis , 2012 # Nikolajus Krauklis , 2013 # Povilas Balzaravičius , 2011-2012 @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 08:24+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 10:33+0000\n" "Last-Translator: Matas Dailyda \n" "Language-Team: Lithuanian (http://www.transifex.com/django/django/language/" "lt/)\n" @@ -147,6 +147,9 @@ msgstr "Aukštutinė Sorbų" msgid "Hungarian" msgstr "Vengrų" +msgid "Armenian" +msgstr "Armėnų" + msgid "Interlingua" msgstr "Interlingua" @@ -638,6 +641,9 @@ msgstr "Neapdorota informacija" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' yra netinkama UUID reikšmė." +msgid "Universally unique identifier" +msgstr "Universaliai unikalus identifikatorius" + msgid "File" msgstr "Failas" @@ -1096,7 +1102,7 @@ msgstr "Tai nėra teisingas IPv6 adresas." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s..." msgid "or" diff --git a/django/conf/locale/lv/LC_MESSAGES/django.mo b/django/conf/locale/lv/LC_MESSAGES/django.mo index a0771eb559fb7..3c750c15e40c9 100644 Binary files a/django/conf/locale/lv/LC_MESSAGES/django.mo and b/django/conf/locale/lv/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/lv/LC_MESSAGES/django.po b/django/conf/locale/lv/LC_MESSAGES/django.po index 5367e977098c5..6e4209748e1ad 100644 --- a/django/conf/locale/lv/LC_MESSAGES/django.po +++ b/django/conf/locale/lv/LC_MESSAGES/django.po @@ -8,14 +8,14 @@ # krikulis , 2014 # Māris Nartišs , 2016 # Mārtiņš Šulcs , 2018 -# NullIsNot0 , 2018 +# NullIsNot0 , 2018-2019 # peterisb , 2016-2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-06-03 12:12+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-18 17:00+0000\n" "Last-Translator: NullIsNot0 \n" "Language-Team: Latvian (http://www.transifex.com/django/django/language/" "lv/)\n" @@ -146,6 +146,9 @@ msgstr "augšsorbu" msgid "Hungarian" msgstr "ungāru" +msgid "Armenian" +msgstr "Armēņu" + msgid "Interlingua" msgstr "modernā latīņu valoda" @@ -621,6 +624,9 @@ msgstr "Bināri dati" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' ir nederīgs UUID." +msgid "Universally unique identifier" +msgstr "Universāli unikāls identifikators" + msgid "File" msgstr "Fails" @@ -1070,7 +1076,7 @@ msgstr "Šī nav derīga IPv6 adrese." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s..." msgid "or" diff --git a/django/conf/locale/ml/LC_MESSAGES/django.mo b/django/conf/locale/ml/LC_MESSAGES/django.mo index 7434fcf31964c..b81790b7e6644 100644 Binary files a/django/conf/locale/ml/LC_MESSAGES/django.mo and b/django/conf/locale/ml/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ml/LC_MESSAGES/django.po b/django/conf/locale/ml/LC_MESSAGES/django.po index 91fd6bf7f96d6..4689d22ad5c2e 100644 --- a/django/conf/locale/ml/LC_MESSAGES/django.po +++ b/django/conf/locale/ml/LC_MESSAGES/django.po @@ -1,18 +1,21 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Anivar Aravind , 2013 +# c1007a0b890405f1fbddfacebc4c6ef7, 2013 +# Hrishikesh , 2019 # Jannis Leidel , 2011 +# Jaseem KM , 2019 # Jeffy , 2012 +# Jibin Mathew , 2019 # Rag sagar , 2016 # Rajeesh Nair , 2011-2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-10 08:55+0000\n" +"Last-Translator: Hrishikesh \n" "Language-Team: Malayalam (http://www.transifex.com/django/django/language/" "ml/)\n" "MIME-Version: 1.0\n" @@ -52,7 +55,7 @@ msgid "Catalan" msgstr "കാറ്റലന്‍" msgid "Czech" -msgstr "ചെക്" +msgstr "ചെൿ" msgid "Welsh" msgstr "വെല്‍ഷ്" @@ -64,19 +67,19 @@ msgid "German" msgstr "ജര്‍മന്‍" msgid "Lower Sorbian" -msgstr "" +msgstr "ലോവർ സോർബിയൻ " msgid "Greek" msgstr "ഗ്രീക്ക്" msgid "English" -msgstr "ഇംഗ്ളീഷ്" +msgstr "ഇംഗ്ലീഷ്" msgid "Australian English" msgstr "ആസ്ട്രേലിയൻ ഇംഗ്ലീഷ്" msgid "British English" -msgstr "ബ്രിട്ടീഷ് ഇംഗ്ളീഷ്" +msgstr "ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്" msgid "Esperanto" msgstr "എസ്പെരാന്റോ" @@ -121,13 +124,13 @@ msgid "Irish" msgstr "ഐറിഷ്" msgid "Scottish Gaelic" -msgstr "സ്കോട്ടിഷ് ഗൈലിക്ക്" +msgstr "സ്കോട്ടിഷ് ഗൈലിൿ" msgid "Galician" msgstr "ഗലിഷ്യന്‍" msgid "Hebrew" -msgstr "ഹീബ്റു" +msgstr "ഹീബ്രു" msgid "Hindi" msgstr "ഹിന്ദി" @@ -136,11 +139,14 @@ msgid "Croatian" msgstr "ക്രൊയേഷ്യന്‍" msgid "Upper Sorbian" -msgstr "" +msgstr "അപ്പർ സോർബിയൻ " msgid "Hungarian" msgstr "ഹംഗേറിയന്‍" +msgid "Armenian" +msgstr "അർമേനിയൻ" + msgid "Interlingua" msgstr "ഇന്റര്‍ലിംഗ്വാ" @@ -151,7 +157,7 @@ msgid "Ido" msgstr "ഈടോ" msgid "Icelandic" -msgstr "ഐസ്ലാന്‍ഡിക്" +msgstr "ഐസ്ലാന്‍ഡിൿ" msgid "Italian" msgstr "ഇറ്റാലിയന്‍" @@ -162,8 +168,11 @@ msgstr "ജാപ്പനീസ്" msgid "Georgian" msgstr "ജോര്‍ജിയന്‍" +msgid "Kabyle" +msgstr "കാബയെൽ " + msgid "Kazakh" -msgstr "കസാക്" +msgstr "കസാഖ്" msgid "Khmer" msgstr "ഖ്മേര്‍" @@ -223,7 +232,7 @@ msgid "Portuguese" msgstr "പോര്‍ചുഗീസ്" msgid "Brazilian Portuguese" -msgstr "ബ്റസീലിയന്‍ പോര്‍ചുഗീസ്" +msgstr "ബ്രസീലിയന്‍ പോര്‍ച്ചുഗീസ്" msgid "Romanian" msgstr "റൊമാനിയന്‍" @@ -232,7 +241,7 @@ msgid "Russian" msgstr "റഷ്യന്‍" msgid "Slovak" -msgstr "സ്ളൊവാക്" +msgstr "സ്ലൊവാൿ" msgid "Slovenian" msgstr "സ്ളൊവേനിയന്‍" @@ -280,7 +289,7 @@ msgid "Vietnamese" msgstr "വിയറ്റ്നാമീസ്" msgid "Simplified Chinese" -msgstr "ലഘു ചൈനീസ്" +msgstr "സിമ്പ്ലിഫൈഡ് ചൈനീസ്" msgid "Traditional Chinese" msgstr "പരമ്പരാഗത ചൈനീസ്" @@ -289,58 +298,58 @@ msgid "Messages" msgstr "സന്ദേശങ്ങൾ" msgid "Site Maps" -msgstr "സൈറ്റ് മാപ്പ്" +msgstr "സൈറ്റ് മാപ്പുകൾ" msgid "Static Files" -msgstr " സ്റ്റാറ്റിക്ക് ഫയൽസ്" +msgstr " സ്റ്റാറ്റിൿ ഫയലുകൾ" msgid "Syndication" msgstr "വിതരണം " msgid "That page number is not an integer" -msgstr "" +msgstr "ആ പേജ് നമ്പർ ഒരു ഇന്റിജറല്ല" msgid "That page number is less than 1" -msgstr "" +msgstr "ആ പേജ് നമ്പർ 1 നെ കാൾ ചെറുതാണ് " msgid "That page contains no results" -msgstr "" +msgstr "ആ പേജിൽ റിസൾട്ടുകൾ ഒന്നും ഇല്ല " msgid "Enter a valid value." -msgstr "സാധുതയുള്ള മൂല്യം നല്‍കുക." +msgstr "ശരിയായ വാല്യു നൽകുക." msgid "Enter a valid URL." -msgstr "സാധുതയുള്ള URL നല്‍കുക" +msgstr "ശരിയായ URL നല്‍കുക" msgid "Enter a valid integer." -msgstr "സാധുതയുള്ള അക്കം നല്കുക." +msgstr "ശരിയായ ഇന്റിജർ നൽകുക." msgid "Enter a valid email address." -msgstr "സാധുതയുള്ള ഇമെയില്‍ വിലാസം നല്‍കുക" +msgstr "ശരിയായ ഇമെയില്‍ വിലാസം നല്‍കുക." #. Translators: "letters" means latin letters: a-z and A-Z. 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 വിലാസം നല്കണം" +msgstr "ശരിയായ IPv4 വിലാസം നൽകുക." msgid "Enter a valid IPv6 address." -msgstr "ശരിയായ ഒരു IPv6 വിലാസം നല്കുക." +msgstr "ശരിയായ ഒരു IPv6 വിലാസം നൽകുക." msgid "Enter a valid IPv4 or IPv6 address." -msgstr "ശരിയായ ഒരു IPv4 വിലാസമോ IPv6 വിലാസമോ നല്കുക." +msgstr "ശരിയായ ഒരു IPv4 വിലാസമോ IPv6 വിലാസമോ നൽകുക." msgid "Enter only digits separated by commas." -msgstr "അക്കങ്ങള്‍ മാത്രം (കോമയിട്ടു വേര്‍തിരിച്ചത്)" +msgstr "കോമകൾ ഉപയോഗിച്ച് വേർതിരിച്ച രീതിയിലുള്ള അക്കങ്ങൾ മാത്രം നൽകുക." #, python-format msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." @@ -362,7 +371,11 @@ msgid_plural "" "Ensure this value has at least %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" +"ഈ വാല്യൂയിൽ %(limit_value)d ക്യാരക്ടർ എങ്കിലും ഉണ്ടെന്നു ഉറപ്പു വരുത്തുക(ഇതിൽ " +"%(show_value)d ഉണ്ട് )" msgstr[1] "" +"ഈ വാല്യൂയിൽ %(limit_value)dക്യാരക്ടേർസ് എങ്കിലും ഉണ്ടെന്നു ഉറപ്പു വരുത്തുക(ഇതിൽ " +"%(show_value)d ഉണ്ട് )" #, python-format msgid "" @@ -372,47 +385,56 @@ msgid_plural "" "Ensure this value has at most %(limit_value)d characters (it has " "%(show_value)d)." msgstr[0] "" +"ഈ വാല്യൂയിൽ %(limit_value)d ക്യാരക്ടർ 1 ഇൽ കൂടുതൽ ഇല്ലെന്നു ഉറപ്പു വരുത്തുക(ഇതിൽ 2 " +"%(show_value)d ഉണ്ട് )" msgstr[1] "" +"ഈ വാല്യൂയിൽ %(limit_value)d ക്യാരക്ടർസ് 1 ഇൽ കൂടുതൽ ഇല്ലെന്നു ഉറപ്പു വരുത്തുക(ഇതിൽ 2 " +"%(show_value)d ഉണ്ട് )" + +msgid "Enter a number." +msgstr "ഒരു സംഖ്യ നല്കുക." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(max)s ഡിജിറ്റിൽ കൂടുതൽ ഇല്ല എന്ന് ഉറപ്പു വരുത്തുക ." +msgstr[1] "%(max)sഡിജിറ്റ്സിൽ കൂടുതൽ ഇല്ല എന്ന് ഉറപ്പു വരുത്തുക. " #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(max)sകൂടുതൽ ഡെസിമൽ പോയന്റില്ല എന്ന് ഉറപ്പു വരുത്തുക. " +msgstr[1] "%(max)sകൂടുതൽ ഡെസിമൽ പോയിന്റുകളില്ല എന്ന് ഉറപ്പു വരുത്തുക. " #, python-format msgid "" "Ensure that there are no more than %(max)s digit before the decimal point." msgid_plural "" "Ensure that there are no more than %(max)s digits before the decimal point." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(max)sഡിജിറ്റ് ഡെസിമൽ പോയിന്റിനു മുൻപ് ഇല്ല എന്ന് ഉറപ്പു വരുത്തുക." +msgstr[1] "%(max)sഡിജിറ്റ്സ് ഡെസിമൽ പോയിന്റിനു മുൻപ് ഇല്ല എന്ന് ഉറപ്പു വരുത്തുക. " #, python-format 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 "" +msgstr "Null ക്യാരക്ടറുകൾ അനുവദനീയമല്ല." msgid "and" -msgstr "ഉം" +msgstr "പിന്നെ" #, python-format msgid "%(model_name)s with this %(field_labels)s already exists." -msgstr "" +msgstr "%(field_labels)sഉള്ള %(model_name)sനിലവിലുണ്ട്." #, python-format msgid "Value %(value)r is not a valid choice." -msgstr "" +msgstr "%(value)r എന്ന വാല്യൂ ശെരിയായ ചോയ്സ് അല്ല. " msgid "This field cannot be null." msgstr "ഈ കളം (ഫീല്‍ഡ്) ഒഴിച്ചിടരുത്." @@ -450,6 +472,10 @@ msgstr "8 ബൈറ്റ് പൂര്‍ണസംഖ്യ." msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' മൂല്യം True അഥവാ False ആയിരിക്കണം." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "%(value)sഎന്ന വാല്യൂ True, False, അല്ലെങ്കിൽ None എന്നിവയിൽ ഒന്നായിരിക്കണം." + msgid "Boolean (Either True or False)" msgstr "ശരിയോ തെറ്റോ (True അഥവാ False)" @@ -481,12 +507,17 @@ msgid "" "'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." "uuuuuu]][TZ] format." msgstr "" +"%(value)sവാല്യൂ ശെരിയായ ഫോർമാറ്റിൽ അല്ല ഉള്ളത്. അതു YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ] \n" +"ഫോർമാറ്റിലായിരിക്കണം." #, 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ശെരിയായ ഫോര്മാറ്റിലാണുള്ളത് (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) പക്ഷേ " +"തെറ്റായ date/time ആണ്. " msgid "Date (with time)" msgstr "തീയതി (സമയത്തോടൊപ്പം)" @@ -579,6 +610,9 @@ msgstr "റോ ബൈനറി ഡാറ്റ" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' ഒരു സാധുവായ യു യു ഐ ഡി അല്ലാ." +msgid "Universally unique identifier" +msgstr "എല്ലായിടത്തും യുണീക്കായ ഐഡന്റിഫൈയർ." + msgid "File" msgstr "ഫയല്‍" @@ -587,7 +621,7 @@ msgstr "ചിത്രം" #, python-format msgid "%(model)s instance with %(field)s %(value)r does not exist." -msgstr "" +msgstr "%(field)s%(value)r ഉള്ള%(model)s ഇൻസ്റ്റൻസ് നിലവിൽ ഇല്ല." msgid "Foreign Key (type determined by related field)" msgstr "ഫോറിന്‍ കീ (ടൈപ്പ് ബന്ധപ്പെട്ട ഫീല്‍ഡില്‍ നിന്നും നിര്‍ണ്ണയിക്കുന്നതാണ്)" @@ -597,11 +631,11 @@ msgstr "വണ്‍-ടു-വണ്‍ ബന്ധം" #, python-format msgid "%(from)s-%(to)s relationship" -msgstr "" +msgstr "%(from)s-%(to)s റിലേഷൻഷിപ്‌." #, python-format msgid "%(from)s-%(to)s relationships" -msgstr "" +msgstr "%(from)s-%(to)sറിലേഷൻഷിപ്‌സ്. " msgid "Many-to-many relationship" msgstr "മെനി-ടു-മെനി ബന്ധം" @@ -618,9 +652,6 @@ msgstr "ഈ കള്ളി(ഫീല്‍ഡ്) നിര്‍ബന്ധ msgid "Enter a whole number." msgstr "ഒരു പൂര്‍ണസംഖ്യ നല്കുക." -msgid "Enter a number." -msgstr "ഒരു സംഖ്യ നല്കുക." - msgid "Enter a valid date." msgstr "ശരിയായ തീയതി നല്കുക." @@ -633,6 +664,10 @@ msgstr "ശരിയായ തീയതിയും സമയവും നല് msgid "Enter a valid duration." msgstr "സാധുതയുള്ള കാലയളവ് നല്കുക." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "ദിവസങ്ങളുടെ എണ്ണം {min_days}, {max_days} എന്നിവയുടെ ഇടയിലായിരിക്കണം." + msgid "No file was submitted. Check the encoding type on the form." msgstr "ഫയലൊന്നും ലഭിച്ചിട്ടില്ല. ഫോമിലെ എന്‍-കോഡിംഗ് പരിശോധിക്കുക." @@ -647,7 +682,9 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" +"ഈ ഫയൽ നെയ്മിൽ%(max)dക്യാരക്ടറിൽ കൂടുതലില്ല എന്ന് ഉറപ്പു വരുത്തുക (അതിൽ %(length)dഉണ്ട്) . " msgstr[1] "" +"ഈ ഫയൽ നെയ്മിൽ%(max)dക്യാരക്ടേഴ്‌സിൽ കൂടുതലില്ല എന്ന് ഉറപ്പു വരുത്തുക (അതിൽ %(length)dഉണ്ട്)." msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" @@ -680,22 +717,22 @@ msgstr ":" #, python-format msgid "(Hidden field %(name)s) %(error)s" -msgstr "" +msgstr "(ഹിഡൻ ഫീൽഡ് %(name)s)%(error)s" msgid "ManagementForm data is missing or has been tampered with" -msgstr "" +msgstr "ManagementForm ടാറ്റ കാണ്മാനില്ല അല്ലെങ്കിൽ തിരിമറി നടത്തപ്പെട്ടു ." #, python-format msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "ദയവായി%d അല്ലെങ്കിൽ കുറവ് ഫോമുകൾ സമർപ്പിക്കുക." +msgstr[1] "ദയവായി%d അല്ലെങ്കിൽ കുറവ് ഫോമുകൾ സമർപ്പിക്കുക." #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "ദയവായി %d അല്ലെങ്കിൽ കൂടുതൽ ഫോമുകൾ സമർപ്പിക്കുക. " +msgstr[1] "ദയവായി%d അല്ലെങ്കിൽ കൂടുതൽ ഫോമുകൾ സമർപ്പിക്കുക. " msgid "Order" msgstr "ക്രമം" @@ -723,14 +760,14 @@ msgid "Please correct the duplicate values below." msgstr "താഴെ കൊടുത്തവയില്‍ ആവര്‍ത്തനം ഒഴിവാക്കുക." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "ഇൻലൈൻ വാല്യൂ, പാരെന്റ് ഇൻസ്റ്റൻസുമായി ചേരുന്നില്ല." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "യോഗ്യമായത് തെരഞ്ഞെടുക്കുക. നിങ്ങള്‍ നല്കിയത് ലഭ്യമായവയില്‍ ഉള്‍പ്പെടുന്നില്ല." #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "\"%(pk)s\" ശെരിയായ ഒരു വാല്യൂ അല്ല." #, python-format msgid "" @@ -806,25 +843,25 @@ msgid "noon" msgstr "ഉച്ച" msgid "Monday" -msgstr "തിങ്കള്‍" +msgstr "തിങ്കളാഴ്ച" msgid "Tuesday" -msgstr "ചൊവ്വ" +msgstr "ചൊവ്വാഴ്ച" msgid "Wednesday" -msgstr "ബുധന്‍" +msgstr "ബുധനാഴ്ച" msgid "Thursday" -msgstr "വ്യാഴം" +msgstr "വ്യാഴാഴ്ച" msgid "Friday" -msgstr "വെള്ളി" +msgstr "വെള്ളിയാഴ്ച" msgid "Saturday" -msgstr "ശനി" +msgstr "ശനിയാഴ്ച" msgid "Sunday" -msgstr "ഞായര്‍" +msgstr "ഞായറാഴ്ച" msgid "Mon" msgstr "തിങ്കള്‍" @@ -1020,7 +1057,7 @@ msgstr "ഇതു സാധുവായ IPv6 വിലാസമല്ല." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s..." msgid "or" @@ -1058,7 +1095,7 @@ msgstr[1] "%d ദിവസങ്ങൾ" msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d മണിക്കൂർ" -msgstr[1] "%d മണിക്കൂരുകൾ" +msgstr[1] "%d മണിക്കൂറുകൾ" #, python-format msgid "%d minute" @@ -1101,6 +1138,9 @@ msgid "" "submitting forms. This cookie is required for security reasons, to ensure " "that your browser is not being hijacked by third parties." msgstr "" +"ഫോം സമർപ്പിക്കുമ്പോൾ ഒരു CSRF കുക്കി ഈ സൈറ്റിൽ ആവശ്യമാണ് എന്നതിനാലാണ് നിങ്ങൾ ഈ സന്ദേശം " +"കാണുന്നത്. മറ്റുള്ളവരാരെങ്കിലും നിങ്ങളുടെ ബ്രൗസറിനെ നിയന്ത്രിക്കുന്നില്ല എന്ന് ഉറപ്പുവരുത്താനായി ഈ " +"കുക്കി ആവശ്യമാണ്. " msgid "" "If you have configured your browser to disable cookies, please re-enable " @@ -1114,7 +1154,7 @@ msgid "No year specified" msgstr "വര്‍ഷം പരാമര്‍ശിച്ചിട്ടില്ല" msgid "Date out of range" -msgstr "" +msgstr "ഡാറ്റ പരിധിയുടെ പുറത്താണ്" msgid "No month specified" msgstr "മാസം പരാമര്‍ശിച്ചിട്ടില്ല" @@ -1169,7 +1209,7 @@ msgid "Index of %(directory)s" msgstr "%(directory)s യുടെ സൂചിക" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "ജാംഗോ: സമയപരിമിതികളുള്ള പൂർണ്ണതാമോഹികൾക്കായുള്ള വെബ് ഫ്രെയിംവർക്ക്. " #, python-format msgid "" @@ -1178,7 +1218,7 @@ msgid "" msgstr "" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "ഇൻസ്ടാൾ ഭംഗിയായി നടന്നു! അഭിനന്ദനങ്ങൾ !" #, python-format msgid "" @@ -1189,19 +1229,19 @@ msgid "" msgstr "" msgid "Django Documentation" -msgstr "" +msgstr "ജാംഗോ ഡോക്യുമെന്റേഷൻ" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "വിഷയങ്ങൾ, അനുബന്ധ വിഷയങ്ങൾ & നിർദ്ദേശക്കുറിപ്പുകൾ" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "പരിശീലനം: ഒരു പോളിങ്ങ് ആപ്പ്" msgid "Get started with Django" -msgstr "" +msgstr "ജാംഗോയുമായി പരിചയത്തിലാവുക" msgid "Django Community" -msgstr "" +msgstr "ജാംഗോ കമ്യൂണിറ്റി" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "കൂട്ടുകൂടൂ, സഹായം തേടൂ, അല്ലെങ്കിൽ സഹകരിക്കൂ" diff --git a/django/conf/locale/mn/LC_MESSAGES/django.mo b/django/conf/locale/mn/LC_MESSAGES/django.mo index c195a2a569f26..f09d90040bd72 100644 Binary files a/django/conf/locale/mn/LC_MESSAGES/django.mo and b/django/conf/locale/mn/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/mn/LC_MESSAGES/django.po b/django/conf/locale/mn/LC_MESSAGES/django.po index e29166db17fd1..756331e83d09c 100644 --- a/django/conf/locale/mn/LC_MESSAGES/django.po +++ b/django/conf/locale/mn/LC_MESSAGES/django.po @@ -3,20 +3,21 @@ # Translators: # Ankhbayar , 2013 # Bayarkhuu Bataa, 2014,2017-2018 -# Jacara , 2011 +# Baskhuu Lodoikhuu , 2011 # Jannis Leidel , 2011 # jargalan , 2011 # Tsolmon , 2011 # Zorig, 2013-2014,2016,2018 -# Анхбаяр Анхаа , 2013-2016,2018 +# Zorig, 2019 +# Анхбаяр Анхаа , 2013-2016,2018-2019 # Баясгалан Цэвлээ , 2011,2015,2017 # Ганзориг БП , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-09 06:54+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 08:42+0000\n" "Last-Translator: Анхбаяр Анхаа \n" "Language-Team: Mongolian (http://www.transifex.com/django/django/language/" "mn/)\n" @@ -146,6 +147,9 @@ msgstr "Дээд Сорбин" msgid "Hungarian" msgstr "Унгар" +msgid "Armenian" +msgstr "Армен" + msgid "Interlingua" msgstr "Interlingua" @@ -476,7 +480,7 @@ 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 "Boolean (Үнэн худлын аль нэг нь)" @@ -611,6 +615,9 @@ msgstr "Бинари өгөгдөл" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' утга зөв UUID биш байна." +msgid "Universally unique identifier" +msgstr "UUID" + msgid "File" msgstr "Файл" @@ -664,7 +671,7 @@ msgstr "Үргэлжилэх хугацааг зөв оруулна уу." #, python-brace-format msgid "The number of days must be between {min_days} and {max_days}." -msgstr "" +msgstr "Өдөрийн утга {min_days} ээс {max_days} ийн хооронд байх ёстой." msgid "No file was submitted. Check the encoding type on the form." msgstr "Файл оруулаагүй байна. Маягтаас кодлох төрлийг чагтал. " @@ -760,7 +767,7 @@ msgid "Please correct the duplicate values below." msgstr "Доорх давхардсан утгуудыг засна уу." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "Inline утга эцэг обекттой таарахгүй байна." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Зөв сонголт хийнэ үү. Энэ утга сонголтонд алга." @@ -1057,8 +1064,8 @@ msgstr "Энэ буруу IPv6 хаяг байна." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "буюу" @@ -1137,6 +1144,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Хэрвээ та таг ашиглаж " +"байгаа бол эсвэл 'Referrer-Policy: no-referrer' толгойг нэмсэн бол, " +"эдгээрийг устгана уу. CSRF хамгаалалт 'Referer' толгойг чанд шалгалт хийхийг " +"шаарддаг. Хэрвээ та хувийн аюулгүй байдалд санаа тавьдаг бол 3-дагч сайтыг " +"холбохдоо ашиглана уу." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1217,13 +1229,16 @@ msgid "Index of %(directory)s" msgstr "%(directory)s ийн жагсаалт" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Джанго: Чанартай бөгөөд хугацаанд нь хийхэд зориулсан Web framework." #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"Джанго %(version)s хувирбарын тэмдэглэл харах " msgid "The install worked successfully! Congratulations!" msgstr "Амжилттай суулгалаа! Баяр хүргэе!" @@ -1244,7 +1259,7 @@ msgid "Django Documentation" msgstr "Джанго баримтжуулалт" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Сэдэв, лавлахууд болон заавар-ууд" msgid "Tutorial: A Polling App" msgstr "Хичээл: Санал асуулга App" diff --git a/django/conf/locale/nb/LC_MESSAGES/django.mo b/django/conf/locale/nb/LC_MESSAGES/django.mo index 376044aa6398e..35e4bb55ae7b3 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 23c7e1553d5a2..eb536cd2d274b 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-2018 +# Jon , 2017-2019 # Jon , 2013 # Jon , 2011 # Sigurd Gartmann , 2012 @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-30 11:29+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-05-06 13:02+0000\n" "Last-Translator: Jon \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/" "language/nb/)\n" @@ -147,6 +147,9 @@ msgstr "Høysorbisk" msgid "Hungarian" msgstr "Ungarsk" +msgid "Armenian" +msgstr "Armensk" + msgid "Interlingua" msgstr "Interlingua" @@ -612,6 +615,9 @@ msgstr "Rå binærdata" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' er ikke en gyldig UUID." +msgid "Universally unique identifier" +msgstr "Universelt unik identifikator" + msgid "File" msgstr "Fil" @@ -1053,7 +1059,7 @@ msgstr "Dette er ikke en gyldig IPv6-adresse." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s…" msgid "or" diff --git a/django/conf/locale/ne/LC_MESSAGES/django.mo b/django/conf/locale/ne/LC_MESSAGES/django.mo index 2350326460c1b..10fd9af7c0dd5 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 6654347457fc5..f15191787645c 100644 --- a/django/conf/locale/ne/LC_MESSAGES/django.po +++ b/django/conf/locale/ne/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-09-29 06:13+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-26 07:41+0000\n" "Last-Translator: Sagar Chalise \n" "Language-Team: Nepali (http://www.transifex.com/django/django/language/ne/)\n" "MIME-Version: 1.0\n" @@ -139,6 +139,9 @@ msgstr "माथिल्लो सोर्बियन " msgid "Hungarian" msgstr "हन्गेरियन" +msgid "Armenian" +msgstr "" + msgid "Interlingua" msgstr "ईन्टरलिन्गुवा" @@ -588,6 +591,9 @@ msgstr "र बाइनरी डाटा" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' मान्य UUID होइन ।" +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "फाइल" @@ -749,6 +755,8 @@ msgid "" "%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it " "may be ambiguous or it may not exist." msgstr "" +"%(datetime)s को व्याख्या %(current_timezone)s समय तालिकामा मिलेन; यो नबुझिने " +"अथवा नरहेको हुन सक्छ ।." msgid "Clear" msgstr "सबै खाली गर्नु होस ।" @@ -1030,8 +1038,8 @@ msgstr "यो उपयुक्त IPv6 ठेगाना होइन ।" #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "अथवा" @@ -1091,6 +1099,8 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" +"यो सूचना तपाईँले 'Referer header' ब्राउजरले नपठाएको ले देख्दै हुनुहुन्छ । सुरक्षाको निम्ति " +"HTTPS साइट चलाउँदा 'Referer header' वेब ब्राउजरले पठाउनु पर्ने अनिवार्य छ ।" msgid "" "If you have configured your browser to disable 'Referer' headers, please re-" @@ -1178,13 +1188,16 @@ msgid "Index of %(directory)s" msgstr "%(directory)s को सूची" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "ज्याङ्गो : वेब साइट र एप्लिकेसन बनाउन सहयोगी औजार " #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"ज्याङ्गो %(version)s को परिवर्तन तथा विशेषता यहाँ हेर्नु होस" msgid "The install worked successfully! Congratulations!" msgstr "बधाई छ । स्थापना भएको छ ।" diff --git a/django/conf/locale/nl/LC_MESSAGES/django.mo b/django/conf/locale/nl/LC_MESSAGES/django.mo index 4905455fb94d5..1dc23679d2fc9 100644 Binary files a/django/conf/locale/nl/LC_MESSAGES/django.mo and b/django/conf/locale/nl/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/nl/LC_MESSAGES/django.po b/django/conf/locale/nl/LC_MESSAGES/django.po index e5ed4f1cd8589..f749c183869e9 100644 --- a/django/conf/locale/nl/LC_MESSAGES/django.po +++ b/django/conf/locale/nl/LC_MESSAGES/django.po @@ -14,14 +14,14 @@ # Michiel Overtoom , 2014 # Sander Steffann , 2014-2015 # Tino de Bruijn , 2013 -# Tonnes , 2017 +# Tonnes , 2017,2019 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-24 14:48+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" @@ -135,7 +135,7 @@ msgid "Galician" msgstr "Galicisch" msgid "Hebrew" -msgstr "Hebreews" +msgstr "Hebreeuws" msgid "Hindi" msgstr "Hindi" @@ -149,6 +149,9 @@ msgstr "Oppersorbisch" msgid "Hungarian" msgstr "Hongaars" +msgid "Armenian" +msgstr "Armeens" + msgid "Interlingua" msgstr "Interlingua" @@ -170,6 +173,9 @@ msgstr "Japans" msgid "Georgian" msgstr "Georgisch" +msgid "Kabyle" +msgstr "Kabylisch" + msgid "Kazakh" msgstr "Kazachs" @@ -394,6 +400,9 @@ msgstr[1] "" "Zorg dat deze waarde niet meer dan %(limit_value)d tekens bevat (het zijn er " "nu %(show_value)d)." +msgid "Enter a number." +msgstr "Voer een getal in." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -423,7 +432,7 @@ msgstr "" "zijn: '%(allowed_extensions)s'." msgid "Null characters are not allowed." -msgstr "" +msgstr "Null-tekens zijn niet toegestaan." msgid "and" msgstr "en" @@ -472,8 +481,12 @@ msgstr "Groot (8 byte) geheel getal" msgid "'%(value)s' value must be either True or False." msgstr "Waarde van '%(value)s' moet True of False zijn." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Waarde van '%(value)s' moet True, False of None zijn." + msgid "Boolean (Either True or False)" -msgstr "Boolean (True danwel False)" +msgstr "Boolean (True of False)" #, python-format msgid "String (up to %(max_length)s)" @@ -609,6 +622,9 @@ msgstr "Onbewerkte binaire gegevens" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' is geen geldige UUID." +msgid "Universally unique identifier" +msgstr "Universally unique identifier" + msgid "File" msgstr "Bestand" @@ -648,9 +664,6 @@ msgstr "Dit veld is verplicht." msgid "Enter a whole number." msgstr "Voer een geheel getal in." -msgid "Enter a number." -msgstr "Voer een getal in." - msgid "Enter a valid date." msgstr "Voer een geldige datum in." @@ -663,13 +676,16 @@ msgstr "Voer een geldige datum/tijd in." msgid "Enter a valid duration." msgstr "Voer een geldige tijdsduur in." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Het aantal dagen moet tussen {min_days} en {max_days} liggen." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" -"Er was geen bestand verstuurd. Controleer het coderingstype van het " -"formulier." +"Er is geen bestand verstuurd. Controleer het coderingstype op het formulier." msgid "No file was submitted." -msgstr "Er was geen bestand verstuurd." +msgstr "Er is geen bestand verstuurd." msgid "The submitted file is empty." msgstr "Het verstuurde bestand is leeg." @@ -692,8 +708,8 @@ msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -"Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of is " -"beschadigd." +"Upload een geldige afbeelding. Het geüploade bestand is geen of een " +"beschadigde afbeelding." #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." @@ -717,7 +733,7 @@ msgid "(Hidden field %(name)s) %(error)s" msgstr "(Verborgen veld %(name)s) %(error)s" msgid "ManagementForm data is missing or has been tampered with" -msgstr "ManagementForm gegevens missen of zijn mee geknoeid" +msgstr "ManagementForm-gegevens ontbreken, of er is mee geknoeid" #, python-format msgid "Please submit %d or fewer forms." @@ -739,32 +755,32 @@ msgstr "Verwijderen" #, python-format msgid "Please correct the duplicate data for %(field)s." -msgstr "Verbeter de dubbele gegevens voor %(field)s." +msgstr "Corrigeer de dubbele gegevens voor %(field)s." #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "Verbeter de dubbele gegevens voor %(field)s, welke uniek moet zijn." +msgstr "Corrigeer de dubbele gegevens voor %(field)s, dat uniek moet zijn." #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -"Verbeter de dubbele gegevens voor %(field_name)s, welke uniek moet zijn voor " +"Corrigeer de dubbele gegevens voor %(field_name)s, dat uniek moet zijn voor " "de %(lookup)s in %(date_field)s." msgid "Please correct the duplicate values below." -msgstr "Verbeter de dubbele waarden hieronder." +msgstr "Corrigeer de dubbele waarden hieronder." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "De inline waarde komt niet overeen met de bovenliggende instantie." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Selecteer een geldige keuze. Deze keuze is niet beschikbaar." #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "'%(pk)s' is geen geldige waarde." #, python-format msgid "" @@ -1054,8 +1070,8 @@ msgstr "Dit is geen geldig IPv6-adres." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "of" @@ -1125,9 +1141,9 @@ msgid "" "enable them, at least for this site, or for HTTPS connections, or for 'same-" "origin' requests." msgstr "" -"Als u uw webbrowser hebt ingesteld heeft om geen 'Referer headers' mee te " -"sturen, schakelt u deze dan weer in, op zijn minst voor deze website, of " -"voor HTTPS-verbindingen, of voor 'same-origin'-aanvragen." +"Als u uw webbrowser hebt ingesteld om geen 'Referer headers' mee te sturen, " +"schakelt u deze dan weer in, op zijn minst voor deze website, of voor HTTPS-" +"verbindingen, of voor 'same-origin'-aanvragen." msgid "" "If you are using the tag or " @@ -1136,6 +1152,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Als u de tag gebruikt of de " +"header 'Referrer-Policy: no-referrer' opneemt, verwijder deze dan. De CSRF-" +"bescherming vereist de 'Referer'-header voor strenge referer-controle. Als u " +"bezorgd bent om privacy, gebruik dan alternatieven zoals voor koppelingen naar websites van derden." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1161,7 +1182,7 @@ msgid "No year specified" msgstr "Geen jaar opgegeven" msgid "Date out of range" -msgstr "" +msgstr "Datum buiten bereik" msgid "No month specified" msgstr "Geen maand opgegeven" @@ -1225,9 +1246,12 @@ msgid "" "View release notes for Django %(version)s" msgstr "" +"Uitgaveopmerkingen voor Django %(version)s " +"weergeven" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "De installatie is gelukt! Gefeliciteerd!" #, python-format msgid "" @@ -1236,9 +1260,12 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"U ziet deze pagina, omdat uw instellingenbestand DEBUG=True bevat en u geen URL's hebt geconfigureerd." msgid "Django Documentation" -msgstr "" +msgstr "Django-documentatie" msgid "Topics, references, & how-to's" msgstr "" diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo index 8c560ed13dfdd..ee95a2b0eee78 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 de7e48c1dcda2..3d593df6cf7a0 100644 --- a/django/conf/locale/pl/LC_MESSAGES/django.po +++ b/django/conf/locale/pl/LC_MESSAGES/django.po @@ -8,13 +8,13 @@ # angularcircle, 2014 # Dariusz Paluch , 2015 # Jannis Leidel , 2011 -# Janusz Harkot , 2014-2015 +# Janusz Harkot , 2014-2015 # Kacper Krupa , 2013 # Karol , 2012 # konryd , 2011 # konryd , 2011 # Łukasz Rekucki (lqc) , 2011 -# m_aciek , 2016-2018 +# m_aciek , 2016-2019 # m_aciek , 2015 # Michał Pasternak , 2013 # p , 2012 @@ -23,15 +23,15 @@ # Quadric , 2014 # Radek Czajka , 2013 # Radek Czajka , 2013 -# Roman Barczyński , 2012 +# Roman Barczyński, 2012 # sidewinder , 2014 # Tomasz Kajtoch , 2016-2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-09-17 17:25+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-26 20:41+0000\n" "Last-Translator: m_aciek \n" "Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n" "MIME-Version: 1.0\n" @@ -162,6 +162,9 @@ msgstr "górnołużycki" msgid "Hungarian" msgstr "węgierski" +msgid "Armenian" +msgstr "ormiański" + msgid "Interlingua" msgstr "interlingua" @@ -655,6 +658,9 @@ msgstr "Dane w postaci binarnej" msgid "'%(value)s' is not a valid UUID." msgstr "Wartość '%(value)s' nie jest poprawnym UUID." +msgid "Universally unique identifier" +msgstr "Uniwersalnie unikalny identyfikator" + msgid "File" msgstr "Plik" @@ -1111,8 +1117,8 @@ msgstr "To nie jest poprawny adres IPv6." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr " %(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "lub" diff --git a/django/conf/locale/pt/LC_MESSAGES/django.mo b/django/conf/locale/pt/LC_MESSAGES/django.mo index 8778211b9d488..a5f444ac98ade 100644 Binary files a/django/conf/locale/pt/LC_MESSAGES/django.mo and b/django/conf/locale/pt/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/pt/LC_MESSAGES/django.po b/django/conf/locale/pt/LC_MESSAGES/django.po index 5c15c66569a89..790ee57e07268 100644 --- a/django/conf/locale/pt/LC_MESSAGES/django.po +++ b/django/conf/locale/pt/LC_MESSAGES/django.po @@ -7,16 +7,16 @@ # Jannis Leidel , 2011 # José Durães , 2014 # jorgecarleitao , 2014-2015 -# Nuno Mariz , 2011-2013,2015-2017 +# Nuno Mariz , 2011-2013,2015-2018 # Paulo Köch , 2011 # Raúl Pedro Fernandes Santos, 2014 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-12-01 00:17+0000\n" -"Last-Translator: Nuno Mariz \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 00:44+0000\n" +"Last-Translator: Ramiro Morales\n" "Language-Team: Portuguese (http://www.transifex.com/django/django/language/" "pt/)\n" "MIME-Version: 1.0\n" @@ -145,6 +145,9 @@ msgstr "Sorbedo superior" msgid "Hungarian" msgstr "Húngaro" +msgid "Armenian" +msgstr "" + msgid "Interlingua" msgstr "Interlíngua" @@ -166,6 +169,9 @@ msgstr "Japonês" msgid "Georgian" msgstr "Georgiano" +msgid "Kabyle" +msgstr "Kabyle" + msgid "Kazakh" msgstr "Cazaque" @@ -387,6 +393,9 @@ msgstr[1] "" "Garanta que este valor tenha no máximo %(limit_value)d caracteres (tem " "%(show_value)d)." +msgid "Enter a number." +msgstr "Introduza um número." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -465,6 +474,10 @@ msgstr "Inteiro grande (8 byte)" msgid "'%(value)s' value must be either True or False." msgstr "O valor '%(value)s' deve ser True ou False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "O valor '%(value)s' deve ser True, False ou None." + msgid "Boolean (Either True or False)" msgstr "Boolean (Pode ser True ou False)" @@ -602,6 +615,9 @@ msgstr "Dados binários simples" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' não é um UUID válido." +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "Ficheiro" @@ -641,9 +657,6 @@ msgstr "Este campo é obrigatório." msgid "Enter a whole number." msgstr "Introduza um número inteiro." -msgid "Enter a number." -msgstr "Introduza um número." - msgid "Enter a valid date." msgstr "Introduza uma data válida." @@ -656,6 +669,10 @@ msgstr "Introduza uma data/hora válida." msgid "Enter a valid duration." msgstr "Introduza uma duração válida." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "O número de dias deve ser entre {min_days} e {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Nenhum ficheiro foi submetido. Verifique o tipo de codificação do formulário." @@ -1050,8 +1067,8 @@ msgstr "Este não é um endereço IPv6 válido." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "ou" diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo index 851c672927a40..ef046ada4fa51 100644 Binary files a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo and b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/django/conf/locale/pt_BR/LC_MESSAGES/django.po index 01569ec5d5a7f..86fafd78dd130 100644 --- a/django/conf/locale/pt_BR/LC_MESSAGES/django.po +++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.po @@ -2,6 +2,7 @@ # # Translators: # Allisson Azevedo , 2014 +# amcorreia , 2018 # andrewsmedina , 2014-2015 # Arthur Silva , 2017 # bruno.devpod , 2014 @@ -9,6 +10,7 @@ # Carlos Leite , 2016 # Filipe Cifali Stangler , 2016 # dudanogueira , 2012 +# dudanogueira , 2019 # Elyézer Rezende , 2013 # Fábio C. Barrionuevo da Luz , 2014-2015 # Felipe Rodrigues , 2016 @@ -28,9 +30,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-19 17:55+0000\n" -"Last-Translator: Xico Petry \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-18 17:13+0000\n" +"Last-Translator: dudanogueira \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/" "language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -159,6 +161,9 @@ msgstr "Sorábio Alto" msgid "Hungarian" msgstr "Húngaro" +msgid "Armenian" +msgstr "Armênio" + msgid "Interlingua" msgstr "Interlíngua" @@ -440,7 +445,7 @@ msgstr "" "permitidas são: '%(allowed_extensions)s'." msgid "Null characters are not allowed." -msgstr "Caracteres nulos não são aceitos." +msgstr "Caracteres nulos não são permitidos." msgid "and" msgstr "e" @@ -630,6 +635,9 @@ msgstr "Dados binários bruto" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' não é um UUID válido." +msgid "Universally unique identifier" +msgstr "Identificador único universal" + msgid "File" msgstr "Arquivo" @@ -1075,8 +1083,8 @@ msgstr "Este não é um endereço IPv6 válido." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr " %(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "ou" diff --git a/django/conf/locale/ro/LC_MESSAGES/django.mo b/django/conf/locale/ro/LC_MESSAGES/django.mo index 0b0242abb5841..62de5aa721303 100644 Binary files a/django/conf/locale/ro/LC_MESSAGES/django.mo and b/django/conf/locale/ro/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ro/LC_MESSAGES/django.po b/django/conf/locale/ro/LC_MESSAGES/django.po index dbc03a696c081..cdb621e9377f5 100644 --- a/django/conf/locale/ro/LC_MESSAGES/django.po +++ b/django/conf/locale/ro/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Abel Radac , 2017 -# Bogdan Mateescu, 2018 +# Bogdan Mateescu, 2018-2019 # mihneasim , 2011 # Daniel Ursache-Dogariu, 2011 # Denis Darii , 2011,2014 @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 05:42+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 11:00+0000\n" "Last-Translator: Bogdan Mateescu\n" "Language-Team: Romanian (http://www.transifex.com/django/django/language/" "ro/)\n" @@ -146,6 +146,9 @@ msgstr "Soraba Superioară" msgid "Hungarian" msgstr "Ungară" +msgid "Armenian" +msgstr "Armeană" + msgid "Interlingua" msgstr "Interlingua" @@ -629,6 +632,9 @@ msgstr "Date binare brute" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' nu este un UUID valid." +msgid "Universally unique identifier" +msgstr "Identificator unic universal" + msgid "File" msgstr "Fișier" @@ -1083,8 +1089,8 @@ msgstr "Aceasta nu este o adresă IPv6 validă." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "sau" diff --git a/django/conf/locale/ru/LC_MESSAGES/django.mo b/django/conf/locale/ru/LC_MESSAGES/django.mo index a681d9e843184..f5124ee8e9ec8 100644 Binary files a/django/conf/locale/ru/LC_MESSAGES/django.mo and b/django/conf/locale/ru/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ru/LC_MESSAGES/django.po b/django/conf/locale/ru/LC_MESSAGES/django.po index ba5c81ba9393e..3a0b6c2b864ec 100644 --- a/django/conf/locale/ru/LC_MESSAGES/django.po +++ b/django/conf/locale/ru/LC_MESSAGES/django.po @@ -15,15 +15,15 @@ # Mikhail Zholobov , 2013 # Nikolay Korotkiy , 2018 # Вася Аникин , 2017 -# Алексей Борискин , 2013-2017 +# Алексей Борискин , 2013-2017,2019 # Дмитрий Шатера , 2016,2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-07-23 14:39+0000\n" -"Last-Translator: SeryiMysh \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-18 21:13+0000\n" +"Last-Translator: Алексей Борискин \n" "Language-Team: Russian (http://www.transifex.com/django/django/language/" "ru/)\n" "MIME-Version: 1.0\n" @@ -154,6 +154,9 @@ msgstr "Верхнелужицкий" msgid "Hungarian" msgstr "Венгерский" +msgid "Armenian" +msgstr "Армянский" + msgid "Interlingua" msgstr "Интерлингва" @@ -643,6 +646,9 @@ msgstr "Необработанные двоичные данные" msgid "'%(value)s' is not a valid UUID." msgstr "Значение '%(value)s' не является верным UUID-ом." +msgid "Universally unique identifier" +msgstr "Поле для UUID, универсального уникального идентификатора" + msgid "File" msgstr "Файл" @@ -1106,8 +1112,8 @@ msgstr "Значение не является корректным адресо #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "или" diff --git a/django/conf/locale/sq/LC_MESSAGES/django.mo b/django/conf/locale/sq/LC_MESSAGES/django.mo index 75cf0547bd946..ac3953dab1351 100644 Binary files a/django/conf/locale/sq/LC_MESSAGES/django.mo and b/django/conf/locale/sq/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/sq/LC_MESSAGES/django.po b/django/conf/locale/sq/LC_MESSAGES/django.po index c73db583156ba..41d42e30256c7 100644 --- a/django/conf/locale/sq/LC_MESSAGES/django.po +++ b/django/conf/locale/sq/LC_MESSAGES/django.po @@ -2,14 +2,14 @@ # # Translators: # Besnik , 2011-2014 -# Besnik , 2015-2018 +# Besnik , 2015-2019 # Jannis Leidel , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 09:14+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-30 10:51+0000\n" "Last-Translator: Besnik \n" "Language-Team: Albanian (http://www.transifex.com/django/django/language/" "sq/)\n" @@ -139,6 +139,9 @@ msgstr "Sorbiane e Sipërme" msgid "Hungarian" msgstr "Hungareze" +msgid "Armenian" +msgstr "Armenisht" + msgid "Interlingua" msgstr "Interlingua" @@ -495,7 +498,7 @@ msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid " "date." msgstr "" -"Vlera '%(value)s' ka format të saktë (YYYY-MM-DD) por është datë e " +"Vlera '%(value)s' ka formatin e saktë (YYYY-MM-DD), por është datë e " "pavlefshme." msgid "Date (without time)" @@ -514,7 +517,7 @@ msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" "[TZ]) but it is an invalid date/time." msgstr "" -"Vlera '%(value)s' ka format të saktë (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) " +"Vlera '%(value)s' ka format të saktë (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), " "por është datë/kohë e pavlefshme." msgid "Date (with time)" @@ -609,6 +612,9 @@ msgstr "Të dhëna dyore të papërpunuara" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' s’është UUID i vlefshëm." +msgid "Universally unique identifier" +msgstr "Identifikues universalisht unik" + msgid "File" msgstr "Kartelë" @@ -700,7 +706,7 @@ msgstr "" #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" -"Përzgjidhni një zgjedhje të vlefshme. %(value)s s’është nga zgjedhjet e " +"Përzgjidhni një zgjedhje të vlefshme. %(value)s s’është një nga zgjedhjet e " "mundshme." msgid "Enter a list of values." @@ -1062,7 +1068,7 @@ msgstr "Kjo s’është adresë IPv6 e vlefshme." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s…" msgid "or" diff --git a/django/conf/locale/sr/LC_MESSAGES/django.mo b/django/conf/locale/sr/LC_MESSAGES/django.mo index 467823bb88a70..0a8665ef11f60 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 5f426af9502c4..81df886749cd2 100644 --- a/django/conf/locale/sr/LC_MESSAGES/django.po +++ b/django/conf/locale/sr/LC_MESSAGES/django.po @@ -2,15 +2,16 @@ # # Translators: # Branko Kokanovic , 2018 +# Igor Jerosimić, 2019 # Jannis Leidel , 2011 # Janos Guljas , 2011-2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 20:03+0000\n" -"Last-Translator: Branko Kokanovic \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-27 19:31+0000\n" +"Last-Translator: Igor Jerosimić\n" "Language-Team: Serbian (http://www.transifex.com/django/django/language/" "sr/)\n" "MIME-Version: 1.0\n" @@ -140,6 +141,9 @@ msgstr "горњолужичкосрпски" msgid "Hungarian" msgstr "мађарски" +msgid "Armenian" +msgstr "јерменски" + msgid "Interlingua" msgstr "интерлингва" @@ -618,6 +622,9 @@ msgstr "Сирови бинарни подаци" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' није валидан UUID." +msgid "Universally unique identifier" +msgstr "Универзално јединствени идентификатор" + msgid "File" msgstr "Фајл" @@ -1068,7 +1075,7 @@ msgstr "Ово није валидна IPv6 адреса." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." +msgid "%(truncated_text)s…" msgstr "%(truncated_text)s..." msgid "or" diff --git a/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo b/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo index 83b1e65c35fa1..873edb3524485 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 9d525db723b64..16d3937e40f78 100644 --- a/django/conf/locale/sr_Latn/LC_MESSAGES/django.po +++ b/django/conf/locale/sr_Latn/LC_MESSAGES/django.po @@ -1,17 +1,18 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Igor Jerosimić, 2019 # Jannis Leidel , 2011 # Janos Guljas , 2011-2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-27 19:21+0000\n" +"Last-Translator: Igor Jerosimić\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/django/django/" -"language/sr%40latin/)\n" +"language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -20,13 +21,13 @@ msgstr "" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "Afrikaans" -msgstr "" +msgstr "afrikanski" msgid "Arabic" msgstr "arapski" msgid "Asturian" -msgstr "" +msgstr "asturijski" msgid "Azerbaijani" msgstr "azerbejdžanski" @@ -35,13 +36,13 @@ msgid "Bulgarian" msgstr "bugarski" msgid "Belarusian" -msgstr "" +msgstr "beloruski" msgid "Bengali" msgstr "bengalski" msgid "Breton" -msgstr "" +msgstr "bretonski" msgid "Bosnian" msgstr "bosanski" @@ -71,13 +72,13 @@ msgid "English" msgstr "engleski" msgid "Australian English" -msgstr "" +msgstr "australijski engleski" msgid "British English" msgstr "britanski engleski" msgid "Esperanto" -msgstr "" +msgstr "esperanto" msgid "Spanish" msgstr "španski" @@ -86,7 +87,7 @@ msgid "Argentinian Spanish" msgstr "argentinski španski" msgid "Colombian Spanish" -msgstr "" +msgstr "kolumbijski španski" msgid "Mexican Spanish" msgstr "meksički španski" @@ -95,7 +96,7 @@ msgid "Nicaraguan Spanish" msgstr "nikaragvanski španski" msgid "Venezuelan Spanish" -msgstr "" +msgstr "venecuelanski španski" msgid "Estonian" msgstr "estonski" @@ -119,7 +120,7 @@ msgid "Irish" msgstr "irski" msgid "Scottish Gaelic" -msgstr "" +msgstr "škotski galski" msgid "Galician" msgstr "galski" @@ -139,6 +140,9 @@ msgstr "" msgid "Hungarian" msgstr "mađarski" +msgid "Armenian" +msgstr "jermenski" + msgid "Interlingua" msgstr "" @@ -146,7 +150,7 @@ msgid "Indonesian" msgstr "indonežanski" msgid "Ido" -msgstr "" +msgstr "ido" msgid "Icelandic" msgstr "islandski" @@ -160,9 +164,12 @@ msgstr "japanski" msgid "Georgian" msgstr "gruzijski" -msgid "Kazakh" +msgid "Kabyle" msgstr "" +msgid "Kazakh" +msgstr "kazaški" + msgid "Khmer" msgstr "kambodijski" @@ -173,7 +180,7 @@ msgid "Korean" msgstr "korejski" msgid "Luxembourgish" -msgstr "" +msgstr "luksemburški" msgid "Lithuanian" msgstr "litvanski" @@ -194,13 +201,13 @@ msgid "Marathi" msgstr "" msgid "Burmese" -msgstr "" +msgstr "burmanski" msgid "Norwegian Bokmål" -msgstr "" +msgstr "norveški književni" msgid "Nepali" -msgstr "" +msgstr "nepalski" msgid "Dutch" msgstr "holandski" @@ -248,7 +255,7 @@ msgid "Swedish" msgstr "švedski" msgid "Swahili" -msgstr "" +msgstr "svahili" msgid "Tamil" msgstr "tamilski" @@ -263,7 +270,7 @@ msgid "Turkish" msgstr "turski" msgid "Tatar" -msgstr "" +msgstr "tatarski" msgid "Udmurt" msgstr "" @@ -284,25 +291,25 @@ msgid "Traditional Chinese" msgstr "starokineski" msgid "Messages" -msgstr "" +msgstr "Poruke" msgid "Site Maps" -msgstr "" +msgstr "Mape sajta" msgid "Static Files" -msgstr "" +msgstr "Statičke datoteke" msgid "Syndication" msgstr "" msgid "That page number is not an integer" -msgstr "" +msgstr "Zadati broj strane nije ceo broj" msgid "That page number is less than 1" -msgstr "" +msgstr "Zadati broj strane je manji od 1" msgid "That page contains no results" -msgstr "" +msgstr "Tražena strana ne sadrži rezultate" msgid "Enter a valid value." msgstr "Unesite ispravnu vrednost." @@ -311,10 +318,10 @@ msgid "Enter a valid URL." msgstr "Unesite ispravan URL." msgid "Enter a valid integer." -msgstr "" +msgstr "Unesite ispravan ceo broj." msgid "Enter a valid email address." -msgstr "" +msgstr "Unesite ispravnu e-mail adresu." #. Translators: "letters" means latin letters: a-z and A-Z. msgid "" @@ -374,6 +381,9 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgid "Enter a number." +msgstr "Unesite broj." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -411,7 +421,7 @@ msgstr "i" #, python-format msgid "%(model_name)s with this %(field_labels)s already exists." -msgstr "" +msgstr "%(model_name)ssa poljem %(field_labels)sveć postoji." #, python-format msgid "Value %(value)r is not a valid choice." @@ -452,6 +462,10 @@ msgstr "Veliki ceo broj" msgid "'%(value)s' value must be either True or False." msgstr "" +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Bulova vrednost (True ili False)" @@ -575,6 +589,9 @@ msgstr "" msgid "'%(value)s' is not a valid UUID." msgstr "" +msgid "Universally unique identifier" +msgstr "" + msgid "File" msgstr "Fajl" @@ -606,7 +623,7 @@ msgstr "Relacija više na više" #. characters will prevent the default label_suffix to be appended to the #. label msgid ":?.!" -msgstr "" +msgstr ":?.!" msgid "This field is required." msgstr "Ovo polje se mora popuniti." @@ -614,9 +631,6 @@ msgstr "Ovo polje se mora popuniti." msgid "Enter a whole number." msgstr "Unesite ceo broj." -msgid "Enter a number." -msgstr "Unesite broj." - msgid "Enter a valid date." msgstr "Unesite ispravan datum." @@ -629,6 +643,10 @@ msgstr "Unesite ispravan datum/vreme." msgid "Enter a valid duration." msgstr "" +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "Fajl nije prebačen. Proverite tip enkodiranja formulara." @@ -668,11 +686,11 @@ msgid "Enter a complete value." msgstr "" msgid "Enter a valid UUID." -msgstr "" +msgstr "Unesite ispravan UUID." #. Translators: This is the default suffix added to form field labels msgid ":" -msgstr "" +msgstr ":" #, python-format msgid "(Hidden field %(name)s) %(error)s" @@ -1016,12 +1034,12 @@ msgid "December" msgstr "Decembar" msgid "This is not a valid IPv6 address." -msgstr "" +msgstr "Ovo nije ispravna IPv6 adresa." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "" msgid "or" msgstr "ili" @@ -1073,10 +1091,10 @@ msgstr[1] "" msgstr[2] "" msgid "0 minutes" -msgstr "" +msgstr "0 minuta" msgid "Forbidden" -msgstr "" +msgstr "Zabranjeno" msgid "CSRF verification failed. Request aborted." msgstr "" diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo index 0028cd3add0aa..172bb8c7edf6d 100644 Binary files a/django/conf/locale/sv/LC_MESSAGES/django.mo and b/django/conf/locale/sv/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/sv/LC_MESSAGES/django.po b/django/conf/locale/sv/LC_MESSAGES/django.po index 2451880294e31..52c999bfad1dc 100644 --- a/django/conf/locale/sv/LC_MESSAGES/django.po +++ b/django/conf/locale/sv/LC_MESSAGES/django.po @@ -9,16 +9,17 @@ # Jonathan Lindén, 2014 # Mattias Hansson , 2016 # Mattias Benjaminsson , 2011 +# Petter Strandmark , 2019 # Rasmus Précenth , 2014 # Samuel Linde , 2011 -# Thomas Lundqvist , 2013,2016 +# Thomas Lundqvist, 2013,2016 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-28 14:10+0000\n" +"Last-Translator: Petter Strandmark \n" "Language-Team: Swedish (http://www.transifex.com/django/django/language/" "sv/)\n" "MIME-Version: 1.0\n" @@ -147,6 +148,9 @@ msgstr "Högsorbiska" msgid "Hungarian" msgstr "Ungerska" +msgid "Armenian" +msgstr "Armeniska" + msgid "Interlingua" msgstr "Interlingua" @@ -168,6 +172,9 @@ msgstr "Japanska" msgid "Georgian" msgstr "Georgiska" +msgid "Kabyle" +msgstr "Kabyliska" + msgid "Kazakh" msgstr "Kazakiska" @@ -304,13 +311,13 @@ msgid "Syndication" msgstr "Syndikering" msgid "That page number is not an integer" -msgstr "" +msgstr "Sidnumret är inte ett heltal" msgid "That page number is less than 1" -msgstr "" +msgstr "Sidnumret är mindre än 1" msgid "That page contains no results" -msgstr "" +msgstr "Sidan innehåller inga resultat" msgid "Enter a valid value." msgstr "Fyll i ett giltigt värde." @@ -393,6 +400,9 @@ msgstr[1] "" "Säkerställ att detta värde har som mest %(limit_value)d tecken (den har " "%(show_value)d)." +msgid "Enter a number." +msgstr "Fyll i ett tal." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -420,9 +430,11 @@ msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" +"Filändelse %(extension)s är inte tillåten. Tillåtna ändelser är: " +"”%(allowed_extensions)s”." msgid "Null characters are not allowed." -msgstr "" +msgstr "Null-tecken är inte tillåtna." msgid "and" msgstr "och" @@ -471,6 +483,10 @@ msgstr "Stort (8 byte) heltal" msgid "'%(value)s' value must be either True or False." msgstr "Värdet '%(value)s' måste vara antingen True eller False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "”%(value)s” värde måste vara antingen True, False eller None." + msgid "Boolean (Either True or False)" msgstr "Boolesk (antingen True eller False)" @@ -608,6 +624,9 @@ msgstr "Rå binärdata" msgid "'%(value)s' is not a valid UUID." msgstr "Värdet '%(value)s' är inget giltigt UUID." +msgid "Universally unique identifier" +msgstr "Globalt unik identifierare" + msgid "File" msgstr "Fil" @@ -647,9 +666,6 @@ msgstr "Detta fält måste fyllas i." msgid "Enter a whole number." msgstr "Fyll i ett heltal." -msgid "Enter a number." -msgstr "Fyll i ett tal." - msgid "Enter a valid date." msgstr "Fyll i ett giltigt datum." @@ -662,6 +678,10 @@ msgstr "Fyll i ett giltigt datum/tid." msgid "Enter a valid duration." msgstr "Fyll i ett giltigt tidsspann." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Antalet dagar måste vara mellan {min_days} och {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Ingen fil skickades. Kontrollera kodningstypen i formuläret." @@ -756,7 +776,7 @@ msgid "Please correct the duplicate values below." msgstr "Vänligen korrigera duplikatvärdena nedan." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "Värdet för InlineForeignKeyField motsvarade inte dess motpart." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" @@ -765,7 +785,7 @@ msgstr "" #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "\"%(pk)s\" är inte ett giltigt värde." #, python-format msgid "" @@ -1055,8 +1075,8 @@ msgstr "Detta är inte en giltig IPv6 adress." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "eller" @@ -1136,6 +1156,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Om du använder -taggen eller " +"har med ”Referrer-Policy: no-referrer”, tag bort dem. CSRF-skyddet kräver " +"”Referer” för att kunna göra sin strikta kontroll. Om detta oroar dig, " +"använd alternativ såsom för länkar till tredje " +"part." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1160,7 +1185,7 @@ msgid "No year specified" msgstr "Inget år angivet" msgid "Date out of range" -msgstr "" +msgstr "Datum är utanför intervallet" msgid "No month specified" msgstr "Ingen månad angiven" @@ -1214,16 +1239,18 @@ msgid "Index of %(directory)s" msgstr "Innehåll i %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Django: webb-ramverket för perfektionister med deadlines." #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"Visa release notes för Django %(version)s" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "Installationen lyckades! Grattis!" #, python-format msgid "" @@ -1232,21 +1259,25 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Du ser den här sidan eftersom DEBUG=True i din settings-fil och du har inte konfigurerat några URL:" +"er." msgid "Django Documentation" -msgstr "" +msgstr "Djangodokumentation" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Ämnen, referenser och how-to's" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "Tutorial: En undersöknings-app" msgid "Get started with Django" -msgstr "" +msgstr "Kom igång med Django" msgid "Django Community" -msgstr "" +msgstr "Djangos community" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "Kontakta, begär hjälp eller bidra" diff --git a/django/conf/locale/tr/LC_MESSAGES/django.mo b/django/conf/locale/tr/LC_MESSAGES/django.mo index b45e506e11ec8..4755178e86e61 100644 Binary files a/django/conf/locale/tr/LC_MESSAGES/django.mo and b/django/conf/locale/tr/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/tr/LC_MESSAGES/django.po b/django/conf/locale/tr/LC_MESSAGES/django.po index f11c6bb766aa4..5959bd6bd4a93 100644 --- a/django/conf/locale/tr/LC_MESSAGES/django.po +++ b/django/conf/locale/tr/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Ahmet Emre Aladağ , 2013 -# BouRock, 2015-2018 +# BouRock, 2015-2019 # BouRock, 2014-2015 # Caner Başaran , 2013 # Cihad GÜNDOĞDU , 2012 @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-05-18 09:51+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 16:08+0000\n" "Last-Translator: BouRock\n" "Language-Team: Turkish (http://www.transifex.com/django/django/language/" "tr/)\n" @@ -147,6 +147,9 @@ msgstr "Yukarı Sorb dili" msgid "Hungarian" msgstr "Macarca" +msgid "Armenian" +msgstr "Ermenice" + msgid "Interlingua" msgstr "Interlingua" @@ -619,6 +622,9 @@ msgstr "Ham ikili veri" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' geçerli bir UUID değil." +msgid "Universally unique identifier" +msgstr "Evrensel benzersiz tanımlayıcı" + msgid "File" msgstr "Dosya" @@ -1067,8 +1073,8 @@ msgstr "Bu, geçerli bir IPv6 adresi değil." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "ya da" diff --git a/django/conf/locale/uk/LC_MESSAGES/django.mo b/django/conf/locale/uk/LC_MESSAGES/django.mo index 3b04145c428e6..f38667cd81d74 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 9ebc17a25d68f..ad863851e39ed 100644 --- a/django/conf/locale/uk/LC_MESSAGES/django.po +++ b/django/conf/locale/uk/LC_MESSAGES/django.po @@ -13,15 +13,16 @@ # Alex Bolotov , 2013-2014 # Roman Kozlovskyi , 2012 # Sergiy Kuzmenko , 2011 -# Taras Korzhak , 2018 +# tarasyyyk , 2018 +# tarasyyyk , 2019 # Zoriana Zaiats, 2016-2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-08-24 19:51+0000\n" -"Last-Translator: Taras Korzhak \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-21 16:29+0000\n" +"Last-Translator: tarasyyyk \n" "Language-Team: Ukrainian (http://www.transifex.com/django/django/language/" "uk/)\n" "MIME-Version: 1.0\n" @@ -153,6 +154,9 @@ msgstr "Верхньолужицька" msgid "Hungarian" msgstr "Угорська" +msgid "Armenian" +msgstr "Вірменська" + msgid "Interlingua" msgstr "Інтерлінгва" @@ -647,6 +651,9 @@ msgstr "Необроблені двійкові дані" msgid "'%(value)s' is not a valid UUID." msgstr "'%(value)s' невірне значення UUID." +msgid "Universally unique identifier" +msgstr "Універсальний унікальний ідентифікатор" + msgid "File" msgstr "Файл" @@ -1107,8 +1114,8 @@ msgstr "Це не є правильною адресою IPv6." #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" msgid "or" msgstr "або" diff --git a/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo b/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo index 911d910c78c7d..75cbeae418ca4 100644 Binary files a/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo and b/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/zh_Hans/LC_MESSAGES/django.po b/django/conf/locale/zh_Hans/LC_MESSAGES/django.po index 7b5e5bf14ddfb..c160cb9b07b71 100644 --- a/django/conf/locale/zh_Hans/LC_MESSAGES/django.po +++ b/django/conf/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,34 +1,37 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Bai HuanCheng (Bestony) , 2017-2018 +# Bai HuanCheng , 2017-2018 # Daniel Duan , 2013 +# jamin M , 2019 # Jannis Leidel , 2011 # Kevin Sze , 2012 # Lele Long , 2011,2015,2017 # Le Yang , 2018 # Liping Wang , 2016-2017 # mozillazg , 2016 -# Ronald White , 2014 +# Ronald White , 2014 # pylemon , 2013 # Ray Wang , 2017 # slene , 2011 # Sun Liwen , 2014 +# Suntravel Chris , 2019 # Liping Wang , 2016 # Wentao Han , 2018 # Xiang Yu , 2014 -# Yin Jifeng , 2013 +# Jeff Yin , 2013 # Zhengyang Wang , 2017 -# Ziang Song , 2011-2012 +# ced773123cfad7b4e8b79ca80f736af9, 2011-2012 # Ziya Tang , 2018 +# 付峥 , 2018 # Kevin Sze , 2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-17 11:49+0200\n" -"PO-Revision-Date: 2018-09-28 07:47+0000\n" -"Last-Translator: Wentao Han \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-05-26 11:53+0000\n" +"Last-Translator: jamin M \n" "Language-Team: Chinese (China) (http://www.transifex.com/django/django/" "language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -38,7 +41,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" msgid "Afrikaans" -msgstr "南非语" +msgstr "南非荷兰语" msgid "Arabic" msgstr "阿拉伯语" @@ -157,6 +160,9 @@ msgstr "上索布" msgid "Hungarian" msgstr "匈牙利语" +msgid "Armenian" +msgstr "亚美尼亚语" + msgid "Interlingua" msgstr "国际语" @@ -468,14 +474,14 @@ msgstr "大整数(8字节)" #, python-format msgid "'%(value)s' value must be either True or False." -msgstr "’%(value)s‘ 必须为 True 或者 False。" +msgstr "’%(value)s‘ 的值必须为 True 或者 False。" #, python-format msgid "'%(value)s' value must be either True, False, or None." -msgstr "'%(value)s' 值必须是 None, True 或 False 之一。" +msgstr "'%(value)s' 的值必须是 True , False 或 None 之一。" msgid "Boolean (Either True or False)" -msgstr "布尔值(True或False)" +msgstr "布尔值( True或False )" #, python-format msgid "String (up to %(max_length)s)" @@ -497,7 +503,7 @@ msgid "" msgstr "’%(value)s‘ 值的格式正确(YYYY-MM-DD),但是日期无效。" msgid "Date (without time)" -msgstr "日期(无时间)" +msgstr "日期(不带时分)" #, python-format msgid "" @@ -516,7 +522,7 @@ msgstr "" "效。" msgid "Date (with time)" -msgstr "日期(带时间)" +msgstr "日期(带时分)" #, python-format msgid "'%(value)s' value must be a decimal number." @@ -558,7 +564,7 @@ msgid "'%(value)s' value must be either None, True or False." msgstr "’%(value)s‘ 必须为None,True或者False。" msgid "Boolean (Either True, False or None)" -msgstr "布尔值(True、False或None)" +msgstr "布尔值(True、False或None)" msgid "Positive integer" msgstr "正整数" @@ -601,6 +607,9 @@ msgstr "原始二进制数据" msgid "'%(value)s' is not a valid UUID." msgstr "‘%(value)s’不是有效UUID。" +msgid "Universally unique identifier" +msgstr "通用唯一识别码" + msgid "File" msgstr "文件" @@ -1035,8 +1044,8 @@ msgstr "该值不是合法的IPv6地址。" #, python-format msgctxt "String to return when truncating text" -msgid "%(truncated_text)s..." -msgstr "%(truncated_text)s..." +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s" msgid "or" msgstr "或" @@ -1090,16 +1099,17 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" -"您看到此消息是由于HTTPS站点需要浏览器发送 ‘Referer HTTP头‘,但是目前没有被发" -"送。出于安全考虑,浏览器必须发送该HTTP头,以确保您的浏览器没有被第三方劫持。" +"您看到此消息是由于HTTPS站点需要您的浏览器发送的 'Referer header'信息,但是该" +"信息并未被发送。该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)启用发送该HTTP头。" +"如果您已经设置您的浏览器禁用 'Referer' 头部信息,请重新启用它们,至少要针对这" +"个站点,或者针对全部HTTPS连接,或者针对 'same-origin' 请求来启用。" msgid "" "If you are using the tag or " @@ -1125,17 +1135,17 @@ 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 "" -"如果您已经设置浏览器禁用cookies,请重新启用,至少针对这个站点,全部HTTPS请" -"求,或者同源请求(same-origin)启用cookies。" +"如果您已经设置您的浏览器禁用cookies,请重新启用它们,至少要针对这个站点,或者" +"针对 'same-origin' 请求来启用。" msgid "More information is available with DEBUG=True." -msgstr "更多信息请设置选项DEBUG=True。" +msgstr "更多可用信息请设置选项DEBUG=True。" msgid "No year specified" msgstr "没有指定年" msgid "Date out of range" -msgstr "日期不在访问中。" +msgstr "日期超出范围。" msgid "No month specified" msgstr "没有指定月" @@ -1148,7 +1158,7 @@ msgstr "没有指定周" #, python-format msgid "No %(verbose_name_plural)s available" -msgstr "%(verbose_name_plural)s 不存在" +msgstr "%(verbose_name_plural)s 可用" #, python-format msgid "" diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py index 3f8abdd47646c..aa549943cb716 100644 --- a/django/contrib/admin/checks.py +++ b/django/contrib/admin/checks.py @@ -18,6 +18,7 @@ from django.template.backends.django import DjangoTemplates from django.utils.deprecation import RemovedInDjango30Warning from django.utils.inspect import get_func_args +from django.utils.module_loading import import_string def _issubclass(cls, classinfo): @@ -31,6 +32,23 @@ def _issubclass(cls, classinfo): return False +def _contains_subclass(class_path, candidate_paths): + """ + Return whether or not a dotted class path (or a subclass of that class) is + found in a list of candidate paths. + """ + cls = import_string(class_path) + for path in candidate_paths: + try: + candidate_cls = import_string(path) + except ImportError: + # ImportErrors are raised elsewhere. + continue + if _issubclass(candidate_cls, cls): + return True + return False + + def check_admin_app(app_configs, **kwargs): from django.contrib.admin.sites import all_sites errors = [] @@ -50,7 +68,6 @@ def check_dependencies(**kwargs): ('django.contrib.contenttypes', 401), ('django.contrib.auth', 405), ('django.contrib.messages', 406), - ('django.contrib.sessions', 407), ) for app_name, error_code in app_dependencies: if not apps.is_installed(app_name): @@ -75,8 +92,7 @@ def check_dependencies(**kwargs): else: if ('django.contrib.auth.context_processors.auth' not in django_templates_instance.context_processors and - 'django.contrib.auth.backends.ModelBackend' - in settings.AUTHENTICATION_BACKENDS): + _contains_subclass('django.contrib.auth.backends.ModelBackend', settings.AUTHENTICATION_BACKENDS)): errors.append(checks.Error( "'django.contrib.auth.context_processors.auth' must be " "enabled in DjangoTemplates (TEMPLATES) if using the default " @@ -91,20 +107,25 @@ def check_dependencies(**kwargs): "the admin application.", id='admin.E404', )) - if ('django.contrib.auth.middleware.AuthenticationMiddleware' - not in settings.MIDDLEWARE): + + if not _contains_subclass('django.contrib.auth.middleware.AuthenticationMiddleware', settings.MIDDLEWARE): errors.append(checks.Error( "'django.contrib.auth.middleware.AuthenticationMiddleware' must " "be in MIDDLEWARE in order to use the admin application.", id='admin.E408', )) - if ('django.contrib.messages.middleware.MessageMiddleware' - not in settings.MIDDLEWARE): + if not _contains_subclass('django.contrib.messages.middleware.MessageMiddleware', settings.MIDDLEWARE): errors.append(checks.Error( "'django.contrib.messages.middleware.MessageMiddleware' must " "be in MIDDLEWARE in order to use the admin application.", id='admin.E409', )) + if not _contains_subclass('django.contrib.sessions.middleware.SessionMiddleware', settings.MIDDLEWARE): + errors.append(checks.Error( + "'django.contrib.sessions.middleware.SessionMiddleware' must " + "be in MIDDLEWARE in order to use the admin application.", + id='admin.E410', + )) return errors diff --git a/django/contrib/admin/locale/af/LC_MESSAGES/django.mo b/django/contrib/admin/locale/af/LC_MESSAGES/django.mo index df4a9d0496e26..0e5afe06b21e9 100644 Binary files a/django/contrib/admin/locale/af/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/af/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/af/LC_MESSAGES/django.po b/django/contrib/admin/locale/af/LC_MESSAGES/django.po index 99761973bcb43..1843123da5d95 100644 --- a/django/contrib/admin/locale/af/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/af/LC_MESSAGES/django.po @@ -2,14 +2,17 @@ # # Translators: # Christopher Penkin, 2012 +# Christopher Penkin, 2012 +# F Wolff , 2019 +# Pi Delport , 2012 # Pi Delport , 2012 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-09-19 16:40+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-03 14:32+0000\n" +"Last-Translator: F Wolff \n" "Language-Team: Afrikaans (http://www.transifex.com/django/django/language/" "af/)\n" "MIME-Version: 1.0\n" @@ -27,23 +30,23 @@ msgid "Cannot delete %(name)s" msgstr "Kan %(name)s nie skrap nie" msgid "Are you sure?" -msgstr "Is jy seker?" +msgstr "Is u seker?" #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "Skrap gekose %(verbose_name_plural)s" msgid "Administration" -msgstr "" +msgstr "Administrasie" msgid "All" -msgstr "Alles" +msgstr "Almal" msgid "Yes" msgstr "Ja" msgid "No" -msgstr "Geen" +msgstr "Nee" msgid "Unknown" msgstr "Onbekend" @@ -64,150 +67,171 @@ msgid "This year" msgstr "Hierdie jaar" msgid "No date" -msgstr "" +msgstr "Geen datum" msgid "Has date" -msgstr "" +msgstr "Het datum" #, python-format msgid "" "Please enter the correct %(username)s and password for a staff account. Note " "that both fields may be case-sensitive." msgstr "" +"Gee die korrekte %(username)s en wagwoord vir ’n personeelrekening. Let op " +"dat altwee velde dalk hooflettersensitief is." msgid "Action:" msgstr "Aksie:" #, python-format msgid "Add another %(verbose_name)s" -msgstr "Voeg nog 'n %(verbose_name)s by" +msgstr "Voeg nog ’n %(verbose_name)s by" msgid "Remove" msgstr "Verwyder" +msgid "Addition" +msgstr "Byvoeging" + +msgid "Change" +msgstr "" + +msgid "Deletion" +msgstr "Verwydering" + msgid "action time" -msgstr "aksie tyd" +msgstr "aksietyd" msgid "user" -msgstr "" +msgstr "gebruiker" msgid "content type" -msgstr "" +msgstr "inhoudtipe" msgid "object id" -msgstr "objek id" +msgstr "objek-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 "objek repr" +msgstr "objek-repr" msgid "action flag" -msgstr "aksie vlag" +msgstr "aksievlag" msgid "change message" -msgstr "verandering boodskap" +msgstr "veranderingboodskap" msgid "log entry" -msgstr "" +msgstr "log-inskrywing" msgid "log entries" -msgstr "" +msgstr "log-inskrywingings" #, python-format msgid "Added \"%(object)s\"." -msgstr "Het \"%(object)s\" bygevoeg." +msgstr "Het “%(object)s” bygevoeg." #, python-format msgid "Changed \"%(object)s\" - %(changes)s" -msgstr "Het \"%(object)s\" verander - %(changes)s" +msgstr "Het “%(object)s” verander — %(changes)s" #, python-format msgid "Deleted \"%(object)s.\"" -msgstr "Het \"%(object)s\" geskrap." +msgstr "Het “%(object)s” verwyder." msgid "LogEntry Object" -msgstr "" +msgstr "LogEntry-objek" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "Het {name} “{object}” bygevoeg." msgid "Added." -msgstr "" +msgstr "Bygevoeg." msgid "and" msgstr "en" #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." -msgstr "" +msgstr "Het {fields} vir {name} “{object}” gewysig." #, python-brace-format msgid "Changed {fields}." -msgstr "" +msgstr "Het {fields} verander." #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "" +msgstr "Het {name} “{object}” geskrap." msgid "No fields changed." -msgstr "Geen velde verander nie." +msgstr "Geen velde het verander nie." msgid "None" -msgstr "None" +msgstr "Geen" msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" +msgstr "Hou “Ctrl” in (of “⌘” op ’n Mac) om meer as een te kies." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Die {name} “{obj}” is suksesvol bygevoeg." + +msgid "You may edit it again below." +msgstr "Dit kan weer hieronder gewysig word." #, python-brace-format msgid "" "The {name} \"{obj}\" was added successfully. You may add another {name} " "below." msgstr "" +"Die {name} “{obj}” is suksesvol bygevoeg. Nog ’n {name} kan onder bygevoeg " +"word." #, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." +msgid "" +"The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" +"Die {name} “{obj}” is suksesvol gewysig. Dit kan weer hieronder gewysig word." #, python-brace-format msgid "" -"The {name} \"{obj}\" was changed successfully. You may edit it again below." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" +"Die {name} “{obj}” is suksesvol bygevoeg. Dit kan weer hieronder gewysig " +"word." #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " "below." msgstr "" +"Die {name} “{obj}” is suksesvol gewysig. Nog ’n {name} kan onder bygevoeg " +"word." #, python-brace-format msgid "The {name} \"{obj}\" was changed successfully." -msgstr "" +msgstr "Die {name} “{obj}” is suksesvol gewysig." msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" "Items moet gekies word om aksies op hulle uit te voer. Geen items is " -"verander." +"verander nie." msgid "No action selected." msgstr "Geen aksie gekies nie." #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "Die %(name)s \"%(obj)s\" was suksesvol geskrap." +msgstr "Die %(name)s “%(obj)s” is suksesvol geskrap." #, python-format msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?" -msgstr "" +msgstr "Die %(name)s met ID “%(key)s” bestaan nie. Miskien is dit geskrap?" #, python-format msgid "Add %s" @@ -215,16 +239,20 @@ msgstr "Voeg %s by" #, python-format msgid "Change %s" -msgstr "Verander %s" +msgstr "Wysig %s" + +#, python-format +msgid "View %s" +msgstr "Beskou %s" msgid "Database error" -msgstr "Databasis fout" +msgstr "Databasisfout" #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." -msgstr[0] "%(count)s %(name)s was suksesvol verander." -msgstr[1] "%(count)s %(name)s was suksesvol verander." +msgstr[0] "%(count)s %(name)s is suksesvol verander." +msgstr[1] "%(count)s %(name)s is suksesvol verander." #, python-format msgid "%(total_count)s selected" @@ -244,38 +272,40 @@ msgstr "Verander geskiedenis: %s" #. suitable to be an item in a list. #, python-format msgid "%(class_name)s %(instance)s" -msgstr "" +msgstr "%(class_name)s %(instance)s" #, python-format msgid "" "Deleting %(class_name)s %(instance)s would require deleting the following " "protected related objects: %(related_objects)s" msgstr "" +"Om %(class_name)s %(instance)s te skrap sal vereis dat die volgende " +"beskermde verwante objekte geskrap word: %(related_objects)s" msgid "Django site admin" -msgstr "Django werf admin" +msgstr "Django-werfadmin" msgid "Django administration" -msgstr "Django administrasie" +msgstr "Django-administrasie" msgid "Site administration" -msgstr "Werf administrasie" +msgstr "Werfadministrasie" msgid "Log in" -msgstr "Teken in" +msgstr "Meld aan" #, python-format msgid "%(app)s administration" -msgstr "" +msgstr "%(app)s-administrasie" msgid "Page not found" msgstr "Bladsy nie gevind nie" msgid "We're sorry, but the requested page could not be found." -msgstr "Ons is jammer, maar die aangevraagde bladsy kon nie gevind word nie." +msgstr "Jammer, maar die aangevraagde bladsy kon nie gevind word nie." msgid "Home" -msgstr "Tuisblad" +msgstr "Tuis" msgid "Server error" msgstr "Bedienerfout" @@ -290,9 +320,12 @@ msgid "" "There's been an error. It's been reported to the site administrators via " "email and should be fixed shortly. Thanks for your patience." msgstr "" +"’n Fout het voorgekom. Dit is per e-pos gerapporteer aan die " +"werfadministrateurs en behoort binnekort reggestel te word. Dankie vir u " +"geduld." msgid "Run the selected action" -msgstr "Hardloop die gekose aksie" +msgstr "Voer die gekose aksie uit" msgid "Go" msgstr "Gaan" @@ -311,36 +344,36 @@ msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." msgstr "" -"Vul eers 'n gebruikersnaam en wagwoord in. Dan sal jy in staat wees om meer " -"gebruikersopsies te wysig." +"Vul eers ’n gebruikersnaam en wagwoord in. Daarna kan mens meer " +"gebruikersopsies wysig." msgid "Enter a username and password." -msgstr "Vul 'n gebruikersnaam en wagwoord in." +msgstr "Vul ’n gebruikersnaam en wagwoord in." msgid "Change password" msgstr "Verander wagwoord" msgid "Please correct the error below." -msgstr "Korrigeer asseblief die foute hieronder." +msgstr "Maak die onderstaande fout asb. reg." msgid "Please correct the errors below." -msgstr "" +msgstr "Maak die onderstaande foute asb. reg." #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "Vul 'n nuwe wagwoord vir gebruiker %(username)s in." +msgstr "Vul ’n nuwe wagwoord vir gebruiker %(username)s in." msgid "Welcome," msgstr "Welkom," msgid "View site" -msgstr "" +msgstr "Besoek werf" msgid "Documentation" msgstr "Dokumentasie" msgid "Log out" -msgstr "Teken uit" +msgstr "Meld af" #, python-format msgid "Add %(name)s" @@ -353,14 +386,14 @@ msgid "View on site" msgstr "Bekyk op werf" msgid "Filter" -msgstr "Filter" +msgstr "Filtreer" msgid "Remove from sorting" -msgstr "Verwyder van sortering" +msgstr "Verwyder uit sortering" #, python-format msgid "Sorting priority: %(priority_number)s" -msgstr "Sortering prioriteit: %(priority_number)s" +msgstr "Sorteerprioriteit: %(priority_number)s" msgid "Toggle sorting" msgstr "Wissel sortering" @@ -374,29 +407,34 @@ msgid "" "related objects, but your account doesn't have permission to delete the " "following types of objects:" msgstr "" +"Om die %(object_name)s %(escaped_object)s te skrap sou verwante objekte " +"skrap, maar jou rekening het nie toestemming om die volgende tipes objekte " +"te skrap nie:" #, python-format msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " "following protected related objects:" msgstr "" -"Om die %(object_name)s '%(escaped_object)s' te skrap sou vereis dat die " -"volgende beskermde verwante objekte geskrap word:" +"Om die %(object_name)s “%(escaped_object)s” te skrap vereis dat die volgende " +"beskermde verwante objekte geskrap word:" #, python-format msgid "" "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " "All of the following related items will be deleted:" msgstr "" +"Wil u definitief die %(object_name)s “%(escaped_object)s” skrap? Al die " +"volgende verwante items sal geskrap word:" msgid "Objects" -msgstr "" +msgstr "Objekte" msgid "Yes, I'm sure" msgstr "Ja, ek is seker" msgid "No, take me back" -msgstr "" +msgstr "Nee, ek wil teruggaan" msgid "Delete multiple objects" msgstr "Skrap meerdere objekte" @@ -407,7 +445,7 @@ msgid "" "objects, but your account doesn't have permission to delete the following " "types of objects:" msgstr "" -"Om die gekose %(objects_name)s te skrap sou verwante objekte skrap, maar jou " +"Om die gekose %(objects_name)s te skrap sou verwante objekte skrap, maar u " "rekening het nie toestemming om die volgende tipes objekte te skrap nie:" #, python-format @@ -415,7 +453,7 @@ msgid "" "Deleting the selected %(objects_name)s would require deleting the following " "protected related objects:" msgstr "" -"Om die gekose %(objects_name)s te skrap veries dat die volgende beskermde " +"Om die gekose %(objects_name)s te skrap vereis dat die volgende beskermde " "verwante objekte geskrap word:" #, python-format @@ -423,55 +461,60 @@ msgid "" "Are you sure you want to delete the selected %(objects_name)s? All of the " "following objects and their related items will be deleted:" msgstr "" -"Is jy seker jy wil die gekose %(objects_name)s skrap? Al die volgende " -"objekte en hul verwante items sal geskrap word:" +"Wil u definitief die gekose %(objects_name)s skrap? Al die volgende objekte " +"en hul verwante items sal geskrap word:" -msgid "Change" -msgstr "Verander" +msgid "View" +msgstr "Bekyk" msgid "Delete?" msgstr "Skrap?" #, python-format msgid " By %(filter_title)s " -msgstr "Deur %(filter_title)s" +msgstr " Volgens %(filter_title)s " msgid "Summary" -msgstr "" +msgstr "Opsomming" #, python-format msgid "Models in the %(name)s application" -msgstr "" +msgstr "Modelle in die %(name)s-toepassing" msgid "Add" msgstr "Voeg by" -msgid "You don't have permission to edit anything." -msgstr "Jy het nie toestemming om enigiets te wysig nie." +msgid "You don't have permission to view or edit anything." +msgstr "U het nie toestemming om enigiets te sien of te wysig nie." msgid "Recent actions" -msgstr "" +msgstr "Onlangse aksies" msgid "My actions" -msgstr "" +msgstr "My aksies" msgid "None available" msgstr "Niks beskikbaar nie" msgid "Unknown content" -msgstr "Onbekend inhoud" +msgstr "Onbekende inhoud" msgid "" "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 "" +"Iets is verkeerd met die databasisinstallasie. Maak seker dat die gepaste " +"databasistabelle geskep is, en maak seker dat die databasis leesbaar is deur " +"die gepaste gebruiker." #, 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 "" +"U is aangemeld as %(username)s, maar het nie toegang tot hierdie bladsy nie. " +"Wil u met ’n ander rekening aanmeld?" msgid "Forgotten your password or username?" msgstr "Wagwoord of gebruikersnaam vergeet?" @@ -489,29 +532,17 @@ msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"Hierdie item het nie 'n veranderingsgeskiedenis nie. Dit was waarskynlik nie " -"deur middel van hierdie admin werf bygevoeg nie." +"Hierdie item het nie ’n veranderingsgeskiedenis nie. Dit is waarskynlik nie " +"deur middel van hierdie adminwerf bygevoeg nie." msgid "Show all" -msgstr "Wys alle" +msgstr "Wys almal" msgid "Save" msgstr "Stoor" -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" -msgstr "" +msgid "Popup closing…" +msgstr "Opspringer sluit tans…" msgid "Search" msgstr "Soek" @@ -530,48 +561,67 @@ msgid "Save as new" msgstr "Stoor as nuwe" msgid "Save and add another" -msgstr "Stoor en voeg 'n ander by" +msgstr "Stoor en voeg ’n ander by" msgid "Save and continue editing" msgstr "Stoor en wysig verder" +msgid "Save and view" +msgstr "Stoor en bekyk" + +msgid "Close" +msgstr "Sluit" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Wysig gekose %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Voeg nog ’n %(model)s by" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Skrap gekose %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "" +"Dankie vir die kwaliteittyd wat u met die webwerf deurgebring het vandag." msgid "Log in again" -msgstr "Teken weer in" +msgstr "Meld weer aan" msgid "Password change" -msgstr "Wagwoord verandering" +msgstr "Wagwoordverandering" msgid "Your password was changed." -msgstr "Jou wagwoord was verander." +msgstr "Die wagwoord is verander." msgid "" "Please enter your old password, for security's sake, and then enter your new " "password twice so we can verify you typed it in correctly." msgstr "" -"Tik jou ou wagwoord, ter wille van sekuriteit's, en dan 'n nuwe wagwoord " -"twee keer so dat ons kan seker wees dat jy dit korrek ingetik het." +"Tik die ou wagwoord ter wille van sekuriteit, en dan die nuwe wagwoord twee " +"keer so dat ons kan seker wees dat dit korrek ingetik is." msgid "Change my password" msgstr "Verander my wagwoord" msgid "Password reset" -msgstr "Wagwoord herstel" +msgstr "Wagwoordherstel" msgid "Your password has been set. You may go ahead and log in now." -msgstr "Jou wagwoord is gestel. Jy kan nou voort gaan en aanteken." +msgstr "Jou wagwoord is gestel. Jy kan nou voortgaan en aanmeld." msgid "Password reset confirmation" -msgstr "Wagwoord herstel bevestiging" +msgstr "Bevestig wagwoordherstel" msgid "" "Please enter your new password twice so we can verify you typed it in " "correctly." msgstr "" -"Tik jou nuwe wagwoord twee keer in so ons kan seker wees dat jy dit korrek " -"ingetik het." +"Tik die nuwe wagwoord twee keer in so ons kan seker wees dat dit korrek " +"ingetik is." msgid "New password:" msgstr "Nuwe wagwoord:" @@ -583,25 +633,34 @@ msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" +"Die skakel vir wagwoordherstel was ongeldig, dalk omdat dit reeds gebruik " +"is. Vra gerus ’n nuwe een aan." msgid "" "We've emailed you instructions for setting your password, if an account " "exists with the email you entered. You should receive them shortly." msgstr "" +"Instruksies vir die instel van u wagwoord is per e-pos gestuur as ’n " +"rekening bestaan met die e-posadres wat u gegee het. Die e-pos behoort " +"binnekort daar te wees." msgid "" "If you don't receive an email, please make sure you've entered the address " "you registered with, and check your spam folder." msgstr "" +"Indien u nie ’n e-pos ontvang nie, maak seker dat die getikte adres die een " +"is waarmee u geregistreer het, en kontroleer ook u gemorspos." #, python-format msgid "" "You're receiving this email because you requested a password reset for your " "user account at %(site_name)s." msgstr "" +"U ontvang hierdie e-pos omdat u ’n wagwoordherstel vir u rekening by " +"%(site_name)s aangevra het." msgid "Please go to the following page and choose a new password:" -msgstr "Gaan asseblief na die volgende bladsy en kies 'n nuwe wagwoord:" +msgstr "Gaan asseblief na die volgende bladsy en kies ’n nuwe wagwoord:" msgid "Your username, in case you've forgotten:" msgstr "Jou gebruikersnaam, in geval jy vergeet het:" @@ -617,9 +676,11 @@ msgid "" "Forgotten your password? Enter your email address below, and we'll email " "instructions for setting a new one." msgstr "" +"Wagwoord vergeet? Tik u e-posadres hieronder in, en ons pos instruksies vir " +"die instel van ’n nuwe een." msgid "Email address:" -msgstr "" +msgstr "E-posadres:" msgid "Reset my password" msgstr "Herstel my wagwoord" @@ -635,6 +696,10 @@ msgstr "Kies %s" msgid "Select %s to change" msgstr "Kies %s om te verander" +#, python-format +msgid "Select %s to view" +msgstr "Kies %s om te bekyk" + msgid "Date:" msgstr "Datum:" @@ -645,7 +710,7 @@ msgid "Lookup" msgstr "Soek" msgid "Currently:" -msgstr "" +msgstr "Tans:" msgid "Change:" -msgstr "" +msgstr "Wysig:" diff --git a/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo index a810a65bbf59d..896cad2d697ea 100644 Binary files a/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po index c86706ed973bb..816ef6e7f0a8f 100644 --- a/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po @@ -1,14 +1,16 @@ # This file is distributed under the same license as the Django package. # # Translators: +# F Wolff , 2019 +# Pi Delport , 2013 # Pi Delport , 2013 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: Jannis Leidel \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2019-01-04 18:43+0000\n" +"Last-Translator: F Wolff \n" "Language-Team: Afrikaans (http://www.transifex.com/django/django/language/" "af/)\n" "MIME-Version: 1.0\n" @@ -26,20 +28,22 @@ 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 "" +"Hierdie is die lys beskikbare %s. Kies gerus deur hulle in die boksie " +"hieronder te merk en dan die “Kies”-knoppie tussen die boksies te klik." #, javascript-format msgid "Type into this box to filter down the list of available %s." -msgstr "" +msgstr "Tik in hierdie blokkie om die lys beskikbare %s te filtreer." msgid "Filter" -msgstr "Filter" +msgstr "Filteer" msgid "Choose all" -msgstr "Kies alle" +msgstr "Kies almal" #, javascript-format msgid "Click to choose all %s at once." -msgstr "" +msgstr "Klik om al die %s gelyktydig te kies." msgid "Choose" msgstr "Kies" @@ -56,68 +60,78 @@ 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 "" +"Hierdie is die lys gekose %s. Verwyder gerus deur hulle in die boksie " +"hieronder te merk en dan die “Verwyder”-knoppie tussen die boksies te klik." msgid "Remove all" -msgstr "Verwyder alle" +msgstr "Verwyder almal" #, javascript-format msgid "Click to remove all chosen %s at once." -msgstr "" +msgstr "Klik om al die %s gelyktydig te verwyder." msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(sel)s van %(cnt)s gekies" +msgstr[1] "%(sel)s van %(cnt)s gekies" msgid "" "You have unsaved changes on individual editable fields. If you run an " "action, your unsaved changes will be lost." msgstr "" +"Daar is ongestoorde veranderinge op individuele redigeerbare velde. Deur nou " +"’n aksie uit te voer, sal ongestoorde veranderinge verlore gaan." 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 "" +"U het ’n aksie gekies, maar nog nie die veranderinge aan individuele velde " +"gestoor nie. Klik asb. OK om te stoor. Dit sal nodig wees om weer die aksie " +"uit te voer." 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 "" - -#, 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] "" -msgstr[1] "" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "" -msgstr[1] "" +"U het ’n aksie gekies en het nie enige veranderinge aan individuele velde " +"aangebring nie. U soek waarskynlik na die Gaan-knoppie eerder as die Stoor-" +"knoppie." msgid "Now" msgstr "Nou" -msgid "Choose a Time" -msgstr "" - -msgid "Choose a time" -msgstr "Kies 'n tyd" - msgid "Midnight" msgstr "Middernag" msgid "6 a.m." -msgstr "6 v.m." +msgstr "06:00" msgid "Noon" msgstr "Middag" msgid "6 p.m." -msgstr "" +msgstr "18:00" + +#, 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] "Let wel: U is %s uur voor die bedienertyd." +msgstr[1] "Let wel: U is %s ure voor die bedienertyd." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Let wel: U is %s uur agter die bedienertyd." +msgstr[1] "Let wel: U is %s ure agter die bedienertyd." + +msgid "Choose a Time" +msgstr "Kies ’n tyd" + +msgid "Choose a time" +msgstr "Kies ‘n tyd" msgid "Cancel" msgstr "Kanselleer" @@ -126,7 +140,7 @@ msgid "Today" msgstr "Vandag" msgid "Choose a Date" -msgstr "" +msgstr "Kies ’n datum" msgid "Yesterday" msgstr "Gister" @@ -135,68 +149,68 @@ msgid "Tomorrow" msgstr "Môre" msgid "January" -msgstr "" +msgstr "Januarie" msgid "February" -msgstr "" +msgstr "Februarie" msgid "March" -msgstr "" +msgstr "Maart" msgid "April" -msgstr "" +msgstr "April" msgid "May" -msgstr "" +msgstr "Mei" msgid "June" -msgstr "" +msgstr "Junie" msgid "July" -msgstr "" +msgstr "Julie" msgid "August" -msgstr "" +msgstr "Augustus" msgid "September" -msgstr "" +msgstr "September" msgid "October" -msgstr "" +msgstr "Oktober" msgid "November" -msgstr "" +msgstr "November" msgid "December" -msgstr "" +msgstr "Desember" msgctxt "one letter Sunday" msgid "S" -msgstr "" +msgstr "S" msgctxt "one letter Monday" msgid "M" -msgstr "" +msgstr "M" msgctxt "one letter Tuesday" msgid "T" -msgstr "" +msgstr "D" msgctxt "one letter Wednesday" msgid "W" -msgstr "" +msgstr "W" msgctxt "one letter Thursday" msgid "T" -msgstr "" +msgstr "D" msgctxt "one letter Friday" msgid "F" -msgstr "" +msgstr "V" msgctxt "one letter Saturday" msgid "S" -msgstr "" +msgstr "S" msgid "Show" msgstr "Wys" diff --git a/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo index 44a26ab10f7b8..51148aa86e7a0 100644 Binary files a/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ar/LC_MESSAGES/django.po b/django/contrib/admin/locale/ar/LC_MESSAGES/django.po index 2984dd43c754b..80f4ce3947a57 100644 --- a/django/contrib/admin/locale/ar/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ar/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Bashar Al-Abdulhadi, 2015-2016 +# Bashar Al-Abdulhadi, 2015-2016,2018 # Bashar Al-Abdulhadi, 2014 # Eyad Toma , 2013 # Jannis Leidel , 2011 @@ -9,9 +9,9 @@ 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-09-23 18:54+0000\n" -"Last-Translator: Jannis Leidel \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" "Language-Team: Arabic (http://www.transifex.com/django/django/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -89,6 +89,15 @@ msgstr "إضافة سجل %(verbose_name)s آخر" msgid "Remove" msgstr "أزل" +msgid "Addition" +msgstr "إضافة" + +msgid "Change" +msgstr "عدّل" + +msgid "Deletion" +msgstr "حذف" + msgid "action time" msgstr "وقت الإجراء" @@ -102,7 +111,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 "ممثل العنصر" @@ -168,8 +177,10 @@ 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 @@ -179,12 +190,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -221,6 +233,10 @@ msgstr "أضف %s" msgid "Change %s" msgstr "عدّل %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "خطـأ في قاعدة البيانات" @@ -337,7 +353,7 @@ msgid "Change password" msgstr "غيّر كلمة المرور" msgid "Please correct the error below." -msgstr "الرجاء تصحيح الخطأ أدناه." +msgstr "" msgid "Please correct the errors below." msgstr "الرجاء تصحيح الأخطاء أدناه." @@ -446,8 +462,8 @@ msgstr "" "أأنت متأكد أنك تريد حذف عناصر %(objects_name)s المحددة؟ جميع العناصر التالية " "والعناصر المرتبطة بها سيتم حذفها:" -msgid "Change" -msgstr "عدّل" +msgid "View" +msgstr "" msgid "Delete?" msgstr "احذفه؟" @@ -466,8 +482,8 @@ 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 "آخر الإجراءات" @@ -522,20 +538,8 @@ msgstr "أظهر الكل" msgid "Save" msgstr "احفظ" -msgid "Popup closing..." -msgstr "جاري الإغلاق..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "تغيير %(model)s المختارة" - -#, python-format -msgid "Add another %(model)s" -msgstr "أضف %(model)s آخر" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "حذف %(model)s المختارة" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "ابحث" @@ -563,6 +567,24 @@ msgstr "احفظ وأضف آخر" msgid "Save and continue editing" msgstr "احفظ واستمر بالتعديل" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + +#, python-format +msgid "Change selected %(model)s" +msgstr "تغيير %(model)s المختارة" + +#, python-format +msgid "Add another %(model)s" +msgstr "أضف %(model)s آخر" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "حذف %(model)s المختارة" + msgid "Thanks for spending some quality time with the Web site today." msgstr "شكراً لك على قضائك بعض الوقت مع الموقع اليوم." @@ -671,6 +693,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/br/LC_MESSAGES/django.mo b/django/contrib/admin/locale/br/LC_MESSAGES/django.mo index 5f4a95aa9d077..296f113a522fd 100644 Binary files a/django/contrib/admin/locale/br/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/br/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/br/LC_MESSAGES/django.po b/django/contrib/admin/locale/br/LC_MESSAGES/django.po index 3568b8dd67ba2..cbdc3593aa496 100644 --- a/django/contrib/admin/locale/br/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/br/LC_MESSAGES/django.po @@ -2,19 +2,24 @@ # # Translators: # Fulup , 2012 +# Irriep Nala Novram , 2018 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-09-19 16:41+0000\n" -"Last-Translator: Jannis Leidel \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" "Language-Team: Breton (http://www.transifex.com/django/django/language/br/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: br\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !" +"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n" +"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > " +"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 " +"&& n % 1000000 == 0) ? 3 : 4);\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -25,14 +30,14 @@ msgid "Cannot delete %(name)s" msgstr "" msgid "Are you sure?" -msgstr "Ha sur oc'h ?" +msgstr "Ha sur oc'h?" #, python-format msgid "Delete selected %(verbose_name_plural)s" -msgstr "" +msgstr "Dilemel %(verbose_name_plural)s diuzet" msgid "Administration" -msgstr "" +msgstr "Melestradurezh" msgid "All" msgstr "An holl" @@ -62,10 +67,10 @@ msgid "This year" msgstr "Ar bloaz-mañ" msgid "No date" -msgstr "" +msgstr "Deiziad ebet" msgid "Has date" -msgstr "" +msgstr "D'an deiziad" #, python-format msgid "" @@ -74,37 +79,46 @@ msgid "" msgstr "" msgid "Action:" -msgstr "Ober :" +msgstr "Ober:" #, python-format msgid "Add another %(verbose_name)s" -msgstr "" +msgstr "Ouzhpennañ %(verbose_name)s all" msgid "Remove" msgstr "Lemel kuit" +msgid "Addition" +msgstr "Sammañ" + +msgid "Change" +msgstr "Cheñch" + +msgid "Deletion" +msgstr "Diverkadur" + msgid "action time" msgstr "eur an ober" msgid "user" -msgstr "" +msgstr "implijer" msgid "content type" -msgstr "" +msgstr "doare endalc'had" msgid "object id" -msgstr "" +msgstr "id an objed" #. 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 "" msgid "action flag" -msgstr "" +msgstr "ober banniel" msgid "change message" -msgstr "Kemennadenn gemmañ" +msgstr "Kemennadenn cheñchamant" msgid "log entry" msgstr "" @@ -114,43 +128,43 @@ msgstr "" #, python-format msgid "Added \"%(object)s\"." -msgstr "" +msgstr "Ouzhpennet \"%(object)s\"." #, python-format msgid "Changed \"%(object)s\" - %(changes)s" -msgstr "" +msgstr "Cheñchet \"%(object)s\" - %(changes)s" #, python-format msgid "Deleted \"%(object)s.\"" -msgstr "" +msgstr "Dilamet \"%(object)s.\"" msgid "LogEntry Object" -msgstr "Traezenn eus ar marilh" +msgstr "" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "Ouzhpennet {name} \"{object}\"." msgid "Added." -msgstr "" +msgstr "Ouzhpennet." msgid "and" msgstr "ha" #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." -msgstr "" +msgstr "Cheñchet {fields} evit {name} \"{object}\"." #, python-brace-format msgid "Changed {fields}." -msgstr "" +msgstr "Cheñchet {fields}." #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "" +msgstr "Dilamet {name} \"{object}\"." msgid "No fields changed." -msgstr "N'eus bet kemmet maezienn ebet." +msgstr "Maezienn ebet cheñchet." msgid "None" msgstr "Hini ebet" @@ -160,10 +174,12 @@ msgid "" 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 "Rankout a rit ec'h aozañ adarre dindan." + #, python-brace-format msgid "" "The {name} \"{obj}\" was added successfully. You may add another {name} " @@ -171,12 +187,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -195,7 +212,7 @@ msgid "" msgstr "" msgid "No action selected." -msgstr "" +msgstr "Ober ebet diuzet." #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." @@ -211,36 +228,46 @@ msgstr "Ouzhpennañ %s" #, python-format msgid "Change %s" -msgstr "Kemmañ %s" +msgstr "Cheñch %s" + +#, python-format +msgid "View %s" +msgstr "Gwelet %s" msgid "Database error" -msgstr "Fazi en diaz roadennoù" +msgstr "Fazi diaz-roadennoù" #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)s %(name)s a zo bet cheñchet mat." +msgstr[1] "%(count)s %(name)s a zo bet cheñchet mat. " +msgstr[2] "%(count)s %(name)s a zo bet cheñchet mat. " +msgstr[3] "%(count)s %(name)s a zo bet cheñchet mat." +msgstr[4] "%(count)s %(name)s a zo bet cheñchet mat." #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(total_count)s diuzet" +msgstr[1] "%(total_count)s diuzet" +msgstr[2] "%(total_count)s diuzet" +msgstr[3] "%(total_count)s diuzet" +msgstr[4] "Pep %(total_count)s diuzet" #, python-format msgid "0 of %(cnt)s selected" -msgstr "" +msgstr "0 diwar %(cnt)s diuzet" #, python-format msgid "Change history: %s" -msgstr "Istor ar c'hemmoù : %s" +msgstr "Istor ar cheñchadurioù: %s" #. Translators: Model verbose name and instance representation, #. suitable to be an item in a list. #, python-format msgid "%(class_name)s %(instance)s" -msgstr "" +msgstr "%(class_name)s %(instance)s" #, python-format msgid "" @@ -412,8 +439,8 @@ msgid "" "following objects and their related items will be deleted:" msgstr "" -msgid "Change" -msgstr "Kemmañ" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Diverkañ ?" @@ -432,7 +459,7 @@ msgstr "" msgid "Add" msgstr "Ouzhpennañ" -msgid "You don't have permission to edit anything." +msgid "You don't have permission to view or edit anything." msgstr "" msgid "Recent actions" @@ -482,19 +509,7 @@ msgstr "Diskouez pep tra" msgid "Save" msgstr "Enrollañ" -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" @@ -505,6 +520,9 @@ msgid "%(counter)s result" msgid_plural "%(counter)s results" msgstr[0] "" msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" #, python-format msgid "%(full_result_count)s total" @@ -519,6 +537,24 @@ msgstr "Enrollañ hag ouzhpennañ unan all" msgid "Save and continue editing" msgstr "Enrollañ ha derc'hel da gemmañ" +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 "" @@ -615,6 +651,10 @@ msgstr "Diuzañ %s" msgid "Select %s to change" msgstr "" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Deiziad :" diff --git a/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo index 8b825cc8d03dc..58664d0728fe6 100644 Binary files a/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po index c6079121ef6c6..3f8195616816f 100644 --- a/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Breton (http://www.transifex.com/django/django/language/br/)\n" @@ -14,7 +14,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: br\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !" +"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n" +"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > " +"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 " +"&& n % 1000000 == 0) ? 3 : 4);\n" #, javascript-format msgid "Available %s" @@ -67,6 +71,9 @@ msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "" msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -85,20 +92,38 @@ msgid "" "button." msgstr "" +msgid "Now" +msgstr "Bremañ" + +msgid "Midnight" +msgstr "Hanternoz" + +msgid "6 a.m." +msgstr "6e00" + +msgid "Noon" +msgstr "Kreisteiz" + +msgid "6 p.m." +msgstr "" + #, 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] "" msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" #, javascript-format msgid "Note: You are %s hour behind server time." msgid_plural "Note: You are %s hours behind server time." msgstr[0] "" msgstr[1] "" - -msgid "Now" -msgstr "Bremañ" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" msgid "Choose a Time" msgstr "" @@ -106,18 +131,6 @@ msgstr "" msgid "Choose a time" msgstr "Dibab un eur" -msgid "Midnight" -msgstr "Hanternoz" - -msgid "6 a.m." -msgstr "6e00" - -msgid "Noon" -msgstr "Kreisteiz" - -msgid "6 p.m." -msgstr "" - msgid "Cancel" msgstr "Nullañ" diff --git a/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo index 27051b485e551..aeb5008a26431 100644 Binary files a/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ca/LC_MESSAGES/django.po b/django/contrib/admin/locale/ca/LC_MESSAGES/django.po index 56bf426199e42..4c33f36be4434 100644 --- a/django/contrib/admin/locale/ca/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ca/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # Carles Barrobés , 2011-2012,2014 # duub qnnp, 2015 # GerardoGa , 2018 +# Gil Obradors Via , 2019 # Jannis Leidel , 2011 # Roger Pons , 2015 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-22 07:45+0000\n" -"Last-Translator: GerardoGa \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-28 20:40+0000\n" +"Last-Translator: Gil Obradors Via \n" "Language-Team: Catalan (http://www.transifex.com/django/django/language/" "ca/)\n" "MIME-Version: 1.0\n" @@ -92,13 +93,13 @@ msgid "Remove" msgstr "Eliminar" msgid "Addition" -msgstr "" +msgstr "Afegeix" msgid "Change" msgstr "Modificar" msgid "Deletion" -msgstr "" +msgstr "Supressió" msgid "action time" msgstr "moment de l'acció" @@ -113,7 +114,7 @@ msgid "object id" msgstr "id de l'objecte" #. 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 "'repr' de l'objecte" @@ -181,7 +182,7 @@ msgid "The {name} \"{obj}\" was added successfully." msgstr "El {name} \"{obj}\" fou afegit amb èxit." msgid "You may edit it again below." -msgstr "" +msgstr "Hauria d'editar de nou a sota." #, python-brace-format msgid "" @@ -225,7 +226,7 @@ msgstr "" "seleccionat cap element." msgid "No action selected." -msgstr "no heu seleccionat cap acció" +msgstr "No heu seleccionat cap acció." #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." @@ -245,7 +246,7 @@ msgstr "Modificar %s" #, python-format msgid "View %s" -msgstr "" +msgstr "Visualitza %s" msgid "Database error" msgstr "Error de base de dades" @@ -468,7 +469,7 @@ msgstr "" "S'esborraran tots els objects següents i els seus elements relacionats:" msgid "View" -msgstr "" +msgstr "Visualitza" msgid "Delete?" msgstr "Eliminar?" @@ -488,7 +489,7 @@ msgid "Add" msgstr "Afegir" msgid "You don't have permission to view or edit anything." -msgstr "" +msgstr "No teniu permisos per veure o editar" msgid "Recent actions" msgstr "Accions recents" @@ -544,24 +545,8 @@ msgstr "Mostrar tots" msgid "Save" msgstr "Desar" -msgid "Popup closing..." -msgstr "Tancant el contingut emergent..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Canviea el %(model)s seleccionat" - -#, python-format -msgid "View selected %(model)s" -msgstr "" - -#, python-format -msgid "Add another %(model)s" -msgstr "Afegeix un altre %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Esborra el %(model)s seleccionat" +msgid "Popup closing…" +msgstr "Tancant finestra emergent..." msgid "Search" msgstr "Cerca" @@ -586,10 +571,22 @@ msgid "Save and continue editing" msgstr "Desar i continuar editant" msgid "Save and view" -msgstr "" +msgstr "Desa i visualitza" msgid "Close" -msgstr "" +msgstr "Tanca" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Canviea el %(model)s seleccionat" + +#, python-format +msgid "Add another %(model)s" +msgstr "Afegeix un altre %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Esborra el %(model)s seleccionat" msgid "Thanks for spending some quality time with the Web site today." msgstr "Gràcies per passar una estona de qualitat al web durant el dia d'avui." @@ -705,7 +702,7 @@ msgstr "Seleccioneu %s per modificar" #, python-format msgid "Select %s to view" -msgstr "" +msgstr "Selecciona %sper a veure" msgid "Date:" msgstr "Data:" diff --git a/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo b/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo index 662e8638f0d5b..b4fb950669110 100644 Binary files a/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/cs/LC_MESSAGES/django.po b/django/contrib/admin/locale/cs/LC_MESSAGES/django.po index 260fe77323dd7..45418edebb6c0 100644 --- a/django/contrib/admin/locale/cs/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/cs/LC_MESSAGES/django.po @@ -5,14 +5,14 @@ # Jirka Vejrazka , 2011 # Tomáš Ehrlich , 2015 # Vláďa Macek , 2013-2014 -# Vláďa Macek , 2015-2018 +# Vláďa Macek , 2015-2019 # yedpodtrzitko , 2016 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-07-15 18:01+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 07:56+0000\n" "Last-Translator: Vláďa Macek \n" "Language-Team: Czech (http://www.transifex.com/django/django/language/cs/)\n" "MIME-Version: 1.0\n" @@ -113,7 +113,7 @@ msgid "object id" msgstr "id položky" #. 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 "reprez. položky" @@ -549,25 +549,9 @@ msgstr "Zobrazit vše" msgid "Save" msgstr "Uložit" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Vyskakovací okno se zavírá..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Změnit vybrané položky typu %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Zobrazit vybranou položku typu %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Přidat další %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Odstranit vybrané položky typu %(model)s" - msgid "Search" msgstr "Hledat" @@ -598,6 +582,18 @@ msgstr "Uložit a zobrazit" msgid "Close" msgstr "Zavřít" +#, python-format +msgid "Change selected %(model)s" +msgstr "Změnit vybrané položky typu %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Přidat další %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Odstranit vybrané položky typu %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Děkujeme za čas strávený s tímto webem." diff --git a/django/contrib/admin/locale/da/LC_MESSAGES/django.mo b/django/contrib/admin/locale/da/LC_MESSAGES/django.mo index 76fe1a6af2348..48aae7b1aac79 100644 Binary files a/django/contrib/admin/locale/da/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/da/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/da/LC_MESSAGES/django.po b/django/contrib/admin/locale/da/LC_MESSAGES/django.po index a4cbcdf01fb95..2f9fbfc4b9513 100644 --- a/django/contrib/admin/locale/da/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/da/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Christian Joergensen , 2012 # Dimitris Glezos , 2012 -# Erik Wognsen , 2013,2015-2018 +# Erik Wognsen , 2013,2015-2019 # Finn Gruwier Larsen, 2011 # Jannis Leidel , 2011 # valberg , 2014-2015 @@ -11,8 +11,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-28 21:25+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 07:26+0000\n" "Last-Translator: Erik Wognsen \n" "Language-Team: Danish (http://www.transifex.com/django/django/language/da/)\n" "MIME-Version: 1.0\n" @@ -112,7 +112,7 @@ msgid "object id" msgstr "objekt-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 "objekt repr" @@ -538,24 +538,8 @@ msgstr "Vis alle" msgid "Save" msgstr "Gem" -msgid "Popup closing..." -msgstr "Popup lukker..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Redigér valgte %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Vis valgte %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Tilføj endnu en %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Slet valgte %(model)s" +msgid "Popup closing…" +msgstr "Popup lukker…" msgid "Search" msgstr "Søg" @@ -585,6 +569,18 @@ msgstr "Gem og vis" msgid "Close" msgstr "Luk" +#, python-format +msgid "Change selected %(model)s" +msgstr "Redigér valgte %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Tilføj endnu en %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Slet valgte %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Tak for den kvalitetstid du brugte på websitet i dag." diff --git a/django/contrib/admin/locale/de/LC_MESSAGES/django.mo b/django/contrib/admin/locale/de/LC_MESSAGES/django.mo index 48ed08e7d38df..21391ce9e6033 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 21fbf8044708c..afbd3e3aed4a2 100644 --- a/django/contrib/admin/locale/de/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/de/LC_MESSAGES/django.po @@ -4,17 +4,17 @@ # André Hagenbruch, 2012 # Florian Apolloner , 2011 # Dimitris Glezos , 2012 -# Jannis, 2013 -# Jannis Leidel , 2013-2017 -# Jannis, 2016 -# Markus Holtermann , 2013,2015 +# Jannis Vajen, 2013 +# Jannis Leidel , 2013-2018 +# Jannis Vajen, 2016 +# Markus Holtermann , 2013,2015 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-09-23 18:54+0000\n" -"Last-Translator: Jannis Leidel \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" "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" @@ -91,6 +91,15 @@ msgstr "%(verbose_name)s hinzufügen" msgid "Remove" msgstr "Entfernen" +msgid "Addition" +msgstr "Hinzugefügt" + +msgid "Change" +msgstr "Ändern" + +msgid "Deletion" +msgstr "Gelöscht" + msgid "action time" msgstr "Zeitpunkt der Aktion" @@ -104,7 +113,7 @@ msgid "object id" msgstr "Objekt-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 "Objekt Darst." @@ -170,10 +179,11 @@ msgstr "" "mehrere Einträge auszuwählen." #, python-brace-format -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." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} „{obj}“ wurde erfolgreich hinzugefügt." + +msgid "You may edit it again below." +msgstr "Es kann unten erneut geändert werden." #, python-brace-format msgid "" @@ -183,10 +193,6 @@ 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 added successfully." -msgstr "{name} „{obj}“ wurde erfolgreich hinzugefügt." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -194,6 +200,12 @@ 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." +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} " @@ -232,6 +244,10 @@ msgstr "%s hinzufügen" msgid "Change %s" msgstr "%s ändern" +#, python-format +msgid "View %s" +msgstr "%s ansehen" + msgid "Database error" msgstr "Datenbankfehler" @@ -341,7 +357,7 @@ msgid "Change password" msgstr "Passwort ändern" msgid "Please correct the error below." -msgstr "Bitte die aufgeführten Fehler korrigieren." +msgstr "Bitte den unten aufgeführten Fehler korrigieren." msgid "Please correct the errors below." msgstr "Bitte die unten aufgeführten Fehler korrigieren." @@ -454,8 +470,8 @@ msgstr "" "Sind Sie sicher, dass Sie die ausgewählten %(objects_name)s löschen wollen? " "Alle folgenden Objekte und ihre verwandten Objekte werden gelöscht:" -msgid "Change" -msgstr "Ändern" +msgid "View" +msgstr "Ansehen" msgid "Delete?" msgstr "Löschen?" @@ -474,8 +490,10 @@ msgstr "Modelle der %(name)s-Anwendung" msgid "Add" msgstr "Hinzufügen" -msgid "You don't have permission to edit anything." -msgstr "Sie haben keine Berechtigung, irgendetwas zu ändern." +msgid "You don't have permission to view or edit anything." +msgstr "" +"Ihr Benutzerkonto besitzt nicht die nötigen Rechte, um etwas anzusehen oder " +"zu ändern." msgid "Recent actions" msgstr "Neueste Aktionen" @@ -531,20 +549,8 @@ msgstr "Zeige alle" msgid "Save" msgstr "Sichern" -msgid "Popup closing..." -msgstr "Popup wird geschlossen..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Ausgewählte %(model)s ändern" - -#, python-format -msgid "Add another %(model)s" -msgstr "%(model)s hinzufügen" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Ausgewählte %(model)s löschen" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "Suchen" @@ -568,6 +574,24 @@ msgstr "Sichern und neu hinzufügen" msgid "Save and continue editing" msgstr "Sichern und weiter bearbeiten" +msgid "Save and view" +msgstr "Sichern und ansehen" + +msgid "Close" +msgstr "Schließen" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Ausgewählte %(model)s ändern" + +#, python-format +msgid "Add another %(model)s" +msgstr "%(model)s hinzufügen" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Ausgewählte %(model)s löschen" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Vielen Dank, dass Sie hier ein paar nette Minuten verbracht haben." @@ -680,6 +704,10 @@ msgstr "%s auswählen" msgid "Select %s to change" msgstr "%s zur Änderung auswählen" +#, python-format +msgid "Select %s to view" +msgstr "%s zum Ansehen auswählen" + msgid "Date:" msgstr "Datum:" diff --git a/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo b/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo index 5ff5a3503467b..e4a2a95501d32 100644 Binary files a/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po b/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po index 2f930511db4d2..af7598aa14eb2 100644 --- a/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2018 +# Michael Wolf , 2016-2019 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-06-24 18:57+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 10:13+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Lower Sorbian (http://www.transifex.com/django/django/" "language/dsb/)\n" @@ -109,7 +109,7 @@ msgid "object id" msgstr "objektowy 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 "objektowa reprezentacija" @@ -539,24 +539,8 @@ msgstr "Wšykne pokazaś" msgid "Save" msgstr "Składowaś" -msgid "Popup closing..." -msgstr "Wuskokujuce wokno se zacynja..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Wubrane %(model)s změniś" - -#, python-format -msgid "View selected %(model)s" -msgstr "Wubrany %(model)s pokazaś" - -#, python-format -msgid "Add another %(model)s" -msgstr "Dalšny %(model)s pśidaś" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Wubrane %(model)s lašowaś" +msgid "Popup closing…" +msgstr "Wuskokujuce wokno se zacynja…" msgid "Search" msgstr "Pytaś" @@ -588,6 +572,18 @@ msgstr "Składowaś a pokazaś" msgid "Close" msgstr "Zacyniś" +#, python-format +msgid "Change selected %(model)s" +msgstr "Wubrane %(model)s změniś" + +#, python-format +msgid "Add another %(model)s" +msgstr "Dalšny %(model)s pśidaś" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Wubrane %(model)s lašowaś" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Źěkujomy se, až sćo źinsa wěsty cas na websedle pśebywał." diff --git a/django/contrib/admin/locale/el/LC_MESSAGES/django.mo b/django/contrib/admin/locale/el/LC_MESSAGES/django.mo index d6045141b9e93..0ae1e16509727 100644 Binary files a/django/contrib/admin/locale/el/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/el/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/el/LC_MESSAGES/django.po b/django/contrib/admin/locale/el/LC_MESSAGES/django.po index fbe5efb580a2a..1574e80751a5d 100644 --- a/django/contrib/admin/locale/el/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/el/LC_MESSAGES/django.po @@ -7,15 +7,15 @@ # Nick Mavrakis , 2017-2018 # Nick Mavrakis , 2016 # Pãnoș , 2014 -# Pãnoș , 2016 +# Pãnoș , 2016,2019 # Yorgos Pagles , 2011-2012 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-22 09:56+0000\n" -"Last-Translator: Nick Mavrakis \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-25 19:38+0000\n" +"Last-Translator: Pãnoș \n" "Language-Team: Greek (http://www.transifex.com/django/django/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -115,7 +115,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 "αναπαράσταση αντικειμένου" @@ -554,25 +554,9 @@ msgstr "Εμφάνιση όλων" msgid "Save" msgstr "Αποθήκευση" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Κλείσιμο popup..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Άλλαξε το επιλεγμένο %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Επιλεγμένο View %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Πρόσθεσε άλλο ένα %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Διέγραψε το επιλεγμένο %(model)s" - msgid "Search" msgstr "Αναζήτηση" @@ -601,6 +585,18 @@ msgstr "Αποθήκευση και προβολή" msgid "Close" msgstr "Κλείσιμο" +#, python-format +msgid "Change selected %(model)s" +msgstr "Άλλαξε το επιλεγμένο %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Πρόσθεσε άλλο ένα %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Διέγραψε το επιλεγμένο %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Ευχαριστούμε που διαθέσατε κάποιο ποιοτικό χρόνο στον ιστότοπο σήμερα." diff --git a/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo b/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo index 610de01e1377b..b20f7bd18c6a2 100644 Binary files a/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po b/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po index 0eef9e763cd48..167a0dbadcc74 100644 --- a/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po @@ -1,15 +1,16 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Adam Forster , 2019 # jon_atkinson , 2011-2012 # Ross Poulton , 2011-2012 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-09-23 18:54+0000\n" -"Last-Translator: jon_atkinson \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-04-05 10:37+0000\n" +"Last-Translator: Adam Forster \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/django/" "django/language/en_GB/)\n" "MIME-Version: 1.0\n" @@ -34,7 +35,7 @@ msgid "Delete selected %(verbose_name_plural)s" msgstr "Delete selected %(verbose_name_plural)s" msgid "Administration" -msgstr "" +msgstr "Administration" msgid "All" msgstr "All" @@ -64,16 +65,18 @@ msgid "This year" msgstr "This year" msgid "No date" -msgstr "" +msgstr "No date" msgid "Has date" -msgstr "" +msgstr "Has date" #, python-format msgid "" "Please enter the correct %(username)s and password for a staff account. Note " "that both fields may be case-sensitive." msgstr "" +"Please enter the correct %(username)s and password for a staff account. Note " +"that both fields may be case-sensitive." msgid "Action:" msgstr "Action:" @@ -85,20 +88,29 @@ msgstr "Add another %(verbose_name)s" msgid "Remove" msgstr "Remove" +msgid "Addition" +msgstr "Addition" + +msgid "Change" +msgstr "Change" + +msgid "Deletion" +msgstr "Deletion" + msgid "action time" msgstr "action time" msgid "user" -msgstr "" +msgstr "user" msgid "content type" -msgstr "" +msgstr "content type" msgid "object id" msgstr "object 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 "object repr" @@ -131,10 +143,10 @@ msgstr "LogEntry Object" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "Added {name} \"{object}\"." msgid "Added." -msgstr "" +msgstr "Added." msgid "and" msgstr "and" @@ -162,8 +174,10 @@ msgid "" 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 @@ -173,12 +187,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -217,6 +232,10 @@ msgstr "Add %s" msgid "Change %s" msgstr "Change %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Database error" @@ -321,7 +340,7 @@ msgid "Change password" msgstr "Change password" msgid "Please correct the error below." -msgstr "Please correct the errors below." +msgstr "" msgid "Please correct the errors below." msgstr "" @@ -432,8 +451,8 @@ msgstr "" "Are you sure you want to delete the selected %(objects_name)s? All of the " "following objects and their related items will be deleted:" -msgid "Change" -msgstr "Change" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Delete?" @@ -452,8 +471,8 @@ msgstr "" msgid "Add" msgstr "Add" -msgid "You don't have permission to edit anything." -msgstr "You don't have permission to edit anything." +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "" @@ -507,19 +526,7 @@ msgstr "Show all" msgid "Save" msgstr "Save" -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" @@ -544,6 +551,24 @@ msgstr "Save and add another" msgid "Save and continue editing" msgstr "Save and continue editing" +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 "Thanks for spending some quality time with the Web site today." @@ -646,6 +671,10 @@ msgstr "Select %s" msgid "Select %s to change" msgstr "Select %s to change" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Date:" diff --git a/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo b/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo index 46468a9281d20..b61dbe6af2a30 100644 Binary files a/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/eo/LC_MESSAGES/django.po b/django/contrib/admin/locale/eo/LC_MESSAGES/django.po index e9d53393ad4cf..ffab5e1e580d2 100644 --- a/django/contrib/admin/locale/eo/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/eo/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Baptiste Darthenay , 2012-2013 -# Baptiste Darthenay , 2013-2018 +# Baptiste Darthenay , 2013-2019 # Claude Paroz , 2016 # Dinu Gherman , 2011 # kristjan , 2012 @@ -12,8 +12,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-07-30 21:41+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 12:48+0000\n" "Last-Translator: Baptiste Darthenay \n" "Language-Team: Esperanto (http://www.transifex.com/django/django/language/" "eo/)\n" @@ -114,7 +114,7 @@ msgid "object id" msgstr "objekta identigaĵo" #. 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 "objekta prezento" @@ -543,24 +543,8 @@ msgstr "Montri ĉion" msgid "Save" msgstr "Konservi" -msgid "Popup closing..." -msgstr "Ŝprucfenestro fermante…" - -#, python-format -msgid "Change selected %(model)s" -msgstr "Redaktu elektitan %(model)sn" - -#, python-format -msgid "View selected %(model)s" -msgstr "Vidi elektitan %(model)sn" - -#, python-format -msgid "Add another %(model)s" -msgstr "Aldoni alian %(model)sn" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Forigi elektitan %(model)sn" +msgid "Popup closing…" +msgstr "Ŝprucfenesto fermiĝas…" msgid "Search" msgstr "Serĉu" @@ -590,6 +574,18 @@ msgstr "Konservi kaj vidi" msgid "Close" msgstr "Fermi" +#, python-format +msgid "Change selected %(model)s" +msgstr "Redaktu elektitan %(model)sn" + +#, python-format +msgid "Add another %(model)s" +msgstr "Aldoni alian %(model)sn" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Forigi elektitan %(model)sn" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Dankon pro pasigo de kvalita tempon kun la retejo hodiaŭ." diff --git a/django/contrib/admin/locale/es/LC_MESSAGES/django.mo b/django/contrib/admin/locale/es/LC_MESSAGES/django.mo index d23c6b6844482..f4c502ec187ed 100644 Binary files a/django/contrib/admin/locale/es/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/es/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/es/LC_MESSAGES/django.po b/django/contrib/admin/locale/es/LC_MESSAGES/django.po index 7641317c870aa..949e20400fc89 100644 --- a/django/contrib/admin/locale/es/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/es/LC_MESSAGES/django.po @@ -7,11 +7,13 @@ # Ernesto Avilés Vázquez , 2015-2016 # franchukelly , 2011 # guillem , 2012 +# Ignacio José Lizarán Rus , 2019 # Igor Támara , 2013 # Jannis Leidel , 2011 -# Jorge Puente-Sarrín , 2014-2015 +# Jorge Puente Sarrín , 2014-2015 # José Luis , 2016 # Josue Naaman Nistal Guerra , 2014 +# Luigy, 2019 # Marc Garcia , 2011 # Miguel Angel Tribaldos , 2017 # Pablo, 2015 @@ -20,9 +22,9 @@ 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-09-23 18:54+0000\n" -"Last-Translator: Miguel Angel Tribaldos \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 08:44+0000\n" +"Last-Translator: Ignacio José Lizarán Rus \n" "Language-Team: Spanish (http://www.transifex.com/django/django/language/" "es/)\n" "MIME-Version: 1.0\n" @@ -100,6 +102,15 @@ msgstr "Agregar %(verbose_name)s adicional." msgid "Remove" msgstr "Eliminar" +msgid "Addition" +msgstr "Añadido" + +msgid "Change" +msgstr "Modificar" + +msgid "Deletion" +msgstr "Borrado" + msgid "action time" msgstr "hora de la acción" @@ -113,7 +124,7 @@ msgid "object id" msgstr "id del objeto" #. 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 "repr del objeto" @@ -175,15 +186,15 @@ msgstr "Ninguno" msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" -"Mantenga presionado \"Control\" o \"Command\" en un Mac, para seleccionar " +"Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar " "más de una opción." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"Se añadió con éxito el {name} \"{obj}\". Puede editarlo otra vez a " -"continuación." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Se añadió con éxito el {name} \"{obj}\"." + +msgid "You may edit it again below." +msgstr "Puede volverlo a editar otra vez a continuación." #, python-brace-format msgid "" @@ -193,10 +204,6 @@ msgstr "" "Se añadió con éxito el {name} \"{obj}\". Puede añadir otro {name} a " "continuación." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "Se añadió con éxito el {name} \"{obj}\"." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -204,6 +211,13 @@ msgstr "" "Se modificó con éxito el {name} \"{obj}\". Puede editarlo otra vez a " "continuación." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"Se añadió con éxito el {name} \"{obj}\". Puede editarlo otra vez a " +"continuación." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -242,6 +256,10 @@ msgstr "Añadir %s" msgid "Change %s" msgstr "Modificar %s" +#, python-format +msgid "View %s" +msgstr "Vistas %s" + msgid "Database error" msgstr "Error en la base de datos" @@ -351,7 +369,7 @@ msgid "Change password" msgstr "Cambiar contraseña" msgid "Please correct the error below." -msgstr "Por favor, corrija los siguientes errores." +msgstr "Por Favor corrija el siguiente error." msgid "Please correct the errors below." msgstr "Por favor, corrija los siguientes errores." @@ -464,8 +482,8 @@ msgstr "" "¿Está usted seguro que quiere eliminar el %(objects_name)s seleccionado? " "Todos los siguientes objetos y sus elementos relacionados serán borrados:" -msgid "Change" -msgstr "Modificar" +msgid "View" +msgstr "Vista" msgid "Delete?" msgstr "¿Eliminar?" @@ -484,8 +502,8 @@ msgstr "Modelos en la aplicación %(name)s" msgid "Add" msgstr "Añadir" -msgid "You don't have permission to edit anything." -msgstr "No tiene permiso para editar nada." +msgid "You don't have permission to view or edit anything." +msgstr "No tiene permisos para ver o editar nada" msgid "Recent actions" msgstr "Acciones recientes" @@ -541,21 +559,9 @@ msgstr "Mostrar todo" msgid "Save" msgstr "Grabar" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Cerrando ventana emergente..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Cambiar %(model)s seleccionado" - -#, python-format -msgid "Add another %(model)s" -msgstr "Añadir otro %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Eliminar %(model)s seleccionada/o" - msgid "Search" msgstr "Buscar" @@ -578,6 +584,24 @@ msgstr "Grabar y añadir otro" msgid "Save and continue editing" msgstr "Grabar y continuar editando" +msgid "Save and view" +msgstr "Guardar y ver" + +msgid "Close" +msgstr "Cerrar" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Cambiar %(model)s seleccionado" + +#, python-format +msgid "Add another %(model)s" +msgstr "Añadir otro %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Eliminar %(model)s seleccionada/o" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Gracias por el tiempo que ha dedicado hoy al sitio web." @@ -694,6 +718,10 @@ msgstr "Escoja %s" msgid "Select %s to change" msgstr "Escoja %s a modificar" +#, python-format +msgid "Select %s to view" +msgstr "Seleccione %s para ver" + msgid "Date:" msgstr "Fecha:" diff --git a/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo b/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo index cfdc2b0dc8164..27fc83a28281b 100644 Binary files a/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po b/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po index 9931f7b451c45..1a2d9267787d0 100644 --- a/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po @@ -3,13 +3,13 @@ # Translators: # Jannis Leidel , 2011 # Leonardo José Guzmán , 2013 -# Ramiro Morales, 2013-2018 +# Ramiro Morales, 2013-2019 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-07-31 16:49+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-20 14:06+0000\n" "Last-Translator: Ramiro Morales\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/django/django/" "language/es_AR/)\n" @@ -111,7 +111,7 @@ msgid "object id" msgstr "id de objeto" #. 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 "repr de objeto" @@ -543,24 +543,8 @@ msgstr "Mostrar todos/as" msgid "Save" msgstr "Guardar" -msgid "Popup closing..." -msgstr "Cerrando ventana emergente..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Modificar %(model)s seleccionados/as" - -#, python-format -msgid "View selected %(model)s" -msgstr "Ver %(model)s seleccionados/as" - -#, python-format -msgid "Add another %(model)s" -msgstr "Agregar otro/a %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Eliminar %(model)s seleccionados/as" +msgid "Popup closing…" +msgstr "Cerrando ventana amergente…" msgid "Search" msgstr "Buscar" @@ -590,6 +574,18 @@ msgstr "Guardar y ver" msgid "Close" msgstr "Cerrar" +#, python-format +msgid "Change selected %(model)s" +msgstr "Modificar %(model)s seleccionados/as" + +#, python-format +msgid "Add another %(model)s" +msgstr "Agregar otro/a %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Eliminar %(model)s seleccionados/as" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." diff --git a/django/contrib/admin/locale/et/LC_MESSAGES/django.mo b/django/contrib/admin/locale/et/LC_MESSAGES/django.mo index 0dffd4b5ea12d..3af4426f1bb4a 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 9aaeacd6a4cdb..a9674165d12ad 100644 --- a/django/contrib/admin/locale/et/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/et/LC_MESSAGES/django.po @@ -5,15 +5,15 @@ # Jannis Leidel , 2011 # Janno Liivak , 2013-2015 # Martin Pajuste , 2015 -# Martin Pajuste , 2016 +# Martin Pajuste , 2016,2019 # Marti Raudsepp , 2016 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-09-19 16:41+0000\n" -"Last-Translator: Jannis Leidel \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" "Language-Team: Estonian (http://www.transifex.com/django/django/language/" "et/)\n" "MIME-Version: 1.0\n" @@ -91,6 +91,15 @@ msgstr "Lisa veel üks %(verbose_name)s" msgid "Remove" msgstr "Eemalda" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Muuda" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "toimingu aeg" @@ -104,7 +113,7 @@ msgid "object id" msgstr "objekti 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 "objekti esitus" @@ -168,9 +177,11 @@ msgid "" msgstr "Et valida mitu, hoidke all \"Control\"-nuppu (Maci puhul \"Command\")." #, 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." +msgstr "{name} \"{obj}\" lisamine õnnestus." + +msgid "You may edit it again below." +msgstr "" #, python-brace-format msgid "" @@ -178,15 +189,16 @@ msgid "" "below." msgstr "{name} \"{obj}\" lisamine õnnestus. Allpool saate lisada uue {name}." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" lisamine õnnestus." - #, 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." +#, 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." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -223,6 +235,10 @@ msgstr "Lisa %s" msgid "Change %s" msgstr "Muuda %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Andmebaasi viga" @@ -331,7 +347,7 @@ msgid "Change password" msgstr "Muuda salasõna" msgid "Please correct the error below." -msgstr "Palun parandage allolevad vead" +msgstr "Palun parandage allolev viga." msgid "Please correct the errors below." msgstr "Palun parandage allolevad vead." @@ -442,8 +458,8 @@ msgstr "" "Kas oled kindel, et soovid kustutada valitud %(objects_name)s? Kõik " "järgnevad objektid ja seotud objektid kustutatakse:" -msgid "Change" -msgstr "Muuda" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Kustutan?" @@ -462,8 +478,8 @@ msgstr "Rakenduse %(name)s moodulid" msgid "Add" msgstr "Lisa" -msgid "You don't have permission to edit anything." -msgstr "Teil ei ole õigust midagi muuta." +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "Hiljutised toimingud" @@ -519,20 +535,8 @@ msgstr "Näita kõiki" msgid "Save" msgstr "Salvesta" -msgid "Popup closing..." -msgstr "Hüpikaken sulgub..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Muuda valitud %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Lisa veel üks %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Kustuta valitud %(model)s" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "Otsing" @@ -556,6 +560,24 @@ msgstr "Salvesta ja lisa uus" msgid "Save and continue editing" msgstr "Salvesta ja jätka muutmist" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Muuda valitud %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Lisa veel üks %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Kustuta valitud %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Tänan, et veetsite aega meie lehel." @@ -667,6 +689,10 @@ msgstr "Vali %s" msgid "Select %s to change" msgstr "Vali %s mida muuta" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Kuupäev:" diff --git a/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo b/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo index 3d4808eeff0d7..e3c840f916619 100644 Binary files a/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/eu/LC_MESSAGES/django.po b/django/contrib/admin/locale/eu/LC_MESSAGES/django.po index 814ffe808d33a..9176368484fd5 100644 --- a/django/contrib/admin/locale/eu/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/eu/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Aitzol Naberan , 2013,2016 -# Eneko Illarramendi , 2017-2018 +# Eneko Illarramendi , 2017-2019 # Jannis Leidel , 2011 # julen, 2012-2013 # julen, 2013 @@ -11,8 +11,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-08-28 10:32+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-22 09:57+0000\n" "Last-Translator: Eneko Illarramendi \n" "Language-Team: Basque (http://www.transifex.com/django/django/language/eu/)\n" "MIME-Version: 1.0\n" @@ -112,7 +112,7 @@ msgid "object id" msgstr "objetuaren id-a" #. 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 "objeturaren adierazpena" @@ -541,24 +541,8 @@ msgstr "Erakutsi dena" msgid "Save" msgstr "Gorde" -msgid "Popup closing..." -msgstr "Popupa ixten..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Aldatu aukeratutako %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Ikusi aukeratutako %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Gehitu beste %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Ezabatu aukeratutako %(model)s" +msgid "Popup closing…" +msgstr "Popup leihoa ixten..." msgid "Search" msgstr "Bilatu" @@ -588,6 +572,18 @@ msgstr "Gorde eta ikusi" msgid "Close" msgstr "Itxi" +#, python-format +msgid "Change selected %(model)s" +msgstr "Aldatu aukeratutako %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Gehitu beste %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Ezabatu aukeratutako %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Eskerrik asko webguneari zure probetxuzko denbora eskaintzeagatik." diff --git a/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo b/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo index a84dbe0eaacc0..85b2dbf676484 100644 Binary files a/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/fa/LC_MESSAGES/django.po b/django/contrib/admin/locale/fa/LC_MESSAGES/django.po index b13629136fe2e..2d64609052d7c 100644 --- a/django/contrib/admin/locale/fa/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/fa/LC_MESSAGES/django.po @@ -6,16 +6,16 @@ # Arash Fazeli , 2012 # Jannis Leidel , 2011 # MJafar Mashhadi , 2018 -# Mohammad Hossein Mojtahedi , 2017 +# Mohammad Hossein Mojtahedi , 2017,2019 # Pouya Abbassi, 2016 # Reza Mohammadi , 2013-2014 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-06-23 22:46+0000\n" -"Last-Translator: MJafar Mashhadi \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-23 12:01+0000\n" +"Last-Translator: Mohammad Hossein Mojtahedi \n" "Language-Team: Persian (http://www.transifex.com/django/django/language/" "fa/)\n" "MIME-Version: 1.0\n" @@ -115,7 +115,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 "صورت شیء" @@ -249,7 +249,7 @@ msgstr "تغییر %s" #, python-format msgid "View %s" -msgstr "" +msgstr "مشاهده %s" msgid "Database error" msgstr "خطا در بانک اطلاعاتی" @@ -469,7 +469,7 @@ msgstr "" "ذیل به همراه موارد مرتبط با آنها حذف خواهند شد:" msgid "View" -msgstr "" +msgstr "مشاهده" msgid "Delete?" msgstr "حذف؟" @@ -545,25 +545,9 @@ msgstr "نمایش همه" msgid "Save" msgstr "ذخیره" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "در حال بستن پنجره..." -#, python-format -msgid "Change selected %(model)s" -msgstr "تغییر دادن %(model)s انتخاب شده" - -#, python-format -msgid "View selected %(model)s" -msgstr "" - -#, python-format -msgid "Add another %(model)s" -msgstr "افزدون %(model)s دیگر" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "حذف کردن %(model)s انتخاب شده" - msgid "Search" msgstr "جستجو" @@ -592,6 +576,18 @@ msgstr "ذخیره و نمایش" msgid "Close" msgstr "بستن" +#, python-format +msgid "Change selected %(model)s" +msgstr "تغییر دادن %(model)s انتخاب شده" + +#, python-format +msgid "Add another %(model)s" +msgstr "افزدون %(model)s دیگر" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "حذف کردن %(model)s انتخاب شده" + msgid "Thanks for spending some quality time with the Web site today." msgstr "متشکر از اینکه مدتی از وقت خود را به ما اختصاص دادید." @@ -704,7 +700,7 @@ msgstr "%s را برای تغییر انتخاب کنید" #, python-format msgid "Select %s to view" -msgstr "" +msgstr "%s را برای مشاهده انتخاب کنید" msgid "Date:" msgstr "تاریخ:" diff --git a/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo b/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo index 18b9c0b1fb020..b65ffeff53f99 100644 Binary files a/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/fi/LC_MESSAGES/django.po b/django/contrib/admin/locale/fi/LC_MESSAGES/django.po index 700b0502a1a84..a2c0a3806e101 100644 --- a/django/contrib/admin/locale/fi/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/fi/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Antti Kaihola , 2011 # Jannis Leidel , 2011 # Klaus Dahlén , 2012 +# Nikolay Korotkiy , 2018 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-09-19 16:40+0000\n" -"Last-Translator: Aarni Koskela\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" "Language-Team: Finnish (http://www.transifex.com/django/django/language/" "fi/)\n" "MIME-Version: 1.0\n" @@ -89,6 +90,15 @@ msgstr "Lisää toinen %(verbose_name)s" msgid "Remove" msgstr "Poista" +msgid "Addition" +msgstr "Lisäys" + +msgid "Change" +msgstr "Muokkaa" + +msgid "Deletion" +msgstr "Poisto" + msgid "action time" msgstr "tapahtumahetki" @@ -102,7 +112,7 @@ msgid "object id" msgstr "kohteen tunniste" #. 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 "kohteen tiedot" @@ -168,9 +178,11 @@ msgstr "" "vaihtoehtoja." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" on lisätty. Voit muokata sitä uudelleen alla." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" on lisätty." + +msgid "You may edit it again below." +msgstr "" #, python-brace-format msgid "" @@ -178,15 +190,16 @@ msgid "" "below." msgstr "{name} \"{obj}\" on lisätty. Voit lisätä toisen {name} alla." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" on lisätty." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" on muokattu. Voit muokata sitä edelleen alla." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" on lisätty. Voit muokata sitä uudelleen alla." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -223,6 +236,10 @@ msgstr "Lisää %s" msgid "Change %s" msgstr "Muokkaa %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Tietokantavirhe" @@ -331,7 +348,7 @@ msgid "Change password" msgstr "Vaihda salasana" msgid "Please correct the error below." -msgstr "Korjaa allaolevat virheet." +msgstr "" msgid "Please correct the errors below." msgstr "Korjaa allaolevat virheet." @@ -442,8 +459,8 @@ msgstr "" "Haluatki varmasti poistaa valitut %(objects_name)s? Samalla poistetaan " "kaikki alla mainitut ja niihin liittyvät kohteet:" -msgid "Change" -msgstr "Muokkaa" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Poista?" @@ -462,8 +479,8 @@ msgstr "%(name)s -applikaation mallit" msgid "Add" msgstr "Lisää" -msgid "You don't have permission to edit anything." -msgstr "Sinulla ei ole oikeutta muokata mitään." +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "Viimeisimmät tapahtumat" @@ -518,20 +535,8 @@ msgstr "Näytä kaikki" msgid "Save" msgstr "Tallenna ja poistu" -msgid "Popup closing..." -msgstr "Ponnahdusikkuna sulkeutuu..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Muuta valittuja %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Lisää toinen %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Poista valitut %(model)s" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "Haku" @@ -555,6 +560,24 @@ msgstr "Tallenna ja lisää toinen" msgid "Save and continue editing" msgstr "Tallenna välillä ja jatka muokkaamista" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "Sulje" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Muuta valittuja %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Lisää toinen %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Poista valitut %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Kiitos sivuillamme viettämästäsi ajasta." @@ -665,6 +688,10 @@ msgstr "Valitse %s" msgid "Select %s to change" msgstr "Valitse muokattava %s" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Pvm:" diff --git a/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo b/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo index 73edb24d1e822..213fd357d1b3d 100644 Binary files a/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/fr/LC_MESSAGES/django.po b/django/contrib/admin/locale/fr/LC_MESSAGES/django.po index 7957b6e0a9fa4..4483ced6768f8 100644 --- a/django/contrib/admin/locale/fr/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/fr/LC_MESSAGES/django.po @@ -1,15 +1,15 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Claude Paroz , 2013-2018 +# Claude Paroz , 2013-2019 # Claude Paroz , 2011,2013 # Jannis Leidel , 2011 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-28 15:45+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 17:28+0000\n" "Last-Translator: Claude Paroz \n" "Language-Team: French (http://www.transifex.com/django/django/language/fr/)\n" "MIME-Version: 1.0\n" @@ -110,7 +110,7 @@ msgid "object id" msgstr "id de l'objet" #. 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 "représentation de l'objet" @@ -549,25 +549,9 @@ msgstr "Tout afficher" msgid "Save" msgstr "Enregistrer" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Fenêtre en cours de fermeture…" -#, python-format -msgid "Change selected %(model)s" -msgstr "Modifier l'objet %(model)s sélectionné" - -#, python-format -msgid "View selected %(model)s" -msgstr "Afficher l'objet %(model)s sélectionné" - -#, python-format -msgid "Add another %(model)s" -msgstr "Ajouter un autre objet %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Supprimer l'objet %(model)s sélectionné" - msgid "Search" msgstr "Rechercher" @@ -596,6 +580,18 @@ msgstr "Enregistrer et afficher" msgid "Close" msgstr "Fermer" +#, python-format +msgid "Change selected %(model)s" +msgstr "Modifier l'objet %(model)s sélectionné" + +#, python-format +msgid "Add another %(model)s" +msgstr "Ajouter un autre objet %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Supprimer l'objet %(model)s sélectionné" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Merci pour le temps que vous avez accordé à ce site aujourd'hui." diff --git a/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo index d9eff52490309..8c029af57b538 100644 Binary files a/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ga/LC_MESSAGES/django.po b/django/contrib/admin/locale/ga/LC_MESSAGES/django.po index d854b3149ba3a..252e50d06556e 100644 --- a/django/contrib/admin/locale/ga/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ga/LC_MESSAGES/django.po @@ -2,14 +2,15 @@ # # Translators: # Jannis Leidel , 2011 +# Luke Blaney , 2019 # Michael Thornhill , 2011-2012,2015 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-09-23 18:54+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-22 21:17+0000\n" +"Last-Translator: Luke Blaney \n" "Language-Team: Irish (http://www.transifex.com/django/django/language/ga/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -64,10 +65,10 @@ msgid "This year" msgstr "An blian seo" msgid "No date" -msgstr "" +msgstr "Gan dáta" msgid "Has date" -msgstr "" +msgstr "Le dáta" #, python-format msgid "" @@ -87,11 +88,20 @@ msgstr "Cuir eile %(verbose_name)s" msgid "Remove" msgstr "Tóg amach" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Athraigh" + +msgid "Deletion" +msgstr "Scriosadh" + msgid "action time" msgstr "am aicsean" msgid "user" -msgstr "" +msgstr "úsáideoir" msgid "content type" msgstr "" @@ -100,7 +110,7 @@ msgid "object id" msgstr "id oibiacht" #. 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 "repr oibiacht" @@ -133,25 +143,25 @@ msgstr "Oibiacht LogEntry" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "{name} curtha leis \"{object}\"." msgid "Added." -msgstr "" +msgstr "Curtha leis." msgid "and" msgstr "agus" #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." -msgstr "" +msgstr "{fields} athrithe don {name} \"{object}\"." #, python-brace-format msgid "Changed {fields}." -msgstr "" +msgstr "{fields} athrithe." #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "" +msgstr "{name} scrioste: \"{object}\"." msgid "No fields changed." msgstr "Dada réimse aithraithe" @@ -166,9 +176,11 @@ msgstr "" "amháin a roghnú." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Bhí {name} \"{obj}\" curtha leis go rathúil" + +msgid "You may edit it again below." +msgstr "Thig leat é a athrú arís faoi seo." #, python-brace-format msgid "" @@ -177,12 +189,15 @@ msgid "" 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 "" +"D'athraigh {name} \"{obj}\" go rathúil.\n" +"Thig leat é a athrú arís faoi seo." #, python-brace-format msgid "" -"The {name} \"{obj}\" was changed successfully. You may edit it again below." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -190,10 +205,12 @@ msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " "below." msgstr "" +"D'athraigh {name} \"{obj}\" go rathúil.\n" +"Thig leat {name} eile a chuir leis." #, python-brace-format msgid "The {name} \"{obj}\" was changed successfully." -msgstr "" +msgstr "D'athraigh {name} \"{obj}\" go rathúil." msgid "" "Items must be selected in order to perform actions on them. No items have " @@ -211,7 +228,7 @@ msgstr "Bhí %(name)s \"%(obj)s\" scrioste go rathúil." #, python-format msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?" -msgstr "" +msgstr "Níl%(name)s ann le aitheantais \"%(key)s\". B'fhéidir gur scriosadh é?" #, python-format msgid "Add %s" @@ -221,6 +238,10 @@ msgstr "Cuir %s le" msgid "Change %s" msgstr "Aithrigh %s" +#, python-format +msgid "View %s" +msgstr "Amharc ar %s" + msgid "Database error" msgstr "Botún bunachar sonraí" @@ -336,7 +357,7 @@ msgid "Change password" msgstr "Athraigh focal faire" msgid "Please correct the error below." -msgstr "Ceartaigh na botúin thíos le do thoil" +msgstr "Ceartaigh an botún thíos le do thoil." msgid "Please correct the errors below." msgstr "Le do thoil cheartú earráidí thíos." @@ -448,8 +469,8 @@ msgstr "" "An bhfuil tú cinnte gur mian leat a scriosadh %(objects_name)s roghnaithe? " "Beidh gach ceann de na nithe seo a leanas agus a n-ítimí gaolta scroiste:" -msgid "Change" -msgstr "Athraigh" +msgid "View" +msgstr "Amharc ar" msgid "Delete?" msgstr "Cealaigh?" @@ -468,8 +489,8 @@ msgstr "Samhlacha ins an %(name)s iarratais" msgid "Add" msgstr "Cuir le" -msgid "You don't have permission to edit anything." -msgstr "Níl cead agat aon rud a cuir in eagar." +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "" @@ -523,21 +544,9 @@ msgstr "Taispéan gach rud" msgid "Save" msgstr "Sábháil" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "" -#, python-format -msgid "Change selected %(model)s" -msgstr "Athraigh roghnaithe %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Cuir le %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Scrios roghnaithe %(model)s" - msgid "Search" msgstr "Cuardach" @@ -563,6 +572,24 @@ msgstr "Sabháil agus cuir le ceann eile" msgid "Save and continue editing" msgstr "Sábhail agus lean ag cuir in eagar" +msgid "Save and view" +msgstr "Sabháil agus amharc ar" + +msgid "Close" +msgstr "Druid" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Athraigh roghnaithe %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Cuir le %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Scrios roghnaithe %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Go raibh maith agat le hadhaigh do cuairt ar an suíomh idirlínn inniú." @@ -668,6 +695,10 @@ msgstr "Roghnaigh %s" msgid "Select %s to change" msgstr "Roghnaigh %s a athrú" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Dáta:" diff --git a/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo index a0a20c43c1c43..ee000e278fc13 100644 Binary files a/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po index f3243b887c809..ce0a412d10721 100644 --- a/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po @@ -2,14 +2,15 @@ # # Translators: # Jannis Leidel , 2011 +# Luke Blaney , 2019 # Michael Thornhill , 2011-2012,2015 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-23 18:54+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2019-06-22 21:36+0000\n" +"Last-Translator: Luke Blaney \n" "Language-Team: Irish (http://www.transifex.com/django/django/language/ga/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -103,6 +104,21 @@ msgstr "" "Tá gníomh roghnaithe agat, ach níl do aithrithe sabhailte ar cuid de na " "réímse. Is dócha go bhfuil tú ag iarraidh an cnaipe Té ná an cnaipe Sábháil." +msgid "Now" +msgstr "Anois" + +msgid "Midnight" +msgstr "Meán oíche" + +msgid "6 a.m." +msgstr "6 a.m." + +msgid "Noon" +msgstr "Nóin" + +msgid "6 p.m." +msgstr "6in" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -126,27 +142,12 @@ msgstr[3] "" msgstr[4] "" "Tabhair faoi deara: Tá tú %s uair a chloig taobh thiar am an friothálaí." -msgid "Now" -msgstr "Anois" - msgid "Choose a Time" -msgstr "" +msgstr "Roghnaigh Am" msgid "Choose a time" msgstr "Roghnaigh am" -msgid "Midnight" -msgstr "Meán oíche" - -msgid "6 a.m." -msgstr "6 a.m." - -msgid "Noon" -msgstr "Nóin" - -msgid "6 p.m." -msgstr "" - msgid "Cancel" msgstr "Cealaigh" @@ -154,7 +155,7 @@ msgid "Today" msgstr "Inniu" msgid "Choose a Date" -msgstr "" +msgstr "Roghnaigh Dáta" msgid "Yesterday" msgstr "Inné" @@ -163,68 +164,68 @@ msgid "Tomorrow" msgstr "Amárach" msgid "January" -msgstr "" +msgstr "Eanáir" msgid "February" -msgstr "" +msgstr "Feabhra" msgid "March" -msgstr "" +msgstr "Márta" msgid "April" -msgstr "" +msgstr "Aibreán" msgid "May" -msgstr "" +msgstr "Bealtaine" msgid "June" -msgstr "" +msgstr "Meitheamh" msgid "July" -msgstr "" +msgstr "Iúil" msgid "August" -msgstr "" +msgstr "Lúnasa" msgid "September" -msgstr "" +msgstr "Meán Fómhair" msgid "October" -msgstr "" +msgstr "Deireadh Fómhair" msgid "November" -msgstr "" +msgstr "Samhain" msgid "December" -msgstr "" +msgstr "Nollaig" msgctxt "one letter Sunday" msgid "S" -msgstr "" +msgstr "D" msgctxt "one letter Monday" msgid "M" -msgstr "" +msgstr "L" msgctxt "one letter Tuesday" msgid "T" -msgstr "" +msgstr "M" msgctxt "one letter Wednesday" msgid "W" -msgstr "" +msgstr "C" msgctxt "one letter Thursday" msgid "T" -msgstr "" +msgstr "D" msgctxt "one letter Friday" msgid "F" -msgstr "" +msgstr "A" msgctxt "one letter Saturday" msgid "S" -msgstr "" +msgstr "S" msgid "Show" msgstr "Taispeán" diff --git a/django/contrib/admin/locale/he/LC_MESSAGES/django.mo b/django/contrib/admin/locale/he/LC_MESSAGES/django.mo index 93e9c45219981..6803b9cf7592a 100644 Binary files a/django/contrib/admin/locale/he/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/he/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/he/LC_MESSAGES/django.po b/django/contrib/admin/locale/he/LC_MESSAGES/django.po index 879b50e7c3aba..e5315484b9170 100644 --- a/django/contrib/admin/locale/he/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/he/LC_MESSAGES/django.po @@ -3,20 +3,21 @@ # Translators: # Alex Gaynor , 2011 # Jannis Leidel , 2011 -# Meir Kriheli , 2011-2015,2017 +# Meir Kriheli , 2011-2015,2017,2019 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-09-19 16:40+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-19 16:40+0000\n" "Last-Translator: Meir Kriheli \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" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % " +"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -87,6 +88,15 @@ msgstr "הוספת %(verbose_name)s" msgid "Remove" msgstr "להסיר" +msgid "Addition" +msgstr "הוספה" + +msgid "Change" +msgstr "שינוי" + +msgid "Deletion" +msgstr "מחיקה" + msgid "action time" msgstr "זמן פעולה" @@ -100,7 +110,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 "ייצוג אובייקט" @@ -165,9 +175,11 @@ msgstr "" "יש להחזיק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "הוספת {name} \"{obj}\" בוצעה בהצלחה. ניתן לערוך שוב מתחת." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "הוספת {name} \"{obj}\" בוצעה בהצלחה." + +msgid "You may edit it again below." +msgstr "ניתן לערוך שוב מתחת." #, python-brace-format msgid "" @@ -175,15 +187,16 @@ msgid "" "below." msgstr "הוספת {name} \"{obj}\" בוצעה בהצלחה. ניתן להוסיף עוד {name} מתחת.." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "הוספת {name} \"{obj}\" בוצעה בהצלחה." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "עדכון {name} \"{obj}\" " +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "הוספת {name} \"{obj}\" בוצעה בהצלחה. ניתן לערוך שוב מתחת." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -218,6 +231,10 @@ msgstr "הוספת %s" msgid "Change %s" msgstr "שינוי %s" +#, python-format +msgid "View %s" +msgstr "צפיה ב%s" + msgid "Database error" msgstr "שגיאת בסיס נתונים" @@ -226,12 +243,16 @@ msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "שינוי %(count)s %(name)s בוצע בהצלחה." msgstr[1] "שינוי %(count)s %(name)s בוצע בהצלחה." +msgstr[2] "שינוי %(count)s %(name)s בוצע בהצלחה." +msgstr[3] "שינוי %(count)s %(name)s בוצע בהצלחה." #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s נבחר" msgstr[1] "כל ה־%(total_count)s נבחרו" +msgstr[2] "כל ה־%(total_count)s נבחרו" +msgstr[3] "כל ה־%(total_count)s נבחרו" #, python-format msgid "0 of %(cnt)s selected" @@ -325,7 +346,7 @@ msgid "Change password" msgstr "שינוי סיסמה" msgid "Please correct the error below." -msgstr "נא לתקן את השגיאות המופיעות מתחת." +msgstr "נא לתקן את השגיאה מתחת." msgid "Please correct the errors below." msgstr "נא לתקן את השגיאות מתחת." @@ -434,8 +455,8 @@ msgstr "" "האם אתה בטוח שאתה רוצה למחוק את ה%(objects_name)s הנבחר? כל האובייקטים הבאים " "ופריטים הקשורים להם יימחקו:" -msgid "Change" -msgstr "שינוי" +msgid "View" +msgstr "צפיה" msgid "Delete?" msgstr "מחיקה ?" @@ -454,8 +475,8 @@ 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 "פעולות אחרונות" @@ -509,21 +530,9 @@ msgstr "הצג הכל" msgid "Save" msgstr "שמירה" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "חלון צץ נסגר..." -#, python-format -msgid "Change selected %(model)s" -msgstr "שינוי %(model)s הנבחר." - -#, python-format -msgid "Add another %(model)s" -msgstr "הוספת %(model)s נוסף." - -#, python-format -msgid "Delete selected %(model)s" -msgstr "מחיקת %(model)s הנבחר." - msgid "Search" msgstr "חיפוש" @@ -532,6 +541,8 @@ msgid "%(counter)s result" msgid_plural "%(counter)s results" msgstr[0] "תוצאה %(counter)s" msgstr[1] "%(counter)s תוצאות" +msgstr[2] "%(counter)s תוצאות" +msgstr[3] "%(counter)s תוצאות" #, python-format msgid "%(full_result_count)s total" @@ -546,6 +557,24 @@ msgstr "שמירה והוספת אחר" msgid "Save and continue editing" msgstr "שמירה והמשך עריכה" +msgid "Save and view" +msgstr "שמירה וצפיה" + +msgid "Close" +msgstr "סגירה" + +#, python-format +msgid "Change selected %(model)s" +msgstr "שינוי %(model)s הנבחר." + +#, python-format +msgid "Add another %(model)s" +msgstr "הוספת %(model)s נוסף." + +#, python-format +msgid "Delete selected %(model)s" +msgstr "מחיקת %(model)s הנבחר." + msgid "Thanks for spending some quality time with the Web site today." msgstr "תודה על בילוי זמן איכות עם האתר." @@ -654,6 +683,10 @@ msgstr "בחירת %s" msgid "Select %s to change" msgstr "בחירת %s לשינוי" +#, python-format +msgid "Select %s to view" +msgstr "בחירת %s לצפיה" + msgid "Date:" msgstr "תאריך:" diff --git a/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo index 515a122a3549d..fe37ec5a83397 100644 Binary files a/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po index f496a489c7be2..43eee285656ee 100644 --- a/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Meir Kriheli \n" "Language-Team: Hebrew (http://www.transifex.com/django/django/language/he/)\n" @@ -16,7 +16,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % " +"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #, javascript-format msgid "Available %s" @@ -73,6 +74,8 @@ msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "%(sel)s מ %(cnt)s נבחרות" msgstr[1] "%(sel)s מ %(cnt)s נבחרות" +msgstr[2] "%(sel)s מ %(cnt)s נבחרות" +msgstr[3] "%(sel)s מ %(cnt)s נבחרות" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -97,20 +100,36 @@ msgstr "" "בחרת פעולה, ולא עשיתה שינויימ על שדות. אתה כנראה מחפש את הכפתור ללכת במקום " "הכפתור לשמור." +msgid "Now" +msgstr "כעת" + +msgid "Midnight" +msgstr "חצות" + +msgid "6 a.m." +msgstr "6 בבוקר" + +msgid "Noon" +msgstr "12 בצהריים" + +msgid "6 p.m." +msgstr "6 אחר הצהריים" + #, 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] "הערה: את/ה %s שעה לפני זמן השרת." msgstr[1] "הערה: את/ה %s שעות לפני זמן השרת." +msgstr[2] "הערה: את/ה %s שעות לפני זמן השרת." +msgstr[3] "הערה: את/ה %s שעות לפני זמן השרת." #, javascript-format msgid "Note: You are %s hour behind server time." msgid_plural "Note: You are %s hours behind server time." msgstr[0] "הערה: את/ה %s שעה אחרי זמן השרת." msgstr[1] "הערה: את/ה %s שעות אחרי זמן השרת." - -msgid "Now" -msgstr "כעת" +msgstr[2] "הערה: את/ה %s שעות אחרי זמן השרת." +msgstr[3] "הערה: את/ה %s שעות אחרי זמן השרת." msgid "Choose a Time" msgstr "בחירת שעה" @@ -118,18 +137,6 @@ msgstr "בחירת שעה" msgid "Choose a time" msgstr "בחירת שעה" -msgid "Midnight" -msgstr "חצות" - -msgid "6 a.m." -msgstr "6 בבוקר" - -msgid "Noon" -msgstr "12 בצהריים" - -msgid "6 p.m." -msgstr "6 אחר הצהריים" - msgid "Cancel" msgstr "ביטול" diff --git a/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo b/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo index 4c6ef16616e6c..eb87cd149b880 100644 Binary files a/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/hr/LC_MESSAGES/django.po b/django/contrib/admin/locale/hr/LC_MESSAGES/django.po index 20c5bae8f6393..b9192865160ad 100644 --- a/django/contrib/admin/locale/hr/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/hr/LC_MESSAGES/django.po @@ -4,17 +4,19 @@ # aljosa , 2011,2013 # Bojan Mihelač , 2012 # Filip Cuk , 2016 +# Goran Zugelj , 2018 # Jannis Leidel , 2011 # Mislav Cimperšak , 2013,2015-2016 # Ylodi , 2015 +# Vedran Linić , 2019 # Ylodi , 2011 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-09-19 16:40+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 06:44+0000\n" +"Last-Translator: Vedran Linić \n" "Language-Team: Croatian (http://www.transifex.com/django/django/language/" "hr/)\n" "MIME-Version: 1.0\n" @@ -93,6 +95,15 @@ msgstr "Dodaj još jedan %(verbose_name)s" msgid "Remove" msgstr "Ukloni" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Promijeni" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "vrijeme akcije" @@ -106,7 +117,7 @@ msgid "object id" msgstr "id objekta" #. 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 "repr objekta" @@ -172,8 +183,10 @@ msgstr "" "objekta. " #, 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 @@ -183,12 +196,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -227,6 +241,10 @@ msgstr "Novi unos (%s)" msgid "Change %s" msgstr "Promijeni %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Pogreška u bazi" @@ -337,7 +355,7 @@ msgid "Change password" msgstr "Promijeni lozinku" msgid "Please correct the error below." -msgstr "Molimo ispravite navedene greške." +msgstr "" msgid "Please correct the errors below." msgstr "Molimo ispravite navedene greške." @@ -447,8 +465,8 @@ msgstr "" "Jeste li sigurni da želite izbrisati odabrane %(objects_name)s ? Svi " "sljedeći objekti i povezane stavke će biti izbrisani:" -msgid "Change" -msgstr "Promijeni" +msgid "View" +msgstr "Prikaz" msgid "Delete?" msgstr "Izbriši?" @@ -467,8 +485,8 @@ msgstr "Modeli u aplikaciji %(name)s" msgid "Add" msgstr "Novi unos" -msgid "You don't have permission to edit anything." -msgstr "Nemate privilegije za promjenu podataka." +msgid "You don't have permission to view or edit anything." +msgstr "Nemate dozvole za pregled ili izmjenu." msgid "Recent actions" msgstr "Nedavne promjene" @@ -523,20 +541,8 @@ msgstr "Prikaži sve" msgid "Save" msgstr "Spremi" -msgid "Popup closing..." -msgstr "Zatvaranje popup-a..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Promijeni označene %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Dodaj još jedan %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Obriši odabrane %(model)s" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "Traži" @@ -561,6 +567,24 @@ msgstr "Spremi i unesi novi unos" msgid "Save and continue editing" msgstr "Spremi i nastavi uređivati" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "Zatvori" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Promijeni označene %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Dodaj još jedan %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Obriši odabrane %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Hvala što ste proveli malo kvalitetnog vremena na stranicama danas." @@ -672,6 +696,10 @@ msgstr "Odaberi %s" msgid "Select %s to change" msgstr "Odaberi za promjenu - %s" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Datum:" diff --git a/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo index a4f26b9763c23..e8231f69af4f8 100644 Binary files a/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po index c6d0f47b896f5..0878d8ab13f2c 100644 --- a/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Croatian (http://www.transifex.com/django/django/language/" @@ -102,6 +102,21 @@ msgstr "" "Odabrali ste akciju, a niste napravili nikakve izmjene na pojedinim poljima. " "Vjerojatno tražite gumb Idi umjesto gumb Spremi." +msgid "Now" +msgstr "Sada" + +msgid "Midnight" +msgstr "Ponoć" + +msgid "6 a.m." +msgstr "6 ujutro" + +msgid "Noon" +msgstr "Podne" + +msgid "6 p.m." +msgstr "6 popodne" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -116,27 +131,12 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -msgid "Now" -msgstr "Sada" - msgid "Choose a Time" msgstr "Izaberite vrijeme" msgid "Choose a time" msgstr "Izaberite vrijeme" -msgid "Midnight" -msgstr "Ponoć" - -msgid "6 a.m." -msgstr "6 ujutro" - -msgid "Noon" -msgstr "Podne" - -msgid "6 p.m." -msgstr "6 popodne" - msgid "Cancel" msgstr "Odustani" diff --git a/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo b/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo index 23854f0bc95d8..c578603918ab9 100644 Binary files a/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po b/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po index bd6c92f8289fa..2056c8285f8d9 100644 --- a/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2018 +# Michael Wolf , 2016-2019 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-06-24 18:59+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-04 13:47+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Upper Sorbian (http://www.transifex.com/django/django/" "language/hsb/)\n" @@ -109,7 +109,7 @@ msgid "object id" msgstr "objektowy 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 "objektowa reprezentacija" @@ -535,24 +535,8 @@ msgstr "Wšě pokazać" msgid "Save" msgstr "Składować" -msgid "Popup closing..." -msgstr "Wuskakowace wokno so začinja..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Wubrane %(model)s změnić" - -#, python-format -msgid "View selected %(model)s" -msgstr "Wibrany %(model)s pokazać" - -#, python-format -msgid "Add another %(model)s" -msgstr "Druhi %(model)s přidać" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Wubrane %(model)s zhašeć" +msgid "Popup closing…" +msgstr "Wuskakowace wokno so začinja…" msgid "Search" msgstr "Pytać" @@ -584,6 +568,18 @@ msgstr "Składować a pokazać" msgid "Close" msgstr "Začinić" +#, python-format +msgid "Change selected %(model)s" +msgstr "Wubrane %(model)s změnić" + +#, python-format +msgid "Add another %(model)s" +msgstr "Druhi %(model)s přidać" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Wubrane %(model)s zhašeć" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Wulki dźak, zo sće dźensa rjane chwile z websydłom přebywali." diff --git a/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo b/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo index 3988ba7924d4b..b94369f95be51 100644 Binary files a/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/hu/LC_MESSAGES/django.po b/django/contrib/admin/locale/hu/LC_MESSAGES/django.po index 3e67ac7644dd4..3bff0cd53ab95 100644 --- a/django/contrib/admin/locale/hu/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/hu/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Ádám Krizsány , 2015 # Akos Zsolt Hochrein , 2018 -# András Veres-Szentkirályi, 2016,2018 +# András Veres-Szentkirályi, 2016,2018-2019 # Jannis Leidel , 2011 # János R (Hangya), 2017 # János R (Hangya), 2014 @@ -14,8 +14,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-07-31 07:37+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-04-17 07:35+0000\n" "Last-Translator: András Veres-Szentkirályi\n" "Language-Team: Hungarian (http://www.transifex.com/django/django/language/" "hu/)\n" @@ -116,7 +116,7 @@ msgid "object id" msgstr "objektum 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 "objektum repr" @@ -542,24 +542,8 @@ msgstr "Mutassa mindet" msgid "Save" msgstr "Mentés" -msgid "Popup closing..." -msgstr "A popup bezáródik..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Kiválasztott %(model)s szerkesztése" - -#, python-format -msgid "View selected %(model)s" -msgstr "Kiválasztott %(model)s megtekintése" - -#, python-format -msgid "Add another %(model)s" -msgstr "Újabb %(model)s hozzáadása" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Kiválasztott %(model)s törlése" +msgid "Popup closing…" +msgstr "A popup bezáródik…" msgid "Search" msgstr "Keresés" @@ -589,6 +573,18 @@ msgstr "Mentés és megtekintés" msgid "Close" msgstr "Bezárás" +#, python-format +msgid "Change selected %(model)s" +msgstr "Kiválasztott %(model)s szerkesztése" + +#, python-format +msgid "Add another %(model)s" +msgstr "Újabb %(model)s hozzáadása" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Kiválasztott %(model)s törlése" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Köszönjük hogy egy kis időt eltöltött ma a honlapunkon." diff --git a/django/contrib/admin/locale/id/LC_MESSAGES/django.mo b/django/contrib/admin/locale/id/LC_MESSAGES/django.mo index 2a76a535916d7..26df0693bf9de 100644 Binary files a/django/contrib/admin/locale/id/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/id/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/id/LC_MESSAGES/django.po b/django/contrib/admin/locale/id/LC_MESSAGES/django.po index 6a875a12cb668..f4b29b20029c6 100644 --- a/django/contrib/admin/locale/id/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/id/LC_MESSAGES/django.po @@ -2,10 +2,10 @@ # # Translators: # Claude Paroz , 2014 -# Fery Setiawan , 2015-2018 +# Fery Setiawan , 2015-2019 # Jannis Leidel , 2011 # M Asep Indrayana , 2015 -# oon arfiandwi (OonID) , 2016 +# oon arfiandwi , 2016 # rodin , 2011-2013 # rodin , 2013-2017 # Sutrisno Efendi , 2015 @@ -13,8 +13,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-06-18 23:35+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-26 23:57+0000\n" "Last-Translator: Fery Setiawan \n" "Language-Team: Indonesian (http://www.transifex.com/django/django/language/" "id/)\n" @@ -115,7 +115,7 @@ msgid "object id" msgstr "id objek" #. 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 "representasi objek" @@ -542,24 +542,8 @@ msgstr "Tampilkan semua" msgid "Save" msgstr "Simpan" -msgid "Popup closing..." -msgstr "Menutup jendela sembulan..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Ubah %(model)s yang dipilih" - -#, python-format -msgid "View selected %(model)s" -msgstr "Melihat%(model)sterpilih" - -#, python-format -msgid "Add another %(model)s" -msgstr "Tambahkan %(model)s yang lain" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Hapus %(model)s yang dipilih" +msgid "Popup closing…" +msgstr "Menutup popup..." msgid "Search" msgstr "Cari" @@ -588,6 +572,18 @@ msgstr "Simpan dan tampilkan" msgid "Close" msgstr "Tutup" +#, python-format +msgid "Change selected %(model)s" +msgstr "Ubah %(model)s yang dipilih" + +#, python-format +msgid "Add another %(model)s" +msgstr "Tambahkan %(model)s yang lain" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Hapus %(model)s yang dipilih" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Terima kasih telah menggunakan situs ini hari ini." diff --git a/django/contrib/admin/locale/is/LC_MESSAGES/django.mo b/django/contrib/admin/locale/is/LC_MESSAGES/django.mo index f16efbd9f3f43..1e029ac8fd604 100644 Binary files a/django/contrib/admin/locale/is/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/is/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/is/LC_MESSAGES/django.po b/django/contrib/admin/locale/is/LC_MESSAGES/django.po index bd8d939d17ac6..c6bbad91589c0 100644 --- a/django/contrib/admin/locale/is/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/is/LC_MESSAGES/django.po @@ -1,17 +1,18 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Dagur Ammendrup , 2019 # Hafsteinn Einarsson , 2011-2012 # Jannis Leidel , 2011 # Kári Tristan Helgason , 2013 -# Thordur Sigurdsson , 2016-2018 +# Thordur Sigurdsson , 2016-2019 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-06-22 20:44+0000\n" -"Last-Translator: Thordur Sigurdsson \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-05 12:48+0000\n" +"Last-Translator: Dagur Ammendrup \n" "Language-Team: Icelandic (http://www.transifex.com/django/django/language/" "is/)\n" "MIME-Version: 1.0\n" @@ -90,13 +91,13 @@ msgid "Remove" msgstr "Fjarlægja" msgid "Addition" -msgstr "" +msgstr "Viðbót" msgid "Change" msgstr "Breyta" msgid "Deletion" -msgstr "" +msgstr "Eyðing" msgid "action time" msgstr "tími aðgerðar" @@ -111,7 +112,7 @@ msgid "object id" msgstr "kenni hlutar" #. 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 "framsetning hlutar" @@ -534,25 +535,9 @@ msgstr "Sýna allt" msgid "Save" msgstr "Vista" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Sprettigluggi lokast..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Breyta völdu %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Skoða valið %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Bæta við %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Eyða völdu %(model)s" - msgid "Search" msgstr "Leita" @@ -581,6 +566,18 @@ msgstr "Vista og skoða" msgid "Close" msgstr "Loka" +#, python-format +msgid "Change selected %(model)s" +msgstr "Breyta völdu %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Bæta við %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Eyða völdu %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Takk fyrir að verja tíma í vefsíðuna í dag." diff --git a/django/contrib/admin/locale/it/LC_MESSAGES/django.mo b/django/contrib/admin/locale/it/LC_MESSAGES/django.mo index e978d93602d6f..72b2ffa20f79e 100644 Binary files a/django/contrib/admin/locale/it/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/it/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/it/LC_MESSAGES/django.po b/django/contrib/admin/locale/it/LC_MESSAGES/django.po index 2f2c9c650a1e4..d47979e0a0c2b 100644 --- a/django/contrib/admin/locale/it/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/it/LC_MESSAGES/django.po @@ -1,8 +1,8 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Topolino_Hackerino , 2017 -# Carlo Miron , 2018 +# AndreiCR , 2017 +# Carlo Miron , 2018-2019 # Denis Darii , 2011 # Flavio Curella , 2013 # Jannis Leidel , 2011 @@ -17,8 +17,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-07-30 21:10+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 10:24+0000\n" "Last-Translator: Carlo Miron \n" "Language-Team: Italian (http://www.transifex.com/django/django/language/" "it/)\n" @@ -119,7 +119,7 @@ msgid "object id" msgstr "id dell'oggetto" #. 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 "rappr. dell'oggetto" @@ -553,25 +553,9 @@ msgstr "Mostra tutto" msgid "Save" msgstr "Salva" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Chiusura popup..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Modifica la selezione %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Visualizza il %(model)s selezionato" - -#, python-format -msgid "Add another %(model)s" -msgstr "Aggiungi un altro %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Elimina la selezione %(model)s" - msgid "Search" msgstr "Cerca" @@ -600,6 +584,18 @@ msgstr "Salva e visualizza" msgid "Close" msgstr "Chiudi" +#, python-format +msgid "Change selected %(model)s" +msgstr "Modifica la selezione %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Aggiungi un altro %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Elimina la selezione %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi." diff --git a/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo index 7743bd897c7b0..2a968da0922b5 100644 Binary files a/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ja/LC_MESSAGES/django.po b/django/contrib/admin/locale/ja/LC_MESSAGES/django.po index 8220896ef9214..afa002d1a49c5 100644 --- a/django/contrib/admin/locale/ja/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ja/LC_MESSAGES/django.po @@ -3,6 +3,7 @@ # Translators: # Claude Paroz , 2016 # Jannis Leidel , 2011 +# Shinichi Katsumata , 2019 # Shinya Okano , 2012-2018 # Tetsuya Morimoto , 2011 # 上田慶祐 , 2015 @@ -10,9 +11,9 @@ 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-06-20 04:31+0000\n" -"Last-Translator: Shinya Okano \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-19 07:00+0000\n" +"Last-Translator: Shinichi Katsumata \n" "Language-Team: Japanese (http://www.transifex.com/django/django/language/" "ja/)\n" "MIME-Version: 1.0\n" @@ -112,7 +113,7 @@ msgid "object id" msgstr "オブジェクト 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 "オブジェクトの文字列表現" @@ -533,25 +534,9 @@ msgstr "全件表示" msgid "Save" msgstr "保存" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "ポップアップを閉じています..." -#, python-format -msgid "Change selected %(model)s" -msgstr "選択された %(model)s の変更" - -#, python-format -msgid "View selected %(model)s" -msgstr "選択された%(model)sの表示" - -#, python-format -msgid "Add another %(model)s" -msgstr "%(model)s の追加" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "選択された %(model)s を削除" - msgid "Search" msgstr "検索" @@ -579,6 +564,18 @@ msgstr "保存して表示" msgid "Close" msgstr "閉じる" +#, python-format +msgid "Change selected %(model)s" +msgstr "選択された %(model)s の変更" + +#, python-format +msgid "Add another %(model)s" +msgstr "%(model)s の追加" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "選択された %(model)s を削除" + msgid "Thanks for spending some quality time with the Web site today." msgstr "ご利用ありがとうございました。" diff --git a/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo index 67e0e35e448fc..ed45180dd7220 100644 Binary files a/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ka/LC_MESSAGES/django.po b/django/contrib/admin/locale/ka/LC_MESSAGES/django.po index 1edd62043ed52..75aee9c582a56 100644 --- a/django/contrib/admin/locale/ka/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ka/LC_MESSAGES/django.po @@ -2,22 +2,22 @@ # # Translators: # André Bouatchidzé , 2013-2015 -# avsd05 , 2011 +# David A. , 2011 # Jannis Leidel , 2011 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-09-19 16:41+0000\n" -"Last-Translator: Jannis Leidel \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" "Language-Team: Georgian (http://www.transifex.com/django/django/language/" "ka/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ka\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -88,6 +88,15 @@ msgstr "კიდევ ერთი %(verbose_name)s-ის დამატე msgid "Remove" msgstr "წაშლა" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "შეცვლა" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "მოქმედების დრო" @@ -101,7 +110,7 @@ msgid "object id" msgstr "ობიექტის 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 "ობიექტის წარმ." @@ -165,8 +174,10 @@ msgid "" 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 @@ -176,12 +187,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -220,6 +232,10 @@ msgstr "დავამატოთ %s" msgid "Change %s" msgstr "შევცვალოთ %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "მონაცემთა ბაზის შეცდომა" @@ -227,11 +243,13 @@ msgstr "მონაცემთა ბაზის შეცდომა" msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s წარმატებით შეიცვალა." +msgstr[1] "%(count)s %(name)s წარმატებით შეიცვალა." #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s-ია არჩეული" +msgstr[1] "%(total_count)s-ია არჩეული" #, python-format msgid "0 of %(cnt)s selected" @@ -324,7 +342,7 @@ msgid "Change password" msgstr "პაროლის შეცვლა" msgid "Please correct the error below." -msgstr "გთხოვთ, გაასწოროთ შეცდომები." +msgstr "" msgid "Please correct the errors below." msgstr "გთხოვთ, შეასწოროთ ქვემოთმოყვანილი შეცდომები." @@ -435,8 +453,8 @@ msgstr "" "დარწმუნებული ხართ, რომ გსურთ %(objects_name)s ობიექტის წაშლა? ყველა შემდეგი " "ობიექტი, და მათზე დამოკიდებული ჩანაწერები წაშლილი იქნება:" -msgid "Change" -msgstr "შეცვლა" +msgid "View" +msgstr "" msgid "Delete?" msgstr "წავშალოთ?" @@ -455,8 +473,8 @@ 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 "" @@ -510,21 +528,9 @@ msgstr "ვაჩვენოთ ყველა" msgid "Save" msgstr "შევინახოთ" -msgid "Popup closing..." -msgstr "" - -#, python-format -msgid "Change selected %(model)s" -msgstr "მონიშნული %(model)s-ის შეცვლა" - -#, python-format -msgid "Add another %(model)s" +msgid "Popup closing…" msgstr "" -#, python-format -msgid "Delete selected %(model)s" -msgstr "მონიშნული %(model)s-ის წაშლა" - msgid "Search" msgstr "ძებნა" @@ -532,6 +538,7 @@ msgstr "ძებნა" msgid "%(counter)s result" msgid_plural "%(counter)s results" msgstr[0] "%(counter)s შედეგი" +msgstr[1] "%(counter)s შედეგი" #, python-format msgid "%(full_result_count)s total" @@ -546,6 +553,24 @@ msgstr "შევინახოთ და დავამატოთ ახა msgid "Save and continue editing" msgstr "შევინახოთ და გავაგრძელოთ რედაქტირება" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + +#, python-format +msgid "Change selected %(model)s" +msgstr "მონიშნული %(model)s-ის შეცვლა" + +#, python-format +msgid "Add another %(model)s" +msgstr "" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "მონიშნული %(model)s-ის წაშლა" + msgid "Thanks for spending some quality time with the Web site today." msgstr "გმადლობთ, რომ დღეს ამ საიტთან მუშაობას დაუთმეთ დრო." @@ -654,6 +679,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/ka/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo index 022d5b88af888..a66299c892fe3 100644 Binary files a/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po index 4023f133e443d..65ee60f060528 100644 --- a/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po @@ -2,13 +2,13 @@ # # Translators: # André Bouatchidzé , 2013,2015 -# avsd05 , 2011 +# David A. , 2011 # Jannis Leidel , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Georgian (http://www.transifex.com/django/django/language/" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ka\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #, javascript-format msgid "Available %s" @@ -74,6 +74,7 @@ msgstr "დააწკაპუნეთ ყველა არჩეული msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "%(cnt)s-დან არჩეულია %(sel)s" +msgstr[1] "%(cnt)s-დან არჩეულია %(sel)s" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -98,18 +99,32 @@ msgstr "" "აგირჩევიათ მოქმედება, მაგრამ ცალკეულ ველებში ცვლილებები არ გაგიკეთებიათ! " "სავარაუდოდ, ეძებთ ღილაკს \"Go\", და არა \"შენახვა\"" +msgid "Now" +msgstr "ახლა" + +msgid "Midnight" +msgstr "შუაღამე" + +msgid "6 a.m." +msgstr "დილის 6 სთ" + +msgid "Noon" +msgstr "შუადღე" + +msgid "6 p.m." +msgstr "" + #, 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] "შენიშვნა: თქვენ ხართ %s საათით წინ სერვერის დროზე." +msgstr[1] "შენიშვნა: თქვენ ხართ %s საათით წინ სერვერის დროზე." #, javascript-format msgid "Note: You are %s hour behind server time." msgid_plural "Note: You are %s hours behind server time." msgstr[0] "შენიშვნა: თქვენ ხართ %s საათით უკან სერვერის დროზე." - -msgid "Now" -msgstr "ახლა" +msgstr[1] "შენიშვნა: თქვენ ხართ %s საათით უკან სერვერის დროზე." msgid "Choose a Time" msgstr "" @@ -117,18 +132,6 @@ msgstr "" msgid "Choose a time" msgstr "ავირჩიოთ დრო" -msgid "Midnight" -msgstr "შუაღამე" - -msgid "6 a.m." -msgstr "დილის 6 სთ" - -msgid "Noon" -msgstr "შუადღე" - -msgid "6 p.m." -msgstr "" - msgid "Cancel" msgstr "უარი" diff --git a/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo b/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo index d04c6ee7ca4d3..abc3c54e8bdd0 100644 Binary files a/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/kk/LC_MESSAGES/django.po b/django/contrib/admin/locale/kk/LC_MESSAGES/django.po index 76d78bc5219ce..6d9625afd82e5 100644 --- a/django/contrib/admin/locale/kk/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/kk/LC_MESSAGES/django.po @@ -9,15 +9,15 @@ 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-09-19 16:41+0000\n" -"Last-Translator: Jannis Leidel \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" "Language-Team: Kazakh (http://www.transifex.com/django/django/language/kk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kk\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -86,6 +86,15 @@ msgstr "Тағы басқа %(verbose_name)s кос" msgid "Remove" msgstr "Өшіру" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Өзгетру" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "әрекет уақыты" @@ -99,7 +108,7 @@ msgid "object id" msgstr "объекттің id-i" #. 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 "объекттің repr-i" @@ -163,8 +172,10 @@ msgid "" 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 @@ -174,12 +185,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -217,6 +229,10 @@ msgstr "%s қосу" msgid "Change %s" msgstr "%s өзгету" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Мәліметтер базасының қатесі" @@ -227,6 +243,10 @@ msgstr[0] "" "one: %(count)s %(name)s өзгертілді.\n" "\n" "other: %(count)s %(name)s таңдалғандарының барі өзгертілді." +msgstr[1] "" +"one: %(count)s %(name)s өзгертілді.\n" +"\n" +"other: %(count)s %(name)s таңдалғандарының барі өзгертілді." #, python-format msgid "%(total_count)s selected" @@ -235,6 +255,10 @@ msgstr[0] "" "one: %(total_count)s таңдалды\n" "\n" "other: Барлығы %(total_count)s таңдалды" +msgstr[1] "" +"one: %(total_count)s таңдалды\n" +"\n" +"other: Барлығы %(total_count)s таңдалды" #, python-format msgid "0 of %(cnt)s selected" @@ -326,8 +350,6 @@ msgstr "Құпия сөзді өзгерту" msgid "Please correct the error below." msgstr "" -"one: Астындағы қатені дұрыстаңыз.\n" -"other: Астындағы қателерді дұрыстаңыз." msgid "Please correct the errors below." msgstr "" @@ -437,8 +459,8 @@ msgstr "" "Таңдаған %(objects_name)s объектіңізді өшіруге сенімдісіз бе? Себебі, " "таңдағын объектіліріңіз және онымен байланыстағы барлық элементтер жойылады:" -msgid "Change" -msgstr "Өзгетру" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Өшіру?" @@ -457,8 +479,8 @@ msgstr "" 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 "" @@ -510,19 +532,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" @@ -532,6 +542,7 @@ msgstr "Іздеу" msgid "%(counter)s result" msgid_plural "%(counter)s results" msgstr[0] "%(counter)s нәтиже" +msgstr[1] "%(counter)s нәтиже" #, python-format msgid "%(full_result_count)s total" @@ -546,6 +557,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 "Бүгін Веб-торапқа уақыт бөлгеніңіз үшін рахмет." @@ -646,6 +675,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/kk/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo index 7eb261766cdb8..0b65151380cfe 100644 Binary files a/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po index b5da79fb45c84..9c51f35b87b6f 100644 --- a/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Kazakh (http://www.transifex.com/django/django/language/kk/)\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: kk\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #, javascript-format msgid "Available %s" @@ -66,6 +66,7 @@ msgstr "" msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "%(cnt)s-ң %(sel)s-ы(і) таңдалды" +msgstr[1] "%(cnt)s-ң %(sel)s-ы(і) таңдалды" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -90,18 +91,32 @@ msgstr "" "Сіз Сақтау батырмасына қарағанда, Go(Алға) батырмасын іздеп отырған " "боларсыз, себебі ешқандай өзгеріс жасамай, әрекет жасадыңыз." +msgid "Now" +msgstr "Қазір" + +msgid "Midnight" +msgstr "Түн жарым" + +msgid "6 a.m." +msgstr "06" + +msgid "Noon" +msgstr "Талтүс" + +msgid "6 p.m." +msgstr "" + #, 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] "" +msgstr[1] "" #, javascript-format msgid "Note: You are %s hour behind server time." msgid_plural "Note: You are %s hours behind server time." msgstr[0] "" - -msgid "Now" -msgstr "Қазір" +msgstr[1] "" msgid "Choose a Time" msgstr "" @@ -109,18 +124,6 @@ msgstr "" msgid "Choose a time" msgstr "Уақытты таңда" -msgid "Midnight" -msgstr "Түн жарым" - -msgid "6 a.m." -msgstr "06" - -msgid "Noon" -msgstr "Талтүс" - -msgid "6 p.m." -msgstr "" - msgid "Cancel" msgstr "Болдырмау" diff --git a/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo index e2614c36427c2..f214f3922513f 100644 Binary files a/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ko/LC_MESSAGES/django.po b/django/contrib/admin/locale/ko/LC_MESSAGES/django.po index 37427ee360fa7..ef78ed22d3f99 100644 --- a/django/contrib/admin/locale/ko/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,10 @@ # # Translators: # Jiyoon, Ha , 2016 +# Gihun Ham , 2018 +# Hang Park , 2019 # Hoseok Lee , 2016 -# Ian Y. Choi , 2015 +# Ian Y. Choi , 2015,2019 # Jaehong Kim , 2011 # Jannis Leidel , 2011 # Le Tartuffe , 2014,2016 @@ -14,9 +16,9 @@ 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-07-18 09:00+0000\n" -"Last-Translator: Noh Seho \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-29 03:14+0000\n" +"Last-Translator: Ian Y. Choi \n" "Language-Team: Korean (http://www.transifex.com/django/django/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -115,7 +117,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 "오브젝트 표현" @@ -468,7 +470,7 @@ msgstr "" "템들이 모두 삭제됩니다:" msgid "View" -msgstr "" +msgstr "보기" msgid "Delete?" msgstr "삭제" @@ -543,24 +545,8 @@ msgstr "모두 표시" msgid "Save" msgstr "저장" -msgid "Popup closing..." -msgstr "팝업 닫는 중..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "선택된 %(model)s 변경" - -#, python-format -msgid "View selected %(model)s" -msgstr "" - -#, python-format -msgid "Add another %(model)s" -msgstr "%(model)s 추가" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "선택된 %(model)s 제거" +msgid "Popup closing…" +msgstr "팝업 닫는중..." msgid "Search" msgstr "검색" @@ -584,11 +570,23 @@ msgid "Save and continue editing" msgstr "저장 및 편집 계속" msgid "Save and view" -msgstr "저정하고 조회하기" +msgstr "저장하고 조회하기" msgid "Close" msgstr "닫기" +#, python-format +msgid "Change selected %(model)s" +msgstr "선택된 %(model)s 변경" + +#, python-format +msgid "Add another %(model)s" +msgstr "%(model)s 추가" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "선택된 %(model)s 제거" + msgid "Thanks for spending some quality time with the Web site today." msgstr "사이트를 이용해 주셔서 고맙습니다." @@ -701,7 +699,7 @@ msgstr "변경할 %s 선택" #, python-format msgid "Select %s to view" -msgstr "" +msgstr "보기위한 1%s 를(을) 선택" msgid "Date:" msgstr "날짜:" diff --git a/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo b/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo index 6fa9a048bd722..b225f663d4ec3 100644 Binary files a/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/lt/LC_MESSAGES/django.po b/django/contrib/admin/locale/lt/LC_MESSAGES/django.po index fcdf18dfef4ed..0c93418a630f6 100644 --- a/django/contrib/admin/locale/lt/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/lt/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Jannis Leidel , 2011 # lauris , 2011 -# Matas Dailyda , 2015-2018 +# Matas Dailyda , 2015-2019 # Nikolajus Krauklis , 2013 # Simonas Kazlauskas , 2012-2013 # sirex , 2011 @@ -11,8 +11,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-14 12:28+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 10:32+0000\n" "Last-Translator: Matas Dailyda \n" "Language-Team: Lithuanian (http://www.transifex.com/django/django/language/" "lt/)\n" @@ -115,7 +115,7 @@ msgid "object id" msgstr "objekto 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 "objekto repr" @@ -544,24 +544,8 @@ msgstr "Rodyti visus" msgid "Save" msgstr "Išsaugoti" -msgid "Popup closing..." -msgstr "Langas užsidaro..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Keisti pasirinktus %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Peržiūrėti pasirinktus %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Pridėti dar vieną %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Pašalinti pasirinktus %(model)s" +msgid "Popup closing…" +msgstr "Iškylantysis langas užsidaro..." msgid "Search" msgstr "Ieškoti" @@ -593,6 +577,18 @@ msgstr "Išsaugoti ir peržiūrėti" msgid "Close" msgstr "Uždaryti" +#, python-format +msgid "Change selected %(model)s" +msgstr "Keisti pasirinktus %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Pridėti dar vieną %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Pašalinti pasirinktus %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Dėkui už šiandien tinklalapyje turiningai praleistą laiką." diff --git a/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo b/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo index 5c2ec1ac6b181..d68a14a7f9bd1 100644 Binary files a/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/lv/LC_MESSAGES/django.po b/django/contrib/admin/locale/lv/LC_MESSAGES/django.po index ed2f0f1ca4338..6535d1bebe6aa 100644 --- a/django/contrib/admin/locale/lv/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/lv/LC_MESSAGES/django.po @@ -6,13 +6,14 @@ # NullIsNot0 , 2018 # Jannis Leidel , 2011 # Māris Nartišs , 2016 +# NullIsNot0 , 2019 # peterisb , 2016 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-06-03 12:04+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-18 16:58+0000\n" "Last-Translator: NullIsNot0 \n" "Language-Team: Latvian (http://www.transifex.com/django/django/language/" "lv/)\n" @@ -114,7 +115,7 @@ msgid "object id" msgstr "objekta 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 "objekta attēlojums" @@ -540,25 +541,9 @@ msgstr "Rādīt visu" msgid "Save" msgstr "Saglabāt" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Logs aizveras..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Mainīt izvēlēto %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Apskatīt izvēlēto %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Pievienot citu %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Dzēst izvēlēto %(model)s" - msgid "Search" msgstr "Meklēt" @@ -588,6 +573,18 @@ msgstr "Saglabāt un apskatīt" msgid "Close" msgstr "Aizvērt" +#, python-format +msgid "Change selected %(model)s" +msgstr "Mainīt izvēlēto %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Pievienot citu %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Dzēst izvēlēto %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Paldies par pavadīto laiku mājas lapā." diff --git a/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo index 400c41e6e47ba..dd39d0a9b36df 100644 Binary files a/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ml/LC_MESSAGES/django.po b/django/contrib/admin/locale/ml/LC_MESSAGES/django.po index 3f951f88437e1..776202c6f7266 100644 --- a/django/contrib/admin/locale/ml/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ml/LC_MESSAGES/django.po @@ -2,16 +2,19 @@ # # Translators: # Aby Thomas , 2014 +# Hrishikesh , 2019 # Jannis Leidel , 2011 +# JOMON THOMAS LOBO , 2019 # Junaid , 2012 +# MUHAMMED RAMEEZ , 2019 # Rajeesh Nair , 2011-2013 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-09-23 18:54+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-03-26 07:56+0000\n" +"Last-Translator: JOMON THOMAS LOBO \n" "Language-Team: Malayalam (http://www.transifex.com/django/django/language/" "ml/)\n" "MIME-Version: 1.0\n" @@ -22,7 +25,7 @@ msgstr "" #, python-format msgid "Successfully deleted %(count)d %(items)s." -msgstr "%(count)d %(items)s നീക്കം ചെയ്തു." +msgstr "%(count)d %(items)sവിജയകയരമായി നീക്കം ചെയ്തു." #, python-format msgid "Cannot delete %(name)s" @@ -36,10 +39,10 @@ msgid "Delete selected %(verbose_name_plural)s" msgstr "തെരഞ്ഞെടുത്ത %(verbose_name_plural)s നീക്കം ചെയ്യുക." msgid "Administration" -msgstr "ഭരണം" +msgstr "കാര്യനിർവഹണം" msgid "All" -msgstr "എല്ലാം" +msgstr "മുഴുവനും" msgid "Yes" msgstr "അതെ" @@ -48,16 +51,16 @@ msgid "No" msgstr "അല്ല" msgid "Unknown" -msgstr "അജ്ഞാതം" +msgstr "അറിയില്ല" msgid "Any date" -msgstr "ഏതെങ്കിലും തീയതി" +msgstr "ഏതെങ്കിലും തീയ്യതി" msgid "Today" msgstr "ഇന്ന്" msgid "Past 7 days" -msgstr "കഴിഞ്ഞ ഏഴു ദിവസം" +msgstr "കഴിഞ്ഞ 7 ദിവസങ്ങൾ" msgid "This month" msgstr "ഈ മാസം" @@ -66,46 +69,54 @@ msgid "This year" msgstr "ഈ വര്‍ഷം" msgid "No date" -msgstr "" +msgstr "തിയ്യതിയില്ല " msgid "Has date" -msgstr "" +msgstr "തിയ്യതിയുണ്ട്" #, python-format msgid "" "Please enter the correct %(username)s and password for a staff account. Note " "that both fields may be case-sensitive." msgstr "" -"ദയവായി സ്റ്റാഫ് അക്കൗണ്ടിനുവേണ്ടിയുള്ള ശരിയായ %(username)s -ഉം പാസ്‌വേഡും നല്കുക. രണ്ടു " -"കള്ളികളിലും അക്ഷരങ്ങള്‍ (ഇംഗ്ലീഷിലെ) വലിയക്ഷരമോ ചെറിയക്ഷരമോ എന്നത് പ്രധാനമാണെന്നത് " -"ശ്രദ്ധിയ്ക്കുക." +"ദയവായി സ്റ്റാഫ് അക്കൗണ്ടിനുവേണ്ടിയുള്ള ശരിയായ %(username)s പാസ്‌വേഡ് എന്നിവ നൽകുക. രണ്ടു " +"കള്ളികളിലും അക്ഷരങ്ങള്‍ വലിയക്ഷരമോ ചെറിയക്ഷരമോ എന്നത് പ്രധാനമാണെന്നത് ശ്രദ്ധിയ്ക്കുക." msgid "Action:" msgstr "ആക്ഷന്‍" #, python-format msgid "Add another %(verbose_name)s" -msgstr "%(verbose_name)s ഒന്നു കൂടി ചേര്‍ക്കുക" +msgstr "മറ്റൊരു %(verbose_name)s കൂടി ചേര്‍ക്കുക" msgid "Remove" -msgstr "നീക്കം ചെയ്യുക" +msgstr "കളയുക" + +msgid "Addition" +msgstr "ചേർക്കുക" + +msgid "Change" +msgstr "മാറ്റുക" + +msgid "Deletion" +msgstr "കളയുക" msgid "action time" -msgstr "ആക്ഷന്‍ സമയം" +msgstr "നടന്ന സമയം" msgid "user" -msgstr "" +msgstr "ഉപയോക്താവ്" msgid "content type" -msgstr "" +msgstr "കണ്ടന്റ് ടൈപ്പ്" msgid "object id" -msgstr "ഒബ്ജെക്ട് ഐഡി" +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 "ഒബ്ജെക്ട് സൂചന" +msgstr "ഒബ്ജെക്ട് റെപ്രസന്റേഷൻ" msgid "action flag" msgstr "ആക്ഷന്‍ ഫ്ളാഗ്" @@ -114,10 +125,10 @@ msgid "change message" msgstr "സന്ദേശം മാറ്റുക" msgid "log entry" -msgstr "ലോഗ് എന്ട്രി" +msgstr "ലോഗ് എൻട്രി" msgid "log entries" -msgstr "ലോഗ് എന്ട്രികള്‍" +msgstr "ലോഗ് എൻട്രികള്‍" #, python-format msgid "Added \"%(object)s\"." @@ -132,14 +143,14 @@ msgid "Deleted \"%(object)s.\"" msgstr "\"%(object)s\" നീക്കം ചെയ്തു." msgid "LogEntry Object" -msgstr "ലോഗ്‌എന്‍ട്രി വസ്തു" +msgstr "ലോഗ്‌എന്‍ട്രി ഒബ്ജെക്റ്റ്" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr " {name} \"{object}\" ചേർത്തിരിക്കുന്നു ." msgid "Added." -msgstr "" +msgstr "ചേര്‍ത്തു." msgid "and" msgstr "ഉം" @@ -154,7 +165,7 @@ msgstr "" #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "" +msgstr " {name} \"{object}\". ഡിലീറ്റ് ചെയ്തു " msgid "No fields changed." msgstr "ഒരു മാറ്റവുമില്ല." @@ -167,23 +178,28 @@ msgid "" msgstr "" #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" വിജയകരമായി ചേർത്തിരിക്കുന്നു " + +msgid "You may edit it again below." +msgstr "താഴെ നിങ്ങൾക്കിത് വീണ്ടും എഡിറ്റുചെയ്യാം" #, python-brace-format msgid "" "The {name} \"{obj}\" was added successfully. You may add another {name} " "below." msgstr "" +" {name} \"{obj}\" വിജയകരമായി ചേർത്തിരിക്കുന്നു . നിങ്ങൾക്ക് പുതിയ ഒരു {name} താഴെ " +"ചേർക്കാവുന്നതാണ് " #, 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -202,7 +218,7 @@ msgid "" msgstr "ആക്ഷന്‍ നടപ്പിലാക്കേണ്ട വകകള്‍ തെരഞ്ഞെടുക്കണം. ഒന്നും മാറ്റിയിട്ടില്ല." msgid "No action selected." -msgstr "ആക്ഷനൊന്നും തെരഞ്ഞെടുത്തില്ല." +msgstr "ആക്ഷനൊന്നും തെരഞ്ഞെടുത്തിട്ടില്ല." #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." @@ -220,8 +236,12 @@ msgstr "%s ചേര്‍ക്കുക" msgid "Change %s" msgstr "%s മാറ്റാം" +#, python-format +msgid "View %s" +msgstr "%s കാണുക" + msgid "Database error" -msgstr "ഡേറ്റാബേസ് തകരാറാണ്." +msgstr "ഡേറ്റാബേസ് എറർ." #, python-format msgid "%(count)s %(name)s was changed successfully." @@ -233,11 +253,11 @@ msgstr[1] "%(count)s %(name)s ല്‍ മാറ്റം വരുത്തി msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s തെരഞ്ഞെടുത്തു." -msgstr[1] "%(total_count)sഉം തെരഞ്ഞെടുത്തു." +msgstr[1] "%(total_count)sമൊത്തമായി തെരഞ്ഞെടുത്തു." #, python-format msgid "0 of %(cnt)s selected" -msgstr "%(cnt)s ല്‍ ഒന്നും തെരഞ്ഞെടുത്തില്ല." +msgstr "%(cnt)s ല്‍ 0 തിരഞ്ഞെടുത്തിരിക്കുന്നു" #, python-format msgid "Change history: %s" @@ -261,20 +281,20 @@ msgid "Django site admin" msgstr "ജാംഗോ സൈറ്റ് അഡ്മിന്‍" msgid "Django administration" -msgstr "ജാംഗോ ഭരണം" +msgstr "ജാംഗോ കാര്യനിർവഹണം" msgid "Site administration" -msgstr "സൈറ്റ് ഭരണം" +msgstr "സൈറ്റ് കാര്യനിർവഹണം" msgid "Log in" -msgstr "ലോഗ്-ഇന്‍" +msgstr "ലോഗിൻ" #, python-format msgid "%(app)s administration" -msgstr "%(app)s ഭരണം" +msgstr "%(app)s കാര്യനിർവഹണം" msgid "Page not found" -msgstr "പേജ് കണ്ടില്ല" +msgstr "പേജ് കണ്ടെത്താനായില്ല" msgid "We're sorry, but the requested page could not be found." msgstr "ക്ഷമിക്കണം, ആവശ്യപ്പെട്ട പേജ് കണ്ടെത്താന്‍ കഴിഞ്ഞില്ല." @@ -283,29 +303,29 @@ msgid "Home" msgstr "പൂമുഖം" msgid "Server error" -msgstr "സെര്‍വര്‍ തകരാറാണ്" +msgstr "സെര്‍വറിൽ എന്തോ പ്രശ്നം" msgid "Server error (500)" -msgstr "സെര്‍വര്‍ തകരാറാണ് (500)" +msgstr "സെര്‍വറിൽ എന്തോ പ്രശ്നം (500)" msgid "Server Error (500)" -msgstr "സെര്‍വര്‍ തകരാറാണ് (500)" +msgstr "സെര്‍വറിൽ എന്തോ പ്രശ്നം (500)" msgid "" "There's been an error. It's been reported to the site administrators via " "email and should be fixed shortly. Thanks for your patience." msgstr "" -"എന്തോ തകരാറ് സംഭവിച്ചു. ബന്ധപ്പെട്ട സൈറ്റ് ഭരണകർത്താക്കളെ ഈമെയിൽ മുഖാന്തരം അറിയിച്ചിട്ടുണ്ട്. " -"ഷമയൊടെ കത്തിരിക്കുനതിന് നന്ദി." +"എന്തോ പ്രശ്നം സംഭവിച്ചിരിക്കുന്നു. സൈറ്റിന്റെ കാര്യനിർവാഹകരെ ഈമെയിൽ മുഖാന്തരം വിവരം " +"അറിയിച്ചിട്ടുണ്ട്. ക്ഷമയോടെ കത്തിരിക്കുനതിന് നന്ദി." msgid "Run the selected action" msgstr "തെരഞ്ഞെടുത്ത ആക്ഷന്‍ നടപ്പിലാക്കുക" msgid "Go" -msgstr "Go" +msgstr "തുടരുക" msgid "Click here to select the objects across all pages" -msgstr "എല്ലാ പേജിലേയും വസ്തുക്കള്‍ തെരഞ്ഞെടുക്കാന്‍ ഇവിടെ ക്ലിക് ചെയ്യുക." +msgstr "എല്ലാ പേജിലേയും ഒബ്ജക്റ്റുകൾ തെരഞ്ഞെടുക്കാന്‍ ഇവിടെ ക്ലിക് ചെയ്യുക." #, python-format msgid "Select all %(total_count)s %(module_name)s" @@ -326,7 +346,7 @@ msgid "Change password" msgstr "പാസ് വേര്‍ഡ് മാറ്റുക." msgid "Please correct the error below." -msgstr "ദയവായി താഴെയുള്ള തെറ്റുകള്‍ പരിഹരിക്കുക." +msgstr "താഴെ പറയുന്ന തെറ്റുകൾ തിരുത്തുക " msgid "Please correct the errors below." msgstr "ദയവായി താഴെയുള്ള തെറ്റുകള്‍ പരിഹരിക്കുക." @@ -339,7 +359,7 @@ msgid "Welcome," msgstr "സ്വാഗതം, " msgid "View site" -msgstr "" +msgstr "സൈറ്റ് കാണുക " msgid "Documentation" msgstr "സഹായക്കുറിപ്പുകള്‍" @@ -400,13 +420,13 @@ msgstr "" "താഴെപ്പറയുന്ന വസ്തുക്കളെല്ലാം നീക്കം ചെയ്യുന്നതാണ്:" msgid "Objects" -msgstr "" +msgstr "വസ്തുക്കൾ" msgid "Yes, I'm sure" msgstr "അതെ, തീര്‍ച്ചയാണ്" msgid "No, take me back" -msgstr "" +msgstr "ഇല്ല, എന്നെ തിരിച്ചെടുക്കൂ" msgid "Delete multiple objects" msgstr "ഒന്നിലേറെ വസ്തുക്കള്‍ നീക്കം ചെയ്യുക" @@ -436,8 +456,8 @@ msgstr "" "തിരഞ്ഞെടുക്കപ്പെട്ട %(objects_name)s നീക്കം ചെയ്യണമെന്നു ഉറപ്പാണോ ? തിരഞ്ഞെടുക്കപ്പെട്ടതും " "അതിനോട് ബന്ധപ്പെട്ടതും ആയ എല്ലാ താഴെപ്പറയുന്ന വസ്തുക്കളും നീക്കം ചെയ്യുന്നതാണ്:" -msgid "Change" -msgstr "മാറ്റുക" +msgid "View" +msgstr "കാണുക" msgid "Delete?" msgstr "ഡിലീറ്റ് ചെയ്യട്ടെ?" @@ -447,7 +467,7 @@ msgid " By %(filter_title)s " msgstr "%(filter_title)s ആൽ" msgid "Summary" -msgstr "" +msgstr "ചുരുക്കം" #, python-format msgid "Models in the %(name)s application" @@ -456,14 +476,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 "" msgid "My actions" -msgstr "" +msgstr "എന്റെ പ്രവർത്തനം" msgid "None available" msgstr "ഒന്നും ലഭ്യമല്ല" @@ -484,6 +504,8 @@ 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 "രഹസ്യവാക്കോ ഉപയോക്തൃനാമമോ മറന്നുപോയോ?" @@ -492,17 +514,17 @@ msgid "Date/time" msgstr "തീയതി/സമയം" msgid "User" -msgstr "യൂസര്‍" +msgstr "ഉപയോക്താവ്" msgid "Action" -msgstr "ആക്ഷന്‍" +msgstr "പ്രവർത്തി" msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"ഈ വസ്തുവിന്റെ മാറ്റങ്ങളുടെ ചരിത്രം ലഭ്യമല്ല. ഒരുപക്ഷെ ഇത് അഡ്മിന്‍ സൈറ്റ് വഴി " -"ചേര്‍ത്തതായിരിക്കില്ല." +"ഈ വസ്തുവിന്റെ മാറ്റങ്ങളുടെ ചരിത്രം ലഭ്യമല്ല. ഒരുപക്ഷെ ഇത് അഡ്മിന്‍ സൈറ്റ് വഴി ചേര്‍" +"ത്തതായിരിക്കില്ല." msgid "Show all" msgstr "എല്ലാം കാണട്ടെ" @@ -510,20 +532,8 @@ 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" -msgstr "" +msgid "Popup closing…" +msgstr "പോപ്പ് അപ്പ് അടക്കുക " msgid "Search" msgstr "പരതുക" @@ -547,6 +557,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 "തിരഞ്ഞെടുത്തത് ഇല്ലാതാക്കുക%(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "ഈ വെബ് സൈറ്റില്‍ കുറെ നല്ല സമയം ചെലവഴിച്ചതിനു നന്ദി." @@ -655,8 +683,12 @@ msgstr "%s തെരഞ്ഞെടുക്കൂ" msgid "Select %s to change" msgstr "മാറ്റാനുള്ള %s തെരഞ്ഞെടുക്കൂ" +#, python-format +msgid "Select %s to view" +msgstr "%s കാണാൻ തിരഞ്ഞെടുക്കുക" + msgid "Date:" -msgstr "തീയതി:" +msgstr "തിയ്യതി:" msgid "Time:" msgstr "സമയം:" @@ -665,7 +697,7 @@ msgid "Lookup" msgstr "തിരയുക" msgid "Currently:" -msgstr "പ്രചാരത്തിൽ:" +msgstr "നിലവിൽ:" msgid "Change:" -msgstr "മാറ്റം" +msgstr "മാറ്റം:" diff --git a/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo index f81e14606ded4..60bef7df7f004 100644 Binary files a/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po index 58882458bd806..803362f8c6d66 100644 --- a/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po @@ -3,14 +3,15 @@ # Translators: # Aby Thomas , 2014 # Jannis Leidel , 2011 +# MUHAMMED RAMEEZ , 2019 # Rajeesh Nair , 2012 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: Jannis Leidel \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2019-03-09 08:56+0000\n" +"Last-Translator: MUHAMMED RAMEEZ \n" "Language-Team: Malayalam (http://www.transifex.com/django/django/language/" "ml/)\n" "MIME-Version: 1.0\n" @@ -98,6 +99,21 @@ msgstr "" "നിങ്ങള്‍ ഒരു ആക്ഷന്‍ തെരഞ്ഞെടുത്തിട്ടുണ്ട്. കളങ്ങളില്‍ സേവ് ചെയ്യാത്ത മാറ്റങ്ങള്‍ ഇല്ല. നിങ്ങള്‍സേവ് ബട്ടണ്‍ " "തന്നെയാണോ അതോ ഗോ ബട്ടണാണോ ഉദ്ദേശിച്ചത്." +msgid "Now" +msgstr "ഇപ്പോള്‍" + +msgid "Midnight" +msgstr "അര്‍ധരാത്രി" + +msgid "6 a.m." +msgstr "6 a.m." + +msgid "Noon" +msgstr "ഉച്ച" + +msgid "6 p.m." +msgstr "6 p.m" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -110,27 +126,12 @@ msgid_plural "Note: You are %s hours behind server time." msgstr[0] "ഒർക്കുക: സെർവർ സമയത്തിനെക്കാളും നിങ്ങൾ %s സമയം പിന്നിലാണ്." msgstr[1] "ഒർക്കുക: സെർവർ സമയത്തിനെക്കാളും നിങ്ങൾ %s സമയം പിന്നിലാണ്." -msgid "Now" -msgstr "ഇപ്പോള്‍" - msgid "Choose a Time" -msgstr "" +msgstr "സമയം തിരഞ്ഞെടുക്കുക" msgid "Choose a time" msgstr "സമയം തെരഞ്ഞെടുക്കൂ" -msgid "Midnight" -msgstr "അര്‍ധരാത്രി" - -msgid "6 a.m." -msgstr "6 a.m." - -msgid "Noon" -msgstr "ഉച്ച" - -msgid "6 p.m." -msgstr "" - msgid "Cancel" msgstr "റദ്ദാക്കൂ" @@ -138,7 +139,7 @@ msgid "Today" msgstr "ഇന്ന്" msgid "Choose a Date" -msgstr "" +msgstr "ഒരു തീയതി തിരഞ്ഞെടുക്കുക" msgid "Yesterday" msgstr "ഇന്നലെ" @@ -147,68 +148,68 @@ msgid "Tomorrow" msgstr "നാളെ" msgid "January" -msgstr "" +msgstr "ജനുവരി" msgid "February" -msgstr "" +msgstr "ഫെബ്രുവരി" msgid "March" -msgstr "" +msgstr "മാർച്ച്" msgid "April" -msgstr "" +msgstr "ഏപ്രിൽ" msgid "May" -msgstr "" +msgstr "മെയ്" msgid "June" -msgstr "" +msgstr "ജൂൺ" msgid "July" -msgstr "" +msgstr "ജൂലൈ" msgid "August" -msgstr "" +msgstr "ആഗസ്റ്റ്" msgid "September" -msgstr "" +msgstr "സെപ്റ്റംബർ" msgid "October" -msgstr "" +msgstr "ഒക്ടോബർ" msgid "November" -msgstr "" +msgstr "നവംബർ" msgid "December" -msgstr "" +msgstr "ഡിസംബര്" msgctxt "one letter Sunday" msgid "S" -msgstr "" +msgstr "ഞ്ഞ‍" msgctxt "one letter Monday" msgid "M" -msgstr "" +msgstr "തി" msgctxt "one letter Tuesday" msgid "T" -msgstr "" +msgstr "ചൊ" msgctxt "one letter Wednesday" msgid "W" -msgstr "" +msgstr "ബു" msgctxt "one letter Thursday" msgid "T" -msgstr "" +msgstr "വ്യാ" msgctxt "one letter Friday" msgid "F" -msgstr "" +msgstr "വെ" msgctxt "one letter Saturday" msgid "S" -msgstr "" +msgstr "ശ" msgid "Show" msgstr "കാണട്ടെ" diff --git a/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo b/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo index a649b24ec2275..57a9d75e6e819 100644 Binary files a/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/mn/LC_MESSAGES/django.po b/django/contrib/admin/locale/mn/LC_MESSAGES/django.po index d7fc5e4715cc8..8137103516379 100644 --- a/django/contrib/admin/locale/mn/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/mn/LC_MESSAGES/django.po @@ -5,14 +5,14 @@ # Jannis Leidel , 2011 # jargalan , 2011 # Zorig, 2016 -# Анхбаяр Анхаа , 2013-2016,2018 +# Анхбаяр Анхаа , 2013-2016,2018-2019 # Баясгалан Цэвлээ , 2011,2017 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-07-09 04:47+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-13 09:17+0000\n" "Last-Translator: Анхбаяр Анхаа \n" "Language-Team: Mongolian (http://www.transifex.com/django/django/language/" "mn/)\n" @@ -113,7 +113,7 @@ msgid "object id" msgstr "обектийн 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 "обектийн хамаарал" @@ -539,24 +539,8 @@ msgstr "Бүгдийг харуулах" msgid "Save" msgstr "Хадгалах" -msgid "Popup closing..." -msgstr "Цонх хаагдлаа" - -#, python-format -msgid "Change selected %(model)s" -msgstr "Сонгосон %(model)s-ийг өөрчлөх" - -#, python-format -msgid "View selected %(model)s" -msgstr "Сонгосон %(model)s-ийг харах" - -#, python-format -msgid "Add another %(model)s" -msgstr "Өөр %(model)s нэмэх" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Сонгосон %(model)s устгах" +msgid "Popup closing…" +msgstr "Хааж байна..." msgid "Search" msgstr "Хайлт" @@ -586,6 +570,18 @@ msgstr "Хадгалаад харах." msgid "Close" msgstr "Хаах" +#, python-format +msgid "Change selected %(model)s" +msgstr "Сонгосон %(model)s-ийг өөрчлөх" + +#, python-format +msgid "Add another %(model)s" +msgstr "Өөр %(model)s нэмэх" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Сонгосон %(model)s устгах" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Манай вэб сайтыг ашигласанд баярлалаа." diff --git a/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo index e6c59868573af..9f58362d57dbe 100644 Binary files a/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po index 28a8598c434a7..5fda297502991 100644 --- a/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po @@ -3,15 +3,15 @@ # Translators: # Tsolmon , 2012 # Zorig, 2014,2018 -# Анхбаяр Анхаа , 2011-2012,2015 +# Анхбаяр Анхаа , 2011-2012,2015,2019 # Ганзориг БП , 2011 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-21 00:38+0000\n" -"Last-Translator: Zorig\n" +"PO-Revision-Date: 2019-02-13 09:19+0000\n" +"Last-Translator: Анхбаяр Анхаа \n" "Language-Team: Mongolian (http://www.transifex.com/django/django/language/" "mn/)\n" "MIME-Version: 1.0\n" @@ -106,13 +106,13 @@ msgid "Midnight" msgstr "Шөнө дунд" msgid "6 a.m." -msgstr "6 цаг" +msgstr "06 цаг" msgid "Noon" msgstr "Үд дунд" msgid "6 p.m." -msgstr "Оройн 6 цаг" +msgstr "18 цаг" #, javascript-format msgid "Note: You are %s hour ahead of server time." diff --git a/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo b/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo index dd7b5e69f7ac8..1f7329445173c 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 525138a9280be..c457c3de2565c 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-2018 +# Jon , 2017-2019 # 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: 2018-05-21 14:16-0300\n" -"PO-Revision-Date: 2018-07-30 11:34+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-05-06 13:01+0000\n" "Last-Translator: Jon \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/" "language/nb/)\n" @@ -116,7 +116,7 @@ msgid "object id" msgstr "objekt-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 "objekt-repr" @@ -538,25 +538,9 @@ msgstr "Vis alle" msgid "Save" msgstr "Lagre" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Lukker popup..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Endre valgt %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Se valgte %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Legg til ny %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Slett valgte %(model)s" - msgid "Search" msgstr "Søk" @@ -585,6 +569,18 @@ msgstr "Lagre og se" msgid "Close" msgstr "Lukk" +#, python-format +msgid "Change selected %(model)s" +msgstr "Endre valgt %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Legg til ny %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Slett valgte %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Takk for i dag." diff --git a/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo b/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo index c2450b108a8fb..b4b63c1929a19 100644 Binary files a/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/nl/LC_MESSAGES/django.po b/django/contrib/admin/locale/nl/LC_MESSAGES/django.po index ca14f6d4aba30..ecd7dfacfc5f6 100644 --- a/django/contrib/admin/locale/nl/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/nl/LC_MESSAGES/django.po @@ -11,13 +11,13 @@ # dokterbob , 2015 # Sander Steffann , 2014-2015 # Tino de Bruijn , 2011 -# Tonnes , 2017 +# Tonnes , 2017,2019 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-09-23 18:54+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-19 10:34+0000\n" "Last-Translator: Tonnes \n" "Language-Team: Dutch (http://www.transifex.com/django/django/language/nl/)\n" "MIME-Version: 1.0\n" @@ -28,7 +28,7 @@ msgstr "" #, python-format msgid "Successfully deleted %(count)d %(items)s." -msgstr "%(count)d %(items)s succesvol verwijderd." +msgstr "%(count)d %(items)s met succes verwijderd." #, python-format msgid "Cannot delete %(name)s" @@ -39,7 +39,7 @@ msgstr "Weet u het zeker?" #, python-format msgid "Delete selected %(verbose_name_plural)s" -msgstr "Verwijder geselecteerde %(verbose_name_plural)s" +msgstr "Geselecteerde %(verbose_name_plural)s verwijderen" msgid "Administration" msgstr "Beheer" @@ -90,11 +90,20 @@ msgstr "Actie:" #, python-format msgid "Add another %(verbose_name)s" -msgstr "Voeg nog een %(verbose_name)s toe" +msgstr "Nog een %(verbose_name)s toevoegen" msgid "Remove" msgstr "Verwijderen" +msgid "Addition" +msgstr "Toevoeging" + +msgid "Change" +msgstr "Wijzigen" + +msgid "Deletion" +msgstr "Verwijdering" + msgid "action time" msgstr "actietijd" @@ -108,7 +117,7 @@ msgid "object id" msgstr "object-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 "object-repr" @@ -141,7 +150,7 @@ msgstr "LogEntry-object" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "{name} \"{object}\" toegevoegd." +msgstr "{name} '{object}' toegevoegd." msgid "Added." msgstr "Toegevoegd." @@ -151,7 +160,7 @@ msgstr "en" #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." -msgstr "{fields} voor {name} \"{object}\" gewijzigd." +msgstr "{fields} voor {name} '{object}' gewijzigd." #, python-brace-format msgid "Changed {fields}." @@ -159,7 +168,7 @@ msgstr "{fields} gewijzigd." #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "{name} \"{object}\" verwijderd." +msgstr "{name} '{object}' verwijderd." msgid "No fields changed." msgstr "Geen velden gewijzigd." @@ -174,11 +183,11 @@ msgstr "" "selecteren." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"De {name} '{obj}' is met succes toegevoegd. U kunt deze hieronder nogmaals " -"bewerken." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "De {name} '{obj}' is met succes toegevoegd." + +msgid "You may edit it again below." +msgstr "U kunt deze hieronder weer bewerken." #, python-brace-format msgid "" @@ -188,10 +197,6 @@ msgstr "" "De {name} '{obj}' is met succes toegevoegd. U kunt hieronder nog een {name} " "toevoegen." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "De {name} \"{obj}\" is succesvol toegevoegd." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -199,6 +204,13 @@ msgstr "" "De {name} '{obj}' is met succes gewijzigd. U kunt deze hieronder nogmaals " "bewerken." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"De {name} '{obj}' is met succes toegevoegd. U kunt deze hieronder nogmaals " +"bewerken." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -209,7 +221,7 @@ msgstr "" #, python-brace-format msgid "The {name} \"{obj}\" was changed successfully." -msgstr "De {name} \"{obj}\" is succesvol gewijzigd." +msgstr "De {name} '{obj}' is met succes gewijzigd." msgid "" "Items must be selected in order to perform actions on them. No items have " @@ -237,6 +249,10 @@ msgstr "%s toevoegen" msgid "Change %s" msgstr "%s wijzigen" +#, python-format +msgid "View %s" +msgstr "%s weergeven" + msgid "Database error" msgstr "Databasefout" @@ -346,10 +362,10 @@ msgid "Change password" msgstr "Wachtwoord wijzigen" msgid "Please correct the error below." -msgstr "Herstel de fouten hieronder." +msgstr "Corrigeer de fout hieronder." msgid "Please correct the errors below." -msgstr "Herstel de fouten hieronder." +msgstr "Corrigeer de fouten hieronder." #, python-format msgid "Enter a new password for the user %(username)s." @@ -458,8 +474,8 @@ msgstr "" "Weet u zeker dat u de geselecteerde %(objects_name)s wilt verwijderen? Alle " "volgende objecten en hun aanverwante items zullen worden verwijderd:" -msgid "Change" -msgstr "Wijzigen" +msgid "View" +msgstr "Weergeven" msgid "Delete?" msgstr "Verwijderen?" @@ -478,8 +494,8 @@ msgstr "Modellen in de %(name)s applicatie" msgid "Add" msgstr "Toevoegen" -msgid "You don't have permission to edit anything." -msgstr "U heeft geen rechten om iets te wijzigen." +msgid "You don't have permission to view or edit anything." +msgstr "U hebt geen rechten om iets te bekijken of te verwijderen." msgid "Recent actions" msgstr "Recente acties" @@ -534,20 +550,8 @@ msgstr "Alles tonen" msgid "Save" msgstr "Opslaan" -msgid "Popup closing..." -msgstr "Pop-up wordt gesloten..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Geselecteerde %(model)s wijzigen" - -#, python-format -msgid "Add another %(model)s" -msgstr "Nog een %(model)s toevoegen" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Geselecteerde %(model)s verwijderen" +msgid "Popup closing…" +msgstr "Pop-up sluiten…" msgid "Search" msgstr "Zoeken" @@ -571,6 +575,24 @@ msgstr "Opslaan en nieuwe toevoegen" msgid "Save and continue editing" msgstr "Opslaan en opnieuw bewerken" +msgid "Save and view" +msgstr "Opslaan en weergeven" + +msgid "Close" +msgstr "Sluiten" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Geselecteerde %(model)s wijzigen" + +#, python-format +msgid "Add another %(model)s" +msgstr "Nog een %(model)s toevoegen" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Geselecteerde %(model)s verwijderen" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Bedankt voor de aanwezigheid op de site vandaag." @@ -635,18 +657,18 @@ msgid "" "you registered with, and check your spam folder." msgstr "" "Als u geen e-mail ontvangt, controleer dan of u het e-mailadres hebt " -"opgegeven waar u zich mee geregistreerd heeft en controleer uw spam-map." +"ingevoerd waarmee u zich hebt geregistreerd en controleer uw spam-map." #, python-format msgid "" "You're receiving this email because you requested a password reset for your " "user account at %(site_name)s." msgstr "" -"U ontvangt deze email omdat u heeft verzocht het wachtwoord te resetten voor " -"uw account op %(site_name)s." +"U ontvangt deze e-mail, omdat u een aanvraag voor opnieuw instellen van het " +"wachtwoord voor uw account op %(site_name)s hebt gedaan." msgid "Please go to the following page and choose a new password:" -msgstr "Gaat u naar de volgende pagina en kies een nieuw wachtwoord:" +msgstr "Ga naar de volgende pagina en kies een nieuw wachtwoord:" msgid "Your username, in case you've forgotten:" msgstr "Uw gebruikersnaam, mocht u deze vergeten zijn:" @@ -682,6 +704,10 @@ msgstr "Selecteer %s" msgid "Select %s to change" msgstr "Selecteer %s om te wijzigen" +#, python-format +msgid "Select %s to view" +msgstr "Selecteer %s om te bekijken" + msgid "Date:" msgstr "Datum:" diff --git a/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo index e4961d2b22e7a..348bbbc1ad7fc 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 fb149b8f68192..f89838cc88b1e 100644 --- a/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po @@ -8,14 +8,15 @@ # Jannis Leidel , 2011 # Jeffrey Gelens , 2011-2012 # Sander Steffann , 2015 +# Tonnes , 2019 # wunki , 2011 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-23 18:54+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2019-02-24 20:42+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" @@ -32,19 +33,19 @@ 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 "" -"Dit is de lijst met beschikbare %s. U kunt kiezen uit een aantal door ze te " -"selecteren in het vak hieronder en vervolgens op de \"Kiezen\" pijl tussen " -"de twee lijsten te klikken." +"Dit is de lijst met beschikbare %s. U kunt er een aantal kiezen door ze in " +"het vak hieronder te selecteren en daarna op de pijl 'Kiezen' tussen de twee " +"vakken te klikken." #, javascript-format msgid "Type into this box to filter down the list of available %s." -msgstr "Type in dit vak om te filteren in de lijst met beschikbare %s." +msgstr "Typ in dit vak om de lijst met beschikbare %s te filteren." msgid "Filter" msgstr "Filter" msgid "Choose all" -msgstr "Kies alle" +msgstr "Alle kiezen" #, javascript-format msgid "Click to choose all %s at once." @@ -65,9 +66,9 @@ 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 "" -"Dit is de lijst van de gekozen %s. Je kunt ze verwijderen door ze te " -"selecteren in het vak hieronder en vervolgens op de \"Verwijderen\" pijl " -"tussen de twee lijsten te klikken." +"Dit is de lijst met gekozen %s. U kunt er een aantal verwijderen door ze in " +"het vak hieronder te selecteren en daarna op de pijl 'Verwijderen' tussen de " +"twee vakken te klikken." msgid "Remove all" msgstr "Verwijder alles" @@ -85,48 +86,30 @@ msgid "" "You have unsaved changes on individual editable fields. If you run an " "action, your unsaved changes will be lost." msgstr "" -"U heeft niet opgeslagen wijzigingen op enkele indviduele velden. Als u nu " -"een actie uitvoert zullen uw wijzigingen verloren gaan." +"U hebt niet-opgeslagen wijzigingen op afzonderlijke bewerkbare velden. Als u " +"een actie uitvoert, gaan uw wijzigingen verloren." 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 "" -"U heeft een actie geselecteerd, maar heeft de wijzigingen op de individuele " -"velden nog niet opgeslagen. Klik alstublieft op OK om op te slaan. U zult " -"vervolgens de actie opnieuw moeten uitvoeren." +"U hebt een actie geselecteerd, maar uw wijzigingen in afzonderlijke velden " +"nog niet opgeslagen. Klik op OK om op te slaan. U dient de actie opnieuw uit " +"te voeren." 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 "" -"U heeft een actie geselecteerd en heeft geen wijzigingen gemaakt op de " -"individuele velden. U zoekt waarschijnlijk naar de Gaan knop in plaats van " -"de Opslaan knop." - -#, 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] "Let op: U ligt %s uur voor ten opzichte van de server-tijd." -msgstr[1] "Let op: U ligt %s uren voor ten opzichte van de server-tijd." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Let op: U ligt %s uur achter ten opzichte van de server-tijd." -msgstr[1] "Let op: U ligt %s uren achter ten opzichte van de server-tijd." +"U hebt een actie geselecteerd, en geen wijzigingen in afzonderlijke velden " +"aangebracht. Waarschijnlijk zoekt u de knop Gaan in plaats van de knop " +"Opslaan." msgid "Now" msgstr "Nu" -msgid "Choose a Time" -msgstr "Kies een tijdstip" - -msgid "Choose a time" -msgstr "Kies een tijd" - msgid "Midnight" msgstr "Middernacht" @@ -139,6 +122,24 @@ msgstr "12 uur 's middags" msgid "6 p.m." msgstr "6 uur 's avonds" +#, 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] "Let op: u ligt %s uur voor ten opzichte van de servertijd." +msgstr[1] "Let op: u ligt %s uur voor ten opzichte van de servertijd." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Let op: u ligt %s uur achter ten opzichte van de servertijd." +msgstr[1] "Let op: u ligt %s uur achter ten opzichte van de servertijd." + +msgid "Choose a Time" +msgstr "Kies een tijdstip" + +msgid "Choose a time" +msgstr "Kies een tijd" + msgid "Cancel" msgstr "Annuleren" diff --git a/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo b/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo index 0f767acf709d3..c27a1cb55bedc 100644 Binary files a/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/pl/LC_MESSAGES/django.po b/django/contrib/admin/locale/pl/LC_MESSAGES/django.po index ad093b4cdf72e..57eb78ba1b984 100644 --- a/django/contrib/admin/locale/pl/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/pl/LC_MESSAGES/django.po @@ -4,22 +4,22 @@ # angularcircle, 2011-2013 # angularcircle, 2013-2014 # Jannis Leidel , 2011 -# Janusz Harkot , 2014-2015 +# Janusz Harkot , 2014-2015 # Karol , 2012 # konryd , 2011 # konryd , 2011 -# m_aciek , 2016-2018 +# m_aciek , 2016-2019 # m_aciek , 2015 # Ola Sitarska , 2013 # Ola Sitarska , 2013 -# Roman Barczyński , 2014 +# Roman Barczyński, 2014 # Tomasz Kajtoch , 2017 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-28 08:42+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-26 20:42+0000\n" "Last-Translator: m_aciek \n" "Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n" "MIME-Version: 1.0\n" @@ -43,7 +43,7 @@ msgstr "Jesteś pewien?" #, python-format msgid "Delete selected %(verbose_name_plural)s" -msgstr "Usuń wybrane %(verbose_name_plural)s" +msgstr "Usuń wybranych %(verbose_name_plural)s" msgid "Administration" msgstr "Administracja" @@ -121,7 +121,7 @@ msgid "object id" msgstr "id obiektu" #. 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 "reprezentacja obiektu" @@ -268,14 +268,14 @@ msgstr[3] "%(count)s %(name)s zostało pomyślnie zmienionych." #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" -msgstr[0] "%(total_count)s wybrany" -msgstr[1] "%(total_count)s wybrane" -msgstr[2] "%(total_count)s wybranych" -msgstr[3] "%(total_count)s wybranych" +msgstr[0] "Wybrano %(total_count)s" +msgstr[1] "Wybrano %(total_count)s" +msgstr[2] "Wybrano %(total_count)s" +msgstr[3] "Wybrano wszystkie %(total_count)s" #, python-format msgid "0 of %(cnt)s selected" -msgstr "0 z %(cnt)s wybranych" +msgstr "Wybrano 0 z %(cnt)s" #, python-format msgid "Change history: %s" @@ -554,25 +554,9 @@ msgstr "Pokaż wszystko" msgid "Save" msgstr "Zapisz" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Zamykanie okna..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Zmień wybrane %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Obejrzyj wybrane %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Dodaj kolejny %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Usuń wybrane %(model)s" - msgid "Search" msgstr "Szukaj" @@ -603,6 +587,18 @@ msgstr "Zapisz i obejrzyj" msgid "Close" msgstr "Zamknij" +#, python-format +msgid "Change selected %(model)s" +msgstr "Zmień wybrane %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Dodaj kolejny %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Usuń wybrane %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Dziękujemy za spędzenie cennego czasu na stronie." @@ -711,11 +707,11 @@ msgstr "Wszystkie daty" #, python-format msgid "Select %s" -msgstr "Zaznacz %s" +msgstr "Wybierz %s" #, python-format msgid "Select %s to change" -msgstr "Zaznacz %s do zmiany" +msgstr "Wybierz %s do zmiany" #, python-format msgid "Select %s to view" diff --git a/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo index af684a98b304f..2685f40c076f2 100644 Binary files a/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po index 9b137ed82cdd1..9125a94ed4fc5 100644 --- a/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po @@ -3,18 +3,18 @@ # Translators: # angularcircle, 2011 # Jannis Leidel , 2011 -# Janusz Harkot , 2014-2015 +# Janusz Harkot , 2014-2015 # konryd , 2011 -# m_aciek , 2016 -# Roman Barczyński , 2012 +# m_aciek , 2016,2018 +# Roman Barczyński, 2012 # Tomasz Kajtoch , 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: 2017-09-23 18:54+0000\n" -"Last-Translator: Tomasz Kajtoch \n" +"PO-Revision-Date: 2018-12-21 22:38+0000\n" +"Last-Translator: m_aciek \n" "Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -77,10 +77,10 @@ msgstr "Kliknij, aby usunąć jednocześnie wszystkie wybrane %s." msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" -msgstr[0] "Zaznaczono %(sel)s z %(cnt)s" -msgstr[1] "Zaznaczono %(sel)s z %(cnt)s" -msgstr[2] "Zaznaczono %(sel)s z %(cnt)s" -msgstr[3] "Zaznaczono %(sel)s z %(cnt)s" +msgstr[0] "Wybrano %(sel)s z %(cnt)s" +msgstr[1] "Wybrano %(sel)s z %(cnt)s" +msgstr[2] "Wybrano %(sel)s z %(cnt)s" +msgstr[3] "Wybrano %(sel)s z %(cnt)s" msgid "" "You have unsaved changes on individual editable fields. If you run an " diff --git a/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo b/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo index 1748ca4c8540a..d7ec87d28b83d 100644 Binary files a/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/pt/LC_MESSAGES/django.po b/django/contrib/admin/locale/pt/LC_MESSAGES/django.po index e6466c75f1670..2d39cdb304596 100644 --- a/django/contrib/admin/locale/pt/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/pt/LC_MESSAGES/django.po @@ -1,9 +1,10 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Henrique Azevedo , 2018 # Jannis Leidel , 2011 # jorgecarleitao , 2015 -# Nuno Mariz , 2013,2015,2017 +# Nuno Mariz , 2013,2015,2017-2018 # Paulo Köch , 2011 # Raúl Pedro Fernandes Santos, 2014 # Rui Dinis Silva, 2017 @@ -11,9 +12,9 @@ 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-11-30 23:46+0000\n" -"Last-Translator: Nuno Mariz \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" "Language-Team: Portuguese (http://www.transifex.com/django/django/language/" "pt/)\n" "MIME-Version: 1.0\n" @@ -91,6 +92,15 @@ msgstr "Adicionar outro %(verbose_name)s" msgid "Remove" msgstr "Remover" +msgid "Addition" +msgstr "Adição" + +msgid "Change" +msgstr "Modificar" + +msgid "Deletion" +msgstr "Eliminação" + msgid "action time" msgstr "hora da ação" @@ -104,7 +114,7 @@ msgid "object id" msgstr "id do objeto" #. 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 "repr do objeto" @@ -170,11 +180,11 @@ msgstr "" "mais do que um." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"O {name} \"{obj}\" foi adicionado com sucesso. Pode voltar a editar " -"novamente abaixo." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "O {name} \"{obj}\" foi adicionado com sucesso." + +msgid "You may edit it again below." +msgstr "Pode editar novamente abaixo." #, python-brace-format msgid "" @@ -184,10 +194,6 @@ msgstr "" "O {name} \"{obj}\" foi adicionado com sucesso. Pode adicionar um novo {name} " "abaixo." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "O {name} \"{obj}\" foi adicionado com sucesso." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -195,6 +201,13 @@ msgstr "" "O {name} \"{obj}\" foi modificado com sucesso. Pode voltar a editar " "novamente abaixo." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"O {name} \"{obj}\" foi adicionado com sucesso. Pode voltar a editar " +"novamente abaixo." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -233,6 +246,10 @@ msgstr "Adicionar %s" msgid "Change %s" msgstr "Modificar %s" +#, python-format +msgid "View %s" +msgstr "View %s " + msgid "Database error" msgstr "Erro de base de dados" @@ -341,7 +358,7 @@ msgid "Change password" msgstr "Modificar palavra-passe" msgid "Please correct the error below." -msgstr "Por favor corrija os erros abaixo." +msgstr "Por favor corrija o erro abaixo." msgid "Please correct the errors below." msgstr "Por favor corrija os erros abaixo." @@ -454,8 +471,8 @@ msgstr "" "Tem certeza de que deseja remover %(objects_name)s selecionado? Todos os " "objetos seguintes e seus itens relacionados serão removidos:" -msgid "Change" -msgstr "Modificar" +msgid "View" +msgstr "View" msgid "Delete?" msgstr "Remover?" @@ -474,8 +491,8 @@ msgstr "Modelos na aplicação %(name)s" msgid "Add" msgstr "Adicionar" -msgid "You don't have permission to edit anything." -msgstr "Não tem permissão para modificar nada." +msgid "You don't have permission to view or edit anything." +msgstr "Não tem permissão para ver ou editar nada." msgid "Recent actions" msgstr "Ações recentes" @@ -531,20 +548,8 @@ msgstr "Mostrar todos" msgid "Save" msgstr "Gravar" -msgid "Popup closing..." -msgstr "Fechando o popup..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Alterar %(model)s selecionado." - -#, python-format -msgid "Add another %(model)s" -msgstr "Adicionar outro %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Remover %(model)s seleccionado" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "Pesquisar" @@ -568,6 +573,24 @@ msgstr "Gravar e adicionar outro" msgid "Save and continue editing" msgstr "Gravar e continuar a editar" +msgid "Save and view" +msgstr "Gravar e ver" + +msgid "Close" +msgstr "Fechar" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Alterar %(model)s selecionado." + +#, python-format +msgid "Add another %(model)s" +msgstr "Adicionar outro %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Remover %(model)s seleccionado" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Obrigado pela sua visita." @@ -682,6 +705,10 @@ msgstr "Selecionar %s" msgid "Select %s to change" msgstr "Selecione %s para modificar" +#, python-format +msgid "Select %s to view" +msgstr "Selecione %s para ver" + msgid "Date:" msgstr "Data:" 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 9530505344bbd..d2644ce2a64ac 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 9e092cce1fa23..ce5b5d9fbc2fc 100644 --- a/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po @@ -2,6 +2,7 @@ # # Translators: # Allisson Azevedo , 2014 +# Bruce de Sá , 2019 # bruno.devpod , 2014 # Filipe Cifali Stangler , 2016 # dudanogueira , 2012 @@ -17,16 +18,16 @@ # Luiz Boaretto , 2017 # Marcelo Moro Brondani , 2018 # Marco Rougeth , 2015 -# Otávio Reis Perkles , 2018 +# Otávio Reis , 2018 # Raysa Dutra, 2016 # Sergio Garcia , 2015 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-06-25 18:02+0000\n" -"Last-Translator: Marcelo Moro Brondani \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-26 20:51+0000\n" +"Last-Translator: Bruce de Sá \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/" "language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -126,7 +127,7 @@ msgid "object id" msgstr "id do objeto" #. 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 "repr do objeto" @@ -558,24 +559,8 @@ msgstr "Mostrar tudo" msgid "Save" msgstr "Salvar" -msgid "Popup closing..." -msgstr "Fechando popup..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Alterar %(model)s selecionado" - -#, python-format -msgid "View selected %(model)s" -msgstr "Visualizar %(model)s selecionados" - -#, python-format -msgid "Add another %(model)s" -msgstr "Adicionar outro %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Excluir %(model)s selecionado" +msgid "Popup closing…" +msgstr "Popup fechando…" msgid "Search" msgstr "Pesquisar" @@ -605,6 +590,18 @@ msgstr "Salvar e visualizar" msgid "Close" msgstr "Fechar" +#, python-format +msgid "Change selected %(model)s" +msgstr "Alterar %(model)s selecionado" + +#, python-format +msgid "Add another %(model)s" +msgstr "Adicionar outro %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Excluir %(model)s selecionado" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Obrigado por visitar nosso Web site hoje." diff --git a/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo index e4406be649ad5..de836e713341a 100644 Binary files a/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ro/LC_MESSAGES/django.po b/django/contrib/admin/locale/ro/LC_MESSAGES/django.po index de11776f466fb..a52959bc54ece 100644 --- a/django/contrib/admin/locale/ro/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ro/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # 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,2014 # Ionel Cristian Mărieș , 2012 @@ -11,8 +11,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-28 07:39+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 12:02+0000\n" "Last-Translator: Bogdan Mateescu\n" "Language-Team: Romanian (http://www.transifex.com/django/django/language/" "ro/)\n" @@ -114,7 +114,7 @@ msgid "object id" msgstr "id obiect" #. 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 "repr obiect" @@ -547,25 +547,9 @@ msgstr "Arată totul" msgid "Save" msgstr "Salvează" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Fereastra se închide..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Modifică %(model)s selectat" - -#, python-format -msgid "View selected %(model)s" -msgstr "Vizualizați %(model)s selectate" - -#, python-format -msgid "Add another %(model)s" -msgstr "Adaugă alt %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Șterge %(model)s selectat" - msgid "Search" msgstr "Caută" @@ -595,6 +579,18 @@ msgstr "Salvează și vizualizează" msgid "Close" msgstr "Închide" +#, python-format +msgid "Change selected %(model)s" +msgstr "Modifică %(model)s selectat" + +#, python-format +msgid "Add another %(model)s" +msgstr "Adaugă alt %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Șterge %(model)s selectat" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Mulţumiri pentru timpul petrecut astăzi pe sit." diff --git a/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo b/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo index 2e9cd28517335..c11def1d49b99 100644 Binary files a/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/ru/LC_MESSAGES/django.po b/django/contrib/admin/locale/ru/LC_MESSAGES/django.po index 4800060c6b7ef..e27b05c04d993 100644 --- a/django/contrib/admin/locale/ru/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/ru/LC_MESSAGES/django.po @@ -8,14 +8,15 @@ # Sergey , 2016 # Jannis Leidel , 2011 # Алексей Борискин , 2012-2015 +# Дмитрий , 2019 # Дмитрий Шатера , 2018 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-06-29 07:41+0000\n" -"Last-Translator: Дмитрий Шатера \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-14 12:41+0000\n" +"Last-Translator: Дмитрий \n" "Language-Team: Russian (http://www.transifex.com/django/django/language/" "ru/)\n" "MIME-Version: 1.0\n" @@ -117,7 +118,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 "представление объекта" @@ -551,25 +552,9 @@ msgstr "Показать все" msgid "Save" msgstr "Сохранить" -msgid "Popup closing..." +msgid "Popup closing…" msgstr "Всплывающее окно закрывается..." -#, python-format -msgid "Change selected %(model)s" -msgstr "Изменить выбранный объект типа \"%(model)s\"" - -#, python-format -msgid "View selected %(model)s" -msgstr "Просмотреть выбранный объект типа \"%(model)s\"" - -#, python-format -msgid "Add another %(model)s" -msgstr "Добавить ещё один объект типа \"%(model)s\"" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Удалить выбранный объект типа \"%(model)s\"" - msgid "Search" msgstr "Найти" @@ -600,6 +585,18 @@ msgstr "Сохранить и просмотреть" msgid "Close" msgstr "Закрыть" +#, python-format +msgid "Change selected %(model)s" +msgstr "Изменить выбранный объект типа \"%(model)s\"" + +#, python-format +msgid "Add another %(model)s" +msgstr "Добавить ещё один объект типа \"%(model)s\"" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Удалить выбранный объект типа \"%(model)s\"" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Благодарим вас за время, проведенное на этом сайте." diff --git a/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo b/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo index bf7b9f41898e4..d7a5ba3777927 100644 Binary files a/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/sk/LC_MESSAGES/django.po b/django/contrib/admin/locale/sk/LC_MESSAGES/django.po index 7bc082f1c7f4c..3e9db2405e7d0 100644 --- a/django/contrib/admin/locale/sk/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/sk/LC_MESSAGES/django.po @@ -6,19 +6,21 @@ # Marian Andre , 2013-2015,2017 # Martin Kosír, 2011 # Martin Tóth , 2017 +# Zbynek Drlik , 2019 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-09-23 18:54+0000\n" -"Last-Translator: Marian Andre \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-10 07:35+0000\n" +"Last-Translator: Zbynek Drlik \n" "Language-Team: Slovak (http://www.transifex.com/django/django/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n " +">= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -89,6 +91,15 @@ msgstr "Pridať ďalší %(verbose_name)s" msgid "Remove" msgstr "Odstrániť" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Zmeniť" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "čas akcie" @@ -102,7 +113,7 @@ msgid "object id" msgstr "identifikátor objektu" #. 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 "reprezentácia objektu" @@ -168,11 +179,11 @@ msgstr "" "\" na počítači Mac." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Objekt {name} \"{obj}\" bol úspešne pridaný." + +msgid "You may edit it again below." msgstr "" -"Objekt {name} \"{obj}\" bol úspešne pridaný. Ďalšie zmeny môžete urobiť " -"nižšie." #, python-brace-format msgid "" @@ -182,10 +193,6 @@ msgstr "" "Objekt {name} \"{obj}\" bol úspešne pridaný. Môžete pridať ďaľší {name} " "nižšie." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "Objekt {name} \"{obj}\" bol úspešne pridaný." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -193,6 +200,13 @@ msgstr "" "Objekt {name} \"{obj}\" bol úspešne zmenený. Ďalšie zmeny môžete urobiť " "nižšie." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"Objekt {name} \"{obj}\" bol úspešne pridaný. Ďalšie zmeny môžete urobiť " +"nižšie." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -232,6 +246,10 @@ msgstr "Pridať %s" msgid "Change %s" msgstr "Zmeniť %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Chyba databázy" @@ -241,6 +259,7 @@ msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s bola úspešne zmenená." msgstr[1] "%(count)s %(name)s boli úspešne zmenené." msgstr[2] "%(count)s %(name)s bolo úspešne zmenených." +msgstr[3] "%(count)s %(name)s bolo úspešne zmenených." #, python-format msgid "%(total_count)s selected" @@ -248,6 +267,7 @@ msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s vybraná" msgstr[1] "Všetky %(total_count)s vybrané" msgstr[2] "Všetkých %(total_count)s vybraných" +msgstr[3] "Všetkých %(total_count)s vybraných" #, python-format msgid "0 of %(cnt)s selected" @@ -342,7 +362,7 @@ msgid "Change password" msgstr "Zmeniť heslo" msgid "Please correct the error below." -msgstr "Prosím, opravte chyby uvedené nižšie." +msgstr "" msgid "Please correct the errors below." msgstr "Prosím, opravte chyby uvedené nižšie." @@ -453,8 +473,8 @@ msgstr "" "Ste si isty, že chcete vymazať označené %(objects_name)s? Vymažú sa všetky " "nasledujúce objekty a ich súvisiace položky:" -msgid "Change" -msgstr "Zmeniť" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Zmazať?" @@ -473,8 +493,8 @@ msgstr "Modely v %(name)s aplikácii" msgid "Add" msgstr "Pridať" -msgid "You don't have permission to edit anything." -msgstr "Nemáte právo na vykonávanie zmien." +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "Posledné akcie" @@ -530,20 +550,8 @@ msgstr "Zobraziť všetky" msgid "Save" msgstr "Uložiť" -msgid "Popup closing..." -msgstr "Vyskakovacie okno sa zatvára..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Zmeniť vybrané %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Pridať ďalší %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Zmazať vybrané %(model)s" +msgid "Popup closing…" +msgstr "" msgid "Search" msgstr "Vyhľadávanie" @@ -554,6 +562,7 @@ msgid_plural "%(counter)s results" msgstr[0] "%(counter)s výsledok" msgstr[1] "%(counter)s výsledky" msgstr[2] "%(counter)s výsledkov" +msgstr[3] "%(counter)s výsledkov" #, python-format msgid "%(full_result_count)s total" @@ -568,6 +577,24 @@ msgstr "Uložiť a pridať ďalší" msgid "Save and continue editing" msgstr "Uložiť a pokračovať v úpravách" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "Zatvoriť" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Zmeniť vybrané %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Pridať ďalší %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Zmazať vybrané %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Ďakujeme za čas strávený na našich stránkach." @@ -677,6 +704,10 @@ msgstr "Vybrať %s" msgid "Select %s to change" msgstr "Vybrať \"%s\" na úpravu" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Dátum:" diff --git a/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo index add0dbf02922a..798ad96eed64e 100644 Binary files a/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po index c05ce22b3da22..d703330d1fd26 100644 --- a/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: Marian Andre \n" "Language-Team: Slovak (http://www.transifex.com/django/django/language/sk/)\n" @@ -19,7 +19,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n " +">= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #, javascript-format msgid "Available %s" @@ -77,6 +78,7 @@ msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "%(sel)s z %(cnt)s vybrané" msgstr[1] "%(sel)s z %(cnt)s vybrané" msgstr[2] "%(sel)s z %(cnt)s vybraných" +msgstr[3] "%(sel)s z %(cnt)s vybraných" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -101,12 +103,28 @@ msgstr "" "Vybrali ste akciu, ale neurobili ste žiadne zmeny v jednotlivých poliach. " "Pravdepodobne ste chceli použiť tlačidlo vykonať namiesto uložiť." +msgid "Now" +msgstr "Teraz" + +msgid "Midnight" +msgstr "Polnoc" + +msgid "6 a.m." +msgstr "6:00" + +msgid "Noon" +msgstr "Poludnie" + +msgid "6 p.m." +msgstr "18:00" + #, 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] "Poznámka: Ste %s hodinu pred časom servera." msgstr[1] "Poznámka: Ste %s hodiny pred časom servera." msgstr[2] "Poznámka: Ste %s hodín pred časom servera." +msgstr[3] "Poznámka: Ste %s hodín pred časom servera." #, javascript-format msgid "Note: You are %s hour behind server time." @@ -114,9 +132,7 @@ msgid_plural "Note: You are %s hours behind server time." msgstr[0] "Poznámka: Ste %s hodinu za časom servera." msgstr[1] "Poznámka: Ste %s hodiny za časom servera." msgstr[2] "Poznámka: Ste %s hodín za časom servera." - -msgid "Now" -msgstr "Teraz" +msgstr[3] "Poznámka: Ste %s hodín za časom servera." msgid "Choose a Time" msgstr "Vybrať Čas" @@ -124,18 +140,6 @@ msgstr "Vybrať Čas" msgid "Choose a time" msgstr "Vybrať čas" -msgid "Midnight" -msgstr "Polnoc" - -msgid "6 a.m." -msgstr "6:00" - -msgid "Noon" -msgstr "Poludnie" - -msgid "6 p.m." -msgstr "18:00" - msgid "Cancel" msgstr "Zrušiť" diff --git a/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo b/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo index a4a7938b24202..fad9cd7833e03 100644 Binary files a/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/sq/LC_MESSAGES/django.po b/django/contrib/admin/locale/sq/LC_MESSAGES/django.po index 0bcd6c4411357..46d3678da3f6b 100644 --- a/django/contrib/admin/locale/sq/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/sq/LC_MESSAGES/django.po @@ -2,14 +2,14 @@ # # Translators: # Besnik , 2011,2015 -# Besnik , 2015,2018 +# Besnik , 2015,2018-2019 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-28 01:29+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 11:06+0000\n" +"Last-Translator: Besnik \n" "Language-Team: Albanian (http://www.transifex.com/django/django/language/" "sq/)\n" "MIME-Version: 1.0\n" @@ -110,9 +110,9 @@ msgid "object id" msgstr "id objekti" #. 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 "" +msgstr "paraqitje objekti" msgid "action flag" msgstr "shenjë veprimi" @@ -240,7 +240,7 @@ msgstr "Ndrysho %s" #, python-format msgid "View %s" -msgstr "" +msgstr "Shiheni %s" msgid "Database error" msgstr "Gabim baze të dhënash" @@ -539,24 +539,8 @@ msgstr "Shfaqi krejt" msgid "Save" msgstr "Ruaje" -msgid "Popup closing..." -msgstr "Flluska po mbyllet…" - -#, python-format -msgid "Change selected %(model)s" -msgstr "Ndryshoni %(model)s e përzgjedhur" - -#, python-format -msgid "View selected %(model)s" -msgstr "Shiheni të përzgjedhurin %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Shtoni një %(model)s tjetër" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Fshije %(model)s e përzgjedhur" +msgid "Popup closing…" +msgstr "Mbyllje flluske…" msgid "Search" msgstr "Kërko" @@ -586,6 +570,18 @@ msgstr "Ruajeni dhe shiheni" msgid "Close" msgstr "Mbylle" +#, python-format +msgid "Change selected %(model)s" +msgstr "Ndryshoni %(model)s e përzgjedhur" + +#, python-format +msgid "Add another %(model)s" +msgstr "Shtoni një %(model)s tjetër" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Fshije %(model)s e përzgjedhur" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Faleminderit që shpenzoni sot pak kohë të çmuar me sajtin Web." @@ -701,7 +697,7 @@ msgstr "Përzgjidhni %s për ta ndryshuar" #, python-format msgid "Select %s to view" -msgstr "" +msgstr "Përzgjidhni %s për parje" msgid "Date:" msgstr "Datë:" diff --git a/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo b/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo index d1af2b9a3d033..16d4e9db2944a 100644 Binary files a/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/sr/LC_MESSAGES/django.po b/django/contrib/admin/locale/sr/LC_MESSAGES/django.po index 8a77c1c54fcd7..ad5c35dc15f6d 100644 --- a/django/contrib/admin/locale/sr/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/sr/LC_MESSAGES/django.po @@ -2,15 +2,16 @@ # # Translators: # Branko Kokanovic , 2018 +# Igor Jerosimić, 2019 # Jannis Leidel , 2011 # Janos Guljas , 2011-2012 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-07-04 19:52+0000\n" -"Last-Translator: Branko Kokanovic \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-27 19:30+0000\n" +"Last-Translator: Igor Jerosimić\n" "Language-Team: Serbian (http://www.transifex.com/django/django/language/" "sr/)\n" "MIME-Version: 1.0\n" @@ -111,7 +112,7 @@ msgid "object id" msgstr "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 "опис објекта" @@ -540,24 +541,8 @@ msgstr "Прикажи све" msgid "Save" msgstr "Сачувај" -msgid "Popup closing..." -msgstr "Искачући прозор се затвара..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Измени одабрани модел %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Погледај означени %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Додај још један модел %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Обриши одабрани модел %(model)s" +msgid "Popup closing…" +msgstr "Попуп се затвара..." msgid "Search" msgstr "Претрага" @@ -588,6 +573,18 @@ msgstr "Сними и погледај" msgid "Close" msgstr "Затвори" +#, python-format +msgid "Change selected %(model)s" +msgstr "Измени одабрани модел %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Додај још један модел %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Обриши одабрани модел %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Хвала што сте данас провели време на овом сајту." diff --git a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo index be72e2080e400..65c851bf90156 100644 Binary files a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po index dfe46c7c68b89..4c3d304a3cf06 100644 --- a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po @@ -1,17 +1,18 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Igor Jerosimić, 2019 # Jannis Leidel , 2011 # Janos Guljas , 2011-2012 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-09-19 16:41+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-06-27 12:37+0000\n" +"Last-Translator: Igor Jerosimić\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/django/django/" -"language/sr%40latin/)\n" +"language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -35,7 +36,7 @@ msgid "Delete selected %(verbose_name_plural)s" msgstr "Briši označene objekte klase %(verbose_name_plural)s" msgid "Administration" -msgstr "" +msgstr "Administracija" msgid "All" msgstr "Svi" @@ -65,16 +66,18 @@ msgid "This year" msgstr "Ova godina" msgid "No date" -msgstr "" +msgstr "Nema datuma" msgid "Has date" -msgstr "" +msgstr "Ima datum" #, python-format msgid "" "Please enter the correct %(username)s and password for a staff account. Note " "that both fields may be case-sensitive." msgstr "" +"Molim vas unesite ispravno %(username)s i lozinku. Obratite pažnju da mala i " +"velika slova predstavljaju različite karaktere." msgid "Action:" msgstr "Radnja:" @@ -86,20 +89,29 @@ msgstr "Dodaj još jedan objekat klase %(verbose_name)s." msgid "Remove" msgstr "Obriši" +msgid "Addition" +msgstr "Dodavanja" + +msgid "Change" +msgstr "Izmeni" + +msgid "Deletion" +msgstr "Brisanja" + msgid "action time" msgstr "vreme radnje" msgid "user" -msgstr "" +msgstr "korisnik" msgid "content type" -msgstr "" +msgstr "tip sadržaja" msgid "object id" msgstr "id objekta" #. 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 "opis objekta" @@ -132,25 +144,25 @@ msgstr "Objekat unosa loga" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "Dodat objekat {name} \"{object}\"." msgid "Added." -msgstr "" +msgstr "Dodato." msgid "and" msgstr "i" #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." -msgstr "" +msgstr "Izmenjena polja {fields} za {name} \"{object}\"." #, python-brace-format msgid "Changed {fields}." -msgstr "" +msgstr "Izmenjena polja {fields}." #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "" +msgstr "Obrisan objekat {name} \"{object}\"." msgid "No fields changed." msgstr "Bez izmena u poljima." @@ -163,8 +175,10 @@ msgid "" 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 @@ -174,12 +188,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -218,6 +233,10 @@ msgstr "Dodaj objekat klase %s" msgid "Change %s" msgstr "Izmeni objekat klase %s" +#, python-format +msgid "View %s" +msgstr "Pregled %s" + msgid "Database error" msgstr "Greška u bazi podataka" @@ -324,7 +343,7 @@ msgid "Change password" msgstr "Promena lozinke" msgid "Please correct the error below." -msgstr "Ispravite navedene greške." +msgstr "" msgid "Please correct the errors below." msgstr "" @@ -337,7 +356,7 @@ msgid "Welcome," msgstr "Dobrodošli," msgid "View site" -msgstr "" +msgstr "Pogledaj sajt" msgid "Documentation" msgstr "Dokumentacija" @@ -435,8 +454,8 @@ msgstr "" "Da li ste sigurni da želite da izbrišete izabrane %(objects_name)s? Svi " "sledeći objekti i objekti sa njima povezani će biti izbrisani:" -msgid "Change" -msgstr "Izmeni" +msgid "View" +msgstr "Pregled" msgid "Delete?" msgstr "Brisanje?" @@ -455,8 +474,8 @@ msgstr "" msgid "Add" msgstr "Dodaj" -msgid "You don't have permission to edit anything." -msgstr "Nemate dozvole da unosite bilo kakve izmene." +msgid "You don't have permission to view or edit anything." +msgstr "Nemate dozvolu da pogledate ili izmenite bilo šta." msgid "Recent actions" msgstr "" @@ -509,19 +528,7 @@ msgstr "Prikaži sve" msgid "Save" msgstr "Sačuvaj" -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" @@ -547,6 +554,24 @@ msgstr "Sačuvaj i dodaj sledeći" msgid "Save and continue editing" msgstr "Sačuvaj i nastavi sa izmenama" +msgid "Save and view" +msgstr "Snimi i pogledaj" + +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 "Hvala što ste danas proveli vreme na ovom sajtu." @@ -649,6 +674,10 @@ msgstr "Odaberi objekat klase %s" msgid "Select %s to change" msgstr "Odaberi objekat klase %s za izmenu" +#, python-format +msgid "Select %s to view" +msgstr "Odaberi %sza pregled" + msgid "Date:" msgstr "Datum:" diff --git a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo index cb525f07a9e6f..5cc9a7aefc554 100644 Binary files a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po index 8242317ab4083..1290502735e8f 100644 --- a/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po @@ -1,17 +1,18 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Igor Jerosimić, 2019 # Jannis Leidel , 2011 # Janos Guljas , 2011-2012 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: Jannis Leidel \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2019-06-27 19:12+0000\n" +"Last-Translator: Igor Jerosimić\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/django/django/" -"language/sr%40latin/)\n" +"language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -94,29 +95,9 @@ msgid "" "button." msgstr "Izabrali ste akciju ali niste izmenili ni jedno polje." -#, 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] "" -msgstr[1] "" -msgstr[2] "" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - msgid "Now" msgstr "Trenutno vreme" -msgid "Choose a Time" -msgstr "" - -msgid "Choose a time" -msgstr "Odabir vremena" - msgid "Midnight" msgstr "Ponoć" @@ -127,7 +108,27 @@ msgid "Noon" msgstr "Podne" msgid "6 p.m." -msgstr "" +msgstr "18č" + +#, 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] "Obaveštenje: Vi ste %s sat ispred serverskog vremena." +msgstr[1] "Obaveštenje: Vi ste %s sata ispred serverskog vremena." +msgstr[2] "Obaveštenje: Vi ste %s sati ispred serverskog vremena." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Obaveštenje: Vi ste %s sat iza serverskog vremena." +msgstr[1] "Obaveštenje: Vi ste %s sata iza serverskog vremena." +msgstr[2] "Obaveštenje: Vi ste %s sati iza serverskog vremena." + +msgid "Choose a Time" +msgstr "Odaberite vreme" + +msgid "Choose a time" +msgstr "Odabir vremena" msgid "Cancel" msgstr "Poništi" @@ -136,7 +137,7 @@ msgid "Today" msgstr "Danas" msgid "Choose a Date" -msgstr "" +msgstr "Odaberite datum" msgid "Yesterday" msgstr "Juče" @@ -145,68 +146,68 @@ msgid "Tomorrow" msgstr "Sutra" msgid "January" -msgstr "" +msgstr "Januar" msgid "February" -msgstr "" +msgstr "Februar" msgid "March" -msgstr "" +msgstr "Mart" msgid "April" -msgstr "" +msgstr "April" msgid "May" -msgstr "" +msgstr "Maj" msgid "June" -msgstr "" +msgstr "Jun" msgid "July" -msgstr "" +msgstr "Jul" msgid "August" -msgstr "" +msgstr "Avgust" msgid "September" -msgstr "" +msgstr "Septembar" msgid "October" -msgstr "" +msgstr "Oktobar" msgid "November" -msgstr "" +msgstr "Novembar" msgid "December" -msgstr "" +msgstr "Decembar" msgctxt "one letter Sunday" msgid "S" -msgstr "" +msgstr "N" msgctxt "one letter Monday" msgid "M" -msgstr "" +msgstr "P" msgctxt "one letter Tuesday" msgid "T" -msgstr "" +msgstr "U" msgctxt "one letter Wednesday" msgid "W" -msgstr "" +msgstr "S" msgctxt "one letter Thursday" msgid "T" -msgstr "" +msgstr "Č" msgctxt "one letter Friday" msgid "F" -msgstr "" +msgstr "P" msgctxt "one letter Saturday" msgid "S" -msgstr "" +msgstr "S" msgid "Show" msgstr "Pokaži" diff --git a/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo b/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo index 2c7a09d233cfa..3ca037edbd2f3 100644 Binary files a/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/sv/LC_MESSAGES/django.po b/django/contrib/admin/locale/sv/LC_MESSAGES/django.po index b1fea0e10d410..740b757cd387e 100644 --- a/django/contrib/admin/locale/sv/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/sv/LC_MESSAGES/django.po @@ -3,21 +3,22 @@ # Translators: # Alex Nordlund , 2012 # Andreas Pelme , 2014 -# cvitan , 2011 +# d7bcbd5f5cbecdc2b959899620582440, 2011 # Cybjit , 2012 +# Henrik Palmlund Wahlgren , 2019 # Jannis Leidel , 2011 # Jonathan Lindén, 2015 # Jonathan Lindén, 2014 # Mattias Hansson , 2016 # Mikko Hellsing , 2011 -# Thomas Lundqvist , 2013,2016-2017 +# Thomas Lundqvist, 2013,2016-2017 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-09-15 13:27+0000\n" -"Last-Translator: Thomas Lundqvist \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-28 13:45+0000\n" +"Last-Translator: Henrik Palmlund Wahlgren \n" "Language-Team: Swedish (http://www.transifex.com/django/django/language/" "sv/)\n" "MIME-Version: 1.0\n" @@ -95,6 +96,15 @@ msgstr "Lägg till ytterligare %(verbose_name)s" msgid "Remove" msgstr "Ta bort" +msgid "Addition" +msgstr "Tillägg" + +msgid "Change" +msgstr "Ändra" + +msgid "Deletion" +msgstr "Borttagning" + msgid "action time" msgstr "händelsetid" @@ -108,7 +118,7 @@ msgid "object id" msgstr "objektets 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 "objektets beskrivning" @@ -173,9 +183,11 @@ msgstr "" "Håll ner \"Control\", eller \"Command\" på en Mac, för att välja fler än en." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" lades till. Du kan redigera objektet igen nedanför." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" lades till." + +msgid "You may edit it again below." +msgstr "Du kan redigera det igen nedan" #, python-brace-format msgid "" @@ -184,15 +196,16 @@ msgid "" msgstr "" "{name} \"{obj}\" lades till. Du kan lägga till ytterligare {name} nedan." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" lades till." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" ändrades. Du kan ändra det igen nedan." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" lades till. Du kan redigera objektet igen nedanför." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -231,6 +244,10 @@ msgstr "Lägg till %s" msgid "Change %s" msgstr "Ändra %s" +#, python-format +msgid "View %s" +msgstr "Visa 1%s" + msgid "Database error" msgstr "Databasfel" @@ -340,7 +357,7 @@ msgid "Change password" msgstr "Ändra lösenord" msgid "Please correct the error below." -msgstr "Rätta till felen nedan." +msgstr "Vänligen rätta nedanstående fel" msgid "Please correct the errors below." msgstr "Vänligen rätta till felen nedan." @@ -451,8 +468,8 @@ msgstr "" "Är du säker på att du vill ta bort valda %(objects_name)s? Alla följande " "objekt samt relaterade objekt kommer att tas bort: " -msgid "Change" -msgstr "Ändra" +msgid "View" +msgstr "Visa" msgid "Delete?" msgstr "Radera?" @@ -471,8 +488,8 @@ msgstr "Modeller i applikationen %(name)s" msgid "Add" msgstr "Lägg till" -msgid "You don't have permission to edit anything." -msgstr "Du har inte rättigheter att redigera något." +msgid "You don't have permission to view or edit anything." +msgstr "Du har inte tillåtelse att se eller redigera någonting." msgid "Recent actions" msgstr "Senaste Händelser" @@ -527,20 +544,8 @@ msgstr "Visa alla" msgid "Save" msgstr "Spara" -msgid "Popup closing..." -msgstr "Popup stänger..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Ändra markerade %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Lägg till %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Ta bort markerade %(model)s" +msgid "Popup closing…" +msgstr "Popup stängs..." msgid "Search" msgstr "Sök" @@ -564,6 +569,24 @@ msgstr "Spara och lägg till ny" msgid "Save and continue editing" msgstr "Spara och fortsätt redigera" +msgid "Save and view" +msgstr "Spara och visa" + +msgid "Close" +msgstr "Stäng" + +#, python-format +msgid "Change selected %(model)s" +msgstr "Ändra markerade %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Lägg till %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Ta bort markerade %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Tack för att du spenderade lite kvalitetstid med webbplatsen idag." @@ -675,6 +698,10 @@ msgstr "Välj %s" msgid "Select %s to change" msgstr "Välj %s att ändra" +#, python-format +msgid "Select %s to view" +msgstr "Välj 1%s för visning" + msgid "Date:" msgstr "Datum:" diff --git a/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo b/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo index 565511d0cba94..f8f3f5c688a62 100644 Binary files a/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/tr/LC_MESSAGES/django.po b/django/contrib/admin/locale/tr/LC_MESSAGES/django.po index 79e3583c49b54..87ed6a55b1a9d 100644 --- a/django/contrib/admin/locale/tr/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/tr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: -# BouRock, 2015-2018 +# BouRock, 2015-2019 # BouRock, 2014-2015 # Caner Başaran , 2013 # Cihad GÜNDOĞDU , 2012 @@ -14,8 +14,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-28 17:04+0000\n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-01-18 16:09+0000\n" "Last-Translator: BouRock\n" "Language-Team: Turkish (http://www.transifex.com/django/django/language/" "tr/)\n" @@ -116,7 +116,7 @@ msgid "object id" msgstr "nesne kimliği" #. 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 "nesne kodu" @@ -547,24 +547,8 @@ msgstr "Tümünü göster" msgid "Save" msgstr "Kaydet" -msgid "Popup closing..." -msgstr "Açılır pencere kapanıyor..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Seçilen %(model)s değiştir" - -#, python-format -msgid "View selected %(model)s" -msgstr "Seçilen %(model)s göster" - -#, python-format -msgid "Add another %(model)s" -msgstr "Başka bir %(model)s ekle" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Seçilen %(model)s sil" +msgid "Popup closing…" +msgstr "Açılır pencere kapanıyor…" msgid "Search" msgstr "Ara" @@ -594,6 +578,18 @@ msgstr "Kaydet ve göster" msgid "Close" msgstr "Kapat" +#, python-format +msgid "Change selected %(model)s" +msgstr "Seçilen %(model)s değiştir" + +#, python-format +msgid "Add another %(model)s" +msgstr "Başka bir %(model)s ekle" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Seçilen %(model)s sil" + msgid "Thanks for spending some quality time with the Web site today." msgstr "" "Bugün Web sitesinde biraz güzel zaman geçirdiğiniz için teşekkür ederiz." diff --git a/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo b/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo index 8c2b506e56616..731bd86fd64c1 100644 Binary files a/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/uk/LC_MESSAGES/django.po b/django/contrib/admin/locale/uk/LC_MESSAGES/django.po index a25ab84250afc..593ccc35023b3 100644 --- a/django/contrib/admin/locale/uk/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/uk/LC_MESSAGES/django.po @@ -6,21 +6,22 @@ # Boryslav Larin , 2011 # Денис Подлесный , 2016 # Igor Melnyk, 2014,2017 +# Ivan Dmytrenko , 2019 # Jannis Leidel , 2011 # Kirill Gagarski , 2015 # Max V. Stotsky , 2014 # Mikhail Kolesnik , 2015 # Mykola Zamkovoi , 2014 # Sergiy Kuzmenko , 2011 -# Taras Korzhak , 2018 +# tarasyyyk , 2018 # Zoriana Zaiats, 2016 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-08-24 20:12+0000\n" -"Last-Translator: Taras Korzhak \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-18 21:37+0000\n" +"Last-Translator: Ivan Dmytrenko \n" "Language-Team: Ukrainian (http://www.transifex.com/django/django/language/" "uk/)\n" "MIME-Version: 1.0\n" @@ -123,7 +124,7 @@ msgid "object id" msgstr "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 "представлення об'єкта (repr)" @@ -553,24 +554,8 @@ msgstr "Показати всі" msgid "Save" msgstr "Зберегти" -msgid "Popup closing..." -msgstr "Закриття спливаючого вікна..." - -#, python-format -msgid "Change selected %(model)s" -msgstr "Змінити обрану %(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "Переглянути вибрані %(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "Додати ще одну %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Видалити обрану %(model)s" +msgid "Popup closing…" +msgstr "Закриття спливаючого вікна" msgid "Search" msgstr "Пошук" @@ -602,6 +587,18 @@ msgstr "Зберегти і переглянути" msgid "Close" msgstr "Закрити" +#, python-format +msgid "Change selected %(model)s" +msgstr "Змінити обрану %(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "Додати ще одну %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Видалити обрану %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Дякуємо за час, проведений сьогодні на сайті." diff --git a/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo b/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo index 5be5995af99ae..f70d010ac2024 100644 Binary files a/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo and b/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo differ diff --git a/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po b/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po index 1775a05a3c5a0..502c548712898 100644 --- a/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po +++ b/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Денис Подлесный \n" "Language-Team: Ukrainian (http://www.transifex.com/django/django/language/" @@ -20,8 +20,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != " +"11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % " +"100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || " +"(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #, javascript-format msgid "Available %s" @@ -80,6 +82,7 @@ msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "Обрано %(sel)s з %(cnt)s" msgstr[1] "Обрано %(sel)s з %(cnt)s" msgstr[2] "Обрано %(sel)s з %(cnt)s" +msgstr[3] "Обрано %(sel)s з %(cnt)s" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -104,12 +107,28 @@ msgstr "" "Ви обрали дію і не зробили жодних змін у полях. Ви, напевно, шукаєте кнопку " "\"Виконати\", а не \"Зберегти\"." +msgid "Now" +msgstr "Зараз" + +msgid "Midnight" +msgstr "Північ" + +msgid "6 a.m." +msgstr "6" + +msgid "Noon" +msgstr "Полудень" + +msgid "6 p.m." +msgstr "18:00" + #, 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] "Примітка: Ви на %s годину попереду серверного часу." msgstr[1] "Примітка: Ви на %s години попереду серверного часу." msgstr[2] "Примітка: Ви на %s годин попереду серверного часу." +msgstr[3] "Примітка: Ви на %s годин попереду серверного часу." #, javascript-format msgid "Note: You are %s hour behind server time." @@ -117,9 +136,7 @@ msgid_plural "Note: You are %s hours behind server time." msgstr[0] "Примітка: Ви на %s годину позаду серверного часу." msgstr[1] "Примітка: Ви на %s години позаду серверного часу." msgstr[2] "Примітка: Ви на %s годин позаду серверного часу." - -msgid "Now" -msgstr "Зараз" +msgstr[3] "Примітка: Ви на %s годин позаду серверного часу." msgid "Choose a Time" msgstr "Оберіть час" @@ -127,18 +144,6 @@ msgstr "Оберіть час" msgid "Choose a time" msgstr "Оберіть час" -msgid "Midnight" -msgstr "Північ" - -msgid "6 a.m." -msgstr "6" - -msgid "Noon" -msgstr "Полудень" - -msgid "6 p.m." -msgstr "18:00" - msgid "Cancel" msgstr "Відмінити" diff --git a/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo b/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo index 232cb3a59d05a..298498a4a8518 100644 Binary files a/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/vi/LC_MESSAGES/django.po b/django/contrib/admin/locale/vi/LC_MESSAGES/django.po index 68a94c3267d95..68fd78c640b86 100644 --- a/django/contrib/admin/locale/vi/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/vi/LC_MESSAGES/django.po @@ -5,16 +5,16 @@ # Jannis Leidel , 2011 # Thanh Le Viet , 2013 # Tran , 2011 -# Tran Van , 2011-2013,2016 +# Tran Van , 2011-2013,2016,2018 # Vuong Nguyen , 2011 # xgenvn , 2014 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-09-23 18:54+0000\n" -"Last-Translator: Jannis Leidel \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" "Language-Team: Vietnamese (http://www.transifex.com/django/django/language/" "vi/)\n" "MIME-Version: 1.0\n" @@ -91,6 +91,15 @@ msgstr "Thêm một %(verbose_name)s " msgid "Remove" msgstr "Gỡ bỏ" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Thay đổi" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "Thời gian tác động" @@ -98,13 +107,13 @@ msgid "user" msgstr "" msgid "content type" -msgstr "" +msgstr "kiểu nội dung" msgid "object id" msgstr "Mã đối tượng" #. 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 "đối tượng repr" @@ -137,7 +146,7 @@ msgstr "LogEntry Object" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "{name} \"{object}\" đã được thêm vào." msgid "Added." msgstr "Được thêm." @@ -169,8 +178,10 @@ msgstr "" "Giữ phím \"Control\", hoặc \"Command\" trên Mac, để chọn nhiều hơn một." #, 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 @@ -180,12 +191,13 @@ msgid "" 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." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -224,6 +236,10 @@ msgstr "Thêm %s" msgid "Change %s" msgstr "Thay đổi %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Cơ sở dữ liệu bị lỗi" @@ -327,7 +343,7 @@ msgid "Enter a username and password." msgstr "Điền tên đăng nhập và mật khẩu." msgid "Change password" -msgstr "Thay đổi mật khẩu" +msgstr "Đổi mật khẩu" msgid "Please correct the error below." msgstr "Hãy sửa lỗi sai dưới đây" @@ -439,8 +455,8 @@ msgstr "" "Bạn chắc chắn muốn xóa những lựa chọn %(objects_name)s? Tất cả những đối " "tượng sau và những đối tượng liên quan sẽ được xóa:" -msgid "Change" -msgstr "Thay đổi" +msgid "View" +msgstr "" msgid "Delete?" msgstr "Bạn muốn xóa?" @@ -459,8 +475,8 @@ msgstr "Các mô models trong %(name)s" msgid "Add" msgstr "Thêm vào" -msgid "You don't have permission to edit anything." -msgstr "Bạn không được cấp quyền chỉnh sửa bất cứ cái gì." +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "" @@ -516,21 +532,9 @@ msgstr "Hiện tất cả" msgid "Save" msgstr "Lưu lại" -msgid "Popup closing..." -msgstr "Đang đóng cửa sổ popup ..." - -#, python-format -msgid "Change selected %(model)s" +msgid "Popup closing…" msgstr "" -#, python-format -msgid "Add another %(model)s" -msgstr "Thêm %(model)s khác" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "Xóa %(model)s đã chọn" - msgid "Search" msgstr "Tìm kiếm" @@ -552,6 +556,24 @@ msgstr "Lưu và thêm mới" msgid "Save and continue editing" msgstr "Lưu và tiếp tục chỉnh sửa" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + +#, python-format +msgid "Change selected %(model)s" +msgstr "" + +#, python-format +msgid "Add another %(model)s" +msgstr "Thêm %(model)s khác" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "Xóa %(model)s đã chọn" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Cảm ơn bạn đã dành thời gian với website này" @@ -660,6 +682,10 @@ msgstr "Chọn %s" msgid "Select %s to change" msgstr "Chọn %s để thay đổi" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Ngày:" diff --git a/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo b/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo index d43800513ac19..8a5dd9364286e 100644 Binary files a/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo and b/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po b/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po index 7fa3d1a89f22d..f063f60879ec3 100644 --- a/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po +++ b/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po @@ -9,24 +9,26 @@ # Le Yang , 2018 # Liping Wang , 2016-2017 # mozillazg , 2016 -# Ronald White , 2013-2014 +# Ronald White , 2013-2014 # Sean Lee , 2013 # Sean Lee , 2013 # slene , 2011 +# Suntravel Chris , 2019 # Wentao Han , 2018 # xuyi wang , 2018 # yf zhan , 2018 -# Ziang Song , 2012 +# dykai , 2019 +# ced773123cfad7b4e8b79ca80f736af9, 2012 # Kevin Sze , 2012 # 雨翌 , 2016 -# Ronald White , 2013 +# Ronald White , 2013 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-28 07:44+0000\n" -"Last-Translator: Wentao Han \n" +"POT-Creation-Date: 2019-01-16 20:42+0100\n" +"PO-Revision-Date: 2019-02-15 05:12+0000\n" +"Last-Translator: dykai \n" "Language-Team: Chinese (China) (http://www.transifex.com/django/django/" "language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -124,7 +126,7 @@ msgid "object id" msgstr "对象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 "对象表示" @@ -303,7 +305,7 @@ msgid "Page not found" msgstr "页面没有找到" msgid "We're sorry, but the requested page could not be found." -msgstr "很报歉,请求页面无法找到。" +msgstr "很抱歉,请求页面无法找到。" msgid "Home" msgstr "首页" @@ -532,24 +534,8 @@ msgstr "显示全部" msgid "Save" msgstr "保存" -msgid "Popup closing..." -msgstr "弹窗关闭中。。。" - -#, python-format -msgid "Change selected %(model)s" -msgstr "更改选中的%(model)s" - -#, python-format -msgid "View selected %(model)s" -msgstr "查看已选的%(model)s" - -#, python-format -msgid "Add another %(model)s" -msgstr "增加另一个 %(model)s" - -#, python-format -msgid "Delete selected %(model)s" -msgstr "取消选中 %(model)s" +msgid "Popup closing…" +msgstr "弹窗关闭中..." msgid "Search" msgstr "搜索" @@ -578,6 +564,18 @@ msgstr "保存并查看" msgid "Close" msgstr "关闭" +#, python-format +msgid "Change selected %(model)s" +msgstr "更改选中的%(model)s" + +#, python-format +msgid "Add another %(model)s" +msgstr "增加另一个 %(model)s" + +#, python-format +msgid "Delete selected %(model)s" +msgstr "取消选中 %(model)s" + msgid "Thanks for spending some quality time with the Web site today." msgstr "感谢您今天在本站花费了一些宝贵时间。" diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index eb2c8cd0948f3..52ad319ef2bb2 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -2126,47 +2126,51 @@ def get_queryset(self, request): queryset = queryset.none() return queryset + def _has_any_perms_for_target_model(self, request, perms): + """ + This method is called only when the ModelAdmin's model is for an + ManyToManyField's implicit through model (if self.opts.auto_created). + Return True if the user has any of the given permissions ('add', + 'change', etc.) for the model that points to the through model. + """ + opts = self.opts + # Find the target model of an auto-created many-to-many relationship. + for field in opts.fields: + if field.remote_field and field.remote_field.model != self.parent_model: + opts = field.remote_field.model._meta + break + return any( + request.user.has_perm('%s.%s' % (opts.app_label, get_permission_codename(perm, opts))) + for perm in perms + ) + def has_add_permission(self, request, obj=None): - # RemovedInDjango31Warning: obj becomes a mandatory argument. + # RemovedInDjango30Warning: obj becomes a mandatory argument. if self.opts.auto_created: - # We're checking the rights to an auto-created intermediate model, - # which doesn't have its own individual permissions. The user needs - # to have the view permission for the related model in order to - # be able to do anything with the intermediate model. - return self.has_view_permission(request, obj) + # Auto-created intermediate models don't have their own + # permissions. The user needs to have the change permission for the + # related model in order to be able to do anything with the + # intermediate model. + return self._has_any_perms_for_target_model(request, ['change']) return super().has_add_permission(request) def has_change_permission(self, request, obj=None): if self.opts.auto_created: - # We're checking the rights to an auto-created intermediate model, - # which doesn't have its own individual permissions. The user needs - # to have the view permission for the related model in order to - # be able to do anything with the intermediate model. - return self.has_view_permission(request, obj) + # Same comment as has_add_permission(). + return self._has_any_perms_for_target_model(request, ['change']) return super().has_change_permission(request) def has_delete_permission(self, request, obj=None): if self.opts.auto_created: - # We're checking the rights to an auto-created intermediate model, - # which doesn't have its own individual permissions. The user needs - # to have the view permission for the related model in order to - # be able to do anything with the intermediate model. - return self.has_view_permission(request, obj) + # Same comment as has_add_permission(). + return self._has_any_perms_for_target_model(request, ['change']) return super().has_delete_permission(request, obj) def has_view_permission(self, request, obj=None): if self.opts.auto_created: - opts = self.opts - # The model was auto-created as intermediary for a many-to-many - # Many-relationship; find the target model. - for field in opts.fields: - if field.remote_field and field.remote_field.model != self.parent_model: - opts = field.remote_field.model._meta - break - return ( - request.user.has_perm('%s.%s' % (opts.app_label, get_permission_codename('view', opts))) or - request.user.has_perm('%s.%s' % (opts.app_label, get_permission_codename('change', opts))) - ) + # Same comment as has_add_permission(). The 'change' permission + # also implies the 'view' permission. + return self._has_any_perms_for_target_model(request, ['view', 'change']) return super().has_view_permission(request) diff --git a/django/contrib/admin/static/admin/css/login.css b/django/contrib/admin/static/admin/css/login.css index cab3bbf5856dd..2ec241c27a7e9 100644 --- a/django/contrib/admin/static/admin/css/login.css +++ b/django/contrib/admin/static/admin/css/login.css @@ -6,7 +6,8 @@ body.login { .login #header { height: auto; - padding: 5px 16px; + padding: 15px 16px; + justify-content: center; } .login #header h1 { diff --git a/django/contrib/admin/static/admin/js/SelectBox.js b/django/contrib/admin/static/admin/js/SelectBox.js index 1a14959bcadac..2073f03dd8192 100644 --- a/django/contrib/admin/static/admin/js/SelectBox.js +++ b/django/contrib/admin/static/admin/js/SelectBox.js @@ -19,7 +19,7 @@ var box = document.getElementById(id); var node; $(box).empty(); // clear all options - var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag + var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag var cache = SelectBox.cache[id]; for (var i = 0, j = cache.length; i < j; i++) { node = cache[i]; @@ -48,7 +48,7 @@ token = tokens[k]; if (node_text.indexOf(token) === -1) { node.displayed = 0; - break; // Once the first token isn't found we're done + break; // Once the first token isn't found we're done } } } diff --git a/django/contrib/admin/static/admin/js/actions.js b/django/contrib/admin/static/admin/js/actions.js index 524616fbf3fba..27c60a6e5a7b9 100644 --- a/django/contrib/admin/static/admin/js/actions.js +++ b/django/contrib/admin/static/admin/js/actions.js @@ -8,59 +8,59 @@ var actionCheckboxes = $(this); var list_editable_changed = false; var showQuestion = function() { - $(options.acrossClears).hide(); - $(options.acrossQuestions).show(); - $(options.allContainer).hide(); - }, - showClear = function() { - $(options.acrossClears).show(); - $(options.acrossQuestions).hide(); - $(options.actionContainer).toggleClass(options.selectedClass); - $(options.allContainer).show(); - $(options.counterContainer).hide(); - }, - reset = function() { - $(options.acrossClears).hide(); - $(options.acrossQuestions).hide(); - $(options.allContainer).hide(); - $(options.counterContainer).show(); - }, - clearAcross = function() { - reset(); - $(options.acrossInput).val(0); - $(options.actionContainer).removeClass(options.selectedClass); - }, - checker = function(checked) { - if (checked) { - showQuestion(); - } else { + $(options.acrossClears).hide(); + $(options.acrossQuestions).show(); + $(options.allContainer).hide(); + }, + showClear = function() { + $(options.acrossClears).show(); + $(options.acrossQuestions).hide(); + $(options.actionContainer).toggleClass(options.selectedClass); + $(options.allContainer).show(); + $(options.counterContainer).hide(); + }, + reset = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).hide(); + $(options.allContainer).hide(); + $(options.counterContainer).show(); + }, + clearAcross = function() { reset(); - } - $(actionCheckboxes).prop("checked", checked) - .parent().parent().toggleClass(options.selectedClass, checked); - }, - updateCounter = function() { - var sel = $(actionCheckboxes).filter(":checked").length; - // data-actions-icnt is defined in the generated HTML - // and contains the total amount of objects in the queryset - var actions_icnt = $('.action-counter').data('actionsIcnt'); - $(options.counterContainer).html(interpolate( - ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { - sel: sel, - cnt: actions_icnt - }, true)); - $(options.allToggle).prop("checked", function() { - var value; - if (sel === actionCheckboxes.length) { - value = true; + $(options.acrossInput).val(0); + $(options.actionContainer).removeClass(options.selectedClass); + }, + checker = function(checked) { + if (checked) { showQuestion(); } else { - value = false; - clearAcross(); + reset(); } - return value; - }); - }; + $(actionCheckboxes).prop("checked", checked) + .parent().parent().toggleClass(options.selectedClass, checked); + }, + updateCounter = function() { + var sel = $(actionCheckboxes).filter(":checked").length; + // data-actions-icnt is defined in the generated HTML + // and contains the total amount of objects in the queryset + var actions_icnt = $('.action-counter').data('actionsIcnt'); + $(options.counterContainer).html(interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: actions_icnt + }, true)); + $(options.allToggle).prop("checked", function() { + var value; + if (sel === actionCheckboxes.length) { + value = true; + showQuestion(); + } else { + value = false; + clearAcross(); + } + return value; + }); + }; // Show counter by default $(options.counterContainer).show(); // Check state of checkboxes and reinit state if needed diff --git a/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js b/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js index 08b2785c06fbc..1ee7c2a9c4cda 100644 --- a/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js @@ -20,10 +20,10 @@ dismissClockFunc: [], dismissCalendarFunc: [], calendarDivName1: 'calendarbox', // name of calendar
that gets toggled - calendarDivName2: 'calendarin', // name of
that contains calendar - calendarLinkName: 'calendarlink',// name of the link that is used to toggle - clockDivName: 'clockbox', // name of clock
that gets toggled - clockLinkName: 'clocklink', // name of the link that is used to toggle + calendarDivName2: 'calendarin', // name of
that contains calendar + calendarLinkName: 'calendarlink', // name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch timezoneOffset: 0, @@ -399,10 +399,10 @@ var format = get_format('DATE_INPUT_FORMATS')[0]; // the format needs to be escaped a little format = format.replace('\\', '\\\\') - .replace('\r', '\\r') - .replace('\n', '\\n') - .replace('\t', '\\t') - .replace("'", "\\'"); + .replace('\r', '\\r') + .replace('\n', '\\n') + .replace('\t', '\\t') + .replace("'", "\\'"); return function(y, m, d) { DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); DateTimeShortcuts.calendarInputs[num].focus(); diff --git a/django/contrib/admin/static/admin/js/cancel.js b/django/contrib/admin/static/admin/js/cancel.js index 04ec812a4a8c0..8809ee773fd2d 100644 --- a/django/contrib/admin/static/admin/js/cancel.js +++ b/django/contrib/admin/static/admin/js/cancel.js @@ -4,7 +4,7 @@ $('.cancel-link').on('click', function(e) { e.preventDefault(); if (window.location.search.indexOf('&_popup=1') === -1) { - window.history.back(); // Go back if not a popup. + window.history.back(); // Go back if not a popup. } else { window.close(); // Otherwise, close the popup. } diff --git a/django/contrib/admin/static/admin/js/collapse.js b/django/contrib/admin/static/admin/js/collapse.js index 3123878e10b75..20e7030e7e150 100644 --- a/django/contrib/admin/static/admin/js/collapse.js +++ b/django/contrib/admin/static/admin/js/collapse.js @@ -30,23 +30,26 @@ h2.appendChild(document.createTextNode(')')); } } - // Add toggle to anchor tag - var toggles = document.querySelectorAll('fieldset.collapse a.collapse-toggle'); + // Add toggle to hide/show anchor tag var toggleFunc = function(ev) { - ev.preventDefault(); - var fieldset = closestElem(this, 'fieldset'); - if (fieldset.classList.contains('collapsed')) { - // Show - this.textContent = gettext('Hide'); - fieldset.classList.remove('collapsed'); - } else { - // Hide - this.textContent = gettext('Show'); - fieldset.classList.add('collapsed'); + if (ev.target.matches('.collapse-toggle')) { + ev.preventDefault(); + ev.stopPropagation(); + var fieldset = closestElem(ev.target, 'fieldset'); + if (fieldset.classList.contains('collapsed')) { + // Show + ev.target.textContent = gettext('Hide'); + fieldset.classList.remove('collapsed'); + } else { + // Hide + ev.target.textContent = gettext('Show'); + fieldset.classList.add('collapsed'); + } } }; - for (i = 0; i < toggles.length; i++) { - toggles[i].addEventListener('click', toggleFunc); + var inlineDivs = document.querySelectorAll('fieldset.module'); + for (i = 0; i < inlineDivs.length; i++) { + inlineDivs[i].addEventListener('click', toggleFunc); } }); })(); diff --git a/django/contrib/admin/static/admin/js/collapse.min.js b/django/contrib/admin/static/admin/js/collapse.min.js index 6e1a06de166a9..9e16a21eb966a 100644 --- a/django/contrib/admin/static/admin/js/collapse.min.js +++ b/django/contrib/admin/static/admin/js/collapse.min.js @@ -1,5 +1,3 @@ -var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,c,b){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e'+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").on("click",function(c){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]): -a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",[a(this).attr("id")]);return!1})})})(django.jQuery); +(function(){var e=function(b,a){return b.nodeName===a.toUpperCase()?b:"BODY"===b.parentNode.nodeName?null:b.parentNode&&e(b.parentNode,a)};window.addEventListener("load",function(){for(var b=document.querySelectorAll("fieldset.collapse"),a=0;a=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(""') self.assertEqual( diff --git a/tests/aggregation/test_filter_argument.py b/tests/aggregation/test_filter_argument.py index 63dee5946431f..9d6c0a52aff2c 100644 --- a/tests/aggregation/test_filter_argument.py +++ b/tests/aggregation/test_filter_argument.py @@ -1,8 +1,11 @@ import datetime from decimal import Decimal -from django.db.models import Case, Count, F, Q, Sum, When +from django.db.models import ( + Avg, Case, Count, F, Q, StdDev, Sum, Variance, When, +) from django.test import TestCase +from django.test.utils import Approximate from .models import Author, Book, Publisher @@ -40,6 +43,16 @@ def test_filtered_aggregates(self): agg = Sum('age', filter=Q(name__startswith='test')) self.assertEqual(Author.objects.aggregate(age=agg)['age'], 200) + def test_filtered_numerical_aggregates(self): + for aggregate, expected_result in ( + (Avg, Approximate(66.7, 1)), + (StdDev, Approximate(24.9, 1)), + (Variance, Approximate(622.2, 1)), + ): + with self.subTest(aggregate=aggregate.__name__): + agg = aggregate('age', filter=Q(name__startswith='test')) + self.assertEqual(Author.objects.aggregate(age=agg)['age'], expected_result) + def test_double_filtered_aggregates(self): agg = Sum('age', filter=Q(Q(name='test2') & ~Q(name='test'))) self.assertEqual(Author.objects.aggregate(age=agg)['age'], 60) diff --git a/tests/aggregation/tests.py b/tests/aggregation/tests.py index 8cac90f0201c8..3820496c9fd5f 100644 --- a/tests/aggregation/tests.py +++ b/tests/aggregation/tests.py @@ -8,6 +8,7 @@ Avg, Count, DecimalField, DurationField, F, FloatField, Func, IntegerField, Max, Min, Sum, Value, ) +from django.db.models.expressions import Case, When from django.test import TestCase from django.test.utils import Approximate, CaptureQueriesContext from django.utils import timezone @@ -395,6 +396,12 @@ def test_count_star(self): sql = ctx.captured_queries[0]['sql'] self.assertIn('SELECT COUNT(*) ', sql) + def test_count_distinct_expression(self): + aggs = Book.objects.aggregate( + distinct_ratings=Count(Case(When(pages__gt=300, then='rating')), distinct=True), + ) + self.assertEqual(aggs['distinct_ratings'], 4) + def test_non_grouped_annotation_not_in_group_by(self): """ An annotation not included in values() before an aggregate should be diff --git a/tests/auth_tests/test_migrations.py b/tests/auth_tests/test_migrations.py index 5ff2f6b4b326e..98c5b5964a7ee 100644 --- a/tests/auth_tests/test_migrations.py +++ b/tests/auth_tests/test_migrations.py @@ -4,6 +4,7 @@ from django.contrib.auth.models import Permission, User from django.contrib.contenttypes.models import ContentType from django.test import TestCase +from django.test.utils import captured_stdout from .models import Proxy, UserProxy @@ -152,3 +153,27 @@ def test_user_keeps_same_permissions_after_migrating_backward(self): user = User._default_manager.get(pk=user.pk) for permission in [self.default_permission, self.custom_permission]: self.assertTrue(user.has_perm('auth_tests.' + permission.codename)) + + def test_migrate_with_existing_target_permission(self): + """ + Permissions may already exist: + + - Old workaround was to manually create permissions for proxy models. + - Model may have been concrete and then converted to proxy. + + Output a reminder to audit relevant permissions. + """ + proxy_model_content_type = ContentType.objects.get_for_model(Proxy, for_concrete_model=False) + Permission.objects.create( + content_type=proxy_model_content_type, + codename='add_proxy', + name='Can add proxy', + ) + Permission.objects.create( + content_type=proxy_model_content_type, + codename='display_proxys', + name='May display proxys information', + ) + with captured_stdout() as stdout: + update_proxy_permissions.update_proxy_model_permissions(apps, None) + self.assertIn('A problem arose migrating proxy model permissions', stdout.getvalue()) diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py index 4949ce1bf487b..e7ad1cbcdfe61 100644 --- a/tests/auth_tests/test_views.py +++ b/tests/auth_tests/test_views.py @@ -855,7 +855,7 @@ def test_redirect_loop(self): self.login() msg = ( "Redirection loop for authenticated user detected. Check that " - "your LOGIN_REDIRECT_URL doesn't point to a login page" + "your LOGIN_REDIRECT_URL doesn't point to a login page." ) with self.settings(LOGIN_REDIRECT_URL=self.do_redirect_url): with self.assertRaisesMessage(ValueError, msg): diff --git a/tests/backends/mysql/test_schema.py b/tests/backends/mysql/test_schema.py index 27c24df4eecc3..9f36274391c53 100644 --- a/tests/backends/mysql/test_schema.py +++ b/tests/backends/mysql/test_schema.py @@ -13,7 +13,7 @@ def test_quote_value(self): ('string', "'string'"), (42, '42'), (1.754, '1.754e0' if MySQLdb.version_info >= (1, 3, 14) else '1.754'), - (False, '0'), + (False, b'0' if MySQLdb.version_info >= (1, 4, 0) else '0'), ] for value, expected in tested_values: with self.subTest(value=value): diff --git a/tests/backends/oracle/tests.py b/tests/backends/oracle/tests.py index 333d224b3f6cd..6a883cca2d047 100644 --- a/tests/backends/oracle/tests.py +++ b/tests/backends/oracle/tests.py @@ -88,7 +88,7 @@ def test_password_with_at_sign(self): old_password = connection.settings_dict['PASSWORD'] connection.settings_dict['PASSWORD'] = 'p@ssword' try: - self.assertIn('/\\"p@ssword\\"@', connection._connect_string()) + self.assertIn('/"p@ssword"@', connection._connect_string()) with self.assertRaises(DatabaseError) as context: connection.cursor() # Database exception: "ORA-01017: invalid username/password" is diff --git a/tests/backends/postgresql/tests.py b/tests/backends/postgresql/tests.py index 6fd0ba442082a..96a150169330d 100644 --- a/tests/backends/postgresql/tests.py +++ b/tests/backends/postgresql/tests.py @@ -134,6 +134,12 @@ def test_connect_isolation_level(self): finally: new_connection.close() + def test_connect_no_is_usable_checks(self): + new_connection = connection.copy() + with mock.patch.object(new_connection, 'is_usable') as is_usable: + new_connection.connect() + is_usable.assert_not_called() + def _select(self, val): with connection.cursor() as cursor: cursor.execute('SELECT %s', (val,)) diff --git a/tests/backends/sqlite/test_introspection.py b/tests/backends/sqlite/test_introspection.py index 1695ee549e4cc..e378e0ee56189 100644 --- a/tests/backends/sqlite/test_introspection.py +++ b/tests/backends/sqlite/test_introspection.py @@ -1,5 +1,7 @@ import unittest +import sqlparse + from django.db import connection from django.test import TestCase @@ -25,3 +27,116 @@ def test_get_primary_key_column(self): self.assertEqual(field, expected_string) finally: cursor.execute('DROP TABLE test_primary') + + +@unittest.skipUnless(connection.vendor == 'sqlite', 'SQLite tests') +class ParsingTests(TestCase): + def parse_definition(self, sql, columns): + """Parse a column or constraint definition.""" + statement = sqlparse.parse(sql)[0] + tokens = (token for token in statement.flatten() if not token.is_whitespace) + with connection.cursor(): + return connection.introspection._parse_column_or_constraint_definition(tokens, set(columns)) + + def assertConstraint(self, constraint_details, cols, unique=False, check=False): + self.assertEqual(constraint_details, { + 'unique': unique, + 'columns': cols, + 'primary_key': False, + 'foreign_key': None, + 'check': check, + 'index': False, + }) + + def test_unique_column(self): + tests = ( + ('"ref" integer UNIQUE,', ['ref']), + ('ref integer UNIQUE,', ['ref']), + ('"customname" integer UNIQUE,', ['customname']), + ('customname integer UNIQUE,', ['customname']), + ) + for sql, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertIsNone(constraint) + self.assertConstraint(details, columns, unique=True) + self.assertIsNone(check) + + def test_unique_constraint(self): + tests = ( + ('CONSTRAINT "ref" UNIQUE ("ref"),', 'ref', ['ref']), + ('CONSTRAINT ref UNIQUE (ref),', 'ref', ['ref']), + ('CONSTRAINT "customname1" UNIQUE ("customname2"),', 'customname1', ['customname2']), + ('CONSTRAINT customname1 UNIQUE (customname2),', 'customname1', ['customname2']), + ) + for sql, constraint_name, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertEqual(constraint, constraint_name) + self.assertConstraint(details, columns, unique=True) + self.assertIsNone(check) + + def test_unique_constraint_multicolumn(self): + tests = ( + ('CONSTRAINT "ref" UNIQUE ("ref", "customname"),', 'ref', ['ref', 'customname']), + ('CONSTRAINT ref UNIQUE (ref, customname),', 'ref', ['ref', 'customname']), + ) + for sql, constraint_name, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertEqual(constraint, constraint_name) + self.assertConstraint(details, columns, unique=True) + self.assertIsNone(check) + + def test_check_column(self): + tests = ( + ('"ref" varchar(255) CHECK ("ref" != \'test\'),', ['ref']), + ('ref varchar(255) CHECK (ref != \'test\'),', ['ref']), + ('"customname1" varchar(255) CHECK ("customname2" != \'test\'),', ['customname2']), + ('customname1 varchar(255) CHECK (customname2 != \'test\'),', ['customname2']), + ) + for sql, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertIsNone(constraint) + self.assertIsNone(details) + self.assertConstraint(check, columns, check=True) + + def test_check_constraint(self): + tests = ( + ('CONSTRAINT "ref" CHECK ("ref" != \'test\'),', 'ref', ['ref']), + ('CONSTRAINT ref CHECK (ref != \'test\'),', 'ref', ['ref']), + ('CONSTRAINT "customname1" CHECK ("customname2" != \'test\'),', 'customname1', ['customname2']), + ('CONSTRAINT customname1 CHECK (customname2 != \'test\'),', 'customname1', ['customname2']), + ) + for sql, constraint_name, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertEqual(constraint, constraint_name) + self.assertIsNone(details) + self.assertConstraint(check, columns, check=True) + + def test_check_column_with_operators_and_functions(self): + tests = ( + ('"ref" integer CHECK ("ref" BETWEEN 1 AND 10),', ['ref']), + ('"ref" varchar(255) CHECK ("ref" LIKE \'test%\'),', ['ref']), + ('"ref" varchar(255) CHECK (LENGTH(ref) > "max_length"),', ['ref', 'max_length']), + ) + for sql, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertIsNone(constraint) + self.assertIsNone(details) + self.assertConstraint(check, columns, check=True) + + def test_check_and_unique_column(self): + tests = ( + ('"ref" varchar(255) CHECK ("ref" != \'test\') UNIQUE,', ['ref']), + ('ref varchar(255) UNIQUE CHECK (ref != \'test\'),', ['ref']), + ) + for sql, columns in tests: + with self.subTest(sql=sql): + constraint, details, check, _ = self.parse_definition(sql, columns) + self.assertIsNone(constraint) + self.assertConstraint(details, columns, unique=True) + self.assertConstraint(check, columns, check=True) diff --git a/tests/backends/sqlite/tests.py b/tests/backends/sqlite/tests.py index c681d3977554b..21be45fb11826 100644 --- a/tests/backends/sqlite/tests.py +++ b/tests/backends/sqlite/tests.py @@ -1,7 +1,10 @@ import re import threading import unittest +from sqlite3 import dbapi2 +from unittest import mock +from django.core.exceptions import ImproperlyConfigured from django.db import connection, transaction from django.db.models import Avg, StdDev, Sum, Variance from django.db.models.aggregates import Aggregate @@ -14,11 +17,24 @@ from ..models import Author, Item, Object, Square +try: + from django.db.backends.sqlite3.base import check_sqlite_version +except ImproperlyConfigured: + # Ignore "SQLite is too old" when running tests on another database. + pass + @unittest.skipUnless(connection.vendor == 'sqlite', 'SQLite tests') class Tests(TestCase): longMessage = True + def test_check_sqlite_version(self): + msg = 'SQLite 3.8.3 or later is required (found 3.8.2).' + with mock.patch.object(dbapi2, 'sqlite_version_info', (3, 8, 2)), \ + mock.patch.object(dbapi2, 'sqlite_version', '3.8.2'), \ + self.assertRaisesMessage(ImproperlyConfigured, msg): + check_sqlite_version() + def test_aggregation(self): """ Raise NotImplementedError when aggregating on date/time fields (#19360). diff --git a/tests/backends/tests.py b/tests/backends/tests.py index d1b89950c0cd5..a523fa67fd00b 100644 --- a/tests/backends/tests.py +++ b/tests/backends/tests.py @@ -605,21 +605,25 @@ def runner(): connection = connections[DEFAULT_DB_ALIAS] # Allow thread sharing so the connection can be closed by the # main thread. - connection.allow_thread_sharing = True + connection.inc_thread_sharing() connection.cursor() connections_dict[id(connection)] = connection - for x in range(2): - t = threading.Thread(target=runner) - t.start() - t.join() - # Each created connection got different inner connection. - self.assertEqual(len({conn.connection for conn in connections_dict.values()}), 3) - # Finish by closing the connections opened by the other threads (the - # connection opened in the main thread will automatically be closed on - # teardown). - for conn in connections_dict.values(): - if conn is not connection: - conn.close() + try: + for x in range(2): + t = threading.Thread(target=runner) + t.start() + t.join() + # Each created connection got different inner connection. + self.assertEqual(len({conn.connection for conn in connections_dict.values()}), 3) + finally: + # Finish by closing the connections opened by the other threads + # (the connection opened in the main thread will automatically be + # closed on teardown). + for conn in connections_dict.values(): + if conn is not connection: + if conn.allow_thread_sharing: + conn.close() + conn.dec_thread_sharing() def test_connections_thread_local(self): """ @@ -636,19 +640,23 @@ def runner(): for conn in connections.all(): # Allow thread sharing so the connection can be closed by the # main thread. - conn.allow_thread_sharing = True + conn.inc_thread_sharing() connections_dict[id(conn)] = conn - for x in range(2): - t = threading.Thread(target=runner) - t.start() - t.join() - self.assertEqual(len(connections_dict), 6) - # Finish by closing the connections opened by the other threads (the - # connection opened in the main thread will automatically be closed on - # teardown). - for conn in connections_dict.values(): - if conn is not connection: - conn.close() + try: + for x in range(2): + t = threading.Thread(target=runner) + t.start() + t.join() + self.assertEqual(len(connections_dict), 6) + finally: + # Finish by closing the connections opened by the other threads + # (the connection opened in the main thread will automatically be + # closed on teardown). + for conn in connections_dict.values(): + if conn is not connection: + if conn.allow_thread_sharing: + conn.close() + conn.dec_thread_sharing() def test_pass_connection_between_threads(self): """ @@ -668,25 +676,21 @@ def runner(main_thread_connection): t.start() t.join() - # Without touching allow_thread_sharing, which should be False by default. - exceptions = [] - do_thread() - # Forbidden! - self.assertIsInstance(exceptions[0], DatabaseError) - - # If explicitly setting allow_thread_sharing to False - connections['default'].allow_thread_sharing = False + # Without touching thread sharing, which should be False by default. exceptions = [] do_thread() # Forbidden! self.assertIsInstance(exceptions[0], DatabaseError) - # If explicitly setting allow_thread_sharing to True - connections['default'].allow_thread_sharing = True - exceptions = [] - do_thread() - # All good - self.assertEqual(exceptions, []) + # After calling inc_thread_sharing() on the connection. + connections['default'].inc_thread_sharing() + try: + exceptions = [] + do_thread() + # All good + self.assertEqual(exceptions, []) + finally: + connections['default'].dec_thread_sharing() def test_closing_non_shared_connections(self): """ @@ -721,16 +725,33 @@ def runner2(other_thread_connection): except DatabaseError as e: exceptions.add(e) # Enable thread sharing - connections['default'].allow_thread_sharing = True - t2 = threading.Thread(target=runner2, args=[connections['default']]) - t2.start() - t2.join() + connections['default'].inc_thread_sharing() + try: + t2 = threading.Thread(target=runner2, args=[connections['default']]) + t2.start() + t2.join() + finally: + connections['default'].dec_thread_sharing() t1 = threading.Thread(target=runner1) t1.start() t1.join() # No exception was raised self.assertEqual(len(exceptions), 0) + def test_thread_sharing_count(self): + self.assertIs(connection.allow_thread_sharing, False) + connection.inc_thread_sharing() + self.assertIs(connection.allow_thread_sharing, True) + connection.inc_thread_sharing() + self.assertIs(connection.allow_thread_sharing, True) + connection.dec_thread_sharing() + self.assertIs(connection.allow_thread_sharing, True) + connection.dec_thread_sharing() + self.assertIs(connection.allow_thread_sharing, False) + msg = 'Cannot decrement the thread sharing count below zero.' + with self.assertRaisesMessage(RuntimeError, msg): + connection.dec_thread_sharing() + class MySQLPKZeroTests(TestCase): """ diff --git a/tests/check_framework/test_urls.py b/tests/check_framework/test_urls.py index 67de26c69026d..217b5e7badbd0 100644 --- a/tests/check_framework/test_urls.py +++ b/tests/check_framework/test_urls.py @@ -181,6 +181,29 @@ def test_bad_handlers(self): id='urls.E007', )) + @override_settings(ROOT_URLCONF='check_framework.urls.bad_error_handlers_invalid_path') + def test_bad_handlers_invalid_path(self): + result = check_url_config(None) + paths = [ + 'django.views.bad_handler', + 'django.invalid_module.bad_handler', + 'invalid_module.bad_handler', + 'django', + ] + hints = [ + "Could not import '{}'. View does not exist in module django.views.", + "Could not import '{}'. Parent module django.invalid_module does not exist.", + "No module named 'invalid_module'", + "Could not import '{}'. The path must be fully qualified.", + ] + for code, path, hint, error in zip([400, 403, 404, 500], paths, hints, result): + with self.subTest('handler{}'.format(code)): + self.assertEqual(error, Error( + "The custom handler{} view '{}' could not be imported.".format(code, path), + hint=hint.format(path), + id='urls.E008', + )) + @override_settings(ROOT_URLCONF='check_framework.urls.good_error_handlers') def test_good_handlers(self): result = check_url_config(None) diff --git a/tests/check_framework/urls/bad_error_handlers_invalid_path.py b/tests/check_framework/urls/bad_error_handlers_invalid_path.py new file mode 100644 index 0000000000000..77e0c639e06bc --- /dev/null +++ b/tests/check_framework/urls/bad_error_handlers_invalid_path.py @@ -0,0 +1,6 @@ +urlpatterns = [] + +handler400 = 'django.views.bad_handler' +handler403 = 'django.invalid_module.bad_handler' +handler404 = 'invalid_module.bad_handler' +handler500 = 'django' diff --git a/tests/choices/models.py b/tests/choices/models.py index b4ef8954ab415..37ef8daf60692 100644 --- a/tests/choices/models.py +++ b/tests/choices/models.py @@ -10,12 +10,13 @@ """ from django.db import models +from django.utils.translation import gettext_lazy as _ class Person(models.Model): GENDER_CHOICES = ( - ('M', 'Male'), - ('F', 'Female'), + ('M', _('Male')), + ('F', _('Female')), ) name = models.CharField(max_length=20) gender = models.CharField(max_length=1, choices=GENDER_CHOICES) diff --git a/tests/choices/tests.py b/tests/choices/tests.py index 329c936c7ff46..88b8bf7fe2d58 100644 --- a/tests/choices/tests.py +++ b/tests/choices/tests.py @@ -20,3 +20,6 @@ def test_display(self): a.gender = 'U' self.assertEqual(a.get_gender_display(), 'U') + + # _get_FIELD_display() coerces lazy strings. + self.assertIsInstance(a.get_gender_display(), str) diff --git a/tests/db_functions/math/test_abs.py b/tests/db_functions/math/test_abs.py index b87f6844bc447..a9e0175e84c93 100644 --- a/tests/db_functions/math/test_abs.py +++ b/tests/db_functions/math/test_abs.py @@ -49,5 +49,5 @@ def test_transform(self): with register_lookup(DecimalField, Abs): DecimalModel.objects.create(n1=Decimal('-1.5'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-0.5'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__abs__gt=1) - self.assertQuerysetEqual(objs, [Decimal('-1.5')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__abs__gt=1).get() + self.assertEqual(obj.n1, Decimal('-1.5')) diff --git a/tests/db_functions/math/test_acos.py b/tests/db_functions/math/test_acos.py index 04fdf2cf40852..b5cac88eea182 100644 --- a/tests/db_functions/math/test_acos.py +++ b/tests/db_functions/math/test_acos.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, ACos): DecimalModel.objects.create(n1=Decimal('0.5'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-0.9'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__acos__lt=2) - self.assertQuerysetEqual(objs, [Decimal('0.5')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__acos__lt=2).get() + self.assertEqual(obj.n1, Decimal('0.5')) diff --git a/tests/db_functions/math/test_asin.py b/tests/db_functions/math/test_asin.py index a9074e43057b1..ddbadb12a662e 100644 --- a/tests/db_functions/math/test_asin.py +++ b/tests/db_functions/math/test_asin.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, ASin): DecimalModel.objects.create(n1=Decimal('0.1'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__asin__gt=1) - self.assertQuerysetEqual(objs, [Decimal('1.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__asin__gt=1).get() + self.assertEqual(obj.n1, Decimal('1.0')) diff --git a/tests/db_functions/math/test_atan.py b/tests/db_functions/math/test_atan.py index fbeeded48c9ed..a14e7de581c2c 100644 --- a/tests/db_functions/math/test_atan.py +++ b/tests/db_functions/math/test_atan.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, ATan): DecimalModel.objects.create(n1=Decimal('3.12'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-5'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__atan__gt=0) - self.assertQuerysetEqual(objs, [Decimal('3.12')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__atan__gt=0).get() + self.assertEqual(obj.n1, Decimal('3.12')) diff --git a/tests/db_functions/math/test_ceil.py b/tests/db_functions/math/test_ceil.py index af4ee44e31473..86fe0841855f5 100644 --- a/tests/db_functions/math/test_ceil.py +++ b/tests/db_functions/math/test_ceil.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Ceil): DecimalModel.objects.create(n1=Decimal('3.12'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('1.25'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__ceil__gt=3) - self.assertQuerysetEqual(objs, [Decimal('3.12')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__ceil__gt=3).get() + self.assertEqual(obj.n1, Decimal('3.12')) diff --git a/tests/db_functions/math/test_cos.py b/tests/db_functions/math/test_cos.py index 99cf96620e748..73e59f04636c9 100644 --- a/tests/db_functions/math/test_cos.py +++ b/tests/db_functions/math/test_cos.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Cos): DecimalModel.objects.create(n1=Decimal('-8.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('3.14'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__cos__gt=-0.2) - self.assertQuerysetEqual(objs, [Decimal('-8.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__cos__gt=-0.2).get() + self.assertEqual(obj.n1, Decimal('-8.0')) diff --git a/tests/db_functions/math/test_cot.py b/tests/db_functions/math/test_cot.py index 5af0403221206..d876648598e8f 100644 --- a/tests/db_functions/math/test_cot.py +++ b/tests/db_functions/math/test_cot.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Cot): DecimalModel.objects.create(n1=Decimal('12.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__cot__gt=0) - self.assertQuerysetEqual(objs, [Decimal('1.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__cot__gt=0).get() + self.assertEqual(obj.n1, Decimal('1.0')) diff --git a/tests/db_functions/math/test_degrees.py b/tests/db_functions/math/test_degrees.py index a474d276a59e5..ab687b8da2012 100644 --- a/tests/db_functions/math/test_degrees.py +++ b/tests/db_functions/math/test_degrees.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Degrees): DecimalModel.objects.create(n1=Decimal('5.4'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-30'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__degrees__gt=0) - self.assertQuerysetEqual(objs, [Decimal('5.4')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__degrees__gt=0).get() + self.assertEqual(obj.n1, Decimal('5.4')) diff --git a/tests/db_functions/math/test_exp.py b/tests/db_functions/math/test_exp.py index fac2f6c08d4bb..a1e806ae45b87 100644 --- a/tests/db_functions/math/test_exp.py +++ b/tests/db_functions/math/test_exp.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Exp): DecimalModel.objects.create(n1=Decimal('12.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__exp__gt=10) - self.assertQuerysetEqual(objs, [Decimal('12.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__exp__gt=10).get() + self.assertEqual(obj.n1, Decimal('12.0')) diff --git a/tests/db_functions/math/test_floor.py b/tests/db_functions/math/test_floor.py index 0c193ef1afc08..1068e55476a67 100644 --- a/tests/db_functions/math/test_floor.py +++ b/tests/db_functions/math/test_floor.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Floor): DecimalModel.objects.create(n1=Decimal('5.4'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('3.4'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__floor__gt=4) - self.assertQuerysetEqual(objs, [Decimal('5.4')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__floor__gt=4).get() + self.assertEqual(obj.n1, Decimal('5.4')) diff --git a/tests/db_functions/math/test_ln.py b/tests/db_functions/math/test_ln.py index 3c690d56cc4bc..fd2ac87c069fe 100644 --- a/tests/db_functions/math/test_ln.py +++ b/tests/db_functions/math/test_ln.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Ln): DecimalModel.objects.create(n1=Decimal('12.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__ln__gt=0) - self.assertQuerysetEqual(objs, [Decimal('12.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__ln__gt=0).get() + self.assertEqual(obj.n1, Decimal('12.0')) diff --git a/tests/db_functions/math/test_radians.py b/tests/db_functions/math/test_radians.py index 3c257bb27825b..ac511556419e2 100644 --- a/tests/db_functions/math/test_radians.py +++ b/tests/db_functions/math/test_radians.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Radians): DecimalModel.objects.create(n1=Decimal('2.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__radians__gt=0) - self.assertQuerysetEqual(objs, [Decimal('2.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__radians__gt=0).get() + self.assertEqual(obj.n1, Decimal('2.0')) diff --git a/tests/db_functions/math/test_round.py b/tests/db_functions/math/test_round.py index 4c2634c3c268f..a3770f1f52507 100644 --- a/tests/db_functions/math/test_round.py +++ b/tests/db_functions/math/test_round.py @@ -49,5 +49,5 @@ def test_transform(self): with register_lookup(DecimalField, Round): DecimalModel.objects.create(n1=Decimal('2.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('-1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__round__gt=0) - self.assertQuerysetEqual(objs, [Decimal('2.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__round__gt=0).get() + self.assertEqual(obj.n1, Decimal('2.0')) diff --git a/tests/db_functions/math/test_sin.py b/tests/db_functions/math/test_sin.py index f2e2edd4da8b1..be7d1515bdf42 100644 --- a/tests/db_functions/math/test_sin.py +++ b/tests/db_functions/math/test_sin.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Sin): DecimalModel.objects.create(n1=Decimal('5.4'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('0.1'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__sin__lt=0) - self.assertQuerysetEqual(objs, [Decimal('5.4')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__sin__lt=0).get() + self.assertEqual(obj.n1, Decimal('5.4')) diff --git a/tests/db_functions/math/test_sqrt.py b/tests/db_functions/math/test_sqrt.py index 0e6238a1417bb..baafaea723087 100644 --- a/tests/db_functions/math/test_sqrt.py +++ b/tests/db_functions/math/test_sqrt.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Sqrt): DecimalModel.objects.create(n1=Decimal('6.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('1.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__sqrt__gt=2) - self.assertQuerysetEqual(objs, [Decimal('6.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__sqrt__gt=2).get() + self.assertEqual(obj.n1, Decimal('6.0')) diff --git a/tests/db_functions/math/test_tan.py b/tests/db_functions/math/test_tan.py index 6db760725b5a0..51f7ad994c27c 100644 --- a/tests/db_functions/math/test_tan.py +++ b/tests/db_functions/math/test_tan.py @@ -50,5 +50,5 @@ def test_transform(self): with register_lookup(DecimalField, Tan): DecimalModel.objects.create(n1=Decimal('0.0'), n2=Decimal('0')) DecimalModel.objects.create(n1=Decimal('12.0'), n2=Decimal('0')) - objs = DecimalModel.objects.filter(n1__tan__lt=0) - self.assertQuerysetEqual(objs, [Decimal('12.0')], lambda a: a.n1) + obj = DecimalModel.objects.filter(n1__tan__lt=0).get() + self.assertEqual(obj.n1, Decimal('12.0')) diff --git a/tests/dbshell/test_postgresql_psycopg2.py b/tests/dbshell/test_postgresql.py similarity index 100% rename from tests/dbshell/test_postgresql_psycopg2.py rename to tests/dbshell/test_postgresql.py diff --git a/tests/delete/tests.py b/tests/delete/tests.py index 55eeb226eaf99..ed47d0667dd88 100644 --- a/tests/delete/tests.py +++ b/tests/delete/tests.py @@ -1,6 +1,7 @@ from math import ceil from django.db import IntegrityError, connection, models +from django.db.models.deletion import Collector from django.db.models.sql.constants import GET_ITERATOR_CHUNK_SIZE from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature @@ -471,6 +472,14 @@ def test_fast_delete_qs(self): self.assertEqual(User.objects.count(), 1) self.assertTrue(User.objects.filter(pk=u2.pk).exists()) + def test_fast_delete_instance_set_pk_none(self): + u = User.objects.create() + # User can be fast-deleted. + collector = Collector(using='default') + self.assertTrue(collector.can_fast_delete(u)) + u.delete() + self.assertIsNone(u.pk) + def test_fast_delete_joined_qs(self): a = Avatar.objects.create(desc='a') User.objects.create(avatar=a) diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index e66dcd629725f..f0819992d26cb 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -21,7 +21,7 @@ from django.db.models.sql import constants from django.db.models.sql.datastructures import Join from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature -from django.test.utils import Approximate +from django.test.utils import Approximate, isolate_apps from .models import ( UUID, UUIDPK, Company, Employee, Experiment, Number, RemoteEmployee, @@ -839,6 +839,7 @@ def test_insensitive_patterns_escape(self): ) +@isolate_apps('expressions') class SimpleExpressionTests(SimpleTestCase): def test_equal(self): @@ -852,6 +853,15 @@ def test_equal(self): Expression(models.CharField()) ) + class TestModel(models.Model): + field = models.IntegerField() + other_field = models.IntegerField() + + self.assertNotEqual( + Expression(TestModel._meta.get_field('field')), + Expression(TestModel._meta.get_field('other_field')), + ) + def test_hash(self): self.assertEqual(hash(Expression()), hash(Expression())) self.assertEqual( @@ -863,6 +873,15 @@ def test_hash(self): hash(Expression(models.CharField())), ) + class TestModel(models.Model): + field = models.IntegerField() + other_field = models.IntegerField() + + self.assertNotEqual( + hash(Expression(TestModel._meta.get_field('field'))), + hash(Expression(TestModel._meta.get_field('other_field'))), + ) + class ExpressionsNumericTests(TestCase): diff --git a/tests/file_uploads/tests.py b/tests/file_uploads/tests.py index fb333dcf13942..ea4976dc0a837 100644 --- a/tests/file_uploads/tests.py +++ b/tests/file_uploads/tests.py @@ -386,8 +386,8 @@ def test_broken_custom_upload_handler(self): file.write(b'a' * (2 ** 21)) file.seek(0) - # AttributeError: You cannot alter upload handlers after the upload has been processed. - with self.assertRaises(AttributeError): + msg = 'You cannot alter upload handlers after the upload has been processed.' + with self.assertRaisesMessage(AttributeError, msg): self.client.post('/quota/broken/', {'f': file}) def test_fileupload_getlist(self): diff --git a/tests/forms_tests/tests/test_media.py b/tests/forms_tests/tests/test_media.py index a586da90c5ee6..192d78f331d52 100644 --- a/tests/forms_tests/tests/test_media.py +++ b/tests/forms_tests/tests/test_media.py @@ -25,8 +25,8 @@ def test_construction(self): ) self.assertEqual( repr(m), - "Media(css={'all': ('path/to/css1', '/path/to/css2')}, " - "js=('/path/to/js1', 'http://media.other.com/path/to/js2', 'https://secure.other.com/path/to/js3'))" + "Media(css={'all': ['path/to/css1', '/path/to/css2']}, " + "js=['/path/to/js1', 'http://media.other.com/path/to/js2', 'https://secure.other.com/path/to/js3'])" ) class Foo: @@ -125,8 +125,8 @@ class Media: - -""" + +""" ) # media addition hasn't affected the original objects @@ -151,6 +151,17 @@ class Media: self.assertEqual(str(w4.media), """ """) + def test_media_deduplication(self): + # A deduplication test applied directly to a Media object, to confirm + # that the deduplication doesn't only happen at the point of merging + # two or more media objects. + media = Media( + css={'all': ('/path/to/css1', '/path/to/css1')}, + js=('/path/to/js1', '/path/to/js1'), + ) + self.assertEqual(str(media), """ +""") + def test_media_property(self): ############################################################### # Property-based media definitions @@ -197,12 +208,12 @@ def _media(self): self.assertEqual( str(w6.media), """ - + + - -""" +""" ) def test_media_inheritance(self): @@ -247,8 +258,8 @@ class Media: - -""" + +""" ) def test_media_inheritance_from_property(self): @@ -322,8 +333,8 @@ class Media: - -""" + +""" ) def test_media_inheritance_single_type(self): @@ -420,8 +431,8 @@ def __init__(self, attrs=None): - -""" + +""" ) def test_form_media(self): @@ -462,8 +473,8 @@ class MyForm(Form): - -""" + +""" ) # Form media can be combined to produce a single media definition. @@ -477,8 +488,8 @@ class AnotherForm(Form): - -""" + +""" ) # Forms can also define media, following the same rules as widgets. @@ -495,28 +506,28 @@ class Media: self.assertEqual( str(f3.media), """ + - + - -""" +""" ) # Media works in templates self.assertEqual( Template("{{ form.media.js }}{{ form.media.css }}").render(Context({'form': f3})), """ + - -""" +""" """ + - -""" +""" ) def test_html_safe(self): @@ -526,18 +537,54 @@ def test_html_safe(self): def test_merge(self): test_values = ( - (([1, 2], [3, 4]), [1, 2, 3, 4]), + (([1, 2], [3, 4]), [1, 3, 2, 4]), (([1, 2], [2, 3]), [1, 2, 3]), (([2, 3], [1, 2]), [1, 2, 3]), (([1, 3], [2, 3]), [1, 2, 3]), (([1, 2], [1, 3]), [1, 2, 3]), (([1, 2], [3, 2]), [1, 3, 2]), + (([1, 2], [1, 2]), [1, 2]), + ([[1, 2], [1, 3], [2, 3], [5, 7], [5, 6], [6, 7, 9], [8, 9]], [1, 5, 8, 2, 6, 3, 7, 9]), + ((), []), + (([1, 2],), [1, 2]), ) - for (list1, list2), expected in test_values: - with self.subTest(list1=list1, list2=list2): - self.assertEqual(Media.merge(list1, list2), expected) + for lists, expected in test_values: + with self.subTest(lists=lists): + self.assertEqual(Media.merge(*lists), expected) def test_merge_warning(self): - msg = 'Detected duplicate Media files in an opposite order:\n1\n2' + msg = 'Detected duplicate Media files in an opposite order: [1, 2], [2, 1]' with self.assertWarnsMessage(RuntimeWarning, msg): self.assertEqual(Media.merge([1, 2], [2, 1]), [1, 2]) + + def test_merge_js_three_way(self): + """ + The relative order of scripts is preserved in a three-way merge. + """ + widget1 = Media(js=['color-picker.js']) + widget2 = Media(js=['text-editor.js']) + widget3 = Media(js=['text-editor.js', 'text-editor-extras.js', 'color-picker.js']) + merged = widget1 + widget2 + widget3 + self.assertEqual(merged._js, ['text-editor.js', 'text-editor-extras.js', 'color-picker.js']) + + def test_merge_js_three_way2(self): + # The merge prefers to place 'c' before 'b' and 'g' before 'h' to + # preserve the original order. The preference 'c'->'b' is overridden by + # widget3's media, but 'g'->'h' survives in the final ordering. + widget1 = Media(js=['a', 'c', 'f', 'g', 'k']) + widget2 = Media(js=['a', 'b', 'f', 'h', 'k']) + widget3 = Media(js=['b', 'c', 'f', 'k']) + merged = widget1 + widget2 + widget3 + self.assertEqual(merged._js, ['a', 'b', 'c', 'f', 'g', 'h', 'k']) + + def test_merge_css_three_way(self): + widget1 = Media(css={'screen': ['c.css'], 'all': ['d.css', 'e.css']}) + widget2 = Media(css={'screen': ['a.css']}) + widget3 = Media(css={'screen': ['a.css', 'b.css', 'c.css'], 'all': ['e.css']}) + merged = widget1 + widget2 + # c.css comes before a.css because widget1 + widget2 establishes this + # order. + self.assertEqual(merged._css, {'screen': ['c.css', 'a.css'], 'all': ['d.css', 'e.css']}) + merged = merged + widget3 + # widget3 contains an explicit ordering of c.css and a.css. + self.assertEqual(merged._css, {'screen': ['a.css', 'b.css', 'c.css'], 'all': ['d.css', 'e.css']}) diff --git a/tests/gis_tests/test_geoip2.py b/tests/gis_tests/test_geoip2.py index 9813f384ed31b..54f8aa00b0088 100644 --- a/tests/gis_tests/test_geoip2.py +++ b/tests/gis_tests/test_geoip2.py @@ -19,7 +19,7 @@ "GeoIP is required along with the GEOIP_PATH setting." ) class GeoIPTest(SimpleTestCase): - addr = '128.249.1.1' + addr = '75.41.39.1' fqdn = 'tmc.edu' def test01_init(self): @@ -99,7 +99,7 @@ def test03_country(self, gethostbyname): @mock.patch('socket.gethostbyname') def test04_city(self, gethostbyname): "GeoIP city querying methods." - gethostbyname.return_value = '128.249.1.1' + gethostbyname.return_value = '75.41.39.1' g = GeoIP2(country='') for query in (self.fqdn, self.addr): @@ -124,7 +124,7 @@ def test04_city(self, gethostbyname): self.assertEqual('NA', d['continent_code']) self.assertEqual('North America', d['continent_name']) self.assertEqual('US', d['country_code']) - self.assertEqual('Houston', d['city']) + self.assertEqual('Dallas', d['city']) self.assertEqual('TX', d['region']) self.assertEqual('America/Chicago', d['time_zone']) geom = g.geos(query) diff --git a/tests/introspection/models.py b/tests/introspection/models.py index 32acc323bd58d..fa663de2fd5f5 100644 --- a/tests/introspection/models.py +++ b/tests/introspection/models.py @@ -58,3 +58,21 @@ class ArticleReporter(models.Model): class Meta: managed = False + + +class Comment(models.Model): + ref = models.UUIDField(unique=True) + article = models.ForeignKey(Article, models.CASCADE, db_index=True) + email = models.EmailField() + pub_date = models.DateTimeField() + up_votes = models.PositiveIntegerField() + body = models.TextField() + + class Meta: + constraints = [ + models.CheckConstraint(name='up_votes_gte_0_check', check=models.Q(up_votes__gte=0)), + models.UniqueConstraint(fields=['article', 'email', 'pub_date'], name='article_email_pub_date_uniq'), + ] + indexes = [ + models.Index(fields=['email', 'pub_date'], name='email_pub_date_idx'), + ] diff --git a/tests/introspection/tests.py b/tests/introspection/tests.py index 4eb868e9074c0..b72d0f5165dc1 100644 --- a/tests/introspection/tests.py +++ b/tests/introspection/tests.py @@ -5,7 +5,7 @@ from django.db.utils import DatabaseError from django.test import TransactionTestCase, skipUnlessDBFeature -from .models import Article, ArticleReporter, City, District, Reporter +from .models import Article, ArticleReporter, City, Comment, District, Reporter class IntrospectionTests(TransactionTestCase): @@ -209,6 +209,63 @@ def test_get_constraints_indexes_orders(self): indexes_verified += 1 self.assertEqual(indexes_verified, 4) + def test_get_constraints(self): + def assertDetails(details, cols, primary_key=False, unique=False, index=False, check=False, foreign_key=None): + # Different backends have different values for same constraints: + # PRIMARY KEY UNIQUE CONSTRAINT UNIQUE INDEX + # MySQL pk=1 uniq=1 idx=1 pk=0 uniq=1 idx=1 pk=0 uniq=1 idx=1 + # PostgreSQL pk=1 uniq=1 idx=0 pk=0 uniq=1 idx=0 pk=0 uniq=1 idx=1 + # SQLite pk=1 uniq=0 idx=0 pk=0 uniq=1 idx=0 pk=0 uniq=1 idx=1 + if details['primary_key']: + details['unique'] = True + if details['unique']: + details['index'] = False + self.assertEqual(details['columns'], cols) + self.assertEqual(details['primary_key'], primary_key) + self.assertEqual(details['unique'], unique) + self.assertEqual(details['index'], index) + self.assertEqual(details['check'], check) + self.assertEqual(details['foreign_key'], foreign_key) + + with connection.cursor() as cursor: + constraints = connection.introspection.get_constraints(cursor, Comment._meta.db_table) + # Test custom constraints + custom_constraints = { + 'article_email_pub_date_uniq', + 'email_pub_date_idx', + } + if connection.features.supports_column_check_constraints: + custom_constraints.add('up_votes_gte_0_check') + assertDetails(constraints['up_votes_gte_0_check'], ['up_votes'], check=True) + assertDetails(constraints['article_email_pub_date_uniq'], ['article_id', 'email', 'pub_date'], unique=True) + assertDetails(constraints['email_pub_date_idx'], ['email', 'pub_date'], index=True) + # Test field constraints + field_constraints = set() + for name, details in constraints.items(): + if name in custom_constraints: + continue + elif details['columns'] == ['up_votes'] and details['check']: + assertDetails(details, ['up_votes'], check=True) + field_constraints.add(name) + elif details['columns'] == ['ref'] and details['unique']: + assertDetails(details, ['ref'], unique=True) + field_constraints.add(name) + elif details['columns'] == ['article_id'] and details['index']: + assertDetails(details, ['article_id'], index=True) + field_constraints.add(name) + elif details['columns'] == ['id'] and details['primary_key']: + assertDetails(details, ['id'], primary_key=True, unique=True) + field_constraints.add(name) + elif details['columns'] == ['article_id'] and details['foreign_key']: + assertDetails(details, ['article_id'], foreign_key=('introspection_article', 'id')) + field_constraints.add(name) + elif details['check']: + # Some databases (e.g. Oracle) include additional check + # constraints. + field_constraints.add(name) + # All constraints are accounted for. + self.assertEqual(constraints.keys() ^ (custom_constraints | field_constraints), set()) + def datatype(dbtype, description): """Helper to convert a data type into a string.""" diff --git a/tests/many_to_many/models.py b/tests/many_to_many/models.py index a2590b8b369d3..7b46d2484e863 100644 --- a/tests/many_to_many/models.py +++ b/tests/many_to_many/models.py @@ -27,6 +27,11 @@ def __str__(self): return self.name +class NoDeletedArticleManager(models.Manager): + def get_queryset(self): + return super().get_queryset().exclude(headline='deleted') + + class Article(models.Model): headline = models.CharField(max_length=100) # Assign a string as name to make sure the intermediary model is @@ -34,6 +39,8 @@ class Article(models.Model): publications = models.ManyToManyField(Publication, name='publications') tags = models.ManyToManyField(Tag, related_name='tags') + objects = NoDeletedArticleManager() + class Meta: ordering = ('headline',) @@ -55,13 +62,3 @@ class InheritedArticleA(AbstractArticle): class InheritedArticleB(AbstractArticle): pass - - -class NullableTargetArticle(models.Model): - headline = models.CharField(max_length=100) - publications = models.ManyToManyField(Publication, through='NullablePublicationThrough') - - -class NullablePublicationThrough(models.Model): - article = models.ForeignKey(NullableTargetArticle, models.CASCADE) - publication = models.ForeignKey(Publication, models.CASCADE, null=True) diff --git a/tests/many_to_many/tests.py b/tests/many_to_many/tests.py index 933eb23a7a67c..0b99cfda4e4d1 100644 --- a/tests/many_to_many/tests.py +++ b/tests/many_to_many/tests.py @@ -1,13 +1,7 @@ -from unittest import mock +from django.db import transaction +from django.test import TestCase -from django.db import connection, transaction -from django.test import TestCase, skipUnlessDBFeature -from django.test.utils import CaptureQueriesContext - -from .models import ( - Article, InheritedArticleA, InheritedArticleB, NullablePublicationThrough, - NullableTargetArticle, Publication, -) +from .models import Article, InheritedArticleA, InheritedArticleB, Publication class ManyToManyTests(TestCase): @@ -63,7 +57,8 @@ def test_add(self): ) # Adding an object of the wrong type raises TypeError - with self.assertRaisesMessage(TypeError, "'Publication' instance expected, got ']) - -class ManyToManyQueryTests(TestCase): - @classmethod - def setUpTestData(cls): - cls.article = Article.objects.create(headline='Django lets you build Web apps easily') - cls.nullable_target_article = NullableTargetArticle.objects.create(headline='The python is good') - NullablePublicationThrough.objects.create(article=cls.nullable_target_article, publication=None) - - @skipUnlessDBFeature('supports_foreign_keys') - def test_count_join_optimization(self): - with CaptureQueriesContext(connection) as query: - self.article.publications.count() - self.assertNotIn('JOIN', query[0]['sql']) - self.assertEqual(self.nullable_target_article.publications.count(), 0) - - def test_count_join_optimization_disabled(self): - with mock.patch.object(connection.features, 'supports_foreign_keys', False), \ - CaptureQueriesContext(connection) as query: - self.article.publications.count() - self.assertIn('JOIN', query[0]['sql']) - - @skipUnlessDBFeature('supports_foreign_keys') - def test_exists_join_optimization(self): - with CaptureQueriesContext(connection) as query: - self.article.publications.exists() - self.assertNotIn('JOIN', query[0]['sql']) - self.assertIs(self.nullable_target_article.publications.exists(), False) - - def test_exists_join_optimization_disabled(self): - with mock.patch.object(connection.features, 'supports_foreign_keys', False), \ - CaptureQueriesContext(connection) as query: - self.article.publications.exists() - self.assertIn('JOIN', query[0]['sql']) + def test_custom_default_manager_exists_count(self): + a5 = Article.objects.create(headline='deleted') + a5.publications.add(self.p2) + self.assertEqual(self.p2.article_set.count(), self.p2.article_set.all().count()) + self.assertEqual(self.p3.article_set.exists(), self.p3.article_set.all().exists()) diff --git a/tests/max_lengths/tests.py b/tests/max_lengths/tests.py index fb81a7f473023..dfea552fade86 100644 --- a/tests/max_lengths/tests.py +++ b/tests/max_lengths/tests.py @@ -1,5 +1,7 @@ import unittest +from django.test import TestCase + from .models import PersonWithCustomMaxLengths, PersonWithDefaultMaxLengths @@ -21,7 +23,7 @@ def test_custom_max_lengths(self): self.verify_max_length(PersonWithCustomMaxLengths, 'avatar', 250) -class MaxLengthORMTests(unittest.TestCase): +class MaxLengthORMTests(TestCase): def test_custom_max_lengths(self): args = { diff --git a/tests/middleware/test_security.py b/tests/middleware/test_security.py index 97ea0c3f6ee46..86153f19eeac6 100644 --- a/tests/middleware/test_security.py +++ b/tests/middleware/test_security.py @@ -43,7 +43,7 @@ def process_request(self, method, *args, secure=False, **kwargs): @override_settings(SECURE_HSTS_SECONDS=3600) def test_sts_on(self): """ - With HSTS_SECONDS=3600, the middleware adds + With SECURE_HSTS_SECONDS=3600, the middleware adds "Strict-Transport-Security: max-age=3600" to the response. """ self.assertEqual( @@ -62,7 +62,7 @@ def test_sts_already_present(self): headers={"Strict-Transport-Security": "max-age=7200"}) self.assertEqual(response["Strict-Transport-Security"], "max-age=7200") - @override_settings(HSTS_SECONDS=3600) + @override_settings(SECURE_HSTS_SECONDS=3600) def test_sts_only_if_secure(self): """ The "Strict-Transport-Security" header is not added to responses going @@ -70,30 +70,28 @@ def test_sts_only_if_secure(self): """ self.assertNotIn("Strict-Transport-Security", self.process_response(secure=False)) - @override_settings(HSTS_SECONDS=0) + @override_settings(SECURE_HSTS_SECONDS=0) def test_sts_off(self): """ - With HSTS_SECONDS of 0, the middleware does not add a + With SECURE_HSTS_SECONDS=0, the middleware does not add a "Strict-Transport-Security" header to the response. """ self.assertNotIn("Strict-Transport-Security", self.process_response(secure=True)) - @override_settings( - SECURE_HSTS_SECONDS=600, SECURE_HSTS_INCLUDE_SUBDOMAINS=True) + @override_settings(SECURE_HSTS_SECONDS=600, SECURE_HSTS_INCLUDE_SUBDOMAINS=True) def test_sts_include_subdomains(self): """ - With HSTS_SECONDS non-zero and HSTS_INCLUDE_SUBDOMAINS + With SECURE_HSTS_SECONDS non-zero and SECURE_HSTS_INCLUDE_SUBDOMAINS True, the middleware adds a "Strict-Transport-Security" header with the "includeSubDomains" directive to the response. """ response = self.process_response(secure=True) self.assertEqual(response["Strict-Transport-Security"], "max-age=600; includeSubDomains") - @override_settings( - SECURE_HSTS_SECONDS=600, SECURE_HSTS_INCLUDE_SUBDOMAINS=False) + @override_settings(SECURE_HSTS_SECONDS=600, SECURE_HSTS_INCLUDE_SUBDOMAINS=False) def test_sts_no_include_subdomains(self): """ - With HSTS_SECONDS non-zero and HSTS_INCLUDE_SUBDOMAINS + With SECURE_HSTS_SECONDS non-zero and SECURE_HSTS_INCLUDE_SUBDOMAINS False, the middleware adds a "Strict-Transport-Security" header without the "includeSubDomains" directive to the response. """ @@ -103,9 +101,9 @@ def test_sts_no_include_subdomains(self): @override_settings(SECURE_HSTS_SECONDS=10886400, SECURE_HSTS_PRELOAD=True) def test_sts_preload(self): """ - With HSTS_SECONDS non-zero and SECURE_HSTS_PRELOAD True, the middleware - adds a "Strict-Transport-Security" header with the "preload" directive - to the response. + With SECURE_HSTS_SECONDS non-zero and SECURE_HSTS_PRELOAD True, the + middleware adds a "Strict-Transport-Security" header with the "preload" + directive to the response. """ response = self.process_response(secure=True) self.assertEqual(response["Strict-Transport-Security"], "max-age=10886400; preload") @@ -113,7 +111,7 @@ def test_sts_preload(self): @override_settings(SECURE_HSTS_SECONDS=10886400, SECURE_HSTS_INCLUDE_SUBDOMAINS=True, SECURE_HSTS_PRELOAD=True) def test_sts_subdomains_and_preload(self): """ - With HSTS_SECONDS non-zero, SECURE_HSTS_INCLUDE_SUBDOMAINS and + With SECURE_HSTS_SECONDS non-zero, SECURE_HSTS_INCLUDE_SUBDOMAINS and SECURE_HSTS_PRELOAD True, the middleware adds a "Strict-Transport-Security" header containing both the "includeSubDomains" and "preload" directives to the response. @@ -124,7 +122,7 @@ def test_sts_subdomains_and_preload(self): @override_settings(SECURE_HSTS_SECONDS=10886400, SECURE_HSTS_PRELOAD=False) def test_sts_no_preload(self): """ - With HSTS_SECONDS non-zero and SECURE_HSTS_PRELOAD + With SECURE_HSTS_SECONDS non-zero and SECURE_HSTS_PRELOAD False, the middleware adds a "Strict-Transport-Security" header without the "preload" directive to the response. """ @@ -134,7 +132,7 @@ def test_sts_no_preload(self): @override_settings(SECURE_CONTENT_TYPE_NOSNIFF=True) def test_content_type_on(self): """ - With CONTENT_TYPE_NOSNIFF set to True, the middleware adds + With SECURE_CONTENT_TYPE_NOSNIFF set to True, the middleware adds "X-Content-Type-Options: nosniff" header to the response. """ self.assertEqual(self.process_response()["X-Content-Type-Options"], "nosniff") @@ -151,7 +149,7 @@ def test_content_type_already_present(self): @override_settings(SECURE_CONTENT_TYPE_NOSNIFF=False) def test_content_type_off(self): """ - With CONTENT_TYPE_NOSNIFF False, the middleware does not add an + With SECURE_CONTENT_TYPE_NOSNIFF False, the middleware does not add an "X-Content-Type-Options" header to the response. """ self.assertNotIn("X-Content-Type-Options", self.process_response()) @@ -159,12 +157,10 @@ def test_content_type_off(self): @override_settings(SECURE_BROWSER_XSS_FILTER=True) def test_xss_filter_on(self): """ - With BROWSER_XSS_FILTER set to True, the middleware adds + With SECURE_BROWSER_XSS_FILTER set to True, the middleware adds "s-xss-protection: 1; mode=block" header to the response. """ - self.assertEqual( - self.process_response()["X-XSS-Protection"], - "1; mode=block") + self.assertEqual(self.process_response()["X-XSS-Protection"], "1; mode=block") @override_settings(SECURE_BROWSER_XSS_FILTER=True) def test_xss_filter_already_present(self): @@ -175,24 +171,23 @@ def test_xss_filter_already_present(self): response = self.process_response(secure=True, headers={"X-XSS-Protection": "foo"}) self.assertEqual(response["X-XSS-Protection"], "foo") - @override_settings(BROWSER_XSS_FILTER=False) + @override_settings(SECURE_BROWSER_XSS_FILTER=False) def test_xss_filter_off(self): """ - With BROWSER_XSS_FILTER set to False, the middleware does not add an - "X-XSS-Protection" header to the response. + With SECURE_BROWSER_XSS_FILTER set to False, the middleware does not + add an "X-XSS-Protection" header to the response. """ self.assertNotIn("X-XSS-Protection", self.process_response()) @override_settings(SECURE_SSL_REDIRECT=True) def test_ssl_redirect_on(self): """ - With SSL_REDIRECT True, the middleware redirects any non-secure + With SECURE_SSL_REDIRECT True, the middleware redirects any non-secure requests to the https:// version of the same URL. """ ret = self.process_request("get", "/some/url?query=string") self.assertEqual(ret.status_code, 301) - self.assertEqual( - ret["Location"], "https://testserver/some/url?query=string") + self.assertEqual(ret["Location"], "https://testserver/some/url?query=string") @override_settings(SECURE_SSL_REDIRECT=True) def test_no_redirect_ssl(self): @@ -202,8 +197,7 @@ def test_no_redirect_ssl(self): ret = self.process_request("get", "/some/url", secure=True) self.assertIsNone(ret) - @override_settings( - SECURE_SSL_REDIRECT=True, SECURE_REDIRECT_EXEMPT=["^insecure/"]) + @override_settings(SECURE_SSL_REDIRECT=True, SECURE_REDIRECT_EXEMPT=["^insecure/"]) def test_redirect_exempt(self): """ The middleware does not redirect requests with URL path matching an @@ -212,11 +206,10 @@ def test_redirect_exempt(self): ret = self.process_request("get", "/insecure/page") self.assertIsNone(ret) - @override_settings( - SECURE_SSL_REDIRECT=True, SECURE_SSL_HOST="secure.example.com") + @override_settings(SECURE_SSL_REDIRECT=True, SECURE_SSL_HOST="secure.example.com") def test_redirect_ssl_host(self): """ - The middleware redirects to SSL_HOST if given. + The middleware redirects to SECURE_SSL_HOST if given. """ ret = self.process_request("get", "/some/url") self.assertEqual(ret.status_code, 301) @@ -225,7 +218,7 @@ def test_redirect_ssl_host(self): @override_settings(SECURE_SSL_REDIRECT=False) def test_ssl_redirect_off(self): """ - With SSL_REDIRECT False, the middleware does no redirect. + With SECURE_SSL_REDIRECT False, the middleware does not redirect. """ ret = self.process_request("get", "/some/url") self.assertIsNone(ret) diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py index c23144094979b..36e8f2f5ea40d 100644 --- a/tests/migrations/test_commands.py +++ b/tests/migrations/test_commands.py @@ -41,7 +41,7 @@ def test_migrate(self): call_command('migrate', 'migrations', '0001', verbosity=1, stdout=stdout, no_color=True) stdout = stdout.getvalue() self.assertIn('Target specific migration: 0001_initial, from migrations', stdout) - self.assertIn('Applying migrations.0001_initial… OK', stdout) + self.assertIn('Applying migrations.0001_initial... OK', stdout) # The correct tables exist self.assertTableExists("migrations_author") self.assertTableExists("migrations_tribble") @@ -57,7 +57,7 @@ def test_migrate(self): call_command('migrate', 'migrations', 'zero', verbosity=1, stdout=stdout, no_color=True) stdout = stdout.getvalue() self.assertIn('Unapply all migrations: migrations', stdout) - self.assertIn('Unapplying migrations.0002_second… OK', stdout) + self.assertIn('Unapplying migrations.0002_second... OK', stdout) # Tables are gone self.assertTableNotExists("migrations_author") self.assertTableNotExists("migrations_tribble") @@ -157,7 +157,7 @@ def test_migrate_fake_initial(self): call_command("migrate", "migrations", "0001", fake_initial=True, stdout=out, verbosity=1) call_command("migrate", "migrations", "0001", fake_initial=True, verbosity=0, database="other") self.assertIn( - "migrations.0001_initial… faked", + "migrations.0001_initial... faked", out.getvalue().lower() ) # Run migrations all the way @@ -208,8 +208,8 @@ def test_migrate_fake_split_initial(self): with mock.patch('django.core.management.color.supports_color', lambda *args: False): call_command("migrate", "migrations", "0002", fake_initial=True, stdout=out, verbosity=1) value = out.getvalue().lower() - self.assertIn("migrations.0001_initial… faked", value) - self.assertIn("migrations.0002_second… faked", value) + self.assertIn("migrations.0001_initial... faked", value) + self.assertIn("migrations.0002_second... faked", value) # Fake an apply call_command("migrate", "migrations", fake=True, verbosity=0) # Unmigrate everything @@ -271,8 +271,8 @@ def test_showmigrations_plan(self): call_command("showmigrations", format='plan', stdout=out, verbosity=2) self.assertEqual( "[ ] migrations.0001_initial\n" - "[ ] migrations.0003_third … (migrations.0001_initial)\n" - "[ ] migrations.0002_second … (migrations.0001_initial, migrations.0003_third)\n", + "[ ] migrations.0003_third ... (migrations.0001_initial)\n" + "[ ] migrations.0002_second ... (migrations.0001_initial, migrations.0003_third)\n", out.getvalue().lower() ) call_command("migrate", "migrations", "0003", verbosity=0) @@ -290,8 +290,8 @@ def test_showmigrations_plan(self): call_command("showmigrations", format='plan', stdout=out, verbosity=2) self.assertEqual( "[x] migrations.0001_initial\n" - "[x] migrations.0003_third … (migrations.0001_initial)\n" - "[ ] migrations.0002_second … (migrations.0001_initial, migrations.0003_third)\n", + "[x] migrations.0003_third ... (migrations.0001_initial)\n" + "[ ] migrations.0002_second ... (migrations.0001_initial, migrations.0003_third)\n", out.getvalue().lower() ) @@ -410,10 +410,10 @@ def test_showmigrations_plan_squashed(self): call_command("showmigrations", format='plan', stdout=out, verbosity=2) self.assertEqual( "[ ] migrations.1_auto\n" - "[ ] migrations.2_auto … (migrations.1_auto)\n" - "[ ] migrations.3_squashed_5 … (migrations.2_auto)\n" - "[ ] migrations.6_auto … (migrations.3_squashed_5)\n" - "[ ] migrations.7_auto … (migrations.6_auto)\n", + "[ ] migrations.2_auto ... (migrations.1_auto)\n" + "[ ] migrations.3_squashed_5 ... (migrations.2_auto)\n" + "[ ] migrations.6_auto ... (migrations.3_squashed_5)\n" + "[ ] migrations.7_auto ... (migrations.6_auto)\n", out.getvalue().lower() ) @@ -434,10 +434,10 @@ def test_showmigrations_plan_squashed(self): call_command("showmigrations", format='plan', stdout=out, verbosity=2) self.assertEqual( "[x] migrations.1_auto\n" - "[x] migrations.2_auto … (migrations.1_auto)\n" - "[x] migrations.3_squashed_5 … (migrations.2_auto)\n" - "[ ] migrations.6_auto … (migrations.3_squashed_5)\n" - "[ ] migrations.7_auto … (migrations.6_auto)\n", + "[x] migrations.2_auto ... (migrations.1_auto)\n" + "[x] migrations.3_squashed_5 ... (migrations.2_auto)\n" + "[ ] migrations.6_auto ... (migrations.3_squashed_5)\n" + "[ ] migrations.7_auto ... (migrations.6_auto)\n", out.getvalue().lower() ) @@ -659,7 +659,7 @@ def test_migrate_syncdb_deferred_sql_executed_with_schemaeditor(self): self.assertGreater(len(execute.mock_calls), 2) stdout = stdout.getvalue() self.assertIn('Synchronize unmigrated apps: unmigrated_app_syncdb', stdout) - self.assertIn('Creating tables…', stdout) + self.assertIn('Creating tables...', stdout) table_name = truncate_name('unmigrated_app_syncdb_classroom', connection.ops.max_name_length()) self.assertIn('Creating table %s' % table_name, stdout) @@ -1535,7 +1535,7 @@ def test_squashed_name_without_start_migration_name(self): class AppLabelErrorTests(TestCase): """ This class inherits TestCase because MigrationTestBase uses - `availabe_apps = ['migrations']` which means that it's the only installed + `available_apps = ['migrations']` which means that it's the only installed app. 'django.contrib.auth' must be in INSTALLED_APPS for some of these tests. """ diff --git a/tests/migrations/test_multidb.py b/tests/migrations/test_multidb.py index b2c4320ad335a..e0c5a4d3c59be 100644 --- a/tests/migrations/test_multidb.py +++ b/tests/migrations/test_multidb.py @@ -122,13 +122,16 @@ def _test_run_sql(self, app_label, should_run, hints=None): self.assertEqual(Pony.objects.count(), 0) @override_settings(DATABASE_ROUTERS=[MigrateNothingRouter()]) - def test_run_sql(self): + def test_run_sql_migrate_nothing_router(self): self._test_run_sql("test_mltdb_runsql", should_run=False) @override_settings(DATABASE_ROUTERS=[MigrateWhenFooRouter()]) - def test_run_sql2(self): + def test_run_sql_migrate_foo_router_without_hints(self): self._test_run_sql("test_mltdb_runsql2", should_run=False) - self._test_run_sql("test_mltdb_runsql2", should_run=True, hints={'foo': True}) + + @override_settings(DATABASE_ROUTERS=[MigrateWhenFooRouter()]) + def test_run_sql_migrate_foo_router_with_hints(self): + self._test_run_sql('test_mltdb_runsql3', should_run=True, hints={'foo': True}) def _test_run_python(self, app_label, should_run, hints=None): with override_settings(DATABASE_ROUTERS=[MigrateEverythingRouter()]): @@ -156,10 +159,13 @@ def inner_method(models, schema_editor): self.assertEqual(Pony.objects.count(), 0) @override_settings(DATABASE_ROUTERS=[MigrateNothingRouter()]) - def test_run_python(self): + def test_run_python_migrate_nothing_router(self): self._test_run_python("test_mltdb_runpython", should_run=False) @override_settings(DATABASE_ROUTERS=[MigrateWhenFooRouter()]) - def test_run_python2(self): + def test_run_python_migrate_foo_router_without_hints(self): self._test_run_python("test_mltdb_runpython2", should_run=False) - self._test_run_python("test_mltdb_runpython2", should_run=True, hints={'foo': True}) + + @override_settings(DATABASE_ROUTERS=[MigrateWhenFooRouter()]) + def test_run_python_migrate_foo_router_with_hints(self): + self._test_run_python('test_mltdb_runpython3', should_run=True, hints={'foo': True}) diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index e6d0c4bce47c4..3b2129a93381e 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -22,6 +22,24 @@ class OperationTestBase(MigrationTestBase): Common functions to help test operations. """ + @classmethod + def setUpClass(cls): + super().setUpClass() + cls._initial_table_names = frozenset(connection.introspection.table_names()) + + def tearDown(self): + self.cleanup_test_tables() + super().tearDown() + + def cleanup_test_tables(self): + table_names = frozenset(connection.introspection.table_names()) - self._initial_table_names + with connection.schema_editor() as editor: + with connection.constraint_checks_disabled(): + for table_name in table_names: + editor.execute(editor.sql_delete_table % { + 'table': editor.quote_name(table_name), + }) + def apply_operations(self, app_label, project_state, operations, atomic=True): migration = Migration('name', app_label) migration.operations = operations @@ -51,26 +69,6 @@ def set_up_test_model( """ Creates a test model state and database table. """ - # Delete the tables if they already exist - table_names = [ - # Start with ManyToMany tables - '_pony_stables', '_pony_vans', - # Then standard model tables - '_pony', '_stable', '_van', - ] - tables = [(app_label + table_name) for table_name in table_names] - with connection.cursor() as cursor: - table_names = connection.introspection.table_names(cursor) - connection.disable_constraint_checking() - sql_delete_table = connection.schema_editor().sql_delete_table - with transaction.atomic(): - for table in tables: - if table in table_names: - cursor.execute(sql_delete_table % { - "table": connection.ops.quote_name(table), - }) - connection.enable_constraint_checking() - # Make the "current" state model_options = { "swappable": "TEST_SWAP_MODEL", @@ -1857,6 +1855,72 @@ def test_add_constraint(self): self.assertEqual(definition[1], []) self.assertEqual(definition[2], {'model_name': "Pony", 'constraint': gt_constraint}) + @skipUnlessDBFeature('supports_table_check_constraints') + def test_add_constraint_percent_escaping(self): + app_label = 'add_constraint_string_quoting' + operations = [ + CreateModel( + 'Author', + fields=[ + ('id', models.AutoField(primary_key=True)), + ('name', models.CharField(max_length=100)), + ('rebate', models.CharField(max_length=100)), + ], + ), + ] + from_state = self.apply_operations(app_label, ProjectState(), operations) + # "%" generated in startswith lookup should be escaped in a way that is + # considered a leading wildcard. + check = models.Q(name__startswith='Albert') + constraint = models.CheckConstraint(check=check, name='name_constraint') + operation = migrations.AddConstraint('Author', constraint) + to_state = from_state.clone() + operation.state_forwards(app_label, to_state) + with connection.schema_editor() as editor: + operation.database_forwards(app_label, editor, from_state, to_state) + Author = to_state.apps.get_model(app_label, 'Author') + with self.assertRaises(IntegrityError), transaction.atomic(): + Author.objects.create(name='Artur') + # Literal "%" should be escaped in a way that is not a considered a + # wildcard. + check = models.Q(rebate__endswith='%') + constraint = models.CheckConstraint(check=check, name='rebate_constraint') + operation = migrations.AddConstraint('Author', constraint) + from_state = to_state + to_state = from_state.clone() + operation.state_forwards(app_label, to_state) + Author = to_state.apps.get_model(app_label, 'Author') + with connection.schema_editor() as editor: + operation.database_forwards(app_label, editor, from_state, to_state) + Author = to_state.apps.get_model(app_label, 'Author') + with self.assertRaises(IntegrityError), transaction.atomic(): + Author.objects.create(name='Albert', rebate='10$') + author = Author.objects.create(name='Albert', rebate='10%') + self.assertEqual(Author.objects.get(), author) + + @skipUnlessDBFeature('supports_table_check_constraints') + def test_add_or_constraint(self): + app_label = 'test_addorconstraint' + constraint_name = 'add_constraint_or' + from_state = self.set_up_test_model(app_label) + check = models.Q(pink__gt=2, weight__gt=2) | models.Q(weight__lt=0) + constraint = models.CheckConstraint(check=check, name=constraint_name) + operation = migrations.AddConstraint('Pony', constraint) + to_state = from_state.clone() + operation.state_forwards(app_label, to_state) + with connection.schema_editor() as editor: + operation.database_forwards(app_label, editor, from_state, to_state) + Pony = to_state.apps.get_model(app_label, 'Pony') + with self.assertRaises(IntegrityError), transaction.atomic(): + Pony.objects.create(pink=2, weight=3.0) + with self.assertRaises(IntegrityError), transaction.atomic(): + Pony.objects.create(pink=3, weight=1.0) + Pony.objects.bulk_create([ + Pony(pink=3, weight=-1.0), + Pony(pink=1, weight=-1.0), + Pony(pink=3, weight=3.0), + ]) + @skipUnlessDBFeature('supports_table_check_constraints') def test_remove_constraint(self): project_state = self.set_up_test_model("test_removeconstraint", constraints=[ diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py index abeeaf5182961..25637eb070e7c 100644 --- a/tests/migrations/test_writer.py +++ b/tests/migrations/test_writer.py @@ -455,6 +455,11 @@ def test_serialize_empty_nonempty_tuple(self): self.assertSerializedEqual(one_item_tuple) self.assertSerializedEqual(many_items_tuple) + def test_serialize_range(self): + string, imports = MigrationWriter.serialize(range(1, 5)) + self.assertEqual(string, 'range(1, 5)') + self.assertEqual(imports, set()) + def test_serialize_builtins(self): string, imports = MigrationWriter.serialize(range) self.assertEqual(string, 'range') diff --git a/tests/model_fields/test_integerfield.py b/tests/model_fields/test_integerfield.py index 5c7ba47fbb7d8..626b67b00b809 100644 --- a/tests/model_fields/test_integerfield.py +++ b/tests/model_fields/test_integerfield.py @@ -98,27 +98,31 @@ def test_redundant_backend_range_validators(self): """ min_backend_value, max_backend_value = self.backend_range - if min_backend_value is not None: - min_custom_value = min_backend_value + 1 - ranged_value_field = self.model._meta.get_field('value').__class__( - validators=[validators.MinValueValidator(min_custom_value)] - ) - field_range_message = validators.MinValueValidator.message % { - 'limit_value': min_custom_value, - } - with self.assertRaisesMessage(ValidationError, "[%r]" % field_range_message): - ranged_value_field.run_validators(min_backend_value - 1) - - if max_backend_value is not None: - max_custom_value = max_backend_value - 1 - ranged_value_field = self.model._meta.get_field('value').__class__( - validators=[validators.MaxValueValidator(max_custom_value)] - ) - field_range_message = validators.MaxValueValidator.message % { - 'limit_value': max_custom_value, - } - with self.assertRaisesMessage(ValidationError, "[%r]" % field_range_message): - ranged_value_field.run_validators(max_backend_value + 1) + for callable_limit in (True, False): + with self.subTest(callable_limit=callable_limit): + if min_backend_value is not None: + min_custom_value = min_backend_value + 1 + limit_value = (lambda: min_custom_value) if callable_limit else min_custom_value + ranged_value_field = self.model._meta.get_field('value').__class__( + validators=[validators.MinValueValidator(limit_value)] + ) + field_range_message = validators.MinValueValidator.message % { + 'limit_value': min_custom_value, + } + with self.assertRaisesMessage(ValidationError, '[%r]' % field_range_message): + ranged_value_field.run_validators(min_backend_value - 1) + + if max_backend_value is not None: + max_custom_value = max_backend_value - 1 + limit_value = (lambda: max_custom_value) if callable_limit else max_custom_value + ranged_value_field = self.model._meta.get_field('value').__class__( + validators=[validators.MaxValueValidator(limit_value)] + ) + field_range_message = validators.MaxValueValidator.message % { + 'limit_value': max_custom_value, + } + with self.assertRaisesMessage(ValidationError, '[%r]' % field_range_message): + ranged_value_field.run_validators(max_backend_value + 1) def test_types(self): instance = self.model(value=0) diff --git a/tests/model_regress/tests.py b/tests/model_regress/tests.py index e3977ee316a1e..28eed87008a49 100644 --- a/tests/model_regress/tests.py +++ b/tests/model_regress/tests.py @@ -2,9 +2,10 @@ from operator import attrgetter from django.core.exceptions import ValidationError -from django.db import router +from django.db import models, router from django.db.models.sql import InsertQuery from django.test import TestCase, skipUnlessDBFeature +from django.test.utils import isolate_apps from django.utils.timezone import get_fixed_timezone from .models import ( @@ -217,6 +218,23 @@ def test_chained_fks(self): m3 = Model3.objects.get(model2=1000) m3.model2 + @isolate_apps('model_regress') + def test_metaclass_can_access_attribute_dict(self): + """ + Model metaclasses have access to the class attribute dict in + __init__() (#30254). + """ + class HorseBase(models.base.ModelBase): + def __init__(cls, name, bases, attrs): + super(HorseBase, cls).__init__(name, bases, attrs) + cls.horns = (1 if 'magic' in attrs else 0) + + class Horse(models.Model, metaclass=HorseBase): + name = models.CharField(max_length=255) + magic = True + + self.assertEqual(Horse.horns, 1) + class ModelValidationTest(TestCase): def test_pk_validation(self): diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py index 0d78dd9c21551..bb79000b063b6 100644 --- a/tests/modeladmin/tests.py +++ b/tests/modeladmin/tests.py @@ -798,7 +798,7 @@ class BandAdmin(ModelAdmin): self.assertIsInstance(inline_instances[0], ConcertInline) def test_inline_has_add_permission_without_obj(self): - # This test will be removed in Django 3.1 when `obj` becomes a required + # This test will be removed in Django 3.0 when `obj` becomes a required # argument of has_add_permission() (#27991). class ConcertInline(TabularInline): model = Concert diff --git a/tests/ordering/models.py b/tests/ordering/models.py index 85e8c59bb6ff1..8b71983c44c1c 100644 --- a/tests/ordering/models.py +++ b/tests/ordering/models.py @@ -14,6 +14,7 @@ """ from django.db import models +from django.db.models.expressions import OrderBy class Author(models.Model): @@ -30,7 +31,12 @@ class Article(models.Model): pub_date = models.DateTimeField() class Meta: - ordering = ('-pub_date', 'headline') + ordering = ( + '-pub_date', + 'headline', + models.F('author__name').asc(), + OrderBy(models.F('second_author__name')), + ) def __str__(self): return self.headline diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py index 16e5cc9b2d41d..f0c4bba999240 100644 --- a/tests/ordering/tests.py +++ b/tests/ordering/tests.py @@ -408,7 +408,9 @@ def test_default_ordering_by_f_expression(self): def test_deprecated_values_annotate(self): msg = ( "Article QuerySet won't use Meta.ordering in Django 3.1. Add " - ".order_by('-pub_date', 'headline') to retain the current query." + ".order_by('-pub_date', 'headline', OrderBy(F(author__name), " + "descending=False), OrderBy(F(second_author__name), " + "descending=False)) to retain the current query." ) with self.assertRaisesMessage(RemovedInDjango31Warning, msg): list(Article.objects.values('author').annotate(Count('headline'))) diff --git a/tests/postgres_tests/integration_settings.py b/tests/postgres_tests/integration_settings.py new file mode 100644 index 0000000000000..c4ec0d1157afe --- /dev/null +++ b/tests/postgres_tests/integration_settings.py @@ -0,0 +1,5 @@ +SECRET_KEY = 'abcdefg' + +INSTALLED_APPS = [ + 'django.contrib.postgres', +] diff --git a/tests/postgres_tests/migrations/0002_create_test_models.py b/tests/postgres_tests/migrations/0002_create_test_models.py index 5db8a71385302..9f70f3ce75472 100644 --- a/tests/postgres_tests/migrations/0002_create_test_models.py +++ b/tests/postgres_tests/migrations/0002_create_test_models.py @@ -211,7 +211,9 @@ class Migration(migrations.Migration): ('bigints', BigIntegerRangeField(null=True, blank=True)), ('decimals', DecimalRangeField(null=True, blank=True)), ('timestamps', DateTimeRangeField(null=True, blank=True)), + ('timestamps_inner', DateTimeRangeField(null=True, blank=True)), ('dates', DateRangeField(null=True, blank=True)), + ('dates_inner', DateRangeField(null=True, blank=True)), ], options={ 'required_db_vendor': 'postgresql' diff --git a/tests/postgres_tests/models.py b/tests/postgres_tests/models.py index cbe477e402638..385b80f00161d 100644 --- a/tests/postgres_tests/models.py +++ b/tests/postgres_tests/models.py @@ -131,7 +131,9 @@ class RangesModel(PostgreSQLModel): bigints = BigIntegerRangeField(blank=True, null=True) decimals = DecimalRangeField(blank=True, null=True) timestamps = DateTimeRangeField(blank=True, null=True) + timestamps_inner = DateTimeRangeField(blank=True, null=True) dates = DateRangeField(blank=True, null=True) + dates_inner = DateRangeField(blank=True, null=True) class RangeLookupsModel(PostgreSQLModel): diff --git a/tests/postgres_tests/test_aggregates.py b/tests/postgres_tests/test_aggregates.py index 85d6f45fd1c8a..6009a95ec0cfa 100644 --- a/tests/postgres_tests/test_aggregates.py +++ b/tests/postgres_tests/test_aggregates.py @@ -1,6 +1,8 @@ import json -from django.db.models.expressions import F, Value +from django.db.models import CharField +from django.db.models.expressions import F, OuterRef, Subquery, Value +from django.db.models.functions import Cast, Concat, Substr from django.test.testcases import skipUnlessDBFeature from django.test.utils import Approximate @@ -38,6 +40,12 @@ def test_array_agg_charfield_ordering(self): ((F('boolean_field'), F('char_field').desc()), ['Foo4', 'Foo2', 'Foo3', 'Foo1']), ('char_field', ['Foo1', 'Foo2', 'Foo3', 'Foo4']), ('-char_field', ['Foo4', 'Foo3', 'Foo2', 'Foo1']), + (Concat('char_field', Value('@')), ['Foo1', 'Foo2', 'Foo3', 'Foo4']), + (Concat('char_field', Value('@')).desc(), ['Foo4', 'Foo3', 'Foo2', 'Foo1']), + ( + (Substr('char_field', 1, 1), F('integer_field'), Substr('char_field', 4, 1).desc()), + ['Foo3', 'Foo1', 'Foo2', 'Foo4'], + ), ) for ordering, expected_output in ordering_test_cases: with self.subTest(ordering=ordering, expected_output=expected_output): @@ -165,6 +173,8 @@ def test_string_agg_charfield_ordering(self): (F('char_field').desc(), 'Foo4;Foo3;Foo2;Foo1'), (F('char_field').asc(), 'Foo1;Foo2;Foo3;Foo4'), (F('char_field'), 'Foo1;Foo2;Foo3;Foo4'), + (Concat('char_field', Value('@')), 'Foo1;Foo2;Foo3;Foo4'), + (Concat('char_field', Value('@')).desc(), 'Foo4;Foo3;Foo2;Foo1'), ) for ordering, expected_output in ordering_test_cases: with self.subTest(ordering=ordering, expected_output=expected_output): @@ -194,6 +204,36 @@ def test_json_agg_empty(self): values = AggregateTestModel.objects.none().aggregate(jsonagg=JSONBAgg('integer_field')) self.assertEqual(values, json.loads('{"jsonagg": []}')) + def test_string_agg_array_agg_ordering_in_subquery(self): + stats = [] + for i, agg in enumerate(AggregateTestModel.objects.order_by('char_field')): + stats.append(StatTestModel(related_field=agg, int1=i, int2=i + 1)) + stats.append(StatTestModel(related_field=agg, int1=i + 1, int2=i)) + StatTestModel.objects.bulk_create(stats) + + for aggregate, expected_result in ( + ( + ArrayAgg('stattestmodel__int1', ordering='-stattestmodel__int2'), + [('Foo1', [0, 1]), ('Foo2', [1, 2]), ('Foo3', [2, 3]), ('Foo4', [3, 4])], + ), + ( + StringAgg( + Cast('stattestmodel__int1', CharField()), + delimiter=';', + ordering='-stattestmodel__int2', + ), + [('Foo1', '0;1'), ('Foo2', '1;2'), ('Foo3', '2;3'), ('Foo4', '3;4')], + ), + ): + with self.subTest(aggregate=aggregate.__class__.__name__): + subquery = AggregateTestModel.objects.filter( + pk=OuterRef('pk'), + ).annotate(agg=aggregate).values('agg') + values = AggregateTestModel.objects.annotate( + agg=Subquery(subquery), + ).order_by('char_field').values_list('char_field', 'agg') + self.assertEqual(list(values), expected_result) + class TestAggregateDistinct(PostgreSQLTestCase): @classmethod diff --git a/tests/postgres_tests/test_constraints.py b/tests/postgres_tests/test_constraints.py new file mode 100644 index 0000000000000..2fc6ee532219f --- /dev/null +++ b/tests/postgres_tests/test_constraints.py @@ -0,0 +1,85 @@ +import datetime + +from django.db import connection, transaction +from django.db.models import F, Q +from django.db.models.constraints import CheckConstraint +from django.db.utils import IntegrityError + +from . import PostgreSQLTestCase +from .models import RangesModel + +try: + from psycopg2.extras import NumericRange +except ImportError: + pass + + +class SchemaTests(PostgreSQLTestCase): + def get_constraints(self, table): + """Get the constraints on the table using a new cursor.""" + with connection.cursor() as cursor: + return connection.introspection.get_constraints(cursor, table) + + def test_check_constraint_range_value(self): + constraint_name = 'ints_between' + self.assertNotIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) + constraint = CheckConstraint( + check=Q(ints__contained_by=NumericRange(10, 30)), + name=constraint_name, + ) + with connection.schema_editor() as editor: + editor.add_constraint(RangesModel, constraint) + with connection.cursor() as cursor: + constraints = connection.introspection.get_constraints(cursor, RangesModel._meta.db_table) + self.assertIn(constraint_name, constraints) + with self.assertRaises(IntegrityError), transaction.atomic(): + RangesModel.objects.create(ints=(20, 50)) + RangesModel.objects.create(ints=(10, 30)) + + def test_check_constraint_daterange_contains(self): + constraint_name = 'dates_contains' + self.assertNotIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) + constraint = CheckConstraint( + check=Q(dates__contains=F('dates_inner')), + name=constraint_name, + ) + with connection.schema_editor() as editor: + editor.add_constraint(RangesModel, constraint) + with connection.cursor() as cursor: + constraints = connection.introspection.get_constraints(cursor, RangesModel._meta.db_table) + self.assertIn(constraint_name, constraints) + date_1 = datetime.date(2016, 1, 1) + date_2 = datetime.date(2016, 1, 4) + with self.assertRaises(IntegrityError), transaction.atomic(): + RangesModel.objects.create( + dates=(date_1, date_2), + dates_inner=(date_1, date_2.replace(day=5)), + ) + RangesModel.objects.create( + dates=(date_1, date_2), + dates_inner=(date_1, date_2), + ) + + def test_check_constraint_datetimerange_contains(self): + constraint_name = 'timestamps_contains' + self.assertNotIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) + constraint = CheckConstraint( + check=Q(timestamps__contains=F('timestamps_inner')), + name=constraint_name, + ) + with connection.schema_editor() as editor: + editor.add_constraint(RangesModel, constraint) + with connection.cursor() as cursor: + constraints = connection.introspection.get_constraints(cursor, RangesModel._meta.db_table) + self.assertIn(constraint_name, constraints) + datetime_1 = datetime.datetime(2016, 1, 1) + datetime_2 = datetime.datetime(2016, 1, 2, 12) + with self.assertRaises(IntegrityError), transaction.atomic(): + RangesModel.objects.create( + timestamps=(datetime_1, datetime_2), + timestamps_inner=(datetime_1, datetime_2.replace(hour=13)), + ) + RangesModel.objects.create( + timestamps=(datetime_1, datetime_2), + timestamps_inner=(datetime_1, datetime_2), + ) diff --git a/tests/postgres_tests/test_integration.py b/tests/postgres_tests/test_integration.py new file mode 100644 index 0000000000000..277001d31f813 --- /dev/null +++ b/tests/postgres_tests/test_integration.py @@ -0,0 +1,19 @@ +import os +import subprocess +import sys + +from . import PostgreSQLSimpleTestCase + + +class PostgresIntegrationTests(PostgreSQLSimpleTestCase): + def test_check(self): + old_cwd = os.getcwd() + self.addCleanup(lambda: os.chdir(old_cwd)) + os.chdir(os.path.dirname(__file__)) + result = subprocess.run( + [sys.executable, '-m', 'django', 'check', '--settings', 'integration_settings'], + stdout=subprocess.DEVNULL, + stderr=subprocess.PIPE, + ) + stderr = '\n'.join([e.decode() for e in result.stderr.splitlines()]) + self.assertEqual(result.returncode, 0, msg=stderr) diff --git a/tests/postgres_tests/test_json.py b/tests/postgres_tests/test_json.py index 6622820ec9dde..9acd7c8bf844a 100644 --- a/tests/postgres_tests/test_json.py +++ b/tests/postgres_tests/test_json.py @@ -1,10 +1,11 @@ import datetime +import operator import uuid from decimal import Decimal from django.core import checks, exceptions, serializers from django.core.serializers.json import DjangoJSONEncoder -from django.db.models import Q +from django.db.models import Count, Q from django.forms import CharField, Form, widgets from django.test.utils import isolate_apps from django.utils.html import escape @@ -15,6 +16,7 @@ try: from django.contrib.postgres import forms from django.contrib.postgres.fields import JSONField + from django.contrib.postgres.fields.jsonb import KeyTextTransform, KeyTransform except ImportError: pass @@ -95,19 +97,19 @@ def test_custom_encoding(self): class TestQuerying(PostgreSQLTestCase): @classmethod def setUpTestData(cls): - cls.objs = [ - JSONModel.objects.create(field=None), - JSONModel.objects.create(field=True), - JSONModel.objects.create(field=False), - JSONModel.objects.create(field='yes'), - JSONModel.objects.create(field=7), - JSONModel.objects.create(field=[]), - JSONModel.objects.create(field={}), - JSONModel.objects.create(field={ + cls.objs = JSONModel.objects.bulk_create([ + JSONModel(field=None), + JSONModel(field=True), + JSONModel(field=False), + JSONModel(field='yes'), + JSONModel(field=7), + JSONModel(field=[]), + JSONModel(field={}), + JSONModel(field={ 'a': 'b', 'c': 1, }), - JSONModel.objects.create(field={ + JSONModel(field={ 'a': 'b', 'c': 1, 'd': ['e', {'f': 'g'}], @@ -116,13 +118,13 @@ def setUpTestData(cls): 'j': None, 'k': {'l': 'm'}, }), - JSONModel.objects.create(field=[1, [2]]), - JSONModel.objects.create(field={ + JSONModel(field=[1, [2]]), + JSONModel(field={ 'k': True, 'l': False, }), - JSONModel.objects.create(field={'foo': 'bar'}), - ] + JSONModel(field={'foo': 'bar'}), + ]) def test_exact(self): self.assertSequenceEqual( @@ -153,6 +155,27 @@ def test_ordering_by_transform(self): query = JSONModel.objects.filter(field__name__isnull=False).order_by('field__ord') self.assertSequenceEqual(query, [objs[4], objs[2], objs[3], objs[1], objs[0]]) + def test_ordering_grouping_by_key_transform(self): + base_qs = JSONModel.objects.filter(field__d__0__isnull=False) + for qs in ( + base_qs.order_by('field__d__0'), + base_qs.annotate(key=KeyTransform('0', KeyTransform('d', 'field'))).order_by('key'), + ): + self.assertSequenceEqual(qs, [self.objs[8]]) + qs = JSONModel.objects.filter(field__isnull=False) + self.assertQuerysetEqual( + qs.values('field__d__0').annotate(count=Count('field__d__0')).order_by('count'), + [1, 10], + operator.itemgetter('count'), + ) + self.assertQuerysetEqual( + qs.filter(field__isnull=False).annotate( + key=KeyTextTransform('f', KeyTransform('1', KeyTransform('d', 'field'))), + ).values('key').annotate(count=Count('key')).order_by('count'), + [(None, 0), ('g', 1)], + operator.itemgetter('key', 'count'), + ) + def test_deep_values(self): query = JSONModel.objects.values_list('field__k__l') self.assertSequenceEqual( diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py index f4e7e9bd6d613..89f32ee77c11b 100644 --- a/tests/postgres_tests/test_ranges.py +++ b/tests/postgres_tests/test_ranges.py @@ -115,11 +115,15 @@ def setUpTestData(cls): ] cls.obj = RangesModel.objects.create( dates=(cls.dates[0], cls.dates[3]), + dates_inner=(cls.dates[1], cls.dates[2]), timestamps=(cls.timestamps[0], cls.timestamps[3]), + timestamps_inner=(cls.timestamps[1], cls.timestamps[2]), ) cls.aware_obj = RangesModel.objects.create( dates=(cls.dates[0], cls.dates[3]), + dates_inner=(cls.dates[1], cls.dates[2]), timestamps=(cls.aware_timestamps[0], cls.aware_timestamps[3]), + timestamps_inner=(cls.timestamps[1], cls.timestamps[2]), ) # Objects that don't match any queries. for i in range(3, 4): @@ -140,6 +144,7 @@ def test_datetime_range_contains(self): (self.aware_timestamps[1], self.aware_timestamps[2]), Value(self.dates[0], output_field=DateTimeField()), Func(F('dates'), function='lower', output_field=DateTimeField()), + F('timestamps_inner'), ) for filter_arg in filter_args: with self.subTest(filter_arg=filter_arg): @@ -154,6 +159,7 @@ def test_date_range_contains(self): (self.dates[1], self.dates[2]), Value(self.dates[0], output_field=DateField()), Func(F('timestamps'), function='lower', output_field=DateField()), + F('dates_inner'), ) for filter_arg in filter_args: with self.subTest(filter_arg=filter_arg): @@ -167,13 +173,13 @@ class TestQuerying(PostgreSQLTestCase): @classmethod def setUpTestData(cls): - cls.objs = [ - RangesModel.objects.create(ints=NumericRange(0, 10)), - RangesModel.objects.create(ints=NumericRange(5, 15)), - RangesModel.objects.create(ints=NumericRange(None, 0)), - RangesModel.objects.create(ints=NumericRange(empty=True)), - RangesModel.objects.create(ints=None), - ] + cls.objs = RangesModel.objects.bulk_create([ + RangesModel(ints=NumericRange(0, 10)), + RangesModel(ints=NumericRange(5, 15)), + RangesModel(ints=NumericRange(None, 0)), + RangesModel(ints=NumericRange(empty=True)), + RangesModel(ints=None), + ]) def test_exact(self): self.assertSequenceEqual( @@ -361,7 +367,9 @@ class TestSerialization(PostgreSQLSimpleTestCase): '\\"bounds\\": \\"[)\\"}", "decimals": "{\\"empty\\": true}", ' '"bigints": null, "timestamps": "{\\"upper\\": \\"2014-02-02T12:12:12+00:00\\", ' '\\"lower\\": \\"2014-01-01T00:00:00+00:00\\", \\"bounds\\": \\"[)\\"}", ' - '"dates": "{\\"upper\\": \\"2014-02-02\\", \\"lower\\": \\"2014-01-01\\", \\"bounds\\": \\"[)\\"}" }, ' + '"timestamps_inner": null, ' + '"dates": "{\\"upper\\": \\"2014-02-02\\", \\"lower\\": \\"2014-01-01\\", \\"bounds\\": \\"[)\\"}", ' + '"dates_inner": null }, ' '"model": "postgres_tests.rangesmodel", "pk": null}]' ) diff --git a/tests/postgres_tests/test_search.py b/tests/postgres_tests/test_search.py index 303f4d878371d..f5111ce8d3e3e 100644 --- a/tests/postgres_tests/test_search.py +++ b/tests/postgres_tests/test_search.py @@ -8,6 +8,7 @@ from django.contrib.postgres.search import ( SearchQuery, SearchRank, SearchVector, ) +from django.db import connection from django.db.models import F from django.test import SimpleTestCase, modify_settings, skipUnlessDBFeature @@ -112,6 +113,10 @@ def test_existing_vector_config_explicit(self): searched = Line.objects.filter(dialogue_search_vector=SearchQuery('cadeaux', config='french')) self.assertSequenceEqual(searched, [self.french]) + def test_single_coalesce_expression(self): + searched = Line.objects.annotate(search=SearchVector('dialogue')).filter(search='cadeaux') + self.assertNotIn('COALESCE(COALESCE', str(searched.query)) + class MultipleFieldsTest(GrailTestData, PostgreSQLTestCase): @@ -346,6 +351,23 @@ def test_ranking_chaining(self): self.assertSequenceEqual(searched, [self.verse0]) +class SearchVectorIndexTests(PostgreSQLTestCase): + def test_search_vector_index(self): + """SearchVector generates IMMUTABLE SQL in order to be indexable.""" + # This test should be moved to test_indexes and use a functional + # index instead once support lands (see #26167). + query = Line.objects.all().query + resolved = SearchVector('id', 'dialogue', config='english').resolve_expression(query) + compiler = query.get_compiler(connection.alias) + sql, params = resolved.as_sql(compiler, connection) + # Indexed function must be IMMUTABLE. + with connection.cursor() as cursor: + cursor.execute( + 'CREATE INDEX search_vector_index ON %s USING GIN (%s)' % (Line._meta.db_table, sql), + params, + ) + + class SearchQueryTests(SimpleTestCase): def test_str(self): tests = ( diff --git a/tests/queries/models.py b/tests/queries/models.py index af0af1d10c54f..5751738c95923 100644 --- a/tests/queries/models.py +++ b/tests/queries/models.py @@ -143,6 +143,7 @@ def __str__(self): class Number(models.Model): num = models.IntegerField() + other_num = models.IntegerField(null=True) def __str__(self): return str(self.num) diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py index 3902db59e21e5..0c1c614999fa0 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -9,7 +9,7 @@ class QuerySetSetOperationTests(TestCase): @classmethod def setUpTestData(cls): - Number.objects.bulk_create(Number(num=i) for i in range(10)) + Number.objects.bulk_create(Number(num=i, other_num=10 - i) for i in range(10)) def number_transform(self, value): return value.num @@ -225,3 +225,10 @@ def test_qs_with_subcompound_qs(self): qs1 = Number.objects.all() qs2 = Number.objects.intersection(Number.objects.filter(num__gt=1)) self.assertEqual(qs1.difference(qs2).count(), 2) + + def test_order_by_same_type(self): + qs = Number.objects.all() + union = qs.union(qs) + numbers = list(range(10)) + self.assertNumbersEqual(union.order_by('num'), numbers) + self.assertNumbersEqual(union.order_by('other_num'), reversed(numbers)) diff --git a/tests/queries/test_query.py b/tests/queries/test_query.py index bef79c992eb93..c6a659fe97fee 100644 --- a/tests/queries/test_query.py +++ b/tests/queries/test_query.py @@ -23,6 +23,21 @@ def test_simple_query(self): self.assertEqual(lookup.rhs, 2) self.assertEqual(lookup.lhs.target, Author._meta.get_field('num')) + def test_simplecol_query(self): + query = Query(Author) + where = query.build_where(Q(num__gt=2, name__isnull=False) | Q(num__lt=F('id'))) + + name_isnull_lookup, num_gt_lookup = where.children[0].children + self.assertIsInstance(num_gt_lookup, GreaterThan) + self.assertIsInstance(num_gt_lookup.lhs, SimpleCol) + self.assertIsInstance(name_isnull_lookup, IsNull) + self.assertIsInstance(name_isnull_lookup.lhs, SimpleCol) + + num_lt_lookup = where.children[1] + self.assertIsInstance(num_lt_lookup, LessThan) + self.assertIsInstance(num_lt_lookup.rhs, SimpleCol) + self.assertIsInstance(num_lt_lookup.lhs, SimpleCol) + def test_complex_query(self): query = Query(Author) where = query.build_where(Q(num__gt=2) | Q(num__lt=0)) diff --git a/tests/queries/tests.py b/tests/queries/tests.py index c655fe52cb9fd..e72ecaa654c8f 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -2345,7 +2345,7 @@ def test_named_values_list_without_fields(self): qs = Number.objects.extra(select={'num2': 'num+1'}).annotate(Count('id')) values = qs.values_list(named=True).first() self.assertEqual(type(values).__name__, 'Row') - self.assertEqual(values._fields, ('num2', 'id', 'num', 'id__count')) + self.assertEqual(values._fields, ('num2', 'id', 'num', 'other_num', 'id__count')) self.assertEqual(values.num, 72) self.assertEqual(values.num2, 73) self.assertEqual(values.id__count, 1) diff --git a/tests/schema/models.py b/tests/schema/models.py index f6bdbd8815750..5b756e941c8ec 100644 --- a/tests/schema/models.py +++ b/tests/schema/models.py @@ -55,6 +55,31 @@ class Meta: apps = new_apps +class AuthorWithUniqueName(models.Model): + name = models.CharField(max_length=255, unique=True) + + class Meta: + apps = new_apps + + +class AuthorWithIndexedNameAndBirthday(models.Model): + name = models.CharField(max_length=255) + birthday = models.DateField() + + class Meta: + apps = new_apps + index_together = [['name', 'birthday']] + + +class AuthorWithUniqueNameAndBirthday(models.Model): + name = models.CharField(max_length=255) + birthday = models.DateField() + + class Meta: + apps = new_apps + unique_together = [['name', 'birthday']] + + class Book(models.Model): author = models.ForeignKey(Author, models.CASCADE) title = models.CharField(max_length=100, db_index=True) diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 410a52b646d12..dfc684c4b0d77 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -7,7 +7,8 @@ from django.db import ( DatabaseError, IntegrityError, OperationalError, connection, ) -from django.db.models import Model +from django.db.models import Model, Q +from django.db.models.constraints import CheckConstraint, UniqueConstraint from django.db.models.deletion import CASCADE, PROTECT from django.db.models.fields import ( AutoField, BigAutoField, BigIntegerField, BinaryField, BooleanField, @@ -31,9 +32,11 @@ from .models import ( Author, AuthorCharFieldWithIndex, AuthorTextFieldWithIndex, AuthorWithDefaultHeight, AuthorWithEvenLongerName, AuthorWithIndexedName, - Book, BookForeignObj, BookWeak, BookWithLongName, BookWithO2O, - BookWithoutAuthor, BookWithSlug, IntegerPK, Node, Note, NoteRename, Tag, - TagIndexed, TagM2MTest, TagUniqueRename, Thing, UniqueTest, new_apps, + AuthorWithIndexedNameAndBirthday, AuthorWithUniqueName, + AuthorWithUniqueNameAndBirthday, Book, BookForeignObj, BookWeak, + BookWithLongName, BookWithO2O, BookWithoutAuthor, BookWithSlug, IntegerPK, + Node, Note, NoteRename, Tag, TagIndexed, TagM2MTest, TagUniqueRename, + Thing, UniqueTest, new_apps, ) @@ -129,6 +132,14 @@ def get_indexes(self, table): if c['index'] and len(c['columns']) == 1 ] + def get_uniques(self, table): + with connection.cursor() as cursor: + return [ + c['columns'][0] + for c in connection.introspection.get_constraints(cursor, table).values() + if c['unique'] and len(c['columns']) == 1 + ] + def get_constraints(self, table): """ Get the constraints on a table using a new cursor. @@ -1516,6 +1527,53 @@ def test_check_constraints(self): if not any(details['columns'] == ['height'] and details['check'] for details in constraints.values()): self.fail("No check constraint for height found") + @skipUnlessDBFeature('supports_column_check_constraints') + def test_remove_field_check_does_not_remove_meta_constraints(self): + with connection.schema_editor() as editor: + editor.create_model(Author) + # Add the custom check constraint + constraint = CheckConstraint(check=Q(height__gte=0), name='author_height_gte_0_check') + custom_constraint_name = constraint.name + Author._meta.constraints = [constraint] + with connection.schema_editor() as editor: + editor.add_constraint(Author, constraint) + # Ensure the constraints exist + constraints = self.get_constraints(Author._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['height'] and details['check'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 1) + # Alter the column to remove field check + old_field = Author._meta.get_field('height') + new_field = IntegerField(null=True, blank=True) + new_field.set_attributes_from_name('height') + with connection.schema_editor() as editor: + editor.alter_field(Author, old_field, new_field, strict=True) + constraints = self.get_constraints(Author._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['height'] and details['check'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 0) + # Alter the column to re-add field check + new_field2 = Author._meta.get_field('height') + with connection.schema_editor() as editor: + editor.alter_field(Author, new_field, new_field2, strict=True) + constraints = self.get_constraints(Author._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['height'] and details['check'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 1) + # Drop the check constraint + with connection.schema_editor() as editor: + Author._meta.constraints = [] + editor.remove_constraint(Author, constraint) + def test_unique(self): """ Tests removing and adding unique constraints to a single column. @@ -1642,6 +1700,53 @@ class Meta: with self.assertRaises(IntegrityError): Tag.objects.create(title='bar', slug='foo') + @skipUnlessDBFeature('allows_multiple_constraints_on_same_fields') + def test_remove_field_unique_does_not_remove_meta_constraints(self): + with connection.schema_editor() as editor: + editor.create_model(AuthorWithUniqueName) + # Add the custom unique constraint + constraint = UniqueConstraint(fields=['name'], name='author_name_uniq') + custom_constraint_name = constraint.name + AuthorWithUniqueName._meta.constraints = [constraint] + with connection.schema_editor() as editor: + editor.add_constraint(AuthorWithUniqueName, constraint) + # Ensure the constraints exist + constraints = self.get_constraints(AuthorWithUniqueName._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name'] and details['unique'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 1) + # Alter the column to remove field uniqueness + old_field = AuthorWithUniqueName._meta.get_field('name') + new_field = CharField(max_length=255) + new_field.set_attributes_from_name('name') + with connection.schema_editor() as editor: + editor.alter_field(AuthorWithUniqueName, old_field, new_field, strict=True) + constraints = self.get_constraints(AuthorWithUniqueName._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name'] and details['unique'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 0) + # Alter the column to re-add field uniqueness + new_field2 = AuthorWithUniqueName._meta.get_field('name') + with connection.schema_editor() as editor: + editor.alter_field(AuthorWithUniqueName, new_field, new_field2, strict=True) + constraints = self.get_constraints(AuthorWithUniqueName._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name'] and details['unique'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 1) + # Drop the unique constraint + with connection.schema_editor() as editor: + AuthorWithUniqueName._meta.constraints = [] + editor.remove_constraint(AuthorWithUniqueName, constraint) + def test_unique_together(self): """ Tests removing and adding unique_together constraints on a model. @@ -1714,6 +1819,50 @@ def test_unique_together_with_fk_with_existing_index(self): with connection.schema_editor() as editor: editor.alter_unique_together(Book, [['author', 'title']], []) + @skipUnlessDBFeature('allows_multiple_constraints_on_same_fields') + def test_remove_unique_together_does_not_remove_meta_constraints(self): + with connection.schema_editor() as editor: + editor.create_model(AuthorWithUniqueNameAndBirthday) + # Add the custom unique constraint + constraint = UniqueConstraint(fields=['name', 'birthday'], name='author_name_birthday_uniq') + custom_constraint_name = constraint.name + AuthorWithUniqueNameAndBirthday._meta.constraints = [constraint] + with connection.schema_editor() as editor: + editor.add_constraint(AuthorWithUniqueNameAndBirthday, constraint) + # Ensure the constraints exist + constraints = self.get_constraints(AuthorWithUniqueNameAndBirthday._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name', 'birthday'] and details['unique'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 1) + # Remove unique together + unique_together = AuthorWithUniqueNameAndBirthday._meta.unique_together + with connection.schema_editor() as editor: + editor.alter_unique_together(AuthorWithUniqueNameAndBirthday, unique_together, []) + constraints = self.get_constraints(AuthorWithUniqueNameAndBirthday._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name', 'birthday'] and details['unique'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 0) + # Re-add unique together + with connection.schema_editor() as editor: + editor.alter_unique_together(AuthorWithUniqueNameAndBirthday, [], unique_together) + constraints = self.get_constraints(AuthorWithUniqueNameAndBirthday._meta.db_table) + self.assertIn(custom_constraint_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name', 'birthday'] and details['unique'] and name != custom_constraint_name + ] + self.assertEqual(len(other_constraints), 1) + # Drop the unique constraint + with connection.schema_editor() as editor: + AuthorWithUniqueNameAndBirthday._meta.constraints = [] + editor.remove_constraint(AuthorWithUniqueNameAndBirthday, constraint) + def test_index_together(self): """ Tests removing and adding index_together constraints on a model. @@ -1792,6 +1941,50 @@ def test_create_index_together(self): ), ) + @skipUnlessDBFeature('allows_multiple_constraints_on_same_fields') + def test_remove_index_together_does_not_remove_meta_indexes(self): + with connection.schema_editor() as editor: + editor.create_model(AuthorWithIndexedNameAndBirthday) + # Add the custom index + index = Index(fields=['name', 'birthday'], name='author_name_birthday_idx') + custom_index_name = index.name + AuthorWithIndexedNameAndBirthday._meta.indexes = [index] + with connection.schema_editor() as editor: + editor.add_index(AuthorWithIndexedNameAndBirthday, index) + # Ensure the indexes exist + constraints = self.get_constraints(AuthorWithIndexedNameAndBirthday._meta.db_table) + self.assertIn(custom_index_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name', 'birthday'] and details['index'] and name != custom_index_name + ] + self.assertEqual(len(other_constraints), 1) + # Remove index together + index_together = AuthorWithIndexedNameAndBirthday._meta.index_together + with connection.schema_editor() as editor: + editor.alter_index_together(AuthorWithIndexedNameAndBirthday, index_together, []) + constraints = self.get_constraints(AuthorWithIndexedNameAndBirthday._meta.db_table) + self.assertIn(custom_index_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name', 'birthday'] and details['index'] and name != custom_index_name + ] + self.assertEqual(len(other_constraints), 0) + # Re-add index together + with connection.schema_editor() as editor: + editor.alter_index_together(AuthorWithIndexedNameAndBirthday, [], index_together) + constraints = self.get_constraints(AuthorWithIndexedNameAndBirthday._meta.db_table) + self.assertIn(custom_index_name, constraints) + other_constraints = [ + name for name, details in constraints.items() + if details['columns'] == ['name', 'birthday'] and details['index'] and name != custom_index_name + ] + self.assertEqual(len(other_constraints), 1) + # Drop the index + with connection.schema_editor() as editor: + AuthorWithIndexedNameAndBirthday._meta.indexes = [] + editor.remove_index(AuthorWithIndexedNameAndBirthday, index) + @isolate_apps('schema') def test_db_table(self): """ @@ -1950,7 +2143,7 @@ def test_indexes(self): editor.add_field(Book, new_field3) self.assertIn( "slug", - self.get_indexes(Book._meta.db_table), + self.get_uniques(Book._meta.db_table), ) # Remove the unique, check the index goes with it new_field4 = CharField(max_length=20, unique=False) @@ -1959,7 +2152,7 @@ def test_indexes(self): editor.alter_field(BookWithSlug, new_field3, new_field4, strict=True) self.assertNotIn( "slug", - self.get_indexes(Book._meta.db_table), + self.get_uniques(Book._meta.db_table), ) def test_text_field_with_db_index(self): diff --git a/tests/serializers/test_yaml.py b/tests/serializers/test_yaml.py index e876597e9d041..10f73901cb8a5 100644 --- a/tests/serializers/test_yaml.py +++ b/tests/serializers/test_yaml.py @@ -115,7 +115,9 @@ class YamlSerializerTestCase(SerializersTestBase, TestCase): author: %(author_pk)s headline: Poker has no place on ESPN pub_date: 2006-06-16 11:00:00 - categories: [%(first_category_pk)s, %(second_category_pk)s] + categories:""" + ( + ' [%(first_category_pk)s, %(second_category_pk)s]' if HAS_YAML and yaml.__version__ < '5.1' + else '\n - %(first_category_pk)s\n - %(second_category_pk)s') + """ meta_data: [] """ diff --git a/tests/servers/test_liveserverthread.py b/tests/servers/test_liveserverthread.py index d39aac8183ade..9762b53791ff9 100644 --- a/tests/servers/test_liveserverthread.py +++ b/tests/servers/test_liveserverthread.py @@ -18,11 +18,10 @@ def test_closes_connections(self): # Pass a connection to the thread to check they are being closed. connections_override = {DEFAULT_DB_ALIAS: conn} - saved_sharing = conn.allow_thread_sharing + conn.inc_thread_sharing() try: - conn.allow_thread_sharing = True self.assertTrue(conn.is_usable()) self.run_live_server_thread(connections_override) self.assertFalse(conn.is_usable()) finally: - conn.allow_thread_sharing = saved_sharing + conn.dec_thread_sharing() diff --git a/tests/settings_tests/tests.py b/tests/settings_tests/tests.py index bfd580b600761..d0127db42703b 100644 --- a/tests/settings_tests/tests.py +++ b/tests/settings_tests/tests.py @@ -367,6 +367,18 @@ def test_set_with_xheader_right(self): req.META['HTTP_X_FORWARDED_PROTOCOL'] = 'https' self.assertIs(req.is_secure(), True) + @override_settings(SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTOCOL', 'https')) + def test_xheader_preferred_to_underlying_request(self): + class ProxyRequest(HttpRequest): + def _get_scheme(self): + """Proxy always connecting via HTTPS""" + return 'https' + + # Client connects via HTTP. + req = ProxyRequest() + req.META['HTTP_X_FORWARDED_PROTOCOL'] = 'http' + self.assertIs(req.is_secure(), False) + class IsOverriddenTest(SimpleTestCase): def test_configure(self): diff --git a/tests/staticfiles_tests/test_liveserver.py b/tests/staticfiles_tests/test_liveserver.py index 264242bbaedd0..820fa5bc89514 100644 --- a/tests/staticfiles_tests/test_liveserver.py +++ b/tests/staticfiles_tests/test_liveserver.py @@ -64,6 +64,9 @@ def raises_exception(cls): # app without having set the required STATIC_URL setting.") pass finally: + # Use del to avoid decrementing the database thread sharing count a + # second time. + del cls.server_thread super().tearDownClass() def test_test_test(self): diff --git a/tests/test_client/tests.py b/tests/test_client/tests.py index 432865328f762..aa4f0e94b5efe 100644 --- a/tests/test_client/tests.py +++ b/tests/test_client/tests.py @@ -815,8 +815,9 @@ def test_exception_following_nested_client_request(self): def test_response_raises_multi_arg_exception(self): """A request may raise an exception with more than one required arg.""" - with self.assertRaises(TwoArgException): + with self.assertRaises(TwoArgException) as cm: self.client.get('/two_arg_exception/') + self.assertEqual(cm.exception.args, ('one', 'two')) def test_uploading_temp_file(self): with tempfile.TemporaryFile() as test_file: diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py index 3a315e7c10445..a1a113a26ec2a 100644 --- a/tests/test_utils/tests.py +++ b/tests/test_utils/tests.py @@ -22,7 +22,7 @@ CaptureQueriesContext, TestContextDecorator, isolate_apps, override_settings, setup_test_environment, ) -from django.urls import NoReverseMatch, path, reverse +from django.urls import NoReverseMatch, path, reverse, reverse_lazy from .models import Car, Person, PossessedCar from .views import empty_response @@ -961,6 +961,7 @@ class MyCustomField(IntegerField): self.assertFieldOutput(MyCustomField, {}, {}, empty_value=None) +@override_settings(ROOT_URLCONF='test_utils.urls') class AssertURLEqualTests(SimpleTestCase): def test_equal(self): valid_tests = ( @@ -971,6 +972,7 @@ def test_equal(self): ('http://example.com/?x=1&y=2&a=1&a=2', 'http://example.com/?a=1&a=2&y=2&x=1'), ('/path/to/?x=1&y=2&z=3', '/path/to/?z=3&y=2&x=1'), ('?x=1&y=2&z=3', '?z=3&y=2&x=1'), + ('/test_utils/no_template_used/', reverse_lazy('no_template_used')), ) for url1, url2 in valid_tests: with self.subTest(url=url1): diff --git a/tests/test_utils/urls.py b/tests/test_utils/urls.py index 5cfab5d8314d1..6b060dff9531f 100644 --- a/tests/test_utils/urls.py +++ b/tests/test_utils/urls.py @@ -4,5 +4,5 @@ urlpatterns = [ path('test_utils/get_person//', views.get_person), - path('test_utils/no_template_used/', views.no_template_used), + path('test_utils/no_template_used/', views.no_template_used, name='no_template_used'), ] diff --git a/tests/timezones/tests.py b/tests/timezones/tests.py index e54b011c04269..7a63bac670005 100644 --- a/tests/timezones/tests.py +++ b/tests/timezones/tests.py @@ -643,7 +643,7 @@ def test_naive_datetime(self): self.assertEqual(obj.dt, dt) if not isinstance(serializers.get_serializer('yaml'), serializers.BadSerializer): - data = serializers.serialize('yaml', [Event(dt=dt)]) + data = serializers.serialize('yaml', [Event(dt=dt)], default_flow_style=None) self.assert_yaml_contains_datetime(data, "2011-09-01 13:20:30") obj = next(serializers.deserialize('yaml', data)).object self.assertEqual(obj.dt, dt) @@ -667,7 +667,7 @@ def test_naive_datetime_with_microsecond(self): self.assertEqual(obj.dt, dt) if not isinstance(serializers.get_serializer('yaml'), serializers.BadSerializer): - data = serializers.serialize('yaml', [Event(dt=dt)]) + data = serializers.serialize('yaml', [Event(dt=dt)], default_flow_style=None) self.assert_yaml_contains_datetime(data, "2011-09-01 13:20:30.405060") obj = next(serializers.deserialize('yaml', data)).object self.assertEqual(obj.dt, dt) @@ -691,7 +691,7 @@ def test_aware_datetime_with_microsecond(self): self.assertEqual(obj.dt, dt) if not isinstance(serializers.get_serializer('yaml'), serializers.BadSerializer): - data = serializers.serialize('yaml', [Event(dt=dt)]) + data = serializers.serialize('yaml', [Event(dt=dt)], default_flow_style=None) self.assert_yaml_contains_datetime(data, "2011-09-01 17:20:30.405060+07:00") obj = next(serializers.deserialize('yaml', data)).object self.assertEqual(obj.dt.replace(tzinfo=UTC), dt) @@ -715,7 +715,7 @@ def test_aware_datetime_in_utc(self): self.assertEqual(obj.dt, dt) if not isinstance(serializers.get_serializer('yaml'), serializers.BadSerializer): - data = serializers.serialize('yaml', [Event(dt=dt)]) + data = serializers.serialize('yaml', [Event(dt=dt)], default_flow_style=None) self.assert_yaml_contains_datetime(data, "2011-09-01 10:20:30+00:00") obj = next(serializers.deserialize('yaml', data)).object self.assertEqual(obj.dt.replace(tzinfo=UTC), dt) @@ -739,7 +739,7 @@ def test_aware_datetime_in_local_timezone(self): self.assertEqual(obj.dt, dt) if not isinstance(serializers.get_serializer('yaml'), serializers.BadSerializer): - data = serializers.serialize('yaml', [Event(dt=dt)]) + data = serializers.serialize('yaml', [Event(dt=dt)], default_flow_style=None) self.assert_yaml_contains_datetime(data, "2011-09-01 13:20:30+03:00") obj = next(serializers.deserialize('yaml', data)).object self.assertEqual(obj.dt.replace(tzinfo=UTC), dt) @@ -763,7 +763,7 @@ def test_aware_datetime_in_other_timezone(self): self.assertEqual(obj.dt, dt) if not isinstance(serializers.get_serializer('yaml'), serializers.BadSerializer): - data = serializers.serialize('yaml', [Event(dt=dt)]) + data = serializers.serialize('yaml', [Event(dt=dt)], default_flow_style=None) self.assert_yaml_contains_datetime(data, "2011-09-01 17:20:30+07:00") obj = next(serializers.deserialize('yaml', data)).object self.assertEqual(obj.dt.replace(tzinfo=UTC), dt) diff --git a/tests/urlpatterns/tests.py b/tests/urlpatterns/tests.py index 845d76c7af47a..f696cd531dc47 100644 --- a/tests/urlpatterns/tests.py +++ b/tests/urlpatterns/tests.py @@ -198,7 +198,7 @@ def raises_value_error(value): with self.assertRaises(Resolver404): resolve('/dynamic/abc/') - def test_resolve_type_error_propogates(self): + def test_resolve_type_error_propagates(self): @DynamicConverter.register_to_python def raises_type_error(value): raise TypeError('This type error propagates.') diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py index f902cffdace0a..72d4016d00f4b 100644 --- a/tests/urlpatterns_reverse/tests.py +++ b/tests/urlpatterns_reverse/tests.py @@ -999,8 +999,11 @@ def test_reverse_outer_in_response_middleware(self): Test reversing an URL from the *default* URLconf from inside a response middleware. """ - message = "Reverse for 'outer' not found." - with self.assertRaisesMessage(NoReverseMatch, message): + msg = ( + "Reverse for 'outer' not found. 'outer' is not a valid view " + "function or pattern name." + ) + with self.assertRaisesMessage(NoReverseMatch, msg): self.client.get('/second_test/') @override_settings( @@ -1072,7 +1075,8 @@ def test_default_handler(self): response = self.client.get('/test/') self.assertEqual(response.status_code, 404) - with self.assertRaisesMessage(ValueError, "I don't think I'm getting good"): + msg = "I don't think I'm getting good value for this view" + with self.assertRaisesMessage(ValueError, msg): self.client.get('/bad_view/') diff --git a/tests/utils_tests/test_autoreload.py b/tests/utils_tests/test_autoreload.py index 6aa272dd9a143..64c71bfe3f61f 100644 --- a/tests/utils_tests/test_autoreload.py +++ b/tests/utils_tests/test_autoreload.py @@ -6,6 +6,8 @@ import tempfile import threading import time +import types +import weakref import zipfile from importlib import import_module from pathlib import Path @@ -116,6 +118,37 @@ def test_bytecode_conversion_to_source(self): self.import_and_cleanup('test_compiled') self.assertFileFound(compiled_file) + def test_weakref_in_sys_module(self): + """iter_all_python_module_file() ignores weakref modules.""" + time_proxy = weakref.proxy(time) + sys.modules['time_proxy'] = time_proxy + self.addCleanup(lambda: sys.modules.pop('time_proxy', None)) + list(autoreload.iter_all_python_module_files()) # No crash. + + def test_module_without_spec(self): + module = types.ModuleType('test_module') + del module.__spec__ + self.assertEqual(autoreload.iter_modules_and_files((module,), frozenset()), frozenset()) + + def test_main_module_is_resolved(self): + main_module = sys.modules['__main__'] + self.assertFileFound(Path(main_module.__file__)) + + def test_main_module_without_file_is_not_resolved(self): + fake_main = types.ModuleType('__main__') + self.assertEqual(autoreload.iter_modules_and_files((fake_main,), frozenset()), frozenset()) + + def test_path_with_embedded_null_bytes(self): + for path in ( + 'embedded_null_byte\x00.py', + 'di\x00rectory/embedded_null_byte.py', + ): + with self.subTest(path=path): + self.assertEqual( + autoreload.iter_modules_and_files((), frozenset([path])), + frozenset(), + ) + class TestCommonRoots(SimpleTestCase): def test_common_roots(self): @@ -145,11 +178,11 @@ def test_sys_paths_with_directories(self): self.assertIn(self.file.parent, paths) def test_sys_paths_non_existing(self): - nonexistant_file = Path(self.directory.name) / 'does_not_exist' - with extend_sys_path(str(nonexistant_file)): + nonexistent_file = Path(self.directory.name) / 'does_not_exist' + with extend_sys_path(str(nonexistent_file)): paths = list(autoreload.sys_path_directories()) - self.assertNotIn(nonexistant_file, paths) - self.assertNotIn(nonexistant_file.parent, paths) + self.assertNotIn(nonexistent_file, paths) + self.assertNotIn(nonexistent_file.parent, paths) def test_sys_paths_absolute(self): paths = list(autoreload.sys_path_directories()) @@ -239,7 +272,7 @@ def test_starts_thread_with_args(self, mocked_check_errors, mocked_thread): self.assertEqual(mocked_thread.call_count, 1) self.assertEqual( mocked_thread.call_args[1], - {'target': fake_main_func, 'args': (123,), 'kwargs': {'abc': 123}} + {'target': fake_main_func, 'args': (123,), 'kwargs': {'abc': 123}, 'name': 'django-main-thread'} ) self.assertSequenceEqual(fake_thread.setDaemon.call_args[0], [True]) self.assertTrue(fake_thread.start.called) @@ -272,9 +305,39 @@ class MyException(Exception): exc_info = sys.exc_info() with mock.patch('django.utils.autoreload._exception', exc_info): - with self.assertRaises(MyException, msg='Test Message'): + with self.assertRaisesMessage(MyException, 'Test Message'): + autoreload.raise_last_exception() + + def test_raises_custom_exception(self): + class MyException(Exception): + def __init__(self, msg, extra_context): + super().__init__(msg) + self.extra_context = extra_context + # Create an exception. + try: + raise MyException('Test Message', 'extra context') + except MyException: + exc_info = sys.exc_info() + + with mock.patch('django.utils.autoreload._exception', exc_info): + with self.assertRaisesMessage(MyException, 'Test Message'): autoreload.raise_last_exception() + def test_raises_exception_with_context(self): + try: + raise Exception(2) + except Exception as e: + try: + raise Exception(1) from e + except Exception: + exc_info = sys.exc_info() + + with mock.patch('django.utils.autoreload._exception', exc_info): + with self.assertRaises(Exception) as cm: + autoreload.raise_last_exception() + self.assertEqual(cm.exception.args[0], 1) + self.assertEqual(cm.exception.__cause__.args[0], 2) + class RestartWithReloaderTests(SimpleTestCase): executable = '/usr/bin/python' @@ -317,7 +380,7 @@ def setUp(self): self._tempdir = tempfile.TemporaryDirectory() self.tempdir = Path(self._tempdir.name).resolve().absolute() self.existing_file = self.ensure_file(self.tempdir / 'test.py') - self.nonexistant_file = (self.tempdir / 'does_not_exist.py').absolute() + self.nonexistent_file = (self.tempdir / 'does_not_exist.py').absolute() self.reloader = self.RELOADER_CLS() def tearDown(self): @@ -360,26 +423,6 @@ def test_file(self, mocked_modules, notify_mock): self.assertEqual(notify_mock.call_count, 1) self.assertCountEqual(notify_mock.call_args[0], [self.existing_file]) - @mock.patch('django.utils.autoreload.BaseReloader.notify_file_changed') - @mock.patch('django.utils.autoreload.iter_all_python_module_files', return_value=frozenset()) - def test_nonexistant_file(self, mocked_modules, notify_mock): - self.reloader.watch_file(self.nonexistant_file) - with self.tick_twice(): - self.ensure_file(self.nonexistant_file) - self.assertEqual(notify_mock.call_count, 1) - self.assertCountEqual(notify_mock.call_args[0], [self.nonexistant_file]) - - @mock.patch('django.utils.autoreload.BaseReloader.notify_file_changed') - @mock.patch('django.utils.autoreload.iter_all_python_module_files', return_value=frozenset()) - def test_nonexistant_file_in_non_existing_directory(self, mocked_modules, notify_mock): - non_existing_directory = self.tempdir / 'non_existing_dir' - nonexistant_file = non_existing_directory / 'test' - self.reloader.watch_file(nonexistant_file) - with self.tick_twice(): - self.ensure_file(nonexistant_file) - self.assertEqual(notify_mock.call_count, 1) - self.assertCountEqual(notify_mock.call_args[0], [nonexistant_file]) - @mock.patch('django.utils.autoreload.BaseReloader.notify_file_changed') @mock.patch('django.utils.autoreload.iter_all_python_module_files', return_value=frozenset()) def test_glob(self, mocked_modules, notify_mock): @@ -391,18 +434,6 @@ def test_glob(self, mocked_modules, notify_mock): self.assertEqual(notify_mock.call_count, 1) self.assertCountEqual(notify_mock.call_args[0], [self.existing_file]) - @mock.patch('django.utils.autoreload.BaseReloader.notify_file_changed') - @mock.patch('django.utils.autoreload.iter_all_python_module_files', return_value=frozenset()) - def test_glob_non_existing_directory(self, mocked_modules, notify_mock): - non_existing_directory = self.tempdir / 'does_not_exist' - nonexistant_file = non_existing_directory / 'test.py' - self.reloader.watch_dir(non_existing_directory, '*.py') - with self.tick_twice(): - self.ensure_file(nonexistant_file) - self.set_mtime(nonexistant_file, time.time()) - self.assertEqual(notify_mock.call_count, 1) - self.assertCountEqual(notify_mock.call_args[0], [nonexistant_file]) - @mock.patch('django.utils.autoreload.BaseReloader.notify_file_changed') @mock.patch('django.utils.autoreload.iter_all_python_module_files', return_value=frozenset()) def test_multiple_globs(self, mocked_modules, notify_mock): @@ -484,6 +515,12 @@ def test_watch_with_single_file(self): watched_files = list(self.reloader.watched_files()) self.assertIn(self.existing_file, watched_files) + def test_watch_dir_with_unresolvable_path(self): + path = Path('unresolvable_directory') + with mock.patch.object(Path, 'absolute', side_effect=FileNotFoundError): + self.reloader.watch_dir(path, '**/*.mo') + self.assertEqual(list(self.reloader.directory_globs), []) + def test_watch_with_glob(self): self.reloader.watch_dir(self.tempdir, '*.py') watched_files = list(self.reloader.watched_files()) @@ -542,6 +579,11 @@ def skip_unless_watchman_available(): class WatchmanReloaderTests(ReloaderTests, IntegrationTests): RELOADER_CLS = autoreload.WatchmanReloader + def setUp(self): + super().setUp() + # Shorten the timeout to speed up tests. + self.reloader.client_timeout = 0.1 + def test_watch_glob_ignores_non_existing_directories_two_levels(self): with mock.patch.object(self.reloader, '_subscribe') as mocked_subscribe: self.reloader._watch_glob(self.tempdir / 'does_not_exist' / 'more', ['*']) @@ -622,6 +664,10 @@ class TestException(Exception): self.reloader.update_watches() self.assertIsInstance(mocked_server_status.call_args[0][0], TestException) + @mock.patch.dict(os.environ, {'DJANGO_WATCHMAN_TIMEOUT': '10'}) + def test_setting_timeout_from_environment_variable(self): + self.assertEqual(self.RELOADER_CLS.client_timeout, 10) + class StatReloaderTests(ReloaderTests, IntegrationTests): RELOADER_CLS = autoreload.StatReloader @@ -631,8 +677,18 @@ def setUp(self): # Shorten the sleep time to speed up tests. self.reloader.SLEEP_TIME = 0.01 + @mock.patch('django.utils.autoreload.StatReloader.notify_file_changed') + def test_tick_does_not_trigger_twice(self, mock_notify_file_changed): + with mock.patch.object(self.reloader, 'watched_files', return_value=[self.existing_file]): + ticker = self.reloader.tick() + next(ticker) + self.increment_mtime(self.existing_file) + next(ticker) + next(ticker) + self.assertEqual(mock_notify_file_changed.call_count, 1) + def test_snapshot_files_ignores_missing_files(self): - with mock.patch.object(self.reloader, 'watched_files', return_value=[self.nonexistant_file]): + with mock.patch.object(self.reloader, 'watched_files', return_value=[self.nonexistent_file]): self.assertEqual(dict(self.reloader.snapshot_files()), {}) def test_snapshot_files_updates(self): @@ -643,28 +699,8 @@ def test_snapshot_files_updates(self): snapshot2 = dict(self.reloader.snapshot_files()) self.assertNotEqual(snapshot1[self.existing_file], snapshot2[self.existing_file]) - def test_does_not_fire_without_changes(self): - with mock.patch.object(self.reloader, 'watched_files', return_value=[self.existing_file]), \ - mock.patch.object(self.reloader, 'notify_file_changed') as notifier: - mtime = self.existing_file.stat().st_mtime - initial_snapshot = {self.existing_file: mtime} - second_snapshot = self.reloader.loop_files(initial_snapshot, time.time()) - self.assertEqual(second_snapshot, {}) - notifier.assert_not_called() - - def test_fires_when_created(self): - with mock.patch.object(self.reloader, 'watched_files', return_value=[self.nonexistant_file]), \ - mock.patch.object(self.reloader, 'notify_file_changed') as notifier: - self.nonexistant_file.touch() - mtime = self.nonexistant_file.stat().st_mtime - second_snapshot = self.reloader.loop_files({}, mtime - 1) - self.assertCountEqual(second_snapshot.keys(), [self.nonexistant_file]) - notifier.assert_called_once_with(self.nonexistant_file) - - def test_fires_with_changes(self): - with mock.patch.object(self.reloader, 'watched_files', return_value=[self.existing_file]), \ - mock.patch.object(self.reloader, 'notify_file_changed') as notifier: - initial_snapshot = {self.existing_file: 1} - second_snapshot = self.reloader.loop_files(initial_snapshot, time.time()) - notifier.assert_called_once_with(self.existing_file) - self.assertCountEqual(second_snapshot.keys(), [self.existing_file]) + def test_snapshot_files_with_duplicates(self): + with mock.patch.object(self.reloader, 'watched_files', return_value=[self.existing_file, self.existing_file]): + snapshot = list(self.reloader.snapshot_files()) + self.assertEqual(len(snapshot), 1) + self.assertEqual(snapshot[0][0], self.existing_file) diff --git a/tests/utils_tests/test_http.py b/tests/utils_tests/test_http.py index aca825ef1f41a..1f1cc8cfe3afc 100644 --- a/tests/utils_tests/test_http.py +++ b/tests/utils_tests/test_http.py @@ -297,8 +297,8 @@ def test_parsing_asctime(self): self.assertEqual(datetime.utcfromtimestamp(parsed), datetime(1994, 11, 6, 8, 49, 37)) def test_parsing_year_less_than_70(self): - parsed = parse_http_date('Sun Nov 6 08:49:37 0050') - self.assertEqual(datetime.utcfromtimestamp(parsed), datetime(2050, 11, 6, 8, 49, 37)) + parsed = parse_http_date('Sun Nov 6 08:49:37 0037') + self.assertEqual(datetime.utcfromtimestamp(parsed), datetime(2037, 11, 6, 8, 49, 37)) class EscapeLeadingSlashesTests(unittest.TestCase): diff --git a/tests/utils_tests/test_numberformat.py b/tests/utils_tests/test_numberformat.py index b78b37551dfe9..3d656025ab581 100644 --- a/tests/utils_tests/test_numberformat.py +++ b/tests/utils_tests/test_numberformat.py @@ -80,6 +80,25 @@ def test_decimal_numbers(self): ) self.assertEqual(nformat(Decimal('3.'), '.'), '3') self.assertEqual(nformat(Decimal('3.0'), '.'), '3.0') + # Very large & small numbers. + tests = [ + ('9e9999', None, '9e+9999'), + ('9e9999', 3, '9.000e+9999'), + ('9e201', None, '9e+201'), + ('9e200', None, '9e+200'), + ('1.2345e999', 2, '1.23e+999'), + ('9e-999', None, '9e-999'), + ('1e-7', 8, '0.00000010'), + ('1e-8', 8, '0.00000001'), + ('1e-9', 8, '0.00000000'), + ('1e-10', 8, '0.00000000'), + ('1e-11', 8, '0.00000000'), + ('1' + ('0' * 300), 3, '1.000e+300'), + ('0.{}1234'.format('0' * 299), 3, '1.234e-300'), + ] + for value, decimal_pos, expected_value in tests: + with self.subTest(value=value): + self.assertEqual(nformat(Decimal(value), '.', decimal_pos), expected_value) def test_decimal_subclass(self): class EuroDecimal(Decimal): diff --git a/tests/utils_tests/test_topological_sort.py b/tests/utils_tests/test_topological_sort.py new file mode 100644 index 0000000000000..ed8f9fd5a620a --- /dev/null +++ b/tests/utils_tests/test_topological_sort.py @@ -0,0 +1,24 @@ +from django.test import SimpleTestCase +from django.utils.topological_sort import ( + CyclicDependencyError, stable_topological_sort, topological_sort_as_sets, +) + + +class TopologicalSortTests(SimpleTestCase): + + def test_basic(self): + dependency_graph = { + 1: {2, 3}, + 2: set(), + 3: set(), + 4: {5, 6}, + 5: set(), + 6: {5}, + } + self.assertEqual(list(topological_sort_as_sets(dependency_graph)), [{2, 3, 5}, {1, 6}, {4}]) + self.assertEqual(stable_topological_sort([1, 2, 3, 4, 5, 6], dependency_graph), [2, 3, 5, 1, 6, 4]) + + def test_cyclic_dependency(self): + msg = 'Cyclic dependency in graph: ' + with self.assertRaisesMessage(CyclicDependencyError, msg): + list(topological_sort_as_sets({1: {2}, 2: {1}})) diff --git a/tests/view_tests/locale/de/LC_MESSAGES/djangojs.mo b/tests/view_tests/locale/de/LC_MESSAGES/djangojs.mo index 34ba691029be7..4ff19729280db 100644 Binary files a/tests/view_tests/locale/de/LC_MESSAGES/djangojs.mo and b/tests/view_tests/locale/de/LC_MESSAGES/djangojs.mo differ diff --git a/tests/view_tests/locale/de/LC_MESSAGES/djangojs.po b/tests/view_tests/locale/de/LC_MESSAGES/djangojs.po index 03036e48ffa17..ed6ed226d29f2 100644 --- a/tests/view_tests/locale/de/LC_MESSAGES/djangojs.po +++ b/tests/view_tests/locale/de/LC_MESSAGES/djangojs.po @@ -39,3 +39,6 @@ msgid "%s result" msgid_plural "%s results" msgstr[0] "%s Resultat" msgstr[1] "%s Resultate" + +msgid "Image" +msgstr "Bild" diff --git a/tests/view_tests/templates/jsi18n.html b/tests/view_tests/templates/jsi18n.html index df1c4b400c7a1..f0bd17c199cf9 100644 --- a/tests/view_tests/templates/jsi18n.html +++ b/tests/view_tests/templates/jsi18n.html @@ -30,6 +30,13 @@

+

+ + +

+