diff --git a/AUTHORS b/AUTHORS index cc8b90bd75..b55ca93762 100644 --- a/AUTHORS +++ b/AUTHORS @@ -76,6 +76,7 @@ answer newbie questions, and generally made Django that much better: Chris Chamberlin Amit Chakradeo ChaosKCW + Sengtha Chay ivan.chelubeev@gmail.com Bryan Chow Michal Chruszcz @@ -113,6 +114,7 @@ answer newbie questions, and generally made Django that much better: Ludvig Ericson Dirk Eschler Marc Fargas + Szilveszter Farkas favo@exoweb.net Bill Fenner Stefane Fermgier @@ -123,8 +125,10 @@ answer newbie questions, and generally made Django that much better: gandalf@owca.info Marc Garcia Baishampayan Ghose + Dimitris Glezos glin@seznam.cz martin.glueck@gmail.com + Artyom Gnilov GomoX Mario Gonzalez pradeep.gowda@gmail.com @@ -146,6 +150,7 @@ answer newbie questions, and generally made Django that much better: Sung-Jin Hong Richard House Robert Rock Howard + Rob Hudson Jason Huggins Hyun Mi Ae Tom Insam @@ -158,6 +163,7 @@ answer newbie questions, and generally made Django that much better: jpellerin@gmail.com junzhang.jn@gmail.com Antti Kaihola + Nagy Károly Ben Dean Kawamura Ian G. Kelly Ben Khoo @@ -179,6 +185,7 @@ answer newbie questions, and generally made Django that much better: lakin.wecker@gmail.com Nick Lane Stuart Langridge + Paul Lanier Nicola Larosa Eugene Lazutkin Jeong-Min Lee @@ -194,6 +201,7 @@ answer newbie questions, and generally made Django that much better: Petr Marhoun masonsimon+django@gmail.com Manuzhai + Petr Marhoun Petar Marić Nuno Mariz Marijn Vriens @@ -232,6 +240,7 @@ answer newbie questions, and generally made Django that much better: phil@produxion.net phil.h.smith@gmail.com Gustavo Picon + pigletto Luke Plant plisk Daniel Poelzleithner @@ -239,16 +248,20 @@ answer newbie questions, and generally made Django that much better: Matthias Pronk Jyrki Pulliainen Johann Queuniet - J. Rademaker + Jan Rademaker Michael Radziej + Amit Ramon + Philippe Raoult Massimiliano Ravelli Brian Ray remco@diji.biz rhettg@gmail.com + Matt Riggott Henrique Romano Armin Ronacher Brian Rosner Oliver Rutherfurd + ryankanno Ivan Sagalaev (Maniac) Vinay Sajip David Schein @@ -259,8 +272,11 @@ answer newbie questions, and generally made Django that much better: Jozko Skrablin SmileyChris smurf@smurf.noris.de + Vsevolod Solovyov sopel + Leo Soto Wiliam Alves de Souza + Bjørn Stabell Georgi Stanojevski Vasiliy Stavenko Thomas Steinacher @@ -272,10 +288,13 @@ answer newbie questions, and generally made Django that much better: Swaroop C H Aaron Swartz Ville Säävuori + Tyler Tarabula Tyson Tate Frank Tegtmeyer thebjorn Zach Thompson + Michael Thornhill + Deepak Thukral tibimicu@gmax.net tobias@neuyork.de Tom Tobin @@ -288,10 +307,12 @@ answer newbie questions, and generally made Django that much better: Amit Upadhyay Geert Vanderkelen viestards.lists@gmail.com + George Vilches Vlado Milton Waddams wam-djangobug@wamber.net wangchun + Filip Wasilewski Dan Watson Chris Wesseling James Wheare diff --git a/django/conf/__init__.py b/django/conf/__init__.py index f28da2d764..f19e509ea3 100644 --- a/django/conf/__init__.py +++ b/django/conf/__init__.py @@ -112,6 +112,7 @@ class Settings(object): # Move the time zone info into os.environ. See ticket #2315 for why # we don't do this unconditionally (breaks Windows). os.environ['TZ'] = self.TIME_ZONE + time.tzset() def get_all_members(self): return dir(self) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index e11ea7531b..c8420f3307 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -51,6 +51,7 @@ LANGUAGES = ( ('fa', gettext_noop('Persian')), ('fi', gettext_noop('Finnish')), ('fr', gettext_noop('French')), + ('ga', gettext_noop('Gaeilge')), ('gl', gettext_noop('Galician')), ('hu', gettext_noop('Hungarian')), ('he', gettext_noop('Hebrew')), @@ -59,6 +60,7 @@ LANGUAGES = ( ('it', gettext_noop('Italian')), ('ja', gettext_noop('Japanese')), ('ko', gettext_noop('Korean')), + ('km', gettext_noop('Khmer')), ('kn', gettext_noop('Kannada')), ('lv', gettext_noop('Latvian')), ('mk', gettext_noop('Macedonian')), diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo index 82cd1bee4b..28bc60a758 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 451c60e2db..fe2836ff89 100644 --- a/django/conf/locale/ca/LC_MESSAGES/django.po +++ b/django/conf/locale/ca/LC_MESSAGES/django.po @@ -5,147 +5,99 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-06-25 17:31+0200\n" -"PO-Revision-Date: 2007-06-25 17:47+0200\n" -"Last-Translator: Marc Fargas \n" +"POT-Creation-Date: 2007-09-14 12:38+0200\n" +"PO-Revision-Date: 2007-09-14 14:21+0100\n" +"Last-Translator: Marc Garcia \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: template/defaultfilters.py:491 -msgid "yes,no,maybe" -msgstr "si,no,potser" - -#: template/defaultfilters.py:520 +#: db/models/manipulators.py:309 #, python-format -msgid "%(size)d byte" -msgid_plural "%(size)d bytes" -msgstr[0] "%(size)d byte" -msgstr[1] "%(size)d bytes" +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "Ja existeix un %(object)s del tipus %(type)s amb aquest %(field)s." -#: template/defaultfilters.py:522 +#: db/models/manipulators.py:310 +#: core/validators.py:283 +#: contrib/admin/views/main.py:342 +#: contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 +msgid "and" +msgstr "i" + +#: db/models/fields/related.py:55 #, python-format -msgid "%.1f KB" -msgstr "%.1f KB" +msgid "Please enter a valid %s." +msgstr "Si us plau, introdueixi un %s vàlid." -#: template/defaultfilters.py:524 +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "Separi múltiples IDs amb comes." + +#: db/models/fields/related.py:660 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Premi \"Control\" o \"Command\" en un Mac per escollir més d'un." + +#: db/models/fields/related.py:707 #, python-format -msgid "%.1f MB" -msgstr "%.1f MB" +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Si us plau, introdueixi els IDs de %(self)s vàlids. El valor %(value)r és invàlid." +msgstr[1] "Si us plau, introdueixi IDs de %(self)s vàlids. Els valors %(value)r són invàlids." -#: template/defaultfilters.py:525 +#: db/models/fields/__init__.py:52 #, python-format -msgid "%.1f GB" -msgstr "%.1f GB" +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "Ja existeix %(optname)s amb auqest %(fieldname)s." -#: newforms/models.py:172 newforms/fields.py:432 -msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "" -"Esculli una opció vàlida; Aquesta opció no és una de les opcions disponibles." - -#: newforms/models.py:185 newforms/fields.py:87 newforms/fields.py:444 -#: newforms/fields.py:522 newforms/fields.py:533 oldforms/__init__.py:357 -#: db/models/fields/__init__.py:126 db/models/fields/__init__.py:283 -#: db/models/fields/__init__.py:680 db/models/fields/__init__.py:691 +#: db/models/fields/__init__.py:159 +#: db/models/fields/__init__.py:316 +#: db/models/fields/__init__.py:724 +#: db/models/fields/__init__.py:735 +#: oldforms/__init__.py:373 +#: newforms/fields.py:93 +#: newforms/fields.py:509 +#: newforms/fields.py:585 +#: newforms/fields.py:596 +#: newforms/models.py:193 msgid "This field is required." msgstr "Aquest camp és obligatori." -#: newforms/models.py:189 newforms/fields.py:448 newforms/fields.py:526 -msgid "Enter a list of values." -msgstr "Introdueixi una llista de valors." +#: db/models/fields/__init__.py:414 +msgid "This value must be an integer." +msgstr "Aquest valor ha de ser un enter." -#: newforms/models.py:195 newforms/fields.py:457 -#, python-format -msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Esculli una opció vàlida; %s' no és una de les opcions vàlides." +#: db/models/fields/__init__.py:449 +msgid "This value must be either True or False." +msgstr "Aquest valor ha de ser True (Veritat) o False (Fals)" -#: newforms/widgets.py:181 contrib/admin/filterspecs.py:150 -#: oldforms/__init__.py:577 -msgid "Unknown" -msgstr "Desconegut" +#: db/models/fields/__init__.py:470 +msgid "This field cannot be null." +msgstr "Aquest camp no pot ser null (estar buit)." -#: newforms/widgets.py:181 contrib/admin/filterspecs.py:143 -#: oldforms/__init__.py:577 -msgid "Yes" -msgstr "Si" +#: db/models/fields/__init__.py:504 +#: core/validators.py:156 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD." -#: newforms/widgets.py:181 contrib/admin/filterspecs.py:143 -#: oldforms/__init__.py:577 -msgid "No" -msgstr "No" +#: db/models/fields/__init__.py:573 +#: core/validators.py:165 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Introdueixi un data/hora vàlida en format YYYY-MM-DD HH:MM." -#: newforms/fields.py:110 newforms/fields.py:324 -#, python-format -msgid "Ensure this value has at most %d characters." -msgstr "Asseguris de que el seu texte té com a màxim %d caracters." +#: db/models/fields/__init__.py:634 +msgid "This value must be a decimal number." +msgstr "Aquest valor ha de ser un número decimal." -#: newforms/fields.py:112 newforms/fields.py:326 -#, python-format -msgid "Ensure this value has at least %d characters." -msgstr "Asseguris de que el seu texte té almenys %d caracters." +#: db/models/fields/__init__.py:744 +msgid "Enter a valid filename." +msgstr "Introdueixi un nom de fitxer vàlid." -#: newforms/fields.py:135 core/validators.py:121 -msgid "Enter a whole number." -msgstr "Introdueixi un número sencer." - -#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 -#, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Aquest valor ha de ser menor o igual a %s." - -#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Asseguris de que aquest valor sigui superior o igual a %s." - -#: newforms/fields.py:158 newforms/fields.py:186 -msgid "Enter a number." -msgstr "Introdueixi un número." - -#: newforms/fields.py:196 -#, python-format -msgid "Ensure that there are no more than %s digits in total." -msgstr "Asseguris de que no hi ha més de %s dígits en total." - -#: newforms/fields.py:198 -#, python-format -msgid "Ensure that there are no more than %s decimal places." -msgstr "Asseguris de que no hi ha més de %s decimals." - -#: newforms/fields.py:200 -#, python-format -msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Asseguris de que no hia ha més de %s dígits decimals." - -#: newforms/fields.py:233 newforms/fields.py:566 -msgid "Enter a valid date." -msgstr "Introdueixi una data vàlida." - -#: newforms/fields.py:260 newforms/fields.py:568 -msgid "Enter a valid time." -msgstr "Introdueixi una hora vàlida." - -#: newforms/fields.py:296 -msgid "Enter a valid date/time." -msgstr "Introdueixi una data/hora vàlides." - -#: newforms/fields.py:310 -msgid "Enter a valid value." -msgstr "Introdueixi un valor vàlid." - -#: newforms/fields.py:339 core/validators.py:163 -msgid "Enter a valid e-mail address." -msgstr "Introdueixi una adreça de correu vàlida." - -#: newforms/fields.py:357 newforms/fields.py:379 -msgid "Enter a valid URL." -msgstr "Introdueixi una URL vàlida." - -#: newforms/fields.py:381 -msgid "This URL appears to be a broken link." -msgstr "Aquesta URL sembla ser un enllaç trencat." +#: db/models/fields/__init__.py:887 +msgid "This value must be either None, True or False." +msgstr "Aquest valor ha de ser None (Cap), True (Veritat) o False (Fals)" #: conf/global_settings.py:39 msgid "Arabic" @@ -220,102 +172,1561 @@ msgid "Hebrew" msgstr "Hebreu" #: conf/global_settings.py:57 +msgid "Croatian" +msgstr "Croat" + +#: conf/global_settings.py:58 msgid "Icelandic" msgstr "Islandès" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Italian" msgstr "Italià" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Japanese" msgstr "Japonès" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Korean" msgstr "Coreà" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 +msgid "Khmer" +msgstr "Khmer" + +#: conf/global_settings.py:63 msgid "Kannada" msgstr "Canès" -#: conf/global_settings.py:62 +#: conf/global_settings.py:64 msgid "Latvian" msgstr "Letó" -#: conf/global_settings.py:63 +#: conf/global_settings.py:65 msgid "Macedonian" msgstr "Macedoni" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Dutch" msgstr "Holandès" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Norwegian" msgstr "Norueg" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Polish" msgstr "Polac" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Portugese" msgstr "Portuguès" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Brazilian" msgstr "Brasileny" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Romanian" msgstr "Rumanès" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Russian" msgstr "Rús" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 msgid "Slovak" msgstr "Eslovac" -#: conf/global_settings.py:72 +#: conf/global_settings.py:74 msgid "Slovenian" msgstr "Esloveni" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Serbian" msgstr "Serbi" -#: conf/global_settings.py:74 +#: conf/global_settings.py:76 msgid "Swedish" msgstr "Suec" -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 msgid "Tamil" msgstr "Tàmil" -#: conf/global_settings.py:76 +#: conf/global_settings.py:78 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Turkish" msgstr "Turc" -#: conf/global_settings.py:78 +#: conf/global_settings.py:80 msgid "Ukrainian" msgstr "Ucranià" -#: conf/global_settings.py:79 +#: conf/global_settings.py:81 msgid "Simplified Chinese" msgstr "Xinés simplificat" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Traditional Chinese" msgstr "Xinés tradicional" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Aquest valor ha de contenir només números, guions, i guions baixos." + +#: core/validators.py:76 +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "Aquest valor ha de contenir només lletres, números, guions, guions baixos, i barres (/)." + +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Aquest valor ha de contenir només lletres, números, guions o guions baixos" + +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "No es permeten majúscules aquí." + +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "No es permeten minúscules aquí." + +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "Introdueixi només dígits separats per comes." + +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Introdueixi adreces de correu electrònic vàlides separades per comes." + +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "Per favor introdueixi una adreça IP vàlida." + +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "No s'admeten valor buits." + +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "No s'admeten caracters no numèrics." + +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "Aquest valor no pot contenir només dígits." + +#: core/validators.py:128 +#: newforms/fields.py:149 +msgid "Enter a whole number." +msgstr "Introdueixi un número sencer." + +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "Només s'admeted caracters alfabètics aquí." + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "L'any ha de ser posterior al 1900" + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "Data invàlida: %s" + +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "Introdueixi una hora vàlida en el format HH:MM." + +#: core/validators.py:170 +#: newforms/fields.py:343 +msgid "Enter a valid e-mail address." +msgstr "Introdueixi una adreça de correu vàlida." + +#: core/validators.py:182 +#: core/validators.py:469 +#: oldforms/__init__.py:686 +#: newforms/fields.py:377 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari." + +#: core/validators.py:193 +#: newforms/fields.py:405 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Envii una imatge vàilda. El fitxer que ha enviat no era una imatge o estaba corrupte." + +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "La URL %s no apunta una imatge vàlida." + +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "El números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no és vàlid." + +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "La URL %s no apunta a un video QuickTime vàlid." + +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "Es precisa d'una URL vàlida." + +#: core/validators.py:230 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Es precisa HTML vàlid. Els errors específics sòn:\n" +"%s" + +#: core/validators.py:237 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML incorrectament formatejat: %s" + +#: core/validators.py:254 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL invalida: %s" + +#: core/validators.py:259 +#: core/validators.py:261 +#, python-format +msgid "The URL %s is a broken link." +msgstr "La URL %sés un enllaç trencat." + +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Introdueixi una abreviatura vàlida d'estat d'els E.U.A.." + +#: core/validators.py:281 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Vigili la seva boca! Aquí no admetem la paraula: %s." +msgstr[1] "Vigili la seva boca! Aquí no admetem les paraules: %s." + +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Aquest camp ha de concordar amb el camp '%s'." + +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "Si us plau, introdueixi alguna cosa alemnys en un camp." + +#: core/validators.py:316 +#: core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "Si us plau, ompli els dos camps o deixi'ls tots dos en blanc." + +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "S'ha de proporcionar aquest camps si %(field)s és %(value)s" + +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "S'ha de proporcionar aquest camps si %(field)s no és %(value)s" + +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "No s'admeten valors duplicats." + +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Aquest valor ha de estar comprés entre %(lower)s i %(upper)s." + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "Aquest valor ha de ser com a mínim %s." + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "Aquest valor ha de ser com a màxim %s." + +#: core/validators.py:422 +#, python-format +msgid "This value must be a power of %s." +msgstr "Aquest valor ha de ser una potència de %s." + +#: core/validators.py:432 +msgid "Please enter a valid decimal number." +msgstr "Si us plau, introdueixi un número decimal vàlid." + +#: core/validators.py:439 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s digit." +msgstr[1] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s digits." + +#: core/validators.py:442 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Si us plau, introdueixi un número decimal vàlid que la seva part sencera sigui de com a màxim %s digit." +msgstr[1] "Si us plau, introdueixi un número decimal vàlid que la seva part sencera sigui de com a màxim %s digits." + +#: core/validators.py:445 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s posició decimal." +msgstr[1] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s posicions decimals." + +#: core/validators.py:453 +msgid "Please enter a valid floating point number." +msgstr "Si us plau, introdueixi un número amb punt de coma flotant vàlid." + +#: core/validators.py:462 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Asseguris de que el fitxer que ha enviat té, com a mínim, %s bytes." + +#: core/validators.py:463 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Asseguris de que el fitxer que ha enviat té, com a màxim %s bytes." + +#: core/validators.py:480 +msgid "The format for this field is wrong." +msgstr "El format per aquest camp és incorrecte." + +#: core/validators.py:495 +msgid "This field is invalid." +msgstr "El camp no és vàlid." + +#: core/validators.py:531 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "No s'ha pogut obtenir res de %s." + +#: core/validators.py:534 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que no és vàlida." + +#: core/validators.py:567 +#, python-format +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "Si us plau, tanqui l'etiqueta %(tag)s des de la línia %(line)s. (La línia comença amb \"%(start)s\".)" + +#: core/validators.py:571 +#, python-format +msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" +msgstr "Part del text que comença en la línia %(line)s no està permès en aquest context. (La línia comença per \"%(start)s\".)" + +#: core/validators.py:576 +#, python-format +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "El \"%(attr)s\" de la línia %(line)s no és un atribut vàlid. (La línia comença per \"%(start)s\".)" + +#: core/validators.py:581 +#, python-format +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "La \"<%(tag)s>\" de la línia %(line)s no és una etiqueta vàlida. (La línia comença per \"%(start)s\".)" + +#: core/validators.py:585 +#, python-format +msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" +msgstr "Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La línia comença per \"%(start)s\".)" + +#: core/validators.py:590 +#, python-format +msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" +msgstr "L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La línia comença per \"%(start)s\".)" + +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Els dos camps de contrasenya no coincideixen." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Ja existeix un usuari amb aquest nom." + +#: contrib/auth/forms.py:53 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes són necessàries per iniciar la sessió." + +#: contrib/auth/forms.py:60 +#: contrib/admin/views/decorators.py:10 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "Si us plau, introdueixi un nom d'usuari i contrasenya vàlids. Tingui en compte que tots dos camps son sensibles a majúscules i minúscules." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Aquest compte està inactiu" + +#: contrib/auth/forms.py:84 +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "Aquesta adreça de correu no té associada cap compte d'usuari. Està segur de que s'ha registrat?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Els dos camps de nova contrasenya no coincideixen." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "La seva antiga contrasenya no és correcte. Si el plau, introdueixi-la de nou." + +#: contrib/auth/models.py:53 +#: contrib/auth/models.py:73 +msgid "name" +msgstr "nom" + +#: contrib/auth/models.py:55 +msgid "codename" +msgstr "nom en clau" + +#: contrib/auth/models.py:58 +msgid "permission" +msgstr "permís" + +#: contrib/auth/models.py:59 +#: contrib/auth/models.py:74 +msgid "permissions" +msgstr "permissos" + +#: contrib/auth/models.py:77 +msgid "group" +msgstr "grup" + +#: contrib/auth/models.py:78 +#: contrib/auth/models.py:121 +msgid "groups" +msgstr "grups" + +#: contrib/auth/models.py:111 +msgid "username" +msgstr "nom d'usuari" + +#: contrib/auth/models.py:111 +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." +msgstr "Requerit. 30 o menys caracters. Només caracters alfanumèrics (lletres, dígits i guions baixos)." + +#: contrib/auth/models.py:112 +msgid "first name" +msgstr "nom propi" + +#: contrib/auth/models.py:113 +msgid "last name" +msgstr "cognoms" + +#: contrib/auth/models.py:114 +msgid "e-mail address" +msgstr "adreça de correu electrònic" + +#: contrib/auth/models.py:115 +msgid "password" +msgstr "contrasenya" + +#: contrib/auth/models.py:115 +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "Utilitzi '[algo]$[salt]$[hexdigest]' o el formulari de canvi de contrasenya." + +#: contrib/auth/models.py:116 +msgid "staff status" +msgstr "és membre del personal" + +#: contrib/auth/models.py:116 +msgid "Designates whether the user can log into this admin site." +msgstr "Indica si l'usuari pot entrar en el lloc administratiu." + +#: contrib/auth/models.py:117 +msgid "active" +msgstr "actiu" + +#: contrib/auth/models.py:117 +msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." +msgstr "Designa si aquest usuari pot iniciar sessió a la interfície administrativa Djano. Deselecciona-ho enlloc de esborrar comptes d'usuari." + +#: contrib/auth/models.py:118 +msgid "superuser status" +msgstr "estat de superusuari" + +#: contrib/auth/models.py:118 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "Designa que aquest usuari té tots els permisos sense assignar-los explícitament." + +#: contrib/auth/models.py:119 +msgid "last login" +msgstr "últim inici de sessió" + +#: contrib/auth/models.py:120 +msgid "date joined" +msgstr "data de creació" + +#: contrib/auth/models.py:122 +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els permissos dels grups dels que sigui membre." + +#: contrib/auth/models.py:123 +msgid "user permissions" +msgstr "permissos de l'usuari" + +#: contrib/auth/models.py:127 +msgid "user" +msgstr "usuari" + +#: contrib/auth/models.py:128 +msgid "users" +msgstr "usuaris" + +#: contrib/auth/models.py:134 +msgid "Personal info" +msgstr "Informaciò personal" + +#: contrib/auth/models.py:135 +msgid "Permissions" +msgstr "permissos" + +#: contrib/auth/models.py:136 +msgid "Important dates" +msgstr "Dates importants" + +#: contrib/auth/models.py:137 +msgid "Groups" +msgstr "Grups" + +#: contrib/auth/models.py:288 +msgid "message" +msgstr "missatge" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Sessió finalitzada" + +#: contrib/admin/models.py:17 +msgid "action time" +msgstr "moment de l'acció" + +#: contrib/admin/models.py:20 +msgid "object id" +msgstr "id del objecte" + +#: contrib/admin/models.py:21 +msgid "object repr" +msgstr "'repr' de l'objecte" + +#: contrib/admin/models.py:22 +msgid "action flag" +msgstr "marca de l'acció" + +#: contrib/admin/models.py:23 +msgid "change message" +msgstr "missatge del canvi" + +#: contrib/admin/models.py:26 +msgid "log entry" +msgstr "entrada del registre" + +#: contrib/admin/models.py:27 +msgid "log entries" +msgstr "entrades del registre" + +#: contrib/admin/filterspecs.py:42 +#, python-format +msgid "" +"

By %s:

\n" +"
    \n" +msgstr "" +"

    Per %s:

    \n" +"
      \n" + +#: contrib/admin/filterspecs.py:72 +#: contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 +#: contrib/admin/filterspecs.py:171 +msgid "All" +msgstr "Tots" + +#: contrib/admin/filterspecs.py:111 +msgid "Any date" +msgstr "Qualsevol data" + +#: contrib/admin/filterspecs.py:112 +msgid "Today" +msgstr "Avui" + +#: contrib/admin/filterspecs.py:115 +msgid "Past 7 days" +msgstr "Últims 7 dies" + +#: contrib/admin/filterspecs.py:117 +msgid "This month" +msgstr "Aquest mes" + +#: contrib/admin/filterspecs.py:119 +msgid "This year" +msgstr "Aquest any" + +#: contrib/admin/filterspecs.py:145 +#: oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "Yes" +msgstr "Si" + +#: contrib/admin/filterspecs.py:145 +#: oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "No" +msgstr "No" + +#: contrib/admin/filterspecs.py:152 +#: oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "Unknown" +msgstr "Desconegut" + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Iniciar sessió" + +#: contrib/admin/views/decorators.py:62 +msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." +msgstr "Si us plau, identifiquis de nou doncs la seva sessió ha expirat. No es preocupi, el seu enviament està emmagatzemat." + +#: contrib/admin/views/decorators.py:69 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "Sembla ser que el seu navegador no està configurat per acceptar 'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta pàgina i provi-ho de nou. " + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Els noms d'usuari no poden contenir el caracter '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "La seva adreça de correu no és el seu nom d'usuari. Provi '%s' en tot cas." + +#: contrib/admin/views/main.py:230 +msgid "Site administration" +msgstr "Lloc administratiu" + +#: contrib/admin/views/main.py:264 +#: contrib/admin/views/auth.py:20 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "El/la %(name)s \"%(obj)s\".ha estat agregat/da amb èxit." + +#: contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 +#: contrib/admin/views/auth.py:25 +msgid "You may edit it again below." +msgstr "Pot editar-lo de nou abaix." + +#: contrib/admin/views/main.py:278 +#: contrib/admin/views/main.py:363 +#, python-format +msgid "You may add another %s below." +msgstr "Pot afegir un altre %s a baix." + +#: contrib/admin/views/main.py:296 +#, python-format +msgid "Add %s" +msgstr "Afegir %s" + +#: contrib/admin/views/main.py:342 +#, python-format +msgid "Added %s." +msgstr "Agregat %s." + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Changed %s." +msgstr "Modificat %s." + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Deleted %s." +msgstr "Eliminat %s." + +#: contrib/admin/views/main.py:349 +msgid "No fields changed." +msgstr "Cap camp canviat." + +#: contrib/admin/views/main.py:352 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "S'ha modificat amb èxist el/la %(name)s \"%(obj)s." + +#: contrib/admin/views/main.py:360 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "S'ha agregat amb èxit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix." + +#: contrib/admin/views/main.py:398 +#, python-format +msgid "Change %s" +msgstr "Modificar %s" + +#: contrib/admin/views/main.py:483 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Un o més %(fieldname)s en %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:488 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Un o més %(fieldname)s en %(name)s:" + +#: contrib/admin/views/main.py:520 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "El/la %(name)s \"%(obj)s\".ha estat eliminat amb èxit." + +#: contrib/admin/views/main.py:523 +msgid "Are you sure?" +msgstr "Està segur?" + +#: contrib/admin/views/main.py:545 +#, python-format +msgid "Change history: %s" +msgstr "Modificar històric: %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s" +msgstr "Seleccioni %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s to change" +msgstr "Seleccioni %s per modificar" + +#: contrib/admin/views/main.py:780 +msgid "Database error" +msgstr "Error de/en la base de dades" + +#: contrib/admin/views/doc.py:47 +#: contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 +msgid "tag:" +msgstr "etiqueta:" + +#: contrib/admin/views/doc.py:78 +#: contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 +msgid "filter:" +msgstr "filtre:" + +#: contrib/admin/views/doc.py:136 +#: contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 +msgid "view:" +msgstr "vista:" + +#: contrib/admin/views/doc.py:165 +#, python-format +msgid "App %r not found" +msgstr "La aplicació %r no s'ha pogut trobar" + +#: contrib/admin/views/doc.py:172 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "El model %(name)r no s'ha trobat en la aplicació %(label)r" + +#: contrib/admin/views/doc.py:184 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "el objecte relacionat `%(label)s.%(type)s`" + +#: contrib/admin/views/doc.py:184 +#: contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 +#: contrib/admin/views/doc.py:225 +msgid "model:" +msgstr "model:" + +#: contrib/admin/views/doc.py:215 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "objectes relacionats `%(label)s.%(name)s`" + +#: contrib/admin/views/doc.py:220 +#, python-format +msgid "all %s" +msgstr "tots %s" + +#: contrib/admin/views/doc.py:225 +#, python-format +msgid "number of %s" +msgstr "nombre de %s" + +#: contrib/admin/views/doc.py:230 +#, python-format +msgid "Fields on %s objects" +msgstr "Camps en objectes %s" + +#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 +#: contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:314 +msgid "Integer" +msgstr "Enter" + +#: contrib/admin/views/doc.py:293 +msgid "Boolean (Either True or False)" +msgstr "Booleà (Verdader o Fals)" + +#: contrib/admin/views/doc.py:294 +#: contrib/admin/views/doc.py:313 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Cadena (de fins a %(max_length)s)" + +#: contrib/admin/views/doc.py:295 +msgid "Comma-separated integers" +msgstr "Enters separats per comes" + +#: contrib/admin/views/doc.py:296 +msgid "Date (without time)" +msgstr "Data (sense hora)" + +#: contrib/admin/views/doc.py:297 +msgid "Date (with time)" +msgstr "Data (amb hora)" + +#: contrib/admin/views/doc.py:298 +msgid "Decimal number" +msgstr "Número decimal" + +#: contrib/admin/views/doc.py:299 +msgid "E-mail address" +msgstr "Adreça de correu electrònic" + +#: contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 +msgid "File path" +msgstr "Ruta del fitxer" + +#: contrib/admin/views/doc.py:302 +msgid "Floating point number" +msgstr "Número amb punt de coma flotant" + +#: contrib/admin/views/doc.py:306 +#: contrib/comments/models.py:85 +msgid "IP address" +msgstr "Adreça IP" + +#: contrib/admin/views/doc.py:308 +msgid "Boolean (Either True, False or None)" +msgstr "Booleà (Verdader, Fals o 'None' (cap))" + +#: contrib/admin/views/doc.py:309 +msgid "Relation to parent model" +msgstr "Relació amb el model pare" + +#: contrib/admin/views/doc.py:310 +msgid "Phone number" +msgstr "Número de telèfon" + +#: contrib/admin/views/doc.py:315 +msgid "Text" +msgstr "Texte" + +#: contrib/admin/views/doc.py:316 +msgid "Time" +msgstr "Hora" + +#: contrib/admin/views/doc.py:317 +#: contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:318 +msgid "U.S. state (two uppercase letters)" +msgstr "Estat dels E.U.A. (dos lletres majúscules)" + +#: contrib/admin/views/doc.py:319 +msgid "XML text" +msgstr "Texte XML" + +#: contrib/admin/views/doc.py:345 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s no sembla ser un objecte 'urlpattern'" + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Afegir usuari" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Canvi de clau exitós" + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Canviar clau: %s" + +#: contrib/admin/templatetags/admin_list.py:254 +msgid "All dates" +msgstr "Totes les dates" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Mostrar tots" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "Documentació" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "Canviar clau" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Finalitzar sessió" + +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Home" +msgstr "Inici" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Eliminar" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació d'objectes relacionats, però el seu compte no te permisos per a esborrar els tipus d'objecte següents:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, 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 "Està segur de voler esborrar els/les %(object_name)s \"%(escaped_object)s\"? S'esborraran els següents elements relacionats:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Si, estic segur" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "No s'ha pogut trobar la pàgina" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Ho sentim, però no s'ha pogut trobar la pàgina solicitada" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Afegir" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Històric" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Veure en el lloc" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Si us plau, corregeixi l'error mostrat abaix." +msgstr[1] "Si us plau, corregeixi els errors mostrats abaix." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Ordre" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Ordre:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "Per %(filter_title)s " + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Desar com a nou" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Desar i afegir-ne un de nou" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Desar i continuar editant" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Desar" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Afegir %(name)s" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Models disponibles en la aplicació %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Modificar" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "No té permís per editar res." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Accions recents" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Les meves accions" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Cap disponible" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Lloc administratiu de Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Adminsitració de Django" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Data/hora" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Usuari" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Acció" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "F j, Y, H:i " + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Aquest objecte no te historial de canvis. Probablement no va ser afegit utilitzant aquest lloc administratiu." + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Error del servidor" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Error del servidor (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Error del servidor (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Hi ha hagut un error. S'ha informat als administradors del lloc per correu electrònic y hauria d'arreglar-se en breu. Gràcies per la seva paciència." + +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "Alguna cosa està malament en la instal·lació de la teva base de dades. Assegurat de que s'han creat les taules, i de que la base de dades és llegible per l'usuari apropiat." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Cercar" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 resultat" +msgstr[1] "%(counter)s resultats" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s en total" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtre" + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Usuari:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Contrasenya:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Benvingut," + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "Primer, entri un usuari i una contrasenya. Després podrà editar més opcions del usuari." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Usuari" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "Contrasenya" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "Contrasenya (de nou)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "Introdueixi la mateixa contrasenya que a sobre, per a verificació." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Introdueixi una contrasenya per l'usuari %(username)s" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "'Bookmarklets'" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "'Bookmarklets' de documentació" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

      To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

      \n" +msgstr "" +"\n" +"

      Per a instalar 'bookmarklets', arrosegui l'enllaç a la seva barra de\n" +"marcadors, o faci click amb el botò dret en l'enllaç i afegeixi'l als marcadors.\n" +"Ara pot escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\n" +"Observi que alguns d'aquests 'bookmarklets' precisen que estigui veient\n" +"el lloc des de un ordinador senyalat com a \"intern\" (parli\n" +"amb el seu administrador de sistemes si no està segur de la condició del seu).

      \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Documentació d'aquesta pàgina" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "El porta des de qualsevol pàgina de la documentació a la vista que la genera." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Mostra el ID de l'objecte" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les pàgines que representen un únic objecte." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Editar aquest objecte (finestra actual)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "El porta a la pàgina d'administració de pàgines que representen un únic objecte." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Editar aquest objecte (nova finestra)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Com abans, però obre la pàgina d'administració en una nova finestra." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Data:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Hora:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Actualment:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modificar:" + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Restablir contrasenya" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." +msgstr "Ha oblidat la seva contrasenya? Introdueixi la seva adreça de correu electrònic i crearem una nova que li enviarem per correu." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Adreça de correu electrònic:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Restablir la meva contrasenya" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Està rebent aquest missatge degut a que va solicitar un restabliment de contrasenya." + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "del seu compte d'usuari a %(site_name)s." + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "La seva nova contrasenya és: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Sentis lliure de canviar-la en aquesta pàgina:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "El seu nom d'usuari, en cas d'haver-lo oblidat:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Gràcies per fer us del nostre lloc!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "L'equip de %(site_name)s" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Gràcies per emprar algun temps de cualitat amb el lloc web avui." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Iniciar sessió de nou" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Contrasenya restaber-ta amb èxit" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Li hem enviat una contrasenya nova a l'adreça de correu electrònic que ens ha indicat. L'hauria de rebre en breu." + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "Canvi de clau" + +#: contrib/admin/templates/registration/password_change_form.html:12 +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 "Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot seguit introdueixi la seva nova contrasenya dues vegades per verificar que l'ha escrit correctament." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Contrasenya antiga:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Contrasenya nova:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Confirmar contrasenya:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Canviar la meva clau:" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Canvi de clau exitò" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "La seva clau ha estat canviada." + +#: contrib/sites/models.py:33 +msgid "domain name" +msgstr "nom del domini" + +#: contrib/sites/models.py:34 +msgid "display name" +msgstr "nom per mostrar" + +#: contrib/sites/models.py:38 +msgid "site" +msgstr "lloc" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "llocs" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "rt" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "r" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "n" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "r" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milió" +msgstr[1] "%(value).1f milions" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f bilió" +msgstr[1] "%(value).1f bilions" + +#: contrib/humanize/templatetags/humanize.py:56 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f trilió" +msgstr[1] "%(value).1f trilions" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "one" +msgstr "un" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "two" +msgstr "dos" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "three" +msgstr "tres" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "four" +msgstr "cuatre" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "five" +msgstr "cinc" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "six" +msgstr "sis" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "seven" +msgstr "set" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "eight" +msgstr "vuit" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "nine" +msgstr "nou" + +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "avui" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "demà" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "ahir" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al final." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "tìtol" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contingut" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "habilitar comentaris" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nom de la plantilla" + +#: contrib/flatpages/models.py:13 +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "Exemple: 'flatpages/contact_page.html'. Si no el proporciona, el sistema utilitzarà 'flatpages/defaula.htmlt'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "s'ha de estar registrat" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Si està marcat, només els usuaris registrats podran veure la pàgina." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "pàgina estàtica" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "pàgines estàtiques" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redreçar des de" + +#: contrib/redirects/models.py:8 +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. Exemple '/events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redreçar a" + +#: contrib/redirects/models.py:10 +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "Això pot ser bé una ruta absoluta (com abans) o una URL completa que comenci per http:// ." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redreçament" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redreçaments" + +#: contrib/comments/models.py:67 +#: contrib/comments/models.py:169 msgid "object ID" msgstr "ID de l'objecte" @@ -323,8 +1734,9 @@ msgstr "ID de l'objecte" msgid "headline" msgstr "encapçalament" -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 +#: contrib/comments/models.py:69 +#: contrib/comments/models.py:90 +#: contrib/comments/models.py:170 msgid "comment" msgstr "comentari" @@ -364,39 +1776,34 @@ msgstr "qualificació #8" msgid "is valid rating" msgstr "és qualificació vàlida" -#: contrib/comments/models.py:83 contrib/comments/models.py:169 +#: contrib/comments/models.py:83 +#: contrib/comments/models.py:172 msgid "date/time submitted" msgstr "data/hora d'enviament" -#: contrib/comments/models.py:84 contrib/comments/models.py:170 +#: contrib/comments/models.py:84 +#: contrib/comments/models.py:173 msgid "is public" msgstr "és públic" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:305 -msgid "IP address" -msgstr "Adreça IP" - #: contrib/comments/models.py:86 msgid "is removed" msgstr "està eliminat" #: contrib/comments/models.py:86 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà " -"\"Aquest comentari ha estat eliminat\" " +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà \"Aquest comentari ha estat eliminat\" " #: contrib/comments/models.py:91 msgid "comments" msgstr "comentaris" -#: contrib/comments/models.py:131 contrib/comments/models.py:207 +#: contrib/comments/models.py:134 +#: contrib/comments/models.py:213 msgid "Content object" msgstr "Objecte Contingut" -#: contrib/comments/models.py:159 +#: contrib/comments/models.py:162 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -411,48 +1818,48 @@ msgstr "" "\n" "http://%(domain)s%(url)s" -#: contrib/comments/models.py:168 +#: contrib/comments/models.py:171 msgid "person's name" msgstr "nom de la persona" -#: contrib/comments/models.py:171 +#: contrib/comments/models.py:174 msgid "ip address" msgstr "adreça ip" -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:176 msgid "approved by staff" msgstr "aprovat per el \"staff\"" -#: contrib/comments/models.py:176 +#: contrib/comments/models.py:179 msgid "free comment" msgstr "comentari lliure" -#: contrib/comments/models.py:177 +#: contrib/comments/models.py:180 msgid "free comments" msgstr "comentaris lliures" -#: contrib/comments/models.py:233 +#: contrib/comments/models.py:239 msgid "score" msgstr "puntuació" -#: contrib/comments/models.py:234 +#: contrib/comments/models.py:240 msgid "score date" msgstr "data de la puntuació" -#: contrib/comments/models.py:237 +#: contrib/comments/models.py:243 msgid "karma score" msgstr "puntuació de karma" -#: contrib/comments/models.py:238 +#: contrib/comments/models.py:244 msgid "karma scores" msgstr "punts de karma" -#: contrib/comments/models.py:242 +#: contrib/comments/models.py:248 #, python-format msgid "%(score)d rating by %(user)s" msgstr "%(score)d punt/s per %(user)s" -#: contrib/comments/models.py:258 +#: contrib/comments/models.py:264 #, python-format msgid "" "This comment was flagged by %(user)s:\n" @@ -463,86 +1870,110 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/models.py:265 +#: contrib/comments/models.py:271 msgid "flag date" msgstr "data de la marca" -#: contrib/comments/models.py:268 +#: contrib/comments/models.py:274 msgid "user flag" msgstr "marca d'usuari" -#: contrib/comments/models.py:269 +#: contrib/comments/models.py:275 msgid "user flags" msgstr "marques d'usuari" -#: contrib/comments/models.py:273 +#: contrib/comments/models.py:279 #, python-format msgid "Flag by %r" msgstr "Marca de %r" -#: contrib/comments/models.py:278 +#: contrib/comments/models.py:284 msgid "deletion date" msgstr "data d'eliminació" -#: contrib/comments/models.py:280 +#: contrib/comments/models.py:286 msgid "moderator deletion" msgstr "eliminació del moderador" -#: contrib/comments/models.py:281 +#: contrib/comments/models.py:287 msgid "moderator deletions" msgstr "eliminacions del moderador" -#: contrib/comments/models.py:285 +#: contrib/comments/models.py:291 #, python-format msgid "Moderator deletion by %r" msgstr "eliminació del moderador per %r" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "El seu nom:" +#: contrib/comments/views/karma.py:20 +msgid "Anonymous users cannot vote" +msgstr "Els usuaris anònims no poden votar" -#: contrib/comments/templates/comments/freeform.html:5 -#: contrib/comments/templates/comments/form.html:28 -msgid "Comment:" -msgstr "Comentari:" +#: contrib/comments/views/karma.py:24 +msgid "Invalid comment ID" +msgstr "ID del comentari invàlid" -#: contrib/comments/templates/comments/freeform.html:10 -#: contrib/comments/templates/comments/form.html:35 -msgid "Preview comment" -msgstr "Previsualitzar comentari" +#: contrib/comments/views/karma.py:26 +msgid "No voting for yourself" +msgstr "No pots votar-te a tu mateix" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Usuari:" +#: contrib/comments/views/comments.py:28 +msgid "This rating is required because you've entered at least one other rating." +msgstr "Es precisa aquesta puntuació perquè has introduït almenys un altre." -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -msgid "Log out" -msgstr "Finalitzar sessió" +#: contrib/comments/views/comments.py:112 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %(count)s comentari:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %(count)s comentaris:\n" +"\n" +"%(text)s" -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Contrasenya:" +#: contrib/comments/views/comments.py:117 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Aquest comentari va ser publicat per un usuari incomplet\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:281 +msgid "Only POSTs are allowed" +msgstr "Només s'admed POST" + +#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:285 +msgid "One or more of the required fields wasn't submitted" +msgstr "Un o més dels caps requerits no ha estat sotmès" + +#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:287 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Algú està jugant amb el formulari de comentaris (violació de seguretat)" + +#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:293 +msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid" +msgstr "El formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del objecte era invàlid" + +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'" #: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" @@ -566,1329 +1997,82 @@ msgstr "Opcional" msgid "Post a photo" msgstr "Enviar una fotografia" -#: contrib/comments/views/comments.py:27 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Es precisa aquesta puntuació perquè has introduït almenys un altre." - -#: contrib/comments/views/comments.py:111 -#, python-format -msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" -"\n" -"%(text)s" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" -"\n" -"%(text)s" -msgstr "" -"Aquest comentari el va enviar un usuari que ha enviat menys de %(count)s " -"comentari:\n" -"\n" -"%(text)s" -"Aquest comentari el va enviar un usuari que ha enviat menys de %(count)s " -"comentaris:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:116 -#, python-format -msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" -msgstr "" -"Aquest comentari va ser publicat per un usuari incomplet\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Només s'admed POST" - -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "Un o més dels caps requerits no ha estat sotmès" - -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "" -"Algú està jugant amb el formulari de comentaris (violació de seguretat)" - -#: contrib/comments/views/comments.py:206 -#: contrib/comments/views/comments.py:292 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "" -"El formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del " -"objecte era invàlid" - -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "" -"El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'" - -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Els usuaris anònims no poden votar" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "ID del comentari invàlid" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "No pots votar-te a tu mateix" - -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "moment de l'acció" - -#: contrib/admin/models.py:19 -msgid "object id" -msgstr "id del objecte" - -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "'repr' de l'objecte" - -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "marca de l'acció" - -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "missatge del canvi" - -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "entrada del registre" - -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "entrades del registre" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"

      By %s:

      \n" -"
        \n" -msgstr "" -"

        Per %s:

        \n" -"
          \n" - -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 -msgid "All" -msgstr "Tots" - -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "Qualsevol data" - -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "Avui" - -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "Últims 7 dies" - -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "Aquest mes" - -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "Aquest any" - -#: contrib/admin/templatetags/admin_list.py:249 -msgid "All dates" -msgstr "Totes les dates" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "Documentació" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin/auth/user/change_password.html:15 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -msgid "Change password" -msgstr "Canviar clau" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/auth/user/change_password.html:12 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Home" -msgstr "Inici" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:21 -msgid "History" -msgstr "Històric" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Data/hora" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Usuari" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Acció" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "F j, Y, H:i " - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Aquest objecte no te historial de canvis. Probablement no va ser afegit " -"utilitzant aquest lloc administratiu." - -#: contrib/admin/templates/admin/invalid_setup.html:8 -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 "" -"Alguna cosa està malament en la instal·lació de la teva base de dades. " -"Assegurat de que s'han creat les taules, i de que la base de dades és " -"llegible per l'usuari apropiat." - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Cercar" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 resultat" -msgstr[1] "%(counter)s resultats" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "%(full_result_count)s en total" - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Eliminar" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació " -"d'objectes relacionats, però el seu compte no te permisos per a esborrar els " -"tipus d'objecte següents:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, 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 "" -"Està segur de voler esborrar els/les %(object_name)s \"%(escaped_object)s\"? " -"S'esborraran els següents elements relacionats:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Si, estic segur" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Mostrar tots" - -#: contrib/admin/templates/admin/login.html:25 -#: contrib/admin/views/decorators.py:24 -msgid "Log in" -msgstr "Iniciar sessió" - -#: contrib/admin/templates/admin/change_form.html:15 -#: contrib/admin/templates/admin/index.html:28 -msgid "Add" -msgstr "Afegir" - -#: contrib/admin/templates/admin/change_form.html:22 -msgid "View on site" -msgstr "Veure en el lloc" - -#: contrib/admin/templates/admin/change_form.html:32 -#: contrib/admin/templates/admin/auth/user/change_password.html:24 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Si us plau, corregeixi l'error mostrat abaix." -msgstr[1] "Si us plau, corregeixi els errors mostrats abaix." - -#: contrib/admin/templates/admin/change_form.html:50 -msgid "Ordering" -msgstr "Ordre" - -#: contrib/admin/templates/admin/change_form.html:53 -msgid "Order:" -msgstr "Ordre:" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Models disponibles en la aplicació %(name)s." - -#: contrib/admin/templates/admin/index.html:18 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Modificar" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "No té permís per editar res." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Accions recents" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Les meves accions" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Cap disponible" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Error del servidor" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Error del servidor (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Error del servidor (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Hi ha hagut un error. S'ha informat als administradors del lloc per correu " -"electrònic y hauria d'arreglar-se en breu. Gràcies per la seva paciència." - -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Afegir %(name)s" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Benvingut," - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Lloc administratiu de Django" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Adminsitració de Django" - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filtre" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Desar com a nou" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Desar i afegir-ne un de nou" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Desar i continuar editant" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Desar" - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "No s'ha pogut trobar la pàgina" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Ho sentim, però no s'ha pogut trobar la pàgina solicitada" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr "Per %(filter_title)s " - -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "" -"Primer, entri un usuari i una contrasenya. Després podrà editar més opcions " -"del usuari." - -#: contrib/admin/templates/admin/auth/user/add_form.html:12 -msgid "Username" -msgstr "Usuari" - -#: contrib/admin/templates/admin/auth/user/add_form.html:18 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -msgid "Password" -msgstr "Contrasenya" - -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -msgid "Password (again)" -msgstr "Contrasenya (de nou)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -msgid "Enter the same password as above, for verification." -msgstr "Introdueixi la mateixa contrasenya que a sobre, per a verificació." - -#: contrib/admin/templates/admin/auth/user/change_password.html:28 -#, python-format -msgid "Enter a new password for the user %(username)s." -msgstr "Introdueixi una contrasenya per l'usuari %(username)s" - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Data:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Hora:" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Actualment:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modificar:" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Gràcies per emprar algun temps de cualitat amb el lloc web avui." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Iniciar sessió de nou" - -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:4 -msgid "Password change" -msgstr "Canvi de clau" - -#: contrib/admin/templates/registration/password_change_form.html:12 -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 "" -"Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot " -"seguit introdueixi la seva nova contrasenya dues vegades per verificar que " -"l'ha escrit correctament." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Contrasenya antiga:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Contrasenya nova:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Confirmar contrasenya:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Canviar la meva clau:" - -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -msgid "Password reset" -msgstr "Restablir contrasenya" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Contrasenya restaber-ta amb èxit" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" -"Li hem enviat una contrasenya nova a l'adreça de correu electrònic que ens " -"ha indicat. L'hauria de rebre en breu." - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Canvi de clau exitò" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "La seva clau ha estat canviada." - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" -"Està rebent aquest missatge degut a que va solicitar un restabliment de " -"contrasenya." - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "del seu compte d'usuari a %(site_name)s." - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "La seva nova contrasenya és: %(new_password)s" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "Sentis lliure de canviar-la en aquesta pàgina:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "El seu nom d'usuari, en cas d'haver-lo oblidat:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Gràcies per fer us del nostre lloc!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "L'equip de %(site_name)s" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"Ha oblidat la seva contrasenya? Introdueixi la seva adreça de correu " -"electrònic i crearem una nova que li enviarem per correu." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Adreça de correu electrònic:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Restablir la meva contrasenya" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "'Bookmarklets'" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "'Bookmarklets' de documentació" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\n" -"

          To install bookmarklets, drag the link to your bookmarks\n" -"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" -"select the bookmarklet from any page in the site. Note that some of these\n" -"bookmarklets require you to be viewing the site from a computer designated\n" -"as \"internal\" (talk to your system administrator if you aren't sure if\n" -"your computer is \"internal\").

          \n" -msgstr "" -"\n" -"

          Per a instalar 'bookmarklets', arrosegui l'enllaç a la " -"seva barra de\n" -"marcadors, o faci click amb el botò dret en l'enllaç i afegeixi'l als " -"marcadors.\n" -"Ara pot escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\n" -"Observi que alguns d'aquests 'bookmarklets' precisen que estigui veient\n" -"el lloc des de un ordinador senyalat com a \"intern\" (parli\n" -"amb el seu administrador de sistemes si no està segur de la condició del " -"seu).

          \n" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Documentació d'aquesta pàgina" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" -"El porta des de qualsevol pàgina de la documentació a la vista que la genera." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Mostra el ID de l'objecte" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les " -"pàgines que representen un únic objecte." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Editar aquest objecte (finestra actual)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"El porta a la pàgina d'administració de pàgines que representen un únic " -"objecte." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Editar aquest objecte (nova finestra)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "Com abans, però obre la pàgina d'administració en una nova finestra." - -#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:262 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "El/la %(name)s \"%(obj)s\".ha estat agregat/da amb èxit." - -#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:266 -#: contrib/admin/views/main.py:352 -msgid "You may edit it again below." -msgstr "Pot editar-lo de nou abaix." - -#: contrib/admin/views/auth.py:30 -msgid "Add user" -msgstr "Afegir usuari" - -#: contrib/admin/views/auth.py:57 -msgid "Password changed successfully." -msgstr "Canvi de clau exitós" - -#: contrib/admin/views/auth.py:64 -#, python-format -msgid "Change password: %s" -msgstr "Canviar clau: %s" - -#: contrib/admin/views/main.py:228 -msgid "Site administration" -msgstr "Lloc administratiu" - -#: contrib/admin/views/main.py:276 contrib/admin/views/main.py:361 -#, python-format -msgid "You may add another %s below." -msgstr "Pot afegir un altre %s a baix." - -#: contrib/admin/views/main.py:294 -#, python-format -msgid "Add %s" -msgstr "Afegir %s" - -#: contrib/admin/views/main.py:340 -#, python-format -msgid "Added %s." -msgstr "Agregat %s." - -#: contrib/admin/views/main.py:340 contrib/admin/views/main.py:342 -#: contrib/admin/views/main.py:344 db/models/manipulators.py:308 -msgid "and" -msgstr "i" - -#: contrib/admin/views/main.py:342 -#, python-format -msgid "Changed %s." -msgstr "Modificat %s." - -#: contrib/admin/views/main.py:344 -#, python-format -msgid "Deleted %s." -msgstr "Eliminat %s." - -#: contrib/admin/views/main.py:347 -msgid "No fields changed." -msgstr "Cap camp canviat." - -#: contrib/admin/views/main.py:350 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "S'ha modificat amb èxist el/la %(name)s \"%(obj)s." - -#: contrib/admin/views/main.py:358 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"S'ha agregat amb èxit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix." - -#: contrib/admin/views/main.py:396 -#, python-format -msgid "Change %s" -msgstr "Modificar %s" - -#: contrib/admin/views/main.py:481 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Un o més %(fieldname)s en %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:486 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Un o més %(fieldname)s en %(name)s:" - -#: contrib/admin/views/main.py:518 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "El/la %(name)s \"%(obj)s\".ha estat eliminat amb èxit." - -#: contrib/admin/views/main.py:521 -msgid "Are you sure?" -msgstr "Està segur?" - -#: contrib/admin/views/main.py:543 -#, python-format -msgid "Change history: %s" -msgstr "Modificar històric: %s" - -#: contrib/admin/views/main.py:577 -#, python-format -msgid "Select %s" -msgstr "Seleccioni %s" - -#: contrib/admin/views/main.py:577 -#, python-format -msgid "Select %s to change" -msgstr "Seleccioni %s per modificar" - -#: contrib/admin/views/main.py:772 -msgid "Database error" -msgstr "Error de/en la base de dades" - -#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 -#: contrib/admin/views/doc.py:50 -msgid "tag:" -msgstr "etiqueta:" - -#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 -#: contrib/admin/views/doc.py:81 -msgid "filter:" -msgstr "filtre:" - -#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 -#: contrib/admin/views/doc.py:139 -msgid "view:" -msgstr "vista:" - -#: contrib/admin/views/doc.py:164 -#, python-format -msgid "App %r not found" -msgstr "La aplicació %r no s'ha pogut trobar" - -#: contrib/admin/views/doc.py:171 -#, python-format -msgid "Model %(name)r not found in app %(label)r" -msgstr "El model %(name)r no s'ha trobat en la aplicació %(label)r" - -#: contrib/admin/views/doc.py:183 -#, python-format -msgid "the related `%(label)s.%(type)s` object" -msgstr "el objecte relacionat `%(label)s.%(type)s`" - -#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 -#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 -msgid "model:" -msgstr "model:" - -#: contrib/admin/views/doc.py:214 -#, python-format -msgid "related `%(label)s.%(name)s` objects" -msgstr "objectes relacionats `%(label)s.%(name)s`" - -#: contrib/admin/views/doc.py:219 -#, python-format -msgid "all %s" -msgstr "tots %s" - -#: contrib/admin/views/doc.py:224 -#, python-format -msgid "number of %s" -msgstr "nombre de %s" - -#: contrib/admin/views/doc.py:229 -#, python-format -msgid "Fields on %s objects" -msgstr "Camps en objectes %s" - -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 -#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 -#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 -msgid "Integer" -msgstr "Enter" - -#: contrib/admin/views/doc.py:292 -msgid "Boolean (Either True or False)" -msgstr "Booleà (Verdader o Fals)" - -#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Cadena (fins a %(maxlength)s)" - -#: contrib/admin/views/doc.py:294 -msgid "Comma-separated integers" -msgstr "Enters separats per comes" - -#: contrib/admin/views/doc.py:295 -msgid "Date (without time)" -msgstr "Data (sense hora)" - -#: contrib/admin/views/doc.py:296 -msgid "Date (with time)" -msgstr "Data (amb hora)" - -#: contrib/admin/views/doc.py:297 -msgid "Decimal number" -msgstr "Número decimal" - -#: contrib/admin/views/doc.py:298 -msgid "E-mail address" -msgstr "Adreça de correu electrònic" - -#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 -#: contrib/admin/views/doc.py:303 -msgid "File path" -msgstr "Ruta del fitxer" - -#: contrib/admin/views/doc.py:301 -msgid "Floating point number" -msgstr "Número amb punt de coma flotant" - -#: contrib/admin/views/doc.py:307 -msgid "Boolean (Either True, False or None)" -msgstr "Booleà (Verdader, Fals o 'None' (cap))" - -#: contrib/admin/views/doc.py:308 -msgid "Relation to parent model" -msgstr "Relació amb el model pare" - -#: contrib/admin/views/doc.py:309 -msgid "Phone number" -msgstr "Número de telèfon" - -#: contrib/admin/views/doc.py:314 -msgid "Text" -msgstr "Texte" - -#: contrib/admin/views/doc.py:315 -msgid "Time" -msgstr "Hora" - -#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admin/views/doc.py:317 -msgid "U.S. state (two uppercase letters)" -msgstr "Estat dels E.U.A. (dos lletres majúscules)" - -#: contrib/admin/views/doc.py:318 -msgid "XML text" -msgstr "Texte XML" - -#: contrib/admin/views/doc.py:344 -#, python-format -msgid "%s does not appear to be a urlpattern object" -msgstr "%s no sembla ser un objecte 'urlpattern'" - -#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Si us plau, introdueixi un nom d'usuari i contrasenya vàlids. Tingui en " -"compte que tots dos camps son sensibles a majúscules i minúscules." - -#: contrib/admin/views/decorators.py:62 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Si us plau, identifiquis de nou doncs la seva sessió ha expirat. No es " -"preocupi, el seu enviament està emmagatzemat." - -#: contrib/admin/views/decorators.py:69 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Sembla ser que el seu navegador no està configurat per acceptar " -"'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta " -"pàgina i provi-ho de nou. " - -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Els noms d'usuari no poden contenir el caracter '@'." - -#: contrib/admin/views/decorators.py:85 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"La seva adreça de correu no és el seu nom d'usuari. Provi '%s' en tot cas." - -#: contrib/sessions/models.py:68 -msgid "session key" -msgstr "clau de la sessió" - -#: contrib/sessions/models.py:69 -msgid "session data" -msgstr "dades de la sessió" - -#: contrib/sessions/models.py:70 -msgid "expire date" -msgstr "data de caducitat" - -#: contrib/sessions/models.py:74 -msgid "session" -msgstr "sessió" - -#: contrib/sessions/models.py:75 -msgid "sessions" -msgstr "sessions" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "th" -msgstr "rt" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "st" -msgstr "r" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "nd" -msgstr "n" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "rd" -msgstr "r" - -#: contrib/humanize/templatetags/humanize.py:47 -#, python-format -msgid "%(value).1f million" -msgid_plural "%(value).1f million" -msgstr[0] "%(value).1f milió" -msgstr[1] "%(value).1f milions" - -#: contrib/humanize/templatetags/humanize.py:50 -#, python-format -msgid "%(value).1f billion" -msgid_plural "%(value).1f billion" -msgstr[0] "%(value).1f bilió" -msgstr[1] "%(value).1f bilions" - -#: contrib/humanize/templatetags/humanize.py:53 -#, python-format -msgid "%(value).1f trillion" -msgid_plural "%(value).1f trillion" -msgstr[0] "%(value).1f trilió" -msgstr[1] "%(value).1f trilions" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "one" -msgstr "un" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "two" -msgstr "dos" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "three" -msgstr "tres" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "four" -msgstr "cuatre" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "five" -msgstr "cinc" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "six" -msgstr "sis" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "seven" -msgstr "set" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "eight" -msgstr "vuit" - -#: contrib/humanize/templatetags/humanize.py:68 -msgid "nine" -msgstr "nou" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "redreçar des de" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. " -"Exemple '/events/search/'." - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "redreçar a" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Això pot ser bé una ruta absoluta (com abans) o una URL completa que comenci " -"per http:// ." - -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "redreçament" - -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "redreçaments" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al " -"final." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "tìtol" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "contingut" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "habilitar comentaris" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nom de la plantilla" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Exemple: 'flatpages/contact_page.html'. Si no el proporciona, el sistema " -"utilitzarà 'flatpages/defaula.htmlt'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "s'ha de estar registrat" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Si està marcat, només els usuaris registrats podran veure la pàgina." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "pàgina estàtica" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "pàgines estàtiques" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nom del domini" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "nom per mostrar" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "lloc" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "llocs" - -#: contrib/auth/views.py:40 -msgid "Logged out" -msgstr "Sessió finalitzada" - -#: contrib/auth/models.py:49 contrib/auth/models.py:69 -msgid "name" -msgstr "nom" - -#: contrib/auth/models.py:51 -msgid "codename" -msgstr "nom en clau" - -#: contrib/auth/models.py:54 -msgid "permission" -msgstr "permís" - -#: contrib/auth/models.py:55 contrib/auth/models.py:70 -msgid "permissions" -msgstr "permissos" - -#: contrib/auth/models.py:73 -msgid "group" -msgstr "grup" - -#: contrib/auth/models.py:74 contrib/auth/models.py:114 -msgid "groups" -msgstr "grups" - -#: contrib/auth/models.py:104 -msgid "username" -msgstr "nom d'usuari" - -#: contrib/auth/models.py:104 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Requerit. 30 o menys caracters. Només caracters alfanumèrics (lletres, " -"dígits i guions baixos)." - -#: contrib/auth/models.py:105 -msgid "first name" -msgstr "nom propi" - -#: contrib/auth/models.py:106 -msgid "last name" -msgstr "cognoms" - -#: contrib/auth/models.py:107 -msgid "e-mail address" -msgstr "adreça de correu electrònic" - -#: contrib/auth/models.py:108 -msgid "password" -msgstr "contrasenya" - -#: contrib/auth/models.py:108 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "" -"Utilitzi '[algo]$[salt]$[hexdigest]' o el formulari de " -"canvi de contrasenya." - -#: contrib/auth/models.py:109 -msgid "staff status" -msgstr "és membre del personal" - -#: contrib/auth/models.py:109 -msgid "Designates whether the user can log into this admin site." -msgstr "Indica si l'usuari pot entrar en el lloc administratiu." - -#: contrib/auth/models.py:110 -msgid "active" -msgstr "actiu" - -#: contrib/auth/models.py:110 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "" -"Designa si aquest usuari pot iniciar sessió a la interfície administrativa " -"Djano. Deselecciona-ho enlloc de esborrar comptes d'usuari." - -#: contrib/auth/models.py:111 -msgid "superuser status" -msgstr "estat de superusuari" - -#: contrib/auth/models.py:111 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" -"Designa que aquest usuari té tots els permisos sense assignar-los " -"explícitament." - -#: contrib/auth/models.py:112 -msgid "last login" -msgstr "últim inici de sessió" - -#: contrib/auth/models.py:113 -msgid "date joined" -msgstr "data de creació" - -#: contrib/auth/models.py:115 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els " -"permissos dels grups dels que sigui membre." - -#: contrib/auth/models.py:116 -msgid "user permissions" -msgstr "permissos de l'usuari" - -#: contrib/auth/models.py:120 -msgid "user" -msgstr "usuari" - -#: contrib/auth/models.py:121 -msgid "users" -msgstr "usuaris" - -#: contrib/auth/models.py:127 -msgid "Personal info" -msgstr "Informaciò personal" - -#: contrib/auth/models.py:128 -msgid "Permissions" -msgstr "permissos" - -#: contrib/auth/models.py:129 -msgid "Important dates" -msgstr "Dates importants" - -#: contrib/auth/models.py:130 -msgid "Groups" -msgstr "Grups" - -#: contrib/auth/models.py:273 -msgid "message" -msgstr "missatge" - -#: contrib/auth/models.py:286 -msgid "AnonymousUser" -msgstr "AnonymousUser" - -#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 -msgid "The two password fields didn't match." -msgstr "Els dos camps de contrasenya no coincideixen." - -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "Ja existeix un usuari amb aquest nom." - -#: contrib/auth/forms.py:53 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes " -"són necessàries per iniciar la sessió." - -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "Aquest compte està inactiu" - -#: contrib/auth/forms.py:84 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" -"Aquesta adreça de correu no té associada cap compte d'usuari. Està segur de " -"que s'ha registrat?" - -#: contrib/auth/forms.py:117 -msgid "The two 'new password' fields didn't match." -msgstr "Els dos camps de nova contrasenya no coincideixen." - -#: contrib/auth/forms.py:124 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "" -"La seva antiga contrasenya no és correcte. Si el plau, introdueixi-la de nou." - -#: contrib/contenttypes/models.py:36 -msgid "python model class name" -msgstr "nom de la classe del model en python" - -#: contrib/contenttypes/models.py:39 -msgid "content type" -msgstr "tipus de contingut" - -#: contrib/contenttypes/models.py:40 -msgid "content types" -msgstr "tipus de continguts" +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Comentari:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Previsualitzar comentari" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "El seu nom:" + +#: contrib/localflavor/ar/forms.py:30 +#: contrib/localflavor/ar/forms.py:38 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Introdueixi un codi postal en el format NNNN or ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:61 +#: contrib/localflavor/br/forms.py:103 +msgid "This field requires only numbers." +msgstr "Aquest camps requereix només números." + +#: contrib/localflavor/ar/forms.py:64 +msgid "This field requires 7 or 8 digits." +msgstr "Aquest camp requereix 7 o 8 dígits." + +#: contrib/localflavor/ar/forms.py:75 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Introdueixi un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:88 +msgid "Invalid CUIT." +msgstr "Invàlid CUIT." + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Introdueixi un codi postal de 4 dígits." + +#: contrib/localflavor/br/forms.py:23 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Introdueixi un codi zip en el format XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:35 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "El número de telèfon ha de ser en el format XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:68 +msgid "Select a valid brazilian state. That state is not one of the available states." +msgstr "Seleccioni un estat brasiler vàlid. Aquest estat no és un dels estats disponibles." + +#: contrib/localflavor/br/forms.py:105 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Aquest camp requereix com a màxim 11 dígits o 14 caracters." + +#: contrib/localflavor/br/forms.py:115 +msgid "Invalid CPF number." +msgstr "Número CPF invàlid." + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Aquest camp requereix almenys 14 dígits." + +#: contrib/localflavor/br/forms.py:147 +msgid "Invalid CNPJ number." +msgstr "Número CNPJ invàlid." + +#: contrib/localflavor/ch/forms.py:18 +#: contrib/localflavor/no/forms.py:14 +msgid "Enter a zip code in the format XXXX." +msgstr "Introdueixi un codi zip en el format XXXX." + +#: contrib/localflavor/ch/forms.py:90 +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "Introdueixi un número de identificació o de passaport Suïssos en els formats 1234567890 o X1234567<0." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1994,66 +2178,23 @@ msgstr "Zug" msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:15 -msgid "Enter a zip code in the format XXXX." -msgstr "Introdueixi un codi zip en el format XXXX." +#: contrib/localflavor/cl/forms.py:32 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Introdueixi un RUT Xilè vàlid. El format és XX.XXX.XXX-X" -#: contrib/localflavor/ch/forms.py:90 -msgid "" -"Enter a valid Swiss identity or passport card number in X1234567<0 or " -"1234567890 format." -msgstr "" -"Introdueixi un número de identificació o de passaport Suïssos en els formats " -"1234567890 o X1234567<0." +#: contrib/localflavor/cl/forms.py:37 +msgid "Enter valid a Chilean RUT" +msgstr "Introdueixi un RUT Xilè vàlid." -#: contrib/localflavor/it/forms.py:16 -msgid "Enter a valid zip code." -msgstr "Introdueixi un codi zip vàlid." - -#: contrib/localflavor/it/forms.py:41 -msgid "Enter a valid Social Security number." -msgstr "Introdueixi un número valid de la Seguretat Social." - -#: contrib/localflavor/it/forms.py:68 -msgid "Enter a valid VAT number." -msgstr "Introdueixi un número de IVA (VAT) vàlid." - -#: contrib/localflavor/uk/forms.py:18 -msgid "Enter a postcode. A space is required between the two postcode parts." -msgstr "" -"Introdueixi un codi postal. És necessari un espai entre les dues parts del " -"codi postal." - -#: contrib/localflavor/us/forms.py:18 -msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Introdueixi un codi zip en el format XXXXX o XXXXX-XXXX." - -#: contrib/localflavor/us/forms.py:51 -msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "" -"Introdueixi un número vàlid de la Seguretat Social dels E.U.A. en el format " -"XXX-XX-XXXX." - -#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 #: contrib/localflavor/fr/forms.py:17 msgid "Enter a zip code in the format XXXXX." msgstr "Introdueixi un codi zip en el format XXXXX." -#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 -msgid "Enter a valid Finnish social security number." -msgstr "Introdueixi un número vàlid de la seguretat social finlandesa." - -#: contrib/localflavor/no/forms.py:36 -msgid "Enter a valid Norwegian social security number." -msgstr "Introdueixi un número de la seguretat social Noruega vàlid." - -#: contrib/localflavor/cl/forms.py:21 -msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "Introdueixi un RUT Xilè vàlid. El format és XX.XXX.XXX-X" - -#: contrib/localflavor/cl/forms.py:26 -msgid "Enter valid a Chilean RUT" -msgstr "Introdueixi un RUT Xilè vàlid." +#: contrib/localflavor/de/forms.py:60 +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "Introdueixi un número de tarjeta d'identificació alemany vàlid en el format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" @@ -2119,17 +2260,26 @@ msgstr "Schleswig-Holstein" msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:60 -msgid "" -"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " -"format." -msgstr "" -"Introdueixi un número de tarjeta d'identificació alemany vàlid en el format " -"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." +#: contrib/localflavor/fi/forms.py:40 +#: contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Introdueixi un número vàlid de la seguretat social finlandesa." -#: contrib/localflavor/au/forms.py:18 -msgid "Enter a 4 digit post code." -msgstr "Introdueixi un codi postal de 4 dígits." +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Introdueixi un codi zip vàlid." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Introdueixi un número valid de la Seguretat Social." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Introdueixi un número de IVA (VAT) vàlid." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Introdueixi un codi postal en el format XXXXXXX o XX-XXXX." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" @@ -2319,359 +2469,607 @@ msgstr "Kagoshima" msgid "Okinawa" msgstr "Okinawa" -#: contrib/localflavor/jp/forms.py:21 -msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Introdueixi un codi postal en el format XXXXXXX o XX-XXXX." +#: contrib/localflavor/nl/forms.py:25 +msgid "Enter a valid postal code" +msgstr "Introdueixi un codi postal vàlid." -#: contrib/localflavor/br/forms.py:18 -msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "Introdueixi un codi zip en el format XXXXX-XXX." +#: contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Introdueixi un número de telèfon vàlid." -#: contrib/localflavor/br/forms.py:30 -msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "El número de telèfon ha de ser en el format XX-XXXX-XXXX." +#: contrib/localflavor/nl/forms.py:76 +msgid "Enter a valid SoFi number" +msgstr "Introdueixi un número SoFi vàlid." -#: contrib/localflavor/br/forms.py:72 -msgid "This field requires only numbers." -msgstr "Aquest camps requereix només números." +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "Drente" -#: contrib/localflavor/br/forms.py:74 -msgid "This field requires at most 11 digits or 14 characters." -msgstr "Aquest camp requereix com a màxim 11 dígits o 14 caracters." +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Flevoland" -#: contrib/localflavor/br/forms.py:84 -msgid "Invalid CPF number." -msgstr "Número CPF invàlid." +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Friesland" -#: contrib/localflavor/br/forms.py:106 -msgid "This field requires at least 14 digits" -msgstr "Aquest camp requereix almenys 14 dígits." +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Gelderland" -#: contrib/localflavor/br/forms.py:116 -msgid "Invalid CNPJ number." -msgstr "Número CNPJ invàlid." +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Groningen" -#: contrib/localflavor/is_/forms.py:16 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "" -"Introdueixi un número de identificació d'Islàndia. El format és XXXXXX-XXXX." +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Limburg" -#: contrib/localflavor/is_/forms.py:30 +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Noord-Brabant" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Noord-Holland" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Overijssel" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Utrecht" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Zeeland" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Zuid-Holland" + +#: contrib/localflavor/no/forms.py:35 +msgid "Enter a valid Norwegian social security number." +msgstr "Introdueixi un número de la seguretat social Noruega vàlid." + +#: contrib/localflavor/pl/forms.py:53 +msgid "National Identification Number consists of 11 digits." +msgstr "El número d'identidicació nacional està compost de 11 digits." + +#: contrib/localflavor/pl/forms.py:59 +msgid "Wrong checksum for the National Identification Number." +msgstr "Validació invàlida del número d'identificació nacional." + +#: contrib/localflavor/pl/forms.py:71 +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Introdueixi un número NIP en el format XXX-XXX-XX-XX o XX-XX-XXX-XXX." + +#: contrib/localflavor/pl/forms.py:82 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Introdueixi un codi postal en el format XX-XXX." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Lower Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kuyavia-Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Lodz" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Lesser Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masovia" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Subcarpatia" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlasie" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuria" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Greater Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "West Pomerania" + +#: contrib/localflavor/sk/forms.py:32 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Introdueixi un codi postal en el format XXXXX or XXX XX." + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajska Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kezmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komarno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kosice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kosice II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kosice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kosice IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavska Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Roznava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ruzomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spisska Nova Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sala" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencin" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zilina" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Regió de Banska Bystrica" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Regió de Bratislava" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Regió de Kosice" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Regió de Nitra" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Regió de Presov" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Regió de Trencin" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Regió de Trnava" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Regió de Zilina" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Introdueixi un codi postal. És necessari un espai entre les dues parts del codi postal." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Introdueixi un codi zip en el format XXXXX o XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Introdueixi un número vàlid de la Seguretat Social dels E.U.A. en el format XXX-XX-XXXX." + +#: contrib/localflavor/in_/forms.py:16 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Introdueixi un codi zip en el format XXXXXXX." + +#: contrib/localflavor/is_/forms.py:17 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Introdueixi un número de identificació d'Islàndia. El format és XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:31 msgid "The Icelandic identification number is not valid." msgstr "El número de identificació d'Islàndia no és vàlid." -#: core/validators.py:65 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Aquest valor ha de contenir només números, guions, i guions baixos." +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "clau de la sessió" -#: core/validators.py:69 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Aquest valor ha de contenir només lletres, números, guions, guions baixos, i " -"barres (/)." +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "dades de la sessió" -#: core/validators.py:73 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "" -"Aquest valor ha de contenir només lletres, números, guions o guions baixos" +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "data de caducitat" -#: core/validators.py:77 -msgid "Uppercase letters are not allowed here." -msgstr "No es permeten majúscules aquí." +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sessió" -#: core/validators.py:81 -msgid "Lowercase letters are not allowed here." -msgstr "No es permeten minúscules aquí." +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sessions" -#: core/validators.py:88 -msgid "Enter only digits separated by commas." -msgstr "Introdueixi només dígits separats per comes." +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "nom de la classe del model en python" -#: core/validators.py:100 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Introdueixi adreces de correu electrònic vàlides separades per comes." +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "tipus de contingut" -#: core/validators.py:104 -msgid "Please enter a valid IP address." -msgstr "Per favor introdueixi una adreça IP vàlida." +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "tipus de continguts" -#: core/validators.py:108 -msgid "Empty values are not allowed here." -msgstr "No s'admeten valor buits." - -#: core/validators.py:112 -msgid "Non-numeric characters aren't allowed here." -msgstr "No s'admeten caracters no numèrics." - -#: core/validators.py:116 -msgid "This value can't be comprised solely of digits." -msgstr "Aquest valor no pot contenir només dígits." - -#: core/validators.py:125 -msgid "Only alphabetical characters are allowed here." -msgstr "Només s'admeted caracters alfabètics aquí." - -#: core/validators.py:140 -msgid "Year must be 1900 or later." -msgstr "L'any ha de ser posterior al 1900" - -#: core/validators.py:144 +#: oldforms/__init__.py:408 #, python-format -msgid "Invalid date: %s" -msgstr "Data invàlida: %s" +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Asseguris de que el seu texte té menys de %s caracter." +msgstr[1] "Asseguris de que el seu texte té menys de %s caracters." -#: core/validators.py:149 db/models/fields/__init__.py:468 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD." +#: oldforms/__init__.py:413 +msgid "Line breaks are not allowed here." +msgstr "No es permeten salts de línia." -#: core/validators.py:154 -msgid "Enter a valid time in HH:MM format." -msgstr "Introdueixi una hora vàlida en el format HH:MM." - -#: core/validators.py:158 db/models/fields/__init__.py:537 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Introdueixi un data/hora vàlida en format YYYY-MM-DD HH:MM." - -#: core/validators.py:175 core/validators.py:453 oldforms/__init__.py:672 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "" -"No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari." - -#: core/validators.py:179 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Envii una imatge vàilda. El fitxer que ha enviat no era una imatge o estaba " -"corrupte." - -#: core/validators.py:186 +#: oldforms/__init__.py:511 +#: oldforms/__init__.py:585 +#: oldforms/__init__.py:624 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "La URL %s no apunta una imatge vàlida." +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Esculli una opció vàlida; %(data)s' no està dintre de %(choices)s." -#: core/validators.py:190 +#: oldforms/__init__.py:688 +#: newforms/fields.py:381 +msgid "The submitted file is empty." +msgstr "El fitxer enviat està buit." + +#: oldforms/__init__.py:744 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Introdueixi un número enter entre -32,768 i 32,767." + +#: oldforms/__init__.py:754 +msgid "Enter a positive number." +msgstr "Introdueixi un número positiu." + +#: oldforms/__init__.py:764 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Introdueixi un número entre 0 i 32,767." + +#: views/generic/create_update.py:43 #, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"El números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no " -"és vàlid." +msgid "The %(verbose_name)s was created successfully." +msgstr "El/La %(verbose_name)s s'ha creat amb èxit." -#: core/validators.py:198 +#: views/generic/create_update.py:117 #, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "La URL %s no apunta a un video QuickTime vàlid." +msgid "The %(verbose_name)s was updated successfully." +msgstr "El/La %(verbose_name)s s'ha actualtzat amb èxit." -#: core/validators.py:202 -msgid "A valid URL is required." -msgstr "Es precisa d'una URL vàlida." - -#: core/validators.py:216 +#: views/generic/create_update.py:184 #, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Es precisa HTML vàlid. Els errors específics sòn:\n" -"%s" - -#: core/validators.py:223 -#, python-format -msgid "Badly formed XML: %s" -msgstr "XML incorrectament formatejat: %s" - -#: core/validators.py:240 -#, python-format -msgid "Invalid URL: %s" -msgstr "URL invalida: %s" - -#: core/validators.py:245 core/validators.py:247 -#, python-format -msgid "The URL %s is a broken link." -msgstr "La URL %sés un enllaç trencat." - -#: core/validators.py:253 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Introdueixi una abreviatura vàlida d'estat d'els E.U.A.." - -#: core/validators.py:267 -#, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "Vigili la seva boca! Aquí no admetem la paraula: %s." -msgstr[1] "Vigili la seva boca! Aquí no admetem les paraules: %s." - -#: core/validators.py:274 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Aquest camp ha de concordar amb el camp '%s'." - -#: core/validators.py:293 -msgid "Please enter something for at least one field." -msgstr "Si us plau, introdueixi alguna cosa alemnys en un camp." - -#: core/validators.py:302 core/validators.py:313 -msgid "Please enter both fields or leave them both empty." -msgstr "Si us plau, ompli els dos camps o deixi'ls tots dos en blanc." - -#: core/validators.py:321 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "S'ha de proporcionar aquest camps si %(field)s és %(value)s" - -#: core/validators.py:334 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "S'ha de proporcionar aquest camps si %(field)s no és %(value)s" - -#: core/validators.py:353 -msgid "Duplicate values are not allowed." -msgstr "No s'admeten valors duplicats." - -#: core/validators.py:368 -#, python-format -msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Aquest valor ha de estar comprés entre %(lower)s i %(upper)s." - -#: core/validators.py:370 -#, python-format -msgid "This value must be at least %s." -msgstr "Aquest valor ha de ser com a mínim %s." - -#: core/validators.py:372 -#, python-format -msgid "This value must be no more than %s." -msgstr "Aquest valor ha de ser com a màxim %s." - -#: core/validators.py:408 -#, python-format -msgid "This value must be a power of %s." -msgstr "Aquest valor ha de ser una potència de %s." - -#: core/validators.py:417 -msgid "Please enter a valid decimal number." -msgstr "Si us plau, introdueixi un número decimal vàlid." - -#: core/validators.py:423 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -"Please enter a valid decimal number with at most %s total digits." -msgstr "" -"Si us plau, introdueixi un número decimal vàlid amb no més de %s digit." -"Si us plau, introdueixi un número decimal vàlid amb no més de %s digits." - -#: core/validators.py:426 -#, python-format -msgid "" -"Please enter a valid decimal number with a whole part of at most %s digit." -"Please enter a valid decimal number with a whole part of at most %s digits." -msgstr "" -"Si us plau, introdueixi un número decimal vàlid amb la part entera amb com a " -"màxim %s dígit." -"Si us plau, introdueixi un número decimal vàlid amb la part entera amb com a " -"màxim %s dígits." - -#: core/validators.py:429 -#, python-format -msgid "Please enter a valid decimal number with at most %s decimal place." -"Please enter a valid decimal number with at most %s decimal places." -msgstr "" -"Si us plau, introdueixi un número decimal vàlid amb no més de %s dígit en la " -"part decimal." -"Si us plau, introdueixi un número decimal vàlid amb no més de %s dígits en " -"la part decimal." - -#: core/validators.py:437 -msgid "Please enter a valid floating point number." -msgstr "Si us plau, introdueixi un número amb punt de coma flotant vàlid." - -#: core/validators.py:446 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Asseguris de que el fitxer que ha enviat té, com a mínim, %s bytes." - -#: core/validators.py:447 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Asseguris de que el fitxer que ha enviat té, com a màxim %s bytes." - -#: core/validators.py:464 -msgid "The format for this field is wrong." -msgstr "El format per aquest camp és incorrecte." - -#: core/validators.py:479 -msgid "This field is invalid." -msgstr "El camp no és vàlid." - -#: core/validators.py:515 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "No s'ha pogut obtenir res de %s." - -#: core/validators.py:518 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que " -"no és vàlida." - -#: core/validators.py:551 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Si us plau, tanqui l'etiqueta %(tag)s des de la línia %(line)s. (La línia " -"comença amb \"%(start)s\".)" - -#: core/validators.py:555 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Part del text que comença en la línia %(line)s no està permès en aquest " -"context. (La línia comença per \"%(start)s\".)" - -#: core/validators.py:560 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"El \"%(attr)s\" de la línia %(line)s no és un atribut vàlid. (La línia " -"comença per \"%(start)s\".)" - -#: core/validators.py:565 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"La \"<%(tag)s>\" de la línia %(line)s no és una etiqueta vàlida. (La línia " -"comença per \"%(start)s\".)" - -#: core/validators.py:569 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La " -"línia comença per \"%(start)s\".)" - -#: core/validators.py:574 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La " -"línia comença per \"%(start)s\".)" +msgid "The %(verbose_name)s was deleted." +msgstr "El %(verbose_name)s s'ha eliminat." #: utils/dates.py:6 msgid "Monday" @@ -2701,130 +3099,167 @@ msgstr "Dissabte" msgid "Sunday" msgstr "Diumenge" -#: utils/dates.py:14 +#: utils/dates.py:10 +msgid "Mon" +msgstr "Dl" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Dt" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Dc" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "Dj" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Dv" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "Db" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Dg" + +#: utils/dates.py:18 msgid "January" msgstr "Gener" -#: utils/dates.py:14 +#: utils/dates.py:18 msgid "February" msgstr "Febrer" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "March" msgstr "Març" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "April" msgstr "Abril" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "May" msgstr "Maig" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 +#: utils/dates.py:31 msgid "June" msgstr "Juny" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:19 +#: utils/dates.py:31 msgid "July" msgstr "Juliol" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "August" msgstr "Agost" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "September" msgstr "Setembre" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "October" msgstr "Octubre" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "November" msgstr "Novembre" -#: utils/dates.py:16 +#: utils/dates.py:20 msgid "December" msgstr "Desembre" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jan" msgstr "gen" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "feb" msgstr "feb" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "mar" msgstr "mar" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "apr" msgstr "abr" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "may" msgstr "mai" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jun" msgstr "jun" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "jul" msgstr "jul" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "aug" msgstr "ago" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "sep" msgstr "set" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "oct" msgstr "oct" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "nov" msgstr "nov" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "dec" msgstr "des" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Jan." msgstr "Gen." -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Feb." msgstr "Feb." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Aug." msgstr "Ago." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Sept." msgstr "Set." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Oct." msgstr "Oct." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Nov." msgstr "Nov." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Dec." msgstr "Des." +#: utils/text.py:127 +msgid "or" +msgstr "o" + #: utils/timesince.py:12 msgid "year" msgid_plural "years" @@ -2861,167 +3296,211 @@ msgid_plural "minutes" msgstr[0] "minut" msgstr[1] "minuts" -#: utils/timesince.py:40 -#, python-format -msgid "%d milliseconds" -msgstr "%d milisegons" - -#: utils/timesince.py:41 +#: utils/timesince.py:39 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" -#: utils/timesince.py:47 +#: utils/timesince.py:45 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/dateformat.py:40 +#: utils/dateformat.py:41 msgid "p.m." msgstr "p.m." -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "a.m." msgstr "a.m." -#: utils/dateformat.py:46 +#: utils/dateformat.py:47 msgid "PM" msgstr "PM" -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "AM" msgstr "AM" -#: utils/dateformat.py:95 +#: utils/dateformat.py:97 msgid "midnight" msgstr "mitja nit" -#: utils/dateformat.py:97 +#: utils/dateformat.py:99 msgid "noon" msgstr "mig dia" -#: utils/translation/trans_real.py:358 +#: utils/translation/trans_real.py:391 msgid "DATE_FORMAT" msgstr "F j, Y" -#: utils/translation/trans_real.py:359 +#: utils/translation/trans_real.py:392 msgid "DATETIME_FORMAT" msgstr "F j, Y, H:i" -#: utils/translation/trans_real.py:360 +#: utils/translation/trans_real.py:393 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:376 +#: utils/translation/trans_real.py:409 msgid "YEAR_MONTH_FORMAT" msgstr "j de/d' F del Y" -#: utils/translation/trans_real.py:377 +#: utils/translation/trans_real.py:410 msgid "MONTH_DAY_FORMAT" msgstr "j de/d' F del Y" -#: oldforms/__init__.py:392 +#: template/defaultfilters.py:532 +msgid "yes,no,maybe" +msgstr "si,no,potser" + +#: template/defaultfilters.py:561 #, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Asseguris de que el seu texte té menys de %s caracter." -msgstr[1] "Asseguris de que el seu texte té menys de %s caracters." +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" -#: oldforms/__init__.py:397 -msgid "Line breaks are not allowed here." -msgstr "No es permeten salts de línia." - -#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#: template/defaultfilters.py:563 #, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Esculli una opció vàlida; %(data)s' no està dintre de %(choices)s." +msgid "%.1f KB" +msgstr "%.1f KB" -#: oldforms/__init__.py:674 -msgid "The submitted file is empty." -msgstr "El fitxer enviat està buit." - -#: oldforms/__init__.py:730 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Introdueixi un número enter entre -32,768 i 32,767." - -#: oldforms/__init__.py:740 -msgid "Enter a positive number." -msgstr "Introdueixi un número positiu." - -#: oldforms/__init__.py:750 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Introdueixi un número entre 0 i 32,767." - -#: views/generic/create_update.py:43 +#: template/defaultfilters.py:565 #, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "El/La %(verbose_name)s s'ha creat amb èxit." +msgid "%.1f MB" +msgstr "%.1f MB" -#: views/generic/create_update.py:117 +#: template/defaultfilters.py:566 #, python-format -msgid "The %(verbose_name)s was updated successfully." -msgstr "El/La %(verbose_name)s s'ha actualtzat amb èxit." +msgid "%.1f GB" +msgstr "%.1f GB" -#: views/generic/create_update.py:184 +#: newforms/fields.py:123 #, python-format -msgid "The %(verbose_name)s was deleted." -msgstr "El %(verbose_name)s s'ha eliminat." +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Asseguris de que el valor té com a màxim %(max)d caràcters (en té %(length)d)." -#: db/models/manipulators.py:307 +#: newforms/fields.py:125 #, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "Ja existeix un %(object)s del tipus %(type)s amb aquest %(field)s." +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "Asseguris de que el valor té com a mínim %(min)d caràcters (en té %(length)d)." -#: db/models/fields/__init__.py:46 +#: newforms/fields.py:151 +#: newforms/fields.py:174 +#: newforms/fields.py:204 #, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "Ja existeix %(optname)s amb auqest %(fieldname)s." +msgid "Ensure this value is less than or equal to %s." +msgstr "Aquest valor ha de ser menor o igual a %s." -#: db/models/fields/__init__.py:378 -msgid "This value must be an integer." -msgstr "Aquest valor ha de ser un enter." - -#: db/models/fields/__init__.py:413 -msgid "This value must be either True or False." -msgstr "Aquest valor ha de ser True (Veritat) o False (Fals)" - -#: db/models/fields/__init__.py:434 -msgid "This field cannot be null." -msgstr "Aquest camp no pot ser null (estar buit)." - -#: db/models/fields/__init__.py:597 -msgid "This value must be a decimal number." -msgstr "Aquest valor ha de ser un número decimal." - -#: db/models/fields/__init__.py:700 -msgid "Enter a valid filename." -msgstr "Introdueixi un nom de fitxer vàlid." - -#: db/models/fields/__init__.py:824 -msgid "This value must be either None, True or False." -msgstr "Aquest valor ha de ser None (Cap), True (Veritat) o False (Fals)" - -#: db/models/fields/related.py:54 +#: newforms/fields.py:153 +#: newforms/fields.py:176 +#: newforms/fields.py:206 #, python-format -msgid "Please enter a valid %s." -msgstr "Si us plau, introdueixi un %s vàlid." +msgid "Ensure this value is greater than or equal to %s." +msgstr "Asseguris de que aquest valor sigui superior o igual a %s." -#: db/models/fields/related.py:640 -msgid "Separate multiple IDs with commas." -msgstr "Separi múltiples IDs amb comes." +#: newforms/fields.py:172 +#: newforms/fields.py:199 +msgid "Enter a number." +msgstr "Introdueixi un número." -#: db/models/fields/related.py:642 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Premi \"Control\" o \"Command\" en un Mac per escollir més d'un." - -#: db/models/fields/related.py:689 +#: newforms/fields.py:208 #, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr "" -"Si us plau, introdueixi IDs de %(self)s vàlids. El valor %(value)r és " -"invàlid." -"Si us plau, introdueixi IDs de %(self)s vàlids. Els valors %(value)r són " -"invàlids." +msgid "Ensure that there are no more than %s digits in total." +msgstr "Asseguris de que no hi ha més de %s dígits en total." + +#: newforms/fields.py:210 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Asseguris de que no hi ha més de %s decimals." + +#: newforms/fields.py:212 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Asseguris de que no hia ha més de %s dígits decimals." + +#: newforms/fields.py:245 +#: newforms/fields.py:629 +msgid "Enter a valid date." +msgstr "Introdueixi una data vàlida." + +#: newforms/fields.py:272 +#: newforms/fields.py:631 +msgid "Enter a valid time." +msgstr "Introdueixi una hora vàlida." + +#: newforms/fields.py:308 +msgid "Enter a valid date/time." +msgstr "Introdueixi una data/hora vàlides." + +#: newforms/fields.py:321 +msgid "Enter a valid value." +msgstr "Introdueixi un valor vàlid." + +#: newforms/fields.py:379 +msgid "No file was submitted." +msgstr "No s'ha enviat cap fitxer." + +#: newforms/fields.py:419 +#: newforms/fields.py:444 +msgid "Enter a valid URL." +msgstr "Introdueixi una URL vàlida." + +#: newforms/fields.py:446 +msgid "This URL appears to be a broken link." +msgstr "Aquesta URL sembla ser un enllaç trencat." + +#: newforms/fields.py:497 +#: newforms/models.py:180 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Esculli una opció vàlida; Aquesta opció no és una de les opcions disponibles." + +#: newforms/fields.py:513 +#: newforms/fields.py:589 +#: newforms/models.py:197 +msgid "Enter a list of values." +msgstr "Introdueixi una llista de valors." + +#: newforms/fields.py:519 +#: newforms/models.py:203 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Esculli una opció vàlida; %s' no és una de les opcions vàlides." + +#~ msgid "" +#~ "This comment was posted by a user who has posted fewer than %(count)s " +#~ "comment:\n" +#~ "\n" +#~ "%(text)sThis comment was posted by a user who has posted fewer than %" +#~ "(count)s comments:\n" +#~ "\n" +#~ "%(text)s" +#~ msgstr "" +#~ "Aquest comentari el va enviar un usuari que ha enviat menys de %(count)s " +#~ "comentari:\n" +#~ "\n" +#~ "%(text)sAquest comentari el va enviar un usuari que ha enviat menys de %" +#~ "(count)s comentaris:\n" +#~ "\n" +#~ "%(text)s" +#~ msgid "AnonymousUser" +#~ msgstr "AnonymousUser" +#~ msgid "" +#~ "Please enter a valid decimal number with a whole part of at most %s digit." +#~ "Please enter a valid decimal number with a whole part of at most %s " +#~ "digits." +#~ msgstr "" +#~ "Si us plau, introdueixi un número decimal vàlid amb la part entera amb " +#~ "com a màxim %s dígit.Si us plau, introdueixi un número decimal vàlid amb " +#~ "la part entera amb com a màxim %s dígits." +#~ msgid "" +#~ "Please enter a valid decimal number with at most %s decimal place.Please " +#~ "enter a valid decimal number with at most %s decimal places." +#~ msgstr "" +#~ "Si us plau, introdueixi un número decimal vàlid amb no més de %s dígit en " +#~ "la part decimal.Si us plau, introdueixi un número decimal vàlid amb no " +#~ "més de %s dígits en la part decimal." +#~ msgid "%d milliseconds" +#~ msgstr "%d milisegons" diff --git a/django/conf/locale/el/LC_MESSAGES/django.mo b/django/conf/locale/el/LC_MESSAGES/django.mo index a048d87976..cfd591b051 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 d041a275e5..cc14eee072 100644 --- a/django/conf/locale/el/LC_MESSAGES/django.po +++ b/django/conf/locale/el/LC_MESSAGES/django.po @@ -1,1281 +1,290 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2006 and beyond -# This file is distributed under the same license as the PACKAGE package. +# translation of django.po to el +# Copyright (C) 2006 and beyond +# This file is distributed under the same license as the DJANGO package. # Panos Laganakos , Mar 2006. # -#, fuzzy +# Dimitris Glezos , 2007. msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:13+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Orestis Markou \n" -"Language-Team: Greek\n" +"POT-Creation-Date: 2007-04-05 01:32+1000\n" +"PO-Revision-Date: 2007-09-03 04:19+0100\n" +"Last-Translator: Dimitris Glezos \n" +"Language-Team: el \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 -msgid "object ID" -msgstr "ID αντικειμένου" +#: db/models/manipulators.py:307 +#, fuzzy, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "αντικείμενο με τύπος για πεδίο." -#: contrib/comments/models.py:68 -msgid "headline" -msgstr "Επικεφαλίδα" - -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 -msgid "comment" -msgstr "σχόλιο" - -#: contrib/comments/models.py:70 -msgid "rating #1" -msgstr "κατάταξη #1" - -#: contrib/comments/models.py:71 -msgid "rating #2" -msgstr "βαθμολογία #2" - -#: contrib/comments/models.py:72 -msgid "rating #3" -msgstr "βαθμολογία #3" - -#: contrib/comments/models.py:73 -msgid "rating #4" -msgstr "βαθμολογία #4" - -#: contrib/comments/models.py:74 -msgid "rating #5" -msgstr "βαθμολογία #5" - -#: contrib/comments/models.py:75 -msgid "rating #6" -msgstr "βαθμολογία #6" - -#: contrib/comments/models.py:76 -msgid "rating #7" -msgstr "βαθμολογία #7" - -#: contrib/comments/models.py:77 -msgid "rating #8" -msgstr "βαθμολογία #8" - -#: contrib/comments/models.py:82 -msgid "is valid rating" -msgstr "είναι έγκυρη βαθμολογία" - -#: contrib/comments/models.py:83 contrib/comments/models.py:169 -msgid "date/time submitted" -msgstr "ημερομηνία/ώρα υποβολής" - -#: contrib/comments/models.py:84 contrib/comments/models.py:170 -msgid "is public" -msgstr "είναι δημόσιο" - -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 -msgid "IP address" -msgstr "IP διεύθυνση" - -#: contrib/comments/models.py:86 -msgid "is removed" -msgstr "είναι διεγραμμένο" - -#: contrib/comments/models.py:86 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Σημειώστε αυτό το κουτί εάν το σχόλιο είναι ανάρμοστο. Ένα Αυτό το σχόλιο " -"εσβήσθει\" μήνυμα θα εμφανιστεί αντί αυτού." - -#: contrib/comments/models.py:91 -#, fuzzy -msgid "comments" -msgstr "σχόλιο" - -#: contrib/comments/models.py:131 contrib/comments/models.py:207 -msgid "Content object" -msgstr "" - -#: contrib/comments/models.py:159 -#, python-format -msgid "" -"Posted by %(user)s at %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" -msgstr "" -"Σχόλιο από τον/την %(user)s την %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" - -#: contrib/comments/models.py:168 -msgid "person's name" -msgstr "όνομα ατόμου" - -#: contrib/comments/models.py:171 -msgid "ip address" -msgstr "ip διεύθυνση" - -#: contrib/comments/models.py:173 -msgid "approved by staff" -msgstr "εγκεκριμένο από το προσωπικό" - -#: contrib/comments/models.py:176 -#, fuzzy -msgid "free comment" -msgstr "Ελεύθερο σχόλιο" - -#: contrib/comments/models.py:177 -#, fuzzy -msgid "free comments" -msgstr "Ελεύθερα σχόλια" - -#: contrib/comments/models.py:233 -msgid "score" -msgstr "βαθμολογία" - -#: contrib/comments/models.py:234 -msgid "score date" -msgstr "ημερομηνία βαθμολογίας" - -#: contrib/comments/models.py:237 -#, fuzzy -msgid "karma score" -msgstr "karma" - -#: contrib/comments/models.py:238 -msgid "karma scores" -msgstr "karma" - -#: contrib/comments/models.py:242 -#, python-format -msgid "%(score)d rating by %(user)s" -msgstr "" - -#: contrib/comments/models.py:258 -#, python-format -msgid "" -"This comment was flagged by %(user)s:\n" -"\n" -"%(text)s" -msgstr "" -"Αυτο το σχόλιο σημειώθηκε απο %(user)s\n" -"\n" -"%(text)s" - -#: contrib/comments/models.py:265 -msgid "flag date" -msgstr "" - -#: contrib/comments/models.py:268 -msgid "user flag" -msgstr "" - -#: contrib/comments/models.py:269 -msgid "user flags" -msgstr "" - -#: contrib/comments/models.py:273 -#, python-format -msgid "Flag by %r" -msgstr "" - -#: contrib/comments/models.py:278 -msgid "deletion date" -msgstr "ημερομηνία διαγραφής" - -#: contrib/comments/models.py:280 -msgid "moderator deletion" -msgstr "" - -#: contrib/comments/models.py:281 -msgid "moderator deletions" -msgstr "" - -#: contrib/comments/models.py:285 -#, python-format -msgid "Moderator deletion by %r" -msgstr "" - -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Ανώνυμοι χρήστες δέν μπορούν να ψηφήσουν" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "" - -#: contrib/comments/views/comments.py:28 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Αυτή η βαθμολογία απαιτείται επειδή τουλάχιστον ακόμα μια βαθμολογία" - -#: contrib/comments/views/comments.py:112 -#, python-format -msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" -"\n" -"%(text)s" -msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" -"\n" -"%(text)s" -msgstr[0] "" -msgstr[1] "" - -#: contrib/comments/views/comments.py:117 -#, python-format -msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" -msgstr "" - -#: contrib/comments/views/comments.py:189 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "" - -#: contrib/comments/views/comments.py:193 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "Ένα ή περισσότερα από τα απαιτούμενα πεδία δεν υπεβλήθει" - -#: contrib/comments/views/comments.py:197 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "" - -#: contrib/comments/views/comments.py:207 -#: contrib/comments/views/comments.py:292 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "" - -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Όνομα χρήστη:" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Κωδικός" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Ξεχάσατε τον κωδικό σας;" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Log out" -msgstr "Αποσύνδεση" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Βαθμολογίες" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Απαραίτητο" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Προαιρετικό" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "" - -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Σχόλιο:" - -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -msgid "Preview comment" -msgstr "Προεπισκόπηση σχολίου" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Το όνομα σας:" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"

          By %s:

          \n" -"
            \n" -msgstr "" -"

            Από %s:

            \n" -"
              \n" - -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 -msgid "All" -msgstr "Όλα" - -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "Όλες οι ημερομηνίες" - -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "Σήμερα" - -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "Τις προηγούμενες 7 ημέρες" - -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "Αυτό το μήνα" - -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "Αυτό το χρόνο" - -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Ναί" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Όχι" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Άγνωστο" - -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "" - -#: contrib/admin/models.py:19 -msgid "object id" -msgstr "" - -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "" - -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "" - -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "αλλάξτε το μήνυμα" - -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "" - -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "" - -#: contrib/admin/templatetags/admin_list.py:228 -msgid "All dates" -msgstr "Όλες οι ημερομηνίες" - -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Παρακαλώ εισάγετε ένα σωστό όνομα χρήστη και κωδικό. Να σημειωθεί ότι και τα " -"δύο πεδία είναι case-sensitive." - -#: contrib/admin/views/decorators.py:23 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Συνδεθείτε" - -#: contrib/admin/views/decorators.py:61 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Παρακαλώ ξανασυνδεθείτε, γιατί η session σας έληξε. Μην ανησυχείτε: Η " -"submission σας έχει αποθηκευτεί." - -#: contrib/admin/views/decorators.py:68 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Απ'οτι φαίνεται, ο φυλλομετρητής σας δεν έχει ρυθμιστεί να δέχεται cookies. " -"Παρακαλώ ενεργοποιείστε τα cookies, ξαναφορτώστε αυτή την σελίδα, και " -"δοκιμάστε ξανά." - -#: contrib/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "Τα ονόματα των χρηστών δεν μπορόυν να περιέχουν τον χαρακτήρα '@'." - -#: contrib/admin/views/decorators.py:84 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"Η ηλεκτρονική σας διεύθυνση δεν είναι το ονόμα χρήστη σας. Δοκιμάστε '%s' " -"έναντι αυτού." - -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "Διαχείριση του Διαδικτυακού χώρου" - -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "Το %(name)s \"%(obj)s\" αποθηκεύτηκε επιτυχώς." - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "Μπορείτε να το επεξεργαστείτε ξανα παρακάτω." - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 -#, python-format -msgid "You may add another %s below." -msgstr "Μπορείτε να προσθέσετε ακόμα ένα %s απο κάτω." - -#: contrib/admin/views/main.py:290 -#, python-format -msgid "Add %s" -msgstr "Προσθήκη %s" - -#: contrib/admin/views/main.py:336 -#, python-format -msgid "Added %s." -msgstr "Προστέθηκε %s." - -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 msgid "and" msgstr "και" -#: contrib/admin/views/main.py:338 +#: db/models/fields/related.py:53 #, python-format -msgid "Changed %s." -msgstr "Επεξεργάσθηκε %s." +msgid "Please enter a valid %s." +msgstr "Παρακαλούμε εισάγετε ένα έγκυρο %s." -#: contrib/admin/views/main.py:340 -#, python-format -msgid "Deleted %s." -msgstr "Διεγράφη %s." +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Ξεχωρίστε πολλαπλά ΙD με κόμματα." -#: contrib/admin/views/main.py:343 -msgid "No fields changed." -msgstr "Κανένα πεδίο δεν άλλαξε." - -#: contrib/admin/views/main.py:346 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "Το %(name)s \"%(obj)s\" επεξεργάσθηκε επιτυχώς." - -#: contrib/admin/views/main.py:354 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"Το %(name)s \"%(obj)s\" αποθηκεύθηκε επιτυχώς. Μπορείτε να το επεξεργαστείτε πάλι παρακάτω." - -#: contrib/admin/views/main.py:392 -#, python-format -msgid "Change %s" -msgstr "Αλλαγή %s" - -#: contrib/admin/views/main.py:470 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "" - -#: contrib/admin/views/main.py:475 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "" - -#: contrib/admin/views/main.py:508 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "" - -#: contrib/admin/views/main.py:511 -msgid "Are you sure?" -msgstr "Είστε σίγουρος;" - -#: contrib/admin/views/main.py:533 -#, python-format -msgid "Change history: %s" -msgstr "Ιστορικό Αλλαγών: %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s" -msgstr "Επιλογή %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s to change" -msgstr "Επιλέξτε %s προς αλλαγή" - -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 -msgid "Integer" -msgstr "Ακέραιος" - -#: contrib/admin/views/doc.py:278 -msgid "Boolean (Either True or False)" -msgstr "Boolean (Είτε Αληθές ή Ψέυδές)" - -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "" - -#: contrib/admin/views/doc.py:280 -msgid "Comma-separated integers" -msgstr "" - -#: contrib/admin/views/doc.py:281 -msgid "Date (without time)" -msgstr "Ημερομηνία (χωρίς την ώρα)" - -#: contrib/admin/views/doc.py:282 -msgid "Date (with time)" -msgstr "Ημερομηνία (με την ώρα)" - -#: contrib/admin/views/doc.py:283 -msgid "E-mail address" -msgstr "Ηλεκτρονική διεύθυνση" - -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 -msgid "File path" -msgstr "Τοποθεσία Αρχείου" - -#: contrib/admin/views/doc.py:285 -msgid "Decimal number" -msgstr "Δεκαδικός αριθμός" - -#: contrib/admin/views/doc.py:291 -msgid "Boolean (Either True, False or None)" -msgstr "" - -#: contrib/admin/views/doc.py:292 -msgid "Relation to parent model" -msgstr "Σχέση με το γονεϊκό μοντέλο" - -#: contrib/admin/views/doc.py:293 -msgid "Phone number" -msgstr "Αριθμός τηλεφώνου" - -#: contrib/admin/views/doc.py:298 -msgid "Text" -msgstr "Κείμενο" - -#: contrib/admin/views/doc.py:299 -msgid "Time" -msgstr "Ώρα" - -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "" - -#: contrib/admin/views/doc.py:301 -msgid "U.S. state (two uppercase letters)" -msgstr "" - -#: contrib/admin/views/doc.py:302 -msgid "XML text" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "Τεκμηρίωση" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Change password" -msgstr "Αλλαγή κωδικού" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Home" -msgstr "Home" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 -msgid "History" -msgstr "Ιστορικό" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Ημερομηνία/Ώρα" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Χρήστης" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Δράση" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "N j, Y, P" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Διαχειριστής ιστοσελίδας Django" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Διαχείριση Django" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Σφάλμα Διακομιστή" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Σφάλμα Διακομιστή (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Σφάλμα Διακομιστή (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Η σελίδα δε βρέθηκε." - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Διαθέσιμα μοντέλα στην εφαρμογή %(name)s." - -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "Προσθήκη" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Επεξεργασία" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Δεν έχετε άδεια να επεξεργαστείτε τίποτα." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Πρόσφατες Πράξεις" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Οι πράξεις μου" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Κανένα διαθέσιμο" - -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Προσθήκη %(name)s" - -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Ξεχάσατε τον κωδικό σας; " - -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Καλωσήρθατε," - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Διαγραφή" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" -msgstr "" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" -msgstr "" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Ναι, είμαι σίγουρος" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(title)s " -msgstr "" - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Πήγαινε" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Προβολή στην ιστοσελίδα" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Παρακαλώ διορθώστε το παρακάτω λάθος." -msgstr[1] "Παρακαλώ διορθώστε τα παρακάτω λάθη." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Σειρά" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Σειρά:" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Αποθήκευση καινούριου" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Αποθήκευση και προσθήκη καινούριου." - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Αποθήκευση και συνέχεια επεξεργασίας" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Αποθήκευση" - -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -msgid "Password change" -msgstr "Αλλαγή Κωδικού" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Αλλαγή κωδικού επιτυχής" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Ο κωδίκός σας άλλαξε." - -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -#: contrib/admin/templates/registration/password_reset_done.html:4 -msgid "Password reset" -msgstr "Επαναφορά κωδικού" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "E-mail διεύθυνση:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Επαναφορά του κωδικού μου" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "" -"Ευχαριστούμε που διαθέσατε χρόνο στο να βελτίωσετε την ιστοσελίδα σήμερα." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Εισαγωγή ξανά" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" - -#: contrib/admin/templates/registration/password_change_form.html:12 -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 "" - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Παλιός κωδικός:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Νέος κωδικός:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Επιβεβαίωση κωδικού" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Αλλαγή του κωδικού μου" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\n" -"

              To install bookmarklets, drag the link to your bookmarks\n" -"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" -"select the bookmarklet from any page in the site. Note that some of these\n" -"bookmarklets require you to be viewing the site from a computer designated\n" -"as \"internal\" (talk to your system administrator if you aren't sure if\n" -"your computer is \"internal\").

              \n" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "" - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Ημ/νία:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "     Ώρα:" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Τρέχον:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Αλλαγή:" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" - -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "" - -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." -msgstr "" - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "" - -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "" - -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "" - -#: contrib/auth/models.py:17 -msgid "permission" -msgstr "" - -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -msgid "permissions" -msgstr "" - -#: contrib/auth/models.py:29 -msgid "group" -msgstr "" - -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -msgid "groups" -msgstr "" - -#: contrib/auth/models.py:55 -msgid "username" -msgstr "" - -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "" - -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "" - -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "" - -#: contrib/auth/models.py:59 -msgid "password" -msgstr "" - -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "" - -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "" - -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "" - -#: contrib/auth/models.py:61 -msgid "active" -msgstr "" - -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "" - -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "" - -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "" - -#: contrib/auth/models.py:66 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" - -#: contrib/auth/models.py:67 -msgid "user permissions" -msgstr "" - -#: contrib/auth/models.py:70 +#: db/models/fields/related.py:644 #, fuzzy -msgid "user" -msgstr "Χρήστης" +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Αναμονή Έλεγχος ή Εντολή ενεργό a επιλογή περισσότερα ένα." -#: contrib/auth/models.py:71 +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Παρακαλούμε εισάγετε ένα έγκυρο %(self)s IDs. Η τιμή %(value)r δεν είναι " +"έγκυρη." +msgstr[1] "" +"Παρακαλούμε εισάγετε ένα έγκυρο %(self)s IDs. Οι τιμές %(value)r δεν είναι " +"έγκυρες." + +#: db/models/fields/__init__.py:42 +#, fuzzy, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "με." + +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376 +#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178 +msgid "This field is required." +msgstr "Αυτό το πεδίο είναι απαραίτητο." + +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "Αυτή η τιμή πρέπει να είναι ένας ακέραιος." + +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "Αυτή η τιμή πρέπει να είναι Αληθές ή Ψευδές." + +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "Αυτό το πεδίο δεν μπορεί να είναι κενό (null)." + +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Εισάγετε μία έγκυρη ημερομηνία στη μορφή ΧΧΧΧ-MM-ΗΗ." + +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Εισάγετε μία έγκυρη ημερομηνία/ώρα στη μορφή ΧΧΧΧ-MM-ΗΗ ΩΩ:ΛΛ." + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου." + +#: db/models/fields/__init__.py:751 #, fuzzy -msgid "users" -msgstr "Χρήστης" +msgid "This value must be either None, True or False." +msgstr "Αυτή η τιμή πρέπει να είναι Αληθές ή Ψευδές." -#: contrib/auth/models.py:76 -msgid "Personal info" +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Αραβικά" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Μπενγκάλι" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Καταλανικά" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "Τσέχικα" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "Ουαλικά" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "Δανέζικα" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "Γερμανικά" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "Ελληνικά" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "Αγγλικά" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "Ισπανικά" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "Ισπανικά Αργεντινής" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "Φινλανδικά" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "Γαλλικά" + +#: conf/global_settings.py:52 +msgid "Galician" msgstr "" -#: contrib/auth/models.py:77 -msgid "Permissions" +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Ουγγρικά" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "Εβραϊκά" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "Ισλανδικά" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "Ιταλικά" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "Γιαπωνέζικα" + +#: conf/global_settings.py:58 +msgid "Kannada" msgstr "" -#: contrib/auth/models.py:78 -msgid "Important dates" +#: conf/global_settings.py:59 +msgid "Latvian" msgstr "" -#: contrib/auth/models.py:79 -msgid "Groups" +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "Μακεδονικά" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "Ολλανδικά" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "Νορβηγικά" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "Πολωνικά" + +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "Πορτογαλικά" + +#: conf/global_settings.py:65 +msgid "Brazilian" +msgstr "Βραζιλιάνικα" + +#: conf/global_settings.py:66 +msgid "Romanian" +msgstr "Ρουμανικά" + +#: conf/global_settings.py:67 +msgid "Russian" +msgstr "Ρωσικά" + +#: conf/global_settings.py:68 +msgid "Slovak" +msgstr "Σλοβακικά" + +#: conf/global_settings.py:69 +msgid "Slovenian" +msgstr "Σλοβενικά" + +#: conf/global_settings.py:70 +msgid "Serbian" +msgstr "Σερβικά" + +#: conf/global_settings.py:71 +msgid "Swedish" +msgstr "Σουηδικά" + +#: conf/global_settings.py:72 +msgid "Tamil" +msgstr "Ταμιλικά" + +#: conf/global_settings.py:73 +msgid "Telugu" msgstr "" -#: contrib/auth/models.py:219 -#, fuzzy -msgid "message" -msgstr "αλλάξτε το μήνυμα" +#: conf/global_settings.py:74 +msgid "Turkish" +msgstr "Τουρκικά" -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Ο φυλλομετρητής σας δεν φαίνεται να έχει ενεργοποιημένα τα cookies. Τα " -"cookies απαιτούνται για να συνδεθείτε" +#: conf/global_settings.py:75 +msgid "Ukrainian" +msgstr "Ουκρανικά" -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "" +#: conf/global_settings.py:76 +msgid "Simplified Chinese" +msgstr "Απλοποιημένα Κινέζικα" -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "" +#: conf/global_settings.py:77 +msgid "Traditional Chinese" +msgstr "Παραδοσιακά Κινέζικα" -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "" +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "χρόνος" +msgstr[1] "χρόνια" -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "" +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "μήνας" +msgstr[1] "μήνες" -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "" +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "εβδομάδα" +msgstr[1] "εβδομάδες" -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "" +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "ημέρα" +msgstr[1] "ημέρες" -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "" +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "ώρα" +msgstr[1] "ώρες" -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "" - -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "N j, Y" - -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "N j, Y, P" - -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "P" +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "λεπτό" +msgstr[1] "λεπτά" #: utils/dates.py:6 msgid "Monday" @@ -1354,7 +363,6 @@ msgid "December" msgstr "Δεκέμβριος" #: utils/dates.py:19 -#, fuzzy msgid "jan" msgstr "Ιαν" @@ -1430,492 +438,2331 @@ msgstr "Νοέ." msgid "Dec." msgstr "Δεκ." -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "χρόνος" -msgstr[1] "χρόνια" +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "μμ." -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "μήνας" -msgstr[1] "μήνες" +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "πμ." -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "εβδομάδα" -msgstr[1] "εβδομάδες" +#: utils/dateformat.py:46 +msgid "PM" +msgstr "ΜΜ" -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "ημέρα" -msgstr[1] "ημέρες" +#: utils/dateformat.py:47 +msgid "AM" +msgstr "ΠΜ" -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "ώρα" -msgstr[1] "ώρες" +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "μεσάνυχτα" -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "λεπτό" -msgstr[1] "λεπτά" +#: utils/dateformat.py:97 +msgid "noon" +msgstr "μεσημέρι" -#: conf/global_settings.py:37 -msgid "Bengali" +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "j N Y" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "j N Y, P" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "j F" + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος μικρότερο από %s χαρακτήρα." +msgstr[1] "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος μικρότερο από %s χαρακτήρες." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Δεν επιτρέπονται αλλαγές γραμμών εδώ." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Επιλέξτε μια έγκυρη επιλογή; Το '%(data)s' δεν είναι στα %(choices)s." + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150 +#: newforms/widgets.py:174 +msgid "Unknown" +msgstr "Άγνωστο" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "Yes" +msgstr "Ναι" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "No" +msgstr "Όχι" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." msgstr "" -#: conf/global_settings.py:38 -msgid "Czech" +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Το αρχείο που υποβλήθηκε είναι κενό." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Εισάγετε έναν ακέραιο αριθμό μεταξύ -32,768 και 32,767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Εισάγετε ένα θετικό αριθμό." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Εισάγετε έναν ακέραιο αριθμό μεταξύ 0 και 32,767." + +#: contrib/localflavor/no/forms.py:15 +#, fuzzy +msgid "Enter a zip code in the format XXXX." +msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ." + +#: contrib/localflavor/no/forms.py:36 +#, fuzzy +msgid "Enter a valid Norwegian social security number." +msgstr "Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό." + +#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17 +#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16 +#, fuzzy +msgid "Enter a zip code in the format XXXXX." +msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." msgstr "" -#: conf/global_settings.py:39 -msgid "Welsh" +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" msgstr "" -#: conf/global_settings.py:40 -msgid "Danish" +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" msgstr "" -#: conf/global_settings.py:41 -msgid "German" +#: contrib/localflavor/jp/jp_prefectures.py:6 +#, fuzzy +msgid "Iwate" +msgstr "Ημ/νία:" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" msgstr "" -#: conf/global_settings.py:42 -msgid "Greek" +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" msgstr "" -#: conf/global_settings.py:43 -msgid "English" +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" msgstr "" -#: conf/global_settings.py:44 -msgid "Spanish" +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" msgstr "" -#: conf/global_settings.py:45 -msgid "French" +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" msgstr "" -#: conf/global_settings.py:46 -msgid "Galician" +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" msgstr "" -#: conf/global_settings.py:47 -msgid "Hungarian" +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" msgstr "" -#: conf/global_settings.py:48 -msgid "Hebrew" +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" msgstr "" -#: conf/global_settings.py:49 -msgid "Icelandic" +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" msgstr "" -#: conf/global_settings.py:50 -msgid "Italian" +#: contrib/localflavor/jp/jp_prefectures.py:16 +#, fuzzy +msgid "Tokyo" +msgstr "Σήμερα" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" msgstr "" -#: conf/global_settings.py:51 -msgid "Japanese" +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" msgstr "" -#: conf/global_settings.py:52 -msgid "Dutch" +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" msgstr "" -#: conf/global_settings.py:53 -msgid "Norwegian" +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" msgstr "" -#: conf/global_settings.py:54 -msgid "Brazilian" +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" msgstr "" -#: conf/global_settings.py:55 -msgid "Romanian" +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" msgstr "" -#: conf/global_settings.py:56 -msgid "Russian" +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" msgstr "" -#: conf/global_settings.py:57 -msgid "Slovak" +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" msgstr "" -#: conf/global_settings.py:58 -msgid "Slovenian" +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" msgstr "" -#: conf/global_settings.py:59 -msgid "Serbian" +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" msgstr "" -#: conf/global_settings.py:60 -msgid "Swedish" +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" msgstr "" -#: conf/global_settings.py:61 -msgid "Ukrainian" +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" msgstr "" -#: conf/global_settings.py:62 -msgid "Simplified Chinese" +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" msgstr "" -#: conf/global_settings.py:63 -msgid "Traditional Chinese" +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" msgstr "" -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" msgstr "" +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/br/forms.py:18 +#, fuzzy +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ." + +#: contrib/localflavor/br/forms.py:30 +#, fuzzy +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Τηλέφωνο μέσα είναι." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +#, fuzzy +msgid "Enter a valid Finnish social security number." +msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" + +#: contrib/localflavor/de/forms.py:63 +#, fuzzy +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format" +msgstr "Γερμανικά" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +#, fuzzy +msgid "Berlin" +msgstr "Βραζιλιάνικα" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +#, fuzzy +msgid "Hamburg" +msgstr "Αύγ" + +#: contrib/localflavor/de/de_states.py:11 +#, fuzzy +msgid "Hessen" +msgstr "μήνυμα" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/usa/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/usa/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "κλειδί συνεδρίας" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "δεδομένα συνεδρίας" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "ημερομηνία λήξης" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "συνεδρία" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "συνεδρίες" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Τα δύο πεδία συνθηματικών δεν ταιριάζουν." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Ένας χρήστης με αυτό το όνομα χρήστη υπάρχει ήδη." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Ο πλοηγητής σας δεν φαίνεται να έχει ενεργοποιημένα τα αρχεία cookie. Τα " +"αρχεία cookie απαιτούνται για να συνδεθείτε." + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Παρακαλούμε εισάγετε ένα σωστό όνομα χρήστη και συνθηματικό. Να σημειωθεί " +"ότι και τα δύο πεδία κάνουν διάκριση μεταξύ πεζών και κεφαλαίων." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Αυτός ο λογαριασμός είναι ανενεργός." + +#: contrib/auth/forms.py:85 +#, fuzzy +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "χρήστης?" + +#: contrib/auth/forms.py:117 +#, fuzzy +msgid "The two 'new password' fields didn't match." +msgstr "συνθηματικό." + +#: contrib/auth/forms.py:124 +#, fuzzy +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "συνθηματικό." + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Έγινε αποσύνδεση" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "όνομα" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "κωδικό όνομα" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "δικαίωμα" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "διακαιώματα" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "ομάδα" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "ομάδες" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "όνομα χρήστη" + +#: contrib/auth/models.py:90 +#, fuzzy +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "Απαραίτητο." + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "όνομα" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "επώνυμο" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "ηλεκτρονική διεύθυνση" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "συνθηματικό" + +#: contrib/auth/models.py:94 +#, fuzzy +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr " συνθηματικό." + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "Κατάσταση προσωπικού" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Ορίζει αν ο χρήστης μπορεί να συνδεθεί στο χώρο διαχείρισης." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "ενεργό" + +#: contrib/auth/models.py:96 +#, fuzzy +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Ορίζει αν ο χρήστης μπορεί να συνδεθεί στο χώρο διαχείρισης." + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "κατάσταση υπερχρήστη" + +#: contrib/auth/models.py:97 +#, fuzzy +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "χρήστης διακαιώματα." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "τελευταία σύνδεση" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "ημερομηνία σύνδεσης" + +#: contrib/auth/models.py:101 +#, fuzzy +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "Μέσα διακαιώματα χειρωνακτικά χρήστης get όλα διακαιώματα ομάδα είναι μέσα." + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "δικαιώματα χρήστη" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "χρήστης" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "χρήστες" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Προσωπικές πληροφορίες" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Δικαιώματα" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Σημαντικές ημερομηνίες" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Ομάδες" + +#: contrib/auth/models.py:258 +msgid "message" +msgstr "μήνυμα" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "η" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "η" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "η" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "η" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f εκατομμύριο" +msgstr[1] "%(value).1f εκατομμύρια" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f δισεκατομμύριο" +msgstr[1] "%(value).1f δισεκατομμύρια" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f τρισεκατομμύριο" +msgstr[1] "%(value).1f τρισεκατομμύρια" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "ένα" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "δύο" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "τρία" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "τέσσερα" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "πέντε" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "έξι" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "εφτά" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "οκτώ" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "εννιά" + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "όνομα python model class" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "τύπος περιεχομένου" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "τύποι περιεχομένου" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "ανακατεύθυνση από" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι, με εξαίρεση το όνομα χώρου. " +"Παράδειγμα: '/events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "ανακατεύθυνση προς" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι (όπως παραπάνω), ή ένα πλήρες URL " +"που αρχίζει με 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "ανακατεύθυνση" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "ανακατευθύνσεις" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 +msgid "URL" +msgstr "URL" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Παράδειγμα: '/about/contact/'. Βεβαιωθείτε ότι περιέχει καθέτους στην αρχή " +"και το τέλος." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "τίτλος" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "περιεχόμενο" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "ενεργοποίηση σχολίων" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "όνομα προτύπου" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Παράδειγμα: 'flatpages/contact_page.html'. Αν δεν εισαχθεί, το σύστημα θα " +"χρησιμοποιήσει το 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "απαιτείται εγγραφή" + +#: contrib/flatpages/models.py:14 +#, fuzzy +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "είναι μέσα χρήστες σελίδα." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "απλή σελίδα" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "απλές σελίδες" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "ID αντικειμένου" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "Επικεφαλίδα" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "σχόλιο" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "βαθμολογία #1" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "βαθμολογία #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "βαθμολογία #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "βαθμολογία #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "βαθμολογία #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "βαθμολογία #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "βαθμολογία #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "βαθμολογία #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "είναι έγκυρη βαθμολογία" + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "ημερομηνία/ώρα υποβολής" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "είναι δημόσιο" + +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +msgid "IP address" +msgstr "διεύθυνση IP" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "είναι διαγραμμένο" + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Επιλέξτε αυτό το κουτί ελέγχου εάν το σχόλιο είναι ανάρμοστο. Ένα μήνυμα " +"\"Αυτό το σχόλιο διαγράφηκε\" θα εμφανιστεί στη θέση του." + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "σχόλια" + +#: contrib/comments/models.py:131 contrib/comments/models.py:207 +msgid "Content object" +msgstr "Αντικείμενο περιεχομένου" + +#: contrib/comments/models.py:159 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Σχόλιο από %(user)s στις %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "όνομα ατόμου" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "διεύθυνση ip" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "εγκεκριμένο από το προσωπικό" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "ελεύθερο σχόλιο" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "ελεύθερα σχόλια" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "βαθμολογία" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "ημερομηνία βαθμολόγησης" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "σκορ κάρμα" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "σκορ κάρμα" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d βαθμολογία από %(user)s" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"Αυτό το σχόλιο σημειώθηκε από %(user)s\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "ημερομηνία σημείωσης" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "σημείωση χρήστη" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "σημειώσεις χρήστη" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "Σημείωση από %r" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "ημερομηνία διαγραφής" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "διαγραφή συντονιστή" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "διαγραφές συντονιστή" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Διαγραφή συντονιστή από %r" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "Όνομα χρήστη:" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Log out" +msgstr "Αποσύνδεση" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Συνθηματικό:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Ξεχάσατε το συνθηματικό σας;" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Βαθμολογίες" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Απαραίτητο" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Προαιρετικό" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Στείλτε μια φωτογραφία" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Σχόλιο:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Προεπισκόπηση σχολίου" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Το όνομα σας:" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Ανώνυμοι χρήστες δεν μπορούν να ψηφίσουν" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "Μη έγκυρο ID σχολίου" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Δεν επιτρέπεται ψήφος για τον εαυτό σας" + +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "" +"Αυτή η βαθμολογία απαιτείται επειδή έχετε εισάγει τουλάχιστον μία ακόμη " +"βαθμολογία." + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Αυτό το σχόλιο έχει αναρτηθεί από ένα χρήστη με λιγότερα από %(count)s " +"σχόλιο:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Αυτό το σχόλιο έχει αναρτηθεί από ένα χρήστη με λιγότερα από %(count)s " +"σχόλια:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Αυτό το σχόλιο αναρτήθηκε από έναν sketchy χρήστη:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Επιτρέπονται μόνο POST υποβολές" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Ένα ή περισσότερα από τα απαιτούμενα πεδία δεν έχουν υποβληθεί" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Κάποιος έχει πειράξει τη φόρμα σχολιασμού (παραβίαση ασφάλειας)" + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +#, fuzzy +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "σχόλιο αντικείμενο ID" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +#, fuzzy +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "σχόλιο t προεπισκόπηση ή" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "όνομα χώρου" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "εμφανιζόμενο όνομα" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "ιστότοπος" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "ιστότοποι" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

              By %s:

              \n" +"
                \n" +msgstr "" +"

                Από %s:

                \n" +"
                  \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "Όλα" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "Οποιαδήποτε ημερομηνία" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "Σήμερα" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "Τελευταίες 7 ημέρες" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "Αυτόν το μήνα" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "Αυτόν το χρόνο" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "ώρα ενέργειας" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "id αντικειμένου" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "repr αντικειμένου" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "σημαία ενέργειας" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "αλλαγή μηνύματος" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "εγγραφή καταγραφής" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "εγγραφές καταγραφής" + +#: contrib/admin/templatetags/admin_list.py:247 +msgid "All dates" +msgstr "Όλες οι ημερομηνίες" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "Αρχική" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "Τεκμηρίωση" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Σελιδοδείκτες" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "Αλλαγή συνθηματικού" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Σελιδοδείκτες τεκμηρίωσης" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +#, fuzzy +msgid "" +"\n" +"

                  To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                  \n" +msgstr "" +"\n" +"

                  δεσμός ή δεξιά δεσμός και αύξηση Τώρα υποφαινόμενο από " +"κάθε σελίδα μέσα site Σημείωση από υποφαινόμενο site από a σύστημα " +"υποφαινόμενο t είναι

                  n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Τεκμηρίωση για αυτήν τη σελίδα" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +#, fuzzy +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "Άλματα υποφαινόμενο από κάθε σελίδα τεκμηρίωση για σελίδα." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Εμφάνιση ID αντικειμένου" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +#, fuzzy +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "Περιεχόμενο τύπος και μοναδικό ID για σελίδες a single αντικείμενο." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Επεξεργασία αυτού του αντικειμένου (τρέχον παράθυρο)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +#, fuzzy +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Άλματα σελίδα για σελίδες a single αντικείμενο." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Επεξεργασία αυτού του αντικειμένου (νέο παράθυρο)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +#, fuzzy +msgid "As above, but opens the admin page in a new window." +msgstr "σελίδα μέσα a νέο παράθυρο." + +#: contrib/admin/templates/admin/submit_line.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:9 +msgid "Delete" +msgstr "Διαγραφή" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Αποθήκευση ως νέο" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Αποθήκευση και προσθήκη καινούριου" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Αποθήκευση και συνέχεια επεξεργασίας" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Αποθήκευση" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Σφάλμα εξυπηρετητή" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Σφάλμα εξυπηρετητή (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Σφάλμα εξυπηρετητή (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Υπήρξε ένα σφάλμα. Έχει αναφερθεί στους διαχειριστές του ιστότοπου μέσω ηλ. " +"ταχυδρομείου και θα πρέπει να επιδιορθωθεί σύντομα. Ευχαριστούμε για την " +"υπομονή σας." + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Ανά %(filter_title)s " + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Φίλτρο" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +#, fuzzy +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 "χρήστης." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Μετάβαση" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 αποτέλεσμα" +msgstr[1] "%(counter)s αποτελέσματα" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s συνολικά" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "Ιστορικό" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Ημερομηνία/ώρα" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Χρήστης" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Ενέργεια" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:36 +#, fuzzy +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "αντικείμενο t a t site." + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, fuzzy, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "Διαγραφή αντικείμενο μέσα λογαριασμός t δικαίωμα διαγραφή από:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, fuzzy, 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 "υποφαινόμενο υποφαινόμενο διαγραφή αντικείμενο Όλα από διαγράφηκε:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Ναι, είμαι βέβαιος" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Εμφάνιση όλων" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Προσθήκη %(name)s" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Προσθήκη" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Προβολή στην ιστοσελίδα" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Παρακαλούμε διορθώστε το παρακάτω λάθος." +msgstr[1] "Παρακαλούμε διορθώστε τα παρακάτω λάθη." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Ταξινόμηση" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Ταξινόμηση:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Καλωσήρθατε," + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Η σελίδα δε βρέθηκε" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Λυπόμαστε, αλλά η σελίδα που ζητήθηκε δε μπόρεσε να βρεθεί." + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 +msgid "Log in" +msgstr "Σύνδεση" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Διαθέσιμα μοντέλα στην εφαρμογή %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Επεξεργασία" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Δεν έχετε δικαίωμα να επεξεργαστείτε τίποτα." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Πρόσφατες ενέργειες" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Οι ενέργειες μου" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Κανένα διαθέσιμο" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Διαχειριστής ιστότοπου Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Διαχείριση Django" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +#, fuzzy +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "όνομα χρήστη συνθηματικό χρήστης." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Όνομα χρήστη" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "Συνθηματικό" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "Συνθηματικό (ξανά)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "Εισάγετε το ίδιο συνθηματικό όπως παραπάνω, για λόγους επιβεβαίωσης." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +#, fuzzy +msgid "Enter a new password for the user %(username)s." +msgstr "συνθηματικό χρήστης όνομα χρήστη." + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Τρέχουσα:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Αλλαγή:" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Ημ/νία:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Ώρα:" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Ευχαριστούμε που διαθέσατε κάποιο ποιοτικό χρόνο στον ιστότοπο σήμερα." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Σύνδεση ξανά" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +#, fuzzy +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "συνθηματικό" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, fuzzy, python-format +msgid "for your user account at %(site_name)s" +msgstr "για χρήστης λογαριασμός σε" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, fuzzy, python-format +msgid "Your new password is: %(new_password)s" +msgstr "νέο συνθηματικό είναι" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +#, fuzzy +msgid "Feel free to change this password by going to this page:" +msgstr "συνθηματικό από σελίδα:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +#, fuzzy +msgid "Your username, in case you've forgotten:" +msgstr "όνομα χρήστη μέσα υποφαινόμενο:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, fuzzy +msgid "Thanks for using our site!" +msgstr "Ευχαριστώ για site!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +#, fuzzy +msgid "The %(site_name)s team" +msgstr "ιστότοπος όνομα" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Επαναφορά συνθηματικού" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Επιτυχής επαναφορά συνθηματικού" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Ένα νέο συνθηματικό έχει αποσταλεί στην ηλεκτρονική διεύθυνση που έχετε " +"επιλέξει. Θα πρέπει να το παραλάβετε πολύ σύντομα." + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "Αλλαγή συνθηματικού" + +#: contrib/admin/templates/registration/password_change_form.html:12 +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 "" +"Παρακαλούμε εισάγετε το παλιό σας συνθηματικό, για λόγους ασφάλειας, και " +"κατόπιν εισάγετε το νέο σας συνθηματικό δύο φορές ούτως ώστε να " +"πιστοποιήσουμε ότι το πληκτρολογήσατε σωστά." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Παλιό συνθηματικό:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Νέο συνθηματικό:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Επιβεβαίωση συνθηματικού:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Αλλαγή του συνθηματικού μου" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Επιτυχής αλλαγή συνθηματικού" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Το συνθηματικό σας έχει αλλαχτεί." + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Έχετε ξεχάσει το συνθηματικό σας; Εισάγετε παρακάτω την ηλεκτρονική σας " +"διεύθυνση, και θα επαναφέρουμε το συνθηματικό σας, αποστέλλοντας το " +"καινούριο στην ηλ. σας διεύθυνση." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Ηλεκτρονική διεύθυνση:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Επαναφορά του συνθηματικού μου" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Διαχείριση του ιστότοπου" + +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "Το %(name)s \"%(obj)s\" αποθηκεύτηκε με επιτυχία." + +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:24 +msgid "You may edit it again below." +msgstr "Μπορείτε να το επεξεργαστείτε ξανά παρακάτω." + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "Μπορείτε να προσθέσετε ακόμα ένα %s παρακάτω." + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "Προσθήκη %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "Το %s προστέθηκε." + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "Έγινε επεξεργασία του %s." + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "Το %s διεγράφη." + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "Κανένα πεδίο δεν άλλαξε." + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Το %(name)s \"%(obj)s\" αλλάχτηκε με επιτυχία." + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"Το %(name)s \"%(obj)s\" αποθηκεύτηκε με επιτυχία. Μπορείτε να το " +"επεξεργαστείτε πάλι παρακάτω." + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "Αλλαγή του %s" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Ένα ή περισσότερα %(fieldname)s στο %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Ένα ή περισσότερα %(fieldname)s στο %(name)s:" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία." + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "Είστε σίγουροι;" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "Ιστορικό αλλαγών: %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "Επιλέξτε %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "Επιλέξτε %s προς αλλαγή" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Σφάλμα βάσης δεδομένων" + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Παρακαλούμε συνδεθείτε εκ νέου, γιατί η συνεδρία σας έχει λήξει. Μην " +"ανησυχείτε: Η υποβολή σας έχει αποθηκευτεί." + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Από ότι φαίνεται, ο πλοηγητής σας δεν έχει ρυθμιστεί να δέχεται cookies. " +"Παρακαλούμε ενεργοποιείστε τα cookies, φορτώστε ξανά αυτήν τη σελίδα και " +"δοκιμάστε ξανά." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Τα ονόματα χρηστών δεν επιτρέπεται να περιέχουν το χαρακτήρα '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Η ηλεκτρονική σας διεύθυνση δεν είναι το όνομα χρήστη σας. Δοκιμάστε '%s' " +"στη θέση αυτού." + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "ετικέτα:" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "φίλτρο:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "προβολή:" + +#: contrib/admin/views/doc.py:164 +#, fuzzy, python-format +msgid "App %r not found" +msgstr "Η σελίδα δε βρέθηκε" + +#: contrib/admin/views/doc.py:171 +#, python-format +#, fuzzy +msgid "Model %(name)r not found in app %(label)r" +msgstr "όνομα" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "μοντέλο:" + +#: contrib/admin/views/doc.py:214 +#, python-format +#, fuzzy +msgid "related `%(label)s.%(name)s` objects" +msgstr "όνομα" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "όλα %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +msgid "Integer" +msgstr "Ακέραιος" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Boolean (Είτε Αληθές ή Ψευδές)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "Συμβολοσειρά (μέχρι %(maxlength)s χαρακτήρες)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Ακέραιοι χωρισμένοι με κόμματα" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Ημερομηνία (χωρίς την ώρα)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Ημερομηνία (με την ώρα)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "Ηλεκτρονική διεύθυνση" + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "Τοποθεσία αρχείου" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "Δεκαδικός αριθμός" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (Αληθές, Ψευδές, ή τίποτα)" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "Σχέση με το γονικό μοντέλο" + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "Αριθμός τηλεφώνου" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "Κείμενο" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "Ώρα" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "Πολιτεία ΗΠΑ. (δύο κεφαλαία γράμματα)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "Κείμενο XML" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "Το %s δε φαίνεται να είναι ένα αντικείμενο urlpattern" + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Προσθήκη χρήστη" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Το συνθηματικό αλλάχτηκε με επιτυχία." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Αλλαγή συνθηματικού: %s" + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος το πολύ %d χαρακτήρες." + +#: newforms/fields.py:105 newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος τουλάχιστον %d χαρακτήρες." + +#: newforms/fields.py:128 core/validators.py:120 +msgid "Enter a whole number." +msgstr "Εισάγετε έναν ακέραιο αριθμό." + +#: newforms/fields.py:130 +#, fuzzy, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "τιμή a από." + +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "" + +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "Εισάγετε μια έγκυρη ημερομηνία." + +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "Εισάγετε μια έγκυρη ώρα." + +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "Εισάγετε μια έγκυρη ημερομηνία/ώρα." + +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "Εισάγετε μια έγκυρη τιμή." + +#: newforms/fields.py:271 core/validators.py:162 +msgid "Enter a valid e-mail address." +msgstr "Εισάγετε μια έγκυρη διεύθυνση ηλ. ταχυδρομείου." + +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "Εισάγετε ένα έγκυρο URL." + +#: newforms/fields.py:313 +#, fuzzy +msgid "This URL appears to be a broken link." +msgstr "Το URL %s είναι χαλασμένος σύνδεσμος." + +#: newforms/fields.py:362 newforms/models.py:165 +#, fuzzy +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Επιλέξτε μια έγκυρη επιλογή; Το '%(data)s' δεν είναι στα %(choices)s." + +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 +#, fuzzy +msgid "Enter a list of values." +msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου." + +#: newforms/fields.py:389 newforms/models.py:188 +#, fuzzy, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Επιλέξτε μια έγκυρη επιλογή; Το '%(data)s' δεν είναι στα %(choices)s." + +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "ναι,όχι,ίσως" + +#: views/generic/create_update.py:43 +#, fuzzy, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "Το %(name)s \"%(obj)s\" αλλάχτηκε με επιτυχία." + +#: views/generic/create_update.py:117 +#, fuzzy, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία." + +#: views/generic/create_update.py:184 +#, fuzzy, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία." + #: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Αυτή η τιμή πρέπει να περιέχει μόνο γράμματα, αριθμούς και υπογεγραμμένες." + +#: core/validators.py:68 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" +"Αυτή η τιμή πρέπει να περιέχει μόνο γράμματα, αριθμούς, υπογεγραμμένες, " +"παύλες ή καθέτους." #: core/validators.py:72 -msgid "Uppercase letters are not allowed here." +#, fuzzy +msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "" +"Αυτή η τιμή πρέπει να περιέχει μόνο γράμματα, αριθμούς, υπογεγραμμένες, " +"παύλες ή καθέτους." #: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Τα κεφαλαία γράμματα δεν επιτρέπονται εδώ." + +#: core/validators.py:80 msgid "Lowercase letters are not allowed here." -msgstr "" +msgstr "Τα πεζά γράμματα δεν επιτρέπονται εδώ." -#: core/validators.py:83 +#: core/validators.py:87 msgid "Enter only digits separated by commas." -msgstr "" - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "" +msgstr "Εισάγετε μόνο ψηφία χωρισμένα με κόμματα." #: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "" +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Εισάγετε έγκυρες ηλ. διευθύνσεις χωρισμένες με κόμματα." #: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "" +msgid "Please enter a valid IP address." +msgstr "Παρακαλούμε εισάγετε μια έγκυρη διεύθυνση IP." #: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "" +msgid "Empty values are not allowed here." +msgstr "Δεν επιτρέπονται κενές τιμές εδώ." #: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Δεν επιτρέπονται μη-αριθμητικοί χαρακτήρες εδώ." + +#: core/validators.py:115 msgid "This value can't be comprised solely of digits." -msgstr "" - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "" - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "" +msgstr "Αυτή η τιμή δεν μπορεί να αποτελείται μόνο από ψηφία." #: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." +msgid "Only alphabetical characters are allowed here." +msgstr "Μόνο αλφαβητικοί χαρακτήρες επιτρέπονται εδώ." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." msgstr "" -#: core/validators.py:128 +#: core/validators.py:143 +#, fuzzy, python-format +msgid "Invalid date: %s" +msgstr "Μη έγκυρο URL: %s" + +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." -msgstr "" +msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ." -#: core/validators.py:132 db/models/fields/__init__.py:468 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "" - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Εισάγετε ένα σωστό e-mail." - -#: core/validators.py:148 +#: core/validators.py:178 +#, fuzzy msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "" - -#: core/validators.py:155 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "" - -#: core/validators.py:159 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" - -#: core/validators.py:167 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "" - -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "" +msgstr "a εικόνα αρχείο υποφαινόμενο όχι εικόνα ή a εικόνα." #: core/validators.py:185 +#, fuzzy, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL όχι σημείο a εικόνα." + +#: core/validators.py:189 +#, fuzzy, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Τηλέφωνο μέσα είναι." + +#: core/validators.py:197 +#, fuzzy, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL όχι σημείο a." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Απαιτείται ένα έγκυρο URL." + +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" +"Απαιτείται έγκυρη HTML. Συγκεκριμένα σφάλματα είναι τα εξής:\n" +"%s" -#: core/validators.py:192 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" -msgstr "" +msgstr "Κακώς δομημένη XML: %s" -#: core/validators.py:202 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" -msgstr "" +msgstr "Μη έγκυρο URL: %s" -#: core/validators.py:206 core/validators.py:208 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." -msgstr "Η διεύθυνση (URL) %s είναι χαλασμένη σύνδεση." +msgstr "Το URL %s είναι χαλασμένος σύνδεσμος." -#: core/validators.py:214 +#: core/validators.py:252 +#, fuzzy msgid "Enter a valid U.S. state abbreviation." -msgstr "" +msgstr "a U συντομογραφία." -#: core/validators.py:229 -#, python-format +#: core/validators.py:266 +#, fuzzy, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Παρακολούθηση είναι όχι." +msgstr[1] "Παρακολούθηση είναι όχι." -#: core/validators.py:236 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." -msgstr "" +msgstr "Αυτό το πεδίο πρέπει να ταιριάζει με το πεδίο '%s'." -#: core/validators.py:255 +#: core/validators.py:292 +#, fuzzy msgid "Please enter something for at least one field." -msgstr "" +msgstr "για σε ένα πεδίο." -#: core/validators.py:264 core/validators.py:275 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." -msgstr "Παρακαλώ συμπληρώστε και τα δύο πεδία ή αφήστε τα και τα δύο άδεια." +msgstr "Παρακαλούμε συμπληρώστε και τα δύο πεδία ή αφήστε τα και τα δύο άδεια." -#: core/validators.py:282 -#, python-format +#: core/validators.py:320 +#, fuzzy, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "" +msgstr "πεδίο πεδίο είναι τιμή" -#: core/validators.py:294 -#, python-format +#: core/validators.py:333 +#, fuzzy, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "" - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "" - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "" - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Παρακαλώ είσάγετε έναν έγκυρο δεκαδίκο αριθμό." - -#: core/validators.py:349 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." -msgstr[0] "" -msgstr[1] "" +msgstr "πεδίο πεδίο είναι όχι τιμή" #: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Δεν επιτρέπονται διπλές τιμές." + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Αυτή η τιμή πρέπει να είναι μεταξύ %(lower)s και %(upper)s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Αυτή η τιμή πρέπει να είναι τουλάχιστον %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "Αυτή η τιμή πρέπει να είναι το πολύ %s." + +#: core/validators.py:407 +#, fuzzy, python-format +msgid "This value must be a power of %s." +msgstr "τιμή a από." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό." + +#: core/validators.py:422 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s ψηφίο " +"συνολικά." +msgstr[1] "" +"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s ψηφία " +"συνολικά." + +#: core/validators.py:425 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με ακέραιο μέρος το πολύ %s ψηφίο " +"συνολικά." +msgstr[1] "" +"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με ακέραιο μέρος το πολύ %s ψηφία " +"συνολικά." + +#: core/validators.py:428 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "" +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s δεκαδική θέση." msgstr[1] "" +"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s δεκαδικές " +"θέσεις." -#: core/validators.py:362 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Σιγουρευτείτε ότι το αρχείο που ανεβάζετε είναι %s bytes τουλάχιστον." +msgstr "Βεβαιωθείτε ότι το αρχείο που στέλνετε έχει μέγεθος τουλάχιστον %s ψηφία." -#: core/validators.py:363 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Σιγουρευτείτε ότι το αρχείο που ανεβάζετε έχει μέγεθος μέχρι %s bytes." +msgstr "Βεβαιωθείτε ότι το αρχείο που στέλνετε έχει μέγεθος το πολύ μέχρι %s ψηφία." -#: core/validators.py:376 +#: core/validators.py:456 msgid "The format for this field is wrong." -msgstr "Η διάταξη αυτού του πεδίου έιναι λάθος" +msgstr "Η μορφή αυτού του πεδίου είναι λανθασμένη." -#: core/validators.py:391 +#: core/validators.py:471 msgid "This field is invalid." -msgstr "Αυτό το πεδίο είναι άκυρο" +msgstr "Αυτό το πεδίο είναι μη έγκυρο." -#: core/validators.py:426 -#, python-format +#: core/validators.py:507 +#, fuzzy, python-format msgid "Could not retrieve anything from %s." -msgstr "" +msgstr "όχι Οτιδήποτε από." -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" +#: core/validators.py:510 +#, fuzzy, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "URL url Περιεχόμενο Τύπος." -#: core/validators.py:462 -#, python-format +#: core/validators.py:543 +#, fuzzy, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" -msgstr "" +msgstr "close από Γραμμή με έναρξη" -#: core/validators.py:466 -#, python-format +#: core/validators.py:547 +#, fuzzy, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" -msgstr "" +msgstr "κείμενο ενεργό είναι όχι μέσα Γραμμή με έναρξη" -#: core/validators.py:471 -#, python-format +#: core/validators.py:552 +#, fuzzy, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" -msgstr "" +msgstr "ενεργό είναι χαρακτηριστικό Γραμμή με έναρξη" -#: core/validators.py:476 -#, python-format +#: core/validators.py:557 +#, fuzzy, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" -msgstr "" +msgstr "ενεργό είναι Γραμμή με έναρξη" -#: core/validators.py:480 -#, python-format +#: core/validators.py:561 +#, fuzzy, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" -msgstr "" +msgstr "ενεργό είναι αγνοείται ένα ή περισσότερα Γραμμή με έναρξη" -#: core/validators.py:485 -#, python-format +#: core/validators.py:566 +#, fuzzy, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" -msgstr "" +msgstr "χαρακτηριστικό ενεργό τιμή Γραμμή με έναρξη" -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "" - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "Αυτό το πεδίο είναι απαραίτητο" - -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "" - -#: db/models/fields/__init__.py:369 -#, fuzzy -msgid "This value must be either True or False." -msgstr "Boolean (Είτε Αληθές ή Ψευδές)" - -#: db/models/fields/__init__.py:385 -#, fuzzy -msgid "This field cannot be null." -msgstr "Αυτό το πεδίο δεν μπορεί να είναι κενό (null)" - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου" - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Παρακαλώ εισάγετε ένα/μία έγκυρο/η %s" - -#: db/models/fields/related.py:579 -#, fuzzy -msgid "Separate multiple IDs with commas." -msgstr "Ξεχωρίστε πολλαπλές ΙDs με κόμματα" - -#: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" - -#: db/models/fields/related.py:625 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "" -msgstr[1] "" - -#: forms/__init__.py:380 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "" -msgstr[1] "" - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "" - -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "" - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "" - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "" - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "" - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "" - -#: template/defaultfilters.py:379 -msgid "yes,no,maybe" -msgstr "ναί,όχι,ίσως" - -#~ msgid "Comment" -#~ msgstr "Σχόλιο" - -#~ msgid "Comments" -#~ msgstr "Σχόλια" diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo index be8be19162..28d389b404 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 5f11644cfa..bf6d4ed6ae 100644 --- a/django/conf/locale/es/LC_MESSAGES/django.po +++ b/django/conf/locale/es/LC_MESSAGES/django.po @@ -6,775 +6,585 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-08-17 15:35-0400\n" -"PO-Revision-Date: 2007-07-14 13:00-0500\n" -"Last-Translator: Mario Gonzalez \n" +"POT-Creation-Date: 2007-09-14 12:41+0200\n" +"PO-Revision-Date: 2007-09-14 14:32+0100\n" +"Last-Translator: Marc Garcia \n" "Language-Team: Castellano \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: db/models/manipulators.py:309 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s de este %(type)s ya existen en este %(field)s." -#: db/models/manipulators.py:310 contrib/admin/views/main.py:342 -#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 -#: core/validators.py:275 +#: db/models/manipulators.py:310 +#: core/validators.py:283 +#: contrib/admin/views/main.py:342 +#: contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 msgid "and" msgstr "y" -#: db/models/fields/__init__.py:49 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "Ya existe %(optname)s con este %(fieldname)s." - -#: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313 -#: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732 -#: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566 -#: newforms/fields.py:577 newforms/models.py:193 oldforms/__init__.py:373 -msgid "This field is required." -msgstr "Este campo es obligatorio." - -#: db/models/fields/__init__.py:411 -msgid "This value must be an integer." -msgstr "Este valor debe ser un entero." - -#: db/models/fields/__init__.py:446 -msgid "This value must be either True or False." -msgstr "Este valor debe ser Verdadero o Falso." - -#: db/models/fields/__init__.py:467 -msgid "This field cannot be null." -msgstr "Este campo no puede estar vacío." - -#: db/models/fields/__init__.py:501 core/validators.py:155 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." - -#: db/models/fields/__init__.py:570 core/validators.py:164 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." - -#: db/models/fields/__init__.py:631 -msgid "This value must be a decimal number." -msgstr "Este valor debe ser un entero." - -#: db/models/fields/__init__.py:741 -msgid "Enter a valid filename." -msgstr "Introduzca un nombre de fichero válido" - -#: db/models/fields/__init__.py:883 -msgid "This value must be either None, True or False." -msgstr "Este valor debe ser Verdadero o Falso." - #: db/models/fields/related.py:55 #, python-format msgid "Please enter a valid %s." msgstr "Por favor, introduzca un %s válido." -#: db/models/fields/related.py:661 +#: db/models/fields/related.py:658 msgid "Separate multiple IDs with commas." msgstr "Separe múltiples IDs con comas." -#: db/models/fields/related.py:663 -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 " -"más de uno." +#: db/models/fields/related.py:660 +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 más de uno." -#: db/models/fields/related.py:710 +#: db/models/fields/related.py:707 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "" -"Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es " -"válido." -msgstr[1] "" -"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " -"válidos." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es válido." +msgstr[1] "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son válidos." -#: conf/global_settings.py:38 +#: db/models/fields/__init__.py:52 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "Ya existe %(optname)s con este %(fieldname)s." + +#: db/models/fields/__init__.py:159 +#: db/models/fields/__init__.py:316 +#: db/models/fields/__init__.py:724 +#: db/models/fields/__init__.py:735 +#: oldforms/__init__.py:373 +#: newforms/fields.py:93 +#: newforms/fields.py:509 +#: newforms/fields.py:585 +#: newforms/fields.py:596 +#: newforms/models.py:193 +msgid "This field is required." +msgstr "Este campo es obligatorio." + +#: db/models/fields/__init__.py:414 +msgid "This value must be an integer." +msgstr "Este valor debe ser un entero." + +#: db/models/fields/__init__.py:449 +msgid "This value must be either True or False." +msgstr "Este valor debe ser Verdadero o Falso." + +#: db/models/fields/__init__.py:470 +msgid "This field cannot be null." +msgstr "Este campo no puede estar vacío." + +#: db/models/fields/__init__.py:504 +#: core/validators.py:156 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." + +#: db/models/fields/__init__.py:573 +#: core/validators.py:165 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." + +#: db/models/fields/__init__.py:634 +msgid "This value must be a decimal number." +msgstr "Este valor debe ser un entero." + +#: db/models/fields/__init__.py:744 +msgid "Enter a valid filename." +msgstr "Introduzca un nombre de fichero válido" + +#: db/models/fields/__init__.py:887 +msgid "This value must be either None, True or False." +msgstr "Este valor debe ser Verdadero o Falso." + +#: conf/global_settings.py:39 msgid "Arabic" msgstr "Árabe" -#: conf/global_settings.py:39 +#: conf/global_settings.py:40 msgid "Bengali" msgstr "Bengalí" -#: conf/global_settings.py:40 +#: conf/global_settings.py:41 msgid "Bulgarian" msgstr "Búlgaro" -#: conf/global_settings.py:41 +#: conf/global_settings.py:42 msgid "Catalan" msgstr "Catalán" -#: conf/global_settings.py:42 +#: conf/global_settings.py:43 msgid "Czech" msgstr "Checo" -#: conf/global_settings.py:43 +#: conf/global_settings.py:44 msgid "Welsh" msgstr "Galés" -#: conf/global_settings.py:44 +#: conf/global_settings.py:45 msgid "Danish" msgstr "Danés" -#: conf/global_settings.py:45 +#: conf/global_settings.py:46 msgid "German" msgstr "Alemán" -#: conf/global_settings.py:46 +#: conf/global_settings.py:47 msgid "Greek" msgstr "Griego" -#: conf/global_settings.py:47 +#: conf/global_settings.py:48 msgid "English" msgstr "Inglés" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Spanish" msgstr "Español" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Argentinean Spanish" msgstr "Español Argentino" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "Persian" msgstr "Persa" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "Finnish" msgstr "Finés" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "French" msgstr "Francés" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "Galician" msgstr "Gallego" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Hungarian" msgstr "Húngaro" -#: conf/global_settings.py:55 +#: conf/global_settings.py:56 msgid "Hebrew" msgstr "Hebreo" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Croatian" msgstr "Croata" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 msgid "Icelandic" msgstr "Islandés" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Italian" msgstr "Italiano" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Japanese" msgstr "Japonés" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Korean" msgstr "Koreano" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 +msgid "Khmer" +msgstr "Khmer" + +#: conf/global_settings.py:63 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:62 +#: conf/global_settings.py:64 msgid "Latvian" msgstr "Latvio" -#: conf/global_settings.py:63 +#: conf/global_settings.py:65 msgid "Macedonian" msgstr "Macedonio" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Dutch" msgstr "Alemán" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Norwegian" msgstr "Noruego" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Polish" msgstr "Polaco" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Portugese" msgstr "Portugés" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Brazilian" msgstr "Brasileño" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Romanian" msgstr "Rumano" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Russian" msgstr "Ruso" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 msgid "Slovak" msgstr "Eslovaco" -#: conf/global_settings.py:72 +#: conf/global_settings.py:74 msgid "Slovenian" msgstr "Esloveno" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Serbian" msgstr "Serbio" -#: conf/global_settings.py:74 +#: conf/global_settings.py:76 msgid "Swedish" msgstr "Sueco" -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:76 +#: conf/global_settings.py:78 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Turkish" msgstr "Turco" -#: conf/global_settings.py:78 +#: conf/global_settings.py:80 msgid "Ukrainian" msgstr "Ucraniano" -#: conf/global_settings.py:79 +#: conf/global_settings.py:81 msgid "Simplified Chinese" msgstr "Chino simplificado" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Traditional Chinese" msgstr "Chino tradicional" -#: views/generic/create_update.py:43 -#, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "El %(verbose_name)s se ha creado correctamente." +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Este valor debe contener sólo letras, números y guiones bajos." -#: views/generic/create_update.py:117 -#, python-format -msgid "The %(verbose_name)s was updated successfully." -msgstr "Se actualizó con éxito el %(verbose_name)s." +#: core/validators.py:76 +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "Este valor debe contener letras, números, guiones bajos o barras solamente." -#: views/generic/create_update.py:184 -#, python-format -msgid "The %(verbose_name)s was deleted." -msgstr "El %(verbose_name)s ha sido eliminado." +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Este valor debe contener sólo letras, números, guiones bajos o medios." -#: utils/dates.py:6 -msgid "Monday" -msgstr "Lunes" +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "No se admiten letras mayúsculas." -#: utils/dates.py:6 -msgid "Tuesday" -msgstr "Martes" +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "No se admiten letras minúsculas." -#: utils/dates.py:6 -msgid "Wednesday" -msgstr "Miércoles" +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "Introduzca sólo dígitos separados por comas." -#: utils/dates.py:6 -msgid "Thursday" -msgstr "Jueves" +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Introduzca direcciones de correo válidas separadas por comas." -#: utils/dates.py:6 -msgid "Friday" -msgstr "Viernes" +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "Por favor introduzca una dirección IP válida." -#: utils/dates.py:7 -msgid "Saturday" -msgstr "Sábado" +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "No se admiten valores vacíos." -#: utils/dates.py:7 -msgid "Sunday" -msgstr "Domingo" +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "No se admiten caracteres no numéricos." -#: utils/dates.py:10 -msgid "Mon" -msgstr "Lun" +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "Este valor no puede comprender sólo dígitos." -#: utils/dates.py:10 -msgid "Tue" -msgstr "Mar" - -#: utils/dates.py:10 -msgid "Wed" -msgstr "Mie" - -#: utils/dates.py:10 -msgid "Thu" -msgstr "Jue" - -#: utils/dates.py:10 -msgid "Fri" -msgstr "Vie" - -#: utils/dates.py:11 -msgid "Sat" -msgstr "Sab" - -#: utils/dates.py:11 -msgid "Sun" -msgstr "Dom" - -#: utils/dates.py:18 -msgid "January" -msgstr "Enero" - -#: utils/dates.py:18 -msgid "February" -msgstr "Febrero" - -#: utils/dates.py:18 utils/dates.py:31 -msgid "March" -msgstr "Marzo" - -#: utils/dates.py:18 utils/dates.py:31 -msgid "April" -msgstr "Abril" - -#: utils/dates.py:18 utils/dates.py:31 -msgid "May" -msgstr "Mayo" - -#: utils/dates.py:18 utils/dates.py:31 -msgid "June" -msgstr "Junio" - -#: utils/dates.py:19 utils/dates.py:31 -msgid "July" -msgstr "Julio" - -#: utils/dates.py:19 -msgid "August" -msgstr "Agosto" - -#: utils/dates.py:19 -msgid "September" -msgstr "Septiembre" - -#: utils/dates.py:19 -msgid "October" -msgstr "Octubre" - -#: utils/dates.py:19 -msgid "November" -msgstr "Noviembre" - -#: utils/dates.py:20 -msgid "December" -msgstr "Diciembre" - -#: utils/dates.py:23 -msgid "jan" -msgstr "ene" - -#: utils/dates.py:23 -msgid "feb" -msgstr "feb" - -#: utils/dates.py:23 -msgid "mar" -msgstr "mar" - -#: utils/dates.py:23 -msgid "apr" -msgstr "abr" - -#: utils/dates.py:23 -msgid "may" -msgstr "may" - -#: utils/dates.py:23 -msgid "jun" -msgstr "jun" - -#: utils/dates.py:24 -msgid "jul" -msgstr "jul" - -#: utils/dates.py:24 -msgid "aug" -msgstr "ago" - -#: utils/dates.py:24 -msgid "sep" -msgstr "sep" - -#: utils/dates.py:24 -msgid "oct" -msgstr "oct" - -#: utils/dates.py:24 -msgid "nov" -msgstr "nov" - -#: utils/dates.py:24 -msgid "dec" -msgstr "dic" - -#: utils/dates.py:31 -msgid "Jan." -msgstr "Ene." - -#: utils/dates.py:31 -msgid "Feb." -msgstr "Feb." - -#: utils/dates.py:32 -msgid "Aug." -msgstr "Ago." - -#: utils/dates.py:32 -msgid "Sept." -msgstr "Sept." - -#: utils/dates.py:32 -msgid "Oct." -msgstr "Oct." - -#: utils/dates.py:32 -msgid "Nov." -msgstr "Nov." - -#: utils/dates.py:32 -msgid "Dec." -msgstr "Dic." - -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "año" -msgstr[1] "años" - -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "mes" -msgstr[1] "meses" - -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "semana" -msgstr[1] "semanas" - -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "día" -msgstr[1] "días" - -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "hora" -msgstr[1] "horas" - -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuto" -msgstr[1] "minutos" - -#: utils/timesince.py:39 -#, python-format -msgid "%(number)d %(type)s" -msgstr "%(number)d %(type)s" - -#: utils/timesince.py:45 -#, python-format -msgid ", %(number)d %(type)s" -msgstr ", %(number)d %(type)s" - -#: utils/text.py:127 -msgid "or" -msgstr "o" - -#: utils/dateformat.py:41 -msgid "p.m." -msgstr "p.m" - -#: utils/dateformat.py:42 -msgid "a.m." -msgstr "a.m" - -#: utils/dateformat.py:47 -msgid "PM" -msgstr "PM" - -#: utils/dateformat.py:48 -msgid "AM" -msgstr "AM" - -#: utils/dateformat.py:97 -msgid "midnight" -msgstr "media noche" - -#: utils/dateformat.py:99 -msgid "noon" -msgstr "medio día" - -#: utils/translation/trans_real.py:391 -msgid "DATE_FORMAT" -msgstr "j N Y" - -#: utils/translation/trans_real.py:392 -msgid "DATETIME_FORMAT" -msgstr "j N Y P" - -#: utils/translation/trans_real.py:393 -msgid "TIME_FORMAT" -msgstr "P" - -#: utils/translation/trans_real.py:409 -msgid "YEAR_MONTH_FORMAT" -msgstr "F Y" - -#: utils/translation/trans_real.py:410 -msgid "MONTH_DAY_FORMAT" -msgstr "j \\de F" - -#: newforms/fields.py:116 -#, python-format -msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "" -"Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente " -"tiene %(length)d)." - -#: newforms/fields.py:118 -#, python-format -msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "" -"Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente " -"tiene %(length)d)." - -#: newforms/fields.py:142 core/validators.py:127 +#: core/validators.py:128 +#: newforms/fields.py:149 msgid "Enter a whole number." msgstr "Introduzca un número entero." -#: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197 +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "Sólo se admiten caracteres alfabéticos." + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "El año debe ser 1900 o posterior." + +#: core/validators.py:151 #, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Asegúrese de que este valor es menor o igual a %s." +msgid "Invalid date: %s" +msgstr "Fecha no válida: %s" -#: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Asegúrese de que este valor es mayor o igual a %s." +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "Introduzca una hora válida en formato HH:MM." -#: newforms/fields.py:165 newforms/fields.py:192 -msgid "Enter a number." -msgstr "Introduzca un número." - -#: newforms/fields.py:201 -#, python-format -msgid "Ensure that there are no more than %s digits in total." -msgstr "Asegúrese de que no hay más de %s dígitos en total." - -#: newforms/fields.py:203 -#, python-format -msgid "Ensure that there are no more than %s decimal places." -msgstr "Asegúrese de que no hay más de %s decimales." - -#: newforms/fields.py:205 -#, python-format -msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Asegúrese de que no hay más de %s dígitos antes del punto decimal." - -#: newforms/fields.py:238 newforms/fields.py:610 -msgid "Enter a valid date." -msgstr "Introduzca una fecha válida." - -#: newforms/fields.py:265 newforms/fields.py:612 -msgid "Enter a valid time." -msgstr "Introduzca una hora válida." - -#: newforms/fields.py:301 -msgid "Enter a valid date/time." -msgstr "Introduzca una fecha/hora válida." - -#: newforms/fields.py:314 -msgid "Enter a valid value." -msgstr "Introduzca un valor correcto." - -#: newforms/fields.py:336 core/validators.py:169 +#: core/validators.py:170 +#: newforms/fields.py:343 msgid "Enter a valid e-mail address." msgstr "Introduzca una dirección de correo electrónico válida" -#: newforms/fields.py:376 oldforms/__init__.py:686 core/validators.py:181 -#: core/validators.py:461 +#: core/validators.py:182 +#: core/validators.py:469 +#: oldforms/__init__.py:686 +#: newforms/fields.py:377 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 " -"formulario." +msgstr "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el formulario." -#: newforms/fields.py:378 -msgid "No file was submitted." -msgstr "No se ha enviado ningún fichero" +#: core/validators.py:193 +#: newforms/fields.py:405 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Envíe una imagen válida. El fichero que ha enviado no era una imagen o se trataba de una imagen corrupta." -#: newforms/fields.py:380 oldforms/__init__.py:688 -msgid "The submitted file is empty." -msgstr "El fichero enviado está vacío." +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "La URL %s no apunta a una imagen válida." -#: newforms/fields.py:397 core/validators.py:185 +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es válido." + +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "La URL %s no apunta a un vídeo QuickTime válido." + +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "Se precisa una URL válida." + +#: core/validators.py:230 +#, python-format msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." +"Valid HTML is required. Specific errors are:\n" +"%s" msgstr "" -"Envíe una imagen válida. El fichero que ha enviado no era una imagen o se " -"trataba de una imagen corrupta." +"Se precisa HTML válido. Los errores específicos son:\n" +"%s" -#: newforms/fields.py:403 newforms/fields.py:425 -msgid "Enter a valid URL." -msgstr "Introduzca una URL válida." - -#: newforms/fields.py:427 -msgid "This URL appears to be a broken link." -msgstr "La URL parece ser un enlace roto." - -#: newforms/fields.py:478 newforms/models.py:180 -msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Escoja una opción válida. Esa opción no está entre las aceptadas." - -#: newforms/fields.py:494 newforms/fields.py:570 newforms/models.py:197 -msgid "Enter a list of values." -msgstr "Introduzca una lista de valores." - -#: newforms/fields.py:500 newforms/models.py:203 +#: core/validators.py:237 #, python-format -msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles." +msgid "Badly formed XML: %s" +msgstr "XML mal formado: %s" -#: newforms/widgets.py:188 contrib/admin/filterspecs.py:152 -#: oldforms/__init__.py:591 -msgid "Unknown" -msgstr "Desconocido" - -#: newforms/widgets.py:188 contrib/admin/filterspecs.py:145 -#: oldforms/__init__.py:591 -msgid "Yes" -msgstr "Sí" - -#: newforms/widgets.py:188 contrib/admin/filterspecs.py:145 -#: oldforms/__init__.py:591 -msgid "No" -msgstr "No" - -#: contrib/contenttypes/models.py:37 -msgid "python model class name" -msgstr "nombre de módulo python" - -#: contrib/contenttypes/models.py:40 -msgid "content type" -msgstr "tipo de contenido" - -#: contrib/contenttypes/models.py:41 -msgid "content types" -msgstr "tipos de contenido" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "th" -msgstr "th" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "st" -msgstr "st" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "nd" -msgstr "nd" - -#: contrib/humanize/templatetags/humanize.py:17 -msgid "rd" -msgstr "rd" - -#: contrib/humanize/templatetags/humanize.py:47 +#: core/validators.py:254 #, python-format -msgid "%(value).1f million" -msgid_plural "%(value).1f million" -msgstr[0] "%(value).1f millón" -msgstr[1] "%(value).1f millión" +msgid "Invalid URL: %s" +msgstr "URL no válida: %s" -#: contrib/humanize/templatetags/humanize.py:50 +#: core/validators.py:259 +#: core/validators.py:261 #, python-format -msgid "%(value).1f billion" -msgid_plural "%(value).1f billion" -msgstr[0] "%(value).1f billión" -msgstr[1] "%(value).1f billión" +msgid "The URL %s is a broken link." +msgstr "La URL %s es un enlace roto." -#: contrib/humanize/templatetags/humanize.py:53 +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Introduzca una abreviatura válida de estado de los EEUU." + +#: core/validators.py:281 #, python-format -msgid "%(value).1f trillion" -msgid_plural "%(value).1f trillion" -msgstr[0] "%(value).1f trillión" -msgstr[1] "%(value).1f trillión" +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "¡Cuida tu vocabulario! Aquí no admitimos la palabra %s." +msgstr[1] "¡Cuida tu vocabulario! Aquí no admitimos las palabras %s." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "one" -msgstr "uno" +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Este campo debe concordar con el campo '%s'." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "two" -msgstr "dos" +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "Por favor, introduzca algo en al menos un campo." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "three" -msgstr "tres" +#: core/validators.py:316 +#: core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "Por favor, rellene ambos campos o deje ambos vacíos." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "four" -msgstr "cuatro" +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Se debe proporcionar este campo si %(field)s es %(value)s" -#: contrib/humanize/templatetags/humanize.py:68 -msgid "five" -msgstr "cinco" +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s" -#: contrib/humanize/templatetags/humanize.py:68 -msgid "six" -msgstr "seis" +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "No se admiten valores duplicados." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "seven" -msgstr "siete" +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Este valor debe estar entre %(lower)s y %(upper)s." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "eight" -msgstr "ocho" +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "Este valor debe ser como mínimo %s." -#: contrib/humanize/templatetags/humanize.py:68 -msgid "nine" -msgstr "nueve" +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "Este valor no debe ser mayor que %s." -#: contrib/auth/views.py:47 -msgid "Logged out" -msgstr "Sesión terminada" +#: core/validators.py:422 +#, python-format +msgid "This value must be a power of %s." +msgstr "Este valor debe ser una potencia de %s." -#: contrib/auth/models.py:53 contrib/auth/models.py:73 +#: core/validators.py:432 +msgid "Please enter a valid decimal number." +msgstr "Por favor, introduzca un número decimal válido." + +#: core/validators.py:439 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito en total." +msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos en total." + +#: core/validators.py:442 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito en su parte entera." +msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos en su parte entera." + +#: core/validators.py:445 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito decimal." +msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos decimales." + +#: core/validators.py:453 +msgid "Please enter a valid floating point number." +msgstr "Por favor, introduzca un número decimal válido." + +#: core/validators.py:462 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Asegúrese de que el fichero que envía tiene al menos %s bytes." + +#: core/validators.py:463 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Asegúrese de que el fichero que envía tiene como máximo %s bytes." + +#: core/validators.py:480 +msgid "The format for this field is wrong." +msgstr "El formato de este campo es incorrecto." + +#: core/validators.py:495 +msgid "This field is invalid." +msgstr "Este campo no es válido." + +#: core/validators.py:531 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "No pude obtener nada de %s." + +#: core/validators.py:534 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no es válida." + +#: core/validators.py:567 +#, python-format +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea empieza por \"%(start)s\".)" + +#: core/validators.py:571 +#, python-format +msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" +msgstr "Parte del texto que comienza en la línea %(line)s no está permitido en ese contexto. (La línea empieza por \"%(start)s\".)" + +#: core/validators.py:576 +#, python-format +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea empieza por \"%(start)s\".)" + +#: core/validators.py:581 +#, python-format +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea empieza por \"%(start)s\".)" + +#: core/validators.py:585 +#, python-format +msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" +msgstr "A una etiqueta de la línea %(line)s le faltan uno o más atributos requeridos. (La línea empieza por \"%(start)s\".)" + +#: core/validators.py:590 +#, python-format +msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" +msgstr "El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es válido. (La línea empieza por \"%(start)s\".)" + +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Las dos contraseñas no coinciden." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Ya existe un usuario con este nombre." + +#: contrib/auth/forms.py:53 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "Tu navegador de internet parece no tener las cookies habilitadas. Las cookies se necesitan para poder ingresar." + +#: contrib/auth/forms.py:60 +#: contrib/admin/views/decorators.py:10 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "Por favor, introduzca un correcto nombre de usuario y contraseña. Note que ambos campos son sensibles a mayúsculas/minúsculas." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Esta cuenta está inactiva." + +#: contrib/auth/forms.py:84 +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "Esta dirección de correo electrónico no tiene una cuenta de usuario asociada. ¿Está seguro de que se ha registrado?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla correctamente." + +#: contrib/auth/models.py:53 +#: contrib/auth/models.py:73 msgid "name" msgstr "nombre" @@ -786,7 +596,8 @@ msgstr "nombre en código" msgid "permission" msgstr "permiso" -#: contrib/auth/models.py:59 contrib/auth/models.py:74 +#: contrib/auth/models.py:59 +#: contrib/auth/models.py:74 msgid "permissions" msgstr "permisos" @@ -794,7 +605,8 @@ msgstr "permisos" msgid "group" msgstr "grupo" -#: contrib/auth/models.py:78 contrib/auth/models.py:121 +#: contrib/auth/models.py:78 +#: contrib/auth/models.py:121 msgid "groups" msgstr "grupos" @@ -803,12 +615,8 @@ msgid "username" msgstr "nombre de usuario" #: contrib/auth/models.py:111 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "" -"Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, " -"dígitos y guiones bajos)." +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." +msgstr "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, dígitos y guiones bajos)." #: contrib/auth/models.py:112 msgid "first name" @@ -827,12 +635,8 @@ msgid "password" msgstr "clave" #: contrib/auth/models.py:115 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "" -"Use'[algo]$[sal]$[hash hexadecimal]' o use el " -"formulario para cambiar la contraseña." +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "Use'[algo]$[sal]$[hash hexadecimal]' o use el formulario para cambiar la contraseña." #: contrib/auth/models.py:116 msgid "staff status" @@ -847,24 +651,16 @@ msgid "active" msgstr "activo" #: contrib/auth/models.py:117 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "" -"Indica si el usuario puede entrar en este sitio de administración. Desmarque " -"esto en lugar de borrar la cuenta." +msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." +msgstr "Indica si el usuario puede entrar en este sitio de administración. Desmarque esto en lugar de borrar la cuenta." #: contrib/auth/models.py:118 msgid "superuser status" msgstr "es superusuario" #: contrib/auth/models.py:118 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" -"Indica que este usuario tiene todos los permisos sin asignárselos " -"explícitamente." +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "Indica que este usuario tiene todos los permisos sin asignárselos explícitamente." #: contrib/auth/models.py:119 msgid "last login" @@ -875,12 +671,8 @@ msgid "date joined" msgstr "fecha de creación" #: contrib/auth/models.py:122 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Además de los permisos asignados manualmente, este usuario también tendrá " -"todos los permisos de los grupos en los que esté." +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "Además de los permisos asignados manualmente, este usuario también tendrá todos los permisos de los grupos en los que esté." #: contrib/auth/models.py:123 msgid "user permissions" @@ -910,80 +702,1021 @@ msgstr "Fechas importantes" msgid "Groups" msgstr "Grupos" -#: contrib/auth/models.py:287 +#: contrib/auth/models.py:288 msgid "message" msgstr "mensaje" -#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 -msgid "The two password fields didn't match." -msgstr "Las dos contraseñas no coinciden." +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Sesión terminada" -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "Ya existe un usuario con este nombre." +#: contrib/admin/models.py:17 +msgid "action time" +msgstr "hora de acción" -#: contrib/auth/forms.py:53 +#: contrib/admin/models.py:20 +msgid "object id" +msgstr "id de objeto" + +#: contrib/admin/models.py:21 +msgid "object repr" +msgstr "repr de objeto" + +#: contrib/admin/models.py:22 +msgid "action flag" +msgstr "marca de acción" + +#: contrib/admin/models.py:23 +msgid "change message" +msgstr "mensaje de cambio" + +#: contrib/admin/models.py:26 +msgid "log entry" +msgstr "entrada de registro" + +#: contrib/admin/models.py:27 +msgid "log entries" +msgstr "entradas de registro" + +#: contrib/admin/filterspecs.py:42 +#, python-format msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." +"

                  By %s:

                  \n" +"
                    \n" msgstr "" -"Tu navegador de internet parece no tener las cookies habilitadas. Las " -"cookies se necesitan para poder ingresar." +"

                    Por %s:

                    \n" +"
                      \n" -#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +#: contrib/admin/filterspecs.py:72 +#: contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 +#: contrib/admin/filterspecs.py:171 +msgid "All" +msgstr "Todo" + +#: contrib/admin/filterspecs.py:111 +msgid "Any date" +msgstr "Cualquier fecha" + +#: contrib/admin/filterspecs.py:112 +msgid "Today" +msgstr "Hoy" + +#: contrib/admin/filterspecs.py:115 +msgid "Past 7 days" +msgstr "Últimos 7 días" + +#: contrib/admin/filterspecs.py:117 +msgid "This month" +msgstr "Este mes" + +#: contrib/admin/filterspecs.py:119 +msgid "This year" +msgstr "Este año" + +#: contrib/admin/filterspecs.py:145 +#: oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "Yes" +msgstr "Sí" + +#: contrib/admin/filterspecs.py:145 +#: oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "No" +msgstr "No" + +#: contrib/admin/filterspecs.py:152 +#: oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "Unknown" +msgstr "Desconocido" + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Identificarse" + +#: contrib/admin/views/decorators.py:62 +msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." +msgstr "Por favor, identifíquese de nuevo, porque su sesión ha caducado. No se preocupe: se ha guardado su envío." + +#: contrib/admin/views/decorators.py:69 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "Parece que su navegador no está configurado para aceptar cookies. Actívelas por favor, recargue esta página, e inténtelo de nuevo." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Los nombres de usuario no pueden contener el carácter '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su lugar." + +#: contrib/admin/views/main.py:230 +msgid "Site administration" +msgstr "Sitio administrativo" + +#: contrib/admin/views/main.py:264 +#: contrib/admin/views/auth.py:20 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"." + +#: contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 +#: contrib/admin/views/auth.py:25 +msgid "You may edit it again below." +msgstr "Puede editarlo de nuevo abajo." + +#: contrib/admin/views/main.py:278 +#: contrib/admin/views/main.py:363 +#, python-format +msgid "You may add another %s below." +msgstr "Puede agregar otro %s abajo." + +#: contrib/admin/views/main.py:296 +#, python-format +msgid "Add %s" +msgstr "Agregar %s" + +#: contrib/admin/views/main.py:342 +#, python-format +msgid "Added %s." +msgstr "Agregado %s." + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Changed %s." +msgstr "Modificado %s." + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Deleted %s." +msgstr "Borrado %s." + +#: contrib/admin/views/main.py:349 +msgid "No fields changed." +msgstr "No ha cambiado ningún campo." + +#: contrib/admin/views/main.py:352 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Se modificó con éxito el %(name)s \"%(obj)s." + +#: contrib/admin/views/main.py:360 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "Se agregó con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." + +#: contrib/admin/views/main.py:398 +#, python-format +msgid "Change %s" +msgstr "Modificar %s" + +#: contrib/admin/views/main.py:483 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:488 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Uno o más %(fieldname)s en %(name)s:" + +#: contrib/admin/views/main.py:520 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"." + +#: contrib/admin/views/main.py:523 +msgid "Are you sure?" +msgstr "¿Está seguro?" + +#: contrib/admin/views/main.py:545 +#, python-format +msgid "Change history: %s" +msgstr "Modificar histórico: %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s" +msgstr "Escoja %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s to change" +msgstr "Escoja %s para modificar" + +#: contrib/admin/views/main.py:780 +msgid "Database error" +msgstr "Erorr en la base de datos" + +#: contrib/admin/views/doc.py:47 +#: contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 +msgid "tag:" +msgstr "etiqueta:" + +#: contrib/admin/views/doc.py:78 +#: contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 +msgid "filter:" +msgstr "filtro:" + +#: contrib/admin/views/doc.py:136 +#: contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 +msgid "view:" +msgstr "vista:" + +#: contrib/admin/views/doc.py:165 +#, python-format +msgid "App %r not found" +msgstr "Aplicación %r no encontrada" + +#: contrib/admin/views/doc.py:172 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "El modelo %(name)s no se ha encontrado en la aplicación %(label)r" + +#: contrib/admin/views/doc.py:184 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "el objeto relacionado`%(label)s.%(type)s` " + +#: contrib/admin/views/doc.py:184 +#: contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 +#: contrib/admin/views/doc.py:225 +msgid "model:" +msgstr "modelo:" + +#: contrib/admin/views/doc.py:215 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "los objetos relacionados `%(label)s.%(name)s`" + +#: contrib/admin/views/doc.py:220 +#, python-format +msgid "all %s" +msgstr "todo %s" + +#: contrib/admin/views/doc.py:225 +#, python-format +msgid "number of %s" +msgstr "número de %s" + +#: contrib/admin/views/doc.py:230 +#, python-format +msgid "Fields on %s objects" +msgstr "Campos en %s objetos" + +#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 +#: contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:314 +msgid "Integer" +msgstr "Entero" + +#: contrib/admin/views/doc.py:293 +msgid "Boolean (Either True or False)" +msgstr "Booleano (Verdadero o Falso)" + +#: contrib/admin/views/doc.py:294 +#: contrib/admin/views/doc.py:313 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Cadena (máximo %(max_length)s)" + +#: contrib/admin/views/doc.py:295 +msgid "Comma-separated integers" +msgstr "Enteros separados por comas" + +#: contrib/admin/views/doc.py:296 +msgid "Date (without time)" +msgstr "Fecha (sin hora)" + +#: contrib/admin/views/doc.py:297 +msgid "Date (with time)" +msgstr "Fecha (con hora)" + +#: contrib/admin/views/doc.py:298 +msgid "Decimal number" +msgstr "Número decimal" + +#: contrib/admin/views/doc.py:299 +msgid "E-mail address" +msgstr "Dirección de correo electrónico" + +#: contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 +msgid "File path" +msgstr "Ruta de fichero" + +#: contrib/admin/views/doc.py:302 +msgid "Floating point number" +msgstr "Número decimal" + +#: contrib/admin/views/doc.py:306 +#: contrib/comments/models.py:85 +msgid "IP address" +msgstr "Dirección IP" + +#: contrib/admin/views/doc.py:308 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (Verdadero, Falso o Nulo)" + +#: contrib/admin/views/doc.py:309 +msgid "Relation to parent model" +msgstr "Relación con el modelo padre" + +#: contrib/admin/views/doc.py:310 +msgid "Phone number" +msgstr "Número de teléfono" + +#: contrib/admin/views/doc.py:315 +msgid "Text" +msgstr "Texto" + +#: contrib/admin/views/doc.py:316 +msgid "Time" +msgstr "Hora" + +#: contrib/admin/views/doc.py:317 +#: contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:318 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado de los EEUU (dos letras mayúsculas)" + +#: contrib/admin/views/doc.py:319 +msgid "XML text" +msgstr "Texto XML" + +#: contrib/admin/views/doc.py:345 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s no parece ser un objeto urlpattern" + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Añadir usuario" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "La clave se ha cambiado exitosamente." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Cambiar clave: %s" + +#: contrib/admin/templatetags/admin_list.py:254 +msgid "All dates" +msgstr "Todas las fechas" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Mostrarlo todo" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "Documentación" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "Cambiar clave" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Terminar sesión" + +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Home" +msgstr "Inicio" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Eliminar" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación de objetos relacionados, pero su cuenta no tiene permiso para borrar los siguientes tipos de objetos:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, 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 "¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s\"? Se borrarán los siguientes objetos relacionados:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Sí, estoy seguro" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Página no encontrada" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Lo sentimos, pero no se encuentra la página solicitada." + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Agregar" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Histórico" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Ver en el sitio" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija el siguiente error." +msgstr[1] "Por favor, corrija los siguientes errores." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Ordenación" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Orden:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Por %(filter_title)s " + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Grabar como nuevo" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Grabar y añadir otro" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Grabar y continuar editando" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Grabar" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Agregar %(name)s" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modelos disponibles en la aplicación %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Modificar" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "No tiene permiso para editar nada." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Acciones recientes" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Mis acciones" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ninguno disponible" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Sitio de administración de Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administración de Django" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Fecha/hora" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Usuario" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Acción" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "j M Y P" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Este objeto no tiene histórico de cambios. Probablemente no fue añadido usando este sitio de administración." + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Error del servidor" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Error del servidor (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Error de servidor (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Ha ocurrido un error. Se ha informado a los administradores del sitio mediante correo electrónico y debería arreglarse en breve. Gracias por su paciencia." + +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "Algo va mal con la instalación de la base de datos. Asegúrate que las tablas necesarias han sido creadas, y que la base de datos puede ser leída por el usuario apropiado." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Buscar" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 resultado" +msgstr[1] "%(counter)s resultados" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s total" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtro" + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Usuario:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Clave:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Bienvenido," + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar el resto de opciones del usuario." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Nombre de usuario" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "Contraseña" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "Contraseña (de nuevo)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "Introduzca la misma contraseña que arriba, para verificación" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Introduzca una nueva contraseña para el usuario %(username)s." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Bookmarklets" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Bookmarklets de documentación" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." +"\n" +"

                      To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                      \n" msgstr "" -"Por favor, introduzca un correcto nombre de usuario y contraseña. Note que " -"ambos campos son sensibles a mayúsculas/minúsculas." +"\n" +"

                      Para instalar bookmarklets, arrastre el enlace a su barra\n" +"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus favoritos.\n" +"Ahora puede escoger el bookmarklet desde cualquier página en el sitio.\n" +"Observer que algunos de estos bookmarklets precisan que esté viendo\n" +"el sitio desde un computador señalado como \"interno\" (hable\n" +"con su administrador de sistemas si no está seguro de si el suyo lo es).

                      \n" -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "Esta cuenta está inactiva." +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Documentación de esta página" -#: contrib/auth/forms.py:84 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" -"Esta dirección de correo electrónico no tiene una cuenta de usuario " -"asociada. ¿Está seguro de que se ha registrado?" +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "Le lleva desde cualquier página a la documentación de la vista que la genera." -#: contrib/auth/forms.py:117 -msgid "The two 'new password' fields didn't match." -msgstr "" -"Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden." +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Mostrar ID de objeto" -#: contrib/auth/forms.py:124 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "" -"Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla " -"correctamente." +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Muestra el tipo de contenido e ID unívoco de las páginas que representan un único objeto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Editar este objeto (ventana actual)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Le lleva a la página de administración de páginas que representan un único objeto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Editar este objeto (nueva ventana)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Como antes, pero abre la página de administración en una nueva ventana." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Fecha:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Hora:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Actualmente:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modificar:" + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Recuperar clave" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." +msgstr "¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y crearemos una nueva que le enviaremos por correo." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Dirección de correo electrónico:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Recuperar mi clave" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Está recibiendo este mensaje debido a que solicitó recuperar la clave" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "de su cuenta de usuario en %(site_name)s." + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Su nueva clave es: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Puede cambiarla accediendo a esta página:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Su nombre de usuario, en caso de haberlo olvidado:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "¡Gracias por usar nuestro sitio!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "El equipo de %(site_name)s" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Identificarse de nuevo" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Recuperación de clave exitosa" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería recibirla en breve." + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "Cambio de clave" + +#: contrib/admin/templates/registration/password_change_form.html:12 +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 "Por favor, introduzca su clave antigua, por seguridad, y después introduzca la nueva clave dos veces para verificar que la ha escrito correctamente." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Clave antigua:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Clave nueva:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Confirme clave:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Cambiar mi clave" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Cambio de clave exitoso" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Su clave ha sido cambiada." + +#: contrib/sites/models.py:33 +msgid "domain name" +msgstr "nombre de dominio" + +#: contrib/sites/models.py:34 +msgid "display name" +msgstr "nombre para mostrar" + +#: contrib/sites/models.py:38 +msgid "site" +msgstr "sitio" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "sitios" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "th" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "st" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "nd" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "rd" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f millón" +msgstr[1] "%(value).1f millión" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f billión" +msgstr[1] "%(value).1f billión" + +#: contrib/humanize/templatetags/humanize.py:56 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f trillión" +msgstr[1] "%(value).1f trillión" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "one" +msgstr "uno" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "two" +msgstr "dos" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "three" +msgstr "tres" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "four" +msgstr "cuatro" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "five" +msgstr "cinco" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "six" +msgstr "seis" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "seven" +msgstr "siete" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "eight" +msgstr "ocho" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "nine" +msgstr "nueve" + +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "hoy" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "mañana" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "ayer" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al final." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "título" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contenido" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "admitir comentarios" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nombre de plantilla" + +#: contrib/flatpages/models.py:13 +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema usará 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "debe estar registrado" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "página estática" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "páginas estáticas" #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirigir desde" #: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/" -"events/search/'." +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "redirigir a" #: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Esto puede ser bien una ruta absoluta (como antes) o una URL completa que " -"empiece con 'http://'." +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "Esto puede ser bien una ruta absoluta (como antes) o una URL completa que empiece con 'http://'." #: contrib/redirects/models.py:13 msgid "redirect" @@ -993,7 +1726,8 @@ msgstr "redirección" msgid "redirects" msgstr "redirecciones" -#: contrib/comments/models.py:67 contrib/comments/models.py:169 +#: contrib/comments/models.py:67 +#: contrib/comments/models.py:169 msgid "object ID" msgstr "ID de objeto" @@ -1001,7 +1735,8 @@ msgstr "ID de objeto" msgid "headline" msgstr "encabezado" -#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:69 +#: contrib/comments/models.py:90 #: contrib/comments/models.py:170 msgid "comment" msgstr "comentario" @@ -1042,35 +1777,30 @@ msgstr "calificación 8" msgid "is valid rating" msgstr "es calificación válida" -#: contrib/comments/models.py:83 contrib/comments/models.py:172 +#: contrib/comments/models.py:83 +#: contrib/comments/models.py:172 msgid "date/time submitted" msgstr "fecha/hora de envío" -#: contrib/comments/models.py:84 contrib/comments/models.py:173 +#: contrib/comments/models.py:84 +#: contrib/comments/models.py:173 msgid "is public" msgstr "es público" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306 -msgid "IP address" -msgstr "Dirección IP" - #: contrib/comments/models.py:86 msgid "is removed" msgstr "está eliminado" #: contrib/comments/models.py:86 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "" -"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará " -"\"Este comentario ha sido eliminado\"." +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "Marque esta caja si el comentario es inapropiado. En su lugar se mostrará \"Este comentario ha sido eliminado\"." #: contrib/comments/models.py:91 msgid "comments" msgstr "comentarios" -#: contrib/comments/models.py:134 contrib/comments/models.py:213 +#: contrib/comments/models.py:134 +#: contrib/comments/models.py:213 msgid "Content object" msgstr "Objeto contenido" @@ -1188,30 +1918,25 @@ msgid "No voting for yourself" msgstr "No puedes votarte tú mismo" #: contrib/comments/views/comments.py:28 -msgid "" -"This rating is required because you've entered at least one other rating." +msgid "This rating is required because you've entered at least one other rating." msgstr "Se precisa esta puntuación porque ha introducido al menos otra más." #: contrib/comments/views/comments.py:112 #, python-format msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" +"This comment was posted by a user who has posted fewer than %(count)s comment:\n" "\n" "%(text)s" msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" +"This comment was posted by a user who has posted fewer than %(count)s comments:\n" "\n" "%(text)s" msgstr[0] "" -"Este comentario lo envió un usuario que ha enviado menos de %(count)s " -"comentario:\n" +"Este comentario lo envió un usuario que ha enviado menos de %(count)s comentario:\n" "\n" "%(text)s" msgstr[1] "" -"Este comentario lo envió un usuario que ha enviado menos de %(count)s " -"comentarios:\n" +"Este comentario lo envió un usuario que ha enviado menos de %(count)s comentarios:\n" "\n" "%(text)s" @@ -1239,57 +1964,18 @@ msgstr "No se proporcionó uno o más de los siguientes campos requeridos" #: contrib/comments/views/comments.py:197 #: contrib/comments/views/comments.py:287 msgid "Somebody tampered with the comment form (security violation)" -msgstr "" -"Alguien está jugando con el formulario de comentarios (violación de " -"seguridad)" +msgstr "Alguien está jugando con el formulario de comentarios (violación de seguridad)" #: contrib/comments/views/comments.py:207 #: contrib/comments/views/comments.py:293 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "" -"El formulario de comentarios tiene un parámetro 'target' no válido (el ID de " -"objeto era inválido)" +msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid" +msgstr "El formulario de comentarios tiene un parámetro 'target' no válido (el ID de objeto era inválido)" #: contrib/comments/views/comments.py:258 #: contrib/comments/views/comments.py:322 msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Usuario:" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -msgid "Log out" -msgstr "Terminar sesión" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Clave:" - #: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" msgstr "¿Has olvidado tu contraseña?" @@ -1326,946 +2012,276 @@ msgstr "Previsualizar comentario" msgid "Your name:" msgstr "Tu nombre:" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:317 -msgid "URL" -msgstr "URL" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al " -"final." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "título" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "contenido" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "admitir comentarios" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nombre de plantilla" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema " -"usará 'flatpages/default.html'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "debe estar registrado" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "página estática" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "páginas estáticas" - -#: contrib/sessions/models.py:68 -msgid "session key" -msgstr "clave de sesión" - -#: contrib/sessions/models.py:69 -msgid "session data" -msgstr "datos de sesión" - -#: contrib/sessions/models.py:70 -msgid "expire date" -msgstr "fecha de caducidad" - -#: contrib/sessions/models.py:74 -msgid "session" -msgstr "sesión" - -#: contrib/sessions/models.py:75 -msgid "sessions" -msgstr "sesiones" - -#: contrib/sites/models.py:15 -msgid "domain name" -msgstr "nombre de dominio" - -#: contrib/sites/models.py:16 -msgid "display name" -msgstr "nombre para mostrar" - -#: contrib/sites/models.py:20 -msgid "site" -msgstr "sitio" - -#: contrib/sites/models.py:21 -msgid "sites" -msgstr "sitios" - -#: contrib/admin/filterspecs.py:42 -#, python-format -msgid "" -"

                      By %s:

                      \n" -"
                        \n" -msgstr "" -"

                        Por %s:

                        \n" -"
                          \n" - -#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 -#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 -msgid "All" -msgstr "Todo" - -#: contrib/admin/filterspecs.py:111 -msgid "Any date" -msgstr "Cualquier fecha" - -#: contrib/admin/filterspecs.py:112 -msgid "Today" -msgstr "Hoy" - -#: contrib/admin/filterspecs.py:115 -msgid "Past 7 days" -msgstr "Últimos 7 días" - -#: contrib/admin/filterspecs.py:117 -msgid "This month" -msgstr "Este mes" - -#: contrib/admin/filterspecs.py:119 -msgid "This year" -msgstr "Este año" - -#: contrib/admin/models.py:17 -msgid "action time" -msgstr "hora de acción" - -#: contrib/admin/models.py:20 -msgid "object id" -msgstr "id de objeto" - -#: contrib/admin/models.py:21 -msgid "object repr" -msgstr "repr de objeto" - -#: contrib/admin/models.py:22 -msgid "action flag" -msgstr "marca de acción" - -#: contrib/admin/models.py:23 -msgid "change message" -msgstr "mensaje de cambio" - -#: contrib/admin/models.py:26 -msgid "log entry" -msgstr "entrada de registro" - -#: contrib/admin/models.py:27 -msgid "log entries" -msgstr "entradas de registro" - -#: contrib/admin/templatetags/admin_list.py:254 -msgid "All dates" -msgstr "Todas las fechas" - -#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"." - -#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 -#: contrib/admin/views/main.py:354 -msgid "You may edit it again below." -msgstr "Puede editarlo de nuevo abajo." - -#: contrib/admin/views/auth.py:31 -msgid "Add user" -msgstr "Añadir usuario" - -#: contrib/admin/views/auth.py:58 -msgid "Password changed successfully." -msgstr "La clave se ha cambiado exitosamente." - -#: contrib/admin/views/auth.py:65 -#, python-format -msgid "Change password: %s" -msgstr "Cambiar clave: %s" - -#: contrib/admin/views/main.py:230 -msgid "Site administration" -msgstr "Sitio administrativo" - -#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 -#, python-format -msgid "You may add another %s below." -msgstr "Puede agregar otro %s abajo." - -#: contrib/admin/views/main.py:296 -#, python-format -msgid "Add %s" -msgstr "Agregar %s" - -#: contrib/admin/views/main.py:342 -#, python-format -msgid "Added %s." -msgstr "Agregado %s." - -#: contrib/admin/views/main.py:344 -#, python-format -msgid "Changed %s." -msgstr "Modificado %s." - -#: contrib/admin/views/main.py:346 -#, python-format -msgid "Deleted %s." -msgstr "Borrado %s." - -#: contrib/admin/views/main.py:349 -msgid "No fields changed." -msgstr "No ha cambiado ningún campo." - -#: contrib/admin/views/main.py:352 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "Se modificó con éxito el %(name)s \"%(obj)s." - -#: contrib/admin/views/main.py:360 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"Se agregó con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." - -#: contrib/admin/views/main.py:398 -#, python-format -msgid "Change %s" -msgstr "Modificar %s" - -#: contrib/admin/views/main.py:483 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:488 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Uno o más %(fieldname)s en %(name)s:" - -#: contrib/admin/views/main.py:520 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"." - -#: contrib/admin/views/main.py:523 -msgid "Are you sure?" -msgstr "¿Está seguro?" - -#: contrib/admin/views/main.py:545 -#, python-format -msgid "Change history: %s" -msgstr "Modificar histórico: %s" - -#: contrib/admin/views/main.py:579 -#, python-format -msgid "Select %s" -msgstr "Escoja %s" - -#: contrib/admin/views/main.py:579 -#, python-format -msgid "Select %s to change" -msgstr "Escoja %s para modificar" - -#: contrib/admin/views/main.py:780 -msgid "Database error" -msgstr "Erorr en la base de datos" - -#: contrib/admin/views/decorators.py:24 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Identificarse" - -#: contrib/admin/views/decorators.py:62 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Por favor, identifíquese de nuevo, porque su sesión ha caducado. No se " -"preocupe: se ha guardado su envío." - -#: contrib/admin/views/decorators.py:69 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Parece que su navegador no está configurado para aceptar cookies. Actívelas " -"por favor, recargue esta página, e inténtelo de nuevo." - -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Los nombres de usuario no pueden contener el carácter '@'." - -#: contrib/admin/views/decorators.py:85 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "" -"Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su " -"lugar." - -#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 -#: contrib/admin/views/doc.py:51 -msgid "tag:" -msgstr "etiqueta:" - -#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 -#: contrib/admin/views/doc.py:82 -msgid "filter:" -msgstr "filtro:" - -#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 -#: contrib/admin/views/doc.py:140 -msgid "view:" -msgstr "vista:" - -#: contrib/admin/views/doc.py:165 -#, python-format -msgid "App %r not found" -msgstr "Aplicación %r no encontrada" - -#: contrib/admin/views/doc.py:172 -#, python-format -msgid "Model %(name)r not found in app %(label)r" -msgstr "El modelo %(name)s no se ha encontrado en la aplicación %(label)r" - -#: contrib/admin/views/doc.py:184 -#, python-format -msgid "the related `%(label)s.%(type)s` object" -msgstr "el objeto relacionado`%(label)s.%(type)s` " - -#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 -#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 -msgid "model:" -msgstr "modelo:" - -#: contrib/admin/views/doc.py:215 -#, python-format -msgid "related `%(label)s.%(name)s` objects" -msgstr "los objetos relacionados `%(label)s.%(name)s`" - -#: contrib/admin/views/doc.py:220 -#, python-format -msgid "all %s" -msgstr "todo %s" - -#: contrib/admin/views/doc.py:225 -#, python-format -msgid "number of %s" -msgstr "número de %s" - -#: contrib/admin/views/doc.py:230 -#, python-format -msgid "Fields on %s objects" -msgstr "Campos en %s objetos" - -#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 -#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 -#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 -msgid "Integer" -msgstr "Entero" - -#: contrib/admin/views/doc.py:293 -msgid "Boolean (Either True or False)" -msgstr "Booleano (Verdadero o Falso)" - -#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "Cadena (máximo %(max_length)s)" - -#: contrib/admin/views/doc.py:295 -msgid "Comma-separated integers" -msgstr "Enteros separados por comas" - -#: contrib/admin/views/doc.py:296 -msgid "Date (without time)" -msgstr "Fecha (sin hora)" - -#: contrib/admin/views/doc.py:297 -msgid "Date (with time)" -msgstr "Fecha (con hora)" - -#: contrib/admin/views/doc.py:298 -msgid "Decimal number" -msgstr "Número decimal" - -#: contrib/admin/views/doc.py:299 -msgid "E-mail address" -msgstr "Dirección de correo electrónico" - -#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:304 -msgid "File path" -msgstr "Ruta de fichero" - -#: contrib/admin/views/doc.py:302 -msgid "Floating point number" -msgstr "Número decimal" - -#: contrib/admin/views/doc.py:308 -msgid "Boolean (Either True, False or None)" -msgstr "Booleano (Verdadero, Falso o Nulo)" - -#: contrib/admin/views/doc.py:309 -msgid "Relation to parent model" -msgstr "Relación con el modelo padre" - -#: contrib/admin/views/doc.py:310 -msgid "Phone number" -msgstr "Número de teléfono" - -#: contrib/admin/views/doc.py:315 -msgid "Text" -msgstr "Texto" - -#: contrib/admin/views/doc.py:316 -msgid "Time" -msgstr "Hora" - -#: contrib/admin/views/doc.py:318 -msgid "U.S. state (two uppercase letters)" -msgstr "Estado de los EEUU (dos letras mayúsculas)" - -#: contrib/admin/views/doc.py:319 -msgid "XML text" -msgstr "Texto XML" - -#: contrib/admin/views/doc.py:345 -#, python-format -msgid "%s does not appear to be a urlpattern object" -msgstr "%s no parece ser un objeto urlpattern" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Actualmente:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modificar:" - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Fecha:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Hora:" - -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "Documentación" - -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin/auth/user/change_password.html:15 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -msgid "Change password" -msgstr "Cambiar clave" - -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/auth/user/change_password.html:12 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Home" -msgstr "Inicio" - -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Agregar %(name)s" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Por %(filter_title)s " - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:21 -msgid "History" -msgstr "Histórico" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Fecha/hora" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Usuario" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Acción" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j M Y P" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Este objeto no tiene histórico de cambios. Probablemente no fue añadido " -"usando este sitio de administración." - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Buscar" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 resultado" -msgstr[1] "%(counter)s resultados" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "%(full_result_count)s total" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Mostrarlo todo" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Sitio de administración de Django" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Administración de Django" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Error del servidor" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Error del servidor (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Error de servidor (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Ha ocurrido un error. Se ha informado a los administradores del sitio " -"mediante correo electrónico y debería arreglarse en breve. Gracias por su " -"paciencia." - -#: contrib/admin/templates/admin/invalid_setup.html:8 -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 "" -"Algo va mal con la instalación de la base de datos. Asegúrate que las tablas " -"necesarias han sido creadas, y que la base de datos puede ser leída por el " -"usuario apropiado." - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Modelos disponibles en la aplicación %(name)s." - -#: contrib/admin/templates/admin/index.html:18 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "Agregar" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Modificar" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "No tiene permiso para editar nada." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Acciones recientes" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Mis acciones" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Ninguno disponible" - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Página no encontrada" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Lo sentimos, pero no se encuentra la página solicitada." - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filtro" - -#: contrib/admin/templates/admin/change_form.html:22 -msgid "View on site" -msgstr "Ver en el sitio" - -#: contrib/admin/templates/admin/change_form.html:32 -#: contrib/admin/templates/admin/auth/user/change_password.html:24 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Por favor, corrija el siguiente error." -msgstr[1] "Por favor, corrija los siguientes errores." - -#: contrib/admin/templates/admin/change_form.html:50 -msgid "Ordering" -msgstr "Ordenación" - -#: contrib/admin/templates/admin/change_form.html:53 -msgid "Order:" -msgstr "Orden:" - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Eliminar" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación " -"de objetos relacionados, pero su cuenta no tiene permiso para borrar los " -"siguientes tipos de objetos:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, 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 "" -"¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s" -"\"? Se borrarán los siguientes objetos relacionados:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Sí, estoy seguro" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Bienvenido," - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Grabar como nuevo" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Grabar y añadir otro" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Grabar y continuar editando" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Grabar" - -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "" -"Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar " -"el resto de opciones del usuario." - -#: contrib/admin/templates/admin/auth/user/add_form.html:12 -msgid "Username" -msgstr "Nombre de usuario" - -#: contrib/admin/templates/admin/auth/user/add_form.html:18 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -msgid "Password" -msgstr "Contraseña" - -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -msgid "Password (again)" -msgstr "Contraseña (de nuevo)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -msgid "Enter the same password as above, for verification." -msgstr "Introduzca la misma contraseña que arriba, para verificación" - -#: contrib/admin/templates/admin/auth/user/change_password.html:28 -#, python-format -msgid "Enter a new password for the user %(username)s." -msgstr "" -"Introduzca una nueva contraseña para el usuario %(username)s." - -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -msgid "Password change" -msgstr "Cambio de clave" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Cambio de clave exitoso" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Su clave ha sido cambiada." - -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -#: contrib/admin/templates/registration/password_reset_done.html:4 -msgid "Password reset" -msgstr "Recuperar clave" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y " -"crearemos una nueva que le enviaremos por correo." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Dirección de correo electrónico:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Recuperar mi clave" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Identificarse de nuevo" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Recuperación de clave exitosa" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" -"Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería " -"recibirla en breve." - -#: contrib/admin/templates/registration/password_change_form.html:12 -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 "" -"Por favor, introduzca su clave antigua, por seguridad, y después introduzca " -"la nueva clave dos veces para verificar que la ha escrito correctamente." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Clave antigua:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Clave nueva:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Confirme clave:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Cambiar mi clave" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Está recibiendo este mensaje debido a que solicitó recuperar la clave" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "de su cuenta de usuario en %(site_name)s." - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "Su nueva clave es: %(new_password)s" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "Puede cambiarla accediendo a esta página:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "Su nombre de usuario, en caso de haberlo olvidado:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "¡Gracias por usar nuestro sitio!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "El equipo de %(site_name)s" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Bookmarklets" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Bookmarklets de documentación" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\n" -"

                          To install bookmarklets, drag the link to your bookmarks\n" -"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" -"select the bookmarklet from any page in the site. Note that some of these\n" -"bookmarklets require you to be viewing the site from a computer designated\n" -"as \"internal\" (talk to your system administrator if you aren't sure if\n" -"your computer is \"internal\").

                          \n" -msgstr "" -"\n" -"

                          Para instalar bookmarklets, arrastre el enlace a su barra\n" -"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus " -"favoritos.\n" -"Ahora puede escoger el bookmarklet desde cualquier página en el sitio.\n" -"Observer que algunos de estos bookmarklets precisan que esté viendo\n" -"el sitio desde un computador señalado como \"interno\" (hable\n" -"con su administrador de sistemas si no está seguro de si el suyo lo es).\n" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Documentación de esta página" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" -"Le lleva desde cualquier página a la documentación de la vista que la genera." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Mostrar ID de objeto" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Muestra el tipo de contenido e ID unívoco de las páginas que representan un " -"único objeto." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Editar este objeto (ventana actual)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Le lleva a la página de administración de páginas que representan un único " -"objeto." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Editar este objeto (nueva ventana)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "" -"Como antes, pero abre la página de administración en una nueva ventana." - -#: contrib/localflavor/uk/forms.py:18 -msgid "Enter a postcode. A space is required between the two postcode parts." -msgstr "" -"Introduzca un código postal. Se necesita un espacio entre las dos partes del " -"código." - -#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/ar/forms.py:30 +#: contrib/localflavor/ar/forms.py:38 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Introduzca un código postal en el formato NNNN or ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:61 +#: contrib/localflavor/br/forms.py:103 +msgid "This field requires only numbers." +msgstr "Este campo sólo acepta números." + +#: contrib/localflavor/ar/forms.py:64 +msgid "This field requires 7 or 8 digits." +msgstr "Este campo necesita 7 o 8 dígitos." + +#: contrib/localflavor/ar/forms.py:75 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Introduzca un CUIT válido en el formato XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:88 +msgid "Invalid CUIT." +msgstr "CUIT inválido." + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Introduzca un código postal de 4 dígitos." + +#: contrib/localflavor/br/forms.py:23 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Introduzca un código postal en el formato XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:35 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX." + +#: contrib/localflavor/br/forms.py:68 +msgid "Select a valid brazilian state. That state is not one of the available states." +msgstr "Seleccione un estado brasileño válido. Este estado no es uno de los estados disponibles." + +#: contrib/localflavor/br/forms.py:105 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Este campo necesita al menos 11 o 14 caracteres" + +#: contrib/localflavor/br/forms.py:115 +msgid "Invalid CPF number." +msgstr "Número CPF inválido." + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Este campo necesita 14 dígitos como máximo" + +#: contrib/localflavor/br/forms.py:147 +msgid "Invalid CNPJ number." +msgstr "Número CNPJ inválido" + +#: contrib/localflavor/ch/forms.py:18 +#: contrib/localflavor/no/forms.py:14 +msgid "Enter a zip code in the format XXXX." +msgstr "Introduzca un código postal en el formato XXXX." + +#: contrib/localflavor/ch/forms.py:90 +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "Introduzca una identificación suiza válida o un número de pasaporte en el formato X1234567<0 or 1234567890." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Innerrhoden" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Ausserrhoden" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Basel-Stadt" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Basel-Land" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Berne" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Geneva" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Graubuenden" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Lucerne" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchatel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwalden" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwalden" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Solothurn" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "St. Gallen" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Ticino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Valais" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zurich" + +#: contrib/localflavor/cl/forms.py:32 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:37 +msgid "Enter valid a Chilean RUT" +msgstr "Introduzca un RUT chileno válido" + #: contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/fr/forms.py:17 msgid "Enter a zip code in the format XXXXX." msgstr "Introduzca un código postal en el formato XXXXX." +#: contrib/localflavor/de/forms.py:60 +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "Introduzca un número de tarjeta de identidad de Alemania válida en el formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Wuerttemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bavaria" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlín" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Western Pomerania" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Lower Saxony" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "North Rhine-Westphalia" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rhineland-Palatinate" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Saarland" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Saxony" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Saxony-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Thuringia" + +#: contrib/localflavor/fi/forms.py:40 +#: contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Introduzca un número de seguro social finlandés válido." + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Introduzca un código postal válido." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Introduzca un número de Seguro Social válido." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Introduzca un número VAT válido." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." + #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" msgstr "Hokkaido" @@ -2454,309 +2470,153 @@ msgstr "Kagoshima" msgid "Okinawa" msgstr "Okinawa" -#: contrib/localflavor/jp/forms.py:21 -msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." +#: contrib/localflavor/nl/forms.py:25 +msgid "Enter a valid postal code" +msgstr "Introduzca un código postal válido" -#: contrib/localflavor/br/forms.py:18 -msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "Introduzca un código postal en el formato XXXX-XXXX." +#: contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Introduzca un número de teléfono válido" -#: contrib/localflavor/br/forms.py:30 -msgid "Phone numbers must be in XX-XXXX-XXXX format." -msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX." +#: contrib/localflavor/nl/forms.py:76 +msgid "Enter a valid SoFi number" +msgstr "Introduzca un número SoFi válido" -#: contrib/localflavor/br/forms.py:72 -msgid "This field requires only numbers." -msgstr "Este campo sólo acepta números." +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "Drente" -#: contrib/localflavor/br/forms.py:74 -msgid "This field requires at most 11 digits or 14 characters." -msgstr "Este campo necesita al menos 11 o 14 caracteres" +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Flevoland" -#: contrib/localflavor/br/forms.py:84 -msgid "Invalid CPF number." -msgstr "Número CPF inválido." +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Friesland" -#: contrib/localflavor/br/forms.py:106 -msgid "This field requires at least 14 digits" -msgstr "Este campo necesita 14 dígitos como máximo" +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Gelderland" -#: contrib/localflavor/br/forms.py:116 -msgid "Invalid CNPJ number." -msgstr "Número CNPJ inválido" +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Groningen" -#: contrib/localflavor/it/forms.py:16 -msgid "Enter a valid zip code." -msgstr "Introduzca un código postal válido." +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Limburg" -#: contrib/localflavor/it/forms.py:41 -msgid "Enter a valid Social Security number." -msgstr "Introduzca un número de Seguro Social válido." +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Noord-Brabant" -#: contrib/localflavor/it/forms.py:68 -msgid "Enter a valid VAT number." -msgstr "Introduzca un número VAT válido." +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Noord-Holland" -#: contrib/localflavor/no/forms.py:14 contrib/localflavor/ch/forms.py:18 -msgid "Enter a zip code in the format XXXX." -msgstr "Introduzca un código postal en el formato XXXX." +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Overijssel" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Utrecht" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Zeeland" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Zuid-Holland" #: contrib/localflavor/no/forms.py:35 msgid "Enter a valid Norwegian social security number." msgstr "Introduzca un número de seguro social de Noruega válido." -#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 -msgid "Enter a valid Finnish social security number." -msgstr "Introduzca un número de seguro social finlandés válido." +#: contrib/localflavor/pl/forms.py:53 +msgid "National Identification Number consists of 11 digits." +msgstr "Número de Identificación Nacional consiste en 11 dígitos" -#: contrib/localflavor/de/de_states.py:5 -msgid "Baden-Wuerttemberg" -msgstr "Baden-Wuerttemberg" +#: contrib/localflavor/pl/forms.py:59 +msgid "Wrong checksum for the National Identification Number." +msgstr "El Número de Identificación Nacional es incorrecto." -#: contrib/localflavor/de/de_states.py:6 -msgid "Bavaria" -msgstr "Bavaria" +#: contrib/localflavor/pl/forms.py:71 +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX or XX-XX-XXX-XXX." -#: contrib/localflavor/de/de_states.py:7 -msgid "Berlin" -msgstr "Berlín" +#: contrib/localflavor/pl/forms.py:82 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Introduzca un código postal en el formato XX-XXX." -#: contrib/localflavor/de/de_states.py:8 -msgid "Brandenburg" -msgstr "Brandenburg" +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Lower Silesia" -#: contrib/localflavor/de/de_states.py:9 -msgid "Bremen" -msgstr "Bremen" +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kuyavia-Pomerania" -#: contrib/localflavor/de/de_states.py:10 -msgid "Hamburg" -msgstr "Hamburg" +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" -#: contrib/localflavor/de/de_states.py:11 -msgid "Hessen" -msgstr "Hessen" +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" -#: contrib/localflavor/de/de_states.py:12 -msgid "Mecklenburg-Western Pomerania" -msgstr "Mecklenburg-Western Pomerania" +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Lodz" -#: contrib/localflavor/de/de_states.py:13 -msgid "Lower Saxony" -msgstr "Lower Saxony" +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Lesser Poland" -#: contrib/localflavor/de/de_states.py:14 -msgid "North Rhine-Westphalia" -msgstr "North Rhine-Westphalia" +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masovia" -#: contrib/localflavor/de/de_states.py:15 -msgid "Rhineland-Palatinate" -msgstr "Rhineland-Palatinate" +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" -#: contrib/localflavor/de/de_states.py:16 -msgid "Saarland" -msgstr "Saarland" +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Subcarpatia" -#: contrib/localflavor/de/de_states.py:17 -msgid "Saxony" -msgstr "Saxony" +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlasie" -#: contrib/localflavor/de/de_states.py:18 -msgid "Saxony-Anhalt" -msgstr "Saxony-Anhalt" +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomerania" -#: contrib/localflavor/de/de_states.py:19 -msgid "Schleswig-Holstein" -msgstr "Schleswig-Holstein" +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Silesia" -#: contrib/localflavor/de/de_states.py:20 -msgid "Thuringia" -msgstr "Thuringia" +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" -#: contrib/localflavor/de/forms.py:60 -msgid "" -"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " -"format." -msgstr "" -"Introduzca un número de tarjeta de identidad de Alemania válida en el " -"formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuria" -#: contrib/localflavor/au/forms.py:18 -msgid "Enter a 4 digit post code." -msgstr "Introduzca un código postal de 4 dígitos." +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Greater Poland" -#: contrib/localflavor/us/forms.py:18 -msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "West Pomerania" -#: contrib/localflavor/us/forms.py:51 -msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "" -"Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX" - -#: contrib/localflavor/is_/forms.py:17 -msgid "" -"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "" -"Introduzca un número de identificación de Islandia válido. El formato es " -"XXXXXX-XXXX." - -#: contrib/localflavor/is_/forms.py:31 -msgid "The Icelandic identification number is not valid." -msgstr "El número de identificación de Islandia no es válido." - -#: contrib/localflavor/cl/forms.py:32 -msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." -msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X." - -#: contrib/localflavor/cl/forms.py:37 -msgid "Enter valid a Chilean RUT" -msgstr "Introduzca un RUT chileno válido" - -#: contrib/localflavor/ch/ch_states.py:5 -msgid "Aargau" -msgstr "Aargau" - -#: contrib/localflavor/ch/ch_states.py:6 -msgid "Appenzell Innerrhoden" -msgstr "Appenzell Innerrhoden" - -#: contrib/localflavor/ch/ch_states.py:7 -msgid "Appenzell Ausserrhoden" -msgstr "Appenzell Ausserrhoden" - -#: contrib/localflavor/ch/ch_states.py:8 -msgid "Basel-Stadt" -msgstr "Basel-Stadt" - -#: contrib/localflavor/ch/ch_states.py:9 -msgid "Basel-Land" -msgstr "Basel-Land" - -#: contrib/localflavor/ch/ch_states.py:10 -msgid "Berne" -msgstr "Berne" - -#: contrib/localflavor/ch/ch_states.py:11 -msgid "Fribourg" -msgstr "Fribourg" - -#: contrib/localflavor/ch/ch_states.py:12 -msgid "Geneva" -msgstr "Geneva" - -#: contrib/localflavor/ch/ch_states.py:13 -msgid "Glarus" -msgstr "Glarus" - -#: contrib/localflavor/ch/ch_states.py:14 -msgid "Graubuenden" -msgstr "Graubuenden" - -#: contrib/localflavor/ch/ch_states.py:15 -msgid "Jura" -msgstr "Jura" - -#: contrib/localflavor/ch/ch_states.py:16 -msgid "Lucerne" -msgstr "Lucerne" - -#: contrib/localflavor/ch/ch_states.py:17 -msgid "Neuchatel" -msgstr "Neuchatel" - -#: contrib/localflavor/ch/ch_states.py:18 -msgid "Nidwalden" -msgstr "Nidwalden" - -#: contrib/localflavor/ch/ch_states.py:19 -msgid "Obwalden" -msgstr "Obwalden" - -#: contrib/localflavor/ch/ch_states.py:20 -msgid "Schaffhausen" -msgstr "Schaffhausen" - -#: contrib/localflavor/ch/ch_states.py:21 -msgid "Schwyz" -msgstr "Schwyz" - -#: contrib/localflavor/ch/ch_states.py:22 -msgid "Solothurn" -msgstr "Solothurn" - -#: contrib/localflavor/ch/ch_states.py:23 -msgid "St. Gallen" -msgstr "St. Gallen" - -#: contrib/localflavor/ch/ch_states.py:24 -msgid "Thurgau" -msgstr "Thurgau" - -#: contrib/localflavor/ch/ch_states.py:25 -msgid "Ticino" -msgstr "Ticino" - -#: contrib/localflavor/ch/ch_states.py:26 -msgid "Uri" -msgstr "Uri" - -#: contrib/localflavor/ch/ch_states.py:27 -msgid "Valais" -msgstr "Valais" - -#: contrib/localflavor/ch/ch_states.py:28 -msgid "Vaud" -msgstr "Vaud" - -#: contrib/localflavor/ch/ch_states.py:29 -msgid "Zug" -msgstr "Zug" - -#: contrib/localflavor/ch/ch_states.py:30 -msgid "Zurich" -msgstr "Zurich" - -#: contrib/localflavor/ch/forms.py:90 -msgid "" -"Enter a valid Swiss identity or passport card number in X1234567<0 or " -"1234567890 format." -msgstr "" -"Introduzca una identificación suiza válida o un número de pasaporte en el " -"formato X1234567<0 or 1234567890." - -#: contrib/localflavor/sk/sk_regions.py:8 -msgid "Banska Bystrica region" -msgstr "Región de Banska Bystrica" - -#: contrib/localflavor/sk/sk_regions.py:9 -msgid "Bratislava region" -msgstr "Región de Bratislava" - -#: contrib/localflavor/sk/sk_regions.py:10 -msgid "Kosice region" -msgstr "Región de Kosice" - -#: contrib/localflavor/sk/sk_regions.py:11 -msgid "Nitra region" -msgstr "Región de Nitra" - -#: contrib/localflavor/sk/sk_regions.py:12 -msgid "Presov region" -msgstr "Región de Presov" - -#: contrib/localflavor/sk/sk_regions.py:13 -msgid "Trencin region" -msgstr "Región de Trencin" - -#: contrib/localflavor/sk/sk_regions.py:14 -msgid "Trnava region" -msgstr "Región de Trnava" - -#: contrib/localflavor/sk/sk_regions.py:15 -msgid "Zilina region" -msgstr "Región de Zilina" +#: contrib/localflavor/sk/forms.py:32 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Introduzca un código postal en el formato XXXXX o XXX XX." #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -3074,39 +2934,93 @@ msgstr "Ziar nad Hronom" msgid "Zilina" msgstr "Zilina" -#: contrib/localflavor/sk/forms.py:32 -msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "Introduzca un código postal en el formato XXXXX o XXX XX." +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Región de Banska Bystrica" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Región de Bratislava" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Región de Kosice" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Región de Nitra" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Región de Presov" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Región de Trencin" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Región de Trnava" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Región de Zilina" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Introduzca un código postal. Se necesita un espacio entre las dos partes del código." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX" #: contrib/localflavor/in_/forms.py:16 msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduzca un código postal en el formato XXXXXXX." -#: template/defaultfilters.py:485 -msgid "yes,no,maybe" -msgstr "sí,no,tal vez" +#: contrib/localflavor/is_/forms.py:17 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Introduzca un número de identificación de Islandia válido. El formato es XXXXXX-XXXX." -#: template/defaultfilters.py:514 -#, python-format -msgid "%(size)d byte" -msgid_plural "%(size)d bytes" -msgstr[0] "%(size)d byte" -msgstr[1] "%(size)d bytes" +#: contrib/localflavor/is_/forms.py:31 +msgid "The Icelandic identification number is not valid." +msgstr "El número de identificación de Islandia no es válido." -#: template/defaultfilters.py:516 -#, python-format -msgid "%.1f KB" -msgstr "%.1f KB" +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "clave de sesión" -#: template/defaultfilters.py:518 -#, python-format -msgid "%.1f MB" -msgstr "%.1f MB" +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "datos de sesión" -#: template/defaultfilters.py:519 -#, python-format -msgid "%.1f GB" -msgstr "%.1f GB" +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "fecha de caducidad" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sesión" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sesiones" + +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "nombre de módulo python" + +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "tipo de contenido" + +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "tipos de contenido" #: oldforms/__init__.py:408 #, python-format @@ -3119,11 +3033,18 @@ msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres." msgid "Line breaks are not allowed here." msgstr "No se permiten saltos de línea." -#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 +#: oldforms/__init__.py:511 +#: oldforms/__init__.py:585 +#: oldforms/__init__.py:624 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s." +#: oldforms/__init__.py:688 +#: newforms/fields.py:381 +msgid "The submitted file is empty." +msgstr "El fichero enviado está vacío." + #: oldforms/__init__.py:744 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Introduzca un número entero entre -32,768 y 32,767." @@ -3136,299 +3057,415 @@ msgstr "Introduzca un número positivo." msgid "Enter a whole number between 0 and 32,767." msgstr "Introduzca un número entero entre 0 y 32,767." -#: core/validators.py:71 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Este valor debe contener sólo letras, números y guiones bajos." - -#: core/validators.py:75 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Este valor debe contener letras, números, guiones bajos o barras solamente." - -#: core/validators.py:79 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Este valor debe contener sólo letras, números, guiones bajos o medios." - -#: core/validators.py:83 -msgid "Uppercase letters are not allowed here." -msgstr "No se admiten letras mayúsculas." - -#: core/validators.py:87 -msgid "Lowercase letters are not allowed here." -msgstr "No se admiten letras minúsculas." - -#: core/validators.py:94 -msgid "Enter only digits separated by commas." -msgstr "Introduzca sólo dígitos separados por comas." - -#: core/validators.py:106 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Introduzca direcciones de correo válidas separadas por comas." - -#: core/validators.py:110 -msgid "Please enter a valid IP address." -msgstr "Por favor introduzca una dirección IP válida." - -#: core/validators.py:114 -msgid "Empty values are not allowed here." -msgstr "No se admiten valores vacíos." - -#: core/validators.py:118 -msgid "Non-numeric characters aren't allowed here." -msgstr "No se admiten caracteres no numéricos." - -#: core/validators.py:122 -msgid "This value can't be comprised solely of digits." -msgstr "Este valor no puede comprender sólo dígitos." - -#: core/validators.py:131 -msgid "Only alphabetical characters are allowed here." -msgstr "Sólo se admiten caracteres alfabéticos." - -#: core/validators.py:146 -msgid "Year must be 1900 or later." -msgstr "El año debe ser 1900 o posterior." - -#: core/validators.py:150 +#: views/generic/create_update.py:43 #, python-format -msgid "Invalid date: %s" -msgstr "Fecha no válida: %s" +msgid "The %(verbose_name)s was created successfully." +msgstr "El %(verbose_name)s se ha creado correctamente." -#: core/validators.py:160 -msgid "Enter a valid time in HH:MM format." -msgstr "Introduzca una hora válida en formato HH:MM." - -#: core/validators.py:192 +#: views/generic/create_update.py:117 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "La URL %s no apunta a una imagen válida." +msgid "The %(verbose_name)s was updated successfully." +msgstr "Se actualizó con éxito el %(verbose_name)s." -#: core/validators.py:196 +#: views/generic/create_update.py:184 #, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es " -"válido." +msgid "The %(verbose_name)s was deleted." +msgstr "El %(verbose_name)s ha sido eliminado." -#: core/validators.py:204 +#: utils/dates.py:6 +msgid "Monday" +msgstr "Lunes" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Martes" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Miércoles" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Jueves" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Viernes" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Sábado" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Domingo" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "Lun" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Mar" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Mie" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "Jue" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Vie" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "Sab" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Dom" + +#: utils/dates.py:18 +msgid "January" +msgstr "Enero" + +#: utils/dates.py:18 +msgid "February" +msgstr "Febrero" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "March" +msgstr "Marzo" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "April" +msgstr "Abril" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "May" +msgstr "Mayo" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "June" +msgstr "Junio" + +#: utils/dates.py:19 +#: utils/dates.py:31 +msgid "July" +msgstr "Julio" + +#: utils/dates.py:19 +msgid "August" +msgstr "Agosto" + +#: utils/dates.py:19 +msgid "September" +msgstr "Septiembre" + +#: utils/dates.py:19 +msgid "October" +msgstr "Octubre" + +#: utils/dates.py:19 +msgid "November" +msgstr "Noviembre" + +#: utils/dates.py:20 +msgid "December" +msgstr "Diciembre" + +#: utils/dates.py:23 +msgid "jan" +msgstr "ene" + +#: utils/dates.py:23 +msgid "feb" +msgstr "feb" + +#: utils/dates.py:23 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:23 +msgid "apr" +msgstr "abr" + +#: utils/dates.py:23 +msgid "may" +msgstr "may" + +#: utils/dates.py:23 +msgid "jun" +msgstr "jun" + +#: utils/dates.py:24 +msgid "jul" +msgstr "jul" + +#: utils/dates.py:24 +msgid "aug" +msgstr "ago" + +#: utils/dates.py:24 +msgid "sep" +msgstr "sep" + +#: utils/dates.py:24 +msgid "oct" +msgstr "oct" + +#: utils/dates.py:24 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:24 +msgid "dec" +msgstr "dic" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "Ene." + +#: utils/dates.py:31 +msgid "Feb." +msgstr "Feb." + +#: utils/dates.py:32 +msgid "Aug." +msgstr "Ago." + +#: utils/dates.py:32 +msgid "Sept." +msgstr "Sept." + +#: utils/dates.py:32 +msgid "Oct." +msgstr "Oct." + +#: utils/dates.py:32 +msgid "Nov." +msgstr "Nov." + +#: utils/dates.py:32 +msgid "Dec." +msgstr "Dic." + +#: utils/text.py:127 +msgid "or" +msgstr "o" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "año" +msgstr[1] "años" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "mes" +msgstr[1] "meses" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "semana" +msgstr[1] "semanas" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "día" +msgstr[1] "días" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuto" +msgstr[1] "minutos" + +#: utils/timesince.py:39 #, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "La URL %s no apunta a un vídeo QuickTime válido." +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" -#: core/validators.py:208 -msgid "A valid URL is required." -msgstr "Se precisa una URL válida." - -#: core/validators.py:222 +#: utils/timesince.py:45 #, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Se precisa HTML válido. Los errores específicos son:\n" -"%s" +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" -#: core/validators.py:229 +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "p.m" + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "a.m" + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "media noche" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "medio día" + +#: utils/translation/trans_real.py:391 +msgid "DATE_FORMAT" +msgstr "j N Y" + +#: utils/translation/trans_real.py:392 +msgid "DATETIME_FORMAT" +msgstr "j N Y P" + +#: utils/translation/trans_real.py:393 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:409 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:410 +msgid "MONTH_DAY_FORMAT" +msgstr "j \\de F" + +#: template/defaultfilters.py:532 +msgid "yes,no,maybe" +msgstr "sí,no,tal vez" + +#: template/defaultfilters.py:561 #, python-format -msgid "Badly formed XML: %s" -msgstr "XML mal formado: %s" +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" -#: core/validators.py:246 +#: template/defaultfilters.py:563 #, python-format -msgid "Invalid URL: %s" -msgstr "URL no válida: %s" +msgid "%.1f KB" +msgstr "%.1f KB" -#: core/validators.py:251 core/validators.py:253 +#: template/defaultfilters.py:565 #, python-format -msgid "The URL %s is a broken link." -msgstr "La URL %s es un enlace roto." +msgid "%.1f MB" +msgstr "%.1f MB" -#: core/validators.py:259 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Introduzca una abreviatura válida de estado de los EEUU." - -#: core/validators.py:273 +#: template/defaultfilters.py:566 #, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "¡Cuida tu vocabulario! Aquí no admitimos la palabra %s." -msgstr[1] "¡Cuida tu vocabulario! Aquí no admitimos las palabras %s." +msgid "%.1f GB" +msgstr "%.1f GB" -#: core/validators.py:280 +#: newforms/fields.py:123 #, python-format -msgid "This field must match the '%s' field." -msgstr "Este campo debe concordar con el campo '%s'." +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente tiene %(length)d)." -#: core/validators.py:299 -msgid "Please enter something for at least one field." -msgstr "Por favor, introduzca algo en al menos un campo." - -#: core/validators.py:308 core/validators.py:319 -msgid "Please enter both fields or leave them both empty." -msgstr "Por favor, rellene ambos campos o deje ambos vacíos." - -#: core/validators.py:327 +#: newforms/fields.py:125 #, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Se debe proporcionar este campo si %(field)s es %(value)s" +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente tiene %(length)d)." -#: core/validators.py:340 +#: newforms/fields.py:151 +#: newforms/fields.py:174 +#: newforms/fields.py:204 #, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s" +msgid "Ensure this value is less than or equal to %s." +msgstr "Asegúrese de que este valor es menor o igual a %s." -#: core/validators.py:359 -msgid "Duplicate values are not allowed." -msgstr "No se admiten valores duplicados." - -#: core/validators.py:374 +#: newforms/fields.py:153 +#: newforms/fields.py:176 +#: newforms/fields.py:206 #, python-format -msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Este valor debe estar entre %(lower)s y %(upper)s." +msgid "Ensure this value is greater than or equal to %s." +msgstr "Asegúrese de que este valor es mayor o igual a %s." -#: core/validators.py:376 +#: newforms/fields.py:172 +#: newforms/fields.py:199 +msgid "Enter a number." +msgstr "Introduzca un número." + +#: newforms/fields.py:208 #, python-format -msgid "This value must be at least %s." -msgstr "Este valor debe ser como mínimo %s." +msgid "Ensure that there are no more than %s digits in total." +msgstr "Asegúrese de que no hay más de %s dígitos en total." -#: core/validators.py:378 +#: newforms/fields.py:210 #, python-format -msgid "This value must be no more than %s." -msgstr "Este valor no debe ser mayor que %s." +msgid "Ensure that there are no more than %s decimal places." +msgstr "Asegúrese de que no hay más de %s decimales." -#: core/validators.py:414 +#: newforms/fields.py:212 #, python-format -msgid "This value must be a power of %s." -msgstr "Este valor debe ser una potencia de %s." +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Asegúrese de que no hay más de %s dígitos antes del punto decimal." -#: core/validators.py:424 -msgid "Please enter a valid decimal number." -msgstr "Por favor, introduzca un número decimal válido." +#: newforms/fields.py:245 +#: newforms/fields.py:629 +msgid "Enter a valid date." +msgstr "Introduzca una fecha válida." -#: core/validators.py:431 +#: newforms/fields.py:272 +#: newforms/fields.py:631 +msgid "Enter a valid time." +msgstr "Introduzca una hora válida." + +#: newforms/fields.py:308 +msgid "Enter a valid date/time." +msgstr "Introduzca una fecha/hora válida." + +#: newforms/fields.py:321 +msgid "Enter a valid value." +msgstr "Introduzca un valor correcto." + +#: newforms/fields.py:379 +msgid "No file was submitted." +msgstr "No se ha enviado ningún fichero" + +#: newforms/fields.py:419 +#: newforms/fields.py:444 +msgid "Enter a valid URL." +msgstr "Introduzca una URL válida." + +#: newforms/fields.py:446 +msgid "This URL appears to be a broken link." +msgstr "La URL parece ser un enlace roto." + +#: newforms/fields.py:497 +#: newforms/models.py:180 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Escoja una opción válida. Esa opción no está entre las aceptadas." + +#: newforms/fields.py:513 +#: newforms/fields.py:589 +#: newforms/models.py:197 +msgid "Enter a list of values." +msgstr "Introduzca una lista de valores." + +#: newforms/fields.py:519 +#: newforms/models.py:203 #, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." -msgstr[0] "" -"Por favor, introduzca un número decimal válido con a lo más %s dígito en " -"total." -msgstr[1] "" -"Por favor, introduzca un número decimal válido con a lo más %s dígitos en " -"total." +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles." -#: core/validators.py:434 -#, python-format -msgid "" -"Please enter a valid decimal number with a whole part of at most %s digit." -msgid_plural "" -"Please enter a valid decimal number with a whole part of at most %s digits." -msgstr[0] "" -"Por favor, introduzca un número decimal válido con a lo más %s dígito en su " -"parte entera." -msgstr[1] "" -"Por favor, introduzca un número decimal válido con a lo más %s dígitos en su " -"parte entera." - -#: core/validators.py:437 -#, python-format -msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "" -"Por favor, introduzca un número decimal válido con a lo más %s dígito " -"decimal." -msgstr[1] "" -"Por favor, introduzca un número decimal válido con a lo más %s dígitos " -"decimales." - -#: core/validators.py:445 -msgid "Please enter a valid floating point number." -msgstr "Por favor, introduzca un número decimal válido." - -#: core/validators.py:454 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Asegúrese de que el fichero que envía tiene al menos %s bytes." - -#: core/validators.py:455 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Asegúrese de que el fichero que envía tiene como máximo %s bytes." - -#: core/validators.py:472 -msgid "The format for this field is wrong." -msgstr "El formato de este campo es incorrecto." - -#: core/validators.py:487 -msgid "This field is invalid." -msgstr "Este campo no es válido." - -#: core/validators.py:523 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "No pude obtener nada de %s." - -#: core/validators.py:526 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no " -"es válida." - -#: core/validators.py:559 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea " -"empieza por \"%(start)s\".)" - -#: core/validators.py:563 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Parte del texto que comienza en la línea %(line)s no está permitido en ese " -"contexto. (La línea empieza por \"%(start)s\".)" - -#: core/validators.py:568 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea " -"empieza por \"%(start)s\".)" - -#: core/validators.py:573 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea " -"empieza por \"%(start)s\".)" - -#: core/validators.py:577 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"A una etiqueta de la línea %(line)s le faltan uno o más atributos " -"requeridos. (La línea empieza por \"%(start)s\".)" - -#: core/validators.py:582 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es " -"válido. (La línea empieza por \"%(start)s\".)" diff --git a/django/conf/locale/fi/LC_MESSAGES/django.mo b/django/conf/locale/fi/LC_MESSAGES/django.mo index 024d2ad98b..6d4ebd3283 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 275feaaf81..d068f2adfe 100644 --- a/django/conf/locale/fi/LC_MESSAGES/django.po +++ b/django/conf/locale/fi/LC_MESSAGES/django.po @@ -1,292 +1,137 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. +# Finnish translation of Django +# Copyright (C) 2006-2007 +# This file is distributed under the same license as the Django package. # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-08-05 14:41+0300\n" -"PO-Revision-Date: 2006-08-12 23:41+0300\n" +"POT-Creation-Date: 2007-09-14 23:33+0300\n" +"PO-Revision-Date: 2007-09-15 00:34+0300\n" "Last-Translator: Antti Kaihola \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Finnish\n" +"X-Poedit-Country: FINLAND\n" -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" - -#: db/models/fields/related.py:51 -#, python-format -msgid "Please enter a valid %s." -msgstr "Syöttämäsi %s ei kelpaa." - -#: db/models/fields/related.py:618 -msgid "Separate multiple IDs with commas." -msgstr "Erottele tunnisteet pilkuilla." - -#: db/models/fields/related.py:620 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -" Pidä \"Ctrl\"-näppäin (tai Macin \"Command\") pohjassa valitaksesi useita " -"vaihtoehtoja." - -#: db/models/fields/related.py:664 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Syöttämäsi %(self)s-tunniste %(value)r ei kelpaa." -msgstr[1] "Syöttämäsi %(self)s-tunnisteet %(value)r eivät kelpaa." - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s, jolla on tämä %(fieldname)s, on jo olemassa." - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "Tämä kenttä vaaditaan." - -#: db/models/fields/__init__.py:340 -msgid "This value must be an integer." -msgstr "Tarvitaan kokonaisluku." - -#: db/models/fields/__init__.py:372 -msgid "This value must be either True or False." -msgstr "Tarvitaan tosi (True) tai epätosi (False)." - -#: db/models/fields/__init__.py:388 -msgid "This field cannot be null." -msgstr "Tämän kentän arvo ei voi olla \"null\"." - -#: db/models/fields/__init__.py:415 core/validators.py:127 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Päivämäärän pitää olla muodossa VVVV-KK-PP." - -#: db/models/fields/__init__.py:477 core/validators.py:135 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Ajankohdan pitää olla muodossa VVVV-KK-PP TT:MM." - -#: db/models/fields/__init__.py:571 -msgid "Enter a valid filename." -msgstr "Tiedostonimi ei kelpaa." - -#: conf/global_settings.py:39 -msgid "Arabic" -msgstr "arabia" - -#: conf/global_settings.py:40 -msgid "Bengali" -msgstr "bengali" - -#: conf/global_settings.py:41 -msgid "Czech" -msgstr "tšekki" - -#: conf/global_settings.py:42 -msgid "Welsh" -msgstr "wales" - -#: conf/global_settings.py:43 -msgid "Danish" -msgstr "tanska" - -#: conf/global_settings.py:44 -msgid "German" -msgstr "saksa" - -#: conf/global_settings.py:45 -msgid "Greek" -msgstr "kreikka" - -#: conf/global_settings.py:46 -msgid "English" -msgstr "englanti" - -#: conf/global_settings.py:47 -msgid "Spanish" -msgstr "espanja" - -#: conf/global_settings.py:48 -msgid "Argentinean Spanish" -msgstr "Argentiinan espanja" - -#: conf/global_settings.py:49 -msgid "French" -msgstr "ranska" - -#: conf/global_settings.py:50 -msgid "Galician" -msgstr "" - -#: conf/global_settings.py:51 -msgid "Hungarian" -msgstr "unkari" - -#: conf/global_settings.py:52 -msgid "Hebrew" -msgstr "heprea" - -#: conf/global_settings.py:53 -msgid "Icelandic" -msgstr "islanti" - -#: conf/global_settings.py:54 -msgid "Italian" -msgstr "italia" - -#: conf/global_settings.py:55 -msgid "Japanese" -msgstr "japani" - -#: conf/global_settings.py:56 -msgid "Dutch" -msgstr "hollanti" - -#: conf/global_settings.py:57 -msgid "Norwegian" -msgstr "norja" - -#: conf/global_settings.py:58 -msgid "Brazilian" -msgstr "" - -#: conf/global_settings.py:59 -msgid "Romanian" -msgstr "romania" - -#: conf/global_settings.py:60 -msgid "Russian" -msgstr "venäjä" - -#: conf/global_settings.py:61 -msgid "Slovak" -msgstr "slovakia" - -#: conf/global_settings.py:62 -msgid "Slovenian" -msgstr "slovenia" - -#: conf/global_settings.py:63 -msgid "Serbian" -msgstr "serbia" - -#: conf/global_settings.py:64 -msgid "Swedish" -msgstr "ruotsi" - -#: conf/global_settings.py:65 -msgid "Tamil" -msgstr "" - -#: conf/global_settings.py:66 -msgid "Ukrainian" -msgstr "ukraina" - -#: conf/global_settings.py:67 -msgid "Simplified Chinese" -msgstr "kiina (yksinkertaistettu)" - -#: conf/global_settings.py:68 -msgid "Traditional Chinese" -msgstr "kiina (perinteinen)" - -#: core/validators.py:63 +#: core/validators.py:72 msgid "This value must contain only letters, numbers and underscores." -msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) ja alaviivoja (_)." +msgstr "" +"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) ja alaviivoja " +"(_)." -#: core/validators.py:67 +#: core/validators.py:76 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." -msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala-, tavu- ja kauttaviivoja (_ - /)." +msgstr "" +"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala-, tavu- " +"ja kauttaviivoja (_ - /)." -#: core/validators.py:75 +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja tavuviivoja (_ -)." + +#: core/validators.py:84 msgid "Uppercase letters are not allowed here." msgstr "Isot kirjaimet (ABC) eivät kelpaa tässä." -#: core/validators.py:79 +#: core/validators.py:88 msgid "Lowercase letters are not allowed here." msgstr "Pienet kirjaimet (abc) eivät kelpaa tässä." -#: core/validators.py:86 +#: core/validators.py:95 msgid "Enter only digits separated by commas." msgstr "Vain pilkulla erotetut luvut kelpaavat tässä." -#: core/validators.py:98 +#: core/validators.py:107 msgid "Enter valid e-mail addresses separated by commas." msgstr "Syötä sähköpostiosoitteita pilkuilla erotettuina." -#: core/validators.py:102 +#: core/validators.py:111 msgid "Please enter a valid IP address." msgstr "IP-osoite ei kelpaa." -#: core/validators.py:106 +#: core/validators.py:115 msgid "Empty values are not allowed here." msgstr "Tätä kohtaa ei voi jättää tyhjäksi." -#: core/validators.py:110 +#: core/validators.py:119 msgid "Non-numeric characters aren't allowed here." msgstr "Vain numerot (0-9) kelpaavat tässä." -#: core/validators.py:114 +#: core/validators.py:123 msgid "This value can't be comprised solely of digits." msgstr "Tarvitaan vähintään yksi merkki, joka ei ole numero (0-9)." -#: core/validators.py:119 +#: core/validators.py:128 newforms/fields.py:149 msgid "Enter a whole number." msgstr "Syötä kokonaisluku." -#: core/validators.py:123 +#: core/validators.py:132 msgid "Only alphabetical characters are allowed here." msgstr "Vain kirjaimet kelpaavat tässä." -#: core/validators.py:131 +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "Vuosiluvuksi kelpaa vain 1900 tai myöhempi." + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "Päivämäärä %s ei kelpaa" + +#: core/validators.py:156 db/models/fields/__init__.py:505 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Päivämäärän pitää olla muodossa VVVV-KK-PP." + +#: core/validators.py:161 msgid "Enter a valid time in HH:MM format." msgstr "Ajan täytyy olla muodossa TT:MM." -#: core/validators.py:139 +#: core/validators.py:165 db/models/fields/__init__.py:579 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Ajankohdan pitää olla muodossa VVVV-KK-PP TT:MM." + +#: core/validators.py:170 newforms/fields.py:343 msgid "Enter a valid e-mail address." msgstr "Syötä kelvollinen sähköpostiosoite." -#: core/validators.py:151 core/validators.py:379 forms/__init__.py:661 +#: core/validators.py:182 core/validators.py:469 newforms/fields.py:377 +#: oldforms/__init__.py:686 msgid "No file was submitted. Check the encoding type on the form." msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)." -#: core/validators.py:155 +#: core/validators.py:193 newforms/fields.py:405 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut." +msgstr "" +"Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut." -#: core/validators.py:162 +#: core/validators.py:200 #, python-format msgid "The URL %s does not point to a valid image." msgstr "Osoittessa %s ei ole kuvaa tai se on vioittunut." -#: core/validators.py:166 +#: core/validators.py:204 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "Puhelinnumeron tulee olla muodossa XXX-XXX-XXXX. \"%s\" ei kelpaa." -#: core/validators.py:174 +#: core/validators.py:212 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "Osoitteessa %s ei ole QuickTime-videota tai se on vioittunut." -#: core/validators.py:178 +#: core/validators.py:216 msgid "A valid URL is required." msgstr "URL-osoite ei kelpaa." -#: core/validators.py:192 +#: core/validators.py:230 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -295,343 +140,916 @@ msgstr "" "HTML-koodi ei kelpaa. Virheilmoitus on:\n" "%s" -#: core/validators.py:199 +#: core/validators.py:237 #, python-format msgid "Badly formed XML: %s" msgstr "Vääränmuotoinen XML: %s" -#: core/validators.py:209 +#: core/validators.py:254 #, python-format msgid "Invalid URL: %s" msgstr "URL-osoite %s ei kelpaa." -#: core/validators.py:213 core/validators.py:215 +#: core/validators.py:259 core/validators.py:261 #, python-format msgid "The URL %s is a broken link." msgstr "Osoite %s on rikkoutunut tai väärä linkki." -#: core/validators.py:221 +#: core/validators.py:267 msgid "Enter a valid U.S. state abbreviation." msgstr "Syötä USA:n osavaltion lyhenne." -#: core/validators.py:236 +#: core/validators.py:281 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Sanaa \"%s\" ei saa käyttää tässä." msgstr[1] "Sanoja \"%s\" ei saa käyttää tässä." -#: core/validators.py:243 +#: core/validators.py:283 db/models/manipulators.py:310 +#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 +msgid "and" +msgstr "ja" + +#: core/validators.py:288 #, python-format msgid "This field must match the '%s' field." msgstr "Arvon täytyy olla sama kuin kentässä '%s'." -#: core/validators.py:262 +#: core/validators.py:307 msgid "Please enter something for at least one field." msgstr "Täytä ainakin yksi kenttä." -#: core/validators.py:271 core/validators.py:282 +#: core/validators.py:316 core/validators.py:327 msgid "Please enter both fields or leave them both empty." msgstr "Täytä tai jätä tyhjäksi kummatkin kentät." -#: core/validators.py:289 +#: core/validators.py:335 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Tämä kenttä pitää täyttää, jos %(field)s on %(value)s." -#: core/validators.py:301 +#: core/validators.py:348 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Tämä kenttä pitää täyttää, jos %(field)s ei ole %(value)s." -#: core/validators.py:320 +#: core/validators.py:367 msgid "Duplicate values are not allowed." msgstr "Samaa arvoa ei voi käyttää kahdesti." -#: core/validators.py:343 +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Tämän luvun on oltava välillä %(lower)s–%(upper)s." + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "Tämän luvun on oltava vähintään %s." + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "Tämän luvun on oltava enintään %s." + +#: core/validators.py:422 #, python-format msgid "This value must be a power of %s." msgstr "Tämän luvun on oltava %s:n potenssi." -#: core/validators.py:354 +#: core/validators.py:432 msgid "Please enter a valid decimal number." msgstr "Desimaaliluku ei kelpaa." -#: core/validators.py:356 +#: core/validators.py:439 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" "Please enter a valid decimal number with at most %s total digits." -msgstr[0] "Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevä numero. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." -msgstr[1] "Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevää numeroa. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[0] "" +"Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevä numero. Huomaa, " +"että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[1] "" +"Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevää numeroa. " +"Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." -#: core/validators.py:359 +#: core/validators.py:442 #, python-format msgid "" "Please enter a valid decimal number with a whole part of at most %s digit." msgid_plural "" "Please enter a valid decimal number with a whole part of at most %s digits." -msgstr[0] "Desimaaliluvun kokonaisosassa saa tässä olla vain %s numero. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." -msgstr[1] "Desimaaliluvun kokonaisosassa saa tässä olla vain %s numeroa. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[0] "" +"Desimaaliluvun kokonaisosassa saa tässä olla vain %s numero. Huomaa, että " +"desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[1] "" +"Desimaaliluvun kokonaisosassa saa tässä olla vain %s numeroa. Huomaa, että " +"desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." -#: core/validators.py:362 +#: core/validators.py:445 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Tässä saa olla vain %s desimaali. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." -msgstr[1] "Tässä saa olla vain %s desimaalia. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[0] "" +"Tässä saa olla vain %s desimaali. Huomaa, että desimaalierottimena käytetään " +"pilkun (,) sijasta pistettä (.)." +msgstr[1] "" +"Tässä saa olla vain %s desimaalia. Huomaa, että desimaalierottimena " +"käytetään pilkun (,) sijasta pistettä (.)." -#: core/validators.py:372 +#: core/validators.py:453 +msgid "Please enter a valid floating point number." +msgstr "Syötä liukuluku." + +#: core/validators.py:462 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Lähetä vähintään %s tavun kokoinen tiedosto." -#: core/validators.py:373 +#: core/validators.py:463 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Lähetä enintään %s tavun kokoinen tiedosto." -#: core/validators.py:390 +#: core/validators.py:480 msgid "The format for this field is wrong." msgstr "Muoto ei kelpaa." -#: core/validators.py:405 +#: core/validators.py:495 msgid "This field is invalid." msgstr "Tämä arvo ei kelpaa." -#: core/validators.py:441 +#: core/validators.py:531 #, python-format msgid "Could not retrieve anything from %s." msgstr "Tietoja ei voida noutaa kohteesta: %s." -#: core/validators.py:444 +#: core/validators.py:534 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "Osoitteesta %(url)s saatiin virheellinen Content-Type '%(contenttype)s'." +msgstr "" +"Osoitteesta %(url)s saatiin virheellinen Content-Type '%(contenttype)s'." -#: core/validators.py:477 +#: core/validators.py:567 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" -msgstr "Rivillä %(line)s oleva tagi %(tag)s pitää sulkea. (Rivi alkaa \"%(start)s\")" +msgstr "" +"Rivillä %(line)s oleva tagi %(tag)s pitää sulkea. (Rivi alkaa \"%(start)s\")" -#: core/validators.py:481 +#: core/validators.py:571 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" -msgstr "Rivillä %(line)s on tekstiä, joka ei kelpaa tässä yhteydessä. (Rivi alkaa \"%(start)s\")" +msgstr "" +"Rivillä %(line)s on tekstiä, joka ei kelpaa tässä yhteydessä. (Rivi alkaa \"%" +"(start)s\")" -#: core/validators.py:486 +#: core/validators.py:576 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" -msgstr "Rivillä %(line)s attribuutti %(attr)s ei kelpaa. (Rivi alkaa \"%(start)s\")" +msgstr "" +"Rivillä %(line)s attribuutti %(attr)s ei kelpaa. (Rivi alkaa \"%(start)s\")" -#: core/validators.py:491 +#: core/validators.py:581 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" -msgstr "Rivillä %(line)s tagi \"<%(tag)s>\" ei kelpaa. (Rivi alkaa \"%(start)s\")" +msgstr "" +"Rivillä %(line)s tagi \"<%(tag)s>\" ei kelpaa. (Rivi alkaa \"%(start)s\")" -#: core/validators.py:495 +#: core/validators.py:585 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" -msgstr "Rivillä %(line)s yhdestä tagista puuttuu yksi tai useampi attribuutti. (Rivi alkaa \"%(start)s\")" +msgstr "" +"Rivillä %(line)s yhdestä tagista puuttuu yksi tai useampi attribuutti. (Rivi " +"alkaa \"%(start)s\")" -#: core/validators.py:500 +#: core/validators.py:590 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" -msgstr "Rivillä %(line)s attribuutin %(attr)s arvo ei kelpaa. (Rivi alkaa \"%(start)s\")" - -#: contrib/auth/forms.py:52 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "Selaimesi ei salli evästeitä. Sisäänkirjautuminen vaatii evästeen." - -#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "Käyttäjätunnus tai salasana ei kelpaa. Huomaa, että isot ja pienet kirjaimet ovat merkitseviä." - -#: contrib/auth/forms.py:61 -msgid "This account is inactive." -msgstr "Tämä käyttäjätili ei ole voimassa." - -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "nimi" - -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "koodinimi" - -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "oikeus" - -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "oikeudet" - -#: contrib/auth/models.py:60 -msgid "group" -msgstr "ryhmä" - -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "ryhmät" - -#: contrib/auth/models.py:90 -msgid "username" -msgstr "tunnus" - -#: contrib/auth/models.py:90 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr " Vaaditaan. Enintään 30 kirjanta (a-z), numeroa (0-9) tai alaviivaa (_)." - -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "etunimi" - -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "sukunimi" - -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "sähköposti" - -#: contrib/auth/models.py:94 -msgid "password" -msgstr "salasana" - -#: contrib/auth/models.py:94 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "(Salasanaa ei näytetä selväkielisenä)" - -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "ylläpitäjä" - -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Ylläpitäjillä on pääsy tähän sivuston ylläpito-osioon." - -#: contrib/auth/models.py:96 -msgid "active" -msgstr "voimassa" - -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin käytön poistamatta sitä." - -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "pääkäyttäjä" - -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella." - -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "viimeksi kirjautunut" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "liittynyt" - -#: contrib/auth/models.py:101 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." msgstr "" -"Tässä valittujen oikeuksien lisäksi käyttäjä saa myös kaikki niiden ryhmien " -"oikeudet, joiden jäsen hän on." +"Rivillä %(line)s attribuutin %(attr)s arvo ei kelpaa. (Rivi alkaa \"%(start)s" +"\")" -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "käyttäjän oikeudet" +#: newforms/fields.py:93 newforms/fields.py:509 newforms/fields.py:585 +#: newforms/fields.py:596 newforms/models.py:193 +#: db/models/fields/__init__.py:159 db/models/fields/__init__.py:316 +#: db/models/fields/__init__.py:731 db/models/fields/__init__.py:742 +#: oldforms/__init__.py:373 +msgid "This field is required." +msgstr "Tämä kenttä vaaditaan." -#: contrib/auth/models.py:105 -msgid "user" -msgstr "käyttäjä" +#: newforms/fields.py:123 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Tähän kelpaa enintään %(max)d merkkiä (nyt niitä on %(length)d)." -#: contrib/auth/models.py:106 -msgid "users" -msgstr "käyttäjät" +#: newforms/fields.py:125 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "Tähän tarvitaan vähintään %(min)d merkkiä (nyt on vain %(length)d)." -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Henkilökohtaiset tiedot" +#: newforms/fields.py:151 newforms/fields.py:174 newforms/fields.py:204 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Tämän luvun on oltava enintään %s." -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Oikeudet" +#: newforms/fields.py:153 newforms/fields.py:176 newforms/fields.py:206 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Tämän luvun on oltava vähintään %s." -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Tärkeät päivämäärät" +#: newforms/fields.py:172 newforms/fields.py:199 +msgid "Enter a number." +msgstr "Syötä kokonaisluku." -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Ryhmät" +#: newforms/fields.py:208 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Tässä luvussa voi olla yhteensä enintään %s numeroa." -#: contrib/auth/models.py:256 -msgid "message" -msgstr "viesti" +#: newforms/fields.py:210 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Tässä luvussa saa olla enintään %s desimaalia." -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "Kirjautunut ulos" +#: newforms/fields.py:212 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Tässä luvussa saa olla enintään %s numeroa ennen desimaalipilkkua." -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "tapahtumahetki" +#: newforms/fields.py:245 newforms/fields.py:629 +msgid "Enter a valid date." +msgstr "Syötä oikea päivämäärä." -#: contrib/admin/models.py:19 -msgid "object id" +#: newforms/fields.py:272 newforms/fields.py:631 +msgid "Enter a valid time." +msgstr "Syötä oikea kellonaika." + +#: newforms/fields.py:308 +msgid "Enter a valid date/time." +msgstr "Syötä oikea pvm/kellonaika." + +#: newforms/fields.py:321 +msgid "Enter a valid value." +msgstr "Syötä oikea arvo." + +#: newforms/fields.py:379 +msgid "No file was submitted." +msgstr "Yhtään tiedostoa ei ole lähetetty." + +#: newforms/fields.py:381 oldforms/__init__.py:688 +msgid "The submitted file is empty." +msgstr "Lähetetty tiedosto on tyhjä." + +#: newforms/fields.py:419 newforms/fields.py:444 +msgid "Enter a valid URL." +msgstr "Syötä oikea URL-osoite." + +#: newforms/fields.py:446 +msgid "This URL appears to be a broken link." +msgstr "Tämä URL-osoite on rikkinäinen linkki." + +#: newforms/fields.py:497 newforms/models.py:180 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta." + +#: newforms/fields.py:513 newforms/fields.py:589 newforms/models.py:197 +msgid "Enter a list of values." +msgstr "Syötä lista." + +#: newforms/fields.py:519 newforms/models.py:203 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Valitse oikea vaihtoehto. %s ei löydy vaihtoehtojen joukosta." + +#: newforms/widgets.py:188 contrib/admin/filterspecs.py:152 +#: oldforms/__init__.py:591 +msgid "Unknown" +msgstr "Tuntematon" + +#: newforms/widgets.py:188 contrib/admin/filterspecs.py:145 +#: oldforms/__init__.py:591 +msgid "Yes" +msgstr "Kyllä" + +#: newforms/widgets.py:188 contrib/admin/filterspecs.py:145 +#: oldforms/__init__.py:591 +msgid "No" +msgstr "Ei" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s luotiin onnistuneesti." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s päivitettiin onnistuneesti." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s on poistettu." + +#: template/defaultfilters.py:532 +msgid "yes,no,maybe" +msgstr "kyllä,ei,ehkä" + +#: template/defaultfilters.py:561 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:563 +#, python-format +msgid "%.1f KB" +msgstr "%.1f Kt" + +#: template/defaultfilters.py:565 +#, python-format +msgid "%.1f MB" +msgstr "%.1f Mt" + +#: template/defaultfilters.py:566 +#, python-format +msgid "%.1f GB" +msgstr "%.1f Gt" + +#: db/models/manipulators.py:309 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(field)s omaa jo kohteen %(object)s, joka on tyyppiä %(type)s." + +#: db/models/fields/__init__.py:52 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s, jolla on tämä %(fieldname)s, on jo olemassa." + +#: db/models/fields/__init__.py:414 +msgid "This value must be an integer." +msgstr "Tarvitaan kokonaisluku." + +#: db/models/fields/__init__.py:450 +msgid "This value must be either True or False." +msgstr "Tarvitaan tosi (True) tai epätosi (False)." + +#: db/models/fields/__init__.py:471 +msgid "This field cannot be null." +msgstr "Tämän kentän arvo ei voi olla \"null\"." + +#: db/models/fields/__init__.py:640 +msgid "This value must be a decimal number." +msgstr "Tähän tarvitaan desimaaliluku." + +#: db/models/fields/__init__.py:751 +msgid "Enter a valid filename." +msgstr "Tiedostonimi ei kelpaa." + +#: db/models/fields/__init__.py:894 +msgid "This value must be either None, True or False." +msgstr "Tähän tarvitaan tyhjä (None), tosi (True) tai epätosi (False)." + +#: db/models/fields/related.py:55 +#, python-format +msgid "Please enter a valid %s." +msgstr "Syöttämäsi %s ei kelpaa." + +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "Erottele tunnisteet pilkuilla." + +#: db/models/fields/related.py:660 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +" Pidä \"Ctrl\"-näppäin (tai Macin \"Command\") pohjassa valitaksesi useita " +"vaihtoehtoja." + +#: db/models/fields/related.py:707 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Syöttämäsi %(self)s-tunniste %(value)r ei kelpaa." +msgstr[1] "Syöttämäsi %(self)s-tunnisteet %(value)r eivät kelpaa." + +#: contrib/sites/models.py:33 +msgid "domain name" +msgstr "domain-nimi" + +#: contrib/sites/models.py:34 +msgid "display name" +msgstr "näyttönimi" + +#: contrib/sites/models.py:38 +msgid "site" +msgstr "sivusto" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "sivustot" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "ohjaa osoitteesta" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Tässä on käytettävä absoluuttista polkua ilman verkkotunnusta. Esimerkki: " +"'\\\n" +"events/search/'" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "ohjaa osoitteeseen" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Tässä on käytettävä joko absoluuttista polkua (kuten yllä) tai täydellistä " +"'http://'-alkuista URL-osoitetta." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "edelleenohjaus" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "edelleenohjaukset" + +#: contrib/comments/models.py:67 contrib/comments/models.py:169 +msgid "object ID" msgstr "kohteen tunniste" -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "kohteen tiedot" +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "otsikko" -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "tapahtumatyyppi" +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:170 +msgid "comment" +msgstr "kommentti" -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "selitys" +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "1. pisteytys" -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "lokimerkintä" +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "2. pisteytys" -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "lokimerkinnät" +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "3. pisteytys" -#: contrib/admin/filterspecs.py:40 +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "4. pisteytys" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "5. pisteytys" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "6. pisteytys" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "7. pisteytys" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "8. pisteytys" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "on sallittu pisteytys" + +#: contrib/comments/models.py:83 contrib/comments/models.py:172 +msgid "date/time submitted" +msgstr "lähetyshetki" + +#: contrib/comments/models.py:84 contrib/comments/models.py:173 +msgid "is public" +msgstr "on julkinen" + +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306 +msgid "IP address" +msgstr "IP-osoite" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "on poistettu" + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Rastita jos kommentti on asiaankuulumaton. Kommentin tilalla näytetään\n" +"viesti \"Tämä kommentti on poistettu\"." + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "kommentit" + +#: contrib/comments/models.py:134 contrib/comments/models.py:213 +msgid "Content object" +msgstr "Kommentoitu kohde" + +#: contrib/comments/models.py:162 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +" Kirjoittanut %(user)s, pvm %(date)s\\n\n" +" \\n\n" +" %(comment)s\\n\n" +" \\n\n" +" http://%(domain)s%(url)s" + +#: contrib/comments/models.py:171 +msgid "person's name" +msgstr "henkilön nimi" + +#: contrib/comments/models.py:174 +msgid "ip address" +msgstr "IP-osoite" + +#: contrib/comments/models.py:176 +msgid "approved by staff" +msgstr "ylläpidon hyväksymä" + +#: contrib/comments/models.py:179 +msgid "free comment" +msgstr "vapaa kommentti" + +#: contrib/comments/models.py:180 +msgid "free comments" +msgstr "vapaat kommentit" + +#: contrib/comments/models.py:239 +msgid "score" +msgstr "pisteet" + +#: contrib/comments/models.py:240 +msgid "score date" +msgstr "pisteytyspäivä" + +#: contrib/comments/models.py:243 +msgid "karma score" +msgstr "karma-pisteytys" + +#: contrib/comments/models.py:244 +msgid "karma scores" +msgstr "karma-pisteytykset" + +#: contrib/comments/models.py:248 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d pistettä käyttäjältä %(user)s" + +#: contrib/comments/models.py:264 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +" %(user)s on merkinnyt tämän kommentin:\\n\n" +" \\n\n" +" %(text)s" + +#: contrib/comments/models.py:271 +msgid "flag date" +msgstr "merkintäpäivä" + +#: contrib/comments/models.py:274 +msgid "user flag" +msgstr "käyttäjän merkki" + +#: contrib/comments/models.py:275 +msgid "user flags" +msgstr "käyttäjien merkit" + +#: contrib/comments/models.py:279 +#, python-format +msgid "Flag by %r" +msgstr "Käyttäjän %r merkki" + +#: contrib/comments/models.py:284 +msgid "deletion date" +msgstr "poistamispäivä" + +#: contrib/comments/models.py:286 +msgid "moderator deletion" +msgstr "valvojan poisto" + +#: contrib/comments/models.py:287 +msgid "moderator deletions" +msgstr "valvojien poistot" + +#: contrib/comments/models.py:291 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Valvojan %r poisto" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Nimesi:" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "Kommentti:" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +msgstr "Esikatsele kommenttia" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "Käyttäjätunnus:" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +msgid "Log out" +msgstr "Kirjaudu ulos" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Salasana:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Unohditko salasanasi?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Pisteytykset" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Vaaditaan" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Vapaavalintainen" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Lähetä valokuva" + +#: contrib/comments/views/karma.py:20 +msgid "Anonymous users cannot vote" +msgstr "Anonyymit käyttäjät eivät voi äänestää" + +#: contrib/comments/views/karma.py:24 +msgid "Invalid comment ID" +msgstr "Kommentin tunniste on virheellinen" + +#: contrib/comments/views/karma.py:26 +msgid "No voting for yourself" +msgstr "Itseään ei voi äänestää" + +#: contrib/comments/views/comments.py:28 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"Tämä pisteytys on annettava, koska olet syöttänyt ainakin yhden muunkin " +"pisteytyksen." + +#: contrib/comments/views/comments.py:112 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Kommentin kirjoittanut käyttäjä on kirjoittanut vain yhden kommentin:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Kommentin kirjoittanut käyttäjä on kirjoittanut alle %(count)s kommenttia:\n" +"\n" +"%(text)s" + +# Mitä "sketchy user" tarkoittaa? +#: contrib/comments/views/comments.py:117 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Tämä on \"sketchy\"-käyttäjän kirjoittama kommentti:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:281 +msgid "Only POSTs are allowed" +msgstr "Vain POST-kutsut sallittu" + +#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:285 +msgid "One or more of the required fields wasn't submitted" +msgstr "Yksi tai useampi vaadittu kenttä on jäänyt täyttämättä" + +#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:287 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Kommenttilomaketta on käpälöity (turvallisuusrike)" + +#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:293 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"Kommenttilomakkeen 'target'-parametri ei kelpaa -- kohteen ID oli " +"virheellinen" + +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Kommenttilomake ei pyytänyt esikatselua tai lähettämistä" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:56 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "one" +msgstr "yksi" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "two" +msgstr "kaksi" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "three" +msgstr "kolme" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "four" +msgstr "neljä" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "five" +msgstr "viisi" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "six" +msgstr "kuusi" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "seven" +msgstr "seitsemän" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "eight" +msgstr "kahdeksan" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "nine" +msgstr "yhdeksän" + +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "tänään" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "huomenna" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "eilen" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "istunnon avain" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "istunnon tiedot" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "vanhenee" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "istunto" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "istunnot" + +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "mallin python-luokan nimi" + +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "sisältötyyppi" + +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "sisältötyypit" + +#: contrib/admin/filterspecs.py:42 #, python-format msgid "" "

                          By %s:

                          \n" @@ -640,553 +1058,114 @@ msgstr "" "

                          Yksi %s:

                          \n" "
                            \n" -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 msgid "All" msgstr "Kaikki" -#: contrib/admin/filterspecs.py:109 +#: contrib/admin/filterspecs.py:111 msgid "Any date" msgstr "Mikä tahansa päivä" -#: contrib/admin/filterspecs.py:110 +#: contrib/admin/filterspecs.py:112 msgid "Today" msgstr "Tänään" -#: contrib/admin/filterspecs.py:113 +#: contrib/admin/filterspecs.py:115 msgid "Past 7 days" msgstr "Viimeiset 7 päivää" -#: contrib/admin/filterspecs.py:115 +#: contrib/admin/filterspecs.py:117 msgid "This month" msgstr "Tässä kuussa" -#: contrib/admin/filterspecs.py:117 +#: contrib/admin/filterspecs.py:119 msgid "This year" msgstr "Tänä vuonna" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Kyllä" +#: contrib/admin/models.py:17 +msgid "action time" +msgstr "tapahtumahetki" -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Ei" +#: contrib/admin/models.py:20 +msgid "object id" +msgstr "kohteen tunniste" -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Tuntematon" +#: contrib/admin/models.py:21 +msgid "object repr" +msgstr "kohteen tiedot" -#: contrib/admin/views/decorators.py:24 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Kirjaudu sisään" +#: contrib/admin/models.py:22 +msgid "action flag" +msgstr "tapahtumatyyppi" -#: contrib/admin/views/decorators.py:62 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "Kirjaudu uudelleen sisään, koska istuntosi on mennyt umpeen. Muutoksesi ovat silti tallessa." +#: contrib/admin/models.py:23 +msgid "change message" +msgstr "selitys" -#: contrib/admin/views/decorators.py:69 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "Selaimesi ei salli evästeitä. Muuta asetukset sallimaan evästeet, lataa tämä sivu uudelleen ja yritä toistamiseen." +#: contrib/admin/models.py:26 +msgid "log entry" +msgstr "lokimerkintä" -#: contrib/admin/views/decorators.py:83 -msgid "Usernames cannot contain the '@' character." -msgstr "Käyttäjätunnuksessa ei saa olla '@'-merkkiä." +#: contrib/admin/models.py:27 +msgid "log entries" +msgstr "lokimerkinnät" -#: contrib/admin/views/decorators.py:85 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Käyttäjätunnus ei ole sama kuin sähköpostiosoite. Kokeile '%s'." - -#: contrib/admin/views/main.py:223 -msgid "Site administration" -msgstr "Sivuston ylläpito" - -#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:14 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" on nyt lisätty." - -#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:345 -#: contrib/admin/views/auth.py:19 -msgid "You may edit it again below." -msgstr "Voit muokata sitä uudelleen alla." - -#: contrib/admin/views/main.py:269 contrib/admin/views/main.py:354 -#, python-format -msgid "You may add another %s below." -msgstr "Uusi %s on lisättävissä alla." - -#: contrib/admin/views/main.py:287 -#, python-format -msgid "Add %s" -msgstr "Uusi %s" - -#: contrib/admin/views/main.py:333 -#, python-format -msgid "Added %s." -msgstr "Lisätty %s." - -#: contrib/admin/views/main.py:333 contrib/admin/views/main.py:335 -#: contrib/admin/views/main.py:337 -msgid "and" -msgstr "ja" - -#: contrib/admin/views/main.py:335 -#, python-format -msgid "Changed %s." -msgstr "Muokattu: %s." - -#: contrib/admin/views/main.py:337 -#, python-format -msgid "Deleted %s." -msgstr "Poistettu %s." - -#: contrib/admin/views/main.py:340 -msgid "No fields changed." -msgstr "Ei muutoksia kenttiin." - -#: contrib/admin/views/main.py:343 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" on nyt muutettu." - -#: contrib/admin/views/main.py:351 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "%(name)s \"%(obj)s\" on nyt lisätty. Voit muokata sitä uudelleen alla." - -#: contrib/admin/views/main.py:389 -#, python-format -msgid "Change %s" -msgstr "Muokkaa: %s" - -#: contrib/admin/views/main.py:471 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:476 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s:" - -#: contrib/admin/views/main.py:509 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" on poistettu." - -#: contrib/admin/views/main.py:512 -msgid "Are you sure?" -msgstr "Oletko varma?" - -#: contrib/admin/views/main.py:534 -#, python-format -msgid "Change history: %s" -msgstr "Muokkaushistoria: %s" - -#: contrib/admin/views/main.py:568 -#, python-format -msgid "Select %s" -msgstr "Valitse %s" - -#: contrib/admin/views/main.py:568 -#, python-format -msgid "Select %s to change" -msgstr "Valitse muokattava %s" - -#: contrib/admin/views/main.py:744 -msgid "Database error" -msgstr "Tietokantavirhe" - -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 -#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 -msgid "Integer" -msgstr "Kokonaisluku" - -#: contrib/admin/views/doc.py:292 -msgid "Boolean (Either True or False)" -msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)" - -#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Merkkijono (enintään %(maxlength)s merkkiä)" - -#: contrib/admin/views/doc.py:294 -msgid "Comma-separated integers" -msgstr "Pilkulla erotetut kokonaisluvut" - -#: contrib/admin/views/doc.py:295 -msgid "Date (without time)" -msgstr "Päivämäärä" - -#: contrib/admin/views/doc.py:296 -msgid "Date (with time)" -msgstr "Päivämäärä ja kellonaika" - -#: contrib/admin/views/doc.py:297 -msgid "E-mail address" -msgstr "Sähköpostios." - -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 -#: contrib/admin/views/doc.py:302 -msgid "File path" -msgstr "Tiedostopolku" - -#: contrib/admin/views/doc.py:300 -msgid "Decimal number" -msgstr "Desimaaliluku" - -#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85 -msgid "IP address" -msgstr "IP-osoite" - -#: contrib/admin/views/doc.py:306 -msgid "Boolean (Either True, False or None)" -msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)" - -#: contrib/admin/views/doc.py:307 -msgid "Relation to parent model" -msgstr "Relaatio emomalliin" - -#: contrib/admin/views/doc.py:308 -msgid "Phone number" -msgstr "Puhelinnumero" - -#: contrib/admin/views/doc.py:313 -msgid "Text" -msgstr "Tekstiä" - -#: contrib/admin/views/doc.py:314 -msgid "Time" -msgstr "Kellonaika" - -#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL-osoite" - -#: contrib/admin/views/doc.py:316 -msgid "U.S. state (two uppercase letters)" -msgstr "USA:n osavaltio (kaksikirjaiminen versaalein)" - -#: contrib/admin/views/doc.py:317 -msgid "XML text" -msgstr "XML-teksti" - -#: contrib/admin/views/auth.py:25 -msgid "Add user" -msgstr "Uusi käyttäjä" - -#: contrib/admin/templatetags/admin_list.py:230 +#: contrib/admin/templatetags/admin_list.py:254 msgid "All dates" msgstr "Kaikki päivät" -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Näytä kaikki" - -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/base.html:24 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Documentation" -msgstr "Ohjeita" - -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/base.html:24 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 msgid "Change password" msgstr "Vaihda salasana" -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/base.html:24 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/comments/templates/comments/form.html:6 -msgid "Log out" -msgstr "Kirjaudu ulos" - -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/base.html:29 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/logged_out.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 msgid "Home" msgstr "Etusivu" -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Poista" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "Kohteen '%(escaped_object)s' (%(object_name)s) poisto poistaisi myös siihen liittyviä kohteita, mutta sinulla ei ole oikeutta näiden kohteiden poistamiseen:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, 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 "Haluatko varmasti poistaa kohteen \"%(escaped_object)s\" (%(object_name)s)? Myös seuraavat kohteet poistettaisiin samalla:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Kyllä, olen varma" - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Sivua ei löydy" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Pahoittelemme, pyydettyä sivua ei voitu löytää." - -#: contrib/admin/templates/admin/change_form.html:15 -#: contrib/admin/templates/admin/index.html:28 -msgid "Add" -msgstr "Lisää uusi" - -#: contrib/admin/templates/admin/change_form.html:20 -#: contrib/admin/templates/admin/object_history.html:5 -msgid "History" -msgstr "Muokkaushistoria" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Näytä lopputulos" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Korjaa virhe." -msgstr[1] "Korjaa virheet." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Järjestys" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Järjestysnumero:" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " %(filter_title)s:" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Tallenna uutena" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Tallenna ja lisää seuraava" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Tallenna välillä ja jatka muokkaamista" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Tallenna ja poistu" - -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Lisää uusi %(name)s" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Sovelluksen %(name)s mallit." - -#: contrib/admin/templates/admin/index.html:18 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Muokkaa" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Sinulla ei ole oikeutta muokata mitään." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Viimeisimmät muutokset" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Sinun tekemäsi muutokset" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Ei yhtään" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django-sivuston ylläpito" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Djangon ylläpito" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Pvm/klo" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Käyttäjä" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Toiminto" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "N j, Y, P" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "Tällä kohteella ei ole muutoshistoriaa. Sitä ei ole lisätty tämän ylläpitosivun avulla." - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Palvelinvirhe" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Palvelinvirhe (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Palvelinvirhe (500)" - -#: contrib/admin/templates/admin/invalid_setup.html:8 -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 "Tietokanta-asennuksessasi on jotain vialla. Varmistu, että sopivat taulut on luotu ja että oikea käyttäjä voi lukea tietokantaa." - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Etsi" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 hakutulas" -msgstr[1] "%(counter)s hakutulosta" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "yhteensä %(full_result_count)s" - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Suodatin" - -#: contrib/admin/templates/admin/login.html:17 -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -msgid "Username:" -msgstr "Käyttäjätunnus" - -#: contrib/admin/templates/admin/login.html:20 -#: contrib/comments/templates/comments/form.html:8 -msgid "Password:" -msgstr "Salasana:" - -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Oletko unohtanut salasanasi?" - -#: contrib/admin/templates/admin/base.html:24 -msgid "Welcome," -msgstr "Tervetuloa," - -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita käyttäjän tietoja." - -#: contrib/admin/templates/admin/auth/user/add_form.html:12 -msgid "Username" -msgstr "Käyttäjätunnus" - -#: contrib/admin/templates/admin/auth/user/add_form.html:18 -msgid "Password" -msgstr "Salasana:" - -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -msgid "Password (again)" -msgstr "Salasana toistamiseen" - -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -msgid "Enter the same password as above, for verification." -msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen." +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +msgid "Documentation" +msgstr "Ohjeita" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -1205,7 +1184,15 @@ msgid "" "bookmarklets require you to be viewing the site from a computer designated\n" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

                            \n" -msgstr "\n

                            Asenna kirjanmerkkinen raahaamalla linkki kirjanmerkkien työkalupalkkiin tai napsauttamalla linkkiä oikeanpuoleisella hiiren painikkeella ja valitsemalla kirjanmerkkeihin lisäämisen. Sen jälkeen voit valita kirjanmerkkisen miltä tahansa sivuston sivulta. Huomaa, että jotkin näistä kirjanmerkkisistä toimivat vain, jos selaat sivustoa \"paikalliseksi\" määritellyltä tietokoneelta (kysy lisätietoja verkkonne ylläpitäjältä).

                            \n" +msgstr "" +"\n" +"

                            Asenna kirjanmerkkinen raahaamalla linkki kirjanmerkkien " +"työkalupalkkiin tai napsauttamalla linkkiä oikeanpuoleisella hiiren " +"painikkeella ja valitsemalla kirjanmerkkeihin lisäämisen. Sen jälkeen voit " +"valita kirjanmerkkisen miltä tahansa sivuston sivulta. Huomaa, että jotkin " +"näistä kirjanmerkkisistä toimivat vain, jos selaat sivustoa \"paikalliseksi" +"\" määritellyltä tietokoneelta (kysy lisätietoja verkkonne ylläpitäjältä).\n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -1225,7 +1212,9 @@ msgstr "Näytä kohteen tunniste" msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." -msgstr "Näyttää yksittäistä kohdetta vastaavilla sivuilla kohteen tyypin ja tunnisteen." +msgstr "" +"Näyttää yksittäistä kohdetta vastaavilla sivuilla kohteen tyypin ja " +"tunnisteen." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" @@ -1233,7 +1222,8 @@ msgstr "Muokkaa tätä kohdetta (tässä ikkunassa)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Siirtyy yksittäistä kohdetta vastaavalta sivulta kohteen ylläpitosivulle." +msgstr "" +"Siirtyy yksittäistä kohdetta vastaavalta sivulta kohteen ylläpitosivulle." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" @@ -1243,84 +1233,13 @@ msgstr "Muokkaa tätä kohdetta (uudessa ikkunassa)" msgid "As above, but opens the admin page in a new window." msgstr "Kuten yllä, mutta avaa ylläpitosivun uuteen ikkunaan." -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Pvm:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Klo:" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Tällä hetkellä:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Muokkaa:" - +#: contrib/admin/templates/registration/password_reset_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/password_reset_form.html:6 #: contrib/admin/templates/registration/password_reset_form.html:10 -#: contrib/admin/templates/registration/password_reset_done.html:4 msgid "Password reset" msgstr "Salasanan nollaus" -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"Unohditko salasanasi? Syötä alle sähköpostiosoitteesi, niin \n" -"lähetämme sinulle uuden salasanan." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Sähköpostiosoite:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Nollaa salasana" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Sait tämän viestin, koska pyysit uutta salasanaa" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "sivuston %(site_name)s käyttäjätilillesi" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "Uusi salasanasi on: %(new_password)s" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "Voit vaihtaa salasanan sivulla:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "Käyttäjätunnuksesi siltä varalta, että olet unohtanut sen:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Kiitos vierailustasi sivuillemme!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "%(site_name)s ylläpitäjät" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Kiitos sivuillamme viettämästäsi ajasta." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Kirjaudu uudelleen sisään" - #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" @@ -1365,6 +1284,61 @@ msgstr "Varmista uusi salasana:" msgid "Change my password" msgstr "Vaihda salasana" +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Kiitos sivuillamme viettämästäsi ajasta." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Kirjaudu uudelleen sisään" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Sait tämän viestin, koska pyysit uutta salasanaa" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "sivuston %(site_name)s käyttäjätilillesi" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Uusi salasanasi on: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Voit vaihtaa salasanan sivulla:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Käyttäjätunnuksesi siltä varalta, että olet unohtanut sen:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Kiitos vierailustasi sivuillemme!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s ylläpitäjät" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Unohditko salasanasi? Syötä alle sähköpostiosoitteesi, niin \n" +"lähetämme sinulle uuden salasanan." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Sähköpostiosoite:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Nollaa salasana" + #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" @@ -1374,21 +1348,719 @@ msgstr "Salasanan muuttaminen onnistui" msgid "Your password was changed." msgstr "Salasanasi on muutettu." -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "domain-nimi" +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Poista" -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "näyttönimi" +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Kohteen '%(escaped_object)s' (%(object_name)s) poisto poistaisi myös siihen " +"liittyviä kohteita, mutta sinulla ei ole oikeutta näiden kohteiden " +"poistamiseen:" -#: contrib/sites/models.py:15 -msgid "site" -msgstr "sivusto" +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, 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 "" +"Haluatko varmasti poistaa kohteen \"%(escaped_object)s\" (%(object_name)s)? " +"Myös seuraavat kohteet poistettaisiin samalla:" -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "sivustot" +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Kyllä, olen varma" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Suodatin" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Tervetuloa," + +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "" +"Tietokanta-asennuksessasi on jotain vialla. Varmistu, että sopivat taulut on " +"luotu ja että oikea käyttäjä voi lukea tietokantaa." + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s:" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "Muokkaushistoria" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Pvm/klo" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Käyttäjä" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Toiminto" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Tällä kohteella ei ole muutoshistoriaa. Sitä ei ole lisätty tämän " +"ylläpitosivun avulla." + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Sovelluksen %(name)s mallit." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:28 +#: contrib/admin/templates/admin/change_form.html:15 +msgid "Add" +msgstr "Lisää uusi" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Muokkaa" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Sinulla ei ole oikeutta muokata mitään." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Viimeisimmät muutokset" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Sinun tekemäsi muutokset" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ei yhtään" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 +msgid "Log in" +msgstr "Kirjaudu sisään" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Lisää uusi %(name)s" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Tallenna uutena" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Tallenna ja lisää seuraava" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Tallenna välillä ja jatka muokkaamista" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Tallenna ja poistu" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Etsi" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 hakutulas" +msgstr[1] "%(counter)s hakutulosta" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "yhteensä %(full_result_count)s" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Näytä lopputulos" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Korjaa virhe." +msgstr[1] "Korjaa virheet." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Järjestys" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Järjestysnumero:" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Näytä kaikki" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Sivua ei löydy" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Pahoittelemme, pyydettyä sivua ei voitu löytää." + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django-sivuston ylläpito" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Djangon ylläpito" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Palvelinvirhe" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Palvelinvirhe (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Palvelinvirhe (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "Palvelimella on tapahtunut virhe. Se on ilmoitettu sivuston ylläpitäjille sähköpostilla ja korjataan pian. Kiitämme kärsivällisyydestä." + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita " +"käyttäjän tietoja." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Käyttäjätunnus" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "Salasana" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "Salasana toistamiseen" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Syötä käyttäjän %(username)s uusi salasana." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Pvm:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Klo:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Tällä hetkellä:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Muokkaa:" + +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" on nyt lisätty." + +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 +msgid "You may edit it again below." +msgstr "Voit muokata sitä uudelleen alla." + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Uusi käyttäjä" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Salasanan muuttaminen onnistui." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Vaihda salasana: %s" + +#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 +msgid "tag:" +msgstr "tag:" + +#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 +msgid "filter:" +msgstr "suodatin:" + +#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 +msgid "view:" +msgstr "view:" + +#: contrib/admin/views/doc.py:165 +#, python-format +msgid "App %r not found" +msgstr "Sovellusta %r ei löydy" + +#: contrib/admin/views/doc.py:172 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Sovelluksesta %(label)r ei löydy mallia %(name)r" + +#: contrib/admin/views/doc.py:184 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "tähän liittyvä `%(label)s.%(type)s`-kohde" + +#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 +msgid "model:" +msgstr "malli:" + +#: contrib/admin/views/doc.py:215 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "tähän liittyvät `%(label)s.%(name)s`-kohteet" + +#: contrib/admin/views/doc.py:220 +#, python-format +msgid "all %s" +msgstr "kaikki %s" + +#: contrib/admin/views/doc.py:225 +#, python-format +msgid "number of %s" +msgstr "%s-kohteiden lukumäärä" + +#: contrib/admin/views/doc.py:230 +#, python-format +msgid "Fields on %s objects" +msgstr "%s-kohteiden kentät" + +#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 +msgid "Integer" +msgstr "Kokonaisluku" + +#: contrib/admin/views/doc.py:293 +msgid "Boolean (Either True or False)" +msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)" + +#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Merkkijono (enintään %(max_length)s merkkiä)" + +#: contrib/admin/views/doc.py:295 +msgid "Comma-separated integers" +msgstr "Pilkulla erotetut kokonaisluvut" + +#: contrib/admin/views/doc.py:296 +msgid "Date (without time)" +msgstr "Päivämäärä" + +#: contrib/admin/views/doc.py:297 +msgid "Date (with time)" +msgstr "Päivämäärä ja kellonaika" + +#: contrib/admin/views/doc.py:298 +msgid "Decimal number" +msgstr "Desimaaliluku" + +#: contrib/admin/views/doc.py:299 +msgid "E-mail address" +msgstr "Sähköpostios." + +#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 +msgid "File path" +msgstr "Tiedostopolku" + +#: contrib/admin/views/doc.py:302 +msgid "Floating point number" +msgstr "Liukuluku" + +#: contrib/admin/views/doc.py:308 +msgid "Boolean (Either True, False or None)" +msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)" + +#: contrib/admin/views/doc.py:309 +msgid "Relation to parent model" +msgstr "Relaatio emomalliin" + +#: contrib/admin/views/doc.py:310 +msgid "Phone number" +msgstr "Puhelinnumero" + +#: contrib/admin/views/doc.py:315 +msgid "Text" +msgstr "Tekstiä" + +#: contrib/admin/views/doc.py:316 +msgid "Time" +msgstr "Kellonaika" + +#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL-osoite" + +#: contrib/admin/views/doc.py:318 +msgid "U.S. state (two uppercase letters)" +msgstr "USA:n osavaltio (kaksikirjaiminen versaalein)" + +#: contrib/admin/views/doc.py:319 +msgid "XML text" +msgstr "XML-teksti" + +#: contrib/admin/views/doc.py:345 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ei näytä urlpattern-objektilta" + +#: contrib/admin/views/main.py:230 +msgid "Site administration" +msgstr "Sivuston ylläpito" + +#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 +#, python-format +msgid "You may add another %s below." +msgstr "Uusi %s on lisättävissä alla." + +#: contrib/admin/views/main.py:296 +#, python-format +msgid "Add %s" +msgstr "Uusi %s" + +#: contrib/admin/views/main.py:342 +#, python-format +msgid "Added %s." +msgstr "Lisätty %s." + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Changed %s." +msgstr "Muokattu: %s." + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Deleted %s." +msgstr "Poistettu %s." + +#: contrib/admin/views/main.py:349 +msgid "No fields changed." +msgstr "Ei muutoksia kenttiin." + +#: contrib/admin/views/main.py:352 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" on nyt muutettu." + +#: contrib/admin/views/main.py:360 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" on nyt lisätty. Voit muokata sitä uudelleen alla." + +#: contrib/admin/views/main.py:398 +#, python-format +msgid "Change %s" +msgstr "Muokkaa: %s" + +#: contrib/admin/views/main.py:483 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:488 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s:" + +#: contrib/admin/views/main.py:520 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" on poistettu." + +#: contrib/admin/views/main.py:523 +msgid "Are you sure?" +msgstr "Oletko varma?" + +#: contrib/admin/views/main.py:545 +#, python-format +msgid "Change history: %s" +msgstr "Muokkaushistoria: %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s" +msgstr "Valitse %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s to change" +msgstr "Valitse muokattava %s" + +#: contrib/admin/views/main.py:780 +msgid "Database error" +msgstr "Tietokantavirhe" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Käyttäjätunnus tai salasana ei kelpaa. Huomaa, että isot ja pienet kirjaimet " +"ovat merkitseviä." + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Kirjaudu uudelleen sisään, koska istuntosi on mennyt umpeen. Muutoksesi ovat " +"silti tallessa." + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Selaimesi ei salli evästeitä. Muuta asetukset sallimaan evästeet, lataa tämä " +"sivu uudelleen ja yritä toistamiseen." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Käyttäjätunnuksessa ei saa olla '@'-merkkiä." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Käyttäjätunnus ei ole sama kuin sähköpostiosoite. Kokeile '%s'." + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Kirjautunut ulos" + +#: contrib/auth/models.py:53 contrib/auth/models.py:73 +msgid "name" +msgstr "nimi" + +#: contrib/auth/models.py:55 +msgid "codename" +msgstr "koodinimi" + +#: contrib/auth/models.py:58 +msgid "permission" +msgstr "oikeus" + +#: contrib/auth/models.py:59 contrib/auth/models.py:74 +msgid "permissions" +msgstr "oikeudet" + +#: contrib/auth/models.py:77 +msgid "group" +msgstr "ryhmä" + +#: contrib/auth/models.py:78 contrib/auth/models.py:121 +msgid "groups" +msgstr "ryhmät" + +#: contrib/auth/models.py:111 +msgid "username" +msgstr "tunnus" + +#: contrib/auth/models.py:111 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +" Vaaditaan. Enintään 30 kirjanta (a-z), numeroa (0-9) tai alaviivaa (_)." + +#: contrib/auth/models.py:112 +msgid "first name" +msgstr "etunimi" + +#: contrib/auth/models.py:113 +msgid "last name" +msgstr "sukunimi" + +#: contrib/auth/models.py:114 +msgid "e-mail address" +msgstr "sähköposti" + +#: contrib/auth/models.py:115 +msgid "password" +msgstr "salasana" + +#: contrib/auth/models.py:115 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "Syötä muodossa '[algo]$[suola]$[heksa-digest]' tai käytä muutoslomaketta." + +#: contrib/auth/models.py:116 +msgid "staff status" +msgstr "ylläpitäjä" + +#: contrib/auth/models.py:116 +msgid "Designates whether the user can log into this admin site." +msgstr "Ylläpitäjillä on pääsy tähän sivuston ylläpito-osioon." + +#: contrib/auth/models.py:117 +msgid "active" +msgstr "voimassa" + +#: contrib/auth/models.py:117 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin " +"käytön poistamatta sitä." + +#: contrib/auth/models.py:118 +msgid "superuser status" +msgstr "pääkäyttäjä" + +#: contrib/auth/models.py:118 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella." + +#: contrib/auth/models.py:119 +msgid "last login" +msgstr "viimeksi kirjautunut" + +#: contrib/auth/models.py:120 +msgid "date joined" +msgstr "liittynyt" + +#: contrib/auth/models.py:122 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Tässä valittujen oikeuksien lisäksi käyttäjä saa myös kaikki niiden ryhmien " +"oikeudet, joiden jäsen hän on." + +#: contrib/auth/models.py:123 +msgid "user permissions" +msgstr "käyttäjän oikeudet" + +#: contrib/auth/models.py:127 +msgid "user" +msgstr "käyttäjä" + +#: contrib/auth/models.py:128 +msgid "users" +msgstr "käyttäjät" + +#: contrib/auth/models.py:134 +msgid "Personal info" +msgstr "Henkilökohtaiset tiedot" + +#: contrib/auth/models.py:135 +msgid "Permissions" +msgstr "Oikeudet" + +#: contrib/auth/models.py:136 +msgid "Important dates" +msgstr "Tärkeät päivämäärät" + +#: contrib/auth/models.py:137 +msgid "Groups" +msgstr "Ryhmät" + +#: contrib/auth/models.py:288 +msgid "message" +msgstr "viesti" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Salasanat eivät täsmää." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Käyttäjätunnus on jo rekisteröity." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "Selaimesi ei salli evästeitä. Sisäänkirjautuminen vaatii evästeen." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Tämä käyttäjätili ei ole voimassa." + +#: contrib/auth/forms.py:84 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "Sähköpostiosoitetta vastaavaa käyttäjätunnusta ei löydy. Oletko varmasti jo rekisteröitynyt?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Salasanat eivät täsmää." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Vanha salasana on virheellinen. Yritä uudelleen." #: contrib/flatpages/models.py:8 msgid "" @@ -1417,7 +2089,9 @@ msgstr "mallipohjan nimi" msgid "" "Example: 'flatpages/contact_page.html'. If this isn't provided, the system " "will use 'flatpages/default.html'." -msgstr "Esimerkiksi: 'flatpages/yhteydenotto.html'. Jos tämä jätetään tyhjäksi, käytetään oletuspohjaa 'flatpages/default.html'." +msgstr "" +"Esimerkiksi: 'flatpages/yhteydenotto.html'. Jos tämä jätetään tyhjäksi, " +"käytetään oletuspohjaa 'flatpages/default.html'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1425,7 +2099,8 @@ msgstr "vaaditaan rekisteröityminen" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Jos tämä kohta on valittu, vain sisäänkirjautuneet käyttäjät näkevät sivun." +msgstr "" +"Jos tämä kohta on valittu, vain sisäänkirjautuneet käyttäjät näkevät sivun." #: contrib/flatpages/models.py:18 msgid "flat page" @@ -1435,393 +2110,1022 @@ msgstr "tekstisivu" msgid "flat pages" msgstr "tekstisivut" -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "ohjaa osoitteesta" +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Banská Bystrican aule" -#: contrib/redirects/models.py:8 +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Bratislavan alue" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Košicen alue" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nitran alue" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Prešovin alue" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trenčínin alue" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava region" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Zilina region" + +#: contrib/localflavor/sk/forms.py:32 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Syötä postinumero muodossa XXXXX tai XXX XX." + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajska Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kezmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komarno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kosice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kosice II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kosice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kosice IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavska Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Roznava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ruzomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spisska Nova Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sala" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencin" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zilina" + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Syötä postinumero muodossa XXXXX." + +#: contrib/localflavor/in_/forms.py:16 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Syötä postinumero muodossa XXXXXXX." + +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14 +msgid "Enter a zip code in the format XXXX." +msgstr "Syötä postinumero muodossa XXXX." + +#: contrib/localflavor/ch/forms.py:90 msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Innerrhoden" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Ausserrhoden" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Basel-Stadt" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Basel-Land" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Berne" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Geneve" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Graubuenden" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Lucerne" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchatel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwalden" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwalden" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Solothurn" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "St. Gallen" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Ticino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Valais" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zürich" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Syötä oikea suomalainen henkilötunnus." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" -"Tässä on käytettävä absoluuttista polkua ilman verkkotunnusta. Esimerkki: " -"'\\\n" -"events/search/'" -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "ohjaa osoitteeseen" +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Syötä nelinumeroinen postinumero." -#: contrib/redirects/models.py:10 +#: contrib/localflavor/br/forms.py:23 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Syötä postinumero muodossa XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:35 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Puhelinnumeron tulee olla muodossa XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:68 msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." +"Select a valid brazilian state. That state is not one of the available " +"states." msgstr "" -"Tässä on käytettävä joko absoluuttista polkua (kuten yllä) tai täydellistä " -"'http://'-alkuista URL-osoitetta." -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "edelleenohjaus" +#: contrib/localflavor/br/forms.py:103 contrib/localflavor/ar/forms.py:61 +msgid "This field requires only numbers." +msgstr "Tähän kenttään kelpaavat vain numerot." -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "edelleenohjaukset" - -#: contrib/comments/models.py:67 contrib/comments/models.py:166 -msgid "object ID" -msgstr "kohteen tunniste" - -#: contrib/comments/models.py:68 -msgid "headline" -msgstr "otsikko" - -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 -msgid "comment" -msgstr "kommentti" - -#: contrib/comments/models.py:70 -msgid "rating #1" -msgstr "1. pisteytys" - -#: contrib/comments/models.py:71 -msgid "rating #2" -msgstr "2. pisteytys" - -#: contrib/comments/models.py:72 -msgid "rating #3" -msgstr "3. pisteytys" - -#: contrib/comments/models.py:73 -msgid "rating #4" -msgstr "4. pisteytys" - -#: contrib/comments/models.py:74 -msgid "rating #5" -msgstr "5. pisteytys" - -#: contrib/comments/models.py:75 -msgid "rating #6" -msgstr "6. pisteytys" - -#: contrib/comments/models.py:76 -msgid "rating #7" -msgstr "7. pisteytys" - -#: contrib/comments/models.py:77 -msgid "rating #8" -msgstr "8. pisteytys" - -#: contrib/comments/models.py:82 -msgid "is valid rating" -msgstr "on sallittu pisteytys" - -#: contrib/comments/models.py:83 contrib/comments/models.py:169 -msgid "date/time submitted" -msgstr "lähetyshetki" - -#: contrib/comments/models.py:84 contrib/comments/models.py:170 -msgid "is public" -msgstr "on julkinen" - -#: contrib/comments/models.py:86 -msgid "is removed" -msgstr "on poistettu" - -#: contrib/comments/models.py:86 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." +#: contrib/localflavor/br/forms.py:105 +msgid "This field requires at most 11 digits or 14 characters." msgstr "" -"Rastita jos kommentti on asiaankuulumaton. Kommentin tilalla näytetään\n" -"viesti \"Tämä kommentti on poistettu\"." -#: contrib/comments/models.py:91 -msgid "comments" -msgstr "kommentit" - -#: contrib/comments/models.py:131 contrib/comments/models.py:207 -msgid "Content object" -msgstr "Kommentoitu kohde" - -#: contrib/comments/models.py:159 -#, python-format -msgid "" -"Posted by %(user)s at %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" +#: contrib/localflavor/br/forms.py:115 +msgid "Invalid CPF number." msgstr "" -" Kirjoittanut %(user)s, pvm %(date)s\\n\n" -" \\n\n" -" %(comment)s\\n\n" -" \\n\n" -" http://%(domain)s%(url)s" -#: contrib/comments/models.py:168 -msgid "person's name" -msgstr "henkilön nimi" +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "Tähän kenttään vaaditaan ainakin 14 numeroa." -#: contrib/comments/models.py:171 -msgid "ip address" -msgstr "IP-osoite" - -#: contrib/comments/models.py:173 -msgid "approved by staff" -msgstr "ylläpidon hyväksymä" - -#: contrib/comments/models.py:176 -msgid "free comment" -msgstr "vapaa kommentti" - -#: contrib/comments/models.py:177 -msgid "free comments" -msgstr "vapaat kommentit" - -#: contrib/comments/models.py:233 -msgid "score" -msgstr "pisteet" - -#: contrib/comments/models.py:234 -msgid "score date" -msgstr "pisteytyspäivä" - -#: contrib/comments/models.py:237 -msgid "karma score" -msgstr "karma-pisteytys" - -#: contrib/comments/models.py:238 -msgid "karma scores" -msgstr "karma-pisteytykset" - -#: contrib/comments/models.py:242 -#, python-format -msgid "%(score)d rating by %(user)s" -msgstr "%(score)d pistettä käyttäjältä %(user)s" - -#: contrib/comments/models.py:258 -#, python-format -msgid "" -"This comment was flagged by %(user)s:\n" -"\n" -"%(text)s" +#: contrib/localflavor/br/forms.py:147 +msgid "Invalid CNPJ number." msgstr "" -" %(user)s on merkinnyt tämän kommentin:\\n\n" -" \\n\n" -" %(text)s" -#: contrib/comments/models.py:265 -msgid "flag date" -msgstr "merkintäpäivä" - -#: contrib/comments/models.py:268 -msgid "user flag" -msgstr "käyttäjän merkki" - -#: contrib/comments/models.py:269 -msgid "user flags" -msgstr "käyttäjien merkit" - -#: contrib/comments/models.py:273 -#, python-format -msgid "Flag by %r" -msgstr "Käyttäjän %r merkki" - -#: contrib/comments/models.py:278 -msgid "deletion date" -msgstr "poistamispäivä" - -#: contrib/comments/models.py:280 -msgid "moderator deletion" -msgstr "valvojan poisto" - -#: contrib/comments/models.py:281 -msgid "moderator deletions" -msgstr "valvojien poistot" - -#: contrib/comments/models.py:285 -#, python-format -msgid "Moderator deletion by %r" -msgstr "Valvojan %r poisto" - -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Anonyymit käyttäjät eivät voi äänestää" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "Kommentin tunniste on virheellinen" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "Itseään ei voi äänestää" - -#: contrib/comments/views/comments.py:27 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Tämä pisteytys on annettava, koska olet syöttänyt ainakin yhden muunkin pisteytyksen." - -#: contrib/comments/views/comments.py:111 -#, python-format -msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" -"\n" -"%(text)s" -msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" -"\n" -"%(text)s" -msgstr[0] "" -"Kommentin kirjoittanut käyttäjä on kirjoittanut vain yhden kommentin:\n" -"\n" -"%(text)s" -msgstr[1] "" -"Kommentin kirjoittanut käyttäjä on kirjoittanut alle %(count)s kommenttia:\n" -"\n" -"%(text)s" - -# Mitä "sketchy user" tarkoittaa? -#: contrib/comments/views/comments.py:116 -#, python-format -msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" msgstr "" -"Tämä on \"sketchy\"-käyttäjän kirjoittama kommentti:\n" -"\n" -"%(text)s" -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Vain POST-kutsut sallittu" +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "Yksi tai useampi vaadittu kenttä on jäänyt täyttämättä" +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berliini" -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "Kommenttilomaketta on käpälöity (turvallisuusrike)" +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" -#: contrib/comments/views/comments.py:206 -#: contrib/comments/views/comments.py:292 +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hampuri" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "Kommenttilomakkeen 'target'-parametri ei kelpaa -- kohteen ID oli virheellinen" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Kommenttilomake ei pyytänyt esikatselua tai lähettämistä" +#: contrib/localflavor/pl/forms.py:53 +msgid "National Identification Number consists of 11 digits." +msgstr "" -#: contrib/comments/templates/comments/form.html:8 -msgid "Forgotten your password?" -msgstr "Unohditko salasanasi?" +#: contrib/localflavor/pl/forms.py:59 +msgid "Wrong checksum for the National Identification Number." +msgstr "" -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Pisteytykset" +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Vaaditaan" +#: contrib/localflavor/pl/forms.py:82 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Syötä postinumero muodossa XX-XXX." -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Vapaavalintainen" +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Lähetä valokuva" +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" -#: contrib/comments/templates/comments/form.html:28 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Kommentti:" +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" -#: contrib/comments/templates/comments/form.html:35 -#: contrib/comments/templates/comments/freeform.html:10 -msgid "Preview comment" -msgstr "Esikatsele kommenttia" +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Nimesi:" +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "istunnon avain" +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" -#: contrib/sessions/models.py:52 -msgid "session data" -msgstr "istunnon tiedot" +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "vanhenee" +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" -#: contrib/sessions/models.py:57 -msgid "session" -msgstr "istunto" +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" -#: contrib/sessions/models.py:58 -msgid "sessions" -msgstr "istunnot" +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" -#: contrib/contenttypes/models.py:20 -msgid "python model class name" -msgstr "mallin python-luokan nimi" +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" -#: contrib/contenttypes/models.py:23 -msgid "content type" -msgstr "sisältötyyppi" +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" -#: contrib/contenttypes/models.py:24 -msgid "content types" -msgstr "sisältötyypit" +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" -#: forms/__init__.py:381 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Varmista, että tekstin pituus on vähemmän kuin %s merkki." -msgstr[1] "Varmista, että teksti pituus on vähemmän kuin %s merkkiä." +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" -#: forms/__init__.py:386 -msgid "Line breaks are not allowed here." -msgstr "Rivinvaihtoja ei voi käyttää." +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" -#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Valinta ei kelpaa; '%(data)s' ei löydy vaihtoehtojen %(choices)s joukosta." +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" -#: forms/__init__.py:663 -msgid "The submitted file is empty." -msgstr "Lähetetty tiedosto on tyhjä." +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Syötä oikea postinumero." -#: forms/__init__.py:719 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Syötä kokonaisluku väliltä -32768 ja 32767." +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Syötä oikea henkilötunnus." -#: forms/__init__.py:729 -msgid "Enter a positive number." -msgstr "Syötä positiivinen kokonaisluku." +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Syötä oikea ALV-tunnus." -#: forms/__init__.py:739 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Syötä kokonaisluku väliltä 0 ja 32767." +#: contrib/localflavor/is_/forms.py:17 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:31 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/ar/forms.py:30 contrib/localflavor/ar/forms.py:38 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "" + +#: contrib/localflavor/ar/forms.py:64 +msgid "This field requires 7 or 8 digits." +msgstr "Tähän kenttään vaaditaan 7 tai 8 numeroa." + +#: contrib/localflavor/ar/forms.py:75 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" + +#: contrib/localflavor/ar/forms.py:88 +msgid "Invalid CUIT." +msgstr "Virheellinen CUIT." + +#: contrib/localflavor/ca/forms.py:19 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Syötä postinumero muodossa XXX XXX." + +#: contrib/localflavor/ca/forms.py:81 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/nl/forms.py:25 +msgid "Enter a valid postal code" +msgstr "Syötä oikea postinumero." + +#: contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "Syötä oikea puhelinnumero." + +#: contrib/localflavor/nl/forms.py:76 +msgid "Enter a valid SoFi number" +msgstr "Syötä ikea SoFi-numero." + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokio" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kioto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:37 +msgid "Enter valid a Chilean RUT" +msgstr "Syötä oikea chileläinen RUT" + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/no/forms.py:35 +msgid "Enter a valid Norwegian social security number." +msgstr "Syötä oikea norjalainen henkilötunnus." + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "ip" + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "ap" + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "IP" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "AP" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "keskiyö" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "keskipäivä" + +#: utils/text.py:127 +msgid "or" +msgstr "tai" #: utils/dates.py:6 msgid "Monday" @@ -1851,127 +3155,155 @@ msgstr "lauantai" msgid "Sunday" msgstr "sunnuntai" -#: utils/dates.py:14 +#: utils/dates.py:10 +msgid "Mon" +msgstr "Ma" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Ti" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Ke" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "To" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Pe" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "La" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Su" + +#: utils/dates.py:18 msgid "January" msgstr "tammikuu" -#: utils/dates.py:14 +#: utils/dates.py:18 msgid "February" msgstr "helmikuu" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "maaliskuu" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "huhtikuu" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "toukokuu" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "kesäkuu" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "heinäkuu" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "August" msgstr "elokuu" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "September" msgstr "syyskuu" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "October" msgstr "lokakuu" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "November" msgstr "marraskuu" -#: utils/dates.py:16 +#: utils/dates.py:20 msgid "December" msgstr "joulukuu" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jan" msgstr "tam" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "feb" msgstr "hel" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "mar" msgstr "maa" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "apr" msgstr "huh" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "may" msgstr "tou" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jun" msgstr "kes" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "jul" msgstr "hei" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "aug" msgstr "elo" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "sep" msgstr "syy" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "oct" msgstr "lok" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "nov" msgstr "mar" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "dec" msgstr "jou" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Jan." msgstr "tammi" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Feb." msgstr "helmi" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Aug." msgstr "elo" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Sept." msgstr "syys" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Oct." msgstr "loka" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Nov." msgstr "marras" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Dec." msgstr "joulu" @@ -2011,26 +3343,237 @@ msgid_plural "minutes" msgstr[0] "minuutti" msgstr[1] "minuuttia" -#: utils/translation/trans_real.py:362 +#: utils/timesince.py:39 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:45 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:391 msgid "DATE_FORMAT" msgstr "j.n.Y" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:392 msgid "DATETIME_FORMAT" msgstr "j.n.Y G:i" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:393 msgid "TIME_FORMAT" msgstr "G:i" -#: utils/translation/trans_real.py:380 +#: utils/translation/trans_real.py:409 msgid "YEAR_MONTH_FORMAT" msgstr "N Y" -#: utils/translation/trans_real.py:381 +#: utils/translation/trans_real.py:410 msgid "MONTH_DAY_FORMAT" msgstr "N j, Y" -#: template/defaultfilters.py:401 -msgid "yes,no,maybe" -msgstr "kyllä,ei,ehkä" +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "arabia" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "bengali" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "bulgaria" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "katalaani" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "tšekki" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "wales" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "tanska" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "saksa" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "kreikka" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "englanti" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "espanja" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "Argentiinan espanja" + +#: conf/global_settings.py:51 +msgid "Persian" +msgstr "persia" + +#: conf/global_settings.py:52 +msgid "Finnish" +msgstr "suomi" + +#: conf/global_settings.py:53 +msgid "French" +msgstr "ranska" + +#: conf/global_settings.py:54 +msgid "Galician" +msgstr "galicia" + +#: conf/global_settings.py:55 +msgid "Hungarian" +msgstr "unkari" + +#: conf/global_settings.py:56 +msgid "Hebrew" +msgstr "heprea" + +#: conf/global_settings.py:57 +msgid "Croatian" +msgstr "kroatia" + +#: conf/global_settings.py:58 +msgid "Icelandic" +msgstr "islanti" + +#: conf/global_settings.py:59 +msgid "Italian" +msgstr "italia" + +#: conf/global_settings.py:60 +msgid "Japanese" +msgstr "japani" + +#: conf/global_settings.py:61 +msgid "Korean" +msgstr "korea" + +#: conf/global_settings.py:62 +msgid "Khmer" +msgstr "khmer" + +#: conf/global_settings.py:63 +msgid "Kannada" +msgstr "kannada" + +#: conf/global_settings.py:64 +msgid "Latvian" +msgstr "latvia" + +#: conf/global_settings.py:65 +msgid "Macedonian" +msgstr "makedonia" + +#: conf/global_settings.py:66 +msgid "Dutch" +msgstr "hollanti" + +#: conf/global_settings.py:67 +msgid "Norwegian" +msgstr "norja" + +#: conf/global_settings.py:68 +msgid "Polish" +msgstr "puola" + +#: conf/global_settings.py:69 +msgid "Portugese" +msgstr "portugali" + +#: conf/global_settings.py:70 +msgid "Brazilian" +msgstr "Brasilian portugali" + +#: conf/global_settings.py:71 +msgid "Romanian" +msgstr "romania" + +#: conf/global_settings.py:72 +msgid "Russian" +msgstr "venäjä" + +#: conf/global_settings.py:73 +msgid "Slovak" +msgstr "slovakia" + +#: conf/global_settings.py:74 +msgid "Slovenian" +msgstr "slovenia" + +#: conf/global_settings.py:75 +msgid "Serbian" +msgstr "serbia" + +#: conf/global_settings.py:76 +msgid "Swedish" +msgstr "ruotsi" + +#: conf/global_settings.py:77 +msgid "Tamil" +msgstr "tamili" + +#: conf/global_settings.py:78 +msgid "Telugu" +msgstr "telugu" + +#: conf/global_settings.py:79 +msgid "Turkish" +msgstr "turkki" + +#: conf/global_settings.py:80 +msgid "Ukrainian" +msgstr "ukraina" + +#: conf/global_settings.py:81 +msgid "Simplified Chinese" +msgstr "kiina (yksinkertaistettu)" + +#: conf/global_settings.py:82 +msgid "Traditional Chinese" +msgstr "kiina (perinteinen)" + +#: oldforms/__init__.py:408 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Varmista, että tekstin pituus on vähemmän kuin %s merkki." +msgstr[1] "Varmista, että teksti pituus on vähemmän kuin %s merkkiä." + +#: oldforms/__init__.py:413 +msgid "Line breaks are not allowed here." +msgstr "Rivinvaihtoja ei voi käyttää." + +#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "" +"Valinta ei kelpaa; '%(data)s' ei löydy vaihtoehtojen %(choices)s joukosta." + +#: oldforms/__init__.py:744 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Syötä kokonaisluku väliltä -32768 ja 32767." + +#: oldforms/__init__.py:754 +msgid "Enter a positive number." +msgstr "Syötä positiivinen kokonaisluku." + +#: oldforms/__init__.py:764 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Syötä kokonaisluku väliltä 0 ja 32767." diff --git a/django/conf/locale/ga/LC_MESSAGES/django.mo b/django/conf/locale/ga/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..1c414c28f5 Binary files /dev/null and b/django/conf/locale/ga/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ga/LC_MESSAGES/django.po b/django/conf/locale/ga/LC_MESSAGES/django.po new file mode 100644 index 0000000000..0adaf0933a --- /dev/null +++ b/django/conf/locale/ga/LC_MESSAGES/django.po @@ -0,0 +1,3443 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-09-14 12:00+0100\n" +"PO-Revision-Date: 2007-09-14 14:00+0100\n" +"Last-Translator: Michael Thornhill \n" +"Language-Team: Gaeilge \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: db/models/manipulators.py:309 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" + +#: db/models/manipulators.py:310 +#: contrib/admin/views/main.py:342 +#: contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 +#: core/validators.py:283 +msgid "and" +msgstr "" + +#: db/models/fields/related.py:55 +#, python-format +msgid "Please enter a valid %s." +msgstr "" + +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "" + +#: db/models/fields/related.py:660 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" + +#: db/models/fields/related.py:707 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +msgstr[1] "" + +#: db/models/fields/__init__.py:52 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:159 +#: db/models/fields/__init__.py:316 +#: db/models/fields/__init__.py:724 +#: db/models/fields/__init__.py:735 +#: newforms/fields.py:93 +#: newforms/fields.py:509 +#: newforms/fields.py:585 +#: newforms/fields.py:596 +#: newforms/models.py:193 +#: oldforms/__init__.py:373 +msgid "This field is required." +msgstr "" + +#: db/models/fields/__init__.py:414 +msgid "This value must be an integer." +msgstr "" + +#: db/models/fields/__init__.py:449 +msgid "This value must be either True or False." +msgstr "" + +#: db/models/fields/__init__.py:470 +msgid "This field cannot be null." +msgstr "" + +#: db/models/fields/__init__.py:504 +#: core/validators.py:156 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "" + +#: db/models/fields/__init__.py:573 +#: core/validators.py:165 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "" + +#: db/models/fields/__init__.py:634 +msgid "This value must be a decimal number." +msgstr "" + +#: db/models/fields/__init__.py:744 +msgid "Enter a valid filename." +msgstr "" + +#: db/models/fields/__init__.py:887 +msgid "This value must be either None, True or False." +msgstr "" + +#: template/defaultfilters.py:532 +msgid "yes,no,maybe" +msgstr "" + +#: template/defaultfilters.py:561 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:563 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:565 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:566 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:317 +msgid "URL" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "" + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" + +#: contrib/localflavor/in_/forms.py:16 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/sk/forms.py:32 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/is_/forms.py:17 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:31 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/fr/forms.py:17 +#: contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/fi/forms.py:40 +#: contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/ch/forms.py:18 +#: contrib/localflavor/no/forms.py:14 +msgid "Enter a zip code in the format XXXX." +msgstr "" + +#: contrib/localflavor/ch/forms.py:90 +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:37 +msgid "Enter valid a Chilean RUT" +msgstr "" + +#: contrib/localflavor/ar/forms.py:30 +#: contrib/localflavor/ar/forms.py:38 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "" + +#: contrib/localflavor/ar/forms.py:61 +#: contrib/localflavor/br/forms.py:103 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/localflavor/ar/forms.py:64 +msgid "This field requires 7 or 8 digits." +msgstr "" + +#: contrib/localflavor/ar/forms.py:75 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" + +#: contrib/localflavor/ar/forms.py:88 +msgid "Invalid CUIT." +msgstr "" + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/no/forms.py:35 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:53 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:59 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:71 +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:82 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/nl/forms.py:25 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/nl/forms.py:76 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/br/forms.py:23 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "" + +#: contrib/localflavor/br/forms.py:35 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" + +#: contrib/localflavor/br/forms.py:68 +msgid "Select a valid brazilian state. That state is not one of the available states." +msgstr "" + +#: contrib/localflavor/br/forms.py:105 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/br/forms.py:115 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/br/forms.py:137 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/br/forms.py:147 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:56 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "one" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "two" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "three" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "four" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "five" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "six" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "seven" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "eight" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "nine" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "" + +#: contrib/admin/filterspecs.py:42 +#, python-format +msgid "" +"

                            By %s:

                            \n" +"
                              \n" +msgstr "" + +#: contrib/admin/filterspecs.py:72 +#: contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 +#: contrib/admin/filterspecs.py:171 +msgid "All" +msgstr "" + +#: contrib/admin/filterspecs.py:111 +msgid "Any date" +msgstr "" + +#: contrib/admin/filterspecs.py:112 +msgid "Today" +msgstr "" + +#: contrib/admin/filterspecs.py:115 +msgid "Past 7 days" +msgstr "" + +#: contrib/admin/filterspecs.py:117 +msgid "This month" +msgstr "" + +#: contrib/admin/filterspecs.py:119 +msgid "This year" +msgstr "" + +#: contrib/admin/filterspecs.py:145 +#: newforms/widgets.py:188 +#: oldforms/__init__.py:591 +msgid "Yes" +msgstr "" + +#: contrib/admin/filterspecs.py:145 +#: newforms/widgets.py:188 +#: oldforms/__init__.py:591 +msgid "No" +msgstr "" + +#: contrib/admin/filterspecs.py:152 +#: newforms/widgets.py:188 +#: oldforms/__init__.py:591 +msgid "Unknown" +msgstr "" + +#: contrib/admin/models.py:17 +msgid "action time" +msgstr "" + +#: contrib/admin/models.py:20 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:21 +msgid "object repr" +msgstr "" + +#: contrib/admin/models.py:22 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "change message" +msgstr "" + +#: contrib/admin/models.py:26 +msgid "log entry" +msgstr "" + +#: contrib/admin/models.py:27 +msgid "log entries" +msgstr "" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Home" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, 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 "" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "" + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 +msgid "Log in" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:10 +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "" + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

                              To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                              \n" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:12 +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 "" + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "" + +#: contrib/admin/views/decorators.py:10 +#: contrib/auth/forms.py:60 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "" + +#: contrib/admin/views/decorators.py:62 +msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." +msgstr "" + +#: contrib/admin/views/decorators.py:69 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "" + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "" + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + +#: contrib/admin/views/doc.py:47 +#: contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 +msgid "tag:" +msgstr "" + +#: contrib/admin/views/doc.py:78 +#: contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 +msgid "filter:" +msgstr "" + +#: contrib/admin/views/doc.py:136 +#: contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 +msgid "view:" +msgstr "" + +#: contrib/admin/views/doc.py:165 +#, python-format +msgid "App %r not found" +msgstr "" + +#: contrib/admin/views/doc.py:172 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "" + +#: contrib/admin/views/doc.py:184 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "" + +#: contrib/admin/views/doc.py:184 +#: contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 +#: contrib/admin/views/doc.py:225 +msgid "model:" +msgstr "" + +#: contrib/admin/views/doc.py:215 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "" + +#: contrib/admin/views/doc.py:220 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admin/views/doc.py:225 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/admin/views/doc.py:230 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 +#: contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:314 +msgid "Integer" +msgstr "" + +#: contrib/admin/views/doc.py:293 +msgid "Boolean (Either True or False)" +msgstr "" + +#: contrib/admin/views/doc.py:294 +#: contrib/admin/views/doc.py:313 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: contrib/admin/views/doc.py:295 +msgid "Comma-separated integers" +msgstr "" + +#: contrib/admin/views/doc.py:296 +msgid "Date (without time)" +msgstr "" + +#: contrib/admin/views/doc.py:297 +msgid "Date (with time)" +msgstr "" + +#: contrib/admin/views/doc.py:298 +msgid "Decimal number" +msgstr "" + +#: contrib/admin/views/doc.py:299 +msgid "E-mail address" +msgstr "" + +#: contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 +msgid "File path" +msgstr "" + +#: contrib/admin/views/doc.py:302 +msgid "Floating point number" +msgstr "" + +#: contrib/admin/views/doc.py:306 +#: contrib/comments/models.py:85 +msgid "IP address" +msgstr "" + +#: contrib/admin/views/doc.py:308 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: contrib/admin/views/doc.py:309 +msgid "Relation to parent model" +msgstr "" + +#: contrib/admin/views/doc.py:310 +msgid "Phone number" +msgstr "" + +#: contrib/admin/views/doc.py:315 +msgid "Text" +msgstr "" + +#: contrib/admin/views/doc.py:316 +msgid "Time" +msgstr "" + +#: contrib/admin/views/doc.py:318 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/admin/views/doc.py:319 +msgid "XML text" +msgstr "" + +#: contrib/admin/views/doc.py:345 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: contrib/admin/views/auth.py:20 +#: contrib/admin/views/main.py:264 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "" + +#: contrib/admin/views/auth.py:25 +#: contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "" + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "" + +#: contrib/admin/views/main.py:230 +msgid "Site administration" +msgstr "" + +#: contrib/admin/views/main.py:278 +#: contrib/admin/views/main.py:363 +#, python-format +msgid "You may add another %s below." +msgstr "" + +#: contrib/admin/views/main.py:296 +#, python-format +msgid "Add %s" +msgstr "" + +#: contrib/admin/views/main.py:342 +#, python-format +msgid "Added %s." +msgstr "" + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Changed %s." +msgstr "" + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Deleted %s." +msgstr "" + +#: contrib/admin/views/main.py:349 +msgid "No fields changed." +msgstr "" + +#: contrib/admin/views/main.py:352 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: contrib/admin/views/main.py:360 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/views/main.py:398 +#, python-format +msgid "Change %s" +msgstr "" + +#: contrib/admin/views/main.py:483 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "" + +#: contrib/admin/views/main.py:488 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "" + +#: contrib/admin/views/main.py:520 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#: contrib/admin/views/main.py:523 +msgid "Are you sure?" +msgstr "" + +#: contrib/admin/views/main.py:545 +#, python-format +msgid "Change history: %s" +msgstr "" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s to change" +msgstr "" + +#: contrib/admin/views/main.py:780 +msgid "Database error" +msgstr "" + +#: contrib/admin/templatetags/admin_list.py:254 +msgid "All dates" +msgstr "" + +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "" + +#: contrib/auth/forms.py:53 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "" + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "" + +#: contrib/auth/forms.py:84 +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "" + +#: contrib/auth/models.py:53 +#: contrib/auth/models.py:73 +msgid "name" +msgstr "" + +#: contrib/auth/models.py:55 +msgid "codename" +msgstr "" + +#: contrib/auth/models.py:58 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:59 +#: contrib/auth/models.py:74 +msgid "permissions" +msgstr "" + +#: contrib/auth/models.py:77 +msgid "group" +msgstr "" + +#: contrib/auth/models.py:78 +#: contrib/auth/models.py:121 +msgid "groups" +msgstr "" + +#: contrib/auth/models.py:111 +msgid "username" +msgstr "" + +#: contrib/auth/models.py:111 +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." +msgstr "" + +#: contrib/auth/models.py:112 +msgid "first name" +msgstr "" + +#: contrib/auth/models.py:113 +msgid "last name" +msgstr "" + +#: contrib/auth/models.py:114 +msgid "e-mail address" +msgstr "" + +#: contrib/auth/models.py:115 +msgid "password" +msgstr "" + +#: contrib/auth/models.py:115 +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "" + +#: contrib/auth/models.py:116 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:116 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:117 +msgid "active" +msgstr "" + +#: contrib/auth/models.py:117 +msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:118 +msgid "superuser status" +msgstr "" + +#: contrib/auth/models.py:118 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "" + +#: contrib/auth/models.py:119 +msgid "last login" +msgstr "" + +#: contrib/auth/models.py:120 +msgid "date joined" +msgstr "" + +#: contrib/auth/models.py:122 +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "" + +#: contrib/auth/models.py:123 +msgid "user permissions" +msgstr "" + +#: contrib/auth/models.py:127 +msgid "user" +msgstr "" + +#: contrib/auth/models.py:128 +msgid "users" +msgstr "" + +#: contrib/auth/models.py:134 +msgid "Personal info" +msgstr "" + +#: contrib/auth/models.py:135 +msgid "Permissions" +msgstr "" + +#: contrib/auth/models.py:136 +msgid "Important dates" +msgstr "" + +#: contrib/auth/models.py:137 +msgid "Groups" +msgstr "" + +#: contrib/auth/models.py:288 +msgid "message" +msgstr "" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "" + +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "" + +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "" + +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "" + +#: contrib/sites/models.py:33 +msgid "domain name" +msgstr "" + +#: contrib/sites/models.py:34 +msgid "display name" +msgstr "" + +#: contrib/sites/models.py:38 +msgid "site" +msgstr "" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "" + +#: contrib/comments/models.py:67 +#: contrib/comments/models.py:169 +msgid "object ID" +msgstr "" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "" + +#: contrib/comments/models.py:69 +#: contrib/comments/models.py:90 +#: contrib/comments/models.py:170 +msgid "comment" +msgstr "" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "" + +#: contrib/comments/models.py:83 +#: contrib/comments/models.py:172 +msgid "date/time submitted" +msgstr "" + +#: contrib/comments/models.py:84 +#: contrib/comments/models.py:173 +msgid "is public" +msgstr "" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "" + +#: contrib/comments/models.py:86 +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "" + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "" + +#: contrib/comments/models.py:134 +#: contrib/comments/models.py:213 +msgid "Content object" +msgstr "" + +#: contrib/comments/models.py:162 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/comments/models.py:171 +msgid "person's name" +msgstr "" + +#: contrib/comments/models.py:174 +msgid "ip address" +msgstr "" + +#: contrib/comments/models.py:176 +msgid "approved by staff" +msgstr "" + +#: contrib/comments/models.py:179 +msgid "free comment" +msgstr "" + +#: contrib/comments/models.py:180 +msgid "free comments" +msgstr "" + +#: contrib/comments/models.py:239 +msgid "score" +msgstr "" + +#: contrib/comments/models.py:240 +msgid "score date" +msgstr "" + +#: contrib/comments/models.py:243 +msgid "karma score" +msgstr "" + +#: contrib/comments/models.py:244 +msgid "karma scores" +msgstr "" + +#: contrib/comments/models.py:248 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "" + +#: contrib/comments/models.py:264 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" + +#: contrib/comments/models.py:271 +msgid "flag date" +msgstr "" + +#: contrib/comments/models.py:274 +msgid "user flag" +msgstr "" + +#: contrib/comments/models.py:275 +msgid "user flags" +msgstr "" + +#: contrib/comments/models.py:279 +#, python-format +msgid "Flag by %r" +msgstr "" + +#: contrib/comments/models.py:284 +msgid "deletion date" +msgstr "" + +#: contrib/comments/models.py:286 +msgid "moderator deletion" +msgstr "" + +#: contrib/comments/models.py:287 +msgid "moderator deletions" +msgstr "" + +#: contrib/comments/models.py:291 +#, python-format +msgid "Moderator deletion by %r" +msgstr "" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "" + +#: contrib/comments/views/karma.py:20 +msgid "Anonymous users cannot vote" +msgstr "" + +#: contrib/comments/views/karma.py:24 +msgid "Invalid comment ID" +msgstr "" + +#: contrib/comments/views/karma.py:26 +msgid "No voting for yourself" +msgstr "" + +#: contrib/comments/views/comments.py:28 +msgid "This rating is required because you've entered at least one other rating." +msgstr "" + +#: contrib/comments/views/comments.py:112 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/views/comments.py:117 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" + +#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:281 +msgid "Only POSTs are allowed" +msgstr "" + +#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:285 +msgid "One or more of the required fields wasn't submitted" +msgstr "" + +#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:287 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "" + +#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:293 +msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid" +msgstr "" + +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "" + +#: newforms/fields.py:123 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: newforms/fields.py:125 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" + +#: newforms/fields.py:149 +#: core/validators.py:128 +msgid "Enter a whole number." +msgstr "" + +#: newforms/fields.py:151 +#: newforms/fields.py:174 +#: newforms/fields.py:204 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "" + +#: newforms/fields.py:153 +#: newforms/fields.py:176 +#: newforms/fields.py:206 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "" + +#: newforms/fields.py:172 +#: newforms/fields.py:199 +msgid "Enter a number." +msgstr "" + +#: newforms/fields.py:208 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "" + +#: newforms/fields.py:210 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "" + +#: newforms/fields.py:212 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" + +#: newforms/fields.py:245 +#: newforms/fields.py:629 +msgid "Enter a valid date." +msgstr "" + +#: newforms/fields.py:272 +#: newforms/fields.py:631 +msgid "Enter a valid time." +msgstr "" + +#: newforms/fields.py:308 +msgid "Enter a valid date/time." +msgstr "" + +#: newforms/fields.py:321 +msgid "Enter a valid value." +msgstr "" + +#: newforms/fields.py:343 +#: core/validators.py:170 +msgid "Enter a valid e-mail address." +msgstr "" + +#: newforms/fields.py:377 +#: oldforms/__init__.py:686 +#: core/validators.py:182 +#: core/validators.py:469 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: newforms/fields.py:379 +msgid "No file was submitted." +msgstr "" + +#: newforms/fields.py:381 +#: oldforms/__init__.py:688 +msgid "The submitted file is empty." +msgstr "" + +#: newforms/fields.py:405 +#: core/validators.py:193 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "" + +#: newforms/fields.py:419 +#: newforms/fields.py:444 +msgid "Enter a valid URL." +msgstr "" + +#: newforms/fields.py:446 +msgid "This URL appears to be a broken link." +msgstr "" + +#: newforms/fields.py:497 +#: newforms/models.py:180 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: newforms/fields.py:513 +#: newforms/fields.py:589 +#: newforms/models.py:197 +msgid "Enter a list of values." +msgstr "" + +#: newforms/fields.py:519 +#: newforms/models.py:203 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "" + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "" + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "" + +#: oldforms/__init__.py:408 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "" +msgstr[1] "" + +#: oldforms/__init__.py:413 +msgid "Line breaks are not allowed here." +msgstr "" + +#: oldforms/__init__.py:511 +#: oldforms/__init__.py:585 +#: oldforms/__init__.py:624 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "" + +#: oldforms/__init__.py:744 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "" + +#: oldforms/__init__.py:754 +msgid "Enter a positive number." +msgstr "" + +#: oldforms/__init__.py:764 +msgid "Enter a whole number between 0 and 32,767." +msgstr "" + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" + +#: core/validators.py:76 +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "" + +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" + +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "" + +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "" + +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "" + +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "" + +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "" + +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "" + +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "" + +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "" + +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "" + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "" + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "" + +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "" + +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "" + +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" + +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "" + +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "" + +#: core/validators.py:230 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" + +#: core/validators.py:237 +#, python-format +msgid "Badly formed XML: %s" +msgstr "" + +#: core/validators.py:254 +#, python-format +msgid "Invalid URL: %s" +msgstr "" + +#: core/validators.py:259 +#: core/validators.py:261 +#, python-format +msgid "The URL %s is a broken link." +msgstr "" + +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "" + +#: core/validators.py:281 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "" + +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "" + +#: core/validators.py:316 +#: core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "" + +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "" + +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "" + +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "" + +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "" + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "" + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "" + +#: core/validators.py:422 +#, python-format +msgid "This value must be a power of %s." +msgstr "" + +#: core/validators.py:432 +msgid "Please enter a valid decimal number." +msgstr "" + +#: core/validators.py:439 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:442 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:445 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:453 +msgid "Please enter a valid floating point number." +msgstr "" + +#: core/validators.py:462 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "" + +#: core/validators.py:463 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "" + +#: core/validators.py:480 +msgid "The format for this field is wrong." +msgstr "" + +#: core/validators.py:495 +msgid "This field is invalid." +msgstr "" + +#: core/validators.py:531 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "" + +#: core/validators.py:534 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" + +#: core/validators.py:567 +#, python-format +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:571 +#, python-format +msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:576 +#, python-format +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:581 +#, python-format +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:585 +#, python-format +msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:590 +#, python-format +msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" +msgstr "" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:39 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:45 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "" + +#: utils/text.py:127 +msgid "or" +msgstr "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: utils/dates.py:18 +msgid "January" +msgstr "" + +#: utils/dates.py:18 +msgid "February" +msgstr "" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "March" +msgstr "" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "April" +msgstr "" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "May" +msgstr "" + +#: utils/dates.py:18 +#: utils/dates.py:31 +msgid "June" +msgstr "" + +#: utils/dates.py:19 +#: utils/dates.py:31 +msgid "July" +msgstr "" + +#: utils/dates.py:19 +msgid "August" +msgstr "" + +#: utils/dates.py:19 +msgid "September" +msgstr "" + +#: utils/dates.py:19 +msgid "October" +msgstr "" + +#: utils/dates.py:19 +msgid "November" +msgstr "" + +#: utils/dates.py:20 +msgid "December" +msgstr "" + +#: utils/dates.py:23 +msgid "jan" +msgstr "" + +#: utils/dates.py:23 +msgid "feb" +msgstr "" + +#: utils/dates.py:23 +msgid "mar" +msgstr "" + +#: utils/dates.py:23 +msgid "apr" +msgstr "" + +#: utils/dates.py:23 +msgid "may" +msgstr "" + +#: utils/dates.py:23 +msgid "jun" +msgstr "" + +#: utils/dates.py:24 +msgid "jul" +msgstr "" + +#: utils/dates.py:24 +msgid "aug" +msgstr "" + +#: utils/dates.py:24 +msgid "sep" +msgstr "" + +#: utils/dates.py:24 +msgid "oct" +msgstr "" + +#: utils/dates.py:24 +msgid "nov" +msgstr "" + +#: utils/dates.py:24 +msgid "dec" +msgstr "" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "" + +#: utils/translation/trans_real.py:391 +msgid "DATE_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:392 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:393 +msgid "TIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:409 +msgid "YEAR_MONTH_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:410 +msgid "MONTH_DAY_FORMAT" +msgstr "" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "" + +#: conf/global_settings.py:51 +msgid "Persian" +msgstr "" + +#: conf/global_settings.py:52 +msgid "Finnish" +msgstr "" + +#: conf/global_settings.py:53 +msgid "French" +msgstr "" + +#: conf/global_settings.py:54 +msgid "Galician" +msgstr "" + +#: conf/global_settings.py:55 +msgid "Hungarian" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Hebrew" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Croatian" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Icelandic" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Italian" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Japanese" +msgstr "" + +#: conf/global_settings.py:61 +msgid "Korean" +msgstr "" + +#: conf/global_settings.py:62 +msgid "Khmer" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Macedonian" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Dutch" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Norwegian" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Polish" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Portugese" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Brazilian" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Romanian" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Russian" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Slovenian" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:76 +msgid "Swedish" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:78 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:79 +msgid "Turkish" +msgstr "" + +#: conf/global_settings.py:80 +msgid "Ukrainian" +msgstr "" + +#: conf/global_settings.py:81 +msgid "Simplified Chinese" +msgstr "" + +#: conf/global_settings.py:82 +msgid "Traditional Chinese" +msgstr "" + diff --git a/django/conf/locale/ga/LC_MESSAGES/djangojs.mo b/django/conf/locale/ga/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..06f96baee4 Binary files /dev/null and b/django/conf/locale/ga/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/ga/LC_MESSAGES/djangojs.po b/django/conf/locale/ga/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..41b93dab53 --- /dev/null +++ b/django/conf/locale/ga/LC_MESSAGES/djangojs.po @@ -0,0 +1,116 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: django 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-09-14 12:33+0100\n" +"PO-Revision-Date: 2007-09-14 14:19+0100\n" +"Last-Translator: Michael Thornhill \n" +"Language-Team: Gaeilge \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "January February March April May June July August September October November December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "" + diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo index 50021ed86d..a0cb5fa62a 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 9fc5d7ee80..3ea69510c8 100644 --- a/django/conf/locale/he/LC_MESSAGES/django.po +++ b/django/conf/locale/he/LC_MESSAGES/django.po @@ -205,7 +205,7 @@ msgstr "פברואר" #: utils/dates.py:14 utils/dates.py:27 msgid "March" -msgstr "מרץ" +msgstr "מרס" #: utils/dates.py:14 utils/dates.py:27 msgid "April" @@ -241,11 +241,11 @@ msgstr "נובמבר" #: utils/dates.py:16 msgid "December" -msgstr "תצבר" +msgstr "דצמבר" #: utils/dates.py:19 msgid "jan" -msgstr "יאנ" +msgstr "ינו" #: utils/dates.py:19 msgid "feb" @@ -253,7 +253,7 @@ msgstr "פבר" #: utils/dates.py:19 msgid "mar" -msgstr "מרץ" +msgstr "מרס" #: utils/dates.py:19 msgid "apr" @@ -293,7 +293,7 @@ msgstr "דצמ" #: utils/dates.py:27 msgid "Jan." -msgstr "יאנ'" +msgstr "ינו'" #: utils/dates.py:27 msgid "Feb." diff --git a/django/conf/locale/hu/LC_MESSAGES/django.mo b/django/conf/locale/hu/LC_MESSAGES/django.mo index 797b87b332..a46cb69ad5 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 6bdfd5cb8b..a00ed9c6cf 100644 --- a/django/conf/locale/hu/LC_MESSAGES/django.po +++ b/django/conf/locale/hu/LC_MESSAGES/django.po @@ -1,24 +1,845 @@ -# translation of django.po to -# translation of django.po to -# translation of django.po to +# translation of django.po to Hungarian # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. -# Nagy Károly , 2006. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:14+0200\n" -"PO-Revision-Date: 2006-05-10 12:13+0200\n" -"Last-Translator: Nagy Károly \n" -"Language-Team: \n" +"POT-Creation-Date: 2007-08-21 02:23+0200\n" +"PO-Revision-Date: 2007-08-21 02:28+0200\n" +"Last-Translator: Szilveszter Farkas \n" +"Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 +#: oldforms/__init__.py:373 db/models/fields/__init__.py:156 +#: db/models/fields/__init__.py:313 db/models/fields/__init__.py:721 +#: db/models/fields/__init__.py:732 newforms/models.py:193 +#: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566 +#: newforms/fields.py:577 +msgid "This field is required." +msgstr "Ennek a mezőnek a megadása kötelező." + +#: oldforms/__init__.py:408 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "A szövegnek rövidebbnek kell lennie %s karakternél." +msgstr[1] "A szövegnek rövidebbnek kell lennie %s karakternél." + +#: oldforms/__init__.py:413 +msgid "Line breaks are not allowed here." +msgstr "Sortörések itt nem megengedettek." + +#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Válasszon egy érvényes elemet, '%(data)s' nincs ezek között: %(choices)s." + +#: oldforms/__init__.py:591 newforms/widgets.py:188 +#: contrib/admin/filterspecs.py:152 +msgid "Unknown" +msgstr "Ismeretlen" + +#: oldforms/__init__.py:591 newforms/widgets.py:188 +#: contrib/admin/filterspecs.py:145 +msgid "Yes" +msgstr "Igen" + +#: oldforms/__init__.py:591 newforms/widgets.py:188 +#: contrib/admin/filterspecs.py:145 +msgid "No" +msgstr "Nem" + +#: oldforms/__init__.py:686 core/validators.py:181 core/validators.py:461 +#: newforms/fields.py:376 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Nem küldött el fájlt. Ellenőrizze a kódolás típusát az űrlapon." + +#: oldforms/__init__.py:688 newforms/fields.py:380 +msgid "The submitted file is empty." +msgstr "A küldött fájl üres." + +#: oldforms/__init__.py:744 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Írjon be egy egész számot -32 768 és 32 767 között." + +#: oldforms/__init__.py:754 +msgid "Enter a positive number." +msgstr "Írjon be egy pozitív számot." + +#: oldforms/__init__.py:764 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Írjon be egy egész számot 0 és 32 767 között." + +#: db/models/manipulators.py:309 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "A megadott %(field)s mezőhöz már létezik %(type)s típusú %(object)s elem." + +#: db/models/manipulators.py:310 core/validators.py:275 +#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 +msgid "and" +msgstr "és" + +# TODO +#: db/models/fields/__init__.py:49 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s ezzel a(z) %(fieldname)s már létezik." + +#: db/models/fields/__init__.py:411 +msgid "This value must be an integer." +msgstr "Az értéknek egész számnak kell lennie." + +#: db/models/fields/__init__.py:446 +msgid "This value must be either True or False." +msgstr "Az értéknek igaznak (True) vagy hamisnak (False) kell lennie." + +#: db/models/fields/__init__.py:467 +msgid "This field cannot be null." +msgstr "Ez a mező nem lehet nulla." + +#: db/models/fields/__init__.py:501 core/validators.py:155 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Írjon be egy érvényes dátumot 'ÉÉÉÉ-HH-NN' alakban." + +#: db/models/fields/__init__.py:570 core/validators.py:164 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Írjon be egy érvényes dátumot/időt 'ÉÉÉÉ-HH-NN ÓÓ-PP' alakban." + +#: db/models/fields/__init__.py:631 +msgid "This value must be a decimal number." +msgstr "Az értéknek decimálisnak kell lennie." + +#: db/models/fields/__init__.py:741 +msgid "Enter a valid filename." +msgstr "Adjon meg egy érvényes fájlnevet." + +#: db/models/fields/__init__.py:883 +msgid "This value must be either None, True or False." +msgstr "" +"Az értéknek semminek (None), igaznak (True), vagy hamisnak (False) kell " +"lennie." + +#: db/models/fields/related.py:55 +#, python-format +msgid "Please enter a valid %s." +msgstr "Adjon meg egy érvényes %s értéket." + +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "Az ID-ket vesszővel válassza el." + +#: db/models/fields/related.py:660 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Tartsa lenyomva a \"Control\"-t (vagy Mac-en a \"Command\"-ot) több elem " +"kiválasztásához." + +#: db/models/fields/related.py:707 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Írjon be érvényes %(self)s ID-t. A mostani érték érvénytelen: %(value)r." +msgstr[1] "" +"Írjon be érvényes %(self)s ID-ket. A mostani értékek érvénytelenek: %(value)" +"r." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arab" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengáli" + +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "Bolgár" + +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "Katalán" + +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "Cseh" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "Walesi" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "Dán" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "Német" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "Görög" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "Angol" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "Spanyol" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "Argentín spanyol" + +#: conf/global_settings.py:51 +msgid "Persian" +msgstr "Perzsa" + +#: conf/global_settings.py:52 +msgid "Finnish" +msgstr "Finn" + +#: conf/global_settings.py:53 +msgid "French" +msgstr "Francia" + +#: conf/global_settings.py:54 +msgid "Galician" +msgstr "Gall" + +#: conf/global_settings.py:55 +msgid "Hungarian" +msgstr "Magyar" + +#: conf/global_settings.py:56 +msgid "Hebrew" +msgstr "Héber" + +#: conf/global_settings.py:57 +msgid "Croatian" +msgstr "Horvát" + +#: conf/global_settings.py:58 +msgid "Icelandic" +msgstr "Izlandi" + +#: conf/global_settings.py:59 +msgid "Italian" +msgstr "Olasz" + +#: conf/global_settings.py:60 +msgid "Japanese" +msgstr "Japán" + +#: conf/global_settings.py:61 +msgid "Korean" +msgstr "Koreai" + +#: conf/global_settings.py:62 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:63 +msgid "Latvian" +msgstr "Litván" + +#: conf/global_settings.py:64 +msgid "Macedonian" +msgstr "Macedón" + +#: conf/global_settings.py:65 +msgid "Dutch" +msgstr "Holland" + +#: conf/global_settings.py:66 +msgid "Norwegian" +msgstr "Norvég" + +#: conf/global_settings.py:67 +msgid "Polish" +msgstr "Lengyel" + +#: conf/global_settings.py:68 +msgid "Portugese" +msgstr "Portugál" + +#: conf/global_settings.py:69 +msgid "Brazilian" +msgstr "Brazil" + +#: conf/global_settings.py:70 +msgid "Romanian" +msgstr "Román" + +#: conf/global_settings.py:71 +msgid "Russian" +msgstr "Orosz" + +#: conf/global_settings.py:72 +msgid "Slovak" +msgstr "Szlovák" + +#: conf/global_settings.py:73 +msgid "Slovenian" +msgstr "Szlovén" + +#: conf/global_settings.py:74 +msgid "Serbian" +msgstr "Szerb" + +#: conf/global_settings.py:75 +msgid "Swedish" +msgstr "Svéd" + +#: conf/global_settings.py:76 +msgid "Tamil" +msgstr "Tamil" + +#: conf/global_settings.py:77 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:78 +msgid "Turkish" +msgstr "Török" + +#: conf/global_settings.py:79 +msgid "Ukrainian" +msgstr "Ukrán" + +#: conf/global_settings.py:80 +msgid "Simplified Chinese" +msgstr "Egyszerű kínai" + +#: conf/global_settings.py:81 +msgid "Traditional Chinese" +msgstr "Hagyományos kínai" + +#: core/validators.py:71 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Az érték csak betűket, számokat és aláhúzást tartalmazhat." + +#: core/validators.py:75 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Az érték csak betűket, számokat, aláhúzást és perjelet tartalmazhat." + +#: core/validators.py:79 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Az érték csak betűket, számokat, aláhúzást és kötőjelet tartalmazhat." + +#: core/validators.py:83 +msgid "Uppercase letters are not allowed here." +msgstr "Nagybetűk itt nem megengedettek." + +#: core/validators.py:87 +msgid "Lowercase letters are not allowed here." +msgstr "Kisbetűk itt nem megengedettek." + +#: core/validators.py:94 +msgid "Enter only digits separated by commas." +msgstr "Csak számokat adjon meg, vesszővel elválasztva." + +#: core/validators.py:106 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Érvényes e-mail címeket adjon meg, vesszővel elválasztva." + +#: core/validators.py:110 +msgid "Please enter a valid IP address." +msgstr "Írjon be egy érvényes IP címet." + +#: core/validators.py:114 +msgid "Empty values are not allowed here." +msgstr "Üres érték itt nem megengedett." + +#: core/validators.py:118 +msgid "Non-numeric characters aren't allowed here." +msgstr "Nem szám karakterek itt nem megengedettek." + +#: core/validators.py:122 +msgid "This value can't be comprised solely of digits." +msgstr "Ez az érték nem tartalmazhat kizárólag számokat." + +#: core/validators.py:127 newforms/fields.py:142 +msgid "Enter a whole number." +msgstr "Adjon meg egy egész számot." + +#: core/validators.py:131 +msgid "Only alphabetical characters are allowed here." +msgstr "Itt csak betűk megengedettek." + +#: core/validators.py:146 +msgid "Year must be 1900 or later." +msgstr "Az évnek 1900-nak vagy későbbinek kell lennie." + +#: core/validators.py:150 +#, python-format +msgid "Invalid date: %s" +msgstr "Érvénytelen dátum: %s" + +#: core/validators.py:160 +msgid "Enter a valid time in HH:MM format." +msgstr "Írjon be egy érvényes időt 'ÓÓ:PP' alakban." + +#: core/validators.py:169 newforms/fields.py:336 +msgid "Enter a valid e-mail address." +msgstr "Írjon be egy érvényes e-mail címet." + +#: core/validators.py:185 newforms/fields.py:397 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Töltsön fel egy érvényes képfájlt. A feltöltött fájl nem kép volt, vagy " +"megsérült." + +#: core/validators.py:192 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "A hivatkozás (%s) érvénytelen képfájlra mutat." + +#: core/validators.py:196 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"A telefonszámoknak 'XXX-XXX-XXXX' formátumúnak kell lenniük. \"%s\" " +"érvénytelen." + +#: core/validators.py:204 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "A hivatkozás (%s) érvénytelen QuickTime videóra mutat." + +#: core/validators.py:208 +msgid "A valid URL is required." +msgstr "Érvényes URL szükséges." + +#: core/validators.py:222 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Érvényes HTML kell. A hiba:\n" +"%s" + +#: core/validators.py:229 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Rosszul formázott XML: %s" + +#: core/validators.py:246 +#, python-format +msgid "Invalid URL: %s" +msgstr "Érvénytelen URL: %s" + +#: core/validators.py:251 core/validators.py:253 +#, python-format +msgid "The URL %s is a broken link." +msgstr "A hivatkozás (%s) egy törött link." + +#: core/validators.py:259 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Írja be egy érvényes USA állam rövidítését." + +#: core/validators.py:273 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Vigyázzon a szájára! Az ilyen szó (%s) itt nem megengedett." +msgstr[1] "Vigyázzon a szájára! Az ilyen szavak (%s) itt nem megengedettek." + +# TODO +#: core/validators.py:280 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Ennek a mezőnek egyeznie kell a(z) %s mezővel." + +#: core/validators.py:299 +msgid "Please enter something for at least one field." +msgstr "Írjon be valamit legalább egy mezőbe." + +#: core/validators.py:308 core/validators.py:319 +msgid "Please enter both fields or leave them both empty." +msgstr "Töltse ki mindkét mezőt, vagy hagyja üresen mindkettőt." + +#: core/validators.py:327 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Ezt a mezőt meg kell adni, ha %(field)s értéke %(value)s" + +#: core/validators.py:340 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Ezt a mezőt meg kell adni, ha %(field)s értéke nem %(value)s" + +#: core/validators.py:359 +msgid "Duplicate values are not allowed." +msgstr "Ugyanazok az értékek nem megengedettek." + +#: core/validators.py:374 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Az értéknek %(lower)s és %(upper)s között kell lennie." + +#: core/validators.py:376 +#, python-format +msgid "This value must be at least %s." +msgstr "Az értéknek legalább ennyinek kell lennie: %s." + +#: core/validators.py:378 +#, python-format +msgid "This value must be no more than %s." +msgstr "Az érték nem lehet több ennyinél: %s." + +#: core/validators.py:414 +#, python-format +msgid "This value must be a power of %s." +msgstr "Az értéknek %s hatványának kell lennie." + +#: core/validators.py:424 +msgid "Please enter a valid decimal number." +msgstr "Írjon be egy érvényes decimális számot." + +#: core/validators.py:431 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Írjon be egy legalább %s jegyű érvényes decimális számot." +msgstr[1] "Írjon be egy legalább %s jegyű érvényes decimális számot." + +#: core/validators.py:434 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Írjon be egy érvényes decimális számot, legfeljebb %s egész számjeggyel." +msgstr[1] "Írjon be egy érvényes decimális számot, legfeljebb %s egész számjeggyel." + +#: core/validators.py:437 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Írjon be egy érvényes decimális számot, legfeljebb %s tizedessel." +msgstr[1] "Írj be egy érvényes decimális számot, legfeljebb %s tizedessel." + +#: core/validators.py:445 +msgid "Please enter a valid floating point number." +msgstr "Írj be egy érvényes lebegőpontos számot." + +#: core/validators.py:454 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "A feltöltött fájl legalább %s bájt méretű legyen." + +#: core/validators.py:455 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "A feltöltött fájl legfeljebb %s bájt méretű lehet." + +#: core/validators.py:472 +msgid "The format for this field is wrong." +msgstr "Ennek a mezőnek rossz a formátuma." + +#: core/validators.py:487 +msgid "This field is invalid." +msgstr "A mező érvénytelen." + +#: core/validators.py:523 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Nem lehet semmit kinyerni innen: %s." + +#: core/validators.py:526 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"A hivatkozás (%(url)s) érvénytelen '%(contenttype)s' Content-Type fejlécet " +"adott vissza." + +#: core/validators.py:559 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Zárja le a nyitott %(tag)s címkét a következő sorban: %(line)s. (A sor " +"kezdete: \"%(start)s\".)" + +#: core/validators.py:563 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Valamely szöveg nem megengedett ebben a környezetben a következő sorban: %" +"(line)s. (A sor kezdete: \"%(start)s\".)" + +#: core/validators.py:568 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" érvénytelen tulajdonság a következő sorban: %(line)s. (A sor " +"kezdete: \"%(start)s\".)" + +#: core/validators.py:573 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" érvénytelen címke a következő sorban: %(line)s. (A sor " +"kezdete: \"%(start)s\".)" + +#: core/validators.py:577 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"A következő sorban lévő címkéről hiányzik egy vagy több kötelező " +"tulajdonság: %(line)s. (A sor kezdete: \"%(start)s\".)" + +#: core/validators.py:582 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"A tulajdonság (\"%(attr)s\") érvénytelen a következő sorban: %(line)s. (A " +"sor kezdete: \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s sikeresen létrehozva." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s sikeresen frissítve." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s törölve." + +#: newforms/models.py:180 newforms/fields.py:478 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Válasszon érvényes elemet. Az Ön választása nincs az elérhető lehetőségek " +"között." + +#: newforms/models.py:197 newforms/fields.py:494 newforms/fields.py:570 +msgid "Enter a list of values." +msgstr "Adja meg értékek egy listáját." + +#: newforms/models.py:203 newforms/fields.py:500 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Válasszon érvényes elemet. %s nincs az elérhető lehetőségek között." + +#: newforms/fields.py:116 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Bizonyosodjon meg arról, hogy ez az érték legfeljebb %(max)d karaktert " +"tartalmaz (jelenlegi hossza: %(length)d)." + +#: newforms/fields.py:118 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Bizonyosodjon meg arról, hogy ez az érték legalább %(min)d karaktert " +"tartalmaz (jelenlegi hossza: %(length)d)." + +#: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Bizonyosodjon meg arról, hogy az érték %s vagy kisebb." + +#: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Bizonyosodjon meg arról, hogy az érték %s vagy nagyobb." + +#: newforms/fields.py:165 newforms/fields.py:192 +msgid "Enter a number." +msgstr "Adj meg egy számot." + +#: newforms/fields.py:201 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Bizonyosodjon meg arról, hogy nincs ennél több számjegy: %s." + +#: newforms/fields.py:203 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Bizonyosodjon meg arról, hogy nincs ennél több tizedesjegy: %s." + +#: newforms/fields.py:205 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" +"Bizonyosodjon meg arról, hogy nincs ennél több számjegy a tizedesvessző " +"előtt: %s." + +#: newforms/fields.py:238 newforms/fields.py:610 +msgid "Enter a valid date." +msgstr "Adjon meg egy érvényes dátumot." + +#: newforms/fields.py:265 newforms/fields.py:612 +msgid "Enter a valid time." +msgstr "Adjon meg egy érvényes időt." + +#: newforms/fields.py:301 +msgid "Enter a valid date/time." +msgstr "Adjon meg egy érvényes dátumot/időt." + +#: newforms/fields.py:314 +msgid "Enter a valid value." +msgstr "Adjon meg egy érvényes értéket." + +#: newforms/fields.py:378 +msgid "No file was submitted." +msgstr "Semmilyen fájl sem került feltöltésre." + +#: newforms/fields.py:403 newforms/fields.py:425 +msgid "Enter a valid URL." +msgstr "Adjon meg egy érvényes URL-t." + +#: newforms/fields.py:427 +msgid "This URL appears to be a broken link." +msgstr "Ez a hivatkozás törött linknek tűnik." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value)1f millió" +msgstr[1] "%(value)1f millió" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value)1f milliárd" +msgstr[1] "%(value)1f milliárd" + +#: contrib/humanize/templatetags/humanize.py:56 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value)1f trilliárd" +msgstr[1] "%(value)1f trilliárd" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "one" +msgstr "egy" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "two" +msgstr "kettő" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "three" +msgstr "három" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "four" +msgstr "négy" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "five" +msgstr "öt" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "six" +msgstr "hat" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "seven" +msgstr "hét" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "eight" +msgstr "nyolc" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "nine" +msgstr "kilenc" + +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "ma" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "holnap" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "tegnap" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "átirányítva innen" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Ennek abszolút elérési útnak kell lennie, a tartománynév nélkül. Példa: '/" +"events/search/'" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "átirányítva ide" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Ennek vagy abszolút elérési útnak kell lennie (mint fentebb), vagy teljes " +"URL-nek 'http://'-vel kezdve." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "átirányítás" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "átirányít" + +#: contrib/comments/models.py:67 contrib/comments/models.py:169 msgid "object ID" msgstr "objektum ID" @@ -27,7 +848,7 @@ msgid "headline" msgstr "címsor" #: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 +#: contrib/comments/models.py:170 msgid "comment" msgstr "megjegyzés" @@ -67,17 +888,17 @@ msgstr "besorolás #8" msgid "is valid rating" msgstr "érvényes besorolás" -#: contrib/comments/models.py:83 contrib/comments/models.py:169 +#: contrib/comments/models.py:83 contrib/comments/models.py:172 msgid "date/time submitted" msgstr "dátum/idő beállítva" -#: contrib/comments/models.py:84 contrib/comments/models.py:170 +#: contrib/comments/models.py:84 contrib/comments/models.py:173 msgid "is public" msgstr "publikus" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306 msgid "IP address" -msgstr "IP szám" +msgstr "IP cím" #: contrib/comments/models.py:86 msgid "is removed" @@ -92,15 +913,14 @@ msgstr "" "törölték\" üzenet fog megjelenni helyette." #: contrib/comments/models.py:91 -#, fuzzy msgid "comments" msgstr "megjegyzés" -#: contrib/comments/models.py:131 contrib/comments/models.py:207 +#: contrib/comments/models.py:134 contrib/comments/models.py:213 msgid "Content object" msgstr "Tartalom objektum" -#: contrib/comments/models.py:159 +#: contrib/comments/models.py:162 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -109,58 +929,54 @@ msgid "" "\n" "http://%(domain)s%(url)s" msgstr "" -"Beküldte %(user)s %(date)s -kor\n" +"Beküldte %(user)s ekkor: %(date)s\n" "\n" "%(comment)s\n" "\n" "http://%(domain)s%(url)s" -#: contrib/comments/models.py:168 +#: contrib/comments/models.py:171 msgid "person's name" msgstr "személy neve" -#: contrib/comments/models.py:171 +#: contrib/comments/models.py:174 msgid "ip address" msgstr "IP cím" -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:176 msgid "approved by staff" msgstr "személyzet által elfogadva" -#: contrib/comments/models.py:176 -#, fuzzy +#: contrib/comments/models.py:179 msgid "free comment" -msgstr "Szabad megjegyzés" +msgstr "szabad megjegyzés" -#: contrib/comments/models.py:177 -#, fuzzy +#: contrib/comments/models.py:180 msgid "free comments" -msgstr "Szabad megjegyzések" +msgstr "szabad megjegyzések" -#: contrib/comments/models.py:233 +#: contrib/comments/models.py:239 msgid "score" msgstr "értékelés" -#: contrib/comments/models.py:234 +#: contrib/comments/models.py:240 msgid "score date" msgstr "értékelés dátuma" -#: contrib/comments/models.py:237 -#, fuzzy +#: contrib/comments/models.py:243 msgid "karma score" -msgstr "Karma értékelés" +msgstr "karma értékelés" -#: contrib/comments/models.py:238 -#, fuzzy +#: contrib/comments/models.py:244 msgid "karma scores" -msgstr "Karma értékelése" +msgstr "karma értékelések" -#: contrib/comments/models.py:242 +#: contrib/comments/models.py:248 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "%(score)d értékelés %(user)s -tól" +msgstr "%(score)d értékelés %(user)s felhasználótól" -#: contrib/comments/models.py:258 +#: contrib/comments/models.py:264 #, python-format msgid "" "This comment was flagged by %(user)s:\n" @@ -171,60 +987,55 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/models.py:265 +#: contrib/comments/models.py:271 msgid "flag date" msgstr "jelölés dátuma" -#: contrib/comments/models.py:268 -#, fuzzy +#: contrib/comments/models.py:274 msgid "user flag" -msgstr "Felhasználó jelölése" +msgstr "felhasználó jelölése" -#: contrib/comments/models.py:269 -#, fuzzy +#: contrib/comments/models.py:275 msgid "user flags" -msgstr "Felhasználó jelölései" +msgstr "felhasználó jelölései" -#: contrib/comments/models.py:273 +#: contrib/comments/models.py:279 #, python-format msgid "Flag by %r" msgstr "Megjelölte %r" -#: contrib/comments/models.py:278 +#: contrib/comments/models.py:284 msgid "deletion date" msgstr "törlés dátuma" -#: contrib/comments/models.py:280 -#, fuzzy +#: contrib/comments/models.py:286 msgid "moderator deletion" -msgstr "Moderátor törlése" +msgstr "moderátor törlése" -#: contrib/comments/models.py:281 -#, fuzzy +#: contrib/comments/models.py:287 msgid "moderator deletions" -msgstr "Moderátor törlései" +msgstr "moderátor törlései" -#: contrib/comments/models.py:285 +#: contrib/comments/models.py:291 #, python-format msgid "Moderator deletion by %r" msgstr "Moderátor törlés %r által" -#: contrib/comments/views/karma.py:19 +#: contrib/comments/views/karma.py:20 msgid "Anonymous users cannot vote" -msgstr "Ismeretlen felhasználó nem szavazhat" +msgstr "Névtelen felhasználó nem szavazhat" -#: contrib/comments/views/karma.py:23 +#: contrib/comments/views/karma.py:24 msgid "Invalid comment ID" msgstr "Érvénytelen megjegyzés ID" -#: contrib/comments/views/karma.py:25 +#: contrib/comments/views/karma.py:26 msgid "No voting for yourself" -msgstr "Nem szavazhatsz magadra" +msgstr "Nem szavazhat önmagára" #: contrib/comments/views/comments.py:28 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Ez az értékelés szükséges, mert legalább még egy értékelés kell." +msgid "This rating is required because you've entered at least one other rating." +msgstr "Ez az értékelés szükséges, mert legalább még egy értékelést megadott." #: contrib/comments/views/comments.py:112 #, python-format @@ -244,8 +1055,8 @@ msgstr[0] "" "\n" "%(text)s" msgstr[1] "" -"Ezeket a megjegyzéseket olyan felhasználó küldte akinek kevesebb mint %" -"(count)s megjegyzése van:\n" +"Ezt a megjegyzést olyan felhasználó küldte akinek kevesebb mint %(count)s " +"megjegyzése van:\n" "\n" "%(text)s" @@ -261,22 +1072,22 @@ msgstr "" "%(text)s" #: contrib/comments/views/comments.py:189 -#: contrib/comments/views/comments.py:280 +#: contrib/comments/views/comments.py:281 msgid "Only POSTs are allowed" msgstr "Csak POST engedélyezett" #: contrib/comments/views/comments.py:193 -#: contrib/comments/views/comments.py:284 +#: contrib/comments/views/comments.py:285 msgid "One or more of the required fields wasn't submitted" msgstr "Egy vagy több kötelező mező nincs kitöltve" #: contrib/comments/views/comments.py:197 -#: contrib/comments/views/comments.py:286 +#: contrib/comments/views/comments.py:287 msgid "Somebody tampered with the comment form (security violation)" msgstr "Valaki megváltoztatta a megjegyzés űrlapot (biztonság megsértése)" #: contrib/comments/views/comments.py:207 -#: contrib/comments/views/comments.py:292 +#: contrib/comments/views/comments.py:293 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" @@ -284,8 +1095,8 @@ msgstr "" "A megjegyzés űrlap érvénytelen 'target' paramétert tartalmaz -- az objektum " "ID-je érvénytelen volt" -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "A megjegyzés űrlap nem biztosít sem 'preview' -t sem 'post' -ot." @@ -296,35 +1107,36 @@ msgid "Username:" msgstr "Felhasználó:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Jelszó:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Elfelejtetted a jelszavad?" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Kijelentkezés" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Jelszó:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Elfelejtette a jelszavát?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Értékelések" @@ -343,343 +1155,447 @@ msgstr "Opcionális" msgid "Post a photo" msgstr "Fénykép beküldése" -#: contrib/comments/templates/comments/form.html:27 +#: contrib/comments/templates/comments/form.html:28 #: contrib/comments/templates/comments/freeform.html:5 msgid "Comment:" msgstr "Megjegyzés:" -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 msgid "Preview comment" msgstr "Megjegyzés előnézete" #: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" -msgstr "Neved:" +msgstr "Név:" -#: contrib/admin/filterspecs.py:40 +#: contrib/sites/models.py:15 +msgid "domain name" +msgstr "tartománynév" + +#: contrib/sites/models.py:16 +msgid "display name" +msgstr "megjelenítendő név" + +#: contrib/sites/models.py:20 +msgid "site" +msgstr "honlap" + +#: contrib/sites/models.py:21 +msgid "sites" +msgstr "honlapok" + +#: contrib/admin/filterspecs.py:42 #, python-format msgid "" "

                              By %s:

                              \n" "
                                \n" msgstr "" -"

                                Szerző %s:

                                \n" +"

                                Szerző: %s:

                                \n" "
                                  \n" -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 msgid "All" msgstr "Mind" -#: contrib/admin/filterspecs.py:109 +#: contrib/admin/filterspecs.py:111 msgid "Any date" msgstr "Bármely dátum" -#: contrib/admin/filterspecs.py:110 +#: contrib/admin/filterspecs.py:112 msgid "Today" msgstr "Ma" -#: contrib/admin/filterspecs.py:113 +#: contrib/admin/filterspecs.py:115 msgid "Past 7 days" msgstr "Utolsó 7 nap" -#: contrib/admin/filterspecs.py:115 +#: contrib/admin/filterspecs.py:117 msgid "This month" msgstr "Ez a hónap" -#: contrib/admin/filterspecs.py:117 +#: contrib/admin/filterspecs.py:119 msgid "This year" msgstr "Ez az év" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Igen" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Nem" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Ismeretlen" - -#: contrib/admin/models.py:16 +#: contrib/admin/models.py:17 msgid "action time" msgstr "művelet időpontja" -#: contrib/admin/models.py:19 +#: contrib/admin/models.py:20 msgid "object id" msgstr "objektum id" -#: contrib/admin/models.py:20 +#: contrib/admin/models.py:21 msgid "object repr" msgstr "objektum repr" -#: contrib/admin/models.py:21 +#: contrib/admin/models.py:22 msgid "action flag" msgstr "művelet jelölés" -#: contrib/admin/models.py:22 +#: contrib/admin/models.py:23 msgid "change message" -msgstr "üzenet megváltoztatása" +msgstr "üzenet módosítása" -#: contrib/admin/models.py:25 +#: contrib/admin/models.py:26 msgid "log entry" msgstr "naplóbejegyzés" -#: contrib/admin/models.py:26 +#: contrib/admin/models.py:27 msgid "log entries" msgstr "naplóbejegyzések" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:254 msgid "All dates" msgstr "Minden dátum" -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Kérlek írd be a helyes felhasználónevet és jelszót. Mindkét mező kisbetű-" -"nagybetű érzékeny." - -#: contrib/admin/views/decorators.py:23 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Bejelentkezés" - -#: contrib/admin/views/decorators.py:61 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Kérlek jelentkezz be újra, mert a munkameneted végetért. Ne aggódj, minden " -"beküldött adatod el van mentve." - -#: contrib/admin/views/decorators.py:68 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Úgy tűnik a böngésződön nincs engedélyezve a cookie-k fogadása. Kérlek " -"engedélyezd és töltsd újra az oldalt!" - -#: contrib/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "A felhasználónév nem tartalmazhat '@' karaktert." - -#: contrib/admin/views/decorators.py:84 +# TODO +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 #, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Az email címed nem a felhasználóneved. Próbáld a(z) '%s' inkább." +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva." -#: contrib/admin/views/main.py:226 +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 +msgid "You may edit it again below." +msgstr "Alább ismét szerkesztheti." + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Felhasználó hozzáadása" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Sikeres jelszóváltoztatás." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Jelszó megváltoztatása: %s" + +#: contrib/admin/views/main.py:230 msgid "Site administration" msgstr "Honlap karbantartás" -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "A(z) %(name)s \"%(obj)s\" sikeresen hozzáadva." - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "Alább ismét szerkesztheted." - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 #, python-format msgid "You may add another %s below." -msgstr "Alább hozzáadhatsz egy másik %s -t." +msgstr "Alább hozzáadhat egy másikat ebből: %s." -#: contrib/admin/views/main.py:290 +#: contrib/admin/views/main.py:296 #, python-format msgid "Add %s" -msgstr "%s hozzáadása" +msgstr "Új %s" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:342 #, python-format msgid "Added %s." -msgstr "%s hozzáadva." +msgstr "%s létrehozva." -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 -msgid "and" -msgstr "és" - -#: contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:344 #, python-format msgid "Changed %s." -msgstr "%s megváltoztatva." +msgstr "%s módosítva." -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:346 #, python-format msgid "Deleted %s." msgstr "%s törölve." -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:349 msgid "No fields changed." msgstr "Egy mező sem változott." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:352 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "A(z) %(name)s \"%(obj)s\" sikeresen megváltoztatva." +msgstr "\"%(obj)s\" %(name)s sikeresen módosítva." -#: contrib/admin/views/main.py:354 +#: contrib/admin/views/main.py:360 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"A(z) %(name)s \"%(obj)s\" sikeresen hozzáadva. Alább ismét szerkesztheted." +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva. Alább ismét szerkesztheted." -#: contrib/admin/views/main.py:392 +#: contrib/admin/views/main.py:398 #, python-format msgid "Change %s" -msgstr "%s megváltoztatása" +msgstr "%s módosítása" -#: contrib/admin/views/main.py:470 +# TODO +#: contrib/admin/views/main.py:483 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Egy vagy több %(fieldname)s a(z) %(name)s -ban: %(obj)s" -#: contrib/admin/views/main.py:475 +# TODO +#: contrib/admin/views/main.py:488 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "Egy vagy több %(fieldname)s a(z) %(name)s:" -#: contrib/admin/views/main.py:508 +#: contrib/admin/views/main.py:520 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "A(z) %(name)s \"%(obj)s\" sikeresen törölve." +msgstr "\"%(obj)s\" %(name)s sikeresen törölve." -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:523 msgid "Are you sure?" -msgstr "Biztos vagy benne?" +msgstr "Biztos benne?" -#: contrib/admin/views/main.py:533 +#: contrib/admin/views/main.py:545 #, python-format msgid "Change history: %s" msgstr "Változások története: %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:579 #, python-format msgid "Select %s" msgstr "Kiválasztás %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:579 #, python-format msgid "Select %s to change" -msgstr "Válaszd a(z) %s a változtatáshoz" +msgstr "Válasszon ki egyet a módosításhoz (%s)" -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 +#: contrib/admin/views/main.py:780 +msgid "Database error" +msgstr "Adatbázis hiba" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Írjon be egy helyes felhasználónevet és jelszót. Mindkét mező kisbetű-" +"nagybetű érzékeny." + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Bejelentkezés" + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Jelentkezzen be újra, mert a munkamenete végetért. Ne aggódjon, minden " +"beküldött adata el van mentve." + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Úgy tűnik a böngészőjében nincs engedélyezve a cookie-k fogadása. Kérem " +"engedélyezze és töltse újra az oldalt!" + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "A felhasználónév nem tartalmazhat '@' karaktert." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Az email címe nem a felhasználóneve. Próbálja inkább ezt: %s." + +#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 +msgid "tag:" +msgstr "címke:" + +#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 +msgid "filter:" +msgstr "szűrő:" + +#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 +msgid "view:" +msgstr "nézet:" + +#: contrib/admin/views/doc.py:165 +#, python-format +msgid "App %r not found" +msgstr "%r alkalmazás nem található" + +#: contrib/admin/views/doc.py:172 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "%(name)r modell nem található a következő alkalmazásban: %(label)r" + +#: contrib/admin/views/doc.py:184 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "a kapcsolódó '%(label)s.%(type)s' objektum" + +#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 +msgid "model:" +msgstr "modell:" + +#: contrib/admin/views/doc.py:215 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "kapcsolódó '%(label)s.%(name)sí' objektumok" + +#: contrib/admin/views/doc.py:220 +#, python-format +msgid "all %s" +msgstr "minden %s" + +#: contrib/admin/views/doc.py:225 +#, python-format +msgid "number of %s" +msgstr "%s mennyisége" + +#: contrib/admin/views/doc.py:230 +#, python-format +msgid "Fields on %s objects" +msgstr "Mezők %s objektumokban" + +#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 msgid "Integer" msgstr "Egész" -#: contrib/admin/views/doc.py:278 +#: contrib/admin/views/doc.py:293 msgid "Boolean (Either True or False)" msgstr "Logikai (True vagy False)" -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 +#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 #, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Karakterlánc (%(maxlength)s hosszig)" +msgid "String (up to %(max_length)s)" +msgstr "Karakterlánc (%(max_length)s hosszig)" -#: contrib/admin/views/doc.py:280 +#: contrib/admin/views/doc.py:295 msgid "Comma-separated integers" msgstr "Vesszővel elválasztott egészek" -#: contrib/admin/views/doc.py:281 +#: contrib/admin/views/doc.py:296 msgid "Date (without time)" msgstr "Dátum (idő nélkül)" -#: contrib/admin/views/doc.py:282 +#: contrib/admin/views/doc.py:297 msgid "Date (with time)" msgstr "Dátum (idővel)" -#: contrib/admin/views/doc.py:283 +#: contrib/admin/views/doc.py:298 +msgid "Decimal number" +msgstr "Tizes számrendszerű (decimális) szám" + +#: contrib/admin/views/doc.py:299 msgid "E-mail address" msgstr "E-mail cím" -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 +#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 msgid "File path" msgstr "Elérési út" -#: contrib/admin/views/doc.py:285 -msgid "Decimal number" -msgstr "Tizes számrendszerű szám" +#: contrib/admin/views/doc.py:302 +msgid "Floating point number" +msgstr "Lebegőpontos szám" -#: contrib/admin/views/doc.py:291 +#: contrib/admin/views/doc.py:308 msgid "Boolean (Either True, False or None)" msgstr "Logikai (True, False vagy None)" -#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:309 msgid "Relation to parent model" msgstr "Szülőkapcsolat" -#: contrib/admin/views/doc.py:293 +#: contrib/admin/views/doc.py:310 msgid "Phone number" msgstr "Telefonszám" -#: contrib/admin/views/doc.py:298 +#: contrib/admin/views/doc.py:315 msgid "Text" msgstr "Szöveg" -#: contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:316 msgid "Time" msgstr "Idő" -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:318 msgid "U.S. state (two uppercase letters)" msgstr "USA állam (két nagybetű)" -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:319 msgid "XML text" msgstr "XML szöveg" -#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/views/doc.py:345 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s nem tűnik egy urlpattern objektumnak." + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Éppen:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Változás:" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Dátum:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Idő:" + #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentáció" -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Change password" msgstr "Jelszó megváltoztatása" +#: contrib/admin/templates/admin/change_list.html:6 #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/logged_out.html:4 @@ -689,8 +1605,18 @@ msgstr "Jelszó megváltoztatása" msgid "Home" msgstr "Kezdőlap" +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Új %(name)s" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s szerint " + #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 msgid "History" msgstr "Történet" @@ -706,6 +1632,7 @@ msgstr "Felhasználó" msgid "Action" msgstr "Művelet" +# TODO #: contrib/admin/templates/admin/object_history.html:26 msgid "DATE_WITH_TIME_FULL" msgstr "N j, Y, P" @@ -718,6 +1645,26 @@ msgstr "" "Az objektumnak nincs változási története. Valószínűleg nem ezen a " "karbantartó oldalon lett rögzítve." +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Mehet" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "Egy találat." +msgstr[1] "%(counter)s találat." + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s összesen" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Mutassa mindet" + #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" msgstr "Django honlap adminisztráció" @@ -728,15 +1675,15 @@ msgstr "Django adminisztráció" #: contrib/admin/templates/admin/500.html:4 msgid "Server error" -msgstr "Szerver hiba" +msgstr "Szerverhiba" #: contrib/admin/templates/admin/500.html:6 msgid "Server error (500)" -msgstr "Szerver hiba (500)" +msgstr "Szerverhiba (500)" #: contrib/admin/templates/admin/500.html:9 msgid "Server Error (500)" -msgstr "Szerver hiba (500)" +msgstr "Szerverhiba (500)" #: contrib/admin/templates/admin/500.html:10 msgid "" @@ -744,38 +1691,44 @@ msgid "" "mail and should be fixed shortly. Thanks for your patience." msgstr "" "Hiba történt, melyet e-mailben jelentettünk az oldal karbantartójának. A " -"rendszer remélhetően hamar megjavul, köszönjük a türelmedet." +"rendszer remélhetően hamar megjavul. Köszönjük a türelmét." -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Nincs ilyen oldal" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Sajnáljuk, a kért oldalt nem találjuk." +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "" +"Valami nem stimmel a telepített adatbázissal. Bizonyosodjon meg arról, hogy " +"a megfelelő táblák létre lettek-e hozva, és hogy a megfelelő felhasználó " +"tudja-e őket olvasni." #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." -msgstr "" +msgstr "%(name)s alkalmazásban elérhető modellek." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" -msgstr "Hozzáadás" +msgstr "Új" #: contrib/admin/templates/admin/index.html:34 msgid "Change" -msgstr "Változtatás" +msgstr "Módosítás" #: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." -msgstr "Nincs jogod szerkeszteni." +msgstr "Nincs joga szerkeszteni." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" -msgstr "Utóbbi műveletek" +msgstr "Utolsó műveletek" #: contrib/admin/templates/admin/index.html:53 msgid "My Actions" @@ -785,18 +1738,37 @@ msgstr "Az én műveleteim" msgid "None available" msgstr "Nincs elérhető" -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "%(name)s hozzáadása" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Nincs ilyen oldal" -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Csak nem elfelejtetted a jelszavadat?" +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Sajnáljuk, de a kért oldal nem található." -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Üdvözöllek," +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Szűrő" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Megtekintés a honlapon" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Kérem javítsa az alábbi hibát." +msgstr[1] "Kérlem javítsa az alábbi hibákat." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Rendezés" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Rendezés:" #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 @@ -806,53 +1778,30 @@ msgstr "Törlés" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" msgstr "" -"A(z) %(object_name)s '%(object)s' törlése a kapcsolódó objektumok törlését " -"is eredményezi, de a hozzáférésed nem engedi a következő típusú objektumok " -"törlését:" +"'%(escaped_object)s' %(object_name)s törlése a kapcsolódó objektumok " +"törlését is eredményezi, de a hozzáférése nem engedi a következő típusú " +"objektumok törlését:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" msgstr "" -"Biztos hogy törlöd a(z) %(object_name)s \"%(object)s\"? A összes következő " -"kapcsolódó elem is törlődik:" +"Biztos hogy törli a következőt: \"%(escaped_object)s\" (típus: %(object_name)" +"s)? A összes további kapcsolódó elem is törlődik:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Igen, biztos vagyok benne" -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(title)s " -msgstr " Szerző %(title)s " - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Mehet" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Megtekintés a honlapon" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Kérlek javítsd az alábbi hibát." -msgstr[1] "Kérlek javítsd az alábbi hibákat." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Rendezés" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Rendezettség:" +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Üdvözlöm," #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" @@ -870,12 +1819,44 @@ msgstr "Mentés és a szerkesztés folytatása" msgid "Save" msgstr "Mentés" +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Adjon meg egy új jelszót a %(username)s nevű felhasználónak." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Jelszó" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Jelszó újra" + +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "Írja be a fenti jelszót ellenőrzés céljából." + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Először adjon meg egy felhasználói nevet és egy jelszót. Ezek után további " +"módosításokat is végezhet a felhasználó adatain." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Felhasználó" + #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 #: contrib/admin/templates/registration/password_change_form.html:10 msgid "Password change" -msgstr "Jelszó változtatása" +msgstr "Jelszó megváltoztatása" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 @@ -884,22 +1865,22 @@ msgstr "Sikeres jelszóváltoztatás" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." -msgstr "Jelszavad megváltozott." +msgstr "Megváltozott a jelszava." #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/password_reset_form.html:6 #: contrib/admin/templates/registration/password_reset_form.html:10 #: contrib/admin/templates/registration/password_reset_done.html:4 msgid "Password reset" -msgstr "Jelszó törlés" +msgstr "Jelszó törlése" #: contrib/admin/templates/registration/password_reset_form.html:12 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll reset " "your password and e-mail the new one to you." msgstr "" -"Elfelejtetted a jelszavad? Írd be az e-mail címed, mi töröljük a jelszavad " -"és az újat e-mailben elküldjük neked." +"Elfelejtette a jelszavát? Írja be az e-mail címét, mi töröljük a jelszavát " +"és az újat e-mailben elküldjük." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -911,11 +1892,11 @@ msgstr "Jelszavam törlése" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Köszönjük hogy egy kis időt töltöttél a honlapunkon." +msgstr "Köszönjük hogy egy kis időt eltöltött ma a honlapunkon." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" -msgstr "Jelentkezz be újra" +msgstr "Jelentkezzen be újra" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 @@ -926,15 +1907,17 @@ msgstr "Sikeres jelszótörlés" msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." -msgstr "Új jelszavadat elküldtük e-mailben. Hamarosan meg kell kapnod." +msgstr "" +"Új jelszavát elküldtük e-mailben a megadott címre. Hamarosan meg kell " +"érkeznie." #: contrib/admin/templates/registration/password_change_form.html:12 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 "" -"Írd be a régi jelszavad biztonsági okokból, majd az újat kétszer, hogy " -"biztosan ne gépeld el." +"Írja be a régi jelszavát biztonsági okokból, majd az újat kétszer, hogy " +"biztosan ne gépelje el." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -954,34 +1937,34 @@ msgstr "Jelszavam megváltoztatása" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Ezt az e-mail-t azért kaptad, mert jelszótörlést kértél" +msgstr "Ezt az e-mail-t azért kapta, mert jelszótörlést kért" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" -msgstr "hozzáférésedhez a következő honlapon: %(site_name)s" +msgstr "hozzáféréséhez a következő honlapon: %(site_name)s" #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" -msgstr "Új jelszavad: %(new_password)s" +msgstr "Új jelszava: %(new_password)s" #: contrib/admin/templates/registration/password_reset_email.html:7 msgid "Feel free to change this password by going to this page:" -msgstr "Bármikor megváltoztathatod a jelszavad a következő oldalon:" +msgstr "Bármikor megváltoztathatja a jelszavát a következő oldalon:" #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" -msgstr "Felhasználóneved, ha elfelejtetted volna:" +msgstr "Felhasználóneve, ha elfelejtette volna:" #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" -msgstr "Köszönjük, hogy használtad honlapunkat!" +msgstr "Köszönjük, hogy használta honlapunkat!" #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" -msgstr "A %(site_name)s csapata" +msgstr "%(site_name)s csapat" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -1002,11 +1985,12 @@ msgid "" "your computer is \"internal\").

                                  \n" msgstr "" "\n" -"

                                  A könyvjelzők felvételéhez húzd a könyvjelzők linkjét az " -"eszköztárra, vagy kattints rájuk jobb egérgombot és úgy add hozzá. Ezután \n" -"már ki tudod választani a könyvjelzőt a honlap bármely oldaláról. A " -"könyvjelzők között néhány oldal csak 'belső' gépekről nézhető meg.\n" -"(Beszélj a rendszergazdával hogy a te géped 'belső' gép-e.).

                                  \n" +"

                                  A könyvjelzők felvételéhez húzza a könyvjelzők linkjét az " +"eszköztárra, vagy kattintson rájuk jobb egérgombbal és úgy adja hozzá. " +"Ezután \n" +"már ki tudja választani a könyvjelzőt a honlap bármely oldaláról. A " +"könyvjelzők között néhány oldal csak \"belső\" gépekről nézhető meg.\n" +"(Kérdezze meg rendszergazdáját, hogy az Ön gépe \"belső\" gép-e.).

                                  \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -1017,12 +2001,12 @@ msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." msgstr "" -"Bármely oldalról annak a nézetnek a dokumentációjára ugrik, mely a kérdéses " +"Bármely oldalról annak a nézetnek a dokumentációjára ugrik, amely a kérdéses " "oldalt generálta." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" -msgstr "Az objektum ID kijelzése" +msgstr "Az objektum ID mutatása" #: contrib/admin/templates/admin_doc/bookmarklets.html:23 msgid "" @@ -1046,60 +2030,1128 @@ msgstr "Objektum szerkesztése (új ablakban)" #: contrib/admin/templates/admin_doc/bookmarklets.html:29 msgid "As above, but opens the admin page in a new window." -msgstr "Mint fentebb, de az adminisztrációs oldalt új ablakban nyitja." +msgstr "Mint fentebb, de az adminisztrációs oldalt új ablakban nyitja meg." -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Dátum:" +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "python modell osztály neve" -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Idő:" +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "tartalom típusa" -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Éppen:" +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "tartalom típusok" -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Változás:" +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Kijelentkezve" -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "átirányítva innen" +#: contrib/auth/models.py:53 contrib/auth/models.py:73 +msgid "name" +msgstr "név" -#: contrib/redirects/models.py:8 +#: contrib/auth/models.py:55 +msgid "codename" +msgstr "kódnév" + +#: contrib/auth/models.py:58 +msgid "permission" +msgstr "jogosultság" + +#: contrib/auth/models.py:59 contrib/auth/models.py:74 +msgid "permissions" +msgstr "jogosultságok" + +#: contrib/auth/models.py:77 +msgid "group" +msgstr "csoport" + +#: contrib/auth/models.py:78 contrib/auth/models.py:121 +msgid "groups" +msgstr "csoportok" + +#: contrib/auth/models.py:111 +msgid "username" +msgstr "felhasználónév" + +#: contrib/auth/models.py:111 msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." msgstr "" -"Ennek abszolút elérési útnak kell lennie, a domén név nélkül. Példa: '/" -"events/search/'" +"Kötelező. Legfeljebb 30 karakter. Csak alfanumerikus karaktereket " +"tartalmazhat (betűk, számok és aláhúzás)." -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "átirányítva ide" +#: contrib/auth/models.py:112 +msgid "first name" +msgstr "keresztnév" -#: contrib/redirects/models.py:10 +#: contrib/auth/models.py:113 +msgid "last name" +msgstr "vezetéknév" + +#: contrib/auth/models.py:114 +msgid "e-mail address" +msgstr "e-mail cím" + +#: contrib/auth/models.py:115 +msgid "password" +msgstr "jelszó" + +#: contrib/auth/models.py:115 msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." msgstr "" -"Ennek vagy abszolút elérési útnak kell lennie (mint fentebb) vagy teljes URL-" -"nek 'http://' -vel kezdve." +"Használja az \"[algo]$[salt]$[hexdigest]\" formátumot, vagy a jelszó megváltoztatása űrlapot." -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "átirányítás" +#: contrib/auth/models.py:116 +msgid "staff status" +msgstr "személyzet státusz" -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "átirányít" +#: contrib/auth/models.py:116 +msgid "Designates whether the user can log into this admin site." +msgstr "Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs oldalra." + +#: contrib/auth/models.py:117 +msgid "active" +msgstr "aktív" + +#: contrib/auth/models.py:117 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs " +"oldalra. Állítsa át ezt az értéket a fiókok törlése helyett." + +#: contrib/auth/models.py:118 +msgid "superuser status" +msgstr "rendszergazda státusz" + +#: contrib/auth/models.py:118 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Megadja, hogy ez a felhasználó rendelkezik-e minden jogosultsággal anélkül, " +"hogy azt külön meg kellene adni." + +#: contrib/auth/models.py:119 +msgid "last login" +msgstr "utolsó bejelentkezés" + +#: contrib/auth/models.py:120 +msgid "date joined" +msgstr "csatlakozás dátuma" + +#: contrib/auth/models.py:122 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"A kézzel beállított jogosultságok mellett a felhasználó a csoportjának " +"jogait is megkapja." + +#: contrib/auth/models.py:123 +msgid "user permissions" +msgstr "felhasználói jogosultságok" + +#: contrib/auth/models.py:127 +msgid "user" +msgstr "felhasználó" + +#: contrib/auth/models.py:128 +msgid "users" +msgstr "felhasználók" + +#: contrib/auth/models.py:134 +msgid "Personal info" +msgstr "személyes információ" + +#: contrib/auth/models.py:135 +msgid "Permissions" +msgstr "jogosultságok" + +#: contrib/auth/models.py:136 +msgid "Important dates" +msgstr "Fontos dátumok" + +#: contrib/auth/models.py:137 +msgid "Groups" +msgstr "Csoportok" + +#: contrib/auth/models.py:288 +msgid "message" +msgstr "üzenet" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "A két jelszó mező tartalma nem egyezik meg." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Létezik már egy felhasználó ezzel a névvel." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"A böngészője úgy tűnik nem támogatja a cookie-kat. A cookie-k engedélyezése " +"szükséges a bejelentkezéshez." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Ez a fiók inaktív." + +#: contrib/auth/forms.py:84 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Ehhez az e-mail címhez nem tartozik felhasználói fiók. Biztos benne, hogy " +"regisztrált?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "A két \"új jelszó\" mezó tartalma nem egyezik meg." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "A régi jelszó hibásan lett megadva. Írja be újra." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" +"Írjon be egy irányítószámot. Az irányítószám két része között szóköznek kell " +"állnia." + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Írjon be egy irányítószámot 'XXXXX-XXX' alakban." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "A telefonszámoknak 'XXX-XXX-XXXX' formátumúnak kell lenniük." + +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "Ez a mező csak számokat tartalmazhat." + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Ez a mező legfeljebb 11 számjegyet vagy 14 karaktert tartalmazhat." + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "Érvénytelen CPF szám." + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "Ennek a mezőnek legalább 14 számjegyet kell tartalmaznia." + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "Érvénytelen CNPJ szám." + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Írjon be egy négyjegyű irányítószámot." + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Írjon be egy irányítószámot 'XXXXX' alakban." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Írjon be egy irányítószámot 'XXXXX', vagy 'XXXXX-XXXX' alakban." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Írjon be egy érvényes USA SSN-t 'XXX-XX-XXXX' formátumban." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bajorország" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bréma" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Nyugat-Pomeránia" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Alsó-Szászország" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Észak-Rajna-Vesztfália" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rhineland-Palatinate" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Szárföld" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Szászország" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Szász-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Türingia" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Írjon be egy érvényes német személyazonosító számot \"XXXXXXXXXXX-XXXXXXX-" +"XXXXXXX-X\" alakban." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaido" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tókió" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ishikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kiotó" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Oszaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyogo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kochi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagaszaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kumamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Oita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Írjon be egy irányítószámot \"XXXXXXX\" vagy \"XXX-XXXX\" alakban." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Innerrhoden" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Ausserrhoden" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Bázel-város" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Bázel-vidék" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Berne" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Genf" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Graubuenden" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Lucerne" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchatel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwalden" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwalden" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Solothurn" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "St. Gallen" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Ticino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Valais" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zürich" + +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14 +msgid "Enter a zip code in the format XXXX." +msgstr "Írjon be egy irányítószámot 'XXXX' alakban." + +#: contrib/localflavor/ch/forms.py:90 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Írjon be egy érvényes svájci személyazonosító vagy útlevél számot " +"\"X1234567<0\" vagy \"1234567890\" alakban." + +#: contrib/localflavor/is_/forms.py:17 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" +"Írjon be egy érvényes izlandi személyazonosító számot \"XXXXXX-XXXX\" " +"alakban." + +#: contrib/localflavor/is_/forms.py:31 +msgid "The Icelandic identification number is not valid." +msgstr "Az izlandi személyazonosító szám érvénytelen." + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Adjon meg egy érvényes irányítószámot." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Adjon meg egy érvényes társadalombiztosítási számot." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Adjon meg egy érvényes ÁFA számot." + +#: contrib/localflavor/no/forms.py:35 +msgid "Enter a valid Norwegian social security number." +msgstr "Írjon be egy érvényes norvég társadalombiztosítási számot." + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Besztercebánya régió" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Pozsony régió" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Kassa régió" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nyitra régió" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Presov régió" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trencsén régió" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava régió" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Zsolna régió" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Besztercebánya" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Pozsony I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Pozsony II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Pozsony III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Pozsony IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Pozsony V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunaszerdahely" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galánta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Késmárk" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komárom" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kassa I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kassa II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kassa III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kassa IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nyitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprád" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimaszombat" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Rozsnyó" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Rózsahegy" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Igló" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sellye" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencsén" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zsolna" + +#: contrib/localflavor/sk/forms.py:32 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Írjon be egy irányítószámot \"XXXXX\" vagy \"XXX XX\" alakban." + +#: contrib/localflavor/cl/forms.py:32 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Írjon be egy érvényes chilei RUT-ot \"XX.XXX.XXX-X\" alakban." + +#: contrib/localflavor/cl/forms.py:37 +msgid "Enter valid a Chilean RUT" +msgstr "Írjon be egy érvényes chilei RUT-ot" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Adjon meg egy érvényes finn társadalombiztosítási számot." + +#: contrib/localflavor/in_/forms.py:16 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Írjon be egy irányítószámot \"XXXXXXX\" alakban." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Alsó-Szilézia" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kuyavia-Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Lodz" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Kis-Lengyelország" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masovia" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Szubkárpátok" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlasie" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomeránia" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Szilézia" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuria" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Nagy-Lengyelország" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "Nyugat-Pomeránia" + +#: contrib/localflavor/pl/forms.py:53 +msgid "National Identification Number consists of 11 digits." +msgstr "A nemzeti azonosítószám 11 számjegyből áll." + +#: contrib/localflavor/pl/forms.py:59 +msgid "Wrong checksum for the National Identification Number." +msgstr "Hibás a nemzeti azonosítószám ellenőrző kódja." + +#: contrib/localflavor/pl/forms.py:71 +msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "Írjon be egy adószámot \"XXX-XXX-XX-XX\" vagy \"XX-XX-XXX-XXX\" alakban." + +#: contrib/localflavor/pl/forms.py:82 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Írjon be egy irányítószámot 'XX-XXX' alakban." + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "munkamenet kulcs" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "munkamenet adat" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "lejárat dátuma" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "munkamenet" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "munkamenetek" #: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Például: '/about/contact/'. Figyelj a nyitó és záró perjelre!" +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Például: '/about/contact/'. Figyeljen a nyitó és záró perjelre!" #: contrib/flatpages/models.py:9 msgid "title" @@ -1119,11 +3171,11 @@ msgstr "sablon neve" #: contrib/flatpages/models.py:13 msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." msgstr "" "Példa: 'flatpages/contact_page'. Ha ez nem létezik, a rendszer a 'flatpages/" -"default' -ot használja." +"default.html' sablont fogja használni." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1143,880 +3195,303 @@ msgstr "egyszerű oldal" msgid "flat pages" msgstr "egyszerű oldalak" -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "név" - -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "kódnév" - -#: contrib/auth/models.py:17 -#, fuzzy -msgid "permission" -msgstr "Engedély" - -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -#, fuzzy -msgid "permissions" -msgstr "Engedélyek" - -#: contrib/auth/models.py:29 -#, fuzzy -msgid "group" -msgstr "Csoport" - -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -#, fuzzy -msgid "groups" -msgstr "Csoportok" - -#: contrib/auth/models.py:55 -msgid "username" -msgstr "felhasználónév" - -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "keresztnév" - -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "vezetéknév" - -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "e-mail cím" - -#: contrib/auth/models.py:59 -msgid "password" -msgstr "jelszó" - -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Használat '[algo]$[salt]$[hexdigest]'" - -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "Személyzet státusa" - -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "" -"Megadja hogy a felhasználó bejelentkezhet-e erre az adminisztrációs oldalra." - -#: contrib/auth/models.py:61 -msgid "active" -msgstr "aktív" - -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "rendszergazda státusz" - -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "utolsó bejelentkezés" - -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "csatlakozás dátuma" - -#: contrib/auth/models.py:66 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"A kézzel beállított jogosultságok mellett a felhasználó a csoportjának a " -"jogait is megkapja." - -#: contrib/auth/models.py:67 -#, fuzzy -msgid "user permissions" -msgstr "Engedélyek" - -#: contrib/auth/models.py:70 -#, fuzzy -msgid "user" -msgstr "Felhasználó" - -#: contrib/auth/models.py:71 -#, fuzzy -msgid "users" -msgstr "Felhasználók" - -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "Személyes információ" - -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "Engedélyek" - -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "Fontos dátumok" - -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "Csoportok" - -#: contrib/auth/models.py:219 -#, fuzzy -msgid "message" -msgstr "Üzenet" - -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"A böngésződ úgy tűnik nem támogatja a cookie-kat. A cookie-k engedélyezése " -"szükséges a bejelentkezéshez." - -#: contrib/contenttypes/models.py:25 -#, fuzzy -msgid "python model class name" -msgstr "python modul név" - -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "tartalom típusa" - -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "tartalom típusok" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "munkamenet kulcs" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "munkamenet adat" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "lejárat dátuma" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "munkamenet" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "munkamenetek" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "domén neve" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "megjelenő név" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "honlap" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "honlapok" - -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "N j, Y" - -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "N j, Y, P" - -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "P" - #: utils/dates.py:6 msgid "Monday" -msgstr "Hétfő" +msgstr "hétfő" #: utils/dates.py:6 msgid "Tuesday" -msgstr "Kedd" +msgstr "kedd" #: utils/dates.py:6 msgid "Wednesday" -msgstr "Szerda" +msgstr "szerda" #: utils/dates.py:6 msgid "Thursday" -msgstr "Csütörtök" +msgstr "csütörtök" #: utils/dates.py:6 msgid "Friday" -msgstr "Péntek" +msgstr "péntek" #: utils/dates.py:7 msgid "Saturday" -msgstr "Szombat" +msgstr "szombat" #: utils/dates.py:7 msgid "Sunday" -msgstr "Vasárnap" +msgstr "vasárnap" -#: utils/dates.py:14 +#: utils/dates.py:10 +msgid "Mon" +msgstr "hét" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "kedd" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "sze" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "csüt" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "pén" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "szo" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "vas" + +#: utils/dates.py:18 msgid "January" -msgstr "Január" +msgstr "január" -#: utils/dates.py:14 +#: utils/dates.py:18 msgid "February" -msgstr "Február" +msgstr "február" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" -msgstr "Március" +msgstr "március" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" -msgstr "Április" +msgstr "április" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" -msgstr "Május" +msgstr "május" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" -msgstr "Június" +msgstr "június" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" -msgstr "Július" +msgstr "július" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "August" -msgstr "Augusztus" +msgstr "augusztus" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "September" -msgstr "Szeptember" +msgstr "szeptember" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "October" -msgstr "Október" +msgstr "október" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "November" -msgstr "November" +msgstr "november" -#: utils/dates.py:16 +#: utils/dates.py:20 msgid "December" -msgstr "December" +msgstr "december" -#: utils/dates.py:19 -#, fuzzy +#: utils/dates.py:23 msgid "jan" -msgstr "és" +msgstr "jan" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "feb" -msgstr "" +msgstr "febr" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "mar" -msgstr "" +msgstr "márc" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "apr" -msgstr "" +msgstr "ápr" -#: utils/dates.py:19 -#, fuzzy +#: utils/dates.py:23 msgid "may" -msgstr "nap" +msgstr "máj" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jun" -msgstr "" +msgstr "jún" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "jul" -msgstr "" +msgstr "júl" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "aug" -msgstr "" +msgstr "aug" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "sep" -msgstr "" +msgstr "szept" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "oct" -msgstr "" +msgstr "okt" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "nov" -msgstr "" +msgstr "nov" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "dec" -msgstr "" +msgstr "dec" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Jan." -msgstr "Jan." +msgstr "jan." -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Feb." -msgstr "Feb." +msgstr "febr." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Aug." -msgstr "Aug." +msgstr "aug." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Sept." -msgstr "Szept." +msgstr "szept." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Oct." -msgstr "Okt." +msgstr "okt." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Nov." -msgstr "Nov." +msgstr "nov." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Dec." -msgstr "Dec." +msgstr "dec." #: utils/timesince.py:12 msgid "year" msgid_plural "years" msgstr[0] "év" -msgstr[1] "évek" +msgstr[1] "év" #: utils/timesince.py:13 msgid "month" msgid_plural "months" msgstr[0] "hónap" -msgstr[1] "hónapok" +msgstr[1] "hónap" #: utils/timesince.py:14 msgid "week" msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "hét" +msgstr[1] "hét" #: utils/timesince.py:15 msgid "day" msgid_plural "days" msgstr[0] "nap" -msgstr[1] "napok" +msgstr[1] "nap" #: utils/timesince.py:16 msgid "hour" msgid_plural "hours" msgstr[0] "óra" -msgstr[1] "órák" +msgstr[1] "óra" #: utils/timesince.py:17 msgid "minute" msgid_plural "minutes" msgstr[0] "perc" -msgstr[1] "percek" +msgstr[1] "perc" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "Bengáli" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "Cseh" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "Walesi" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "Dán" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "Német" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "Angol" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "Spanyol" - -#: conf/global_settings.py:45 -msgid "French" -msgstr "Francia" - -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "Gall" - -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "" - -#: conf/global_settings.py:49 -msgid "Icelandic" -msgstr "Izlandi" - -#: conf/global_settings.py:50 -msgid "Italian" -msgstr "Olasz" - -#: conf/global_settings.py:51 -msgid "Japanese" -msgstr "Japán" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "Holland" - -#: conf/global_settings.py:53 -msgid "Norwegian" -msgstr "Norvég" - -#: conf/global_settings.py:54 -msgid "Brazilian" -msgstr "Brazil" - -#: conf/global_settings.py:55 -msgid "Romanian" -msgstr "Román" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "Orosz" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "Szlovák" - -#: conf/global_settings.py:58 -#, fuzzy -msgid "Slovenian" -msgstr "Szlovák" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "Szerb" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "Svéd" - -#: conf/global_settings.py:61 -#, fuzzy -msgid "Ukrainian" -msgstr "Brazil" - -#: conf/global_settings.py:62 -msgid "Simplified Chinese" -msgstr "Egyszerű kínai" - -#: conf/global_settings.py:63 -msgid "Traditional Chinese" -msgstr "Hagyományos kínai" - -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Az érték csak betűket, számokat és alulvonást tartalmazhat." - -#: core/validators.py:64 -#, fuzzy -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "Az érték csak betűket, számokat, alulvonást és perjelet tartalmazhat." - -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Nagybetűk itt nem megengedettek." - -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Kisbetűk itt nem megengedettek." - -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Csak számokat adj meg, vesszőkkel elválasztva." - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Érvényes e-mail címeket adja meg, vesszőkkel elválasztva." - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Írj be egy érvényes IP címet." - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Üres érték itt nem megengedett." - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Nem szám karakterek itt nem megengedettek." - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "Ez az érték nem tartalmazhat kizárólag számokat." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Adj meg egy egész számot." - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Itt csak betűk megengedettek." - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Írj be egy érvényes dátumot 'ÉÉÉÉ-HH-NN' alakban." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Írj be egy érvényes időt 'ÓÓ:PP' alakban." - -#: core/validators.py:132 db/models/fields/__init__.py:468 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Írj be egy érvényes dátumot/időt 'ÉÉÉÉ-HH-NN ÓÓ-PP' alakban." - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Írj be egy érvényes e-mail címet." - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Tölts fel egy érvényes képfájlt. A feltöltött fájl vagy nem kép volt vagy " -"megsérült." - -#: core/validators.py:155 +#: utils/timesince.py:39 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "A(z) %s URL nem érvényes képfájlra mutat." +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" -#: core/validators.py:159 +#: utils/timesince.py:45 #, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"A telefonszámoknak 'XXX-XXX-XXXX' formátumúnak kell lennie. \"%s\" " -"érvénytelen." +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" -#: core/validators.py:167 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "A(z) %s URL nem érvényes QuickTime videóra mutat." +#: utils/text.py:127 +msgid "or" +msgstr "vagy" -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "Érvényes URL szükséges." +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "du" -#: core/validators.py:185 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Érvényes HTML kell. A hiba:\n" -"%s" +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "de" -#: core/validators.py:192 -#, python-format -msgid "Badly formed XML: %s" -msgstr "Rosszul formázott XML: %s" +#: utils/dateformat.py:47 +msgid "PM" +msgstr "DU" -#: core/validators.py:202 -#, python-format -msgid "Invalid URL: %s" -msgstr "Érvénytelen URL: %s" +#: utils/dateformat.py:48 +msgid "AM" +msgstr "DE" -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "A(z) %s URL egy rossz link." +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "éjfél" -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Írj be egy érvényes USA állam rövidítést." +#: utils/dateformat.py:99 +msgid "noon" +msgstr "dél" -#: core/validators.py:229 -#, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "Vigyázz a szádra! Az ilyen szavak (%s) itt nem megengedettek." -msgstr[1] "Vigyázz a szádra! Az ilyen szavak (%s) itt nem megengedettek." +#: utils/translation/trans_real.py:391 +msgid "DATE_FORMAT" +msgstr "Y. F j." -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "A mezőnek egyeznie kell a(z) %s mezővel." +#: utils/translation/trans_real.py:392 +msgid "DATETIME_FORMAT" +msgstr "Y. F j., H:i" -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Írj be valamit legalább egy mezőbe." +#: utils/translation/trans_real.py:393 +msgid "TIME_FORMAT" +msgstr "H:i" -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "Töltsd ki mindkét mezőt vagy hagyd üresen mindkettőt." +#: utils/translation/trans_real.py:409 +msgid "YEAR_MONTH_FORMAT" +msgstr "Y. F j." -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Ezt a mezőt meg kell adni, ha %(field)s értéke %(value)s" +#: utils/translation/trans_real.py:410 +msgid "MONTH_DAY_FORMAT" +msgstr "Y. F j." -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Ezt a mezőt meg kell adni, ha %(field)s értéke nem %(value)s" - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Ugyanazok az értékek nem megengedettek." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "Az értéknek %s hatványának kell lennie." - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Írj be egy érvényes tizes számrendszerű számot." - -#: core/validators.py:349 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." -msgstr[0] "Írj be egy legalább %s jegyű érvényes tizes számrendszerű számot." -msgstr[1] "Írj be egy legalább %s jegyű érvényes tizes számrendszerű számot." - -#: core/validators.py:352 -#, python-format -msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "" -"Írj be egy érvényes tizes számrendszerű számot, legfeljebb %s tizedessel." -msgstr[1] "" -"Írj be egy érvényes tizes számrendszerű számot, legfeljebb %s tizedessel." - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "A feltöltött fájlod legalább %s bájt méretű legyen." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "A feltöltött fájlod legfeljebb %s bájt méretű legyen." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "Ennek a mezőnek a formátuma rossz." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "A mező érvénytelen." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Nem lehet semmit kinyerni %s -ból." - -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"A(z) %(url)s URL érvénytelen Content-Type fejlécet adott vissza '%" -"(contenttype)s'." - -#: core/validators.py:462 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Zárd le a nyitott %(tag)s címkét a %(line)s sorban. (A sor kezdete: \"%" -"(start)s\".)" - -#: core/validators.py:466 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Valamely szöveg a(z) %(line)s sorban nem megengedett ebben a környezetben. " -"(A sor kezdete: \"%(start)s\".)" - -#: core/validators.py:471 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"%(attr)s\" a(z) %(line)s sorban érvénytelen tulajdonság. (A sor kezdete: " -"\"%(start)s\".)" - -#: core/validators.py:476 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"<%(tag)s>\" a(z) %(line)s sorban érvénytelen címke. (A sor kezdete: \"%" -"(start)s\".)" - -#: core/validators.py:480 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"A %(line)s sorban lévő címkéről hiányzik egy vagy több kötelező tulajdonság. " -"(A sor kezdete: \"%(start)s\".)" - -#: core/validators.py:485 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"A(z) \"%(attr)s\" jellemző a %(line)s sorban érvénytelen. (A sor kezdete: \"%" -"(start)s\".)" - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s ezzel a(z) %(type)s már létezik az adott %(field)s -nél." - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s ezzel a(z) %(fieldname)s már létezik." - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "Kötelező mező." - -#: db/models/fields/__init__.py:337 -#, fuzzy -msgid "This value must be an integer." -msgstr "Az értéknek %s hatványának kell lennie." - -#: db/models/fields/__init__.py:369 -#, fuzzy -msgid "This value must be either True or False." -msgstr "Az értéknek %s hatványának kell lennie." - -#: db/models/fields/__init__.py:385 -#, fuzzy -msgid "This field cannot be null." -msgstr "A mező érvénytelen." - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Adj meg egy érvényes fájlnevet." - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Írj be érvényes %s -t." - -#: db/models/fields/related.py:579 -#, fuzzy -msgid "Separate multiple IDs with commas." -msgstr "Az ID-ket vesszőkkel válaszd el." - -#: db/models/fields/related.py:581 -#, fuzzy -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Tartsd lenyomva a \"Control\"-t (vagy Mac-en a \"Command\"-ot) több elem " -"kiválasztásához." - -#: db/models/fields/related.py:625 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "" -"Kérlek írj be érvényes %(self)s ID-t. A mostani érték %(value)r érvénytelen." -msgstr[1] "" -"Kérlek írj be érvényes %(self)s ID-ket. A mostani értékek %(value)r " -"érvénytelenek." - -#: forms/__init__.py:380 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "A szövegnek kevesebbnek kell lennie %s karakternél." -msgstr[1] "A szövegnek kevesebbnek kell lennie %s karakternél." - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "Sortörések itt nem megengedettek." - -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Válassz érvényes elemet, '%(data)s' nincs a(z) %(choices)s között." - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "A küldött fájl üres." - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Írj be egy számot -32,768 és 32,767 között." - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "Írj be egy pozitív számot." - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Írj be egy egész számot 0 and 32,767 között." - -#: template/defaultfilters.py:379 +#: template/defaultfilters.py:485 msgid "yes,no,maybe" -msgstr "igen, nem, talán" +msgstr "igen,nem,talán" -#~ msgid "Comment" -#~ msgstr "Megjegyzés" +#: template/defaultfilters.py:514 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d bájt" +msgstr[1] "%(size)d bájt" -#~ msgid "Comments" -#~ msgstr "Megjegyzések" +#: template/defaultfilters.py:516 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" -#~ msgid "String (up to 50)" -#~ msgstr "Karakterlánc (50 karakterig)" +#: template/defaultfilters.py:518 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" -#~ msgid "label" -#~ msgstr "címke" +#: template/defaultfilters.py:519 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" -#~ msgid "package" -#~ msgstr "csomag" - -#~ msgid "packages" -#~ msgstr "csomagok" diff --git a/django/conf/locale/hu/LC_MESSAGES/djangojs.mo b/django/conf/locale/hu/LC_MESSAGES/djangojs.mo index 5b8214fa31..c481ba2e19 100644 Binary files a/django/conf/locale/hu/LC_MESSAGES/djangojs.mo and b/django/conf/locale/hu/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/hu/LC_MESSAGES/djangojs.po b/django/conf/locale/hu/LC_MESSAGES/djangojs.po index 901a90bb41..186902ecdc 100644 --- a/django/conf/locale/hu/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/hu/LC_MESSAGES/djangojs.po @@ -1,20 +1,21 @@ -# translation of djangojs.po to +# translation of djangojs.po to Hungarian +# translation of djangojs.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. -# Nagy Károly , 2006. # msgid "" msgstr "" "Project-Id-Version: djangojs\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" -"PO-Revision-Date: 2006-05-10 11:59+0200\n" -"Last-Translator: Nagy Károly \n" -"Language-Team: \n" +"PO-Revision-Date: 2007-09-13 13:30+0200\n" +"Last-Translator: Szilveszter Farkas \n" +"Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format @@ -23,15 +24,15 @@ msgstr "Elérhető %s" #: contrib/admin/media/js/SelectFilter2.js:41 msgid "Choose all" -msgstr "Mindent kijelöl" +msgstr "Mindet kijelölni" #: contrib/admin/media/js/SelectFilter2.js:46 msgid "Add" -msgstr "Hozzáad" +msgstr "Hozzáadás" #: contrib/admin/media/js/SelectFilter2.js:48 msgid "Remove" -msgstr "Eltávolít" +msgstr "Eltávolítás" #: contrib/admin/media/js/SelectFilter2.js:53 #, perl-format @@ -40,7 +41,7 @@ msgstr "%s kiválasztva" #: contrib/admin/media/js/SelectFilter2.js:54 msgid "Select your choice(s) and click " -msgstr "Válaszd ki a kért elemeket és kattints" +msgstr "Válassza ki a kért elemeket és kattintson" #: contrib/admin/media/js/SelectFilter2.js:59 msgid "Clear all" @@ -51,11 +52,11 @@ msgstr "Összes törlése" msgid "" "January February March April May June July August September October November " "December" -msgstr "Január Február Március Április Május Június Július Szeptember Október November December" +msgstr "január február március április május június július augusztus szeptember október november december" #: contrib/admin/media/js/dateparse.js:27 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "Vasárnap Hétfő Kedd Szerda Csütörtök Péntek Szombat" +msgstr "vasárnap hétfő kedd szerda csütörtök péntek szombat" #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" @@ -72,7 +73,7 @@ msgstr "Óra" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 msgid "Choose a time" -msgstr "Válaszd ki az időt" +msgstr "Válassza ki az időt" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Midnight" diff --git a/django/conf/locale/ja/LC_MESSAGES/django.mo b/django/conf/locale/ja/LC_MESSAGES/django.mo index 20eb7dbcd3..647717ea06 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 56f1bf99da..593f5d8a6d 100644 --- a/django/conf/locale/ja/LC_MESSAGES/django.po +++ b/django/conf/locale/ja/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-06-26 11:33+0900\n" +"POT-Creation-Date: 2007-08-27 13:00+0900\n" "PO-Revision-Date: 2006-05-18 00:28+0900\n" "Last-Translator: makoto tsuyuki \n" "Language-Team: Japanese \n" @@ -87,102 +87,106 @@ msgid "Hebrew" msgstr "ヘブライ語" #: conf/global_settings.py:57 +msgid "Croatian" +msgstr "クロアチア語" + +#: conf/global_settings.py:58 msgid "Icelandic" msgstr "アイスランド語" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Italian" msgstr "イタリア語" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Japanese" msgstr "日本語" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Korean" msgstr "韓国語" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Kannada" msgstr "カンナダ語" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 msgid "Latvian" msgstr "ラトビア語" -#: conf/global_settings.py:63 +#: conf/global_settings.py:64 msgid "Macedonian" msgstr "マケドニア語" -#: conf/global_settings.py:64 +#: conf/global_settings.py:65 msgid "Dutch" msgstr "オランダ語" -#: conf/global_settings.py:65 +#: conf/global_settings.py:66 msgid "Norwegian" msgstr "ノルウェー語" -#: conf/global_settings.py:66 +#: conf/global_settings.py:67 msgid "Polish" msgstr "ポーランド語" -#: conf/global_settings.py:67 +#: conf/global_settings.py:68 msgid "Portugese" msgstr "ポルトガル語" -#: conf/global_settings.py:68 +#: conf/global_settings.py:69 msgid "Brazilian" msgstr "ブラジル語" -#: conf/global_settings.py:69 +#: conf/global_settings.py:70 msgid "Romanian" msgstr "ルーマニア語" -#: conf/global_settings.py:70 +#: conf/global_settings.py:71 msgid "Russian" msgstr "ロシア語" -#: conf/global_settings.py:71 +#: conf/global_settings.py:72 msgid "Slovak" msgstr "スロバキア語" -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Slovenian" msgstr "スロヴェニア語" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Serbian" msgstr "セルビア語" -#: conf/global_settings.py:74 +#: conf/global_settings.py:75 msgid "Swedish" msgstr "スウェーデン語" -#: conf/global_settings.py:75 +#: conf/global_settings.py:76 msgid "Tamil" msgstr "タミル語" -#: conf/global_settings.py:76 +#: conf/global_settings.py:77 msgid "Telugu" msgstr "テルグ語" -#: conf/global_settings.py:77 +#: conf/global_settings.py:78 msgid "Turkish" msgstr "トルコ語" -#: conf/global_settings.py:78 +#: conf/global_settings.py:79 msgid "Ukrainian" msgstr "ウクライナ語" -#: conf/global_settings.py:79 +#: conf/global_settings.py:80 msgid "Simplified Chinese" msgstr "簡体字中国語" -#: conf/global_settings.py:80 +#: conf/global_settings.py:81 msgid "Traditional Chinese" msgstr "繁体字中国語" -#: contrib/admin/filterspecs.py:40 +#: contrib/admin/filterspecs.py:42 #, python-format msgid "" "

                                  By %s:

                                  \n" @@ -191,71 +195,71 @@ msgstr "" "

                                  %s で絞り込む

                                  \n" "
                                    \n" -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 msgid "All" msgstr "全て" -#: contrib/admin/filterspecs.py:109 +#: contrib/admin/filterspecs.py:111 msgid "Any date" msgstr "いつでも" -#: contrib/admin/filterspecs.py:110 +#: contrib/admin/filterspecs.py:112 msgid "Today" msgstr "今日" -#: contrib/admin/filterspecs.py:113 +#: contrib/admin/filterspecs.py:115 msgid "Past 7 days" msgstr "過去 7 日間" -#: contrib/admin/filterspecs.py:115 +#: contrib/admin/filterspecs.py:117 msgid "This month" msgstr "今月" -#: contrib/admin/filterspecs.py:117 +#: contrib/admin/filterspecs.py:119 msgid "This year" msgstr "今年" -#: contrib/admin/filterspecs.py:143 newforms/widgets.py:181 -#: oldforms/__init__.py:577 +#: contrib/admin/filterspecs.py:145 newforms/widgets.py:188 +#: oldforms/__init__.py:591 msgid "Yes" msgstr "はい" -#: contrib/admin/filterspecs.py:143 newforms/widgets.py:181 -#: oldforms/__init__.py:577 +#: contrib/admin/filterspecs.py:145 newforms/widgets.py:188 +#: oldforms/__init__.py:591 msgid "No" msgstr "いいえ" -#: contrib/admin/filterspecs.py:150 newforms/widgets.py:181 -#: oldforms/__init__.py:577 +#: contrib/admin/filterspecs.py:152 newforms/widgets.py:188 +#: oldforms/__init__.py:591 msgid "Unknown" msgstr "不明" -#: contrib/admin/models.py:16 +#: contrib/admin/models.py:17 msgid "action time" msgstr "操作時刻" -#: contrib/admin/models.py:19 +#: contrib/admin/models.py:20 msgid "object id" msgstr "オブジェクト ID" -#: contrib/admin/models.py:20 +#: contrib/admin/models.py:21 msgid "object repr" msgstr "オブジェクトの文字列表現" -#: contrib/admin/models.py:21 +#: contrib/admin/models.py:22 msgid "action flag" msgstr "操作種別" -#: contrib/admin/models.py:22 +#: contrib/admin/models.py:23 msgid "change message" msgstr "変更メッセージ" -#: contrib/admin/models.py:25 +#: contrib/admin/models.py:26 msgid "log entry" msgstr "ログエントリ" -#: contrib/admin/models.py:26 +#: contrib/admin/models.py:27 msgid "log entries" msgstr "ログエントリ" @@ -792,29 +796,29 @@ msgstr "現在:" msgid "Change:" msgstr "変更:" -#: contrib/admin/templatetags/admin_list.py:249 +#: contrib/admin/templatetags/admin_list.py:254 msgid "All dates" msgstr "いつでも" -#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:262 +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "%(name)s \"%(obj)s\" を追加しました。" -#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:266 -#: contrib/admin/views/main.py:352 +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 msgid "You may edit it again below." msgstr "続けて編集できます。" -#: contrib/admin/views/auth.py:30 +#: contrib/admin/views/auth.py:31 msgid "Add user" msgstr "ユーザを追加" -#: contrib/admin/views/auth.py:57 +#: contrib/admin/views/auth.py:58 msgid "Password changed successfully." msgstr "パスワードを変更しました" -#: contrib/admin/views/auth.py:64 +#: contrib/admin/views/auth.py:65 #, python-format msgid "Change password: %s" msgstr "パスワードの変更: %s" @@ -851,235 +855,236 @@ msgstr "ユーザ名には '@' を含められません。" msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "メールアドレスはユーザ名ではありません。 '%s' を試してみてください。" -#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 -#: contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 msgid "tag:" msgstr "タグ" -#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 -#: contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 msgid "filter:" msgstr "フィルタ" -#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 -#: contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 msgid "view:" msgstr "ビュー" -#: contrib/admin/views/doc.py:164 +#: contrib/admin/views/doc.py:165 #, python-format msgid "App %r not found" msgstr "アプリケーション %r が見つかりません" -#: contrib/admin/views/doc.py:171 +#: contrib/admin/views/doc.py:172 #, python-format msgid "Model %(name)r not found in app %(label)r" msgstr "モデル %(name)r が %(label)r アプリケーションに見つかりません" -#: contrib/admin/views/doc.py:183 +#: contrib/admin/views/doc.py:184 #, python-format msgid "the related `%(label)s.%(type)s` object" msgstr "`%(label)s.%(type)s` (関連オブジェクト)" -#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 -#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 msgid "model:" msgstr "モデル :" -#: contrib/admin/views/doc.py:214 +#: contrib/admin/views/doc.py:215 #, python-format msgid "related `%(label)s.%(name)s` objects" msgstr "`%(label)s.%(name)s` (関連オブジェクト)" -#: contrib/admin/views/doc.py:219 +#: contrib/admin/views/doc.py:220 #, python-format msgid "all %s" msgstr "全ての %s" -#: contrib/admin/views/doc.py:224 +#: contrib/admin/views/doc.py:225 #, python-format msgid "number of %s" msgstr "%s の数" -#: contrib/admin/views/doc.py:229 +#: contrib/admin/views/doc.py:230 #, python-format msgid "Fields on %s objects" msgstr "%s のフィールド" -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302 -#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310 -#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313 +#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 msgid "Integer" msgstr "整数" -#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:293 msgid "Boolean (Either True or False)" msgstr "ブール値 (真: True または偽: False)" -#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 #, python-format -msgid "String (up to %(maxlength)s)" -msgstr "文字列 ( %(maxlength)s 字まで )" +msgid "String (up to %(max_length)s)" +msgstr "文字列 ( %(max_length)s 字まで )" -#: contrib/admin/views/doc.py:294 +#: contrib/admin/views/doc.py:295 msgid "Comma-separated integers" msgstr "カンマ区切りの整数" -#: contrib/admin/views/doc.py:295 +#: contrib/admin/views/doc.py:296 msgid "Date (without time)" msgstr "日付" -#: contrib/admin/views/doc.py:296 +#: contrib/admin/views/doc.py:297 msgid "Date (with time)" msgstr "日時" -#: contrib/admin/views/doc.py:297 +#: contrib/admin/views/doc.py:298 msgid "Decimal number" msgstr "10 進数 (小数可)" -#: contrib/admin/views/doc.py:298 +#: contrib/admin/views/doc.py:299 msgid "E-mail address" msgstr "メールアドレス" -#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300 -#: contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 msgid "File path" msgstr "ファイルの場所" -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:302 msgid "Floating point number" msgstr "浮動小数点" -#: contrib/admin/views/doc.py:305 contrib/comments/models.py:85 +#: contrib/admin/views/doc.py:306 contrib/comments/models.py:85 msgid "IP address" msgstr "IP アドレス" -#: contrib/admin/views/doc.py:307 +#: contrib/admin/views/doc.py:308 msgid "Boolean (Either True, False or None)" msgstr "ブール値 (真: True 、偽: False または None)" -#: contrib/admin/views/doc.py:308 +#: contrib/admin/views/doc.py:309 msgid "Relation to parent model" msgstr "親モデルへのリレーション" -#: contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 msgid "Phone number" msgstr "電話番号" -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:315 msgid "Text" msgstr "テキスト" -#: contrib/admin/views/doc.py:315 +#: contrib/admin/views/doc.py:316 msgid "Time" msgstr "時刻" -#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admin/views/doc.py:317 +#: contrib/admin/views/doc.py:318 msgid "U.S. state (two uppercase letters)" msgstr "アメリカの州 (大文字二文字で)" -#: contrib/admin/views/doc.py:318 +#: contrib/admin/views/doc.py:319 msgid "XML text" msgstr "XMLテキスト" -#: contrib/admin/views/doc.py:344 +#: contrib/admin/views/doc.py:345 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s はurlpatternオブジェクトでは無いようです" -#: contrib/admin/views/main.py:228 +#: contrib/admin/views/main.py:230 msgid "Site administration" msgstr "サイト管理" -#: contrib/admin/views/main.py:276 contrib/admin/views/main.py:361 +#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 #, python-format msgid "You may add another %s below." msgstr "続けて別の %s を追加できます。" -#: contrib/admin/views/main.py:294 +#: contrib/admin/views/main.py:296 #, python-format msgid "Add %s" msgstr "%s を追加" -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:342 #, python-format msgid "Added %s." msgstr "%s を追加しました。" -#: contrib/admin/views/main.py:340 contrib/admin/views/main.py:342 -#: contrib/admin/views/main.py:344 db/models/manipulators.py:308 +#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 core/validators.py:275 +#: db/models/manipulators.py:310 msgid "and" msgstr "と" -#: contrib/admin/views/main.py:342 +#: contrib/admin/views/main.py:344 #, python-format msgid "Changed %s." msgstr "%s を変更しました。" -#: contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 #, python-format msgid "Deleted %s." msgstr "%s を削除しました。" -#: contrib/admin/views/main.py:347 +#: contrib/admin/views/main.py:349 msgid "No fields changed." msgstr "変更はありませんでした。" -#: contrib/admin/views/main.py:350 +#: contrib/admin/views/main.py:352 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" を変更しました。" -#: contrib/admin/views/main.py:358 +#: contrib/admin/views/main.py:360 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" を追加しました。続けて編集できます。" -#: contrib/admin/views/main.py:396 +#: contrib/admin/views/main.py:398 #, python-format msgid "Change %s" msgstr "%s を変更" -#: contrib/admin/views/main.py:481 +#: contrib/admin/views/main.py:483 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "%(name)s に %(fieldname)s が一つ以上あります: %(obj)s" -#: contrib/admin/views/main.py:486 +#: contrib/admin/views/main.py:488 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "%(name)s に %(fieldname)s が一つ以上あります:" -#: contrib/admin/views/main.py:518 +#: contrib/admin/views/main.py:520 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" を削除しました。" -#: contrib/admin/views/main.py:521 +#: contrib/admin/views/main.py:523 msgid "Are you sure?" msgstr "よろしいですか?" -#: contrib/admin/views/main.py:543 +#: contrib/admin/views/main.py:545 #, python-format msgid "Change history: %s" msgstr "変更履歴: %s" -#: contrib/admin/views/main.py:577 +#: contrib/admin/views/main.py:579 #, python-format msgid "Select %s" msgstr "%s を選択" -#: contrib/admin/views/main.py:577 +#: contrib/admin/views/main.py:579 #, python-format msgid "Select %s to change" msgstr "変更する %s を選択" -#: contrib/admin/views/main.py:772 +#: contrib/admin/views/main.py:780 msgid "Database error" msgstr "データベースエラー" @@ -1117,35 +1122,35 @@ msgstr "新しいパスワード(確認用)が一致しません。" msgid "Your old password was entered incorrectly. Please enter it again." msgstr "元のパスワードが間違っています。もう一度入力してください。" -#: contrib/auth/models.py:49 contrib/auth/models.py:69 +#: contrib/auth/models.py:53 contrib/auth/models.py:73 msgid "name" msgstr "名前" -#: contrib/auth/models.py:51 +#: contrib/auth/models.py:55 msgid "codename" msgstr "コード名" -#: contrib/auth/models.py:54 +#: contrib/auth/models.py:58 msgid "permission" msgstr "パーミッション" -#: contrib/auth/models.py:55 contrib/auth/models.py:70 +#: contrib/auth/models.py:59 contrib/auth/models.py:74 msgid "permissions" msgstr "パーミッション" -#: contrib/auth/models.py:73 +#: contrib/auth/models.py:77 msgid "group" msgstr "グループ" -#: contrib/auth/models.py:74 contrib/auth/models.py:114 +#: contrib/auth/models.py:78 contrib/auth/models.py:121 msgid "groups" msgstr "グループ" -#: contrib/auth/models.py:104 +#: contrib/auth/models.py:111 msgid "username" msgstr "ユーザ名" -#: contrib/auth/models.py:104 +#: contrib/auth/models.py:111 msgid "" "Required. 30 characters or fewer. Alphanumeric characters only (letters, " "digits and underscores)." @@ -1153,23 +1158,23 @@ msgstr "" "この項目は必須です。半角アルファベット、半角数字、半角アンダーバーで30文字以" "下にしてください。" -#: contrib/auth/models.py:105 +#: contrib/auth/models.py:112 msgid "first name" msgstr "名" -#: contrib/auth/models.py:106 +#: contrib/auth/models.py:113 msgid "last name" msgstr "姓" -#: contrib/auth/models.py:107 +#: contrib/auth/models.py:114 msgid "e-mail address" msgstr "メールアドレス" -#: contrib/auth/models.py:108 +#: contrib/auth/models.py:115 msgid "password" msgstr "パスワード" -#: contrib/auth/models.py:108 +#: contrib/auth/models.py:115 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1177,43 +1182,43 @@ msgstr "" "'[algo]$[salt]$[hexdigest]'形式か、パスワード変更フォー" "ムを使ってください。" -#: contrib/auth/models.py:109 +#: contrib/auth/models.py:116 msgid "staff status" msgstr "スタッフ権限" -#: contrib/auth/models.py:109 +#: contrib/auth/models.py:116 msgid "Designates whether the user can log into this admin site." msgstr "ユーザが管理サイトにログイン可能かどうかを示します。" -#: contrib/auth/models.py:110 +#: contrib/auth/models.py:117 msgid "active" msgstr "有効" -#: contrib/auth/models.py:110 +#: contrib/auth/models.py:117 msgid "" "Designates whether this user can log into the Django admin. Unselect this " "instead of deleting accounts." msgstr "ユーザが管理サイトにログイン可能かどうかを示します。" -#: contrib/auth/models.py:111 +#: contrib/auth/models.py:118 msgid "superuser status" msgstr "スーパーユーザ権限" -#: contrib/auth/models.py:111 +#: contrib/auth/models.py:118 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "全ての権限を持っているとみなされます。" -#: contrib/auth/models.py:112 +#: contrib/auth/models.py:119 msgid "last login" msgstr "最終ログイン" -#: contrib/auth/models.py:113 +#: contrib/auth/models.py:120 msgid "date joined" msgstr "登録日" -#: contrib/auth/models.py:115 +#: contrib/auth/models.py:122 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1221,47 +1226,43 @@ msgstr "" "手動で付与したパーミッションに加え、所属しているグループに付与された全ての" "パーミッションを獲得します。" -#: contrib/auth/models.py:116 +#: contrib/auth/models.py:123 msgid "user permissions" msgstr "ユーザパーミッション" -#: contrib/auth/models.py:120 +#: contrib/auth/models.py:127 msgid "user" msgstr "ユーザ" -#: contrib/auth/models.py:121 +#: contrib/auth/models.py:128 msgid "users" msgstr "ユーザ" -#: contrib/auth/models.py:127 +#: contrib/auth/models.py:134 msgid "Personal info" msgstr "個人情報" -#: contrib/auth/models.py:128 +#: contrib/auth/models.py:135 msgid "Permissions" msgstr "パーミッション" -#: contrib/auth/models.py:129 +#: contrib/auth/models.py:136 msgid "Important dates" msgstr "重要な日程" -#: contrib/auth/models.py:130 +#: contrib/auth/models.py:137 msgid "Groups" msgstr "グループ" -#: contrib/auth/models.py:272 +#: contrib/auth/models.py:288 msgid "message" msgstr "メッセージ" -#: contrib/auth/models.py:285 -msgid "AnonymousUser" -msgstr "非認証ユーザ" - -#: contrib/auth/views.py:40 +#: contrib/auth/views.py:47 msgid "Logged out" msgstr "ログアウト" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 +#: contrib/comments/models.py:67 contrib/comments/models.py:169 msgid "object ID" msgstr "オブジェクト ID" @@ -1270,7 +1271,7 @@ msgid "headline" msgstr "新着情報" #: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 +#: contrib/comments/models.py:170 msgid "comment" msgstr "コメント" @@ -1310,11 +1311,11 @@ msgstr "レーティング #8" msgid "is valid rating" msgstr "は有効なレーティングです" -#: contrib/comments/models.py:83 contrib/comments/models.py:169 +#: contrib/comments/models.py:83 contrib/comments/models.py:172 msgid "date/time submitted" msgstr "コメント投稿日時" -#: contrib/comments/models.py:84 contrib/comments/models.py:170 +#: contrib/comments/models.py:84 contrib/comments/models.py:173 msgid "is public" msgstr "は公開中です" @@ -1334,11 +1335,11 @@ msgstr "" msgid "comments" msgstr "コメント" -#: contrib/comments/models.py:131 contrib/comments/models.py:207 +#: contrib/comments/models.py:134 contrib/comments/models.py:213 msgid "Content object" msgstr "コンテンツオブジェクト" -#: contrib/comments/models.py:159 +#: contrib/comments/models.py:162 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1353,48 +1354,48 @@ msgstr "" "\n" "http://%(domain)s%(url)s" -#: contrib/comments/models.py:168 +#: contrib/comments/models.py:171 msgid "person's name" msgstr "名前" -#: contrib/comments/models.py:171 +#: contrib/comments/models.py:174 msgid "ip address" msgstr "IP アドレス" -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:176 msgid "approved by staff" msgstr "スタッフの承認済み" -#: contrib/comments/models.py:176 +#: contrib/comments/models.py:179 msgid "free comment" msgstr "フリーコメント" -#: contrib/comments/models.py:177 +#: contrib/comments/models.py:180 msgid "free comments" msgstr "フリーコメント" -#: contrib/comments/models.py:233 +#: contrib/comments/models.py:239 msgid "score" msgstr "スコア" -#: contrib/comments/models.py:234 +#: contrib/comments/models.py:240 msgid "score date" msgstr "スコアされた日" -#: contrib/comments/models.py:237 +#: contrib/comments/models.py:243 msgid "karma score" msgstr "カルマスコア" -#: contrib/comments/models.py:238 +#: contrib/comments/models.py:244 msgid "karma scores" msgstr "カルマスコア" -#: contrib/comments/models.py:242 +#: contrib/comments/models.py:248 #, python-format msgid "%(score)d rating by %(user)s" msgstr "%(user)s により %(score)d 点のレーティング" -#: contrib/comments/models.py:258 +#: contrib/comments/models.py:264 #, python-format msgid "" "This comment was flagged by %(user)s:\n" @@ -1405,36 +1406,36 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/models.py:265 +#: contrib/comments/models.py:271 msgid "flag date" msgstr "フラグ日" -#: contrib/comments/models.py:268 +#: contrib/comments/models.py:274 msgid "user flag" msgstr "ユーザフラグ" -#: contrib/comments/models.py:269 +#: contrib/comments/models.py:275 msgid "user flags" msgstr "ユーザフラグ" -#: contrib/comments/models.py:273 +#: contrib/comments/models.py:279 #, python-format msgid "Flag by %r" msgstr "%r によるフラグ" -#: contrib/comments/models.py:278 +#: contrib/comments/models.py:284 msgid "deletion date" msgstr "削除日" -#: contrib/comments/models.py:280 +#: contrib/comments/models.py:286 msgid "moderator deletion" msgstr "モデレータ削除" -#: contrib/comments/models.py:281 +#: contrib/comments/models.py:287 msgid "moderator deletions" msgstr "モデレータ削除" -#: contrib/comments/models.py:285 +#: contrib/comments/models.py:291 #, python-format msgid "Moderator deletion by %r" msgstr "%r によるモデレータ削除" @@ -1475,13 +1476,13 @@ msgstr "コメントをプレビュー" msgid "Your name:" msgstr "ユーザ名:" -#: contrib/comments/views/comments.py:27 +#: contrib/comments/views/comments.py:28 msgid "" "This rating is required because you've entered at least one other rating." msgstr "" "他のレーティングを入力した場合は、このレーティングは必ず入力してください。" -#: contrib/comments/views/comments.py:111 +#: contrib/comments/views/comments.py:112 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -1496,7 +1497,7 @@ msgid_plural "" msgstr[0] "このコメントを投稿したユーザのコメント数は %(count)s 未満です。" msgstr[1] "このコメントを投稿したユーザのコメント数は %(count)s 未満です。" -#: contrib/comments/views/comments.py:116 +#: contrib/comments/views/comments.py:117 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -1507,23 +1508,23 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 +#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:281 msgid "Only POSTs are allowed" msgstr "POST メソッドのみ有効です。" -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 +#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:285 msgid "One or more of the required fields wasn't submitted" msgstr "必須項目がいくつか入力されていません。" -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 +#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:287 msgid "Somebody tampered with the comment form (security violation)" msgstr "だれかがコメントフォームを改竄しています (セキュリティ侵害です)" -#: contrib/comments/views/comments.py:206 -#: contrib/comments/views/comments.py:292 +#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:293 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" @@ -1531,32 +1532,32 @@ msgstr "" "コメントフォームの 'target' パラメータが不正です。 -- オブジェクト IDが不正な" "値でした" -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "コメントの「プレビュー」「投稿」種別が不明です。" -#: contrib/comments/views/karma.py:19 +#: contrib/comments/views/karma.py:20 msgid "Anonymous users cannot vote" msgstr "非ログインユーザは投票できません。" -#: contrib/comments/views/karma.py:23 +#: contrib/comments/views/karma.py:24 msgid "Invalid comment ID" msgstr "コメント ID が不正です" -#: contrib/comments/views/karma.py:25 +#: contrib/comments/views/karma.py:26 msgid "No voting for yourself" msgstr "自分には投票できません。" -#: contrib/contenttypes/models.py:36 +#: contrib/contenttypes/models.py:37 msgid "python model class name" msgstr "Python モデルクラス名" -#: contrib/contenttypes/models.py:39 +#: contrib/contenttypes/models.py:40 msgid "content type" msgstr "コンテンツタイプ" -#: contrib/contenttypes/models.py:40 +#: contrib/contenttypes/models.py:41 msgid "content types" msgstr "コンテンツタイプ" @@ -1606,79 +1607,91 @@ msgstr "フラットページ" msgid "flat pages" msgstr "フラットページ" -#: contrib/humanize/templatetags/humanize.py:17 +#: contrib/humanize/templatetags/humanize.py:20 msgid "th" msgstr "番目" -#: contrib/humanize/templatetags/humanize.py:17 +#: contrib/humanize/templatetags/humanize.py:20 msgid "st" msgstr "番目" -#: contrib/humanize/templatetags/humanize.py:17 +#: contrib/humanize/templatetags/humanize.py:20 msgid "nd" msgstr "番目" -#: contrib/humanize/templatetags/humanize.py:17 +#: contrib/humanize/templatetags/humanize.py:20 msgid "rd" msgstr "番目" -#: contrib/humanize/templatetags/humanize.py:47 +#: contrib/humanize/templatetags/humanize.py:50 #, python-format msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f 百万" msgstr[1] "%(value).1f 百万" -#: contrib/humanize/templatetags/humanize.py:50 +#: contrib/humanize/templatetags/humanize.py:53 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value).1f 十億" msgstr[1] "%(value).1f 十億" -#: contrib/humanize/templatetags/humanize.py:53 +#: contrib/humanize/templatetags/humanize.py:56 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value).1f 兆" msgstr[1] "%(value).1f 兆" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "one" msgstr "1" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "two" msgstr "2" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "three" msgstr "3" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "four" msgstr "4" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "five" msgstr "5" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "six" msgstr "6" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "seven" msgstr "7" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "eight" msgstr "8" -#: contrib/humanize/templatetags/humanize.py:68 +#: contrib/humanize/templatetags/humanize.py:71 msgid "nine" msgstr "9" +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "今日" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "明日" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "昨日" + #: contrib/localflavor/au/forms.py:18 msgid "Enter a 4 digit post code." msgstr "4桁でポストコードを入力してください。" @@ -1815,7 +1828,7 @@ msgstr "Zug" msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:15 +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14 msgid "Enter a zip code in the format XXXX." msgstr "XXXXの形式でZipコードを入力してください。" @@ -1823,13 +1836,15 @@ msgstr "XXXXの形式でZipコードを入力してください。" msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." -msgstr "スイス アイデンティティかパスポート番号を X1234567<0 か 1234567890 の形式で入力して下さい。" +msgstr "" +"スイス アイデンティティかパスポート番号を X1234567<0 か 1234567890 の形式で入" +"力して下さい。" -#: contrib/localflavor/cl/forms.py:21 +#: contrib/localflavor/cl/forms.py:32 msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." msgstr "XX.XXX.XXX-Xの形式でチリ納税者番号を入力してください。" -#: contrib/localflavor/cl/forms.py:26 +#: contrib/localflavor/cl/forms.py:37 msgid "Enter valid a Chilean RUT" msgstr "正しいチリ納税者番号を入力してください。" @@ -1906,18 +1921,23 @@ msgstr "XXXXXの形式でZipコードを入力してください。" msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." -msgstr "XXXXXXXXXXX-XXXXXXX-XXXXXXX-X の形式でドイツIDカード番号を入力して下さい。" +msgstr "" +"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X の形式でドイツIDカード番号を入力して下さい。" #: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 msgid "Enter a valid Finnish social security number." msgstr "フィンランド社会保証番号を正しく入力してください。" -#: contrib/localflavor/is_/forms.py:16 +#: contrib/localflavor/in_/forms.py:16 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "XXXXXXXの形式でZipコードを入力してください。" + +#: contrib/localflavor/is_/forms.py:17 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "XXXXXか、XXXXX-XXXXの形式でアイスランド納税者番号を入力してください。" -#: contrib/localflavor/is_/forms.py:30 +#: contrib/localflavor/is_/forms.py:31 msgid "The Icelandic identification number is not valid." msgstr "アイスランド納税者番号を正しく入力して下さい。" @@ -2125,10 +2145,443 @@ msgstr "鹿児島県" msgid "Okinawa" msgstr "沖縄県" -#: contrib/localflavor/no/forms.py:36 +#: contrib/localflavor/no/forms.py:35 msgid "Enter a valid Norwegian social security number." msgstr "ノルウェー社会保障番号を正しく入力してください。" +#: contrib/localflavor/pl/forms.py:53 +msgid "National Identification Number consists of 11 digits." +msgstr "国民識別番号は11文字で入力して下さい。" + +#: contrib/localflavor/pl/forms.py:59 +msgid "Wrong checksum for the National Identification Number." +msgstr "国民識別番号のチェックサムがあいません。" + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "XXXXXか、XXXXX-XXXXの形式で納税者欄(NIP)を入力してください。" + +#: contrib/localflavor/pl/forms.py:82 +msgid "Enter a postal code in the format XX-XXX." +msgstr "XX-XXXの形式で郵便番号を入力してください。" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Lower Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kuyavia-Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Lodz" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Lesser Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masovia" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Subcarpatia" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlasie" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomerania" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Silesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Swietokrzyskie" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuria" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Greater Poland" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "West Pomerania" + +#: contrib/localflavor/sk/forms.py:32 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "XXXXXか、XXX XXの形式で郵便番号を入力してください。" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajska Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kezmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komarno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kosice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kosice II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kosice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kosice IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavska Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Roznava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ruzomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spisska Nova Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sala" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencin" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zilina" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Banska Bystrica region" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Bratislava region" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Kosice region" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nitra region" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Presov region" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trencin region" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava region" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Zilina region" + #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" @@ -2191,108 +2644,109 @@ msgstr "セッション" msgid "sessions" msgstr "セッション" -#: contrib/sites/models.py:10 +#: contrib/sites/models.py:15 msgid "domain name" msgstr "ドメイン名" -#: contrib/sites/models.py:11 +#: contrib/sites/models.py:16 msgid "display name" msgstr "表示名" -#: contrib/sites/models.py:15 +#: contrib/sites/models.py:20 msgid "site" msgstr "サイト" -#: contrib/sites/models.py:16 +#: contrib/sites/models.py:21 msgid "sites" msgstr "サイト" -#: core/validators.py:65 +#: core/validators.py:71 msgid "This value must contain only letters, numbers and underscores." msgstr "半角の英数字およびアンダースコア以外は使用できません。" -#: core/validators.py:69 +#: core/validators.py:75 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" "半角の英数字、アンダースコア、ダッシュ、スラッシュ以外は使用できません。" -#: core/validators.py:73 +#: core/validators.py:79 msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "半角の英数字、アンダースコア、ハイフン以外は使用できません。" -#: core/validators.py:77 +#: core/validators.py:83 msgid "Uppercase letters are not allowed here." msgstr "大文字はここでは使用できません。" -#: core/validators.py:81 +#: core/validators.py:87 msgid "Lowercase letters are not allowed here." msgstr "小文字はここでは使用できません。" -#: core/validators.py:88 +#: core/validators.py:94 msgid "Enter only digits separated by commas." msgstr "カンマ区切りの数字だけを入力してください。" -#: core/validators.py:100 +#: core/validators.py:106 msgid "Enter valid e-mail addresses separated by commas." msgstr "カンマ区切りの有効なメールアドレスを入力してください。" -#: core/validators.py:104 +#: core/validators.py:110 msgid "Please enter a valid IP address." msgstr "有効な IP アドレスを入力してください。" -#: core/validators.py:108 +#: core/validators.py:114 msgid "Empty values are not allowed here." msgstr "入力は必須です。" -#: core/validators.py:112 +#: core/validators.py:118 msgid "Non-numeric characters aren't allowed here." msgstr "数値以外は使用できません。" -#: core/validators.py:116 +#: core/validators.py:122 msgid "This value can't be comprised solely of digits." msgstr "数値だけの値にはできません。" -#: core/validators.py:121 newforms/fields.py:135 +#: core/validators.py:127 newforms/fields.py:142 msgid "Enter a whole number." msgstr "整数を入力してください。" -#: core/validators.py:125 +#: core/validators.py:131 msgid "Only alphabetical characters are allowed here." msgstr "半角アルファベット以外使用できません。" -#: core/validators.py:140 +#: core/validators.py:146 msgid "Year must be 1900 or later." msgstr "1900年以降を指定してください。" -#: core/validators.py:144 +#: core/validators.py:150 #, python-format msgid "Invalid date: %s" msgstr "無効な日付: %s" -#: core/validators.py:149 db/models/fields/__init__.py:468 +#: core/validators.py:155 db/models/fields/__init__.py:501 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "YYYY-MM-DD形式で日付を入力してください。" -#: core/validators.py:154 +#: core/validators.py:160 msgid "Enter a valid time in HH:MM format." msgstr "HH:MM形式で時刻を入力してください。" -#: core/validators.py:158 db/models/fields/__init__.py:537 +#: core/validators.py:164 db/models/fields/__init__.py:570 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "YYYY-MM-DD HH:MM形式で日時を入力してください。" -#: core/validators.py:163 newforms/fields.py:339 +#: core/validators.py:169 newforms/fields.py:336 msgid "Enter a valid e-mail address." msgstr "有効なメールアドレスを入力してください。" -#: core/validators.py:175 core/validators.py:453 oldforms/__init__.py:672 +#: core/validators.py:181 core/validators.py:461 newforms/fields.py:376 +#: oldforms/__init__.py:686 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "ファイルが取得できませんでした。formのencoding typeを確認してください。" -#: core/validators.py:179 +#: core/validators.py:185 newforms/fields.py:397 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -2300,26 +2754,26 @@ msgstr "" "画像をアップロードしてください。アップロードした画像は画像でないか、または壊" "れています。" -#: core/validators.py:186 +#: core/validators.py:192 #, python-format msgid "The URL %s does not point to a valid image." msgstr "URL ( %s ) は画像ではありません。" -#: core/validators.py:190 +#: core/validators.py:196 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "電話番号は XXX-XXX-XXXX 形式で入力してください。\"%s\" は無効です。" -#: core/validators.py:198 +#: core/validators.py:204 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "URL ( %s ) は QuickTime ビデオではありません。" -#: core/validators.py:202 +#: core/validators.py:208 msgid "A valid URL is required." msgstr "正しい URL を入力してください。" -#: core/validators.py:216 +#: core/validators.py:222 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -2328,86 +2782,86 @@ msgstr "" "有効な HTML を入力してください。エラー:\n" "%s" -#: core/validators.py:223 +#: core/validators.py:229 #, python-format msgid "Badly formed XML: %s" msgstr "不正な XML です: %s" -#: core/validators.py:240 +#: core/validators.py:246 #, python-format msgid "Invalid URL: %s" msgstr "無効なURL: %s" -#: core/validators.py:245 core/validators.py:247 +#: core/validators.py:251 core/validators.py:253 #, python-format msgid "The URL %s is a broken link." msgstr "URL ( %s ) はリンクが壊れています。" -#: core/validators.py:253 +#: core/validators.py:259 msgid "Enter a valid U.S. state abbreviation." msgstr "正しい米州略称を入力してください。" -#: core/validators.py:267 +#: core/validators.py:273 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "言葉使いに気を付けて! %s という言葉は使えません。" msgstr[1] "言葉使いに気を付けて! %s という言葉は使えません。" -#: core/validators.py:274 +#: core/validators.py:280 #, python-format msgid "This field must match the '%s' field." msgstr "このフィールドは '%s' フィールドと一致せねばなりません。" -#: core/validators.py:293 +#: core/validators.py:299 msgid "Please enter something for at least one field." msgstr "少なくとも一つのフィールドに何か入力してください。" -#: core/validators.py:302 core/validators.py:313 +#: core/validators.py:308 core/validators.py:319 msgid "Please enter both fields or leave them both empty." msgstr "両方のフィールドに入力するか、両方とも未入力にしてください。" -#: core/validators.py:321 +#: core/validators.py:327 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "" "%(field)s を %(value)s にするのなら、このフィールドに必ず入力してください。" -#: core/validators.py:334 +#: core/validators.py:340 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "" "%(field)s を %(value)s にしないのなら、このフィールドに必ず入力してください。" -#: core/validators.py:353 +#: core/validators.py:359 msgid "Duplicate values are not allowed." msgstr "重複する値は認められません。" -#: core/validators.py:368 +#: core/validators.py:374 #, python-format msgid "This value must be between %(lower)s and %(upper)s." msgstr "この値は %(lower)s から %(upper)s の間でなければなりません。" -#: core/validators.py:370 +#: core/validators.py:376 #, python-format msgid "This value must be at least %s." msgstr "この値は %s 以上でなければなりません。" -#: core/validators.py:372 +#: core/validators.py:378 #, python-format msgid "This value must be no more than %s." msgstr "この値は %s より小さくなければなりません。" -#: core/validators.py:408 +#: core/validators.py:414 #, python-format msgid "This value must be a power of %s." msgstr "この値は %s の累乗でなければなりません。" -#: core/validators.py:417 +#: core/validators.py:424 msgid "Please enter a valid decimal number." msgstr "有効な 10 進数を入力してください。" -#: core/validators.py:423 +#: core/validators.py:431 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -2415,7 +2869,7 @@ msgid_plural "" msgstr[0] "全体で %s 文字以下の数字を入力してください。" msgstr[1] "全体で %s 文字以下の数字を入力してください。" -#: core/validators.py:426 +#: core/validators.py:434 #, python-format msgid "" "Please enter a valid decimal number with a whole part of at most %s digit." @@ -2424,7 +2878,7 @@ msgid_plural "" msgstr[0] "整数部は %s 文字以下の数字を入力してください。" msgstr[1] "整数部は %s 文字以下の数字を入力してください。" -#: core/validators.py:429 +#: core/validators.py:437 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -2432,41 +2886,41 @@ msgid_plural "" msgstr[0] "小数部は %s 文字以下の数字を入力してください。" msgstr[1] "小数部は %s 文字以下の数字を入力してください。" -#: core/validators.py:437 +#: core/validators.py:445 msgid "Please enter a valid floating point number." msgstr "有効な 小数 を入力してください。" -#: core/validators.py:446 +#: core/validators.py:454 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "アップロードするファイルの大きさは %s バイト以上にしてください。" -#: core/validators.py:447 +#: core/validators.py:455 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "アップロードするファイルの大きさは %s 最大バイトまでです。" -#: core/validators.py:464 +#: core/validators.py:472 msgid "The format for this field is wrong." msgstr "フィールドの形式が正しくありません。" -#: core/validators.py:479 +#: core/validators.py:487 msgid "This field is invalid." msgstr "このフィールドは無効です。" -#: core/validators.py:515 +#: core/validators.py:523 #, python-format msgid "Could not retrieve anything from %s." msgstr "%s から何も検索できませんでした。" -#: core/validators.py:518 +#: core/validators.py:526 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" "URL %(url)s は無効なコンテンツタイプヘッダ '%(contenttype)s' を返しました。" -#: core/validators.py:551 +#: core/validators.py:559 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -2475,7 +2929,7 @@ msgstr "" "%(line)s 行目から始まる %(tag)s タグを閉じてください (\"%(start)s\" で始まる" "行です)。" -#: core/validators.py:555 +#: core/validators.py:563 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -2484,7 +2938,7 @@ msgstr "" "%(line)s 行目から始まるテキストはこのコンテキストでは使えません。 (\"%(start)" "s\" で始まる行です)。" -#: core/validators.py:560 +#: core/validators.py:568 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -2493,7 +2947,7 @@ msgstr "" "%(line)s 行目の \"%(attr)s\" は無効なアトリビュートです (\"%(start)s\" で始ま" "る行です)。" -#: core/validators.py:565 +#: core/validators.py:573 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -2502,7 +2956,7 @@ msgstr "" "%(line)s 行目の \"<%(tag)s>\" は無効なタグです( \"%(start)s\" で始まる行で" "す)。" -#: core/validators.py:569 +#: core/validators.py:577 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -2511,7 +2965,7 @@ msgstr "" "%(line)s 行目のタグは必須アトリビュートが未入力です( \"%(start)s\" で始まる行" "です)。" -#: core/validators.py:574 +#: core/validators.py:582 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " @@ -2520,65 +2974,65 @@ msgstr "" "%(line)s 行目の \"%(attr)s\" アトリビュートの値が正しくありません (\"%(start)" "s\" で始まる行です) 。" -#: db/models/manipulators.py:307 +#: db/models/manipulators.py:309 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "" "%(field)s に入力されたものは、この %(type)s の %(object)s に既に存在します。" -#: db/models/fields/__init__.py:46 +#: db/models/fields/__init__.py:49 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(fieldname)s に %(optname)s は既に存在します。" -#: db/models/fields/__init__.py:126 db/models/fields/__init__.py:283 -#: db/models/fields/__init__.py:680 db/models/fields/__init__.py:691 -#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:522 -#: newforms/fields.py:533 newforms/models.py:185 oldforms/__init__.py:357 +#: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313 +#: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732 +#: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566 +#: newforms/fields.py:577 newforms/models.py:193 oldforms/__init__.py:373 msgid "This field is required." msgstr "このフィールドは必須です。" -#: db/models/fields/__init__.py:378 +#: db/models/fields/__init__.py:411 msgid "This value must be an integer." msgstr "値は整数でなければなりません。" -#: db/models/fields/__init__.py:413 +#: db/models/fields/__init__.py:446 msgid "This value must be either True or False." msgstr "値は真: True または偽: False でなければなりません。" -#: db/models/fields/__init__.py:434 +#: db/models/fields/__init__.py:467 msgid "This field cannot be null." msgstr "このフィールドには NULL を指定できません。" -#: db/models/fields/__init__.py:597 +#: db/models/fields/__init__.py:631 msgid "This value must be a decimal number." msgstr "値は整数でなければなりません。" -#: db/models/fields/__init__.py:700 +#: db/models/fields/__init__.py:741 msgid "Enter a valid filename." msgstr "正しいファイル名を入力してください。" -#: db/models/fields/__init__.py:824 +#: db/models/fields/__init__.py:883 msgid "This value must be either None, True or False." msgstr "値は、空: None、真: True または偽: False でなければなりません。" -#: db/models/fields/related.py:54 +#: db/models/fields/related.py:55 #, python-format msgid "Please enter a valid %s." msgstr "正しい %s を入力してください。" -#: db/models/fields/related.py:640 +#: db/models/fields/related.py:658 msgid "Separate multiple IDs with commas." msgstr "複数の ID はカンマで区切ってください。" -#: db/models/fields/related.py:642 +#: db/models/fields/related.py:660 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "複数選択するときには Control キーを押したまま選択してください。Mac は " "Command キーを使ってください" -#: db/models/fields/related.py:689 +#: db/models/fields/related.py:707 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -2586,161 +3040,165 @@ msgid_plural "" msgstr[0] "正しい %(self)s IDを入力してください。 %(value)r は無効です。" msgstr[1] "正しい %(self)s IDを入力してください。 %(value)r は無効です。" -#: newforms/fields.py:110 newforms/fields.py:324 +#: newforms/fields.py:116 #, python-format -msgid "Ensure this value has at most %d characters." -msgstr "%d 字以下で入力してください。" +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "%(max)d 字以下で入力してください( %(length)d 文字入力されました)。" -#: newforms/fields.py:112 newforms/fields.py:326 +#: newforms/fields.py:118 #, python-format -msgid "Ensure this value has at least %d characters." -msgstr "%d 字以上で入力してください。" +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "%(min)d 字以上で入力してください。( %(length)d 文字入力されました)。" -#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192 +#: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "この値は %s 以下でなければなりません。" -#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194 +#: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "この値は %s 以上でなければなりません。" -#: newforms/fields.py:158 newforms/fields.py:186 +#: newforms/fields.py:165 newforms/fields.py:192 msgid "Enter a number." msgstr "整数を入力してください。" -#: newforms/fields.py:196 +#: newforms/fields.py:201 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "整数部と少数部を併せて %s 桁までで入力して下さい。" -#: newforms/fields.py:198 +#: newforms/fields.py:203 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "少数部は %s 桁までで入力して下さい。" -#: newforms/fields.py:200 +#: newforms/fields.py:205 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "整数部は %s 桁までで入力して下さい。" -#: newforms/fields.py:233 newforms/fields.py:566 +#: newforms/fields.py:238 newforms/fields.py:610 msgid "Enter a valid date." msgstr "日付を正しく入力してください。" -#: newforms/fields.py:260 newforms/fields.py:568 +#: newforms/fields.py:265 newforms/fields.py:612 msgid "Enter a valid time." msgstr "時間を正しく入力してください。" -#: newforms/fields.py:296 +#: newforms/fields.py:301 msgid "Enter a valid date/time." msgstr "日付/時間を正しく入力してください。" -#: newforms/fields.py:310 +#: newforms/fields.py:314 msgid "Enter a valid value." msgstr "値を正しく入力してください。" -#: newforms/fields.py:357 newforms/fields.py:379 +#: newforms/fields.py:378 +msgid "No file was submitted." +msgstr "ファイルが送信されていません。" + +#: newforms/fields.py:380 oldforms/__init__.py:688 +msgid "The submitted file is empty." +msgstr "入力されたファイルは空です。" + +#: newforms/fields.py:403 newforms/fields.py:425 msgid "Enter a valid URL." msgstr "URLを正しく入力してください。" -#: newforms/fields.py:381 +#: newforms/fields.py:427 msgid "This URL appears to be a broken link." msgstr "このURLはリンクが壊れています。" -#: newforms/fields.py:432 newforms/models.py:172 +#: newforms/fields.py:478 newforms/models.py:180 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "正しく選択してください。選択したものは候補にありません。" -#: newforms/fields.py:448 newforms/fields.py:526 newforms/models.py:189 +#: newforms/fields.py:494 newforms/fields.py:570 newforms/models.py:197 msgid "Enter a list of values." msgstr "リストを入力してください。" -#: newforms/fields.py:457 newforms/models.py:195 +#: newforms/fields.py:500 newforms/models.py:203 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "正しく選択してください。 %s は候補にありません。" -#: oldforms/__init__.py:392 +#: oldforms/__init__.py:408 #, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." msgstr[0] "%s 字以下で入力してください。" msgstr[1] "%s 字以下で入力してください。" -#: oldforms/__init__.py:397 +#: oldforms/__init__.py:413 msgid "Line breaks are not allowed here." msgstr "改行はできません。" -#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "正しく選択してください。; '%(data)s' は %(choices)s にありません。" -#: oldforms/__init__.py:674 -msgid "The submitted file is empty." -msgstr "入力されたファイルは空です。" - -#: oldforms/__init__.py:730 +#: oldforms/__init__.py:744 msgid "Enter a whole number between -32,768 and 32,767." msgstr "-32,768 から 32,767 までの整数を入力してください。" -#: oldforms/__init__.py:740 +#: oldforms/__init__.py:754 msgid "Enter a positive number." msgstr "正の数を入力してください。" -#: oldforms/__init__.py:750 +#: oldforms/__init__.py:764 msgid "Enter a whole number between 0 and 32,767." msgstr "0 から 32,767 までの整数を入力してください。" -#: template/defaultfilters.py:491 +#: template/defaultfilters.py:532 msgid "yes,no,maybe" msgstr "はい,いいえ,たぶん" -#: template/defaultfilters.py:520 +#: template/defaultfilters.py:561 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:522 +#: template/defaultfilters.py:563 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:524 +#: template/defaultfilters.py:565 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:525 +#: template/defaultfilters.py:566 #, python-format msgid "%.1f GB" msgstr "%.1f GB" -#: utils/dateformat.py:40 +#: utils/dateformat.py:41 msgid "p.m." msgstr "p.m." -#: utils/dateformat.py:41 +#: utils/dateformat.py:42 msgid "a.m." msgstr "a.m." -#: utils/dateformat.py:46 +#: utils/dateformat.py:47 msgid "PM" msgstr "PM" -#: utils/dateformat.py:47 +#: utils/dateformat.py:48 msgid "AM" msgstr "AM" -#: utils/dateformat.py:95 +#: utils/dateformat.py:97 msgid "midnight" msgstr "0時" -#: utils/dateformat.py:97 +#: utils/dateformat.py:99 msgid "noon" msgstr "12時" @@ -2772,130 +3230,162 @@ msgstr "土曜日" msgid "Sunday" msgstr "日曜日" -#: utils/dates.py:14 +#: utils/dates.py:10 +msgid "Mon" +msgstr "月" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "火" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "水" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "木" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "金" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "土" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "日" + +#: utils/dates.py:18 msgid "January" msgstr "1月" -#: utils/dates.py:14 +#: utils/dates.py:18 msgid "February" msgstr "2月" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "3月" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "4月" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "5月" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "6月" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "7月" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "August" msgstr "8月" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "September" msgstr "9月" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "October" msgstr "10月" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "November" msgstr "11月" -#: utils/dates.py:16 +#: utils/dates.py:20 msgid "December" msgstr "12月" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jan" msgstr "1月" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "feb" msgstr "2月" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "mar" msgstr "3月" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "apr" msgstr "4月" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "may" msgstr "5月" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jun" msgstr "6月" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "jul" msgstr "7月" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "aug" msgstr "8月" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "sep" msgstr "9月" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "oct" msgstr "10月" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "nov" msgstr "11月" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "dec" msgstr "12月" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Jan." msgstr "1月" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Feb." msgstr "2月" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Aug." msgstr "8月" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Sept." msgstr "9月" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Oct." msgstr "10月" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Nov." msgstr "11月" -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Dec." msgstr "12月" +#: utils/text.py:127 +msgid "or" +msgstr "または" + #: utils/timesince.py:12 msgid "year" msgid_plural "years" @@ -2932,38 +3422,33 @@ msgid_plural "minutes" msgstr[0] "分" msgstr[1] "分" -#: utils/timesince.py:40 -#, python-format -msgid "%d milliseconds" -msgstr "%d ミリ秒" - -#: utils/timesince.py:41 +#: utils/timesince.py:39 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" -#: utils/timesince.py:47 +#: utils/timesince.py:45 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:358 +#: utils/translation/trans_real.py:391 msgid "DATE_FORMAT" msgstr "Y/m/d" -#: utils/translation/trans_real.py:359 +#: utils/translation/trans_real.py:392 msgid "DATETIME_FORMAT" msgstr "Y/m/d H:i" -#: utils/translation/trans_real.py:360 +#: utils/translation/trans_real.py:393 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:376 +#: utils/translation/trans_real.py:409 msgid "YEAR_MONTH_FORMAT" msgstr "Y/m/d" -#: utils/translation/trans_real.py:377 +#: utils/translation/trans_real.py:410 msgid "MONTH_DAY_FORMAT" msgstr "m/d" diff --git a/django/conf/locale/km/LC_MESSAGES/django.mo b/django/conf/locale/km/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..cd42e6a5f9 Binary files /dev/null and b/django/conf/locale/km/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/km/LC_MESSAGES/django.po b/django/conf/locale/km/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5592c4a2a1 --- /dev/null +++ b/django/conf/locale/km/LC_MESSAGES/django.po @@ -0,0 +1,2508 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: 01\n" +"Report-Msgid-Bugs-To: sengtha@e-khmer.com\n" +"POT-Creation-Date: 2007-01-15 15:43+0200\n" +"PO-Revision-Date: 2007-08-10 00:21+0900\n" +"Last-Translator: Chay Sengtha \n" +"Language-Team: Chay Sengtha \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: Information +msgid "Administration Page" +msgstr "ទំព័រគ្រប់គ្រង" + +msgid "Tag" +msgstr "ប្រភេទ" + +msgid "Headline" +msgstr "ចំណងជើង" + +msgid "Article" +msgstr "អត្ថបទ" + +msgid "Review" +msgstr "ព្រឹត្តិការណ៍ និង ផលិតផលថ្មីៗ" + +msgid "Keyword" +msgstr "ពាក្យសំខាន់ៗ" + +msgid "Advertisement" +msgstr "ការផ្សាយពាណិជ្ជកម្ម" + +msgid "Link" +msgstr "អត្ថបទភ្ជាប់" + +msgid "Accounting" +msgstr "គណនី" + +msgid "Name" +msgstr "ឈ្មោះ" + +msgid "Slug" +msgstr "ឈ្មោះជាអក្សរឡាតាំង" + +msgid "Created" +msgstr "កាលបរិច្ឆេទនៃការសរសេរ" + +msgid "Modified" +msgstr "កាលបរិច្ឆេទ​នៃការ​ផ្លាស់ប្តូរ" + +msgid "Summary" +msgstr "អត្ថបទសង្ខេប" + +msgid "Viewed number" +msgstr "ចំនួនអាន" + +msgid "Site" +msgstr "គេហទំព័រ" + +msgid "Rate" +msgstr "ការវាយតំលៃ" + +msgid "Private" +msgstr "សំរាប់សមាជិកបង់លុយ" + +msgid "Public" +msgstr "ផ្សព្វផ្សាយ" + +msgid "Content" +msgstr "អត្ថបទ" + +msgid "Page" +msgstr "ទំព័រទី" + +msgid "Attach Image" +msgstr "រូបភាព" + +msgid "Ads type" +msgstr "ប្រភេទពាណិជ្ជកម្ម" + +msgid "Link type" +msgstr "ប្រភេទអត្ថបទភ្ជាប់" + +msgid "Account type" +msgstr "ប្រភេទគណនី" + +msgid "Amount" +msgstr "ចំនួន" + +msgid "Person" +msgstr "អ្នកទទួលខុសត្រូវ" + +msgid "Date" +msgstr "កាលបរិច្ឆេទ" + +msgid "Information" +msgstr "ការគ្រប់គ្រងព័ត៌មាន" + +msgid "Auth" +msgstr "ការគ្រប់គ្រងសមាជិក" + +msgid "Comments" +msgstr "ការគ្រប់គ្រងមតិ​យោបល់" + +msgid "Sites" +msgstr "ការគ្រប់គ្រងដមែន" + +msgid "Flatpages" +msgstr "ការគ្រប់គ្រងទំព័រថ្មី" + +msgid "File-Browser" +msgstr "ការគ្រប់គ្រងឯកសារ" + +msgid "Make Directory" +msgstr "បង្កើតថតថ្មី" + +msgid "Multiple Upload" +msgstr "ទាញយកឯកសារ" + +msgid "results" +msgstr "លទ្ធផល" + +msgid "total" +msgstr "​សរុប" + +msgid "Total" +msgstr "​សរុប" + +msgid "type" +msgstr "ប្រភេទ" + +msgid "filename" +msgstr "ឈ្មោះឯកសារ" + +msgid "size" +msgstr "ទំហំ" + +msgid "Past 30 days" +msgstr "៣០ថ្ងៃកន្លងមក" + +msgid "By Date" +msgstr "តាម​កាលបរិច្ឆេទ" + +msgid "By Type" +msgstr "តាម​ប្រភេទ" + +msgid "no entries found" +msgstr "រកមិនឃើញ" + +msgid "Select files to upload" +msgstr "សូមជ្រើសរើសឯកសារ​។" + +msgid "At least one file must be chosen." +msgstr "សូមជ្រើសរើសឯកសារ​យ៉ាង​តិច១។" + +msgid "Wrong filetype for" +msgstr "ប្រភេទឯកសារដែលមិនអាចទាញយកបាន។" + +msgid "File already exists" +msgstr "ឯកសារនេះមានរួចហើយ។" + +msgid "File" +msgstr "ឯកសារ" + +msgid " is existed." +msgstr "ត្រូវបានគេយករួចហើយ។" + +msgid "Account registration is not complete yet.
                                    You need to activate your account first.
                                    We have already sent you the activate URL. Please check you mail box." +msgstr "ការចុះឈ្មោះមិនទាន់ចប់នៅឡើយទេ។ 
                                    យើងខ្ញុំបានបញ្ជូនអ៊ីមែល​ទៅកាន់អាស័យដ្ឋានអ៊ីមែល​របស់​លោកអ្នក​ហើយ​ សូមចុច​អត្ថបទភ្ជាប់​នៅក្នុង​អ៊ីមែល ដើម្បី​បញ្ជប់ការចុះឈ្មោះ។" + +msgid "Help" +msgstr "ជំនួយ" + +msgid "Max. Filesize" +msgstr "ទំហំឯកសារអតិបរិមា" + +msgid "Upload" +msgstr "ទាញយក" + +msgid "Folder" +msgstr "ថត" + +msgid "Video" +msgstr "វីដេអូ" + +msgid "Document" +msgstr "ឯកសារ" + +msgid "Sound" +msgstr "សំលេង" + +msgid "Code" +msgstr "កូត" + +msgid "Allowed" +msgstr "ប្រភេទឯកសារដែលអាចទាញ​យកបាន" + +msgid "Directory already exists." +msgstr "ថតនេះមាន​រួចហើយ។" + +msgid "Permission denied." +msgstr "ពុំមានសិទ្ធិអាចបង្កើតបាន។" + +msgid "Please correct the errors below." +msgstr "សូមកែកំហុសដូចខាងក្រោម។" + +msgid "Only letters, numbers and underscores are allowed." +msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _ ។" + +msgid "The directory will automatically be converted to lowercase" +msgstr "ឈ្មោះថតនឹងត្រូវផ្លាស់ប្តូរទៅជាអក្សរតូចដោយស្វ័យប្រវត្ត។" + +msgid "Create" +msgstr "បង្កើត" + +msgid "date" +msgstr "​កាលបរិច្ឆេទ" + +msgid "Dbtemplate" +msgstr "ការគ្រប់គ្រងឯកសារគំរូ" + +msgid "template" +msgstr "ឯកសារគំរូ" + +msgid "templates" +msgstr "ឯកសារគំរូ" + +msgid "Comment" +msgstr "ផ្សេងៗ" + +msgid "Income" +msgstr "ចំណូល" + +msgid "Expense" +msgstr "ចំណាយ" + +msgid "Image" +msgstr "រូបភាព" + +msgid "Text and Image" +msgstr "អក្សរ និង​ រូបភាព" + +msgid "New Headlines" +msgstr "អត្ថបទថ្មីៗ" + +msgid "New Reviews" +msgstr "ព្រឹត្តិការណ៍ និង ផលិតផលថ្មីៗ" + +msgid "Login" +msgstr "ពិនិត្យចូល" + +msgid "Logout" +msgstr "ចាកចេញ" + +msgid "Register" +msgstr "ចូលជាសមាជិក" + +msgid "Free" +msgstr "ឥតគិតថ្លៃ" + +msgid "Welcome" +msgstr "សូមស្វាគមន័ " + +msgid "IT Resources" +msgstr "ប្រភពព័ត៌មានអំពី បច្ចេកទេសព័ត៌មានវិទ្យា" + +msgid "Copyrights" +msgstr "រក្សាសិទ្ធិដោយ " + +msgid "Next page" +msgstr "ទំព័របន្ទាប់" + +msgid "Previous page" +msgstr "ទំព័រមុន " + +msgid "Wrong number or password. Please try it again." +msgstr "ឈ្មោះជាសមាជិក​ ឬ ពាក្យសំងាត់ មិនត្រឹមត្រូវ។ សូមសាកល្បងម្តងទៀត។ " + +msgid "This username has not activated yet." +msgstr "ឈ្មោះសាមាជិកនេះមិនទាន់ត្រូវបានគេអនុញ្ញាតនៅឡើយទេ។" + +msgid "Please write" +msgstr "សូមបំពេញ" + +msgid "More" +msgstr "អត្ថបទផ្សេងទៀត" + +msgid "Please correct below errors." +msgstr "សូកកែកូមហុសខាងក្រោម។" + +msgid "Thank for your comment." +msgstr "សូមអរគុណដែលបានបញ្ជេញមតិយោបល់ទាក់ទងនឹងអត្ថបទនេះ" + +#: Django standard +#: contrib/comments/models.py:67 +#: contrib/comments/models.py:166 +msgid "object ID" +msgstr "លេខ​សំគាល់​កម្មវិធី" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "ចំណងជើង" + +#: contrib/comments/models.py:69 +#: contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "មតិ​យោបល់" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "វាយ​តំលៃ #1" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "វាយ​តំលៃ #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "វាយ​តំលៃ #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "វាយ​តំលៃ #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "វាយ​តំលៃ #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "វាយ​តំលៃ #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "វាយ​តំលៃ #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "វាយ​តំលៃ #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "កំពុង​ត្រួត​ពិនិត្យចំពោះ​​ការ​វាយ​តំលៃ" + +#: contrib/comments/models.py:83 +#: contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "កាល​បរិច្ឆេទនៃ​ការ​សរសេរ​​" + +#: contrib/comments/models.py:84 +#: contrib/comments/models.py:170 +msgid "is public" +msgstr "ផ្សព្វផ្សាយ​ជាសធារណៈ" + +#: contrib/comments/models.py:85 +#: contrib/admin/views/doc.py:304 +msgid "IP address" +msgstr "លេខ IP" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "ត្រូវ​បាន​លប់​ចេញ" + +#: contrib/comments/models.py:86 +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "សូម​ចុច​ជ្រើសរើស​យក​ប្រអប់​នេះ​ ប្រសិន​បើ​មតិ​យោបល់​មិនសមរម្យ។ ឃ្លា \" មតិ​យោបល់​នេះ​ត្រូវបាន​គេលប់​\" នឹងត្រូវ​បង្ហាញ​ជំនួស​វិញ។" + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "មតិ​យោបល់" + +#: contrib/comments/models.py:131 +#: contrib/comments/models.py:207 +msgid "Content object" +msgstr "អត្ថន័យ​របស់​កម្មវិធី" + +#: contrib/comments/models.py:159 +#: python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"សរសេរ​ដោយ %(user)s នៅថ្ងៃ​ %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "ឈ្មោះ" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "លេខ ip" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "យល់ព្រម​ដោយ​បុគ្គលិក" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "មតិ​យោបល់(មិនចាំបាច់សមាជិក)" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "មតិ​យោបល់(មិនចាំបាច់សមាជិក)" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "ពិន្ទុ" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "កាលបរិច្ឆេទ​ដាក់ពិន្ទុ" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "ពិន្ទុ​កម្មា(karma)" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "ពិន្ទុ​កម្មា(karma)" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d វាយ​តំលៃ​ដោយ %(user)s" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"មតិ​យោបល់នេះ​ត្រូវបាន​កត់សំគាល់ទុក​ដោយ %(user)s:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "កាល​បរិច្ឆេទ​កត់​សំគាល់​ទុក" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "ការ​កត់​សំគាល់​ទុក​" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "ការ​កត់​សំគាល់​ទុក" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "កត់​សំគាល់​ទុកដោយ %r" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "កាល​បរិច្ឆេទនៃ​ការ​លប់​" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "ការ​លប់​ដោយអ្នក​គ្រប់គ្រង" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "ការ​លប់​ដោយអ្នក​គ្រប់គ្រង" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "ការ​លប់​ដោយអ្នក​គ្រប់គ្រង នៅ %r" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "ជនអនាមិក​មិន​អាច​បោះ​ឆ្នោត​បាន​ទេ" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "លេខ​សំគាល់​មតិ​យោបល់​មិន​ត្រឹម​ត្រូវ" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "មិន​អាច​បោះ​ឆ្នោត​អោយ​ខ្លួន​ឯង​បាន​ទេ" + +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "ចាំបាច់ត្រូវការ វាយតំលៃ ពីព្រោះលោកអ្នកបានជ្រើសរើសធ្វើការវាយតំលៃផ្សេងពីនេះ។" + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"មតិយោបល់នេះត្រូវបានបញ្ជូនដោយសមាជិកម្នាក់ដែលបាន​ផ្តល់មតិយោបល់​តិចជាង %(count)s។\n" +"%(text)s" +msgstr[1] "" +"មតិយោបល់នេះត្រូវបានសរសេរដោយសមាជិកម្នាក់ដែលបាន​ផ្តល់មតិយោបល់​តិចជាង %(count)s។\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"មតិយោបល់បានសរសេរដោយសមាជិកមិនសូវប្រាកដប្រជា:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "អនុញ្ញាតតែទិន្នន័យតាមរយះ​ POST ​។" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "ទិន្នន័យរបស់ចំនុចមួយចំនួនដែលចាំបាច់ មិនទាន់បានបំពេញ។" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "មានគេព្យាយាមសរសេរ មតិយោបល់ មិនត្រឹមត្រូវ (ប៉ះពាល់ដល់សុវត្ថិភាព)" + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid" +msgstr "បែបបទបំពេញមតិយោបល់មិនមាន 'target' ​និង​ លេខសំគាល់កម្មវិធី (object ID)​ ត្រឹមត្រូវ" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "បែបបទបំពេញមតិយោបល់មិនមាន 'preview' or 'post' ។" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "ឈ្មោះសមាជិក" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Log out" +msgstr "ចាកចេញ" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "ពាក្យ​សំងាត់" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "តើលោកអ្នក​ភ្លេច​ពាក្យសំងាត់រឺ?​​" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "វាយតំលៃ" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "ចាំ​បាច់" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "មិនចាំ​បាច់​ជ្រើសរើស​យក​ក៏បាន​" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "បញ្ជូន​រូបភាព" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "មតិ​យោបល់" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "មើល​ មតិយោបល់" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "ឈ្មោះ" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

                                    By %s:

                                    \n" +"
                                      \n" +msgstr "" +"

                                      ដោយ %s:

                                      \n" +"
                                        \n" + +#: contrib/admin/filterspecs.py:70 +#: contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "ទាំងអស់" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "កាល​បរិច្ឆេទណាមួយ" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "ថ្ងៃនេះ" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "៧​ថ្ងៃ​កន្លង​មក" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "ខែ​នេះ" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "ឆ្នាំ​នេះ" + +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "យល់ព្រម" + +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "មិនយល់ព្រម" + +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "មិន​ដឹង" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "ពេលវេលាប្រតិបត្តិការ" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "លេខ​សំគាល់​កម្មវិធី (object id)" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "object repr" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "សកម្មភាព" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "ផ្លាស់ប្តូរ" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "កំណត់ហេតុ" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "កំណត់ហេតុ" + +#: contrib/admin/templatetags/admin_list.py:230 +msgid "All dates" +msgstr "កាលបរិច្ឆេទទាំងអស់" + +#: contrib/admin/views/decorators.py:10 +#: contrib/auth/forms.py:59 +msgid "Please enter a correct username and password. Note that both fields are case-sensitive." +msgstr "សូមបំពេញ ឈ្មោះសមាជិក និង ពាក្យសំងាត់ ។ " + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "ពិនិត្យចូល" + +#: contrib/admin/views/decorators.py:62 +msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." +msgstr "សូមពិនិត្យចូលម្តងទៀត ។" + +#: contrib/admin/views/decorators.py:69 +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "ប្រហែលជាកម្មវិធីមើលគេះទំព័រដែលលោកអ្នកកំពុងប្រើ មិនទទួល​ គូគី (cookies) ។ សូមកំណត់កម្មវិធីដែលលោកអ្នកកំពុងប្រើនេះអោយទទួលយក គូគី ហើយចូលមកមើលទំព័រនេះម្តងទៀត ។" + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "ឈ្មោះសមាជិកមិនអាចមាន សញ្ញា '@' ។" + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "អ៊ីមែលរបស់លោកអ្នក មិនអាចធ្វើជា ឈ្មោះសមាជិកបានទេ ។ សូមសាកល្បងជាមួយ '%s'។" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "ទំព័រគ្រប់គ្រង" + +#: contrib/admin/views/main.py:257 +#: contrib/admin/views/auth.py:17 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "ឈ្មោះកម្មវិធី %(name)s \"%(obj)s\" បានបញ្ជូលដោយជោគជ័យ​។" + +#: contrib/admin/views/main.py:261 +#: contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:22 +msgid "You may edit it again below." +msgstr "សូមសាកល្បងកែប្រែម្តងទៀត។" + +#: contrib/admin/views/main.py:271 +#: contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "លោកអ្នកអាចបន្ថែម  %s ផ្សេងទៀតដូចខាងក្រោម។" + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "បន្ថែម %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "បានបន្ថែម %s" + +#: contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 +msgid "and" +msgstr "និង" + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "បានផ្លាស់ប្តូរ %s" + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "បានលប់ %s" + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "ពុំមានទិន្នន័យត្រូវបានផ្លាស់ប្តូរ។" + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "កម្មវិធីឈ្មោះ %(name)s \"%(obj)s\" ត្រូវបានផ្លាស់ប្តូរដោយជោគជ័យ។" + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "ឈ្មោះកម្មវីធី %(name)s \"%(obj)s\" ត្រូវបានបន្ថែមដោយជោគជ័យ។ លោកអ្នកអាចផ្លាស់ប្តូរម្តងទៀតនៅខាងក្រោម។" + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "ផ្លាស់ប្តូរ %s" + +#: contrib/admin/views/main.py:473 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "មានទិន្នន័យ %(fieldname)s មួយចំនួននៅក្នុង %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:478 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "មានទិន្នន័យ %(fieldname)s មួយចំនួននៅក្នុង %(name)s:" + +#: contrib/admin/views/main.py:511 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "ឈ្មោះកម្មវិធី %(name)s \"%(obj)s\" ត្រូវបានលប់ដោយជោគជ័យ។" + +#: contrib/admin/views/main.py:514 +msgid "Are you sure?" +msgstr "តើលោកអ្នកប្រាកដទេ?" + +#: contrib/admin/views/main.py:536 +#, python-format +msgid "Change history: %s" +msgstr "សកម្មភាពផ្លាស់ប្តូរកន្លងមក : %s" + +#: contrib/admin/views/main.py:570 +#, python-format +msgid "Select %s" +msgstr "ជ្រើសរើស %s" + +#: contrib/admin/views/main.py:570 +#, python-format +msgid "Select %s to change" +msgstr "ជ្រើសរើស %s ដើម្បីផ្លាស់ប្តូរ" + +#: contrib/admin/views/main.py:758 +msgid "Database error" +msgstr "ទិន្នន័យមូលដ្ឋានមានបញ្ហា" + +#: contrib/admin/views/doc.py:46 +#: contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "ប្រភេទ:" + +#: contrib/admin/views/doc.py:77 +#: contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "ពាក្យស្វែងរក" + +#: contrib/admin/views/doc.py:135 +#: contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "មើល" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "ស្វែងរក App %r មិនឃើញ ។" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %r not found in app %r" +msgstr "Model %r រកមិនឃើញនៅក្នុង app %r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%s.%s` object" +msgstr " `%s.%s` object ដែលពាក់ព័ន្ធ" + +#: contrib/admin/views/doc.py:183 +#: contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 +#: contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "model:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%s.%s` objects" +msgstr "ជាប់​ទាក់ទង​ជាមួយ​នឹងកម្មវិធី​  `%s.%s` " + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "ទាំងអស់ %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "ចំនួន​នៃ​%s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "ទិន្នន័យអំពី %s កម្មវិធី" + +#: contrib/admin/views/doc.py:291 +#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 +#: contrib/admin/views/doc.py:312 +msgid "Integer" +msgstr "ចំនួនពិត(Integer)" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Boolean (អាច​ជា True រឺ False)" + +#: contrib/admin/views/doc.py:293 +#: contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "String (អាចសរសេរបានរហូតដល់ %(maxlength)s)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "ចំនួនពិត(Integer) ដែលផ្តាច់ចេញពីគ្នាដោយ​ក្បៀស" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "កាល​បរិច្ឆេទ (Date) (មិនមានសរសេរម៉ោង)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "កាល​បរិច្ឆេទ (Date) (មានសរសេរម៉ោង)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "អ៊ីម៉ែល" + +#: contrib/admin/views/doc.py:298 +#: contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "ផ្លូវទៅកាន់ឯកសារ" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "ចំនួនទសភាគ (Decimal)" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (អាចជា True​ រឺ False រឺ None)" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "ទាក់ទងទៅនឹងម៉ូដែល (model)មេ" + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "លេខទូរស័ព្ទ" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "អត្ថបទ" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "ពេលវេលា" + +#: contrib/admin/views/doc.py:315 +#: contrib/flatpages/models.py:7 +msgid "URL" +msgstr "អាស័យដ្ឋានគេហទំព័រ(URL)" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "សហរដ្ឋអាមេរិក U.S. (ជាមួយនឹងអក្សរធំពីរ)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "អត្ថបទ XML" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ហាក់បីដូចជា URL ដែល​ត្រឹមត្រូវទេ" + +#: contrib/admin/views/auth.py:28 +msgid "Add user" +msgstr "បន្ថែមសមាជិក" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "ឯកសារ" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Change password" +msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "គេហទំព័រ" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:20 +msgid "History" +msgstr "សកម្មភាព​កន្លង​មក" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Date/time" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "សមាជិក" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "សកម្មភាព" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "កម្មវិធីនេះមិនមានសកម្មភាព​កន្លងមកទេ។ ប្រហែលជាសកម្មភាពទាំងនេះមិនបានធ្វើនៅទំព័រគ្រប់គ្រងនេះ។" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "ទំព័រគ្រប់គ្រងរបស់ Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "ការ​គ្រប់គ្រង​របស់ ​Django" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា (៥០០)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា  (៥០០)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "មានកំហុស។ កំហុសនេះត្រូវបានបញ្ជូនទៅកាន់អ្នកគ្រប់គ្រងគេហទំព័រនេះរួចហើយ។ សូមអភ័យទោសចំពោះបញ្ហានេះ។" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នៅក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "សួមអភ័យទោស ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នឹងក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "ម៉ូដែល (Models) មាននៅក្នុងកម្មវិធី %(name)s ។" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:28 +#: contrib/admin/templates/admin/change_form.html:15 +msgid "Add" +msgstr "បន្ថែម" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "ផ្លាស់ប្តូរ" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "លោកអ្នកពុំមានសិទ្ធិ ផ្លាស់​ប្តូរ ទេ។" + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "សកម្មភាពបច្ចុប្បន្ន" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "សកម្មភាពរបស់ខ្ញុំ" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "គ្មាន" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "បន្ថែម %(name)s" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Have you forgotten your password?" +msgstr "តើលោកអ្នក ភ្លេចពាក្យសំងាត់?" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "សូមស្វាគមន៏" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "លប់" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់ ។ ក៏ប៉ន្តែលោកអ្នក​ពុំមាន​សិទ្ធិលប់​កម្មវិធី​ប្រភេទនេះទេ។" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, 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 "តើលោកអ្នកប្រាកដជាចង់លប់ %(object_name)s \"%(escaped_object)s\"? ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់។" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "ខ្ញុំច្បាស់​ជាចង់លប់" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "ដោយ​  %(filter_title)s " + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "ស្វែងរក" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "លទ្ធផល ១" +msgstr[1] "លទ្ធផល %(counter)s " + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "សរុបទាំងអស់ %(full_result_count)s" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "បង្ហាញទាំងអស់" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "ស្វែងរកជាមួយ" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "មើលនៅលើគេហទំព័រដោយផ្ទាល់" + +#: contrib/admin/templates/admin/change_form.html:30 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "សូមកែប្រែកំហុសខាងក្រោម ។" +msgstr[1] "សូមកែប្រែកំហុសខាងក្រោម ។" + +#: contrib/admin/templates/admin/change_form.html:48 +msgid "Ordering" +msgstr "កំពុងតំរៀប" + +#: contrib/admin/templates/admin/change_form.html:51 +msgid "Order:" +msgstr "តំរៀប" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "រក្សាទុក" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "រក្សាទុក ហើយ បន្ថែម​ថ្មី" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "រក្សាទុក ហើយ កែឯកសារដដែល" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "រក្សាទុក" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "មូលដ្ឋាន​ទិន្នន័យ​​​ របស់លោកអ្នក មានបញ្ហា។ តើ លោកអ្នកបាន បង្កើត តារាង​ របស់មូលដ្ឋានទិន្នន័យ​ ហើយឬនៅ? តើ​ លោកអ្នកប្រាកដថាសមាជិកអាចអានមូលដ្ឋានទិន្នន័យនេះ​​បានឬទេ? " + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "First, enter a username and password. Then, you'll be able to edit more user options." +msgstr "តំបូងសូមបំពេញ ឈ្មោះជាសមាជិក និង ពាក្យសំងាត់​។ បន្ទាប់មកលោកអ្នកអាចបំពេញបន្ថែមជំរើសផ្សេងៗទៀតបាន។ " + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "ឈ្មោះជាសមាជិក" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "ពាក្យសំងាត់" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "ពាក្យសំងាត់ (ម្តងទៀត)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "សូមបំពេញពាក្យសំងាត់ដូចខាងលើ ដើម្បីត្រួតពិនិត្យ។ " + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "ពាក្យសំងាត់របស់លោកអ្នកបានផ្លាស់ប្តូរហើយ" + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "ពាក្យសំងាត់បានកំណត់សារជាថ្មី" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." +msgstr "តើលោកអ្នកភ្លេចពាក្យសំងាត់រឺ? សូមបំពេញអ៊ីម៉ែលខាងក្រោម យើងខ្ញុំនឹងកំណត់ពាក្យសំងាត់របស់លោកអ្នកសារឡើងវិញ ហើយបញ្ជូនទៅកាន់អ៊ីម៉ែលរបស់លោកអ្នក។" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "អ៊ីមែល" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "កំណត់ពាក្យសំងាត់សារជាថ្មី" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "សូមថ្លែងអំណរគុណ ដែលបានចំណាយ ពេលវេលាដ៏មានតំលៃ របស់លោកអ្នកមកទស្សនាគេហទំព័ររបស់យើងខ្ញុំ" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "ពិនិត្យចូលម្តងទៀត" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "យើងខ្ញុំបានបញ្ជូន​ពាក្យសំងាត់ទៅកាន់​អ៊ីម៉ែលរបស់លោកអ្នករួចហើយ។ លោកអ្នកនឹងបានទទួលនៅពេលបន្តិចទៀតនេះ។" + +#: contrib/admin/templates/registration/password_change_form.html:12 +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 "សូមបំពេញពាក្យសំងាត់ចាស់របស់លោកអ្នក។ ដើម្បីសុវត្ថភាព សូមបំពេញពាក្យសំងាត់ថ្មីខាងក្រោមពីរដង។" + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "ពាក្សំងាត់ចាស់" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "ពាក្យសំងាត់ថ្មី" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "បំពេញពាក្យសំងាត់ថ្មីម្តងទៀត" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "លោកអ្នកទទួលអ៊ីម៉ែលនេះដោយសារលោកអ្នកកំណត់ពាក្យសំងាត់នេះសារជាថ្មី" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "សំរាប់សមាជិកនៅឯគេហទំព័រ %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "ពាក្យសំងាត់ថ្មីគឺ: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "សូមផ្លាស់ប្តូរពាក្យសំងាត់នៅឯទំព័រនេះ:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "ឈ្មោះជាសមាជិកក្នុងករណីភ្លេច:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "សូមអរគុណដែលបានប្រើប្រាស់សេវាកម្មរបស់យើងខ្ញុំ" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "ក្រុមរបស់គេហទំព័រ %(site_name)s" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "កំរងចំណាំ" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "កំរងចំណាំអំពីឯកសារ" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

                                        To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                                        \n" +msgstr "" +"\n" +"

                                        ដើម្បីតំលើងកំរងចំណាំ សូមទាញយកអត្ថបទភ្ជាប់ទៅ​កាន់​របាឧបករណ៍ ឬក៏ចុចខាងស្តាំលើអត្ថបទភ្ជាប់ហើយ​បញ្ជូលទៅក្នុងកំរងចំណាំរបស់លោកអ្នក។

                                        \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "ឯកសារសំរាប់ទំព័រនេះ" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "Jumps you from any page to the documentation for the view that generates that page." +msgstr "Jumps you from any page to the documentation for the view that generates that page." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "បង្ហាញលេខសំគាល់កម្មវិធី" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Shows the content-type and unique ID for pages that represent a single object." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "កែប្រែកម្មវិធីនេះ(វីនដូវកំពុងប្រើ)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "បង្វែរទៅកាន់​ ទំព័រគ្រប់គ្រង សំរាប់ទំព័រណាដែលតំណាងអោយកម្មវិធីតែមួយ។" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "កែប្រែកម្មវិធីនេះ(វីនដូវថ្មី)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "ដូចខាងលើ តែបើកនៅទំព័រវីនដូវថ្មី" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "កាលបរិច្ឆេទ" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "ម៉ោង" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "បច្ចុប្បន្ន" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "ផ្លាស់ប្តូរ" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "នាំចេញពី" + +#: contrib/redirects/models.py:8 +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "គួរតែជាផ្លូវពេញ (absolute path) ហើយមិនបញ្ជូលឈ្មោះ ដមែន (domain name​)។​ឧទាហរណ៍ '/events/search/'។" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "នាំចេញទៅ" + +#: contrib/redirects/models.py:10 +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "អាចជាផ្លូវពេញ (absolute path) ឬក៏ URL ទាំងមូលដែលចាប់ផ្តើមជាមួយ 'http://'។" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "នាំចេញ" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "នាំចេញ" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "ឧទាហរណ៍  '/about/contact/' ។ ត្រូវប្រាកដថាមានសញ្ញា / ទាំងនៅផ្នែកខាងមុខ និង ខាងក្រោយ។" + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "ចំណងជើង" + +msgid "Title" +msgstr "ចំណងជើង" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "អត្ថន័យ" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "អនុញ្ញាត" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "ឈ្មោះឯកសារគំរូ" + +#: contrib/flatpages/models.py:13 +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "ឧទាហរណ៍ 'flatpages/contact_page.html'។ ប្រសិនឯកសារនេះមិនមានទេ​ នោះឯកសារ 'flatpages/default.html'នឹងត្រូវប្រើ។" + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "ត្រូវការសមាជិកភាព" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "ប្រសិនជាចុចជ្រើសរើសយកជំរើសនេះ នោះ មានតែសមាជិកទេដែលអាចមើលទំព័រនេះបាន​។" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "ទំព័ថ្មី" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "ទំព័ថ្មី" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "ចាកចេញ" + +#: contrib/auth/models.py:38 +#: contrib/auth/models.py:57 +msgid "name" +msgstr "ឈ្មោះ" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "ឈ្មោះលេខកូត" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "អនុញ្ញាត" + +#: contrib/auth/models.py:43 +#: contrib/auth/models.py:58 +msgid "permissions" +msgstr "អនុញ្ញាត" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "ក្រុម" + +#: contrib/auth/models.py:61 +#: contrib/auth/models.py:100 +msgid "groups" +msgstr "ក្រុម" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "ឈ្មោះជាសមាជិក" + +#: contrib/auth/models.py:90 +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." +msgstr "ត្រូចវបំពេញអក្សរឡាតាំងចំនួន៣០ ឬ តិចជាងនេះ (អក្សរ លេខ ឬ សញ្ញា _)។" + +#: contrib/auth/models.py:91 +msgid "First name" +msgstr "នាម" + +#: contrib/auth/models.py:92 +msgid "Last name" +msgstr "គោត្តនាម" + +msgid "first name" +msgstr "នាម" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "គោត្តនាម" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "អ៊ីមែល" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "ពាក្យសំងាត់" + +#: contrib/auth/models.py:94 +msgid "Use '[algo]$[salt]$[hexdigest]'" +msgstr "ប្រើ '[algo]$[salt]$[hexdigest]'" + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "ស្ថានភាពបុគ្គលិក" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "កំណត់អោយសមាជិកអាចចូលមកប្រើប្រាស់ទំព័រគ្រប់គ្រងនេះ។" + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "សកម្ម" + +#: contrib/auth/models.py:96 +msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." +msgstr "កំណត់ថាតើសមាជិកអាច​ពិនិត្យចូលមកប្រើទំព័រគ្រប់គ្រង។ មិនជ្រើសរើស ជាជាងលប់ចោល។" + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "ស្ថានភាពអ្នកគ្រងគ្រង" + +#: contrib/auth/models.py:97 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "កំណត់អោយសមាជិកនេះមានសិទ្ធិទាំងអស់។" + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "ការពិនិត្យចូលកន្លងមក" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "កាលបរិច្ឆេទចូលរួម" + +#: contrib/auth/models.py:101 +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "បន្ថែមចំពោះសិទ្ធិដែលគេបាន​ផ្តល់​អោយ សមាជិកនេះអាចទទួលបានសិទ្ធិទាំងអស់​ដែលកំណត់​សំរាប់​ក្រុម​ ដែលសមាជិកនេះស្ថិតនៅ។" + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "ការអនុញ្ញាតអោយសមាជិក" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "សមាជិក" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "សមាជិក" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "ព័ត៌មានផ្ទាល់ខ្លួន" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "ការអនុញ្ញាត" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "កាលបរិច្ឆេទសំខាន់" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "ក្រុម" + +#: contrib/auth/models.py:256 +msgid "message" +msgstr "អត្ថបទ" + +#: contrib/auth/forms.py:52 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "កម្មវិធីសំរាប់មើលគេហទំព័រនេះហាក់បីដូចជាមិនទាន់បានទទួលយកគុគី ។ ចាំបាច់ត្រូវកំណត់អោយ​កម្មវិធីសំរាប់មើលគេហទំព័រទទួល​យក គុគី ដើម្បីពិនិត្យចូល ។" + +#: contrib/auth/forms.py:61 +msgid "This account is inactive." +msgstr "ឈ្មោះសមាជិកនេះ​លែងដំណើរការ" + +#: contrib/contenttypes/models.py:20 +msgid "python model class name" +msgstr "ឈ្មោះ python model class" + +#: contrib/contenttypes/models.py:23 +msgid "content type" +msgstr "ប្រភេទអត្ថន័យ" + +#: contrib/contenttypes/models.py:24 +msgid "content types" +msgstr "ប្រភេទអត្ថន័យ" + +#: contrib/sessions/models.py:51 +msgid "session key" +msgstr "លេខសំគាល់​រយះពេល​ពិនិត្យ​ចូល" + +#: contrib/sessions/models.py:52 +msgid "session data" +msgstr "ទិន្នន័យរយះពេល​ពិនិត្យ​ចូល" + +#: contrib/sessions/models.py:53 +msgid "expire date" +msgstr "ហួសពេលកំណត់" + +#: contrib/sessions/models.py:57 +msgid "session" +msgstr "រយះពេល​ពិនិត្យ​ចូល" + +#: contrib/sessions/models.py:58 +msgid "sessions" +msgstr "រយះពេល​ពិនិត្យ​ចូល" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "ឈ្មោះដមែន" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "ឈ្មោះសំរាប់បង្ហាញ" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "គេហទំព័រ" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "គេហទំព័រ" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "ច័ន្ទ" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "អង្គារ" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "ពុធ" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "ព្រហស្បតិ៍" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "សុក្រ" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "សៅរ៍" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "អាទិត្យ" + +#: utils/dates.py:14 +msgid "January" +msgstr "មករា" + +#: utils/dates.py:14 +msgid "February" +msgstr "កុម្ភៈ" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "March" +msgstr "មិនា" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "April" +msgstr "មេសា" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "May" +msgstr "ឧសភា" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "June" +msgstr "មិថុនា" + +#: utils/dates.py:15 +#: utils/dates.py:27 +msgid "July" +msgstr "កក្កដា" + +#: utils/dates.py:15 +msgid "August" +msgstr "សីហា" + +#: utils/dates.py:15 +msgid "September" +msgstr "កញ្ញា" + +#: utils/dates.py:15 +msgid "October" +msgstr "តុលា" + +#: utils/dates.py:15 +msgid "November" +msgstr "វិច្ឆិកា" + +#: utils/dates.py:16 +msgid "December" +msgstr "ធ្នូ" + +#: utils/dates.py:19 +msgid "jan" +msgstr "មករា" + +#: utils/dates.py:19 +msgid "feb" +msgstr "កុម្ភះ" + +#: utils/dates.py:19 +msgid "mar" +msgstr "មិនា" + +#: utils/dates.py:19 +msgid "apr" +msgstr "មេសា" + +#: utils/dates.py:19 +msgid "may" +msgstr "ឧសភា" + +#: utils/dates.py:19 +msgid "jun" +msgstr "មិថុនា" + +#: utils/dates.py:20 +msgid "jul" +msgstr "កក្កដា" + +#: utils/dates.py:20 +msgid "aug" +msgstr "សីហា" + +#: utils/dates.py:20 +msgid "sep" +msgstr "កញ្ញា" + +#: utils/dates.py:20 +msgid "oct" +msgstr "តុលា" + +#: utils/dates.py:20 +msgid "nov" +msgstr "វិច្ឆិកា" + +#: utils/dates.py:20 +msgid "dec" +msgstr "ធ្នូ" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "មករា" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "កុម្ភះ" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "សីហា" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "កញ្ញា" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "តុលា" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "វិច្ឆិកា" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "ធ្នូ" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "ឆ្នាំ" +msgstr[1] "ឆ្នាំ" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "ខែ" +msgstr[1] "ខែ" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "សប្តាហ៍" +msgstr[1] "សប្តាហ៍" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "ថ្ងៃ" +msgstr[1] "ថ្ងៃ" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "ម៉ោង" +msgstr[1] "ម៉ោង" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "នាទី" +msgstr[1] "នាទី" + +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "ថ្ងៃទី j ​ខែ N ឆ្នាំ Y" + +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "ថ្ងៃទី j ​ខែ N ឆ្នាំ Y ម៉ោង P" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "ម៉ោង P" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "ខែ F ឆ្នាំ Y" + +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" +msgstr "ថ្ងៃទី​​ j ខែ F" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "ភាសាអារ៉ាប់" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "ភាសាបេឡារុស្ស" + +#: conf/global_settings.py:41 +msgid "Czech" +msgstr "ភាសាឆេក" + +#: conf/global_settings.py:42 +msgid "Welsh" +msgstr "ភាសាអ៊ុយក្រែន" + +#: conf/global_settings.py:43 +msgid "Danish" +msgstr "ភាសាដាណឺម៉ាក" + +#: conf/global_settings.py:44 +msgid "German" +msgstr "ភាសាអាល្លឺម៉ង់" + +#: conf/global_settings.py:45 +msgid "Greek" +msgstr "ភាសាហ្កែលិគ" + +#: conf/global_settings.py:46 +msgid "English" +msgstr "ភាសាអង់គ្លេស" + +#: conf/global_settings.py:47 +msgid "Spanish" +msgstr "ភាសាអេស្ប៉ាញ" + +#: conf/global_settings.py:48 +msgid "Argentinean Spanish" +msgstr "ភាសាអេស្ប៉ាញ" + +#: conf/global_settings.py:49 +msgid "Finnish" +msgstr "ភាសាហ្វាំងឡង់" + +#: conf/global_settings.py:50 +msgid "French" +msgstr "ភាសាបារាំង" + +#: conf/global_settings.py:51 +msgid "Galician" +msgstr "ភាសាហ្កែលិគ" + +#: conf/global_settings.py:52 +msgid "Hungarian" +msgstr "ភាសាហុងគ្រី" + +#: conf/global_settings.py:53 +msgid "Hebrew" +msgstr "ភាសាហេប្រិ" + +#: conf/global_settings.py:54 +msgid "Icelandic" +msgstr "ភាសាអ៉ីស្លង់" + +#: conf/global_settings.py:55 +msgid "Italian" +msgstr "ភាសាអ៊ីតាលី" + +#: conf/global_settings.py:56 +msgid "Japanese" +msgstr "ភាសាជប៉ុន" + +#: conf/global_settings.py:57 +msgid "Dutch" +msgstr "ភាសាហ្វាំងឡង់" + +#: conf/global_settings.py:58 +msgid "Norwegian" +msgstr "ភាសាន័រវែស" + +#: conf/global_settings.py:59 +msgid "Brazilian" +msgstr "ភាសាប្រេស៊ីល" + +#: conf/global_settings.py:60 +msgid "Romanian" +msgstr "ភាសារូម៉ានី" + +#: conf/global_settings.py:61 +msgid "Russian" +msgstr "ភាសាรัរូស្ស៉ី" + +#: conf/global_settings.py:62 +msgid "Slovak" +msgstr "ភាសាស្លូវ៉ាគី" + +#: conf/global_settings.py:63 +msgid "Slovenian" +msgstr "ភាសាស្លូវ៉ានី" + +#: conf/global_settings.py:64 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Swedish" +msgstr "ភាសាស៊ុយអែដ" + +#: conf/global_settings.py:66 +msgid "Tamil" +msgstr "ភាសាតាមីល" + +#: conf/global_settings.py:67 +msgid "Turkish" +msgstr "ភាសាទួរគី" + +#: conf/global_settings.py:68 +msgid "Ukrainian" +msgstr "ភាសាអ៊ុយក្រែន" + +#: conf/global_settings.py:69 +msgid "Simplified Chinese" +msgstr "ភាសាចិនសាមញ្ញ" + +#: conf/global_settings.py:70 +msgid "Traditional Chinese" +msgstr "ភាសាចិនបុរាណ" + +#: core/validators.py:63 +msgid "This value must contain only letters, numbers and underscores." +msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _" + +#: core/validators.py:67 +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _ សញ្ញា - ឬ សញ្ញា / ។" + +#: core/validators.py:71 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _ សញ្ញា - ។" + +#: core/validators.py:75 +msgid "Uppercase letters are not allowed here." +msgstr "មិនអនុញ្ញាតអោយសរសេរអក្សរធំ។" + +#: core/validators.py:79 +msgid "Lowercase letters are not allowed here." +msgstr "មិនអនុញ្ញាតអោយសរសេរអក្សរតូច។" + +#: core/validators.py:86 +msgid "Enter only digits separated by commas." +msgstr "បំពេញតែលេខហើយផ្តាច់ចេញពីគ្នាដោយសញ្ញាក្បៀស។" + +#: core/validators.py:98 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "បំពេញអ៊ីម៉ែលហើយផ្តាច់ចេញពីគ្នាដោយសញ្ញាក្បៀស។" + +#: core/validators.py:102 +msgid "Please enter a valid IP address." +msgstr "សូមបំពេញអាស័យដ្ឋាន IP។" + +#: core/validators.py:106 +msgid "Empty values are not allowed here." +msgstr "មិនអនុញ្ញាតអោយមានចំនួនទទេ។" + +#: core/validators.py:110 +msgid "Non-numeric characters aren't allowed here." +msgstr "មិនអនុញ្ញាតអោយសរសេរអក្សរដែលមិនមែនជាលេខ។" + +#: core/validators.py:114 +msgid "This value can't be comprised solely of digits." +msgstr "មិនអាចអនុញ្ញាតអោយមានតែចំនួនលេខ។" + +#: core/validators.py:119 +msgid "Enter a whole number." +msgstr "បំពេញចំនួនទាំងអស់។" + +#: core/validators.py:123 +msgid "Only alphabetical characters are allowed here." +msgstr "អនុញ្ញាតអោយសរសេរតែអក្សរឡាតាំង។" + +#: core/validators.py:138 +msgid "Year must be 1900 or later." +msgstr "ត្រូវបំពេញឆ្នាំចាប់ពី ១៩០០។" + +#: core/validators.py:142 +#, python-format +msgid "Invalid date: %s." +msgstr "កាលបរិច្ឆេទមិនត្រឹមត្រូវ : %s។" + +#: core/validators.py:146 +#: db/models/fields/__init__.py:415 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "សូមបំពេញកាលបរិច្ឆេទក្នុងទំរង់ជា YYYY-MM-DD ។" + +#: core/validators.py:151 +msgid "Enter a valid time in HH:MM format." +msgstr "សូមបំពេញពេលវេលាក្នុងទំរង់ជា HH:MM ។" + +#: core/validators.py:155 +#: db/models/fields/__init__.py:477 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "សូមបំពេញកាលបរិច្ឆេទក្នុងទំរង់ជា YYYY-MM-DD HH:MM ។" + +#: core/validators.py:160 +msgid "Enter a valid e-mail address." +msgstr "សូមបំពេញអ៊ីមែល" + +#: core/validators.py:172 +#: core/validators.py:401 +#: forms/__init__.py:661 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "មិនមានឯកសារត្រូវបានជ្រើសរើស។ សូមពិនិត្យប្រភេទឯកសារម្តងទៀត។" + +#: core/validators.py:176 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "រូបភាពដែលទាញយកមិនត្រឹមត្រូវ ប្រហែលជាមិនមែនជារូបភាព ឬក៏ជា រូបភាពខូច។" + +#: core/validators.py:183 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL រូបភាព %s មិនត្រឹមត្រូវ ។" + +#: core/validators.py:187 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "លេខទូរស័ព្ទត្រូវតែក្នុងទំរង់ជា XXX-XXX-XXXX ។ \"%s\" គឺមិនត្រឹមត្រូវទេ។" + +#: core/validators.py:195 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL ទៅកាន់វីដេអូ QuickTime %s មិនត្រឹមត្រូវ ។" + +#: core/validators.py:199 +msgid "A valid URL is required." +msgstr "URL មិនត្រឹមត្រូវ។" + +#: core/validators.py:213 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"ចាំបាច់ HTML ដែលត្រឹមត្រូវ។ ខាងក្រោម​គឺ​ជាកំហុស​:\n" +"%s" + +#: core/validators.py:220 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML មិនត្រឹមត្រូវ​: %s" + +#: core/validators.py:230 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL ដែលមិនត្រឹមត្រូវ: %s" + +#: core/validators.py:234 +#: core/validators.py:236 +#, python-format +msgid "The URL %s is a broken link." +msgstr "URL​ខូច: %s" + +#: core/validators.py:242 +msgid "Enter a valid U.S. state abbreviation." +msgstr "សូមបំពេញអក្សរកាត់រដ្ឋរបស់សហរដ្ឋអាមេរិកអោយបានត្រឹមត្រូវ។" + +#: core/validators.py:256 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "ពាក្យ %s មិនអនុញ្ញាតអោយប្រើនៅទីនេះទេ។" +msgstr[1] "ពាក្យ %s មិនអនុញ្ញាតអោយប្រើនៅទីនេះទេ។" + +#: core/validators.py:263 +#, python-format +msgid "This field must match the '%s' field." +msgstr "ទិន្នន័យនៅកន្លែងនេះត្រូវតែដូច '%s'  ។" + +#: core/validators.py:282 +msgid "Please enter something for at least one field." +msgstr "សូមបំពេញទិន្នន័យយ៉ាងតិចនៅមួយ​កន្លែង។" + +#: core/validators.py:291 +#: core/validators.py:302 +msgid "Please enter both fields or leave them both empty." +msgstr "អាចបំពេញ ឬ មិនបំពេញ ទិន្នន័យនៅកន្លែងទាំងពីរនេះ។" + +#: core/validators.py:309 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "ទិន្នន័យកន្លែងនេះត្រូវបំពេញ​ប្រសិន​បើ %(field)s មានតំលៃ %(value)s" + +#: core/validators.py:321 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "ទិន្នន័យកន្លែងនេះត្រូវបំពេញ​ប្រសិន​បើ %(field)s មិនមានតំលៃ %(value)s" + +#: core/validators.py:340 +msgid "Duplicate values are not allowed." +msgstr "មិនអនុញ្ញាតអោយមានតំលៃដូចគ្នា។" + +#: core/validators.py:363 +#, python-format +msgid "This value must be a power of %s." +msgstr "ចំនួនត្រូវតែជាស្វ័យគុណរបស់ %s។" + +#: core/validators.py:374 +msgid "Please enter a valid decimal number." +msgstr "សូមបំពេញចំនួនទសភាគអោយបានត្រឹមត្រូវ។" + +#: core/validators.py:378 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "សូមបំពេញចំនួនទសភាគយ៉ាងតិច  %sខ្ទង់។" +msgstr[1] "សូមបំពេញចំនួនទសភាគយ៉ាងតិច  %sខ្ទង់។" + +#: core/validators.py:381 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "សូមបំពេញចំនួនទសភាគទាំងអស់  %sខ្ទង់។" +msgstr[1] "សូមបំពេញចំនួនទសភាគទាំងអស់  %sខ្ទង់។" + +#: core/validators.py:384 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "សូមបំពេញចំនួនទសភាគយ៉ាងច្រើន  %sខ្ទង់។" +msgstr[1] "សូមបំពេញចំនួនទសភាគយ៉ាងច្រើន  %sខ្ទង់។" + +#: core/validators.py:394 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "ឯកសារដែលទាញយកត្រូវមានទំហំយ៉ាងតិច %s បៃ។" + +#: core/validators.py:395 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "ឯកសារដែលទាញយកត្រូវមានទំហំអតិបរិមា %s បៃ។" + +#: core/validators.py:412 +msgid "The format for this field is wrong." +msgstr "ទំរង់ទិន្នន័យនៅកន្លែងនេះមិនត្រឹមត្រូវ។" + +#: core/validators.py:427 +msgid "This field is invalid." +msgstr "ទិន្នន័យកន្លែងនេះមិនត្រឹមត្រូវ។" + +#: core/validators.py:463 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "មិនអាចទាញយកពី  %s។" + +#: core/validators.py:466 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "ទទួលចំលើយ ​Content-Type header '%(contenttype)s' មិនត្រឹមត្រូវពី URL %(url)s ។" + +#: core/validators.py:499 +#, python-format +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "សូមបិទ ថាក់(tag) ដែលមិនទាន់បិទ %(tag)s នៅបន្ទាត់ %(line)s ។ (បន្ទាត់ដែលចាប់ផ្តើមជាមួយ \"%(start)s\".)" + +#: core/validators.py:503 +#, python-format +msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" +msgstr "ពាក្យមួយចំនួននៅបន្ទាត់ %(line)s មិនអនុញ្ញាតអោយប្រើទេ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\"។)" + +#: core/validators.py:508 +#, python-format +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "\"%(attr)s\" on line %(line)s គឺជាគុណលក្ខណៈ(attribute) មិនត្រឹមត្រូវ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)" + +#: core/validators.py:513 +#, python-format +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "\"<%(tag)s>\" ថាក់(tag)នៅបន្ទាត់ %(line)s គឺមិនត្រឹមត្រូវ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)" + +#: core/validators.py:517 +#, python-format +msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" +msgstr "ថាក់ (tag)​នៅបន្ទាត់ %(line)s បាត់គុណលក្ខណៈ មួយ ឬ ច្រើន។(បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)" + +#: core/validators.py:522 +#, python-format +msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" +msgstr "គុណលក្ខណៈ \"%(attr)s\" នៅបន្ទាត់ %(line)s ពុំមានតំលៃត្រឹមត្រូវទេ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "The %(verbose_name)s បានផ្លាស់ប្តូរដោយជោគជ័យ។" + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "The %(verbose_name)s​ បានលប់។ " + +#: db/models/manipulators.py:302 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s ជាមួយនឹងប្រភេទ %(type)s នេះមានម្តងរួចហើយនៅជាមួយ %(field)s" + +#: db/models/fields/__init__.py:40 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s ជាមួយឈ្មោះ %(fieldname)s នេះមានរួចរាល់ហើយ។" + +#: db/models/fields/__init__.py:114 +#: db/models/fields/__init__.py:265 +#: db/models/fields/__init__.py:551 +#: db/models/fields/__init__.py:562 +#: forms/__init__.py:346 +msgid "This field is required." +msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។" + +#: db/models/fields/__init__.py:340 +msgid "This value must be an integer." +msgstr "តំលៃនេះត្រូវតែជាចំនួនលេខ។" + +#: db/models/fields/__init__.py:372 +msgid "This value must be either True or False." +msgstr "តំលៃអាចជា True ឬ False។" + +#: db/models/fields/__init__.py:388 +msgid "This field cannot be null." +msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។" + +#: db/models/fields/__init__.py:571 +msgid "Enter a valid filename." +msgstr "សូមបំពេញឈ្មោះឯកសារអោយបានត្រឹមត្រូវ។" + +#: db/models/fields/related.py:51 +#, python-format +msgid "Please enter a valid %s." +msgstr "សូមបំពេញ  %s អោយបានត្រឹមត្រូវ។" + +#: db/models/fields/related.py:618 +msgid "Separate multiple IDs with commas." +msgstr "ផ្តាច់លេច ID ចេញពីគ្នាដោយក្បៀស។" + +#: db/models/fields/related.py:620 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "សូមចុចប៉ូតុន \"Control\", ឬ \"Command\" ចំពោះកុំព្យូទ័រ Mac, ដើម្បីជ្រើសរើសច្រើនជាងមួយ។" + +#: db/models/fields/related.py:664 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "សូមបំពេញលេខ %(self)s អោយបានត្រឹមត្រូវ។ តំលៃ %(value)r នេះមិនត្រឹមត្រូវទេ។" +msgstr[1] "សូមបំពេញលេខ %(self)s អោយបានត្រឹមត្រូវ។ តំលៃ %(value)r នេះមិនត្រឹមត្រូវទេ។" + +#: forms/__init__.py:381 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "អត្ថបទរបស់អ្នកតិចជាង %s អក្សរ។" +msgstr[1] "" + +msgid "Ensure this value has at most %d characters." +msgstr "អត្ថបទរបស់អ្នកត្រូវតិចជាង %d អក្សរ។" + +#: newforms/fields.py:105 +#: newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "អត្ថបទរបស់អ្នកត្រូវច្រើនជាង  %d អក្សរ។" + +#: forms/__init__.py:386 +msgid "Line breaks are not allowed here." +msgstr "បន្ទាត់មិនអនុញ្ញាតនៅទីនេះទេ។" + +#: forms/__init__.py:487 +#: forms/__init__.py:560 +#: forms/__init__.py:599 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "សូមជ្រើសរើស ; '%(data)s' មិនមាននៅក្នុង %(choices)s" + +#: forms/__init__.py:663 +msgid "The submitted file is empty." +msgstr "ពុំមានឯកសារ។​" + +#: forms/__init__.py:719 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "សូម​បំពេញ​លេខចន្លោះ​ពី​ -៣២.៧៦៧ និង ៣២.៧៦៧" + +#: forms/__init__.py:729 +msgid "Enter a positive number." +msgstr "សូមបំពេញចំនួន​វិជ្ជមាន" + +#: forms/__init__.py:739 +msgid "Enter a whole number between 0 and 32,767." +msgstr "សូម​បំពេញ​លេខចន្លោះ​ពី​ ០ និង ៣២.៧៦៧" + +#: template/defaultfilters.py:401 +msgid "yes,no,maybe" +msgstr "យល់ព្រម មិនយល់ព្រម​ ប្រហែល" + +msgid "Your username and password didn't match. Please try again." +msgstr "ឈ្មោះជាសមាជិក និង ពាក្យ​សំងាត់​មិន​ត្រឹមត្រូវ។" + +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "អ៊ីមែល នេះ មិនមាន​នៅក្នុង​ទិន្នន័យ​របស់​យើង​ខ្ញុំ​ទេ។" + +msgid "5-30 alphanumeric characters or underscores." +msgstr "ត្រូវបំពេញអក្សរឡាតាំង (អក្សរ លេខ ឬ សញ្ញា _) ចំនួនពី​៥​ ទៅ ៣០។" + +msgid "Must be 5-30 alphanumeric characters or underscores." +msgstr "ត្រូចវបំពេញអក្សរឡាតាំង (អក្សរ លេខ ឬ សញ្ញា _) ចំនួនពី​៥​ ទៅ ៣០។" + +msgid "Confirm password" +msgstr "បំពេញពាក្យសំងាត់ម្តងទៀត" + +msgid "Please make sure your passwords match." +msgstr "ពាក្យសំងាត់មិនដូចគ្នា។" + +msgid "The username \"%s\" is already taken." +msgstr "ឈ្មោះជាសមាជិក  \"%s\" ត្រូវបានគេយករួចហើយ។ សូមជ្រើសរើសឈ្មោះជាសមាជិកផ្សេងទៀត។" + +msgid "The email \"%s\" existed." +msgstr "អ៊ីមែល  \"%s\" មានរួចហើយ។ សូមជ្រើសរើសអ៊ីមែលផ្សេងទៀត។" + +msgid "Audio" +msgstr "ចំរៀង" + +msgid "Video id" +msgstr "លេខ វីដេអូ" + +msgid "Video title" +msgstr "ចំណងជើើង  វីដេអូ" + +msgid "Video length" +msgstr "ទំហំ  វីដេអូ" + +msgid "Outside url" +msgstr "គេហទំព័រ​ពីក្រៅ" + +msgid "Receive name" +msgstr "ឈ្មោះ​អ្នក​ទទួល" + +msgid "Receive email" +msgstr "អ៊ីមែល​របស់​​អ្នក​ទទួល" + +msgid "Message" +msgstr "អត្ថបទ" + +msgid "Sending date" +msgstr "បញ្ជូន​នៅ​ថ្ងៃ" + +msgid "Received date" +msgstr "​ថ្ងៃ​ទទួល" + +msgid "Send as private message" +msgstr "ជាអត្ថបទ​ផ្ទាល់​ខ្លួន​" + +msgid "Sent" +msgstr "បានបញ្ជូន​" + +msgid "Question" +msgstr "សំណួរ" + +msgid "Answer" +msgstr "ចំលើយ​" + +msgid "Tags" +msgstr "ប្រភេទ​" + +msgid "Business" +msgstr "ពាណិជ្ជកម្ម" + +msgid "Beauty & Style" +msgstr "សោភ័ណភាព និង ម៉ូត​" + +msgid "Education" +msgstr "ការអប់រំ​" + +msgid "Environment" +msgstr "បរិដ្ឋាន" + +msgid "Family & Relationships" +msgstr "គ្រួសារ និង សេចក្តីស្នេហា" + +msgid "Food & Drink" +msgstr "ម្ហូប និង ភេសជ្ជៈ" + +msgid "General" +msgstr "ផ្សេងៗ" + +msgid "Games & Recreation" +msgstr "កំសាន្ត និង ហ្គេម" + +msgid "Health" +msgstr "សុខភាព" + +msgid "Pets" +msgstr "សត្វ ចិញ្ជឹម" + +msgid "Politics & Government" +msgstr "រដ្ឋាភិបាល និង នយោបាយ" + +msgid "Sports" +msgstr "កីឡា" + +msgid "Technology" +msgstr "បច្ចេកវិទ្សា" + +msgid "Travel" +msgstr "ដំណើរកំសាន្ត" + +msgid "Source" +msgstr "ដកស្រង់ចេញ" + +msgid "Left column" +msgstr "ជួរទីមួយ" + +msgid "Right column" +msgstr "ជួរទីពីរ" + +msgid "Start date" +msgstr "ចាប់ផ្តើមនៅ" + +msgid "End date" +msgstr "បញ្ជប់នៅ" + diff --git a/django/conf/locale/km/LC_MESSAGES/djangojs.mo b/django/conf/locale/km/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..61d8cdc8fc Binary files /dev/null and b/django/conf/locale/km/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/km/LC_MESSAGES/djangojs.po b/django/conf/locale/km/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..031b302dd6 --- /dev/null +++ b/django/conf/locale/km/LC_MESSAGES/djangojs.po @@ -0,0 +1,108 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: 01\n" +"Report-Msgid-Bugs-To: sengtha@e-khmer.com\n" +"POT-Creation-Date: 2007-01-15 15:43+0200\n" +"PO-Revision-Date: 2007-01-21 01:25+0900\n" +"Last-Translator: Chay Sengtha \n" +"Language-Team: Chay Sengtha \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "%s ដែលអាច​ជ្រើសរើសបាន" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "ជ្រើសរើសទាំងអស់" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "បន្ថែម" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "លប់ចេញ" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "%s ដែលបានជ្រើសរើស" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "សូមជ្រើសរើសយក" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "លប់ចេញទាំងអស់" + +#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/calendar.js:24 +msgid "January February March April May June July August September October November December" +msgstr "January February March April May June July August September October November December" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "S M T W T F S" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "ឥឡូវនេះ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "នាឡិការ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "ជ្រើសរើសម៉ោង" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "អធ្រាត្រ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "ម៉ោង ៦ ព្រឹក" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "ពេលថ្ងែត្រង់" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "លប់ចោល" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "ថ្ងៃនេះ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "ប្រក្រតិទិន" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "ម្សិលមិញ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "ថ្ងៃស្អែក" + diff --git a/django/conf/locale/ko/LC_MESSAGES/django.mo b/django/conf/locale/ko/LC_MESSAGES/django.mo index 58e97b496e..9b576377ae 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 476f7316ba..264c5f630d 100644 --- a/django/conf/locale/ko/LC_MESSAGES/django.po +++ b/django/conf/locale/ko/LC_MESSAGES/django.po @@ -825,12 +825,12 @@ msgstr "%d 자 이상 입력해 주세요." #: newforms/fields.py:130 #, python-format msgid "Ensure this value is less than or equal to %s." -msgstr "%s 자 이하로 입력해 주세요." +msgstr "%s 이하의 값을 입력해 주세요." #: newforms/fields.py:132 #, python-format msgid "Ensure this value is greater than or equal to %s." -msgstr "%s 자 이상 입력해 주세요." +msgstr "%s 이상의 값을 입력해 주세요." #: newforms/fields.py:165 msgid "Enter a valid date." diff --git a/django/conf/locale/no/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo index 7048e3079d..bd82c8952e 100644 Binary files a/django/conf/locale/no/LC_MESSAGES/django.mo and b/django/conf/locale/no/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/no/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po index ea388cfd81..5894d3b6e8 100644 --- a/django/conf/locale/no/LC_MESSAGES/django.po +++ b/django/conf/locale/no/LC_MESSAGES/django.po @@ -1,1306 +1,593 @@ -# translation of django.po to +# translation of django.po to norwegian # Copyright (C) 2005 and beyond -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the Django package. # Espen Grindhaug , Nov 2005. # -# msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" -"PO-Revision-Date: 2007-04-27 06:48+0200\n" -"Last-Translator: \n" -"Language-Team: \n" +"PO-Revision-Date: 2007-08-29 18:22+0200\n" +"Last-Translator: jonklo\n" +"Language-Team: Norsk \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 -msgid "object ID" -msgstr "objekt ID" - -#: contrib/comments/models.py:68 -msgid "headline" -msgstr "overskrift" - -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 -msgid "comment" -msgstr "kommentar" - -#: contrib/comments/models.py:70 -msgid "rating #1" -msgstr "rangering #1 " - -#: contrib/comments/models.py:71 -msgid "rating #2" -msgstr "rangering #2" - -#: contrib/comments/models.py:72 -msgid "rating #3" -msgstr "rangering #3" - -#: contrib/comments/models.py:73 -msgid "rating #4" -msgstr "rangering #4" - -#: contrib/comments/models.py:74 -msgid "rating #5" -msgstr "rangering #5" - -#: contrib/comments/models.py:75 -msgid "rating #6" -msgstr "rangering #6" - -#: contrib/comments/models.py:76 -msgid "rating #7" -msgstr "rangering #7" - -#: contrib/comments/models.py:77 -msgid "rating #8" -msgstr "rangering #8" - -#: contrib/comments/models.py:82 -msgid "is valid rating" -msgstr "er gyldig rangering" - -#: contrib/comments/models.py:83 contrib/comments/models.py:169 -msgid "date/time submitted" -msgstr "dato/tid for innsendelse" - -#: contrib/comments/models.py:84 contrib/comments/models.py:170 -msgid "is public" -msgstr "er tilgjengelig for alle" - -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 -msgid "IP address" -msgstr "IP adresse" - -#: contrib/comments/models.py:86 -msgid "is removed" -msgstr "er fjernet" - -#: contrib/comments/models.py:86 -msgid "" -"Check this box if the comment is inappropriate. A \"This comment has been " -"removed\" message will be displayed instead." -msgstr "Aktiver denne avkryssningsboksen hvis kommentaren er upasende. Beskjeden \"Denne kommentaren er blitt fjernet\" vil bli vist istedet." - -#: contrib/comments/models.py:91 -msgid "comments" -msgstr "kommentarer" - -#: contrib/comments/models.py:131 contrib/comments/models.py:207 -msgid "Content object" -msgstr "innholdsobjekt" - -#: contrib/comments/models.py:159 +#: db/models/manipulators.py:309 #, python-format -msgid "" -"Posted by %(user)s at %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" -msgstr "" -"Sendt av %(user)s på %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s." -#: contrib/comments/models.py:168 -msgid "person's name" -msgstr "personens navn" - -#: contrib/comments/models.py:171 -msgid "ip address" -msgstr "IP adresse" - -#: contrib/comments/models.py:173 -msgid "approved by staff" -msgstr "godkjent av moderator" - -#: contrib/comments/models.py:176 -msgid "free comment" -msgstr "åpen kommentar" - -#: contrib/comments/models.py:177 -msgid "free comments" -msgstr "åpne kommentarer" - -#: contrib/comments/models.py:233 -msgid "score" -msgstr "poeng" - -#: contrib/comments/models.py:234 -msgid "score date" -msgstr "poeng dato" - -#: contrib/comments/models.py:237 -msgid "karma score" -msgstr "karma poeng" - -#: contrib/comments/models.py:238 -msgid "karma scores" -msgstr "karma poeng" - -#: contrib/comments/models.py:242 -#, python-format -msgid "%(score)d rating by %(user)s" -msgstr "%(score)d rangering av %(user)s" - -#: contrib/comments/models.py:258 -#, python-format -msgid "" -"This comment was flagged by %(user)s:\n" -"\n" -"%(text)s" -msgstr "" -"Denne kommentaren er flagget av %(user)s:\n" -"\n" -"%(text)s" - -#: contrib/comments/models.py:265 -msgid "flag date" -msgstr "flagg dato" - -#: contrib/comments/models.py:268 -msgid "user flag" -msgstr "brukerflag" - -#: contrib/comments/models.py:269 -msgid "user flags" -msgstr "brukerflag" - -#: contrib/comments/models.py:273 -#, python-format -msgid "Flag by %r" -msgstr "Flagg med %r" - -#: contrib/comments/models.py:278 -msgid "deletion date" -msgstr "fjernet dato" - -#: contrib/comments/models.py:280 -msgid "moderator deletion" -msgstr "fjernet av moderator" - -#: contrib/comments/models.py:281 -msgid "moderator deletions" -msgstr "fjernet av moderator" - -#: contrib/comments/models.py:285 -#, python-format -msgid "Moderator deletion by %r" -msgstr "Fjernet av moderator med %r" - -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Anonyme brukere kan ikke stemme" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "Ikke gyldig kommentar ID" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "Du kan ikke stemme på deg selv" - -#: contrib/comments/views/comments.py:28 -msgid "This rating is required because you've entered at least one other rating." -msgstr "Denne rangeringen er påkrevd fordi du har rangert en eller flere ting fra før " - -#: contrib/comments/views/comments.py:112 -#, python-format -msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" -"\n" -"%(text)s" -msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" -"\n" -"%(text)s" -msgstr[0] "" -"Denne kommentaren var skrevet av en bruker som har fra før skrevet under %" -"(count)s kommentarer:\n" -"\n" -"%(text)s" -msgstr[1] "" -"Denne kommentaren var skrevet av en bruker som har fra før skrevet under %" -"(count)s kommentarer:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:117 -#, python-format -msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" -msgstr "" -"Denne kommentaren er skrevet av en upålitelig bruker:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:189 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Bare POST er tillatt" - -#: contrib/comments/views/comments.py:193 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "En eller flere av feltene som er påkrevd ble ikke sendt." - -#: contrib/comments/views/comments.py:197 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "Noen har endret på komentar feltene (sikkerhets advarsel)" - -#: contrib/comments/views/comments.py:207 -#: contrib/comments/views/comments.py:292 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "Skjemaet hadde en ugyldig verdi - objekt IDen var ugyldig" - -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Kommentar skjemaet returnerte ikke et 'forhåndsvisning' eller 'post' objekt" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Brukernavn:" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Passord:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Har du glemt passordet ditt ?" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Log out" -msgstr "Log ut" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Rangeringer" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Påkrevd" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "Valgfri" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Send et foto" - -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Kommentar:" - -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -msgid "Preview comment" -msgstr "Forhåndvis kommentar" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Ditt navn:" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"

                                        By %s:

                                        \n" -"
                                          \n" -msgstr "" -"

                                          Av %s:

                                          \n" -"
                                            \n" - -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 -msgid "All" -msgstr "Alle" - -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "Når som helst" - -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "I dag" - -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "Siste 7 dager" - -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "Denne måneden" - -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "I år" - -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Ja" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Nei" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Ukjent" - -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "tid for handling" - -#: contrib/admin/models.py:19 -msgid "object id" -msgstr "objekt id" - -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "objekt repr" - -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "handlingsflagg" - -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "endre melding" - -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "logg post" - -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "logg poster" - -#: contrib/admin/templatetags/admin_list.py:228 -msgid "All dates" -msgstr "Alle datoer" - -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Vennligst angi korrekt brukernavn og passord. Merk at små og " -"store bokstaver er betraktet ulikt." - -#: contrib/admin/views/decorators.py:23 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Logg inn" - -#: contrib/admin/views/decorators.py:61 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "Du må logge inn igjen, fordi økten din har gått ut, men innlegget ditt ble lagret." - -#: contrib/admin/views/decorators.py:68 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Det ser ut som om nettleseren din ikke støtter informasjonskapsler " -"('cookies'). Vennligst konfigurer nettleseren din, og prøv igjen." - -#: contrib/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "Brukernavnet kan ikke inneholde '@'" - -#: contrib/admin/views/decorators.py:84 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "E-post adressen din er ikke brukernavnet ditt, prøv '%s' i stede." - -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "Nettsted administrasjon" - -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" ble lagt inn i databasen." - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "Du kan endre under" - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 -#, python-format -msgid "You may add another %s below." -msgstr "Du kan legge til en ny %s under." - -#: contrib/admin/views/main.py:290 -#, python-format -msgid "Add %s" -msgstr "Ny %s" - -#: contrib/admin/views/main.py:336 -#, python-format -msgid "Added %s." -msgstr "La til %s" - -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 +#: db/models/manipulators.py:310 core/validators.py:275 +#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 msgid "and" msgstr "og" -#: contrib/admin/views/main.py:338 +#: db/models/fields/__init__.py:49 #, python-format -msgid "Changed %s." -msgstr "Endret %s." +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s med %(fieldname)s finnes allerede." -#: contrib/admin/views/main.py:340 +#: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313 +#: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732 +#: oldforms/__init__.py:373 newforms/models.py:193 newforms/fields.py:92 +#: newforms/fields.py:490 newforms/fields.py:566 newforms/fields.py:577 +msgid "This field is required." +msgstr "Dette feltet er påkrevd." + +#: db/models/fields/__init__.py:411 +msgid "This value must be an integer." +msgstr "Denne verdien må være et heltall." + +#: db/models/fields/__init__.py:446 +msgid "This value must be either True or False." +msgstr "Denne verdien må være enten \"True\" eller \"False\"." + +#: db/models/fields/__init__.py:467 +msgid "This field cannot be null." +msgstr "Dette feltet kan ikke være null/tom." + +#: db/models/fields/__init__.py:501 core/validators.py:155 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD format." + +#: db/models/fields/__init__.py:570 core/validators.py:164 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM format." + +#: db/models/fields/__init__.py:631 +msgid "This value must be a decimal number." +msgstr "Denne verdien må være et desimaltall." + +#: db/models/fields/__init__.py:741 +msgid "Enter a valid filename." +msgstr "Skriv inn et godkjent filnavn." + +#: db/models/fields/__init__.py:883 +msgid "This value must be either None, True or False." +msgstr "Denne verdien må være enten None, True eller False." + +#: db/models/fields/related.py:55 #, python-format -msgid "Deleted %s." -msgstr "Slettet %s." +msgid "Please enter a valid %s." +msgstr "Vennligst skriv inn en/et gyldig %s." -#: contrib/admin/views/main.py:343 -msgid "No fields changed." -msgstr "Ingen felt endret." +#: db/models/fields/related.py:658 +msgid "Separate multiple IDs with commas." +msgstr "Separer flere ID-er med komma." -#: contrib/admin/views/main.py:346 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" ble endret." - -#: contrib/admin/views/main.py:354 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under." - -#: contrib/admin/views/main.py:392 -#, python-format -msgid "Change %s" -msgstr "Endre %s" - -#: contrib/admin/views/main.py:470 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:475 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "En eller flere %(fieldname)s i %(name)s:" - -#: contrib/admin/views/main.py:508 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" ble slettet." - -#: contrib/admin/views/main.py:511 -msgid "Are you sure?" -msgstr "Er du sikker?" - -#: contrib/admin/views/main.py:533 -#, python-format -msgid "Change history: %s" -msgstr "Endre historien: %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s" -msgstr "Velg %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s to change" -msgstr "Velg %s for å endre" - -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 -msgid "Integer" -msgstr "Heltall" - -#: contrib/admin/views/doc.py:278 -msgid "Boolean (Either True or False)" -msgstr "Boolean (Enten \"True\" eller \"False\")" - -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Tekst (opp til %(maxlength)s tegn)" - -#: contrib/admin/views/doc.py:280 -msgid "Comma-separated integers" -msgstr "Heltall skilt med kommaer" - -#: contrib/admin/views/doc.py:281 -msgid "Date (without time)" -msgstr "Dato (uten tid)" - -#: contrib/admin/views/doc.py:282 -msgid "Date (with time)" -msgstr "Dato/tid" - -#: contrib/admin/views/doc.py:283 -msgid "E-mail address" -msgstr "E-post adresse" - -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 -msgid "File path" -msgstr "Sti til fil" - -#: contrib/admin/views/doc.py:285 -msgid "Decimal number" -msgstr "Desimal tall" - -#: contrib/admin/views/doc.py:291 -msgid "Boolean (Either True, False or None)" -msgstr "Boolean (enten \"True\", \"False\" eller \"None\")" - -#: contrib/admin/views/doc.py:292 -msgid "Relation to parent model" -msgstr "Relasjon til forelder modell" - -#: contrib/admin/views/doc.py:293 -msgid "Phone number" -msgstr "Telefonnummer" - -#: contrib/admin/views/doc.py:298 -msgid "Text" -msgstr "Tekst" - -#: contrib/admin/views/doc.py:299 -msgid "Time" -msgstr "Tid" - -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admin/views/doc.py:301 -msgid "U.S. state (two uppercase letters)" -msgstr "Stat (i USA, to store bokstaver)" - -#: contrib/admin/views/doc.py:302 -msgid "XML text" -msgstr "XML tekst" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "Dokumentasjon" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Change password" -msgstr "Endre passord" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Home" -msgstr "Hjem" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 -msgid "History" -msgstr "Historie" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Dato/tid" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Bruker" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Funksjon" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j. M U - h:i" - -#: contrib/admin/templates/admin/object_history.html:36 +#: db/models/fields/related.py:660 msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" -"Dette objektet har ingen endrings historie. Den var sannsynligvis ikke laget " -"via denne siden" +"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en." -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django administrasjonsside" +#: db/models/fields/related.py:707 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig." +msgstr[1] "" +"Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige." -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Django administrasjon" +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arabisk" -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Tjener feil" +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengalsk" -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Tjener feil (500)" +#: conf/global_settings.py:41 +msgid "Bulgarian" +msgstr "Bulgarsk" -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Tjener feil (500)" +#: conf/global_settings.py:42 +msgid "Catalan" +msgstr "Katalansk" -#: contrib/admin/templates/admin/500.html:10 +#: conf/global_settings.py:43 +msgid "Czech" +msgstr "Tsjekkisk" + +#: conf/global_settings.py:44 +msgid "Welsh" +msgstr "Walisisk" + +#: conf/global_settings.py:45 +msgid "Danish" +msgstr "Dansk" + +#: conf/global_settings.py:46 +msgid "German" +msgstr "Tysk" + +#: conf/global_settings.py:47 +msgid "Greek" +msgstr "Gresk" + +#: conf/global_settings.py:48 +msgid "English" +msgstr "Engelsk" + +#: conf/global_settings.py:49 +msgid "Spanish" +msgstr "Spansk" + +#: conf/global_settings.py:50 +msgid "Argentinean Spanish" +msgstr "Argentinsk spansk" + +#: conf/global_settings.py:51 +msgid "Persian" +msgstr "Persisk" + +#: conf/global_settings.py:52 +msgid "Finnish" +msgstr "Finsk" + +#: conf/global_settings.py:53 +msgid "French" +msgstr "Fransk" + +#: conf/global_settings.py:54 +msgid "Galician" +msgstr "Galisisk" + +#: conf/global_settings.py:55 +msgid "Hungarian" +msgstr "Ungarsk" + +#: conf/global_settings.py:56 +msgid "Hebrew" +msgstr "Hebraiske" + +#: conf/global_settings.py:57 +msgid "Croatian" +msgstr "Kroatisk" + +#: conf/global_settings.py:58 +msgid "Icelandic" +msgstr "Islandsk" + +#: conf/global_settings.py:59 +msgid "Italian" +msgstr "Italiensk" + +#: conf/global_settings.py:60 +msgid "Japanese" +msgstr "Japansk" + +#: conf/global_settings.py:61 +msgid "Korean" +msgstr "Koreansk" + +#: conf/global_settings.py:62 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Latvian" +msgstr "Latvisk" + +#: conf/global_settings.py:64 +msgid "Macedonian" +msgstr "Makedonsk" + +#: conf/global_settings.py:65 +msgid "Dutch" +msgstr "Nederlandsk" + +#: conf/global_settings.py:66 +msgid "Norwegian" +msgstr "Norsk" + +#: conf/global_settings.py:67 +msgid "Polish" +msgstr "Polsk" + +#: conf/global_settings.py:68 +msgid "Portugese" +msgstr "Portugisisk" + +#: conf/global_settings.py:69 +msgid "Brazilian" +msgstr "Brasiliansk" + +#: conf/global_settings.py:70 +msgid "Romanian" +msgstr "Rumensk" + +#: conf/global_settings.py:71 +msgid "Russian" +msgstr "Russisk" + +#: conf/global_settings.py:72 +msgid "Slovak" +msgstr "Slovakisk" + +#: conf/global_settings.py:73 +msgid "Slovenian" +msgstr "Slovensk" + +#: conf/global_settings.py:74 +msgid "Serbian" +msgstr "Serbisk" + +#: conf/global_settings.py:75 +msgid "Swedish" +msgstr "Svensk" + +#: conf/global_settings.py:76 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:78 +msgid "Turkish" +msgstr "Tyrkisk" + +#: conf/global_settings.py:79 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: conf/global_settings.py:80 +msgid "Simplified Chinese" +msgstr "Simplifisert kinesisk" + +#: conf/global_settings.py:81 +msgid "Traditional Chinese" +msgstr "Tradisjonell kinesisk" + +#: core/validators.py:71 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Dette feltet kan bare inneholde bokstaver, nummer eller understreker." + +#: core/validators.py:75 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." msgstr "" -"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-" -"post, og vil bli fikset snart. Takk for din tålmodighet." +"Dette feltet kan bare inneholde bokstaver, nummer, understreker, bindestreker" +" eller skråstreker." -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Fant ikke siden" +#: core/validators.py:79 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Dette feltet kan bare inneholde bokstaver, nummer, understreker eller " +"bindestreker." -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Beklager, men siden du spør etter finnes ikke." +#: core/validators.py:83 +msgid "Uppercase letters are not allowed here." +msgstr "Store bokstaver er ikke tillatt her." -#: contrib/admin/templates/admin/index.html:17 +#: core/validators.py:87 +msgid "Lowercase letters are not allowed here." +msgstr "Små bokstaver er ikke tillatt her." + +#: core/validators.py:94 +msgid "Enter only digits separated by commas." +msgstr "Skriv inn bare tall, adskilt med komma." + +#: core/validators.py:106 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Skriv inn e-postadresser, adskilt med komma." + +#: core/validators.py:110 +msgid "Please enter a valid IP address." +msgstr "Vennligst skriv inn en gyldig IP-adresse." + +#: core/validators.py:114 +msgid "Empty values are not allowed here." +msgstr "Dette felte kan ikke være tomt." + +#: core/validators.py:118 +msgid "Non-numeric characters aren't allowed here." +msgstr "Dette feltet kan kun bestå av tall." + +#: core/validators.py:122 +msgid "This value can't be comprised solely of digits." +msgstr "Dette feltet kan ikke bare bestå av nummer." + +#: core/validators.py:127 newforms/fields.py:142 +msgid "Enter a whole number." +msgstr "Skriv inn et helt nummer." + +#: core/validators.py:131 +msgid "Only alphabetical characters are allowed here." +msgstr "Bare alfabetiske tegn er tillatt her." + +#: core/validators.py:146 +msgid "Year must be 1900 or later." +msgstr "År må være 1900 eller senere." + +#: core/validators.py:150 #, python-format -msgid "Models available in the %(name)s application." -msgstr "Modeller fra applikasjonen %(name)s." +msgid "Invalid date: %s" +msgstr "Ugyldig dato: %s" -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "Legg til" +#: core/validators.py:160 +msgid "Enter a valid time in HH:MM format." +msgstr "Skriv inn tiden i TT:MM format." -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Endre" +#: core/validators.py:169 newforms/fields.py:336 +msgid "Enter a valid e-mail address." +msgstr "Skriv inn en godkjent e-postadresse." -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Du har ikke rettigheter til å endre." +#: core/validators.py:181 core/validators.py:461 oldforms/__init__.py:686 +#: newforms/fields.py:376 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Ingen fil ble " -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Siste handlinger" +#: core/validators.py:185 newforms/fields.py:397 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Last opp et gyldig bilde. Filen du lastet opp var ikke et bilde, eller så var" +" det det ødelagt." -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Mine handlinger" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Ingen tilgjengelige" - -#: contrib/admin/templates/admin/change_list.html:11 +#: core/validators.py:192 #, python-format -msgid "Add %(name)s" -msgstr "Legg til %(name)s" +msgid "The URL %s does not point to a valid image." +msgstr "Internettadressen %s peker ikke til et gyldig bilde." -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Har du glemt passordet ditt?" +#: core/validators.py:196 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Telefonnummeret må være i XXX-XXX-XXXX format. \"%s\" er ugyldig." -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Velkommen" +#: core/validators.py:204 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "Internettadressen %s peker ikke til en gyldig QuickTime-video." -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Slett" +#: core/validators.py:208 +msgid "A valid URL is required." +msgstr "En gyldig internettadresse er påkrevd." -#: contrib/admin/templates/admin/delete_confirmation.html:14 +#: core/validators.py:222 #, python-format msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" +"Valid HTML is required. Specific errors are:\n" +"%s" msgstr "" -"Hivs du sletter %(object_name)s '%(object)s' vil du også slette relaterte " -"objekter, men du har ikke tillatelse til å slette de følgende objektene:" +"Gyldig HTML er påkrevd. Feilene var:\n" +"%s" -#: contrib/admin/templates/admin/delete_confirmation.html:21 +#: core/validators.py:229 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Ikke velformet XML: %s" + +#: core/validators.py:246 +#, python-format +msgid "Invalid URL: %s" +msgstr "Ugyldig URL: %s" + +#: core/validators.py:251 core/validators.py:253 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Internettadresse %s fører til en side som ikke eksisterer." + +#: core/validators.py:259 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Skriv inn en godkjent amerikansk delstatsforkortelse." + +#: core/validators.py:273 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Pass munnen din! Ordet %s er ikke tillatt her." +msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her." + +#: core/validators.py:280 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Dette feltet må være det samme som i '%s'-feltet." + +#: core/validators.py:299 +msgid "Please enter something for at least one field." +msgstr "Vennligst skriv inn noe i minst et felt." + +#: core/validators.py:308 core/validators.py:319 +msgid "Please enter both fields or leave them both empty." +msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke." + +#: core/validators.py:327 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Dette feltet må bare brukes hvis %(field)s er lik %(value)s" + +#: core/validators.py:340 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Dette feltet må bare brukes hvis %(field)s ikke er lik %(value)s" + +#: core/validators.py:359 +msgid "Duplicate values are not allowed." +msgstr "Like verdier er ikke tillatt." + +#: core/validators.py:374 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Denne verdien må være mellom %(lower)s og %(upper)s." + +#: core/validators.py:376 +#, python-format +msgid "This value must be at least %s." +msgstr "Denne verdien må minst være %s." + +#: core/validators.py:378 +#, python-format +msgid "This value must be no more than %s." +msgstr "Denne verdien kan ikke være mer enn %s." + +#: core/validators.py:414 +#, python-format +msgid "This value must be a power of %s." +msgstr "Denne verdien må være et kvadrat av %s." + +#: core/validators.py:424 +msgid "Please enter a valid decimal number." +msgstr "Vennligst skriv inn et gyldig desimaltall." + +#: core/validators.py:431 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Skriv inn et desimaltall med maks %s siffer." +msgstr[1] "Skriv inn et desimaltall med maks %s siffer." + +#: core/validators.py:434 #, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" -msgstr "" -"Er du sikker på at du vill slette %(object_name)s \"%(object)s\"? Alle de " -"følgende relaterte objektene vill bli slettet:" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Skriv inn et desimaltall hvor heltallsdelen er maks %s siffer." +msgstr[1] "Skriv inn et desimaltall hvor heltallsdelen er maks %s siffer." -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Ja, jeg er sikker" - -#: contrib/admin/templates/admin/filter.html:2 +#: core/validators.py:437 #, python-format -msgid " By %(title)s " -msgstr "Av %(title)s " +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Skriv inn et desimaltall med maks %s siffer bak komma." +msgstr[1] "Skriv inn et desimaltall med maks %s siffer bak komma." -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Gå" +#: core/validators.py:445 +msgid "Please enter a valid floating point number." +msgstr "Vennligst skriv inn et gyldig flyttall." -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Vis på nettsted" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Vennligst fiks feilen under." -msgstr[1] "Vennligst fiks feilene under." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Rekkefølge" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Rekkefølge:" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Lagre som ny" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Lagre og legg til en ny" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Lagre og fortsett å endre" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Lagre" - -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -msgid "Password change" -msgstr "Endre passord" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Passordet er endret" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Ditt passord er endret." - -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -#: contrib/admin/templates/registration/password_reset_done.html:4 -msgid "Password reset" -msgstr "Tilbakestill passord" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"Har du glemt passordet ditt? Skriv inn e-post adressen din under, så sender " -"vi deg et nytt passord via e-post." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "E-post adresse:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Tilbakestill mitt passord" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet idag." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Logg inn igjen" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Passordet ble tilbakestilt" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" -"Vi sender deg et nytt passord til e-post adressen du oppgav. Du villmotta det " -"snart." - -#: contrib/admin/templates/registration/password_change_form.html:12 -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 "" -"Venligst skriv inn ditt gamle passord, for sikkerthets grunner, så skriv inn " -"ditt nye passord to ganger slik at vi kan kontrollere at det er rett." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Gammelt passord:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Nytt passord:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Gjenta nytt passord:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Endre passord" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt" - -#: contrib/admin/templates/registration/password_reset_email.html:3 +#: core/validators.py:454 #, python-format -msgid "for your user account at %(site_name)s" -msgstr "for din konto hos %(site_name)s" +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Vær sikker på at fila du prøver å laste opp minst er %s bytes stor." -#: contrib/admin/templates/registration/password_reset_email.html:5 +#: core/validators.py:455 #, python-format -msgid "Your new password is: %(new_password)s" -msgstr "Ditt nye passord er: %(new_password)s" +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Vær sikker på at fila du prøver å laste opp ikke er mer enn %s bytes" +" stor." -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "Du kan endre dette passordet ved å gå til denne siden:" +#: core/validators.py:472 +msgid "The format for this field is wrong." +msgstr "Formatet i dette feltet er feil." -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "I tilfellet du har glemt brukernavnet ditt, så er det:" +#: core/validators.py:487 +msgid "This field is invalid." +msgstr "Dette feltet er ugyldig." -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Takk for at du bruker vår side!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 +#: core/validators.py:523 #, python-format -msgid "The %(site_name)s team" -msgstr "Hilsen %(site_name)s" +msgid "Could not retrieve anything from %s." +msgstr "Klarte ikke å hente noe fra %s." -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Bokmerker" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Dokumentasjon bokmerker" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +#: core/validators.py:526 +#, python-format msgid "" -"\n" -"

                                            To install bookmarklets, drag the link to your bookmarks\n" -"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" -"select the bookmarklet from any page in the site. Note that some of these\n" -"bookmarklets require you to be viewing the site from a computer designated\n" -"as \"internal\" (talk to your system administrator if you aren't sure if\n" -"your computer is \"internal\").

                                            \n" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" -"\n" -"

                                            For å installere bokmerker, dra linken til verktøylinja\n" -"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n" -"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n" -"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n" -"(kontakt din systemadministrator hvis du er usikker på om maskinen din er \"intern\").

                                            \n" +"Internettadressen %(url)s returnerte den ugyldige Content-Type-headeren " +"'%(contenttype)s'." -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Dokumentasjon for denne siden" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +#: core/validators.py:559 +#, python-format msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" msgstr "" -"Hopp fra hvilken som helst side til dokumentasjonen for visnings funksjonen " -"som laget siden." +"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med " +"\"%(start)s\".)" -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Vis objekt ID" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +#: core/validators.py:563 +#, python-format msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" msgstr "" -"Viser \"content-type\" og en unik ID for sider som representerer et enkelt " -"objekt." +"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linjen " +"starter med \"%(start)s\".)" -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Endre dette objektet (åpnes i dette vinduet)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Hopp til administrasjonsiden for sidene som representerer et enkelt objekt." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Endre dette objektet (åpnes i et nytt vindu)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "Samme som over, men åpner administrasjonsiden i et nytt vindu." - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Dato:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Tid:" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Nå:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Endre:" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "omadresser fra" - -#: contrib/redirects/models.py:8 +#: core/validators.py:568 +#, python-format msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" msgstr "" -"Dette burde vært en fullstendig sti, uten domene navnet. Foreksempel: '/" -"nyheter/les/" +"\"%(attr)s\" på linje %(line)s er et ugyldig attributt. (Linjen starter " +"med \"%(start)s\".)" -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "omadresser til" - -#: contrib/redirects/models.py:10 +#: core/validators.py:573 +#, python-format msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" msgstr "" -"Dette kan enten være en fullstendig sti (som over), eller en hel " -"internettadresse som starter med 'http://'" +"\"<%(tag)s>\" på linje %(line)s er et ugyldig element. (Linjen starter med " +"\"%(start)s\".)" -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "omadressering" - -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "omadresserelser" - -#: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "tittel" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "innhold" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "tillat kommentarer" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "mal navn" - -#: contrib/flatpages/models.py:13 +#: core/validators.py:577 +#, python-format msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" msgstr "" -"Eksempel: 'flatfiler/kontakt_side'. Hvis denne ikke denne er gitt, vill " -"'flatfiles/default' bli brukt." +"Et element på linje %(line)s mangler et av de påkrevde attributtene. (Linjen " +"starter med \"%(start)s\".)" -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "registrering kreves" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Hvis denne er krysset av er det bare brukere som er logget inn som kan se " -"siden." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "flatside" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "flatsider" - -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "navn" - -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "kodenavn" - -#: contrib/auth/models.py:17 -msgid "permission" -msgstr "rettighet" - -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -msgid "permissions" -msgstr "rettigheter" - -#: contrib/auth/models.py:29 -msgid "group" -msgstr "gruppe" - -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -msgid "groups" -msgstr "grupper" - -#: contrib/auth/models.py:55 -msgid "username" -msgstr "brukernavn" - -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "fornavn" - -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "etternavn" - -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "e-post adresse" - -#: contrib/auth/models.py:59 -msgid "password" -msgstr "passord" - -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Bruk '[algo]$[salt]$[hexdigest]'" - -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "administrasjons status" - -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "Bestemmer om brukeren kan logge inn på dette administrasjons sted." - -#: contrib/auth/models.py:61 -msgid "active" -msgstr "aktiv" - -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "super bruker" - -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "siste logg inn" - -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "registrerings dato" - -#: contrib/auth/models.py:66 +#: core/validators.py:582 +#, python-format msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" msgstr "" -"I tillegg til rettighetene som blir gitt manuelt, får også brukeren full " -"tilgang til gruppene han/hun er i." +"\"%(attr)s\"-attributtet på linje %(line)s har en ugyldig verdi. (Linjen " +"starter med \"%(start)s\".)" -#: contrib/auth/models.py:67 -msgid "user permissions" -msgstr "Rettigheter" +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s ble opprettet." -#: contrib/auth/models.py:70 -msgid "user" -msgstr "bruker" +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s ble oppdatert." -#: contrib/auth/models.py:71 -msgid "users" -msgstr "brukere" - -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "Personlig informasjon" - -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "Rettigheter" - -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "Viktige datoer" - -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "Grupper" - -#: contrib/auth/models.py:219 -msgid "message" -msgstr "Melding" - -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "Din nettleser ser ikkeut til å støtte informasjonskapsler (cookies). Informasjonskapsler er påkrevd for å logge inn." - -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "python modell klasse navn" - -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "innholds type" - -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "innholds typer" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "sesjon nøkkel" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "sesjon data" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "utløpsdato" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "sesjon" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "sesjoner" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "domene navn" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "vise navn" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "nettsted" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "nettsteder" - -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "j. M Y" - -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "j. M Y - h:i" - -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "h:i" +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s ble slettet." #: utils/dates.py:6 msgid "Monday" @@ -1330,127 +617,155 @@ msgstr "Lørdag" msgid "Sunday" msgstr "Søndag" -#: utils/dates.py:14 +#: utils/dates.py:10 +msgid "Mon" +msgstr "Man" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "Tirs" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "Ons" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "Tors" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "Fre" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "Lør" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "Søn" + +#: utils/dates.py:18 msgid "January" msgstr "Januar" -#: utils/dates.py:14 +#: utils/dates.py:18 msgid "February" msgstr "Februar" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "Mars" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "April" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "Mai" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "Juni" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "Juli" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "August" msgstr "August" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "September" msgstr "September" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "October" msgstr "Oktober" -#: utils/dates.py:15 +#: utils/dates.py:19 msgid "November" msgstr "November" -#: utils/dates.py:16 +#: utils/dates.py:20 msgid "December" msgstr "Desember" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jan" msgstr "jan" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "feb" msgstr "feb" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "mar" msgstr "mar" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "apr" msgstr "apr" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "may" msgstr "mai" -#: utils/dates.py:19 +#: utils/dates.py:23 msgid "jun" msgstr "jun" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "jul" msgstr "jul" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "aug" msgstr "aug" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "sep" msgstr "sep" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "oct" msgstr "okt" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "nov" msgstr "nov" -#: utils/dates.py:20 +#: utils/dates.py:24 msgid "dec" msgstr "des" -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Jan." msgstr "Jan." -#: utils/dates.py:27 +#: utils/dates.py:31 msgid "Feb." msgstr "Feb." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Aug." msgstr "Aug." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Sept." msgstr "Sept." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Oct." msgstr "Okt." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Nov." msgstr "Nov." -#: utils/dates.py:28 +#: utils/dates.py:32 msgid "Dec." msgstr "Des." @@ -1490,488 +805,1783 @@ msgid_plural "minutes" msgstr[0] "minutt" msgstr[1] "minutter" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "Bengalsk" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "Tsjekkisk" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "Walisisk" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "Dansk" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "Tysk" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "Gresk" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "Engelsk" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "Spansk" - -#: conf/global_settings.py:45 -msgid "French" -msgstr "Fransk" - -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "Galisisk" - -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "Ungarsk" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "Hebraiske" - -#: conf/global_settings.py:49 -msgid "Icelandic" -msgstr "Islandsk" - -#: conf/global_settings.py:50 -msgid "Italian" -msgstr "Italiensk" - -#: conf/global_settings.py:51 -msgid "Japanese" -msgstr "Japansk" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "Nederlandsk" - -#: conf/global_settings.py:53 -msgid "Norwegian" -msgstr "Norsk" - -#: conf/global_settings.py:54 -msgid "Brazilian" -msgstr "Brasiliansk" - -#: conf/global_settings.py:55 -msgid "Romanian" -msgstr "Rumensk" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "Russisk" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "Slovakisk" - -#: conf/global_settings.py:58 -msgid "Slovenian" -msgstr "Slovensk" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "Serbisk" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "Svensk" - -#: conf/global_settings.py:61 -msgid "Ukrainian" -msgstr "Ukrainsk" - -#: conf/global_settings.py:62 -msgid "Simplified Chinese" -msgstr "Simplifisert Kinesisk" - -#: conf/global_settings.py:63 -msgid "Traditional Chinese" -msgstr "Tradisjonell Kinesisk" - -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Dette feltet må bare inneholde bokstaver, nummer og understreker." - -#: core/validators.py:64 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." +#: utils/timesince.py:39 +#, python-format +msgid "%(number)d %(type)s" msgstr "" -"Dette feltet må bare inneholde bokstaver, nummer, understreker og " -"skråstreker." -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Stor bokstaver er ikke tillatt her." - -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Små bokstaver er ikke tillatt her." - -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Skriv inn bare tall, skilt med kommaer." - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Skriv inn e-post adresser skilt med kommaer." - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Vennligst skriv inn en godkjent IP adresse." - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Dette felte kan ikke være tomt." - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Det er bare tall som kan stå i dette feltet." - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "Dette feltet kan ikke bare bestå av nummer." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Skriv inn et helt nummer." - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Bare alfabetiske bokstaver er tillatt her." - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD format." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Skriv inn tiden i TT:MM format." - -#: core/validators.py:132 db/models/fields/__init__.py:468 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM format." - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Skriv inn en godkjent e-post adresse." - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." +#: utils/timesince.py:45 +#, python-format +msgid ", %(number)d %(type)s" msgstr "" -"Lastopp et bilde. Filen du lastet opp var ikke et bilde, eller så var det et " -"ødelagt bilde" -#: core/validators.py:155 +#: utils/text.py:127 +msgid "or" +msgstr "eller" + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "midnatt" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "middag" + +#: utils/translation/trans_real.py:391 +msgid "DATE_FORMAT" +msgstr "j. M Y" + +#: utils/translation/trans_real.py:392 +msgid "DATETIME_FORMAT" +msgstr "h:i, j. M Y" + +#: utils/translation/trans_real.py:393 +msgid "TIME_FORMAT" +msgstr "h:i" + +#: utils/translation/trans_real.py:409 +msgid "YEAR_MONTH_FORMAT" +msgstr "Y M" + +#: utils/translation/trans_real.py:410 +msgid "MONTH_DAY_FORMAT" +msgstr "j. M" + +#: contrib/contenttypes/models.py:37 +msgid "python model class name" +msgstr "python modell klasse navn" + +#: contrib/contenttypes/models.py:40 +msgid "content type" +msgstr "innholdstype" + +#: contrib/contenttypes/models.py:41 +msgid "content types" +msgstr "innholdstyper" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:20 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:50 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "Internettadressen %s peker ikke til et godkjent bilde." +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f million" +msgstr[1] "%(value).1f millioner" -#: core/validators.py:159 +#: contrib/humanize/templatetags/humanize.py:53 #, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent." +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f milliard" +msgstr[1] "%(value).1f milliarder" -#: core/validators.py:167 +#: contrib/humanize/templatetags/humanize.py:56 #, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "Internettadressen %s peker ikke til en godkjent QuickTime film." +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f billion" +msgstr[1] "%(value).1f billioner" -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "En godkjent internettadresse er påkrevd." +#: contrib/humanize/templatetags/humanize.py:71 +msgid "one" +msgstr "en" -#: core/validators.py:185 +#: contrib/humanize/templatetags/humanize.py:71 +msgid "two" +msgstr "to" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "three" +msgstr "tre" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "four" +msgstr "fire" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "five" +msgstr "fem" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "six" +msgstr "seks" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "seven" +msgstr "sju" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "eight" +msgstr "åtte" + +#: contrib/humanize/templatetags/humanize.py:71 +msgid "nine" +msgstr "ni" + +#: contrib/humanize/templatetags/humanize.py:90 +msgid "today" +msgstr "i dag" + +#: contrib/humanize/templatetags/humanize.py:92 +msgid "tomorrow" +msgstr "i morgen" + +#: contrib/humanize/templatetags/humanize.py:94 +msgid "yesterday" +msgstr "i går" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Logget ut" + +#: contrib/auth/models.py:53 contrib/auth/models.py:73 +msgid "name" +msgstr "navn" + +#: contrib/auth/models.py:55 +msgid "codename" +msgstr "kodenavn" + +#: contrib/auth/models.py:58 +msgid "permission" +msgstr "rettighet" + +#: contrib/auth/models.py:59 contrib/auth/models.py:74 +msgid "permissions" +msgstr "rettigheter" + +#: contrib/auth/models.py:77 +msgid "group" +msgstr "gruppe" + +#: contrib/auth/models.py:78 contrib/auth/models.py:121 +msgid "groups" +msgstr "grupper" + +#: contrib/auth/models.py:111 +msgid "username" +msgstr "brukernavn" + +#: contrib/auth/models.py:111 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "Påkrevd. 30 tegn eller færre. Kun alfanumeriske tegn (bokstaver, " +"tall og understreker)." + +#: contrib/auth/models.py:112 +msgid "first name" +msgstr "fornavn" + +#: contrib/auth/models.py:113 +msgid "last name" +msgstr "etternavn" + +#: contrib/auth/models.py:114 +msgid "e-mail address" +msgstr "e-postadresse" + +#: contrib/auth/models.py:115 +msgid "password" +msgstr "passord" + +#: contrib/auth/models.py:115 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "Bruk '[algo]$[salt]$[hexdigest]' eller endre " +"passord-skjemaet." + +#: contrib/auth/models.py:116 +msgid "staff status" +msgstr "administrasjonsstatus" + +#: contrib/auth/models.py:116 +msgid "Designates whether the user can log into this admin site." +msgstr "Bestemmer om brukeren kan logge inn på disse administrasjonssidene." + +#: contrib/auth/models.py:117 +msgid "active" +msgstr "aktiv" + +#: contrib/auth/models.py:117 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Bestemmer om brukeren kan logge inn på disse sidene. Huk av denne " +"i stedet for å slette kontoen." + +#: contrib/auth/models.py:118 +msgid "superuser status" +msgstr "superbruker" + +#: contrib/auth/models.py:118 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Bestemmer om denne brukeren har alle rettigheter, uten å sette de " +"eksplisitt." + +#: contrib/auth/models.py:119 +msgid "last login" +msgstr "siste innlogging" + +#: contrib/auth/models.py:120 +msgid "date joined" +msgstr "registreringsdato" + +#: contrib/auth/models.py:122 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"I tillegg til rettighetene som blir gitt manuelt, får brukeren også full " +"tilgang til rettighetene til gruppene han/hun er i." + +#: contrib/auth/models.py:123 +msgid "user permissions" +msgstr "Brukerrettigheter" + +#: contrib/auth/models.py:127 +msgid "user" +msgstr "bruker" + +#: contrib/auth/models.py:128 +msgid "users" +msgstr "brukere" + +#: contrib/auth/models.py:134 +msgid "Personal info" +msgstr "Personlig informasjon" + +#: contrib/auth/models.py:135 +msgid "Permissions" +msgstr "Rettigheter" + +#: contrib/auth/models.py:136 +msgid "Important dates" +msgstr "Viktige datoer" + +#: contrib/auth/models.py:137 +msgid "Groups" +msgstr "Grupper" + +#: contrib/auth/models.py:288 +msgid "message" +msgstr "melding" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "De to passordfeltene er ikke like." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Det eksisterer en bruker med dette brukernavnet." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). " +"Informasjonskapsler er påkrevd for å logge inn." + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på " +"små og store bokstaver." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Denne kontoen er inaktiv." + +#: contrib/auth/forms.py:84 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker" +"på at du har en konto her?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "De to feltene for nytt passord er ikke like." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Ditt gamle passord er feil. Vennligst prøv igjen." + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "omadresser fra" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Dette burde vært en fullstendig sti, uten domenenavnet. Eksempel: '/" +"nyheter/les/" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "omadresser til" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Dette kan enten være en fullstendig sti (som over), eller en hel " +"internettadresse som starter med 'http://'" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "omadressering" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "omadresserelser" + +#: contrib/comments/models.py:67 contrib/comments/models.py:169 +msgid "object ID" +msgstr "objekt-ID" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "overskrift" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:170 +msgid "comment" +msgstr "kommentar" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "rangering #1 " + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "rangering #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "rangering #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "rangering #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "rangering #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "rangering #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "rangering #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "rangering #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "er gyldig rangering" + +#: contrib/comments/models.py:83 contrib/comments/models.py:172 +msgid "date/time submitted" +msgstr "dato/tid for innsendelse" + +#: contrib/comments/models.py:84 contrib/comments/models.py:173 +msgid "is public" +msgstr "er tilgjengelig for alle" + +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306 +msgid "IP address" +msgstr "IP-adresse" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "er fjernet" + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Huk av denne avkryssningsboksen hvis kommentaren er upasende. Beskjeden " +"\"Denne kommentaren er blitt fjernet\" vil bli vist istedet." + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "kommentarer" + +#: contrib/comments/models.py:134 contrib/comments/models.py:213 +msgid "Content object" +msgstr "innholdsobjekt" + +#: contrib/comments/models.py:162 #, python-format msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" msgstr "" -"Godkjent HTML er påkrevd. Feilene var:\n" -"%s" +"Sendt av %(user)s på %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" -#: core/validators.py:192 +#: contrib/comments/models.py:171 +msgid "person's name" +msgstr "personens navn" + +#: contrib/comments/models.py:174 +msgid "ip address" +msgstr "IP-adresse" + +#: contrib/comments/models.py:176 +msgid "approved by staff" +msgstr "godkjent av moderator" + +#: contrib/comments/models.py:179 +msgid "free comment" +msgstr "åpen kommentar" + +#: contrib/comments/models.py:180 +msgid "free comments" +msgstr "åpne kommentarer" + +#: contrib/comments/models.py:239 +msgid "score" +msgstr "poeng" + +#: contrib/comments/models.py:240 +msgid "score date" +msgstr "poengdato" + +#: contrib/comments/models.py:243 +msgid "karma score" +msgstr "karmapoeng" + +#: contrib/comments/models.py:244 +msgid "karma scores" +msgstr "karmapoeng" + +#: contrib/comments/models.py:248 #, python-format -msgid "Badly formed XML: %s" -msgstr "Ikke godkjent XML: %s" +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d rangering av %(user)s" -#: core/validators.py:202 -#, python-format -msgid "Invalid URL: %s" -msgstr "Ikke godkjent URL: %s" - -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "Internettadresse %s fører til en side som ikke virker." - -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Skriv inn en godkjent amerikansk delstat forkortelse." - -#: core/validators.py:229 -#, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "Pass munnen din! Ordet %s er ikke tillatt her." -msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her." - -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Dette feltet må være det samme som i '%s' feltet." - -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Vennligst skriv inn noe i minst et felt." - -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke." - -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Dette feltet må bare brukes hvis %(field)s er lik %(value)s" - -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Dette feltet må bare brukes hvis %(field)s ikke er lik %(value)s" - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Like verdier er ikke tillatt." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "Denne verdien må være 'power' av %s." - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Vennligst skriv inn et godkjent desimal tall." - -#: core/validators.py:349 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "Please enter a valid decimal number with at most %s total digits." -msgstr[0] "Skriv inn et desimal tall med maksimum %s total antall tall." -msgstr[1] "Skriv inn et desimal tall med maksimum %s total antall tall." - -#: core/validators.py:352 -#, python-format -msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Skriv inn et desimal tall med maksimum %s tall bak komma. " -msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. " - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "Formatet i dette feltet er feil." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "Dette feltet er feil." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Klarte ikke å motta noe fra %s." - -#: core/validators.py:429 -#, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"Internettadressen %(url)s returnerte en ikke godkjent Content-Type '%" -"(contenttype)s'." - -#: core/validators.py:462 +#: contrib/comments/models.py:264 #, python-format msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" msgstr "" -"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med \"%(start)" -"s\".)" +"Denne kommentaren er flagget av %(user)s:\n" +"\n" +"%(text)s" -#: core/validators.py:466 +#: contrib/comments/models.py:271 +msgid "flag date" +msgstr "flaggdato" + +#: contrib/comments/models.py:274 +msgid "user flag" +msgstr "brukerflag" + +#: contrib/comments/models.py:275 +msgid "user flags" +msgstr "brukerflag" + +#: contrib/comments/models.py:279 +#, python-format +msgid "Flag by %r" +msgstr "Flagg med %r" + +#: contrib/comments/models.py:284 +msgid "deletion date" +msgstr "dato fjernet" + +#: contrib/comments/models.py:286 +msgid "moderator deletion" +msgstr "fjernet av moderator" + +#: contrib/comments/models.py:287 +msgid "moderator deletions" +msgstr "fjernet av moderator" + +#: contrib/comments/models.py:291 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Fjernet av moderator med %r" + +#: contrib/comments/views/karma.py:20 +msgid "Anonymous users cannot vote" +msgstr "Anonyme brukere kan ikke stemme" + +#: contrib/comments/views/karma.py:24 +msgid "Invalid comment ID" +msgstr "Ikke gyldig kommentar-ID" + +#: contrib/comments/views/karma.py:26 +msgid "No voting for yourself" +msgstr "Du kan ikke stemme på deg selv" + +#: contrib/comments/views/comments.py:28 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"Denne rangeringen er påkrevd, fordi du har rangert en eller flere ting fra " +"før " + +#: contrib/comments/views/comments.py:112 #, python-format msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linjen starter " -"med \"%(start)s\".)" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Denne kommentaren var skrevet av en bruker som har fra før skrevet under %" +"(count)s kommentarer:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Denne kommentaren var skrevet av en bruker som har fra før skrevet under %" +"(count)s kommentarer:\n" +"\n" +"%(text)s" -#: core/validators.py:471 +#: contrib/comments/views/comments.py:117 #, python-format msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" msgstr "" -"\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linjen starter " -"med \"%(start)s\".)" +"Denne kommentaren er skrevet av en upålitelig bruker:\n" +"\n" +"%(text)s" -#: core/validators.py:476 +#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:281 +msgid "Only POSTs are allowed" +msgstr "Kun POST er tillatt" + +#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:285 +msgid "One or more of the required fields wasn't submitted" +msgstr "En eller flere av feltene som er påkrevd ble ikke sendt." + +#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:287 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Noen har endret på komentarfeltene (sikkerhetsadvarsel)" + +#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:293 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "Skjemaet hadde en ugyldig 'target'-verdi - objekt-IDen var ugyldig" + +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Kommentarskjemaet la ikke ved 'preview'- eller 'post'-element" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Ditt navn:" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "Kommentar:" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +msgstr "Forhåndvis kommentar" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "Brukernavn:" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Log out" +msgstr "Logg ut" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Passord:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Har du glemt passordet ditt?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Rangeringer" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Påkrevd" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Valgfri" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Send et bilde" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:317 +msgid "URL" +msgstr "URL" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Eksempel: '/om/kontakt/'. Vær sikker på at det er en skråstrek foran og bak." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "tittel" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "innhold" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "tillat kommentarer" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "navn på mal" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Eksempel: 'flatpages/kontakt_side.html'. Hvis denne ikke denne er gitt, vil " +"'flatpages/default.html' bli brukt." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "registrering kreves" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Hvis denne er krysset av, er det kun innloggede brukere som kan se siden." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "flatside" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "flatsider" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "sesjonsnøkkel" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "sesjonsdata" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "utløpsdato" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sesjon" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sesjoner" + +#: contrib/sites/models.py:15 +msgid "domain name" +msgstr "domenenavn" + +#: contrib/sites/models.py:16 +msgid "display name" +msgstr "visningsnavn" + +#: contrib/sites/models.py:20 +msgid "site" +msgstr "nettsted" + +#: contrib/sites/models.py:21 +msgid "sites" +msgstr "nettsteder" + +#: contrib/admin/filterspecs.py:42 #, python-format msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" +"

                                            By %s:

                                            \n" +"
                                              \n" msgstr "" -"\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linjen starter med " -"\"%(start)s\".)" +"

                                              Av %s:

                                              \n" +"
                                                \n" -#: core/validators.py:480 +#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 +msgid "All" +msgstr "Alle" + +#: contrib/admin/filterspecs.py:111 +msgid "Any date" +msgstr "Når som helst" + +#: contrib/admin/filterspecs.py:112 +msgid "Today" +msgstr "I dag" + +#: contrib/admin/filterspecs.py:115 +msgid "Past 7 days" +msgstr "Siste 7 dager" + +#: contrib/admin/filterspecs.py:117 +msgid "This month" +msgstr "Denne måneden" + +#: contrib/admin/filterspecs.py:119 +msgid "This year" +msgstr "I år" + +#: contrib/admin/filterspecs.py:145 oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "Yes" +msgstr "Ja" + +#: contrib/admin/filterspecs.py:145 oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "No" +msgstr "Nei" + +#: contrib/admin/filterspecs.py:152 oldforms/__init__.py:591 +#: newforms/widgets.py:188 +msgid "Unknown" +msgstr "Ukjent" + +#: contrib/admin/models.py:17 +msgid "action time" +msgstr "tid for handling" + +#: contrib/admin/models.py:20 +msgid "object id" +msgstr "objekt-ID" + +#: contrib/admin/models.py:21 +msgid "object repr" +msgstr "objekt repr" + +#: contrib/admin/models.py:22 +msgid "action flag" +msgstr "handlingsflagg" + +#: contrib/admin/models.py:23 +msgid "change message" +msgstr "endre melding" + +#: contrib/admin/models.py:26 +msgid "log entry" +msgstr "logginnlegg" + +#: contrib/admin/models.py:27 +msgid "log entries" +msgstr "logginnlegg" + +#: contrib/admin/templatetags/admin_list.py:254 +msgid "All dates" +msgstr "Alle datoer" + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Logg inn" + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Du må logge inn igjen, fordi økten din har gått ut. Slapp av, innlegget ditt " +"ble lagret." + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Det ser ut som om nettleseren din ikke støtter informasjonskapsler " +"('cookies'). Vennligst konfigurer nettleseren din, og prøv igjen." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Brukernavnet kan ikke inneholde '@'" + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "E-postadressen din er ikke brukernavnet ditt, prøv '%s' i stede." + +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" ble lagt inn i databasen." + +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 +#: contrib/admin/views/main.py:354 +msgid "You may edit it again below." +msgstr "Du kan endre under" + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Ny bruker" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Passordet er endret." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Endre passord: %s" + +#: contrib/admin/views/main.py:230 +msgid "Site administration" +msgstr "Nettstedsadministrasjon" + +#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 +#, python-format +msgid "You may add another %s below." +msgstr "Du kan legge til en ny %s under." + +#: contrib/admin/views/main.py:296 +#, python-format +msgid "Add %s" +msgstr "Ny %s" + +#: contrib/admin/views/main.py:342 +#, python-format +msgid "Added %s." +msgstr "La til %s" + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Changed %s." +msgstr "Endret %s." + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Deleted %s." +msgstr "Slettet %s." + +#: contrib/admin/views/main.py:349 +msgid "No fields changed." +msgstr "Ingen felt endret." + +#: contrib/admin/views/main.py:352 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" ble endret." + +#: contrib/admin/views/main.py:360 #, python-format msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"En tag på linje %(line)s mangler en av de påkrevde attributtene. (linjen starter " -"med \"%(start)s\".)" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under." -#: core/validators.py:485 +#: contrib/admin/views/main.py:398 +#, python-format +msgid "Change %s" +msgstr "Endre %s" + +#: contrib/admin/views/main.py:483 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:488 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "En eller flere %(fieldname)s i %(name)s:" + +#: contrib/admin/views/main.py:520 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" ble slettet." + +#: contrib/admin/views/main.py:523 +msgid "Are you sure?" +msgstr "Er du sikker?" + +#: contrib/admin/views/main.py:545 +#, python-format +msgid "Change history: %s" +msgstr "Endringshistorikk: %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s" +msgstr "Velg %s" + +#: contrib/admin/views/main.py:579 +#, python-format +msgid "Select %s to change" +msgstr "Velg %s for å endre" + +#: contrib/admin/views/main.py:780 +msgid "Database error" +msgstr "Databasefeil" + +#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:51 +msgid "tag:" +msgstr "" + +#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:82 +msgid "filter:" +msgstr "" + +#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:140 +msgid "view:" +msgstr "" + +#: contrib/admin/views/doc.py:165 +#, python-format +msgid "App %r not found" +msgstr "Fan ikke applikasjonen %r" + +#: contrib/admin/views/doc.py:172 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Fant ikke %(name)r-modellen i applikasjonen %(label)r" + +#: contrib/admin/views/doc.py:184 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "det relaterte `%(label)s.%(type)s`-objektet" + +#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 +msgid "model:" +msgstr "" + +#: contrib/admin/views/doc.py:215 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "relaterte `%(label)s.%(name)s`-objekter" + +#: contrib/admin/views/doc.py:220 +#, python-format +msgid "all %s" +msgstr "alle %s" + +#: contrib/admin/views/doc.py:225 +#, python-format +msgid "number of %s" +msgstr "antall %s" + +#: contrib/admin/views/doc.py:230 +#, python-format +msgid "Fields on %s objects" +msgstr "Felter på %s objekter" + +#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 +msgid "Integer" +msgstr "Heltall" + +#: contrib/admin/views/doc.py:293 +msgid "Boolean (Either True or False)" +msgstr "Boolean (enten \"True\" eller \"False\")" + +#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Tekst (opp til %(max_length)s tegn)" + +#: contrib/admin/views/doc.py:295 +msgid "Comma-separated integers" +msgstr "Heltall adskilt med komma" + +#: contrib/admin/views/doc.py:296 +msgid "Date (without time)" +msgstr "Dato (uten tid)" + +#: contrib/admin/views/doc.py:297 +msgid "Date (with time)" +msgstr "Dato/tid" + +#: contrib/admin/views/doc.py:298 +msgid "Decimal number" +msgstr "Desimaltall" + +#: contrib/admin/views/doc.py:299 +msgid "E-mail address" +msgstr "E-postadresse" + +#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:304 +msgid "File path" +msgstr "Filsti" + +#: contrib/admin/views/doc.py:302 +msgid "Floating point number" +msgstr "Flyttall" + +#: contrib/admin/views/doc.py:308 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (enten \"True\", \"False\" eller \"None\")" + +#: contrib/admin/views/doc.py:309 +msgid "Relation to parent model" +msgstr "Relasjon til foreldermodell" + +#: contrib/admin/views/doc.py:310 +msgid "Phone number" +msgstr "Telefonnummer" + +#: contrib/admin/views/doc.py:315 +msgid "Text" +msgstr "Tekst" + +#: contrib/admin/views/doc.py:316 +msgid "Time" +msgstr "Tid" + +#: contrib/admin/views/doc.py:318 +msgid "U.S. state (two uppercase letters)" +msgstr "Stat (i USA, to store bokstaver)" + +#: contrib/admin/views/doc.py:319 +msgid "XML text" +msgstr "XML-tekst" + +#: contrib/admin/views/doc.py:345 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ser ikke ut til å være et urlpattern-objekt" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Nå:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Endre:" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Dato:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Tid:" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Dokumentasjon" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Change password" +msgstr "Endre passord" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Hjem" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "Historikk" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Dato/tid" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Bruker" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Handling" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "h:i, j. M Y" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Dette objektet har ingen endringshistorikk. Det var sannsynligvis ikke lagt " +"til via denne siden." + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Legg til %(name)s" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "Av %(filter_title)s " + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Tjenerfeil" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Tjenerfeil (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Tjenerfeil (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-" +"post, og vil bli fikset snart. Takk for din tålmodighet." + +#: contrib/admin/templates/admin/invalid_setup.html:8 +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 "Noe er galt med databaseinstallasjonen din. Sørg for at " +"databasetabellene er opprett, og at brukeren har de nødvendige rettigheter." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Gå" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "Ett resultat" +msgstr[1] "(counter)s resultat" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s totalt" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Vis alle" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django administrasjonsside" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django-administrasjon" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filter" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Fant ikke siden" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Beklager, men siden du spør etter finnes ikke." + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modeller tilgjengelig i %(name)s-applikasjonen." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/index.html:28 +#: contrib/admin/templates/admin/change_form.html:15 +msgid "Add" +msgstr "Legg til" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Endre" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Du har ikke rettigheter til å endre noe." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Siste handlinger" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Mine handlinger" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ingen tilgjengelige" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Vis på nettsted" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vennligst fiks feilen under." +msgstr[1] "Vennligst fiks feilene under." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Rekkefølge" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Rekkefølge:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Velkommen," + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Slett" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" msgstr "" -"\"%(attr)s\" tillegg på linje %(line)s har en ikke godkjent verdi. (Linjen " -"starter med \"%(start)s\".)" +"Hivs du sletter %(object_name)s '%(escaped_object)s', vil du også slette " +"relaterte objekter, men du har ikke tillatelse til å slette følgende " +"objektene:" -#: db/models/manipulators.py:302 +#: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s." +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 "" +"Er du sikker på at du vill slette %(object_name)s \"%(escaped_object)s\"? " +"Alle de følgende relaterte objektene vil bli slettet:" -#: db/models/fields/__init__.py:40 +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Ja, jeg er sikker" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Lagre som ny" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Lagre og legg til ny" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Lagre og fortsett å endre" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Lagre" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s med %(fieldname)s finnes allerede." +msgid "Enter a new password for the user %(username)s." +msgstr "Skriv inn et nytt passord for brukeren %(username)s." -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "Dette feltet er påkrevd." +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Passord" -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "Denne verdien må være et heltall." +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Passord (gjenta)" -#: db/models/fields/__init__.py:369 -msgid "This value must be either True or False." -msgstr "Denne verdien må være enten \"True\" eller \"False\"." +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "Skriv inn det samme passordet som ovenfor, for verifisering." -#: db/models/fields/__init__.py:385 -msgid "This field cannot be null." -msgstr "Dette feltet kan ikke være null/tom." +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "Skriv først inn brukernavn og passord. Deretter vil du få mulighet " +"til å endre flere brukerinnstillinger." -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Skriv inn et godkjent fil navn." +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Brukernavn" -#: db/models/fields/related.py:43 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "Endre passord" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Passordet er endret" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Ditt passord er endret." + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Tilbakestill passord" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Har du glemt passordet ditt? Skriv inn e-postadressen din under, så sender " +"vi deg et nytt passord til deg." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-postadresse:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Tilbakestill mitt passord" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet i dag." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Logg inn igjen" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Passordet ble tilbakestilt" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Vi har sendt deg et nytt passord til e-postadressen du oppgav. Du vil " +"forhåpentligvis motta det snart." + +#: contrib/admin/templates/registration/password_change_form.html:12 +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 "" +"Venligst skriv inn ditt gamle passord, av sikkerthetsårsaker. Skriv deretter " +"inn ditt nye passord to ganger, slik at vi kan kontrollere at det er rett." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Gammelt passord:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Nytt passord:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Gjenta nytt passord:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Endre passord" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" +"Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt" + +#: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format -msgid "Please enter a valid %s." -msgstr "Vennligst skriv inn en/et gyldig %s." +msgid "for your user account at %(site_name)s" +msgstr "for din konto hos %(site_name)s" -#: db/models/fields/related.py:579 -msgid "Separate multiple IDs with commas." -msgstr "Separer Id-ene med kommaer." - -#: db/models/fields/related.py:581 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mere enn en." - -#: db/models/fields/related.py:625 +#: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig." -msgstr[1] "Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige." +msgid "Your new password is: %(new_password)s" +msgstr "Ditt nye passord er: %(new_password)s" -#: forms/__init__.py:380 +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Du kan endre dette passordet ved å gå til denne siden:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "I tilfellet du har glemt brukernavnet ditt, så er det:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Takk for at du bruker siden vår!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "Hilsen %(site_name)s" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Bokmerker" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Dokumentasjonsbokmerker" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

                                                To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

                                                \n" +msgstr "" +"\n" +"

                                                For å installere bokmerker, dra linken til verktøylinja\n" +"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n" +"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n" +"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n" +"(kontakt din systemadministrator hvis du er usikker på om maskinen din er " +"\"intern\").

                                                \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Dokumentasjon for denne siden" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Hopp fra hvilken som helst side til dokumentasjonen for visnings funksjonen " +"som laget siden." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Vis objekt-ID" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Viser \"content-type\" og en unik ID for sider som representerer et enkelt " +"objekt." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Endre dette objektet (nåværende vindu)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Hopper til administrasjonsiden for sider som representerer et enkelt objekt." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Endre dette objektet (nytt vindu)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Samme som over, men åpner administrasjonsiden i et nytt vindu." + +#: contrib/localflavor/no/forms.py:14 contrib/localflavor/ch/forms.py:18 +msgid "Enter a zip code in the format XXXX." +msgstr "Skriv inn et postnummer som XXXX." + +#: contrib/localflavor/no/forms.py:35 +msgid "Enter a valid Norwegian social security number." +msgstr "Skriv et gyldig norsk personnummer." + +#: template/defaultfilters.py:485 +msgid "yes,no,maybe" +msgstr "ja,nei,kanskje" + +#: template/defaultfilters.py:514 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:516 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:518 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:519 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: oldforms/__init__.py:408 #, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Sjekk at teksten er kortere enn %s bokstav" -msgstr[1] "Sjekk at teksten er kortere enn %s bokstaver" +msgstr[0] "Sjekk at teksten er kortere enn %s tegn." +msgstr[1] "Sjekk at teksten er kortere enn %s tegn." -#: forms/__init__.py:385 +#: oldforms/__init__.py:413 msgid "Line breaks are not allowed here." -msgstr "Det er ikke tillatt med flere linjer her." +msgstr "Det er ikke tillatt med linjeskift her." -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 +#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Velg et gyldig valg; '%(data)s' er ikke i %(choices)s." -#: forms/__init__.py:645 +#: oldforms/__init__.py:688 newforms/fields.py:380 msgid "The submitted file is empty." msgstr "Filen er tom." -#: forms/__init__.py:699 +#: oldforms/__init__.py:744 msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Skriv inn et heltall mellom -31768 og 32767." +msgstr "Skriv inn et heltall mellom -32768 og 32767." -#: forms/__init__.py:708 +#: oldforms/__init__.py:754 msgid "Enter a positive number." msgstr "Skriv inn et positivt heltall." -#: forms/__init__.py:717 +#: oldforms/__init__.py:764 msgid "Enter a whole number between 0 and 32,767." msgstr "Skriv inn et heltall mellom 0 og 32767." -#: template/defaultfilters.py:379 -msgid "yes,no,maybe" -msgstr "ja,nei,kanskje" +#: newforms/models.py:180 newforms/fields.py:478 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Velg et gyldig valg. Ditt valg er ikke et av de gyldige valgene." -#, fuzzy -#~ msgid "Comments" -#~ msgstr "tillat kommentarer" +#: newforms/models.py:197 newforms/fields.py:494 newforms/fields.py:570 +msgid "Enter a list of values." +msgstr "Skriv inn en liste med verdier." -#~ msgid "String (up to 50)" -#~ msgstr "Tekst (opp til 50 tegn)" +#: newforms/models.py:203 newforms/fields.py:500 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Velg et gyldig valg; %s er ikke et av de tilgjengelige valgene." -#~ msgid "label" -#~ msgstr "merkelapp" +#: newforms/fields.py:116 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "Pass på at denne er på maks %(max)d tegn (den er %(length)d)." -#~ msgid "package" -#~ msgstr "pakke" +#: newforms/fields.py:118 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "Pass på at denne er på minst %(min)d tegn (den er %(length)d)." -#~ msgid "packages" -#~ msgstr "pakker" +#: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Pass på at denne er mindre eller lik %s." -#~ msgid "Error in Template" -#~ msgstr "Feil i mal" +#: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Pass på at denne er større eller lik %s." + +#: newforms/fields.py:165 newforms/fields.py:192 +msgid "Enter a number." +msgstr "Skriv inn et tall." + +#: newforms/fields.py:201 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Pass på at det ikke er mer enn %s siffer totalt." + +#: newforms/fields.py:203 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Pass på at ikke er mer enn %s desimaler." + +#: newforms/fields.py:205 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Pass på at det ikke er mer enn %s siffer foran komma." + +#: newforms/fields.py:238 newforms/fields.py:610 +msgid "Enter a valid date." +msgstr "Skriv inn en gyldig dato." + +#: newforms/fields.py:265 newforms/fields.py:612 +msgid "Enter a valid time." +msgstr "Skriv inn et gyldig tidspunkt." + +#: newforms/fields.py:301 +msgid "Enter a valid date/time." +msgstr "Skriv inn et gyldig tidspunkt." + +#: newforms/fields.py:314 +msgid "Enter a valid value." +msgstr "Skriv inn en gyldig verdi." + +#: newforms/fields.py:378 +msgid "No file was submitted." +msgstr "Ingen fil ble sendt." + +#: newforms/fields.py:403 newforms/fields.py:425 +msgid "Enter a valid URL." +msgstr "Skriv inn en gyldig URL." + +#: newforms/fields.py:427 +msgid "This URL appears to be a broken link." +msgstr "Denne URL'en fører til en side som ikke eksisterer." -#~ msgid "" -#~ "\n" -#~ "In template %(name)s, error at line %(line)s:\n" -#~ msgstr "" -#~ "\n" -#~ "I mal %(name)s, var det en feil på linje %(line)s:\n" diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.mo b/django/conf/locale/no/LC_MESSAGES/djangojs.mo index da2854f72e..4321934ca6 100644 Binary files a/django/conf/locale/no/LC_MESSAGES/djangojs.mo and b/django/conf/locale/no/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.po b/django/conf/locale/no/LC_MESSAGES/djangojs.po index ab3d3b965d..035c1bc5bf 100644 --- a/django/conf/locale/no/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/no/LC_MESSAGES/djangojs.po @@ -1,6 +1,6 @@ -# translation of djangojs.po to -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# translation of djangojs.po to norwegian +# Copyright (C) 2005 and beyond +# This file is distributed under the same license as the Django package. # Espen Grindhaug , 2006. # msgid "" @@ -8,16 +8,14 @@ msgstr "" "Project-Id-Version: djangojs\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" -"PO-Revision-Date: 2007-04-27 06:51+0200\n" -"Last-Translator: \n" -"Language-Team: \n" +"PO-Revision-Date: 2007-08-29 18:22+0200\n" +"Last-Translator: jonklo\n" +"Language-Team: Norsk \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" #: contrib/admin/media/js/SelectFilter2.js:33 -#, perl-format msgid "Available %s" msgstr "%s er tilgjengelige" @@ -34,13 +32,12 @@ msgid "Remove" msgstr "Slett" #: contrib/admin/media/js/SelectFilter2.js:53 -#, perl-format msgid "Chosen %s" msgstr "%s er valgt" #: contrib/admin/media/js/SelectFilter2.js:54 msgid "Select your choice(s) and click " -msgstr "Velg ditt svaralternativ(er) og klikk" +msgstr "Velg ditt svaralternativ(er) og klikk " #: contrib/admin/media/js/SelectFilter2.js:59 msgid "Clear all" @@ -85,15 +82,15 @@ msgstr "Velg et klokkeslett" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Midnight" -msgstr "24.00" +msgstr "Midnatt" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "6 a.m." -msgstr "06.00" +msgstr "06:00" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "Noon" -msgstr "12.00" +msgstr "12:00" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 diff --git a/django/conf/locale/te/LC_MESSAGES/django.mo b/django/conf/locale/te/LC_MESSAGES/django.mo index 8823b2015c..e86df1c91c 100644 Binary files a/django/conf/locale/te/LC_MESSAGES/django.mo and b/django/conf/locale/te/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/te/LC_MESSAGES/django.po b/django/conf/locale/te/LC_MESSAGES/django.po index 248baf2249..e0c600ba3e 100644 --- a/django/conf/locale/te/LC_MESSAGES/django.po +++ b/django/conf/locale/te/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; nplurals=n>1;" +"Plural-Forms: nplurals=2; plural=n>1;" #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" diff --git a/django/conf/locale/tr/LC_MESSAGES/djangojs.mo b/django/conf/locale/tr/LC_MESSAGES/djangojs.mo index 1119203925..9d5b8e2f51 100644 Binary files a/django/conf/locale/tr/LC_MESSAGES/djangojs.mo and b/django/conf/locale/tr/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/tr/LC_MESSAGES/djangojs.po b/django/conf/locale/tr/LC_MESSAGES/djangojs.po index 35928b9c03..037fcd337d 100644 --- a/django/conf/locale/tr/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/tr/LC_MESSAGES/djangojs.po @@ -107,3 +107,9 @@ msgstr "Dün" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 msgid "Tomorrow" msgstr "Yarın" + +msgid "Show" +msgstr "Göster" + +msgid "Hide" +msgstr "Gizle" diff --git a/django/conf/project_template/settings.py b/django/conf/project_template/settings.py index ecd716b50d..d5748d7cc3 100644 --- a/django/conf/project_template/settings.py +++ b/django/conf/project_template/settings.py @@ -24,7 +24,7 @@ DATABASE_PORT = '' # Set to empty string for default. Not used with TIME_ZONE = 'America/Chicago' # Language code for this installation. All choices can be found here: -# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes +# http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'en-us' SITE_ID = 1 diff --git a/django/contrib/admin/media/css/null.css b/django/contrib/admin/media/css/null.css new file mode 100644 index 0000000000..1a93f22058 --- /dev/null +++ b/django/contrib/admin/media/css/null.css @@ -0,0 +1 @@ +/* Nothing to see here. Dummy file to feed to the high pass filter which hides CSS from IE5/win. Details: http://tantek.com/CSS/Examples/highpass.html */ \ No newline at end of file diff --git a/django/contrib/admin/media/css/widgets.css b/django/contrib/admin/media/css/widgets.css index bf526bfd66..67d9662f3e 100644 --- a/django/contrib/admin/media/css/widgets.css +++ b/django/contrib/admin/media/css/widgets.css @@ -43,7 +43,7 @@ p.file-upload { line-height:20px; margin:0; padding:0; color:#666; font-size:11p /* CALENDARS & CLOCKS */ .calendarbox, .clockbox { margin:5px auto; font-size:11px; width:16em; text-align:center; background:white; position:relative; } -.clockbox { width:9em; } +.clockbox { width:auto; } .calendar { margin:0; padding: 0; } .calendar table { margin:0; padding:0; border-collapse:collapse; background:white; width:99%; } .calendar caption, .calendarbox h2 { margin: 0; font-size:11px; text-align:center; border-top:none; } diff --git a/django/contrib/admin/media/js/SelectFilter2.js b/django/contrib/admin/media/js/SelectFilter2.js index 8f6079e0b3..db946a6f6f 100644 --- a/django/contrib/admin/media/js/SelectFilter2.js +++ b/django/contrib/admin/media/js/SelectFilter2.js @@ -58,7 +58,7 @@ var SelectFilter = { quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s'), [field_name])); var selector_filter = quickElement('p', selector_chosen, gettext('Select your choice(s) and click ')); selector_filter.className = 'selector-filter'; - quickElement('img', selector_filter, '', 'src', admin_media_prefix + 'img/admin/selector-add.gif', 'alt', 'Add'); + quickElement('img', selector_filter, '', 'src', admin_media_prefix + (is_stacked ? 'img/admin/selector_stacked-add.gif':'img/admin/selector-add.gif'), 'alt', 'Add'); var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name')); to_box.className = 'filtered'; var clear_all = quickElement('a', selector_chosen, gettext('Clear all'), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from");})()'); diff --git a/django/contrib/admin/media/js/admin/DateTimeShortcuts.js b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js index b1504fc819..4682a6841a 100644 --- a/django/contrib/admin/media/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js @@ -195,6 +195,19 @@ var DateTimeShortcuts = { openCalendar: function(num) { var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num) var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num) + var inp = DateTimeShortcuts.calendarInputs[num]; + + // Determine if the current value in the input has a valid date. + // If so, draw the calendar with that date's year and month. + if (inp.value) { + var date_parts = inp.value.split('-'); + var year = date_parts[0]; + var month = parseFloat(date_parts[1]); + if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) { + DateTimeShortcuts.calendars[num].drawDate(month, year); + } + } + // Recalculate the clockbox position // is it left-to-right or right-to-left layout ? diff --git a/django/contrib/admin/media/js/core.js b/django/contrib/admin/media/js/core.js index a17ac8a4d2..c8d0db6a8d 100644 --- a/django/contrib/admin/media/js/core.js +++ b/django/contrib/admin/media/js/core.js @@ -1,5 +1,9 @@ // Core javascript helper functions +// basic browser identification & version +var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion); +var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); + // Cross-browser event handlers. function addEvent(obj, evType, fn) { if (obj.addEventListener) { @@ -71,9 +75,13 @@ function findPosX(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { - curleft += obj.offsetLeft; + curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); obj = obj.offsetParent; } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement){ + curleft += obj.offsetLeft - obj.scrollLeft; + } } else if (obj.x) { curleft += obj.x; } @@ -84,9 +92,13 @@ function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { - curtop += obj.offsetTop; + curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); obj = obj.offsetParent; } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement){ + curtop += obj.offsetTop - obj.scrollTop; + } } else if (obj.y) { curtop += obj.y; } diff --git a/django/contrib/admin/media/js/urlify.js b/django/contrib/admin/media/js/urlify.js index 1545d80ec9..40320979be 100644 --- a/django/contrib/admin/media/js/urlify.js +++ b/django/contrib/admin/media/js/urlify.js @@ -40,6 +40,9 @@ var RUSSIAN_MAP = { 'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu', 'Я':'Ya' } +var UKRAINIAN_MAP = { + 'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g' +} var CZECH_MAP = { 'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u', 'ž':'z' @@ -51,7 +54,8 @@ ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP ALL_DOWNCODE_MAPS[2]=GREEK_MAP ALL_DOWNCODE_MAPS[3]=TURKISH_MAP ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP -ALL_DOWNCODE_MAPS[5]=CZECH_MAP +ALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP +ALL_DOWNCODE_MAPS[6]=CZECH_MAP var Downcoder = new Object(); Downcoder.Initialize = function() diff --git a/django/contrib/admin/templates/admin/change_list_results.html b/django/contrib/admin/templates/admin/change_list_results.html index 3f755783dc..381dcb5d5d 100644 --- a/django/contrib/admin/templates/admin/change_list_results.html +++ b/django/contrib/admin/templates/admin/change_list_results.html @@ -10,7 +10,7 @@ {% for result in results %} -{% for item in result %}{{ item }}{% endfor %} +{% for item in result %}{{ item }}{% endfor %} {% endfor %} diff --git a/django/contrib/auth/decorators.py b/django/contrib/auth/decorators.py index 2fb4a6f510..b6481ea52c 100644 --- a/django/contrib/auth/decorators.py +++ b/django/contrib/auth/decorators.py @@ -1,8 +1,8 @@ from django.contrib.auth import REDIRECT_FIELD_NAME from django.http import HttpResponseRedirect -from urllib import quote +from django.utils.http import urlquote -def user_passes_test(test_func, login_url=None): +def user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME): """ Decorator for views that checks that the user passes the given test, redirecting to the log-in page if necessary. The test should be a callable @@ -15,20 +15,25 @@ def user_passes_test(test_func, login_url=None): def _checklogin(request, *args, **kwargs): if test_func(request.user): return view_func(request, *args, **kwargs) - return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, quote(request.get_full_path()))) + return HttpResponseRedirect('%s?%s=%s' % (login_url, redirect_field_name, urlquote(request.get_full_path()))) _checklogin.__doc__ = view_func.__doc__ _checklogin.__dict__ = view_func.__dict__ return _checklogin return _dec -login_required = user_passes_test(lambda u: u.is_authenticated()) -login_required.__doc__ = ( +def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME): """ Decorator for views that checks that the user is logged in, redirecting to the log-in page if necessary. """ + actual_decorator = user_passes_test( + lambda u: u.is_authenticated(), + redirect_field_name=redirect_field_name ) + if function: + return actual_decorator(function) + return actual_decorator def permission_required(perm, login_url=None): """ diff --git a/django/contrib/auth/handlers/modpython.py b/django/contrib/auth/handlers/modpython.py index c7d921313d..de961fa4dd 100644 --- a/django/contrib/auth/handlers/modpython.py +++ b/django/contrib/auth/handlers/modpython.py @@ -10,6 +10,10 @@ def authenhandler(req, **kwargs): # that so that the following import works os.environ.update(req.subprocess_env) + # apache 2.2 requires a call to req.get_basic_auth_pw() before + # req.user and friends are available. + req.get_basic_auth_pw() + # check for PythonOptions _str_to_bool = lambda s: s.lower() in ('1', 'true', 'on', 'yes') diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py index bf661b8a96..baf7e6e210 100644 --- a/django/contrib/auth/models.py +++ b/django/contrib/auth/models.py @@ -1,6 +1,7 @@ from django.core import validators from django.core.exceptions import ImproperlyConfigured from django.db import connection, models +from django.db.models.manager import EmptyManager from django.contrib.contenttypes.models import ContentType from django.utils.encoding import smart_str from django.utils.translation import ugettext_lazy as _ @@ -14,25 +15,43 @@ try: except NameError: from sets import Set as set # Python 2.3 fallback +def get_hexdigest(algorithm, salt, raw_password): + """ + Returns a string of the hexdigest of the given plaintext password and salt + using the given algorithm ('md5', 'sha1' or 'crypt'). + """ + raw_password, salt = smart_str(raw_password), smart_str(salt) + if algorithm == 'crypt': + try: + import crypt + except ImportError: + raise ValueError('"crypt" password algorithm not supported in this environment') + return crypt.crypt(raw_password, salt) + # The rest of the supported algorithms are supported by hashlib, but + # hashlib is only available in Python 2.5. + try: + import hashlib + except ImportError: + if algorithm == 'md5': + import md5 + return md5.new(salt + raw_password).hexdigest() + elif algorithm == 'sha1': + import sha + return sha.new(salt + raw_password).hexdigest() + else: + if algorithm == 'md5': + return hashlib.md5(salt + raw_password).hexdigest() + elif algorithm == 'sha1': + return hashlib.sha1(salt + raw_password).hexdigest() + raise ValueError("Got unknown password algorithm type in password.") + def check_password(raw_password, enc_password): """ Returns a boolean of whether the raw_password was correct. Handles encryption formats behind the scenes. """ algo, salt, hsh = enc_password.split('$') - if algo == 'md5': - import md5 - return hsh == md5.new(smart_str(salt + raw_password)).hexdigest() - elif algo == 'sha1': - import sha - return hsh == sha.new(smart_str(salt + raw_password)).hexdigest() - elif algo == 'crypt': - try: - import crypt - except ImportError: - raise ValueError, "Crypt password algorithm not supported in this environment." - return hsh == crypt.crypt(smart_str(raw_password), smart_str(salt)) - raise ValueError, "Got unknown password algorithm type in password." + return hsh == get_hexdigest(algo, salt, raw_password) class SiteProfileNotAvailable(Exception): pass @@ -146,10 +165,10 @@ class User(models.Model): return full_name.strip() def set_password(self, raw_password): - import sha, random + import random algo = 'sha1' - salt = sha.new(str(random.random())).hexdigest()[:5] - hsh = sha.new(salt + smart_str(raw_password)).hexdigest() + salt = get_hexdigest(algo, str(random.random()), str(random.random()))[:5] + hsh = get_hexdigest(algo, salt, raw_password) self.password = '%s$%s$%s' % (algo, salt, hsh) def check_password(self, raw_password): @@ -160,8 +179,7 @@ class User(models.Model): # Backwards-compatibility check. Older passwords won't include the # algorithm or salt. if '$' not in self.password: - import md5 - is_correct = (self.password == md5.new(smart_str(raw_password)).hexdigest()) + is_correct = (self.password == get_hexdigest('md5', '', raw_password)) if is_correct: # Convert the password to the new, more secure format. self.set_password(raw_password) @@ -278,6 +296,11 @@ class Message(models.Model): class AnonymousUser(object): id = None username = '' + is_staff = False + is_active = True + is_superuser = False + _groups = EmptyManager() + _user_permissions = EmptyManager() def __init__(self): pass @@ -310,11 +333,11 @@ class AnonymousUser(object): raise NotImplementedError def _get_groups(self): - raise NotImplementedError + return self._groups groups = property(_get_groups) def _get_user_permissions(self): - raise NotImplementedError + return self._user_permissions user_permissions = property(_get_user_permissions) def has_perm(self, perm): diff --git a/django/contrib/auth/tests.py b/django/contrib/auth/tests.py index ed768aa429..329049c546 100644 --- a/django/contrib/auth/tests.py +++ b/django/contrib/auth/tests.py @@ -1,5 +1,5 @@ """ ->>> from models import User +>>> from models import User, AnonymousUser >>> u = User.objects.create_user('testuser', 'test@example.com', 'testpw') >>> u.has_usable_password() True @@ -16,4 +16,11 @@ False >>> u2 = User.objects.create_user('testuser2', 'test2@example.com') >>> u2.has_usable_password() False +>>> a = AnonymousUser() +>>> a.is_staff +False +>>> a.groups.all() +[] +>>> a.user_permissions.all() +[] """ \ No newline at end of file diff --git a/django/contrib/auth/views.py b/django/contrib/auth/views.py index f1129379d6..d3d8b4ccb7 100644 --- a/django/contrib/auth/views.py +++ b/django/contrib/auth/views.py @@ -9,10 +9,10 @@ from django.contrib.auth.decorators import login_required from django.contrib.auth import REDIRECT_FIELD_NAME from django.utils.translation import ugettext as _ -def login(request, template_name='registration/login.html'): +def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME): "Displays the login form and handles the login action." manipulator = AuthenticationForm(request) - redirect_to = request.REQUEST.get(REDIRECT_FIELD_NAME, '') + redirect_to = request.REQUEST.get(redirect_field_name, '') if request.POST: errors = manipulator.get_validation_errors(request.POST) if not errors: @@ -35,7 +35,7 @@ def login(request, template_name='registration/login.html'): return render_to_response(template_name, { 'form': oldforms.FormWrapper(manipulator, request.POST, errors), - REDIRECT_FIELD_NAME: redirect_to, + redirect_field_name: redirect_to, 'site_name': current_site.name, }, context_instance=RequestContext(request)) @@ -56,12 +56,12 @@ def logout_then_login(request, login_url=None): login_url = settings.LOGIN_URL return logout(request, login_url) -def redirect_to_login(next, login_url=None): +def redirect_to_login(next, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME): "Redirects the user to the login page, passing the given 'next' page" if not login_url: from django.conf import settings login_url = settings.LOGIN_URL - return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, next)) + return HttpResponseRedirect('%s?%s=%s' % (login_url, redirect_field_name, next)) def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html'): diff --git a/django/contrib/comments/views/comments.py b/django/contrib/comments/views/comments.py index fbec04c8eb..67da5759ac 100644 --- a/django/contrib/comments/views/comments.py +++ b/django/contrib/comments/views/comments.py @@ -155,7 +155,7 @@ class PublicFreeCommentManipulator(oldforms.Manipulator): c.save() return c -def post_comment(request): +def post_comment(request, extra_context=None, context_processors=None): """ Post a comment @@ -185,6 +185,7 @@ def post_comment(request): rating_choices choice of ratings """ + if extra_context is None: extra_context = {} if not request.POST: raise Http404, _("Only POSTs are allowed") try: @@ -244,7 +245,7 @@ def post_comment(request): 'ratings_required': RATINGS_REQUIRED in option_list, 'rating_range': rating_range, 'rating_choices': rating_choices, - }, context_instance=RequestContext(request)) + }, context_instance=RequestContext(request, extra_context, context_processors)) elif 'post' in request.POST: # If the IP is banned, mail the admins, do NOT save the comment, and # serve up the "Thanks for posting" page as if the comment WAS posted. @@ -257,7 +258,7 @@ def post_comment(request): else: raise Http404, _("The comment form didn't provide either 'preview' or 'post'") -def post_free_comment(request): +def post_free_comment(request, extra_context=None, context_processors=None): """ Post a free comment (not requiring a log in) @@ -277,6 +278,7 @@ def post_free_comment(request): security hash (must be included in a posted form to succesfully post a comment). """ + if extra_context is None: extra_context = {} if not request.POST: raise Http404, _("Only POSTs are allowed") try: @@ -307,7 +309,7 @@ def post_free_comment(request): 'options': options, 'target': target, 'hash': security_hash, - }, context_instance=RequestContext(request)) + }, context_instance=RequestContext(request, extra_context, context_processors)) elif 'post' in request.POST: # If the IP is banned, mail the admins, do NOT save the comment, and # serve up the "Thanks for posting" page as if the comment WAS posted. @@ -321,7 +323,7 @@ def post_free_comment(request): else: raise Http404, _("The comment form didn't provide either 'preview' or 'post'") -def comment_was_posted(request): +def comment_was_posted(request, extra_context=None, context_processors=None): """ Display "comment was posted" success page @@ -330,6 +332,7 @@ def comment_was_posted(request): object The object the comment was posted on """ + if extra_context is None: extra_context = {} obj = None if 'c' in request.GET: content_type_id, object_id = request.GET['c'].split(':') @@ -338,4 +341,5 @@ def comment_was_posted(request): obj = content_type.get_object_for_this_type(pk=object_id) except ObjectDoesNotExist: pass - return render_to_response('comments/posted.html', {'object': obj}, context_instance=RequestContext(request)) + return render_to_response('comments/posted.html', {'object': obj}, + context_instance=RequestContext(request, extra_context, context_processors)) diff --git a/django/contrib/comments/views/karma.py b/django/contrib/comments/views/karma.py index c6ad301dee..7c0e284ae9 100644 --- a/django/contrib/comments/views/karma.py +++ b/django/contrib/comments/views/karma.py @@ -4,7 +4,7 @@ from django.template import RequestContext from django.contrib.comments.models import Comment, KarmaScore from django.utils.translation import ugettext as _ -def vote(request, comment_id, vote): +def vote(request, comment_id, vote, extra_context=None, context_processors=None): """ Rate a comment (+1 or -1) @@ -13,6 +13,7 @@ def vote(request, comment_id, vote): comment `comments.comments` object being rated """ + if extra_context is None: extra_context = {} rating = {'up': 1, 'down': -1}.get(vote, False) if not rating: raise Http404, "Invalid vote" @@ -27,4 +28,5 @@ def vote(request, comment_id, vote): KarmaScore.objects.vote(request.user.id, comment_id, rating) # Reload comment to ensure we have up to date karma count comment = Comment.objects.get(pk=comment_id) - return render_to_response('comments/karma_vote_accepted.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/karma_vote_accepted.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) diff --git a/django/contrib/comments/views/userflags.py b/django/contrib/comments/views/userflags.py index 76f14ef19c..91518dc5dd 100644 --- a/django/contrib/comments/views/userflags.py +++ b/django/contrib/comments/views/userflags.py @@ -6,7 +6,7 @@ from django.contrib.auth.decorators import login_required from django.http import HttpResponseRedirect from django.conf import settings -def flag(request, comment_id): +def flag(request, comment_id, extra_context=None, context_processors=None): """ Flags a comment. Confirmation on GET, action on POST. @@ -15,18 +15,22 @@ def flag(request, comment_id): comment the flagged `comments.comments` object """ + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) if request.POST: UserFlag.objects.flag(comment, request.user) return HttpResponseRedirect('%sdone/' % request.path) - return render_to_response('comments/flag_verify.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/flag_verify.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) flag = login_required(flag) -def flag_done(request, comment_id): +def flag_done(request, comment_id, extra_context=None, context_processors=None): + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) - return render_to_response('comments/flag_done.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/flag_done.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) -def delete(request, comment_id): +def delete(request, comment_id, extra_context=None, context_processors=None): """ Deletes a comment. Confirmation on GET, action on POST. @@ -35,6 +39,7 @@ def delete(request, comment_id): comment the flagged `comments.comments` object """ + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) if not Comment.objects.user_is_moderator(request.user): raise Http404 @@ -46,9 +51,12 @@ def delete(request, comment_id): m = ModeratorDeletion(None, request.user.id, comment.id, None) m.save() return HttpResponseRedirect('%sdone/' % request.path) - return render_to_response('comments/delete_verify.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/delete_verify.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) delete = login_required(delete) -def delete_done(request, comment_id): +def delete_done(request, comment_id, extra_context=None, context_processors=None): + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) - return render_to_response('comments/delete_done.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/delete_done.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) diff --git a/django/contrib/contenttypes/management.py b/django/contrib/contenttypes/management.py index cb52e0805e..49083d6d5c 100644 --- a/django/contrib/contenttypes/management.py +++ b/django/contrib/contenttypes/management.py @@ -1,34 +1,43 @@ -""" -Creates content types for all installed models. -""" - +from django.contrib.contenttypes.models import ContentType from django.dispatch import dispatcher from django.db.models import get_apps, get_models, signals from django.utils.encoding import smart_unicode -def create_contenttypes(app, created_models, verbosity=2): - from django.contrib.contenttypes.models import ContentType +def update_contenttypes(app, created_models, verbosity=2): + """ + Creates content types for models in the given app, removing any model + entries that no longer have a matching model class. + """ ContentType.objects.clear_cache() + content_types = list(ContentType.objects.filter(app_label=app.__name__.split('.')[-2])) app_models = get_models(app) if not app_models: return for klass in app_models: opts = klass._meta try: - ContentType.objects.get(app_label=opts.app_label, - model=opts.object_name.lower()) + ct = ContentType.objects.get(app_label=opts.app_label, + model=opts.object_name.lower()) + content_types.remove(ct) except ContentType.DoesNotExist: ct = ContentType(name=smart_unicode(opts.verbose_name_raw), app_label=opts.app_label, model=opts.object_name.lower()) ct.save() if verbosity >= 2: print "Adding content type '%s | %s'" % (ct.app_label, ct.model) + # The presence of any remaining content types means the supplied app has an + # undefined model and can safely be removed, which cascades to also remove + # related permissions. + for ct in content_types: + if verbosity >= 2: + print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model) + ct.delete() -def create_all_contenttypes(verbosity=2): +def update_all_contenttypes(verbosity=2): for app in get_apps(): - create_contenttypes(app, None, verbosity) + update_contenttypes(app, None, verbosity) -dispatcher.connect(create_contenttypes, signal=signals.post_syncdb) +dispatcher.connect(update_contenttypes, signal=signals.post_syncdb) if __name__ == "__main__": - create_all_contenttypes() + update_all_contenttypes() diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py index cda47a18aa..1413586254 100644 --- a/django/contrib/contenttypes/models.py +++ b/django/contrib/contenttypes/models.py @@ -25,7 +25,7 @@ class ContentTypeManager(models.Manager): """ Clear out the content-type cache. This needs to happen during database flushes to prevent caching of "stale" content type IDs (see - django.contrib.contenttypes.management.create_contenttypes for where + django.contrib.contenttypes.management.update_contenttypes for where this gets called). """ global CONTENT_TYPE_CACHE diff --git a/django/contrib/databrowse/templates/databrowse/calendar_day.html b/django/contrib/databrowse/templates/databrowse/calendar_day.html index b0f57e1eae..bbb62cc814 100644 --- a/django/contrib/databrowse/templates/databrowse/calendar_day.html +++ b/django/contrib/databrowse/templates/databrowse/calendar_day.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/calendar_homepage.html b/django/contrib/databrowse/templates/databrowse/calendar_homepage.html index daf45dfdeb..85eb8af9eb 100644 --- a/django/contrib/databrowse/templates/databrowse/calendar_homepage.html +++ b/django/contrib/databrowse/templates/databrowse/calendar_homepage.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/calendar_main.html b/django/contrib/databrowse/templates/databrowse/calendar_main.html index 18ee5bdc8b..b22a44d321 100644 --- a/django/contrib/databrowse/templates/databrowse/calendar_main.html +++ b/django/contrib/databrowse/templates/databrowse/calendar_main.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/calendar_month.html b/django/contrib/databrowse/templates/databrowse/calendar_month.html index 67506f452f..70b7deb75a 100644 --- a/django/contrib/databrowse/templates/databrowse/calendar_month.html +++ b/django/contrib/databrowse/templates/databrowse/calendar_month.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/calendar_year.html b/django/contrib/databrowse/templates/databrowse/calendar_year.html index 729c2ddf3b..a6e6f53ba3 100644 --- a/django/contrib/databrowse/templates/databrowse/calendar_year.html +++ b/django/contrib/databrowse/templates/databrowse/calendar_year.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/choice_detail.html b/django/contrib/databrowse/templates/databrowse/choice_detail.html index e6add55021..6cb73e73ec 100644 --- a/django/contrib/databrowse/templates/databrowse/choice_detail.html +++ b/django/contrib/databrowse/templates/databrowse/choice_detail.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/choice_list.html b/django/contrib/databrowse/templates/databrowse/choice_list.html index 07a1319459..95cd88b0bf 100644 --- a/django/contrib/databrowse/templates/databrowse/choice_list.html +++ b/django/contrib/databrowse/templates/databrowse/choice_list.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html b/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html index d1c8b877cb..7801f3f631 100644 --- a/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html +++ b/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html b/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html index 8760bd4ad1..3259824061 100644 --- a/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html +++ b/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html b/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html index 9f41213a6f..71b906d3e7 100644 --- a/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html +++ b/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html @@ -10,7 +10,7 @@ diff --git a/django/contrib/databrowse/templates/databrowse/homepage.html b/django/contrib/databrowse/templates/databrowse/homepage.html index 104a804253..718e577416 100644 --- a/django/contrib/databrowse/templates/databrowse/homepage.html +++ b/django/contrib/databrowse/templates/databrowse/homepage.html @@ -7,7 +7,7 @@ {% block content %} {% for model in model_list %} -
                                                +

                                                {{ model.verbose_name_plural|capfirst }}

                                                {% for object in model.sample_objects %} diff --git a/django/contrib/databrowse/templates/databrowse/model_detail.html b/django/contrib/databrowse/templates/databrowse/model_detail.html index 2084b18ca7..b66bc093dd 100644 --- a/django/contrib/databrowse/templates/databrowse/model_detail.html +++ b/django/contrib/databrowse/templates/databrowse/model_detail.html @@ -12,7 +12,7 @@

                                                diff --git a/django/contrib/databrowse/templates/databrowse/object_detail.html b/django/contrib/databrowse/templates/databrowse/object_detail.html index e9977743fd..7c1bd3e16d 100644 --- a/django/contrib/databrowse/templates/databrowse/object_detail.html +++ b/django/contrib/databrowse/templates/databrowse/object_detail.html @@ -10,7 +10,7 @@ {% for field in object.fields %} - + + ... {% endfor %} @@ -411,16 +412,17 @@ def cycle(parser, token): Outside of a loop, give the values a unique name the first time you call it, then use that name each sucessive time through:: - ... + ......... - You can use any number of values, seperated by commas. Make sure not to - put spaces between the values -- only commas. + You can use any number of values, seperated by spaces. Commas can also + be used to separate values; if a comma is used, the cycle values are + interpreted as literal strings. """ # Note: This returns the exact same node on each {% cycle name %} call; that - # is, the node object returned from {% cycle a,b,c as name %} and the one + # is, the node object returned from {% cycle a b c as name %} and the one # returned from {% cycle name %} are the exact same object. This shouldn't # cause problems (heh), but if it does, now you know. # @@ -429,40 +431,34 @@ def cycle(parser, token): # a global variable, which would make cycle names have to be unique across # *all* templates. - args = token.contents.split() + args = token.split_contents() + if len(args) < 2: - raise TemplateSyntaxError("'Cycle' statement requires at least two arguments") + raise TemplateSyntaxError("'cycle' tag requires at least two arguments") - elif len(args) == 2 and "," in args[1]: - # {% cycle a,b,c %} - cyclevars = [v for v in args[1].split(",") if v] # split and kill blanks - return CycleNode(cyclevars) - # {% cycle name %} + if ',' in args[1]: + # Backwards compatibility: {% cycle a,b %} or {% cycle a,b as foo %} + # case. + args[1:2] = ['"%s"' % arg for arg in args[1].split(",")] - elif len(args) == 2: + if len(args) == 2: + # {% cycle foo %} case name = args[1] if not hasattr(parser, '_namedCycleNodes'): raise TemplateSyntaxError("No named cycles in template: '%s' is not defined" % name) - if name not in parser._namedCycleNodes: + if not name in parser._namedCycleNodes: raise TemplateSyntaxError("Named cycle '%s' does not exist" % name) return parser._namedCycleNodes[name] - elif len(args) == 4: - # {% cycle a,b,c as name %} - if args[2] != 'as': - raise TemplateSyntaxError("Second 'cycle' argument must be 'as'") - cyclevars = [v for v in args[1].split(",") if v] # split and kill blanks - name = args[3] - node = CycleNode(cyclevars, name) - + if len(args) > 4 and args[-2] == 'as': + name = args[-1] + node = CycleNode(args[1:-2], name) if not hasattr(parser, '_namedCycleNodes'): parser._namedCycleNodes = {} - parser._namedCycleNodes[name] = node - return node - else: - raise TemplateSyntaxError("Invalid arguments to 'cycle': %s" % args) + node = CycleNode(args[1:]) + return node cycle = register.tag(cycle) def debug(parser, token): @@ -799,7 +795,7 @@ def load(parser, token): for taglib in bits[1:]: # add the library to the parser try: - lib = get_library("django.templatetags.%s" % taglib.split('.')[-1]) + lib = get_library("django.templatetags.%s" % taglib) parser.add_library(lib) except InvalidTemplateLibrary, e: raise TemplateSyntaxError, "'%s' is not a valid tag library: %s" % (taglib, e) diff --git a/django/test/_doctest.py b/django/test/_doctest.py index 8777a2cbba..3589e16225 100644 --- a/django/test/_doctest.py +++ b/django/test/_doctest.py @@ -1,5 +1,5 @@ # This is a slightly modified version of the doctest.py that shipped with Python 2.4 -# It incorporates changes that have been submitted the the Python ticket tracker +# It incorporates changes that have been submitted the the Python ticket tracker # as ticket #1521051. These changes allow for a DoctestRunner and Doctest base # class to be specified when constructing a DoctestSuite. @@ -105,6 +105,14 @@ import unittest, difflib, pdb, tempfile import warnings from StringIO import StringIO +if sys.platform.startswith('java'): + # On Jython, isclass() reports some modules as classes. Patch it. + def patch_isclass(isclass): + def patched_isclass(obj): + return isclass(obj) and hasattr(obj, '__module__') + return patched_isclass + inspect.isclass = patch_isclass(inspect.isclass) + # Don't whine about the deprecated is_private function in this # module's tests. warnings.filterwarnings("ignore", "is_private", DeprecationWarning, diff --git a/django/test/client.py b/django/test/client.py index c3e221554f..faacc5bf9e 100644 --- a/django/test/client.py +++ b/django/test/client.py @@ -16,6 +16,7 @@ from django.test import signals from django.utils.functional import curry from django.utils.encoding import smart_str from django.utils.http import urlencode +from django.utils.itercompat import is_iterable BOUNDARY = 'BoUnDaRyStRiNg' MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY @@ -74,21 +75,22 @@ def encode_multipart(boundary, data): '', value.read() ]) - elif hasattr(value, '__iter__'): - for item in value: + else: + if not isinstance(value, basestring) and is_iterable(value): + for item in value: + lines.extend([ + '--' + boundary, + 'Content-Disposition: form-data; name="%s"' % to_str(key), + '', + to_str(item) + ]) + else: lines.extend([ '--' + boundary, 'Content-Disposition: form-data; name="%s"' % to_str(key), '', - to_str(item) + to_str(value) ]) - else: - lines.extend([ - '--' + boundary, - 'Content-Disposition: form-data; name="%s"' % to_str(key), - '', - to_str(value) - ]) lines.extend([ '--' + boundary + '--', diff --git a/django/test/testcases.py b/django/test/testcases.py index baa6e7bb19..6b7714ec7b 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -84,12 +84,8 @@ class TestCase(unittest.TestCase): self.assertEqual(response.status_code, status_code, ("Response didn't redirect as expected: Response code was %d" " (expected %d)" % (response.status_code, status_code))) - scheme, netloc, path, query, fragment = urlsplit(response['Location']) - url = path - if query: - url += '?' + query - if fragment: - url += '#' + fragment + url = response['Location'] + scheme, netloc, path, query, fragment = urlsplit(url) self.assertEqual(url, expected_url, "Response redirected to '%s', expected '%s'" % (url, expected_url)) diff --git a/django/utils/cache.py b/django/utils/cache.py index 2753d86949..2494d7839e 100644 --- a/django/utils/cache.py +++ b/django/utils/cache.py @@ -42,9 +42,9 @@ def patch_cache_control(response, **kwargs): def dictitem(s): t = s.split('=',1) if len(t) > 1: - return (t[0].lower().replace('-', '_'), t[1]) + return (t[0].lower(), t[1]) else: - return (t[0].lower().replace('-', '_'), True) + return (t[0].lower(), True) def dictvalue(t): if t[1] is True: diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index 4b60d1d194..ac890d5da6 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -14,9 +14,6 @@ class MergeDict(object): pass raise KeyError - def __contains__(self, key): - return self.has_key(key) - def __copy__(self): return self.__class__(*self.dicts) @@ -45,6 +42,8 @@ class MergeDict(object): if key in dict: return True return False + + __contains__ = has_key def copy(self): """ returns a copy of this object""" @@ -239,22 +238,20 @@ class DotExpandedDict(dict): may contain dots to specify inner dictionaries. It's confusing, but this example should make sense. - >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], - 'person.1.lastname': ['Willison'], - 'person.2.firstname': ['Adrian'], + >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \ + 'person.1.lastname': ['Willison'], \ + 'person.2.firstname': ['Adrian'], \ 'person.2.lastname': ['Holovaty']}) >>> d - {'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, - '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}} + {'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}} >>> d['person'] - {'1': {'firstname': ['Simon'], 'lastname': ['Willison'], - '2': {'firstname': ['Adrian'], 'lastname': ['Holovaty']} + {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}} >>> d['person']['1'] - {'firstname': ['Simon'], 'lastname': ['Willison']} + {'lastname': ['Willison'], 'firstname': ['Simon']} # Gotcha: Results are unpredictable if the dots are "uneven": >>> DotExpandedDict({'c.1': 2, 'c.2': 3, 'c': 1}) - >>> {'c': 1} + {'c': 1} """ def __init__(self, key_to_list_mapping): for k, v in key_to_list_mapping.items(): diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py index d5f3499d82..0e6541c721 100644 --- a/django/utils/dateformat.py +++ b/django/utils/dateformat.py @@ -248,10 +248,15 @@ class DateFormat(TimeFormat): return doy def Z(self): - """Time zone offset in seconds (i.e. '-43200' to '43200'). The offset - for timezones west of UTC is always negative, and for those east of UTC - is always positive.""" - return self.timezone.utcoffset(self.data).seconds + """ + Time zone offset in seconds (i.e. '-43200' to '43200'). The offset for + timezones west of UTC is always negative, and for those east of UTC is + always positive. + """ + offset = self.timezone.utcoffset(self.data) + # Only days can be negative, so negative offsets have days=-1 and + # seconds positive. Positive offsets have days=0 + return offset.days * 86400 + offset.seconds def format(value, format_string): "Convenience function" diff --git a/django/utils/encoding.py b/django/utils/encoding.py index 2319496538..69c3e9c28b 100644 --- a/django/utils/encoding.py +++ b/django/utils/encoding.py @@ -30,7 +30,7 @@ def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'): If strings_only is True, don't convert (some) non-string-like objects. """ - if strings_only and isinstance(s, (types.NoneType, int)): + if strings_only and isinstance(s, (types.NoneType, int, long)): return s if not isinstance(s, basestring,): if hasattr(s, '__unicode__'): diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py index 6b6dedfbe9..e296331324 100644 --- a/django/utils/feedgenerator.py +++ b/django/utils/feedgenerator.py @@ -3,6 +3,7 @@ Syndication feed generation library -- used for generating RSS, etc. Sample usage: +>>> from django.utils import feedgenerator >>> feed = feedgenerator.Rss201rev2Feed( ... title=u"Poynter E-Media Tidbits", ... link=u"http://www.poynter.org/column.asp?id=31", @@ -27,7 +28,10 @@ def rfc2822_date(date): return email.Utils.formatdate(time.mktime(date.timetuple())) def rfc3339_date(date): - return date.strftime('%Y-%m-%dT%H:%M:%SZ') + if date.tzinfo: + return date.strftime('%Y-%m-%dT%H:%M:%S%z') + else: + return date.strftime('%Y-%m-%dT%H:%M:%SZ') def get_tag_uri(url, date): "Creates a TagURI. See http://diveintomark.org/archives/2004/05/28/howto-atom-id" diff --git a/django/utils/functional.py b/django/utils/functional.py index 734704f6f3..f4580e7bd5 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -101,6 +101,13 @@ def lazy(func, *resultclasses): else: raise AssertionError('__mod__ not supported for non-string types') + def __deepcopy__(self, memo): + # Instances of this class are effectively immutable. It's just a + # collection of functions. So we don't need to do anything + # complicated for copying. + memo[id(self)] = self + return self + def __wrapper__(*args, **kw): # Creates the proxy object, instead of the actual value. return __proxy__(args, kw) diff --git a/django/utils/itercompat.py b/django/utils/itercompat.py index 0de1b6cbe2..3742d6c5d8 100644 --- a/django/utils/itercompat.py +++ b/django/utils/itercompat.py @@ -57,3 +57,13 @@ else: tee = compat_tee if hasattr(itertools, 'groupby'): groupby = itertools.groupby + +def is_iterable(x): + "A implementation independent way of checking for iterables" + try: + iter(x) + except TypeError: + return False + else: + return True + diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 765152afce..5fff1ea63a 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -491,6 +491,8 @@ def templatize(src): elif g[0] == "'": g = g.strip("'") out.write(' gettext(%r) ' % g) elif bmatch: + for fmatch in constant_re.findall(t.contents): + out.write(' _(%s) ' % fmatch) intrans = True inplural = False singular = [] diff --git a/django/views/generic/date_based.py b/django/views/generic/date_based.py index 1a8c4c611a..e6a75e63aa 100644 --- a/django/views/generic/date_based.py +++ b/django/views/generic/date_based.py @@ -10,7 +10,7 @@ from django.http import Http404, HttpResponse def archive_index(request, queryset, date_field, num_latest=15, template_name=None, template_loader=loader, extra_context=None, allow_empty=False, context_processors=None, - mimetype=None, allow_future=False): + mimetype=None, allow_future=False, template_object_name='latest'): """ Generic top-level archive of date-based objects. @@ -39,7 +39,7 @@ def archive_index(request, queryset, date_field, num_latest=15, t = template_loader.get_template(template_name) c = RequestContext(request, { 'date_list' : date_list, - 'latest' : latest, + template_object_name : latest, }, context_processors) for key, value in extra_context.items(): if callable(value): diff --git a/django/views/generic/list_detail.py b/django/views/generic/list_detail.py index f5616b9745..b72173bd76 100644 --- a/django/views/generic/list_detail.py +++ b/django/views/generic/list_detail.py @@ -39,6 +39,8 @@ def object_list(request, queryset, paginate_by=None, page=None, first_on_page the result number of the first object in the object_list (1-indexed) + page_range: + A list of the page numbers (1-indexed). """ if extra_context is None: extra_context = {} queryset = queryset._clone() @@ -47,10 +49,17 @@ def object_list(request, queryset, paginate_by=None, page=None, if not page: page = request.GET.get('page', 1) try: - page = int(page) - object_list = paginator.get_page(page - 1) - except (InvalidPage, ValueError): - if page == 1 and allow_empty: + page_number = int(page) + except ValueError: + if page == 'last': + page_number = paginator.pages + else: + # Page is not 'last', nor can it be converted to an int + raise Http404 + try: + object_list = paginator.get_page(page_number - 1) + except InvalidPage: + if page_number == 1 and allow_empty: object_list = [] else: raise Http404 @@ -58,15 +67,16 @@ def object_list(request, queryset, paginate_by=None, page=None, '%s_list' % template_object_name: object_list, 'is_paginated': paginator.pages > 1, 'results_per_page': paginate_by, - 'has_next': paginator.has_next_page(page - 1), - 'has_previous': paginator.has_previous_page(page - 1), - 'page': page, - 'next': page + 1, - 'previous': page - 1, - 'last_on_page': paginator.last_on_page(page - 1), - 'first_on_page': paginator.first_on_page(page - 1), + 'has_next': paginator.has_next_page(page_number - 1), + 'has_previous': paginator.has_previous_page(page_number - 1), + 'page': page_number, + 'next': page_number + 1, + 'previous': page_number - 1, + 'last_on_page': paginator.last_on_page(page_number - 1), + 'first_on_page': paginator.first_on_page(page_number - 1), 'pages': paginator.pages, 'hits' : paginator.hits, + 'page_range' : paginator.page_range }, context_processors) else: c = RequestContext(request, { diff --git a/django/views/generic/simple.py b/django/views/generic/simple.py index 69a494931e..9d7efdc6c4 100644 --- a/django/views/generic/simple.py +++ b/django/views/generic/simple.py @@ -2,11 +2,12 @@ from django.shortcuts import render_to_response from django.template import loader, RequestContext from django.http import HttpResponse, HttpResponsePermanentRedirect, HttpResponseGone -def direct_to_template(request, template, extra_context={}, mimetype=None, **kwargs): +def direct_to_template(request, template, extra_context=None, mimetype=None, **kwargs): """ Render a given template with any extra URL parameters in the context as ``{{ params }}``. """ + if extra_context is None: extra_context = {} dictionary = {'params': kwargs} for key, value in extra_context.items(): if callable(value): diff --git a/django/views/i18n.py b/django/views/i18n.py index 320caf37d7..cccec13941 100644 --- a/django/views/i18n.py +++ b/django/views/i18n.py @@ -9,20 +9,26 @@ def set_language(request): """ Redirect to a given url while setting the chosen language in the session or cookie. The url and the language code need to be - specified in the GET parameters. + specified in the request parameters. + + Since this view changes how the user will see the rest of the site, it must + only be accessed as a POST request. If called as a GET request, it will + redirect to the page in the request (the 'next' parameter) without changing + any state. """ - lang_code = request.GET.get('language', None) - next = request.GET.get('next', None) + next = request.REQUEST.get('next', None) if not next: next = request.META.get('HTTP_REFERER', None) if not next: next = '/' response = http.HttpResponseRedirect(next) - if lang_code and check_for_language(lang_code): - if hasattr(request, 'session'): - request.session['django_language'] = lang_code - else: - response.set_cookie('django_language', lang_code) + if request.method == 'POST': + lang_code = request.POST.get('language', None) + if lang_code and check_for_language(lang_code): + if hasattr(request, 'session'): + request.session['django_language'] = lang_code + else: + response.set_cookie('django_language', lang_code) return response NullSource = """ diff --git a/docs/add_ons.txt b/docs/add_ons.txt index a1d78b8685..00c6e0dcf4 100644 --- a/docs/add_ons.txt +++ b/docs/add_ons.txt @@ -70,8 +70,9 @@ An abstraction of the following workflow: "Display an HTML form, force a preview, then do something with the submission." -Full documentation for this feature does not yet exist, but you can read the -code and docstrings in ``django/contrib/formtools/preview.py`` for a start. +See the `form preview documentation`_. + +.. _form preview documentation: ../form_preview/ humanize ======== diff --git a/docs/apache_auth.txt b/docs/apache_auth.txt index 583cb96b39..9beb1ba43a 100644 --- a/docs/apache_auth.txt +++ b/docs/apache_auth.txt @@ -21,14 +21,57 @@ file, you'll need to use mod_python's ``PythonAuthenHandler`` directive along with the standard ``Auth*`` and ``Require`` directives:: - AuthType basic + AuthType Basic AuthName "example.com" Require valid-user SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonAuthenHandler django.contrib.auth.handlers.modpython + +.. admonition:: Using the authentication handler with Apache 2.2 + If you're using Apache 2.2, you'll need to take a couple extra steps. + + You'll need to ensure that ``mod_auth_basic`` and ``mod_authz_user`` + are loaded. These might be compiled staticly into Apache, or you might + need to use ``LoadModule`` to load them dynamically (as shown in the + example at the bottom of this note). + + You'll also need to insert configuration directives that prevent Apache + from trying to use other authentication modules. Depnding on which other + authentication modules you have loaded, you might need one or more of + the following directives:: + + AuthBasicAuthoritative Off + AuthDefaultAuthoritative Off + AuthzLDAPAuthoritative Off + AuthzDBMAuthoritative Off + AuthzDefaultAuthoritative Off + AuthzGroupFileAuthoritative Off + AuthzOwnerAuthoritative Off + AuthzUserAuthoritative Off + + A complete configuration, with differences between Apache 2.0 and + Apache 2.2 marked in bold, would look something like: + + .. parsed-literal:: + + **LoadModule auth_basic_module modules/mod_auth_basic.so** + **LoadModule authz_user_module modules/mod_authz_user.so** + + ... + + + AuthType Basic + AuthName "example.com" + **AuthBasicAuthoritative Off** + Require valid-user + + SetEnv DJANGO_SETTINGS_MODULE mysite.settings + PythonAuthenHandler django.contrib.auth.handlers.modpython + + By default, the authentication handler will limit access to the ``/example/`` location to users marked as staff members. You can use a set of ``PythonOption`` directives to modify this behavior: diff --git a/docs/authentication.txt b/docs/authentication.txt index 131a8930b5..713e86c140 100644 --- a/docs/authentication.txt +++ b/docs/authentication.txt @@ -244,6 +244,9 @@ Anonymous users the ``django.contrib.auth.models.User`` interface, with these differences: * ``id`` is always ``None``. + * ``is_staff`` and ``is_superuser`` are always False. + * ``is_active`` is always True. + * ``groups`` and ``user_permissions`` are always empty. * ``is_anonymous()`` returns ``True`` instead of ``False``. * ``is_authenticated()`` returns ``False`` instead of ``True``. * ``has_perm()`` always returns ``False``. @@ -402,11 +405,29 @@ introduced in Python 2.4:: def my_view(request): # ... +In the Django development version, ``login_required`` also takes an optional +``redirect_field_name`` parameter. Example:: + + from django.contrib.auth.decorators import login_required + + def my_view(request): + # ... + my_view = login_required(redirect_field_name='redirect_to')(my_view) + +Again, an equivalent example of the more compact decorator syntax introduced in Python 2.4:: + + from django.contrib.auth.decorators import login_required + + @login_required(redirect_field_name='redirect_to') + def my_view(request): + # ... + ``login_required`` does the following: * If the user isn't logged in, redirect to ``settings.LOGIN_URL`` (``/accounts/login/`` by default), passing the current absolute URL - in the query string as ``next``. For example: + in the query string as ``next`` or the value of ``redirect_field_name``. + For example: ``/accounts/login/?next=/polls/3/``. * If the user is logged in, execute the view normally. The view code is free to assume the user is logged in. @@ -974,10 +995,10 @@ Writing an authentication backend --------------------------------- An authentication backend is a class that implements two methods: -``get_user(id)`` and ``authenticate(**credentials)``. +``get_user(user_id)`` and ``authenticate(**credentials)``. -The ``get_user`` method takes an ``id`` -- which could be a username, database -ID or whatever -- and returns a ``User`` object. +The ``get_user`` method takes a ``user_id`` -- which could be a username, +database ID or whatever -- and returns a ``User`` object. The ``authenticate`` method takes credentials as keyword arguments. Most of the time, it'll just look like this:: diff --git a/docs/cache.txt b/docs/cache.txt index 92b5c1b43d..8ba0383909 100644 --- a/docs/cache.txt +++ b/docs/cache.txt @@ -524,6 +524,15 @@ the value of the ``CACHE_MIDDLEWARE_SETTINGS`` setting. If you use a custom ``max_age`` in a ``cache_control`` decorator, the decorator will take precedence, and the header values will be merged correctly.) +If you want to use headers to disable caching altogether, +``django.views.decorators.never_cache`` is a view decorator that adds +headers to ensure the response won't be cached by browsers or other caches. Example:: + + from django.views.decorators.cache import never_cache + @never_cache + def myview(request): + ... + .. _`Cache-Control spec`: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 Other optimizations diff --git a/docs/contenttypes.txt b/docs/contenttypes.txt new file mode 100644 index 0000000000..3ef83f2066 --- /dev/null +++ b/docs/contenttypes.txt @@ -0,0 +1,258 @@ +========================== +The contenttypes framework +========================== + +Django includes a "contenttypes" application that can track all of +the models installed in your Django-powered project, providing a +high-level, generic interface for working with your models. + +Overview +======== + +At the heart of the contenttypes application is the ``ContentType`` +model, which lives at +``django.contrib.contenttypes.models.ContentType``. Instances of +``ContentType`` represent and store information about the models +installed in your project, and new instances of ``ContentType`` are +automatically created whenever new models are installed. + +Instances of ``ContentType`` have methods for returning the model +classes they represent and for querying objects from those models. +``ContentType`` also has a `custom manager`_ that adds methods for +working with ``ContentType`` and for obtaining instances of +``ContentType`` for a particular model. + +Relations between your models and ``ContentType`` can also be used to +enable "generic" relationships between an instance of one of your +models and instances of any model you have installed. + +.. _custom manager: ../model-api/#custom-managers + +Installing the contenttypes framework +===================================== + +The contenttypes framework is included in the default +``INSTALLED_APPS`` list created by ``django-admin.py startproject``, +but if you've removed it or if you manually set up your +``INSTALLED_APPS`` list, you can enable it by adding +``'django.contrib.contenttypes'`` to your ``INSTALLED_APPS`` setting. + +It's generally a good idea to have the contenttypes framework +installed; several of Django's other bundled applications require it: + + * The admin application uses it to log the history of each object + added or changed through the admin interface. + + * Django's `authentication framework`_ uses it to tie user permissions + to specific models. + + * Django's comments system (``django.contrib.comments``) uses it to + "attach" comments to any installed model. + +.. _authentication framework: ../authentication/ + +The ``ContentType`` model +========================= + +Each instance of ``ContentType`` has three fields which, taken +together, uniquely describe an installed model: + + ``app_label`` + The name of the application the model is part of. This is taken from + the ``app_label`` attribute of the model, and includes only the *last* + part of the application's Python import path; + "django.contrib.contenttypes", for example, becomes an ``app_label`` + of "contenttypes". + + ``model`` + The name of the model class. + + ``name`` + The human-readable name of the model. This is taken from + `the verbose_name attribute`_ of the model. + +Let's look at an example to see how this works. If you already have +the contenttypes application installed, and then add `the sites +application`_ to your ``INSTALLED_APPS`` setting and run ``manage.py +syncdb`` to install it, the model ``django.contrib.sites.models.Site`` +will be installed into your database. Along with it a new instance +of ``ContentType`` will be created with the following values: + + * ``app_label`` will be set to ``'sites'`` (the last part of the Python + path "django.contrib.sites"). + + * ``model`` will be set to ``'site'``. + + * ``name`` will be set to ``'site'``. + +.. _the verbose_name attribute: ../model-api/#verbose_name +.. _the sites application: ../sites/ + +Methods on ``ContentType`` instances +==================================== + +Each ``ContentType`` instance has methods that allow you to get from a +``ContentType`` instance to the model it represents, or to retrieve objects +from that model: + + ``get_object_for_this_type(**kwargs)`` + Takes a set of valid `lookup arguments`_ for the model the + ``ContentType`` represents, and does `a get() lookup`_ on that + model, returning the corresponding object. + + ``model_class()`` + Returns the model class represented by this ``ContentType`` + instance. + +For example, we could look up the ``ContentType`` for the ``User`` model:: + + >>> from django.contrib.contenttypes.models import ContentType + >>> user_type = ContentType.objects.get(app_label="auth", model="user") + >>> user_type + + +And then use it to query for a particular ``User``, or to get access +to the ``User`` model class:: + + >>> user_type.model_class() + + >>> user_type.get_object_for_this_type(username='Guido') + + +Together, ``get_object_for_this_type`` and ``model_class`` enable two +extremely important use cases: + + 1. Using these methods, you can write high-level generic code that + performs queries on any installed model -- instead of importing and + using a single specific model class, you can pass an ``app_label`` + and ``model`` into a ``ContentType`` lookup at runtime, and then + work with the model class or retrieve objects from it. + + 2. You can relate another model to ``ContentType`` as a way of tying + instances of it to particular model classes, and use these methods + to get access to those model classes. + +Several of Django's bundled applications make use of the latter +technique. For example, `the permissions system`_ in Django's +authentication framework uses a ``Permission`` model with a foreign +key to ``ContentType``; this lets ``Permission`` represent concepts +like "can add blog entry" or "can delete news story". + +.. _lookup arguments: ../db-api/#field-lookups +.. _a get() lookup: ../db-api/#get-kwargs +.. _the permissions system: ../authentication/#permissions + +The ``ContentTypeManager`` +-------------------------- + +``ContentType`` also has a custom manager, ``ContentTypeManager``, +which adds the following methods: + + ``clear_cache()`` + Clears an internal cache used by ``ContentType`` to keep track of which + models for which it has created ``ContentType`` instances. You probably + won't ever need to call this method yourself; Django will call it + automatically when it's needed. + + ``get_for_model(model)`` + Takes either a model class or an instance of a model, and returns the + ``ContentType`` instance representing that model. + +The ``get_for_model`` method is especially useful when you know you +need to work with a ``ContentType`` but don't want to go to the +trouble of obtaining the model's metadata to perform a manual lookup:: + + >>> from django.contrib.auth.models import User + >>> user_type = ContentType.objects.get_for_model(User) + >>> user_type + + +Generic relations +================= + +Adding a foreign key from one of your own models to ``ContentType`` +allows your model to effectively tie itself to another model class, as +in the example of the ``Permission`` model above. But it's possible to +go one step further and use ``ContentType`` to enable truly generic +(sometimes called "polymorphic") relationships between models. + +A simple example is a tagging system, which might look like this:: + + from django.db import models + from django.contrib.contenttypes.models import ContentType + from django.contrib.contenttypes import generic + + class TaggedItem(models.Model): + tag = models.SlugField() + content_type = models.ForeignKey(ContentType) + object_id = models.PositiveIntegerField() + content_object = generic.GenericForeignKey('content_type', 'object_id') + + def __unicode__(self): + return self.tag + +A normal ``ForeignKey`` can only "point to" one other model, which +means that if the ``TaggedItem`` model used a ``ForeignKey`` it would have to +choose one and only one model to store tags for. The contenttypes +application provides a special field type -- +``django.contrib.contenttypes.generic.GenericForeignKey`` -- which +works around this and allows the relationship to be with any +model. There are three parts to setting up a ``GenericForeignKey``: + + 1. Give your model a ``ForeignKey`` to ``ContentType``. + + 2. Give your model a field that can store a primary-key value from the + models you'll be relating to. (For most models, this means an + ``IntegerField`` or ``PositiveIntegerField``.) + + 3. Give your model a ``GenericForeignKey``, and pass it the names of + the two fields described above. If these fields are named + "content_type" and "object_id", you can omit this -- those are the + default field names ``GenericForeignKey`` will look for. + +This will enable an API similar to the one used for a normal ``ForeignKey``; +each ``TaggedItem`` will have a ``content_object`` field that returns the +object it's related to, and you can also assign to that field or use it when +creating a ``TaggedItem``:: + + >>> from django.contrib.models.auth import User + >>> guido = User.objects.get(username='Guido') + >>> t = TaggedItem(content_object=guido, tag='bdfl') + >>> t.save() + >>> t.content_object + + +Reverse generic relations +------------------------- + +If you know which models you'll be using most often, you can also add +a "reverse" generic relationship to enable an additional API. For example:: + + class Bookmark(models.Model): + url = models.URLField() + tags = generic.GenericRelation(TaggedItem) + +``Bookmark`` instances will each have a ``tags`` attribute, which can +be used to retrieve their associated ``TaggedItems``:: + + >>> b = Bookmark('http://www.djangoproject.com/') + >>> b.save() + >>> t1 = TaggedItem(content_object=b, tag='django') + >>> t1.save() + >>> t2 = TaggedItem(content_object=b, tag='python') + >>> t2.save() + >>> b.tags.all() + [, ] + +If you don't add the reverse relationship, you can do the lookup manually:: + + >>> b = Bookmark.objects.get(url='http://www.djangoproject.com/) + >>> bookmark_type = ContentType.objects.get_for_model(b) + >>> TaggedItem.objects.filter(content_type__pk=bookmark_type.id, + ... object_id=b.id) + [, ] + +Note that if you delete an object that has a ``GenericRelation``, any objects +which have a ``GenericForeignKey`` pointing at it will be deleted as well. In +the example above, this means that if a ``Bookmark`` object were deleted, any +``TaggedItem`` objects pointing at it would be deleted at the same time. diff --git a/docs/contributing.txt b/docs/contributing.txt index 4ec5c3c2af..3200a87012 100644 --- a/docs/contributing.txt +++ b/docs/contributing.txt @@ -112,6 +112,61 @@ Submitting patches We're always grateful for patches to Django's code. Indeed, bug reports with associated patches will get fixed *far* more quickly than those without patches. +"Claiming" tickets +------------------ + +In an open-source project with hundreds of contributors around the world, it's +important to manage communication efficiently so that work doesn't get +duplicated and contributors can be as effective as possible. Hence, our policy +is for contributors to "claim" tickets in order to let other developers know +that a particular bug or feature is being worked on. + +If you have identified a contribution you want to make and you're capable of +fixing it (as measured by your coding ability, knowledge of Django internals +and time availability), claim it by following these steps: + + * `Create an account`_ to use in our ticket system. + * If a ticket for this issue doesn't exist yet, create one in our + `ticket tracker`_. + * If a ticket for this issue already exists, make sure nobody else has + claimed it. To do this, look at the "Assigned to" section of the ticket. + If it's assigned to "nobody," then it's available to be claimed. + Otherwise, somebody else is working on this ticket, and you either find + another bug/feature to work on, or contact the developer working on the + ticket to offer your help. + * Log into your account, if you haven't already, by clicking "Login" in the + upper right of the ticket page. + * Claim the ticket by clicking the radio button next to "Accept ticket" + near the bottom of the page, then clicking "Submit changes." + +.. _Create an account: http://www.djangoproject.com/accounts/register/ + +Ticket claimers' responsibility +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Once you've claimed a ticket, you have a responsibility to work on that ticket +in a reasonably timely fashion. If you don't have time to work on it, either +unclaim it or don't claim it in the first place! + +Core Django developers go through the list of claimed tickets from time to +time, checking whether any progress has been made. If there's no sign of +progress on a particular claimed ticket for a week or two after it's been +claimed, we will unclaim it for you so that it's no longer monopolized and +somebody else can claim it. + +If you've claimed a ticket and it's taking a long time (days or weeks) to code, +keep everybody updated by posting comments on the ticket. That way, we'll know +not to unclaim it. More communication is better than less communication! + +Which tickets should be claimed? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Of course, going through the steps of claiming tickets is overkill in some +cases. In the case of small changes, such as typos in the documentation or +small bugs that will only take a few minutes to fix, you don't need to jump +through the hoops of claiming tickets. Just submit your patch and be done with +it. + Patch style ----------- @@ -599,10 +654,31 @@ info, with the ``DATABASE_ENGINE`` setting. You will also need a ``ROOT_URLCONF` setting (its value is ignored; it just needs to be present) and a ``SITE_ID`` setting (any non-zero integer value will do) in order for all the tests to pass. -The unit tests will not touch your existing databases; they create a new -database, called ``django_test_db``, which is deleted when the tests are -finished. This means your user account needs permission to execute ``CREATE -DATABASE``. +If you're using the ``sqlite3`` database backend, no further settings are +needed. A temporary database will be created in memory when running the tests. + +If you're using another backend: + + * Your ``DATABASE_USER`` setting needs to specify an existing user account + for the database engine. + + * The ``DATABASE_NAME`` setting must be the name of an existing database to + which the given user has permission to connect. The unit tests will not + touch this database; the test runner creates a new database whose name is + ``DATABASE_NAME`` prefixed with ``test_``, and this test database is + deleted when the tests are finished. This means your user account needs + permission to execute ``CREATE DATABASE``. + +To run a subset of the unit tests, append the names of the test modules to the +``runtests.py`` command line. See the list of directories in +``tests/modeltests`` and ``tests/regressiontests`` for module names. + +As an example, if Django is not in your ``PYTHONPATH``, you placed +``settings.py`` in the ``tests/`` directory, and you'd like to only run tests +for generic relations and internationalization, type:: + + PYTHONPATH=.. + ./runtests.py --settings=settings generic_relations i18n Requesting features =================== diff --git a/docs/databases.txt b/docs/databases.txt index ed0cb61bc3..21ff4c7434 100644 --- a/docs/databases.txt +++ b/docs/databases.txt @@ -117,7 +117,7 @@ Here's a sample configuration which uses a MySQL option file:: [client] database = DATABASE_NAME user = DATABASE_USER - passwd = DATABASE_PASSWORD + password = DATABASE_PASSWORD default-character-set = utf8 Several other MySQLdb connection options may be useful, such as ``ssl``, diff --git a/docs/databrowse.txt b/docs/databrowse.txt index 81e9e8e83b..72e1c71720 100644 --- a/docs/databrowse.txt +++ b/docs/databrowse.txt @@ -58,4 +58,29 @@ How to use Databrowse 4. Run the Django server and visit ``/databrowse/`` in your browser. +Requiring user login +==================== + +You can restrict access to logged-in users with only a few extra lines of +code. Simply add the following import to your URLconf:: + + from django.contrib.auth.decorators import login_required + +Then modify the URLconf so that the ``databrowse.site.root`` view is decorated +with ``login_required``:: + + (r'^databrowse/(.*)', login_required(databrowse.site.root)), + +If you haven't already added support for user logins to your URLconf, as +described in the `user authentication docs`_, then you will need to do so +now with the following mapping:: + + (r'^accounts/login/$', 'django.contrib.auth.views.login'), + +The final step is to create the login form required by +``django.contrib.auth.views.login``. The `user authentication docs`_ +provide full details and a sample template that can be used for this +purpose. + .. _template loader docs: ../templates_python/#loader-types +.. _user authentication docs: ../authentication/ diff --git a/docs/db-api.txt b/docs/db-api.txt index 2a90b2d171..08b5391e3c 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -481,7 +481,7 @@ In SQL terms, that evaluates to:: WHERE NOT (pub_date > '2005-1-3' AND headline = 'Hello') This example excludes all entries whose ``pub_date`` is later than 2005-1-3 -AND whose headline is NOT "Hello":: +OR whose headline is "Hello":: Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3)).exclude(headline='Hello') @@ -511,6 +511,9 @@ like so:: Entry.objects.order_by('?') +Note: ``order_by('?')`` queries may be expensive and slow, depending on the +database backend you're using. + To order by a field in a different table, add the other table's name and a dot, like so:: @@ -799,6 +802,9 @@ of the arguments is required, but you should use at least one of them. Entry.objects.extra(where=['headline=%s'], params=['Lennon']) + The combined number of placeholders in the list of strings for ``select`` + or ``where`` should equal the number of values in the ``params`` list. + QuerySet methods that do not return QuerySets --------------------------------------------- @@ -945,6 +951,23 @@ Example:: If you pass ``in_bulk()`` an empty list, you'll get an empty dictionary. +``iterator()`` +~~~~~~~~~~~~ + +Evaluates the ``QuerySet`` (by performing the query) and returns an +`iterator`_ over the results. A ``QuerySet`` typically reads all of +its results and instantiates all of the corresponding objects the +first time you access it; ``iterator()`` will instead read results and +instantiate objects in discrete chunks, yielding them one at a +time. For a ``QuerySet`` which returns a large number of objects, this +often results in better performance and a significant reduction in +memory use. + +Note that using ``iterator()`` on a ``QuerySet`` which has already +been evaluated will force it to evaluate again, repeating the query. + +.. _iterator: http://www.python.org/dev/peps/pep-0234/ + ``latest(field_name=None)`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/django-admin.txt b/docs/django-admin.txt index cdd31a2c48..68fcad24fe 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -627,14 +627,34 @@ This is useful in a number of ways: in any way, knowing that whatever data changes you're making are only being made to a test database. -Note that this server can only run on the default port on localhost; it does -not yet accept a ``host`` or ``port`` parameter. - -Also note that it does *not* automatically detect changes to your Python source -code (as ``runserver`` does). It does, however, detect changes to templates. +Note that this server does *not* automatically detect changes to your Python +source code (as ``runserver`` does). It does, however, detect changes to +templates. .. _unit tests: ../testing/ +--addrport [port number or ipaddr:port] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Use ``--addrport`` to specify a different port, or IP address and port, from +the default of 127.0.0.1:8000. This value follows exactly the same format and +serves exactly the same function as the argument to the ``runserver`` subcommand. + +Examples: + +To run the test server on port 7000 with ``fixture1`` and ``fixture2``:: + + django-admin.py testserver --addrport 7000 fixture1 fixture2 + django-admin.py testserver fixture1 fixture2 --addrport 8080 + +(The above statements are equivalent. We include both of them to demonstrate +that it doesn't matter whether the options come before or after the +``testserver`` command.) + +To run on 1.2.3.4:7000 with a `test` fixture:: + + django-admin.py testserver --addrport 1.2.3.4:7000 test + --verbosity ~~~~~~~~~~~ diff --git a/docs/fastcgi.txt b/docs/fastcgi.txt index e50b9323bf..78ee9d408c 100644 --- a/docs/fastcgi.txt +++ b/docs/fastcgi.txt @@ -46,9 +46,8 @@ Prerequisite: flup ================== Before you can start using FastCGI with Django, you'll need to install flup_, -which is a Python library for dealing with FastCGI. Make sure to use the latest -Subversion snapshot of flup, as some users have reported stalled pages with -older flup versions. +which is a Python library for dealing with FastCGI. Version 0.5 or newer should +work fine. .. _flup: http://www.saddi.com/software/flup/ diff --git a/docs/form_preview.txt b/docs/form_preview.txt new file mode 100644 index 0000000000..4be7b07a74 --- /dev/null +++ b/docs/form_preview.txt @@ -0,0 +1,97 @@ +============ +Form preview +============ + +Django comes with an optional "form preview" application that helps automate +the following workflow: + +"Display an HTML form, force a preview, then do something with the submission." + +To force a preview of a form submission, all you have to do is write a short +Python class. + +Overview +========= + +Given a ``django.newforms.Form`` subclass that you define, this application +takes care of the following workflow: + + 1. Displays the form as HTML on a Web page. + 2. Validates the form data when it's submitted via POST. + a. If it's valid, displays a preview page. + b. If it's not valid, redisplays the form with error messages. + 3. When the "confirmation" form is submitted from the preview page, calls + a hook that you define -- a ``done()`` method that gets passed the valid + data. + +The framework enforces the required preview by passing a shared-secret hash to +the preview page via hidden form fields. If somebody tweaks the form parameters +on the preview page, the form submission will fail the hash-comparison test. + +How to use ``FormPreview`` +========================== + + 1. Point Django at the default FormPreview templates. There are two ways to + do this: + + * Add ``'django.contrib.formtools'`` to your ``INSTALLED_APPS`` + setting. This will work if your ``TEMPLATE_LOADERS`` setting includes + the ``app_directories`` template loader (which is the case by + default). See the `template loader docs`_ for more. + + * Otherwise, determine the full filesystem path to the + ``django/contrib/formtools/templates`` directory, and add that + directory to your ``TEMPLATE_DIRS`` setting. + + 2. Create a ``FormPreview`` subclass that overrides the ``done()`` method:: + + from django.contrib.formtools import FormPreview + from myapp.models import SomeModel + + class SomeModelFormPreview(FormPreview): + + def done(self, request, cleaned_data): + # Do something with the cleaned_data, then redirect + # to a "success" page. + return HttpResponseRedirect('/form/success') + + This method takes an ``HttpRequest`` object and a dictionary of the form + data after it has been validated and cleaned. It should return an + ``HttpResponseRedirect`` that is the end result of the form being + submitted. + + 3. Change your URLconf to point to an instance of your ``FormPreview`` + subclass:: + + from myapp.preview import SomeModelFormPreview + from myapp.models import SomeModel + from django import newforms as forms + + ...and add the following line to the appropriate model in your URLconf:: + + (r'^post/$', SomeModelFormPreview(forms.models.form_for_model(SomeModel))), + + Or, if you already have a Form class defined for the model:: + + (r'^post/$', SomeModelFormPreview(SomeModelForm)), + + 4. Run the Django server and visit ``/post/`` in your browser. + +.. _template loader docs: ../templates_python/#loader-types + +``FormPreview`` classes +======================= + +A ``FormPreview`` class is a simple Python class that represents the preview +workflow. ``FormPreview`` classes must subclass +``django.contrib.formtools.preview.FormPreview`` and override the ``done()`` +method. They can live anywhere in your codebase. + +``FormPreview`` templates +========================= + +By default, the form is rendered via the template ``formtools/form.html``, and +the preview page is rendered via the template ``formtools.preview.html``. +These values can be overridden for a particular form preview by setting +``preview_template`` and ``form_template`` attributes on the FormPreview +subclass. See ``django/contrib/formtools/templates`` for the default templates. diff --git a/docs/generic_views.txt b/docs/generic_views.txt index 0601aead11..87b82f7adf 100644 --- a/docs/generic_views.txt +++ b/docs/generic_views.txt @@ -201,6 +201,10 @@ a date in the *future* are not included unless you set ``allow_future`` to specified in ``date_field`` is greater than the current date/time. By default, this is ``False``. + * **New in Django development version:** ``template_object_name``: + Designates the name of the template variable to use in the template + context. By default, this is ``'latest'``. + **Template name:** If ``template_name`` isn't specified, this view will use the template @@ -221,10 +225,16 @@ In addition to ``extra_context``, the template's context will be: years that have objects available according to ``queryset``. These are ordered in reverse. This is equivalent to ``queryset.dates(date_field, 'year')[::-1]``. + * ``latest``: The ``num_latest`` objects in the system, ordered descending by ``date_field``. For example, if ``num_latest`` is ``10``, then ``latest`` will be a list of the latest 10 objects in ``queryset``. + **New in Django development version:** This variable's name depends on + the ``template_object_name`` parameter, which is ``'latest'`` by default. + If ``template_object_name`` is ``'foo'``, this variable's name will be + ``foo``. + .. _RequestContext docs: ../templates_python/#subclassing-context-requestcontext ``django.views.generic.date_based.archive_year`` @@ -688,9 +698,11 @@ A page representing a list of objects. * ``paginate_by``: An integer specifying how many objects should be displayed per page. If this is given, the view will paginate objects with ``paginate_by`` objects per page. The view will expect either a ``page`` - query string parameter (via ``GET``) containing a 1-based page - number, or a ``page`` variable specified in the URLconf. See - "Notes on pagination" below. + query string parameter (via ``GET``) or a ``page`` variable specified in + the URLconf. See `Notes on pagination`_ below. + + * ``page``: The current page number, as an integer. This is 1-based. + See `Notes on pagination`_ below. * ``template_name``: The full name of a template to use in rendering the page. This lets you override the default template name (see below). @@ -765,6 +777,9 @@ If the results are paginated, the context will contain these extra variables: * ``hits``: The total number of objects across *all* pages, not just this page. + * **New in Django development version:** ``page_range``: A list of the + page numbers that are available. This is 1-based. + Notes on pagination ~~~~~~~~~~~~~~~~~~~ @@ -777,12 +792,29 @@ specify the page number in the URL in one of two ways: (r'^objects/page(?P[0-9]+)/$', 'object_list', dict(info_dict)) * Pass the page number via the ``page`` query-string parameter. For - example, a URL would look like this: + example, a URL would look like this:: /objects/?page=3 -In both cases, ``page`` is 1-based, not 0-based, so the first page would be -represented as page ``1``. + * To loop over all the available page numbers, use the ``page_range`` + variable. You can iterate over the list provided by ``page_range`` + to create a link to every page of results. + +These values and lists are is 1-based, not 0-based, so the first page would be +represented as page ``1``. + +**New in Django development version:** + +As a special case, you are also permitted to use +``last`` as a value for ``page``:: + + /objects/?page=last + +This allows you to access the final page of results without first having to +determine how many pages there are. + +Note that ``page`` *must* be either a valid page number or the value ``last``; +any other value for ``page`` will result in a 404 error. ``django.views.generic.list_detail.object_detail`` -------------------------------------------------- diff --git a/docs/i18n.txt b/docs/i18n.txt index 38252edeb1..25191e9402 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -27,21 +27,8 @@ Essentially, Django does two things: * It uses these hooks to translate Web apps for particular users according to their language preferences. -How to internationalize your app: in three steps ------------------------------------------------- - - 1. Embed translation strings in your Python code and templates. - 2. Get translations for those strings, in whichever languages you want to - support. - 3. Activate the locale middleware in your Django settings. - -.. admonition:: Behind the scenes - - Django's translation machinery uses the standard ``gettext`` module that - comes with Python. - -If you don't need internationalization -====================================== +If you don't need internationalization in your app +================================================== Django's internationalization hooks are on by default, and that means there's a bit of i18n-related overhead in certain places of the framework. If you don't @@ -55,8 +42,21 @@ from your ``TEMPLATE_CONTEXT_PROCESSORS`` setting. .. _documentation for USE_I18N: ../settings/#use-i18n -How to specify translation strings -================================== +If you do need internationalization: three steps +================================================ + + 1. Embed translation strings in your Python code and templates. + 2. Get translations for those strings, in whichever languages you want to + support. + 3. Activate the locale middleware in your Django settings. + +.. admonition:: Behind the scenes + + Django's translation machinery uses the standard ``gettext`` module that + comes with Python. + +1. How to specify translation strings +===================================== Translation strings specify "This text should be translated." These strings can appear in your Python code and templates. It's your responsibility to mark @@ -295,7 +295,7 @@ string, so they don't need to be aware of translations. .. _Django templates: ../templates_python/ Working with lazy translation objects -===================================== +------------------------------------- Using ``ugettext_lazy()`` and ``ungettext_lazy()`` to mark strings in models and utility functions is a common operation. When you're working with these @@ -305,7 +305,7 @@ convert them to strings, because they should be converted as late as possible couple of helper functions. Joining strings: string_concat() --------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Standard Python string joins (``''.join([...])``) will not work on lists containing lazy translation objects. Instead, you can use @@ -324,7 +324,7 @@ strings when ``result`` itself is used in a string (usually at template rendering time). The allow_lazy() decorator --------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~ Django offers many utility functions (particularly in ``django.utils``) that take a string as their first argument and do something to that string. These @@ -359,8 +359,8 @@ Using this decorator means you can write your function and assume that the input is a proper string, then add support for lazy translation objects at the end. -How to create language files -============================ +2. How to create language files +=============================== Once you've tagged your strings for later translation, you need to write (or obtain) the language translations themselves. Here's how that works. @@ -393,7 +393,7 @@ To create or update a message file, run this command:: ...where ``de`` is the language code for the message file you want to create. The language code, in this case, is in locale format. For example, it's -``pt_BR`` for Brazilian Portugese and ``de_AT`` for Austrian German. +``pt_BR`` for Brazilian Portuguese and ``de_AT`` for Austrian German. The script should be run from one of three places: @@ -490,8 +490,8 @@ That's it. Your translations are ready for use. .. _Submitting and maintaining translations: ../contributing/ -How Django discovers language preference -======================================== +3. How Django discovers language preference +=========================================== Once you've prepared your translations -- or, if you just want to use the translations that come with Django -- you'll just need to activate translation @@ -546,7 +546,7 @@ following this algorithm: Notes: * In each of these places, the language preference is expected to be in the - standard language format, as a string. For example, Brazilian Portugese + standard language format, as a string. For example, Brazilian Portuguese is ``pt-br``. * If a base language is available but the sublanguage specified is not, Django uses the base language. For example, if a user specifies ``de-at`` @@ -629,44 +629,6 @@ in ``request.LANGUAGE_CODE``. .. _session: ../sessions/ .. _request object: ../request_response/#httprequest-objects -The ``set_language`` redirect view -================================== - -As a convenience, Django comes with a view, ``django.views.i18n.set_language``, -that sets a user's language preference and redirects back to the previous page. - -Activate this view by adding the following line to your URLconf:: - - (r'^i18n/', include('django.conf.urls.i18n')), - -(Note that this example makes the view available at ``/i18n/setlang/``.) - -The view expects to be called via the ``GET`` method, with a ``language`` -parameter set in the query string. If session support is enabled, the view -saves the language choice in the user's session. Otherwise, it saves the -language choice in a ``django_language`` cookie. - -After setting the language choice, Django redirects the user, following this -algorithm: - - * Django looks for a ``next`` parameter in the query string. - * If that doesn't exist, or is empty, Django tries the URL in the - ``Referer`` header. - * If that's empty -- say, if a user's browser suppresses that header -- - then the user will be redirected to ``/`` (the site root) as a fallback. - -Here's example HTML template code:: - -
                                                - - - - - Using translations in your own projects ======================================= @@ -728,6 +690,44 @@ The easiest way out is to store applications that are not part of the project connected to your explicit project and not strings that are distributed independently. +The ``set_language`` redirect view +================================== + +As a convenience, Django comes with a view, ``django.views.i18n.set_language``, +that sets a user's language preference and redirects back to the previous page. + +Activate this view by adding the following line to your URLconf:: + + (r'^i18n/', include('django.conf.urls.i18n')), + +(Note that this example makes the view available at ``/i18n/setlang/``.) + +The view expects to be called via the ``POST`` method, with a ``language`` +parameter set in request. If session support is enabled, the view +saves the language choice in the user's session. Otherwise, it saves the +language choice in a ``django_language`` cookie. + +After setting the language choice, Django redirects the user, following this +algorithm: + + * Django looks for a ``next`` parameter in ``POST`` request. + * If that doesn't exist, or is empty, Django tries the URL in the + ``Referrer`` header. + * If that's empty -- say, if a user's browser suppresses that header -- + then the user will be redirected to ``/`` (the site root) as a fallback. + +Here's example HTML template code:: + +
                                                + + + + + Translations and JavaScript =========================== @@ -752,7 +752,7 @@ The main solution to these problems is the ``javascript_catalog`` view, which sends out a JavaScript code library with functions that mimic the ``gettext`` interface, plus an array of translation strings. Those translation strings are taken from the application, project or Django core, according to what you -specify in either the {{{info_dict}}} or the URL. +specify in either the info_dict or the URL. You hook it up like this:: @@ -817,8 +817,8 @@ pluralizations). Creating JavaScript translation catalogs ---------------------------------------- -You create and update the translation catalogs the same way as the other Django -translation catalogs -- with the {{{make-messages.py}}} tool. The only +You create and update the translation catalogs the same way as the other +Django translation catalogs -- with the make-messages.py tool. The only difference is you need to provide a ``-d djangojs`` parameter, like this:: make-messages.py -d djangojs -l de @@ -827,13 +827,13 @@ This would create or update the translation catalog for JavaScript for German. After updating translation catalogs, just run ``compile-messages.py`` the same way as you do with normal Django translation catalogs. -Specialities of Django translation +Specialties of Django translation ================================== -If you know ``gettext``, you might note these specialities in the way Django +If you know ``gettext``, you might note these specialties in the way Django does translation: - * The string domain is ``django`` or ``djangojs``. The string domain is + * The string domain is ``django`` or ``djangojs``. This string domain is used to differentiate between different programs that store their data in a common message-file library (usually ``/usr/share/locale/``). The ``django`` domain is used for python and template translation strings @@ -841,5 +841,5 @@ does translation: domain is only used for JavaScript translation catalogs to make sure that those are as small as possible. * Django doesn't use ``xgettext`` alone. It uses Python wrappers around - ``xgettext`` and ``msgfmt``. That's mostly for convenience. + ``xgettext`` and ``msgfmt``. This is mostly for convenience. diff --git a/docs/install.txt b/docs/install.txt index 082000149f..173f4941ee 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -67,6 +67,16 @@ installed. * If you're using Oracle, you'll need cx_Oracle_, version 4.3.1 or higher. +If you plan to use Django's ``manage.py syncdb`` command to +automatically create database tables for your models, you'll need to +ensure that Django has permission to create tables in the database +you're using; if you plan to manually create the tables, you can +simply grant Django ``SELECT``, ``INSERT``, ``UPDATE`` and ``DELETE`` +permissions. Django does not issue ``ALTER TABLE`` statements, and so +will not require permission to do so. If you will be using Django's +`testing framework`_ with data fixtures, Django will need permission +to create a temporary test database. + .. _PostgreSQL: http://www.postgresql.org/ .. _MySQL: http://www.mysql.com/ .. _Django's ticket system: http://code.djangoproject.com/report/1 @@ -78,6 +88,7 @@ installed. .. _MySQL backend: ../databases/ .. _cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/ .. _Oracle: http://www.oracle.com/ +.. _testing framework: ../testing/ Remove any old versions of Django ================================= @@ -127,16 +138,24 @@ Installing an official release 1. Download the latest release from our `download page`_. - 2. Untar the downloaded file (e.g. ``tar xzvf Django-NNN.tar.gz``). + 2. Untar the downloaded file (e.g. ``tar xzvf Django-NNN.tar.gz``, + where ``NNN`` is the version number of the latest release). + If you're using Windows, you can download the command-line tool + bsdtar_ to do this, or you can use a GUI-based tool such as 7-zip_. - 3. Change into the downloaded directory (e.g. ``cd Django-NNN``). + 3. Change into the directory created in step 2 (e.g. ``cd Django-NNN``). - 4. Run ``sudo python setup.py install``. + 4. If you're using Linux, Mac OS X or some other flavor of Unix, enter + the command ``sudo python setup.py install`` at the shell prompt. + If you're using Windows, start up a command shell with administrator + privileges and run the command ``setup.py install``. -The command will install Django in your Python installation's ``site-packages`` -directory. +These commands will install Django in your Python installation's +``site-packages`` directory. .. _distribution specific notes: ../distributions/ +.. _bsdtar: http://gnuwin32.sourceforge.net/packages/bsdtar.htm +.. _7-zip: http://www.7-zip.org/ Installing the development version ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -144,34 +163,55 @@ Installing the development version If you'd like to be able to update your Django code occasionally with the latest bug fixes and improvements, follow these instructions: -1. Make sure you have Subversion_ installed. -2. Check out the Django code into your Python ``site-packages`` directory. +1. Make sure that you have Subversion_ installed, and that you can run its + commands from a shell. (Enter ``svn help`` at a shell prompt to test + this.) - On Linux / Mac OSX / Unix, do this:: +2. Check out Django's main development branch (the 'trunk') like so:: - svn co http://code.djangoproject.com/svn/django/trunk/ django_src - ln -s `pwd`/django_src/django SITE-PACKAGES-DIR/django + svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk + +3. Next, make sure that the Python interpreter can load Django's code. There + are various ways of accomplishing this. One of the most convenient, on + Linux, Mac OSX or other Unix-like systems, is to use a symbolic link:: + + ln -s `pwd`/django-trunk/django SITE-PACKAGES-DIR/django (In the above line, change ``SITE-PACKAGES-DIR`` to match the location of your system's ``site-packages`` directory, as explained in the "Where are my ``site-packages`` stored?" section above.) - On Windows, do this:: + Alternatively, you can define your ``PYTHONPATH`` environment variable + so that it includes the ``django`` subdirectory of ``django-trunk``. + This is perhaps the most convenient solution on Windows systems, which + don't support symbolic links. (Environment variables can be defined on + Windows systems `from the Control Panel`_.) - svn co http://code.djangoproject.com/svn/django/trunk/django c:\Python24\lib\site-packages\django + .. admonition:: What about Apache and mod_python? -3. Copy the file ``django_src/django/bin/django-admin.py`` to somewhere on your - system path, such as ``/usr/local/bin`` (Unix) or ``C:\Python24\Scripts`` + If you take the approach of setting ``PYTHONPATH``, you'll need to + remember to do the same thing in your Apache configuration once you + deploy your production site. Do this by setting ``PythonPath`` in your + Apache configuration file. + + More information about deployment is available, of course, in our + `How to use Django with mod_python`_ documentation. + + .. _How to use Django with mod_python: ../modpython/ + +4. Copy the file ``django-trunk/django/bin/django-admin.py`` to somewhere on + your system path, such as ``/usr/local/bin`` (Unix) or ``C:\Python24\Scripts`` (Windows). This step simply lets you type ``django-admin.py`` from within any directory, rather than having to qualify the command with the full path to the file. -You *don't* have to run ``python setup.py install``, because that command -takes care of steps 2 and 3 for you. +You *don't* have to run ``python setup.py install``, because you've already +carried out the equivalent actions in steps 3 and 4. When you want to update your copy of the Django source code, just run the -command ``svn update`` from within the ``django`` directory. When you do this, -Subversion will automatically download any changes. +command ``svn update`` from within the ``django-trunk`` directory. When you do +this, Subversion will automatically download any changes. .. _`download page`: http://www.djangoproject.com/download/ .. _Subversion: http://subversion.tigris.org/ +.. _from the Control Panel: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sysdm_advancd_environmnt_addchange_variable.mspx diff --git a/docs/model-api.txt b/docs/model-api.txt index efe62baf16..1f0bb60285 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -148,7 +148,7 @@ and in Django's validation. Django veterans: Note that the argument is now called ``max_length`` to provide consistency throughout Django. There is full legacy support for -the old ``maxlength`` argument, but ``max_length`` is prefered. +the old ``maxlength`` argument, but ``max_length`` is preferred. ``CommaSeparatedIntegerField`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -178,7 +178,8 @@ A date field. Has a few extra optional arguments: ====================== =================================================== The admin represents this as an ```` with a JavaScript -calendar and a shortcut for "Today." +calendar, and a shortcut for "Today." The JavaScript calendar will always start +the week on a Sunday. ``DateTimeField`` ~~~~~~~~~~~~~~~~~ @@ -221,8 +222,10 @@ The admin represents this as an ```` (a single-line input). ~~~~~~~~~~~~~~ A ``CharField`` that checks that the value is a valid e-mail address. -This doesn't accept ``max_length``; its ``max_length`` is automatically set to -75. + +In Django 0.96, this doesn't accept ``max_length``; its ``max_length`` is +automatically set to 75. In the Django development version, ``max_length`` is +set to 75 by default, but you can specify it to override default behavior. ``FileField`` ~~~~~~~~~~~~~ @@ -1224,6 +1227,13 @@ together. It's used in the Django admin and is enforced at the database level (i.e., the appropriate ``UNIQUE`` statements are included in the ``CREATE TABLE`` statement). +**New in Django development version** + +For convenience, unique_together can be a single list when dealing +with a single set of fields:: + + unique_together = ("driver", "restaurant") + ``verbose_name`` ---------------- @@ -1550,8 +1560,8 @@ Finally, note that in order to use ``list_display_links``, you must define Set ``list_filter`` to activate filters in the right sidebar of the change list page of the admin. This should be a list of field names, and each specified -field should be either a ``BooleanField``, ``DateField``, ``DateTimeField`` -or ``ForeignKey``. +field should be either a ``BooleanField``, ``CharField``, ``DateField``, +``DateTimeField``, ``IntegerField`` or ``ForeignKey``. This example, taken from the ``django.contrib.auth.models.User`` model, shows how both ``list_display`` and ``list_filter`` work:: diff --git a/docs/modpython.txt b/docs/modpython.txt index cbed0ee8c3..4a8c169a51 100644 --- a/docs/modpython.txt +++ b/docs/modpython.txt @@ -83,7 +83,7 @@ need to write your ``PythonPath`` directive as:: With this path, ``import weblog`` and ``import mysite.settings`` will both work. If you had ``import blogroll`` in your code somewhere and ``blogroll`` lived under the ``weblog/`` directory, you would *also* need to add -``/var/production/django-apps/weblog/`` to your ``PythonPath``. Remember: the +``/usr/local/django-apps/weblog/`` to your ``PythonPath``. Remember: the **parent directories** of anything you import directly must be on the Python path. diff --git a/docs/newforms.txt b/docs/newforms.txt index 499892234c..1c13de0316 100644 --- a/docs/newforms.txt +++ b/docs/newforms.txt @@ -557,6 +557,29 @@ method you're using::

                                                Sender:

                                                Cc myself:

                                                +Customizing the error list format +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +By default, forms use ``django.newforms.util.ErrorList`` to format validation +errors. If you'd like to use an alternate class for displaying errors, you can +pass that in at construction time:: + + >>> from django.newforms.util import ErrorList + >>> class DivErrorList(ErrorList): + ... def __unicode__(self): + ... return self.as_divs() + ... def as_divs(self): + ... if not self: return u'' + ... return u'
                                                %s
                                                ' % ''.join([u'
                                                %s
                                                ' % e for e in self]) + >>> f = ContactForm(data, auto_id=False, error_class=DivErrorList) + >>> f.as_p() +
                                                This field is required.
                                                +

                                                Subject:

                                                +

                                                Message:

                                                +
                                                Enter a valid e-mail address.
                                                +

                                                Sender:

                                                +

                                                Cc myself:

                                                + More granular output ~~~~~~~~~~~~~~~~~~~~ @@ -756,6 +779,27 @@ form data *and* file data:: # Unbound form with a image field >>> f = ContactFormWithMugshot() +Testing for multipart forms +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you're writing reusable views or templates, you may not know ahead of time +whether your form is a multipart form or not. The ``is_multipart()`` method +tells you whether the form requires multipart encoding for submission:: + + >>> f = ContactFormWithMugshot() + >>> f.is_multipart() + True + +Here's an example of how you might use this in a template:: + + {% if form.is_multipart %} +
                                                + {% else %} + + {% endif %} + {% form %} + + Subclassing forms ----------------- @@ -965,7 +1009,7 @@ validation if a particular field's value is not given. ``initial`` values are ~~~~~~~~~~ The ``widget`` argument lets you specify a ``Widget`` class to use when -rendering this ``Field``. See "Widgets"_ below for more information. +rendering this ``Field``. See `Widgets`_ below for more information. ``help_text`` ~~~~~~~~~~~~~ @@ -1890,12 +1934,23 @@ field on the model, you could define the callback:: ... else: ... return field.formfield(**kwargs) - >>> ArticleForm = form_for_model(formfield_callback=my_callback) + >>> ArticleForm = form_for_model(Article, formfield_callback=my_callback) Note that your callback needs to handle *all* possible model field types, not just the ones that you want to behave differently to the default. That's why this example has an ``else`` clause that implements the default behavior. +.. warning:: + The field that is passed into the ``formfield_callback`` function in + ``form_for_model()`` and ``form_for_instance`` is the field instance from + your model's class. You **must not** alter that object at all; treat it + as read-only! + + If you make any alterations to that object, it will affect any future + users of the model class, because you will have changed the field object + used to construct the class. This is almost certainly what you don't want + to have happen. + Finding the model associated with a form ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/request_response.txt b/docs/request_response.txt index 867464226a..bf914fb5ff 100644 --- a/docs/request_response.txt +++ b/docs/request_response.txt @@ -161,6 +161,18 @@ Methods Example: ``"/music/bands/the_beatles/?print=true"`` +``build_absolute_uri(location)`` + **New in Django development version** + + Returns the absolute URI form of ``location``. If no location is provided, + the location will be set to ``request.get_full_path()``. + + If the location is already an absolute URI, it will not be altered. + Otherwise the absolute URI is built using the server variables available in + this request. + + Example: ``"http://example.com/music/bands/the_beatles/?print=true"`` + ``is_secure()`` Returns ``True`` if the request is secure; that is, if it was made with HTTPS. @@ -183,6 +195,9 @@ subclass of dictionary. Exceptions are outlined here: * ``__getitem__(key)`` -- Returns the value for the given key. If the key has more than one value, ``__getitem__()`` returns the last value. + Raises ``django.utils.datastructure.MultiValueDictKeyError`` if the key + does not exist. (This is a subclass of Python's standard ``KeyError``, + so you can stick to catching ``KeyError``.) * ``__setitem__(key, value)`` -- Sets the given key to ``[value]`` (a Python list whose single element is ``value``). Note that this, as diff --git a/docs/settings.txt b/docs/settings.txt index 3f98296778..2e6185f444 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -253,9 +253,14 @@ DATABASE_ENGINE Default: ``''`` (Empty string) -The database backend to use. Either ``'postgresql_psycopg2'``, -``'postgresql'``, ``'mysql'``, ``'mysql_old'``, ``'sqlite3'``, -``'oracle'``, or ``'ado_mssql'``. +The database backend to use. The build-in database backends are +``'postgresql_psycopg2'``, ``'postgresql'``, ``'mysql'``, ``'mysql_old'``, +``'sqlite3'``, ``'oracle'``, or ``'ado_mssql'``. + +You can also use a database backend that doesn't ship with Django by +setting ``DATABASE_ENGINE`` to a fully-qualified path (i.e. +``mypackage.backends.whatever``). Writing a whole new database backend from +scratch is left as an exercise to the reader. DATABASE_HOST ------------- @@ -325,7 +330,8 @@ The default formatting to use for date fields on Django admin change-list pages -- and, possibly, by other parts of the system. See `allowed date format strings`_. -See also DATETIME_FORMAT, TIME_FORMAT, YEAR_MONTH_FORMAT and MONTH_DAY_FORMAT. +See also ``DATETIME_FORMAT``, ``TIME_FORMAT``, ``YEAR_MONTH_FORMAT`` +and ``MONTH_DAY_FORMAT``. .. _allowed date format strings: ../templates/#now @@ -338,7 +344,8 @@ The default formatting to use for datetime fields on Django admin change-list pages -- and, possibly, by other parts of the system. See `allowed date format strings`_. -See also DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT, YEAR_MONTH_FORMAT and MONTH_DAY_FORMAT. +See also ``DATE_FORMAT``, ``DATETIME_FORMAT``, ``TIME_FORMAT``, +``YEAR_MONTH_FORMAT`` and ``MONTH_DAY_FORMAT``. .. _allowed date format strings: ../templates/#now @@ -350,8 +357,8 @@ Default: ``False`` A boolean that turns on/off debug mode. If you define custom settings, django/views/debug.py has a ``HIDDEN_SETTINGS`` -regular expression which will hide from the DEBUG view anything that contins -``'SECRET``, ``PASSWORD``, or ``PROFANITIES'``. This allows untrusted users to +regular expression which will hide from the DEBUG view anything that contains +``'SECRET'``, ``'PASSWORD'``, or ``'PROFANITIES'``. This allows untrusted users to be able to give backtraces without seeing sensitive (or offensive) settings. Still, note that there are always going to be sections of your debug output that @@ -656,8 +663,8 @@ drilldown, the header for a given day displays the day and month. Different locales have different formats. For example, U.S. English would say "January 1," whereas Spanish might say "1 Enero." -See `allowed date format strings`_. See also DATE_FORMAT, DATETIME_FORMAT, -TIME_FORMAT and YEAR_MONTH_FORMAT. +See `allowed date format strings`_. See also ``DATE_FORMAT``, +``DATETIME_FORMAT``, ``TIME_FORMAT`` and ``YEAR_MONTH_FORMAT``. PREPEND_WWW ----------- @@ -815,7 +822,7 @@ highlighted. Note that Django only displays fancy error pages if ``DEBUG`` is ``True``, so you'll want to set that to take advantage of this setting. -See also DEBUG. +See also ``DEBUG``. TEMPLATE_DIRS ------------- @@ -905,8 +912,8 @@ The default formatting to use for time fields on Django admin change-list pages -- and, possibly, by other parts of the system. See `allowed date format strings`_. -See also DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT, YEAR_MONTH_FORMAT and -MONTH_DAY_FORMAT. +See also ``DATE_FORMAT``, ``DATETIME_FORMAT``, ``TIME_FORMAT``, +``YEAR_MONTH_FORMAT`` and ``MONTH_DAY_FORMAT``. .. _allowed date format strings: ../templates/#now @@ -980,8 +987,8 @@ drilldown, the header for a given month displays the month and the year. Different locales have different formats. For example, U.S. English would say "January 2006," whereas another locale might say "2006/January." -See `allowed date format strings`_. See also DATE_FORMAT, DATETIME_FORMAT, -TIME_FORMAT and MONTH_DAY_FORMAT. +See `allowed date format strings`_. See also ``DATE_FORMAT``, +``DATETIME_FORMAT``, ``TIME_FORMAT`` and ``MONTH_DAY_FORMAT``. .. _cache docs: ../cache/ .. _middleware docs: ../middleware/ diff --git a/docs/shortcuts.txt b/docs/shortcuts.txt new file mode 100644 index 0000000000..6c55486b5f --- /dev/null +++ b/docs/shortcuts.txt @@ -0,0 +1,143 @@ +========================= +Django shortcut functions +========================= + +The package ``django.shortcuts`` collects helper functions and classes that +"span" multiple levels of MVC. In other words, these functions/classes +introduce controlled coupling for convenience's sake. + +``render_to_response()`` +======================== + +``django.shortcuts.render_to_response`` renders a given template with a given +context dictionary and returns an ``HttpResponse`` object with that rendered +text. + +Required arguments +------------------ + +``template`` + The full name of a template to use. + +Optional arguments +------------------ + +``context`` + A dictionary of values to add to the template context. By default, this + is an empty dictionary. If a value in the dictionary is callable, the + view will call it just before rendering the template. + +``mimetype`` + **New in Django development version:** The MIME type to use for the + resulting document. Defaults to the value of the ``DEFAULT_CONTENT_TYPE`` + setting. + +Example +------- + +The following example renders the template ``myapp/index.html`` with the +MIME type ``application/xhtml+xml``:: + + from django.shortcuts import render_to_response + + def my_view(request): + # View code here... + return render_to_response('myapp/index.html', {"foo": "bar"}, + mimetype="application/xhtml+xml") + +This example is equivalent to:: + + from django.http import HttpResponse + from django.template import Context, loader + + def my_view(request): + # View code here... + t = loader.get_template('myapp/template.html') + c = Context({'foo': 'bar'}) + r = HttpResponse(t.render(c), + mimetype="application/xhtml+xml") + +.. _an HttpResponse object: ../request_response/#httpresponse-objects + +``get_object_or_404`` +===================== + +``django.shortcuts.get_object_or_404`` calls `get()`_ on a given model +manager, but it raises ``django.http.Http404`` instead of the model's +``DoesNotExist`` exception. + +Required arguments +------------------ + +``klass`` + A ``Model``, ``Manager`` or ``QuerySet`` instance from which to get the + object. + +``**kwargs`` + Lookup parameters, which should be in the format accepted by ``get()`` and + ``filter()``. + +Example +------- + +The following example gets the object with the primary key of 1 from +``MyModel``:: + + from django.shortcuts import get_object_or_404 + + def my_view(request): + my_object = get_object_or_404(MyModel, pk=1) + +This example is equivalent to:: + + from django.http import Http404 + + def my_view(request): + try: + my_object = MyModel.object.get(pk=1) + except MyModel.DoesNotExist: + raise Http404 + +Note: As with ``get()``, an ``AssertionError`` will be raised if more than +one object is found. + +.. _get(): ../db-api/#get-kwargs + +``get_list_or_404`` +=================== + +``django.shortcuts.get_list_or_404`` returns the result of `filter()`_ on a +given model manager, raising ``django.http.Http404`` if the resulting list is +empty. + +Required arguments +------------------ + +``klass`` + A ``Model``, ``Manager`` or ``QuerySet`` instance from which to get the + object. + +``**kwargs`` + Lookup parameters, which should be in the format accepted by ``get()`` and + ``filter()``. + +Example +------- + +The following example gets all published objects from ``MyModel``:: + + from django.shortcuts import get_list_or_404 + + def my_view(request): + my_objects = get_list_or_404(MyModel, published=True) + +This example is equivalent to:: + + from django.http import Http404 + + def my_view(request): + my_objects = MyModels.object.filter(published=True) + if not my_objects: + raise Http404 + +.. _filter(): ../db-api/#filter-kwargs diff --git a/docs/sites.txt b/docs/sites.txt index 90a9d0f90f..5896afcf41 100644 --- a/docs/sites.txt +++ b/docs/sites.txt @@ -213,6 +213,31 @@ To do this, you can use the sites framework. A simple example:: >>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url()) 'http://example.com/mymodel/objects/3/' +Caching the current ``Site`` object +=================================== + +**New in Django development version** + +As the current site is stored in the database, each call to +``Site.objects.get_current()`` could result in a database query. But Django is a +little cleverer than that: on the first request, the current site is cached, and +any subsequent call returns the cached data instead of hitting the database. + +If for any reason you want to force a database query, you can tell Django to +clear the cache using ``Site.objects.clear_cache()``:: + + # First call; current site fetched from database. + current_site = Site.objects.get_current() + # ... + + # Second call; current site fetched from cache. + current_site = Site.objects.get_current() + # ... + + # Force a database query for the third call. + Site.objects.clear_cache() + current_site = Site.objects.get_current() + The ``CurrentSiteManager`` ========================== @@ -316,6 +341,9 @@ Here's how Django uses the sites framework: * The shortcut view (``django.views.defaults.shortcut``) uses the domain of the current ``Site`` object when calculating an object's URL. + * In the admin framework, the ''view on site'' link uses the current + ``Site`` to work out the domain for the site that it will redirect to. + .. _redirects framework: ../redirects/ .. _flatpages framework: ../flatpages/ .. _syndication framework: ../syndication_feeds/ diff --git a/docs/templates.txt b/docs/templates.txt index 9f2bec1c8b..9adf15731b 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -366,25 +366,36 @@ Ignore everything between ``{% comment %}`` and ``{% endcomment %}`` cycle ~~~~~ -Cycle among the given strings each time this tag is encountered. +**Changed in Django development version** +Cycle among the given strings or variables each time this tag is encountered. -Within a loop, cycles among the given strings each time through the loop:: +Within a loop, cycles among the given strings/variables each time through the +loop:: {% for o in some_list %} -
                                                + ... {% endfor %} - + Outside of a loop, give the values a unique name the first time you call it, then use that name each successive time through:: - ... + ......... -You can use any number of values, separated by commas. Make sure not to put -spaces between the values -- only commas. +You can use any number of values, separated by spaces. Values enclosed in +single (') or double quotes (") are treated as string literals, while values +without quotes are assumed to refer to context variables. + +You can also separate values with commas:: + + {% cycle row1,row2,row3 %} + +In this syntax, each value will be interpreted as literal text. The +comma-based syntax exists for backwards-compatibility, and should not be +used for new projects. debug ~~~~~ @@ -1124,12 +1135,15 @@ Returns a boolean of whether the value's length is the argument. linebreaks ~~~~~~~~~~ -Converts newlines into ``

                                                `` and ``
                                                `` tags. +Replaces line breaks in plain text with appropriate HTML; a single +newline becomes an HTML line break (``
                                                ``) and a new line +followed by a blank line becomes a paragraph break (``

                                                ``). linebreaksbr ~~~~~~~~~~~~ -Converts newlines into ``
                                                `` tags. +Converts all newlines in a piece of plain text to HTML line breaks +(``
                                                ``). linenumbers ~~~~~~~~~~~ @@ -1405,6 +1419,12 @@ A collection of template filters that implement these common markup languages: * Markdown * ReST (ReStructured Text) +See the `markup section`_ of the `add-ons documentation`_ for more +information. + +.. _markup section: ../add_ons/#markup +.. _add-ons documentation: ../add_ons/ + django.contrib.webdesign ------------------------ @@ -1420,4 +1440,4 @@ Read the document `The Django template language: For Python programmers`_ if you're interested in learning the template system from a technical perspective -- how it works and how to extend it. -.. _The Django template language: For Python programmers: ../templates_python/ +.. _The Django template language\: For Python programmers: ../templates_python/ diff --git a/docs/templates_python.txt b/docs/templates_python.txt index 261eaedf74..232f54061f 100644 --- a/docs/templates_python.txt +++ b/docs/templates_python.txt @@ -555,6 +555,38 @@ template loaders that come with Django: Django uses the template loaders in order according to the ``TEMPLATE_LOADERS`` setting. It uses each loader until a loader finds a match. +The ``render_to_string()`` shortcut +=================================== + +To cut down on the repetitive nature of loading and rendering +templates, Django provides a shortcut function which largely +automates the process: ``render_to_string()`` in +``django.template.loader``, which loads a template, renders it and +returns the resulting string:: + + from django.template.loader import render_to_string + rendered = render_to_string('my_template.html', { 'foo': 'bar' }) + +The ``render_to_string`` shortcut takes one required argument -- +``template_name``, which should be the name of the template to load +and render -- and two optional arguments:: + + dictionary + A dictionary to be used as variables and values for the + template's context. This can also be passed as the second + positional argument. + + context_instance + An instance of ``Context`` or a subclass (e.g., an instance of + ``RequestContext``) to use as the template's context. This can + also be passed as the third positional argument. + +See also the `render_to_response()`_ shortcut, which calls +``render_to_string`` and feeds the result into an ``HttpResponse`` +suitable for returning directly from a view. + +.. _render_to_response(): ../shortcuts/#render-to-response + Extending the template system ============================= @@ -642,7 +674,27 @@ your function. Example:: "Converts a string into all lowercase" return value.lower() -When you've written your filter definition, you need to register it with +Template filters that expect strings +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you're writing a template filter that only expects a string as the first +argument, you should use the decorator ``stringfilter``. This will +convert an object to its string value before being passed to your function:: + + from django.template.defaultfilters import stringfilter + + @stringfilter + def lower(value): + return value.lower() + +This way, you'll be able to pass, say, an integer to this filter, and it +won't cause an ``AttributeError`` (because integers don't have ``lower()`` +methods). + +Registering a custom filters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Once you've written your filter definition, you need to register it with your ``Library`` instance, to make it available to Django's template language:: register.filter('cut', cut) @@ -658,28 +710,18 @@ If you're using Python 2.4 or above, you can use ``register.filter()`` as a decorator instead:: @register.filter(name='cut') + @stringfilter def cut(value, arg): return value.replace(arg, '') @register.filter + @stringfilter def lower(value): return value.lower() If you leave off the ``name`` argument, as in the second example above, Django will use the function's name as the filter name. -Template filters which expect strings -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you are writing a template filter which only expects a string as the first -argument, you should use the included decorator ``stringfilter`` which will convert -an object to it's string value before being passed to your function:: - - from django.template.defaultfilters import stringfilter - - @stringfilter - def lower(value): - return value.lower() - Writing custom template tags ---------------------------- diff --git a/docs/testing.txt b/docs/testing.txt index 22a7e48a7a..04c999cda8 100644 --- a/docs/testing.txt +++ b/docs/testing.txt @@ -137,12 +137,14 @@ When you `run your tests`_, the test runner will find this docstring, notice that portions of it look like an interactive Python session, and execute those lines while checking that the results match. -In the case of model tests, note that the test runner takes care of creating -its own test database. That is, any test that accesses a database -- by -creating and saving model instances, for example -- will not affect your -production database. Each doctest begins with a "blank slate" -- a fresh -database containing an empty table for each model. (See the section on -fixtures, below, for more on this.) +In the case of model tests, note that the test runner takes care of +creating its own test database. That is, any test that accesses a +database -- by creating and saving model instances, for example -- +will not affect your production database. Each doctest begins with a +"blank slate" -- a fresh database containing an empty table for each +model. (See the section on fixtures, below, for more on this.) Note +that to use this feature, the database user Django is connecting as +must have ``CREATE DATABASE`` rights. For more details about how doctest works, see the `standard library documentation for doctest`_ @@ -569,8 +571,8 @@ Testing responses The ``get()`` and ``post()`` methods both return a ``Response`` object. This ``Response`` object is *not* the same as the ``HttpResponse`` object returned -Django views; this object is simpler and has some additional data useful for -tests. +Django views; the test response object has some additional data useful for +test code to verify. Specifically, a ``Response`` object has the following attributes: @@ -582,7 +584,7 @@ Specifically, a ``Response`` object has the following attributes: ``content`` The body of the response, as a string. This is the final page content as rendered by the view, or any error - message (such as the URL for a 302 redirect). + message. ``context`` The template ``Context`` instance that was used to render the template that produced the response content. @@ -591,6 +593,8 @@ Specifically, a ``Response`` object has the following attributes: ``context`` will be a list of ``Context`` objects, in the order in which they were rendered. + ``headers`` The HTTP headers of the response. This is a dictionary. + ``request`` The request data that stimulated the response. ``status_code`` The HTTP status of the response, as an integer. See diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt index 77b5b11103..4e97dcd541 100644 --- a/docs/tutorial01.txt +++ b/docs/tutorial01.txt @@ -41,6 +41,16 @@ From the command line, ``cd`` into a directory where you'd like to store your code, then run the command ``django-admin.py startproject mysite``. This will create a ``mysite`` directory in your current directory. +.. admonition:: Max OS X permissions + + If you're using Mac OS X, you may see the message "permission + denied" when you try to run ``django-admin.py startproject``. This + is because, on Unix-based systems like OS X, a file must be marked + as "executable" before it can be run as a program. To do this, open + Terminal.app and navigate (using the `cd` command) to the directory + where ``django-admin.py`` is installed, then run the command + ``chmod +x django-admin.py``. + .. note:: You'll need to avoid naming projects after built-in Python or Django diff --git a/tests/modeltests/custom_pk/models.py b/tests/modeltests/custom_pk/models.py index 53bbadbfd4..375859c897 100644 --- a/tests/modeltests/custom_pk/models.py +++ b/tests/modeltests/custom_pk/models.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """ 14. Using a custom primary key @@ -92,4 +93,8 @@ DoesNotExist: Employee matching query does not exist. >>> Business.objects.filter(employees__first_name__startswith='Fran') [] +# Primary key may be unicode string +>>> emp = Employee(employee_code='jaźń') +>>> emp.save() + """} diff --git a/tests/modeltests/fixtures/models.py b/tests/modeltests/fixtures/models.py index b59c388bbd..a1e2446e56 100644 --- a/tests/modeltests/fixtures/models.py +++ b/tests/modeltests/fixtures/models.py @@ -74,7 +74,7 @@ Multiple fixtures named 'fixture2' in '...fixtures'. Aborting. # Dump the current contents of the database as a JSON fixture >>> management.call_command('dumpdata', 'fixtures', format='json') -[{"pk": "3", "model": "fixtures.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": "2", "model": "fixtures.article", "fields": {"headline": "Poker has no place on ESPN", "pub_date": "2006-06-16 12:00:00"}}, {"pk": "1", "model": "fixtures.article", "fields": {"headline": "Python program becomes self aware", "pub_date": "2006-06-16 11:00:00"}}] +[{"pk": 3, "model": "fixtures.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": 2, "model": "fixtures.article", "fields": {"headline": "Poker has no place on ESPN", "pub_date": "2006-06-16 12:00:00"}}, {"pk": 1, "model": "fixtures.article", "fields": {"headline": "Python program becomes self aware", "pub_date": "2006-06-16 11:00:00"}}] """} from django.test import TestCase diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index 47407573dd..bc14c117d5 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -115,7 +115,7 @@ True >>> obj = f.save() >>> obj ->>> Category.objects.all() +>>> Category.objects.order_by('name') [, ] If you call save() with commit=False, then it will return an object that @@ -129,10 +129,10 @@ True >>> obj = f.save(commit=False) >>> obj ->>> Category.objects.all() +>>> Category.objects.order_by('name') [, ] >>> obj.save() ->>> Category.objects.all() +>>> Category.objects.order_by('name') [, , ] If you call save() with invalid data, you'll get a ValueError. @@ -306,7 +306,7 @@ Add some categories and test the many-to-many form output. >>> new_art.id 1 >>> new_art = Article.objects.get(id=1) ->>> new_art.categories.all() +>>> new_art.categories.order_by('name') [, ] Now, submit form data with no categories. This deletes the existing categories. @@ -327,7 +327,7 @@ Create a new article, with categories, via the form. >>> new_art.id 2 >>> new_art = Article.objects.get(id=2) ->>> new_art.categories.all() +>>> new_art.categories.order_by('name') [, ] Create a new article, with no categories, via the form. @@ -348,7 +348,7 @@ The m2m data won't be saved until save_m2m() is invoked on the form. ... 'writer': u'1', 'article': u'Test.', 'categories': [u'1', u'2']}) >>> new_art = f.save(commit=False) -# Manually save the instance +# Manually save the instance >>> new_art.save() >>> new_art.id 4 @@ -360,7 +360,7 @@ The m2m data won't be saved until save_m2m() is invoked on the form. # Save the m2m data on the form >>> f.save_m2m() ->>> new_art.categories.all() +>>> new_art.categories.order_by('name') [, ] Here, we define a custom Form. Because it happens to have the same fields as diff --git a/tests/modeltests/pagination/models.py b/tests/modeltests/pagination/models.py index a7af2a7089..1dcec00a32 100644 --- a/tests/modeltests/pagination/models.py +++ b/tests/modeltests/pagination/models.py @@ -77,4 +77,8 @@ True >>> paginator = ObjectPaginator(Article.objects.all(), 10, orphans=1) >>> paginator.pages 2 + +# The paginator can provide a list of all available pages +>>> paginator.page_range +[1, 2] """} diff --git a/tests/modeltests/serializers/models.py b/tests/modeltests/serializers/models.py index 2ee6cfce67..a0a68d4bcc 100644 --- a/tests/modeltests/serializers/models.py +++ b/tests/modeltests/serializers/models.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """ 41. Serialization @@ -43,6 +44,25 @@ class AuthorProfile(models.Model): def __unicode__(self): return u"Profile of %s" % self.author + +class Actor(models.Model): + name = models.CharField(max_length=20, primary_key=True) + + class Meta: + ordering = ('name',) + + def __unicode__(self): + return self.name + +class Movie(models.Model): + actor = models.ForeignKey(Actor) + title = models.CharField(max_length=50) + + class Meta: + ordering = ('title',) + + def __unicode__(self): + return self.title __test__ = {'API_TESTS':""" # Create some data: @@ -101,7 +121,7 @@ __test__ = {'API_TESTS':""" # Django also ships with a built-in JSON serializers >>> json = serializers.serialize("json", Category.objects.filter(pk=2)) >>> json -'[{"pk": "2", "model": "serializers.category", "fields": {"name": "Music"}}]' +'[{"pk": 2, "model": "serializers.category", "fields": {"name": "Music"}}]' # You can easily create new objects by deserializing data with an empty PK # (It's easier to demo this with JSON...) @@ -133,7 +153,7 @@ __test__ = {'API_TESTS':""" >>> json = serializers.serialize("json", AuthorProfile.objects.all()) >>> json -'[{"pk": "1", "model": "serializers.authorprofile", "fields": {"date_of_birth": "1970-01-01"}}]' +'[{"pk": 1, "model": "serializers.authorprofile", "fields": {"date_of_birth": "1970-01-01"}}]' >>> for obj in serializers.deserialize("json", json): ... print obj @@ -141,7 +161,7 @@ __test__ = {'API_TESTS':""" # Objects ids can be referenced before they are defined in the serialization data # However, the deserialization process will need to be contained within a transaction ->>> json = '[{"pk": "3", "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00", "categories": [4, 1], "author": 4}}, {"pk": "4", "model": "serializers.category", "fields": {"name": "Reference"}}, {"pk": "4", "model": "serializers.author", "fields": {"name": "Agnes"}}]' +>>> json = '[{"pk": 3, "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00", "categories": [4, 1], "author": 4}}, {"pk": 4, "model": "serializers.category", "fields": {"name": "Reference"}}, {"pk": 4, "model": "serializers.author", "fields": {"name": "Agnes"}}]' >>> from django.db import transaction >>> transaction.enter_transaction_management() >>> transaction.managed(True) @@ -161,6 +181,30 @@ __test__ = {'API_TESTS':""" # Serializer output can be restricted to a subset of fields >>> print serializers.serialize("json", Article.objects.all(), fields=('headline','pub_date')) -[{"pk": "1", "model": "serializers.article", "fields": {"headline": "Just kidding; I love TV poker", "pub_date": "2006-06-16 11:00:00"}}, {"pk": "2", "model": "serializers.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": "3", "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00"}}] +[{"pk": 1, "model": "serializers.article", "fields": {"headline": "Just kidding; I love TV poker", "pub_date": "2006-06-16 11:00:00"}}, {"pk": 2, "model": "serializers.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": 3, "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00"}}] + +# Every string is serialized as a unicode object, also primary key +# which is 'varchar' +>>> ac = Actor(name="Zażółć") +>>> mv = Movie(title="Gęślą jaźń", actor=ac) +>>> ac.save(); mv.save() + +# Let's serialize our movie +>>> print serializers.serialize("json", [mv]) +[{"pk": 1, "model": "serializers.movie", "fields": {"actor": "Za\u017c\u00f3\u0142\u0107", "title": "G\u0119\u015bl\u0105 ja\u017a\u0144"}}] + +# Deserialization of movie +>>> list(serializers.deserialize('json', serializers.serialize('json', [mv])))[0].object.title +u'G\u0119\u015bl\u0105 ja\u017a\u0144' + +# None is null after serialization to json +# Primary key is None in case of not saved model +>>> mv2 = Movie(title="Movie 2", actor=ac) +>>> print serializers.serialize("json", [mv2]) +[{"pk": null, "model": "serializers.movie", "fields": {"actor": "Za\u017c\u00f3\u0142\u0107", "title": "Movie 2"}}] + +# Deserialization of null returns None for pk +>>> print list(serializers.deserialize('json', serializers.serialize('json', [mv2])))[0].object.id +None """} diff --git a/tests/modeltests/signals/__init__.py b/tests/modeltests/signals/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/modeltests/signals/models.py b/tests/modeltests/signals/models.py new file mode 100644 index 0000000000..d41142135e --- /dev/null +++ b/tests/modeltests/signals/models.py @@ -0,0 +1,85 @@ +""" +Testing signals before/after saving and deleting. +""" + +from django.db import models +from django.dispatch import dispatcher + +class Person(models.Model): + first_name = models.CharField(max_length=20) + last_name = models.CharField(max_length=20) + + def __unicode__(self): + return u"%s %s" % (self.first_name, self.last_name) + + +def pre_save_test(sender, instance, **kwargs): + print 'pre_save signal,', instance + +def post_save_test(sender, instance, **kwargs): + print 'post_save signal,', instance + if 'created' in kwargs: + if kwargs['created']: + print 'Is created' + else: + print 'Is updated' + +def pre_delete_test(sender, instance, **kwargs): + print 'pre_delete signal,', instance + print 'instance.id is not None: %s' % (instance.id != None) + +def post_delete_test(sender, instance, **kwargs): + print 'post_delete signal,', instance + print 'instance.id is None: %s' % (instance.id == None) + +__test__ = {'API_TESTS':""" +>>> dispatcher.connect(pre_save_test, signal=models.signals.pre_save) +>>> dispatcher.connect(post_save_test, signal=models.signals.post_save) +>>> dispatcher.connect(pre_delete_test, signal=models.signals.pre_delete) +>>> dispatcher.connect(post_delete_test, signal=models.signals.post_delete) + +>>> p1 = Person(first_name='John', last_name='Smith') +>>> p1.save() +pre_save signal, John Smith +post_save signal, John Smith +Is created + +>>> p1.first_name = 'Tom' +>>> p1.save() +pre_save signal, Tom Smith +post_save signal, Tom Smith +Is updated + +>>> p1.delete() +pre_delete signal, Tom Smith +instance.id is not None: True +post_delete signal, Tom Smith +instance.id is None: True + +>>> p2 = Person(first_name='James', last_name='Jones') +>>> p2.id = 99999 +>>> p2.save() +pre_save signal, James Jones +post_save signal, James Jones +Is created + +>>> p2.id = 99998 +>>> p2.save() +pre_save signal, James Jones +post_save signal, James Jones +Is created + +>>> p2.delete() +pre_delete signal, James Jones +instance.id is not None: True +post_delete signal, James Jones +instance.id is None: True + +>>> Person.objects.all() +[] + +>>> dispatcher.disconnect(post_delete_test, signal=models.signals.post_delete) +>>> dispatcher.disconnect(pre_delete_test, signal=models.signals.pre_delete) +>>> dispatcher.disconnect(post_save_test, signal=models.signals.post_save) +>>> dispatcher.disconnect(pre_save_test, signal=models.signals.pre_save) +"""} diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py index 2bc1dfe02b..2df5d3cf77 100644 --- a/tests/modeltests/test_client/models.py +++ b/tests/modeltests/test_client/models.py @@ -83,23 +83,31 @@ class ClientTest(TestCase): def test_redirect(self): "GET a URL that redirects elsewhere" response = self.client.get('/test_client/redirect_view/') - # Check that the response was a 302 (redirect) - self.assertRedirects(response, '/test_client/get_view/') + self.assertRedirects(response, 'http://testserver/test_client/get_view/') + + client_providing_host = Client(HTTP_HOST='django.testserver') + response = client_providing_host.get('/test_client/redirect_view/') + # Check that the response was a 302 (redirect) with absolute URI + self.assertRedirects(response, 'http://django.testserver/test_client/get_view/') def test_redirect_with_query(self): "GET a URL that redirects with given GET parameters" response = self.client.get('/test_client/redirect_view/', {'var': 'value'}) # Check if parameters are intact - self.assertRedirects(response, '/test_client/get_view/?var=value') + self.assertRedirects(response, 'http://testserver/test_client/get_view/?var=value') def test_permanent_redirect(self): "GET a URL that redirects permanently elsewhere" response = self.client.get('/test_client/permanent_redirect_view/') - # Check that the response was a 301 (permanent redirect) - self.assertRedirects(response, '/test_client/get_view/', status_code=301) + self.assertRedirects(response, 'http://testserver/test_client/get_view/', status_code=301) + + client_providing_host = Client(HTTP_HOST='django.testserver') + response = client_providing_host.get('/test_client/permanent_redirect_view/') + # Check that the response was a 301 (permanent redirect) with absolute URI + self.assertRedirects(response, 'http://django.testserver/test_client/get_view/', status_code=301) def test_redirect_to_strange_location(self): "GET a URL that redirects to a non-200 page" @@ -107,7 +115,7 @@ class ClientTest(TestCase): # Check that the response was a 302, and that # the attempt to get the redirection location returned 301 when retrieved - self.assertRedirects(response, '/test_client/permanent_redirect_view/', target_status_code=301) + self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/', target_status_code=301) def test_notfound_response(self): "GET a URL that responds as '404:Not Found'" @@ -231,17 +239,33 @@ class ClientTest(TestCase): # Get the page without logging in. Should result in 302. response = self.client.get('/test_client/login_protected_view/') - self.assertRedirects(response, '/accounts/login/?next=/test_client/login_protected_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_view/') # Log in login = self.client.login(username='testclient', password='password') - self.assertTrue(login, 'Could not log in') + self.failUnless(login, 'Could not log in') # Request a page that requires a login response = self.client.get('/test_client/login_protected_view/') self.assertEqual(response.status_code, 200) self.assertEqual(response.context['user'].username, 'testclient') + def test_view_with_login_and_custom_redirect(self): + "Request a page that is protected with @login_required(redirect_field_name='redirect_to')" + + # Get the page without logging in. Should result in 302. + response = self.client.get('/test_client/login_protected_view_custom_redirect/') + self.assertRedirects(response, 'http://testserver/accounts/login/?redirect_to=/test_client/login_protected_view_custom_redirect/') + + # Log in + login = self.client.login(username='testclient', password='password') + self.failUnless(login, 'Could not log in') + + # Request a page that requires a login + response = self.client.get('/test_client/login_protected_view_custom_redirect/') + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['user'].username, 'testclient') + def test_view_with_bad_login(self): "Request a page that is protected with @login, but use bad credentials" @@ -269,7 +293,7 @@ class ClientTest(TestCase): # Request a page that requires a login response = self.client.get('/test_client/login_protected_view/') - self.assertRedirects(response, '/accounts/login/?next=/test_client/login_protected_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_view/') def test_session_modifying_view(self): "Request a page that modifies the session" diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py index 538c0e4b43..3779a0ecd1 100644 --- a/tests/modeltests/test_client/urls.py +++ b/tests/modeltests/test_client/urls.py @@ -13,6 +13,7 @@ urlpatterns = patterns('', (r'^form_view/$', views.form_view), (r'^form_view_with_template/$', views.form_view_with_template), (r'^login_protected_view/$', views.login_protected_view), + (r'^login_protected_view_custom_redirect/$', views.login_protected_view_changed_redirect), (r'^session_view/$', views.session_view), (r'^broken_view/$', views.broken_view), (r'^mail_sending_view/$', views.mail_sending_view), diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py index e2a9081fb2..c406e17d30 100644 --- a/tests/modeltests/test_client/views.py +++ b/tests/modeltests/test_client/views.py @@ -122,6 +122,14 @@ def login_protected_view(request): return HttpResponse(t.render(c)) login_protected_view = login_required(login_protected_view) +def login_protected_view_changed_redirect(request): + "A simple view that is login protected with a custom redirect field set" + t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template') + c = Context({'user': request.user}) + + return HttpResponse(t.render(c)) +login_protected_view_changed_redirect = login_required(redirect_field_name="redirect_to")(login_protected_view_changed_redirect) + def session_view(request): "A view that modifies the session" request.session['tobacconist'] = 'hovercraft' diff --git a/tests/regressiontests/backends/__init__.py b/tests/regressiontests/backends/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/backends/models.py b/tests/regressiontests/backends/models.py new file mode 100644 index 0000000000..a455f21e67 --- /dev/null +++ b/tests/regressiontests/backends/models.py @@ -0,0 +1,25 @@ +from django.db import models + +class Square(models.Model): + root = models.IntegerField() + square = models.PositiveIntegerField() + + def __unicode__(self): + return "%s ** 2 == %s" % (self.root, self.square) + +__test__ = {'API_TESTS': """ + +#4896: Test cursor.executemany +>>> from django.db import connection +>>> cursor = connection.cursor() +>>> cursor.executemany('INSERT INTO BACKENDS_SQUARE (ROOT, SQUARE) VALUES (%s, %s)', +... [(i, i**2) for i in range(-5, 6)]) and None or None +>>> Square.objects.order_by('root') +[, , , , , , , , , , ] + +#4765: executemany with params=[] does nothing +>>> cursor.executemany('INSERT INTO BACKENDS_SQUARE (ROOT, SQUARE) VALUES (%s, %s)', []) and None or None +>>> Square.objects.count() +11 + +"""} diff --git a/tests/regressiontests/fixtures_regress/models.py b/tests/regressiontests/fixtures_regress/models.py index c6a50f73ce..a62925eb37 100644 --- a/tests/regressiontests/fixtures_regress/models.py +++ b/tests/regressiontests/fixtures_regress/models.py @@ -1,5 +1,6 @@ from django.db import models from django.contrib.auth.models import User +from django.conf import settings class Animal(models.Model): name = models.CharField(max_length=150) @@ -20,7 +21,12 @@ class Stuff(models.Model): owner = models.ForeignKey(User, null=True) def __unicode__(self): - return unicode(self.name) + u' is owned by ' + unicode(self.owner) + # Oracle doesn't distinguish between None and the empty string. + # This hack makes the test case pass using Oracle. + name = self.name + if settings.DATABASE_ENGINE == 'oracle' and name == u'': + name = None + return unicode(name) + u' is owned by ' + unicode(self.owner) __test__ = {'API_TESTS':""" >>> from django.core import management diff --git a/tests/regressiontests/forms/localflavor.py b/tests/regressiontests/forms/localflavor.py index a896013b0d..2fe15847c7 100644 --- a/tests/regressiontests/forms/localflavor.py +++ b/tests/regressiontests/forms/localflavor.py @@ -980,6 +980,20 @@ u'41-3562-3464' >>> w.render('states', 'PR') u'' +# BRStateChoiceField ######################################################### +>>> from django.contrib.localflavor.br.forms import BRStateChoiceField +>>> f = BRStateChoiceField() +>>> ', '.join([f.clean(s) for s, _ in f.widget.choices]) +u'AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO' +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('pr') +Traceback (most recent call last): +... +ValidationError: [u'Select a valid brazilian state. That state is not one of the available states.'] + # DEZipCodeField ############################################################## >>> from django.contrib.localflavor.de.forms import DEZipCodeField @@ -1446,4 +1460,738 @@ ValidationError: [u'National Identification Number consists of 11 digits.'] Traceback (most recent call last): ... ValidationError: [u'National Identification Number consists of 11 digits.'] + +# NLPhoneNumberField ######################################################## + +>>> from django.contrib.localflavor.nl.forms import NLPhoneNumberField +>>> f = NLPhoneNumberField(required=False) +>>> f.clean('') +u'' +>>> f.clean('012-3456789') +'012-3456789' +>>> f.clean('0123456789') +'0123456789' +>>> f.clean('+31-12-3456789') +'+31-12-3456789' +>>> f.clean('(0123) 456789') +'(0123) 456789' +>>> f.clean('foo') +Traceback (most recent call last): + ... +ValidationError: [u'Enter a valid phone number'] + +# NLZipCodeField ############################################################ + +>>> from django.contrib.localflavor.nl.forms import NLZipCodeField +>>> f = NLZipCodeField(required=False) +>>> f.clean('') +u'' +>>> f.clean('1234ab') +u'1234 AB' +>>> f.clean('1234 ab') +u'1234 AB' +>>> f.clean('1234 AB') +u'1234 AB' +>>> f.clean('0123AB') +Traceback (most recent call last): + ... +ValidationError: [u'Enter a valid postal code'] +>>> f.clean('foo') +Traceback (most recent call last): + ... +ValidationError: [u'Enter a valid postal code'] + +# NLSoFiNumberField ######################################################### + +>>> from django.contrib.localflavor.nl.forms import NLSoFiNumberField +>>> f = NLSoFiNumberField(required=False) +>>> f.clean('') +u'' +>>> f.clean('123456782') +'123456782' +>>> f.clean('000000000') +Traceback (most recent call last): + ... +ValidationError: [u'Enter a valid SoFi number'] +>>> f.clean('123456789') +Traceback (most recent call last): + ... +ValidationError: [u'Enter a valid SoFi number'] +>>> f.clean('foo') +Traceback (most recent call last): + ... +ValidationError: [u'Enter a valid SoFi number'] + +# NLProvinceSelect ########################################################## + +>>> from django.contrib.localflavor.nl.forms import NLProvinceSelect +>>> s = NLProvinceSelect() +>>> s.render('provinces', 'OV') +u'' + +# ARProvinceField ############################################################# + +>>> from django.contrib.localflavor.ar.forms import ARProvinceSelect +>>> f = ARProvinceSelect() +>>> f.render('provincias', 'A') +u'' + +# ARPostalCodeField ########################################################### + +>>> from django.contrib.localflavor.ar.forms import ARPostalCodeField +>>> f = ARPostalCodeField() +>>> f.clean('5000') +u'5000' +>>> f.clean('C1064AAB') +u'C1064AAB' +>>> f.clean('c1064AAB') +u'C1064AAB' +>>> f.clean('C1064aab') +u'C1064AAB' +>>> f.clean(u'4400') +u'4400' +>>> f.clean(u'C1064AAB') +u'C1064AAB' +>>> f.clean('C1064AABB') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at most 8 characters (it has 9).'] +>>> f.clean('C1064AA') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean('C106AAB') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean('106AAB') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean('500') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at least 4 characters (it has 3).'] +>>> f.clean('5PPP') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean(u'') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> f = ARPostalCodeField(required=False) +>>> f.clean('5000') +u'5000' +>>> f.clean('C1064AAB') +u'C1064AAB' +>>> f.clean('c1064AAB') +u'C1064AAB' +>>> f.clean('C1064aab') +u'C1064AAB' +>>> f.clean(u'4400') +u'4400' +>>> f.clean(u'C1064AAB') +u'C1064AAB' +>>> f.clean('C1064AABB') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at most 8 characters (it has 9).'] +>>> f.clean('C1064AA') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean('C106AAB') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean('106AAB') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean('500') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at least 4 characters (it has 3).'] +>>> f.clean('5PPP') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.'] +>>> f.clean(None) +u'' +>>> f.clean('') +u'' +>>> f.clean(u'') +u'' + +# ARDNIField ################################################################## + +>>> from django.contrib.localflavor.ar.forms import ARDNIField +>>> f = ARDNIField() +>>> f.clean('20123456') +u'20123456' +>>> f.clean('20.123.456') +u'20123456' +>>> f.clean('9123456') +u'9123456' +>>> f.clean('9.123.456') +u'9123456' +>>> f.clean(u'20123456') +u'20123456' +>>> f.clean(u'20.123.456') +u'20123456' +>>> f.clean('20.123456') +u'20123456' +>>> f.clean('101234566') +Traceback (most recent call last): +... +ValidationError: [u'This field requires 7 or 8 digits.'] +>>> f.clean('W0123456') +Traceback (most recent call last): +... +ValidationError: [u'This field requires only numbers.'] +>>> f.clean('10,123,456') +Traceback (most recent call last): +... +ValidationError: [u'This field requires only numbers.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean(u'') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> f = ARDNIField(required=False) +>>> f.clean('20123456') +u'20123456' +>>> f.clean('20.123.456') +u'20123456' +>>> f.clean('9123456') +u'9123456' +>>> f.clean('9.123.456') +u'9123456' +>>> f.clean(u'20123456') +u'20123456' +>>> f.clean(u'20.123.456') +u'20123456' +>>> f.clean('20.123456') +u'20123456' +>>> f.clean('101234566') +Traceback (most recent call last): +... +ValidationError: [u'This field requires 7 or 8 digits.'] +>>> f.clean('W0123456') +Traceback (most recent call last): +... +ValidationError: [u'This field requires only numbers.'] +>>> f.clean('10,123,456') +Traceback (most recent call last): +... +ValidationError: [u'This field requires only numbers.'] +>>> f.clean(None) +u'' +>>> f.clean('') +u'' +>>> f.clean(u'') +u'' + +# ARCUITField ################################################################# + +>>> from django.contrib.localflavor.ar.forms import ARCUITField +>>> f = ARCUITField() +>>> f.clean('20-10123456-9') +u'20-10123456-9' +>>> f.clean(u'20-10123456-9') +u'20-10123456-9' +>>> f.clean('27-10345678-4') +u'27-10345678-4' +>>> f.clean('20101234569') +u'20-10123456-9' +>>> f.clean('27103456784') +u'27-10345678-4' +>>> f.clean('2-10123456-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('210123456-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('20-10123456') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('20-10123456-') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('20-10123456-5') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CUIT.'] +>>> f.clean(u'2-10123456-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('27-10345678-1') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CUIT.'] +>>> f.clean(u'27-10345678-1') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CUIT.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean(u'') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> f = ARCUITField(required=False) +>>> f.clean('20-10123456-9') +u'20-10123456-9' +>>> f.clean(u'20-10123456-9') +u'20-10123456-9' +>>> f.clean('27-10345678-4') +u'27-10345678-4' +>>> f.clean('20101234569') +u'20-10123456-9' +>>> f.clean('27103456784') +u'27-10345678-4' +>>> f.clean('2-10123456-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('210123456-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('20-10123456') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('20-10123456-') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('20-10123456-5') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CUIT.'] +>>> f.clean(u'2-10123456-9') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'] +>>> f.clean('27-10345678-1') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CUIT.'] +>>> f.clean(u'27-10345678-1') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CUIT.'] +>>> f.clean(None) +u'' +>>> f.clean('') +u'' +>>> f.clean(u'') +u'' + +# CAPostalCodeField ############################################################## + +CAPostalCodeField validates that the data is a six-character Canadian postal code. +>>> from django.contrib.localflavor.ca.forms import CAPostalCodeField +>>> f = CAPostalCodeField() +>>> f.clean('T2S 2H7') +u'T2S 2H7' +>>> f.clean('T2S 2H') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean('2T6 H8I') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean('T2S2H') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean(90210) +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f = CAPostalCodeField(required=False) +>>> f.clean('T2S 2H7') +u'T2S 2H7' +>>> f.clean('T2S2H7') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean('T2S 2H') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean('2T6 H8I') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean('T2S2H') +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean(90210) +Traceback (most recent call last): +... +ValidationError: [u'Enter a postal code in the format XXX XXX.'] +>>> f.clean(None) +u'' +>>> f.clean('') +u'' + +# CAPhoneNumberField ########################################################## + +CAPhoneNumberField validates that the data is a valid Canadian phone number, +including the area code. It's normalized to XXX-XXX-XXXX format. +Note: This test is exactly the same as the USPhoneNumberField except using a real +Candian area code + +>>> from django.contrib.localflavor.ca.forms import CAPhoneNumberField +>>> f = CAPhoneNumberField() +>>> f.clean('403-555-1212') +u'403-555-1212' +>>> f.clean('4035551212') +u'403-555-1212' +>>> f.clean('403 555-1212') +u'403-555-1212' +>>> f.clean('(403) 555-1212') +u'403-555-1212' +>>> f.clean('403 555 1212') +u'403-555-1212' +>>> f.clean('403.555.1212') +u'403-555-1212' +>>> f.clean('403.555-1212') +u'403-555-1212' +>>> f.clean(' (403) 555.1212 ') +u'403-555-1212' +>>> f.clean('555-1212') +Traceback (most recent call last): +... +ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.'] +>>> f.clean('403-55-1212') +Traceback (most recent call last): +... +ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> f = CAPhoneNumberField(required=False) +>>> f.clean('403-555-1212') +u'403-555-1212' +>>> f.clean('4035551212') +u'403-555-1212' +>>> f.clean('403 555-1212') +u'403-555-1212' +>>> f.clean('(403) 555-1212') +u'403-555-1212' +>>> f.clean('403 555 1212') +u'403-555-1212' +>>> f.clean('403.555.1212') +u'403-555-1212' +>>> f.clean('403.555-1212') +u'403-555-1212' +>>> f.clean(' (403) 555.1212 ') +u'403-555-1212' +>>> f.clean('555-1212') +Traceback (most recent call last): +... +ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.'] +>>> f.clean('403-55-1212') +Traceback (most recent call last): +... +ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.'] +>>> f.clean(None) +u'' +>>> f.clean('') +u'' + +# CAProvinceField ################################################################ + +CAProvinceField validates that the data is either an abbreviation or name of a +Canadian province. +>>> from django.contrib.localflavor.ca.forms import CAProvinceField +>>> f = CAProvinceField() +>>> f.clean('ab') +u'AB' +>>> f.clean('BC') +u'BC' +>>> f.clean('nova scotia') +u'NS' +>>> f.clean(' manitoba ') +u'MB' +>>> f.clean('T2S 2H7') +Traceback (most recent call last): +... +ValidationError: [u'Enter a Canadian province or territory.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> f = CAProvinceField(required=False) +>>> f.clean('ab') +u'AB' +>>> f.clean('BC') +u'BC' +>>> f.clean('nova scotia') +u'NS' +>>> f.clean(' manitoba ') +u'MB' +>>> f.clean('T2S 2H7') +Traceback (most recent call last): +... +ValidationError: [u'Enter a Canadian province or territory.'] +>>> f.clean(None) +u'' +>>> f.clean('') +u'' + +# CAProvinceSelect ############################################################### + +CAProvinceSelect is a Select widget that uses a list of Canadian provinces/territories +as its choices. +>>> from django.contrib.localflavor.ca.forms import CAProvinceSelect +>>> w = CAProvinceSelect() +>>> print w.render('province', 'AB') + + +# CASocialInsuranceNumberField ################################################# +>>> from django.contrib.localflavor.ca.forms import CASocialInsuranceNumberField +>>> f = CASocialInsuranceNumberField() +>>> f.clean('046-454-286') +u'046-454-286' +>>> f.clean('046-454-287') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format.'] +>>> f.clean('046 454 286') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format.'] +>>> f.clean('046-44-286') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format.'] + +## Generic DateField ########################################################## + +>>> from django.contrib.localflavor.generic.forms import * + +A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where +appropriate. + +>>> import datetime +>>> f = DateField() +>>> f.clean(datetime.date(2006, 10, 25)) +datetime.date(2006, 10, 25) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) +datetime.date(2006, 10, 25) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) +datetime.date(2006, 10, 25) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) +datetime.date(2006, 10, 25) +>>> f.clean('2006-10-25') +datetime.date(2006, 10, 25) +>>> f.clean('25/10/2006') +datetime.date(2006, 10, 25) +>>> f.clean('25/10/06') +datetime.date(2006, 10, 25) +>>> f.clean('Oct 25 2006') +datetime.date(2006, 10, 25) +>>> f.clean('October 25 2006') +datetime.date(2006, 10, 25) +>>> f.clean('October 25, 2006') +datetime.date(2006, 10, 25) +>>> f.clean('25 October 2006') +datetime.date(2006, 10, 25) +>>> f.clean('25 October, 2006') +datetime.date(2006, 10, 25) +>>> f.clean('2006-4-31') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] +>>> f.clean('200a-10-25') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] +>>> f.clean('10/25/06') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> f = DateField(required=False) +>>> f.clean(None) +>>> repr(f.clean(None)) +'None' +>>> f.clean('') +>>> repr(f.clean('')) +'None' + +DateField accepts an optional input_formats parameter: +>>> f = DateField(input_formats=['%Y %m %d']) +>>> f.clean(datetime.date(2006, 10, 25)) +datetime.date(2006, 10, 25) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) +datetime.date(2006, 10, 25) +>>> f.clean('2006 10 25') +datetime.date(2006, 10, 25) + +The input_formats parameter overrides all default input formats, +so the default formats won't work unless you specify them: +>>> f.clean('2006-10-25') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] +>>> f.clean('25/10/2006') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] +>>> f.clean('25/10/06') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date.'] + +## Generic DateTimeField ###################################################### + +A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where +appropriate. + +>>> import datetime +>>> f = DateTimeField() +>>> f.clean(datetime.date(2006, 10, 25)) +datetime.datetime(2006, 10, 25, 0, 0) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) +datetime.datetime(2006, 10, 25, 14, 30, 59) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) +datetime.datetime(2006, 10, 25, 14, 30, 59, 200) +>>> f.clean('2006-10-25 14:30:45') +datetime.datetime(2006, 10, 25, 14, 30, 45) +>>> f.clean('2006-10-25 14:30:00') +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean('2006-10-25 14:30') +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean('2006-10-25') +datetime.datetime(2006, 10, 25, 0, 0) +>>> f.clean('25/10/2006 14:30:45') +datetime.datetime(2006, 10, 25, 14, 30, 45) +>>> f.clean('25/10/2006 14:30:00') +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean('25/10/2006 14:30') +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean('25/10/2006') +datetime.datetime(2006, 10, 25, 0, 0) +>>> f.clean('25/10/06 14:30:45') +datetime.datetime(2006, 10, 25, 14, 30, 45) +>>> f.clean('25/10/06 14:30:00') +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean('25/10/06 14:30') +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean('25/10/06') +datetime.datetime(2006, 10, 25, 0, 0) +>>> f.clean('hello') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date/time.'] +>>> f.clean('2006-10-25 4:30 p.m.') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date/time.'] + +DateField accepts an optional input_formats parameter: +>>> f = DateTimeField(input_formats=['%Y %m %d %I:%M %p']) +>>> f.clean(datetime.date(2006, 10, 25)) +datetime.datetime(2006, 10, 25, 0, 0) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) +datetime.datetime(2006, 10, 25, 14, 30) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) +datetime.datetime(2006, 10, 25, 14, 30, 59) +>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) +datetime.datetime(2006, 10, 25, 14, 30, 59, 200) +>>> f.clean('2006 10 25 2:30 PM') +datetime.datetime(2006, 10, 25, 14, 30) + +The input_formats parameter overrides all default input formats, +so the default formats won't work unless you specify them: +>>> f.clean('2006-10-25 14:30:45') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid date/time.'] + +>>> f = DateTimeField(required=False) +>>> f.clean(None) +>>> repr(f.clean(None)) +'None' +>>> f.clean('') +>>> repr(f.clean('')) +'None' + """ diff --git a/tests/regressiontests/forms/models.py b/tests/regressiontests/forms/models.py index e69de29bb2..f4f8607193 100644 --- a/tests/regressiontests/forms/models.py +++ b/tests/regressiontests/forms/models.py @@ -0,0 +1,21 @@ +from django.db import models + +class BoundaryModel(models.Model): + positive_integer = models.PositiveIntegerField(null=True, blank=True) + +__test__ = {'API_TESTS': """ +>>> from django.newforms import form_for_model + +# Boundary conditions on a PostitiveIntegerField ######################### +>>> BoundaryForm = form_for_model(BoundaryModel) +>>> f = BoundaryForm({'positive_integer':100}) +>>> f.is_valid() +True +>>> f = BoundaryForm({'positive_integer':0}) +>>> f.is_valid() +True +>>> f = BoundaryForm({'positive_integer':-100}) +>>> f.is_valid() +False + +"""} \ No newline at end of file diff --git a/tests/regressiontests/forms/regressions.py b/tests/regressiontests/forms/regressions.py index df2ef578a1..3212e20170 100644 --- a/tests/regressiontests/forms/regressions.py +++ b/tests/regressiontests/forms/regressions.py @@ -60,6 +60,12 @@ Translated error messages used to be buggy. u'
                                                • \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.
                                                \n

                                                  \n
                                                • \n
                                                • \n
                                                • \n

                                                ' >>> deactivate() +Deep copying translated text shouldn't raise an error +>>> from django.utils.translation import gettext_lazy +>>> class CopyForm(Form): +... degree = IntegerField(widget=Select(choices=((1, gettext_lazy('test')),))) +>>> f = CopyForm() + ####################### # Miscellaneous Tests # ####################### diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index 0284449a59..104557be34 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -3,6 +3,7 @@ from localflavor import localflavor_tests from regressions import regression_tests from formsets import formset_tests from media import media_tests +from util import util_tests form_tests = r""" >>> from django.newforms import * @@ -962,6 +963,12 @@ True Traceback (most recent call last): ... ValidationError: [u'Enter a whole number.'] +>>> f.clean(42) +42 +>>> f.clean(3.14) +Traceback (most recent call last): +... +ValidationError: [u'Enter a whole number.'] >>> f.clean('1 ') 1 >>> f.clean(' 1') @@ -1085,6 +1092,10 @@ True 23.0 >>> f.clean('3.14') 3.1400000000000001 +>>> f.clean(3.14) +3.1400000000000001 +>>> f.clean(42) +42.0 >>> f.clean('a') Traceback (most recent call last): ... @@ -1143,6 +1154,10 @@ True Decimal("23") >>> f.clean('3.14') Decimal("3.14") +>>> f.clean(3.14) +Decimal("3.14") +>>> f.clean(Decimal('3.14')) +Decimal("3.14") >>> f.clean('a') Traceback (most recent call last): ... @@ -1608,18 +1623,22 @@ ValidationError: [u'This field is required.'] Traceback (most recent call last): ... ValidationError: [u'This field is required.'] +>>> f.clean('http://localhost') +u'http://localhost' >>> f.clean('http://example.com') u'http://example.com' >>> f.clean('http://www.example.com') u'http://www.example.com' +>>> f.clean('http://www.example.com:8000/test') +u'http://www.example.com:8000/test' +>>> f.clean('http://200.8.9.10') +u'http://200.8.9.10' +>>> f.clean('http://200.8.9.10:8000/test') +u'http://200.8.9.10:8000/test' >>> f.clean('foo') Traceback (most recent call last): ... ValidationError: [u'Enter a valid URL.'] ->>> f.clean('example.com') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid URL.'] >>> f.clean('http://') Traceback (most recent call last): ... @@ -1650,10 +1669,6 @@ u'http://www.example.com' Traceback (most recent call last): ... ValidationError: [u'Enter a valid URL.'] ->>> f.clean('example.com') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid URL.'] >>> f.clean('http://') Traceback (most recent call last): ... @@ -1707,6 +1722,15 @@ Traceback (most recent call last): ... ValidationError: [u'Ensure this value has at most 20 characters (it has 37).'] +URLField should prepend 'http://' if no scheme was given +>>> f = URLField(required=False) +>>> f.clean('example.com') +u'http://example.com' +>>> f.clean('') +u'' +>>> f.clean('https://example.com') +u'https://example.com' + # BooleanField ################################################################ >>> f = BooleanField() @@ -2683,16 +2707,24 @@ to the next. ... super(Person, self).__init__(*args, **kwargs) ... if names_required: ... self.fields['first_name'].required = True +... self.fields['first_name'].widget.attrs['class'] = 'required' ... self.fields['last_name'].required = True +... self.fields['last_name'].widget.attrs['class'] = 'required' >>> f = Person(names_required=False) >>> f['first_name'].field.required, f['last_name'].field.required (False, False) +>>> f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs +({}, {}) >>> f = Person(names_required=True) >>> f['first_name'].field.required, f['last_name'].field.required (True, True) +>>> f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs +({'class': 'required'}, {'class': 'required'}) >>> f = Person(names_required=False) >>> f['first_name'].field.required, f['last_name'].field.required (False, False) +>>> f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs +({}, {}) >>> class Person(Form): ... first_name = CharField(max_length=30) ... last_name = CharField(max_length=30) @@ -3796,14 +3828,6 @@ u'1' >>> smart_unicode('foo') u'foo' -# flatatt tests ->>> from django.newforms.util import flatatt ->>> flatatt({'id': "header"}) -u' id="header"' ->>> flatatt({'class': "news", 'title': "Read this"}) -u' class="news" title="Read this"' ->>> flatatt({}) -u'' #################################### # Test accessing errors in clean() # @@ -3823,6 +3847,50 @@ u'' True >>> f.cleaned_data['username'] u'sirrobin' + +####################################### +# Test overriding ErrorList in a form # +####################################### + +>>> from django.newforms.util import ErrorList +>>> class DivErrorList(ErrorList): +... def __unicode__(self): +... return self.as_divs() +... def as_divs(self): +... if not self: return u'' +... return u'
                                                %s
                                                ' % ''.join([u'
                                                %s
                                                ' % e for e in self]) +>>> class CommentForm(Form): +... name = CharField(max_length=50, required=False) +... email = EmailField() +... comment = CharField() +>>> data = dict(email='invalid') +>>> f = CommentForm(data, auto_id=False, error_class=DivErrorList) +>>> print f.as_p() +

                                                Name:

                                                +
                                                Enter a valid e-mail address.
                                                +

                                                Email:

                                                +
                                                This field is required.
                                                +

                                                Comment:

                                                + +################################# +# Test multipart-encoded form # +################################# + +>>> class FormWithoutFile(Form): +... username = CharField() +>>> class FormWithFile(Form): +... username = CharField() +... file = FileField() +>>> class FormWithImage(Form): +... image = ImageField() + +>>> FormWithoutFile().is_multipart() +False +>>> FormWithFile().is_multipart() +True +>>> FormWithImage().is_multipart() +True + """ __test__ = { @@ -3831,6 +3899,7 @@ __test__ = { 'regressions': regression_tests, 'formset_tests': formset_tests, 'media_tests': media_tests, + 'util_tests': util_tests, } if __name__ == "__main__": diff --git a/tests/regressiontests/forms/util.py b/tests/regressiontests/forms/util.py new file mode 100644 index 0000000000..1a02b7e55b --- /dev/null +++ b/tests/regressiontests/forms/util.py @@ -0,0 +1,45 @@ +# coding: utf-8 +""" +Tests for newforms/util.py module. +""" + +util_tests = r""" +>>> from django.newforms.util import * +>>> from django.utils.translation import ugettext_lazy + +########### +# flatatt # +########### + +>>> from django.newforms.util import flatatt +>>> flatatt({'id': "header"}) +u' id="header"' +>>> flatatt({'class': "news", 'title': "Read this"}) +u' class="news" title="Read this"' +>>> flatatt({}) +u'' + +################### +# ValidationError # +################### + +# Can take a string. +>>> print ValidationError("There was an error.").messages +
                                                • There was an error.
                                                + +# Can take a unicode string. +>>> print ValidationError(u"Not \u03C0.").messages +
                                                • Not π.
                                                + +# Can take a lazy string. +>>> print ValidationError(ugettext_lazy("Error.")).messages +
                                                • Error.
                                                + +# Can take a list. +>>> print ValidationError(["Error one.", "Error two."]).messages +
                                                • Error one.
                                                • Error two.
                                                + +# Can take a mixture in a list. +>>> print ValidationError(["First error.", u"Not \u03C0.", ugettext_lazy("Error.")]).messages +
                                                • First error.
                                                • Not π.
                                                • Error.
                                                +""" diff --git a/tests/regressiontests/model_regress/models.py b/tests/regressiontests/model_regress/models.py index 7aa9e2a7c4..00c3bc96f0 100644 --- a/tests/regressiontests/model_regress/models.py +++ b/tests/regressiontests/model_regress/models.py @@ -20,6 +20,11 @@ class Article(models.Model): def __unicode__(self): return self.headline +class Movie(models.Model): + #5218: Test models with non-default primary keys / AutoFields + movie_id = models.AutoField(primary_key=True) + name = models.CharField(max_length=60) + __test__ = {'API_TESTS': """ (NOTE: Part of the regression test here is merely parsing the model declaration. The verbose_name, in particular, did not always work.) diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index 0f7ac2f352..11dd092156 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -306,6 +306,14 @@ class Templates(unittest.TestCase): 'cycle06': ('{% cycle a %}', {}, template.TemplateSyntaxError), 'cycle07': ('{% cycle a,b,c as foo %}{% cycle bar %}', {}, template.TemplateSyntaxError), 'cycle08': ('{% cycle a,b,c as foo %}{% cycle foo %}{{ foo }}{{ foo }}{% cycle foo %}{{ foo }}', {}, 'abbbcc'), + 'cycle09': ("{% for i in test %}{% cycle a,b %}{{ i }},{% endfor %}", {'test': range(5)}, 'a0,b1,a2,b3,a4,'), + # New format: + 'cycle10': ("{% cycle 'a' 'b' 'c' as abc %}{% cycle abc %}", {}, 'ab'), + 'cycle11': ("{% cycle 'a' 'b' 'c' as abc %}{% cycle abc %}{% cycle abc %}", {}, 'abc'), + 'cycle12': ("{% cycle 'a' 'b' 'c' as abc %}{% cycle abc %}{% cycle abc %}{% cycle abc %}", {}, 'abca'), + 'cycle13': ("{% for i in test %}{% cycle 'a' 'b' %}{{ i }},{% endfor %}", {'test': range(5)}, 'a0,b1,a2,b3,a4,'), + 'cycle14': ("{% cycle one two as foo %}{% cycle foo %}", {'one': '1','two': '2'}, '12'), + 'cycle13': ("{% for i in test %}{% cycle aye bee %}{{ i }},{% endfor %}", {'test': range(5), 'aye': 'a', 'bee': 'b'}, 'a0,b1,a2,b3,a4,'), ### EXCEPTIONS ############################################################ diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py index a15e4f15ec..60fd909f43 100644 --- a/tests/regressiontests/test_client_regress/models.py +++ b/tests/regressiontests/test_client_regress/models.py @@ -119,7 +119,7 @@ class AssertRedirectsTests(TestCase): try: self.assertRedirects(response, '/test_client/get_view/') except AssertionError, e: - self.assertEquals(str(e), "Response redirected to '/test_client/get_view/?var=value', expected '/test_client/get_view/'") + self.assertEquals(str(e), "Response redirected to 'http://testserver/test_client/get_view/?var=value', expected '/test_client/get_view/'") def test_incorrect_target(self): "An assertion is raised if the response redirects to another target" @@ -135,7 +135,7 @@ class AssertRedirectsTests(TestCase): response = self.client.get('/test_client/double_redirect_view/') try: # The redirect target responds with a 301 code, not 200 - self.assertRedirects(response, '/test_client/permanent_redirect_view/') + self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/') except AssertionError, e: self.assertEquals(str(e), "Couldn't retrieve redirection page '/test_client/permanent_redirect_view/': response code was 301 (expected 200)") @@ -252,7 +252,7 @@ class LoginTests(TestCase): # Create a second client, and log in. c = Client() login = c.login(username='testclient', password='password') - self.assertTrue(login, 'Could not log in') + self.failUnless(login, 'Could not log in') # Get a redirection page with the second client. response = c.get("/test_client_regress/login_protected_redirect_view/") @@ -260,4 +260,4 @@ class LoginTests(TestCase): # At this points, the self.client isn't logged in. # Check that assertRedirects uses the original client, not the # default client. - self.assertRedirects(response, "/test_client_regress/get_view/") + self.assertRedirects(response, "http://testserver/test_client_regress/get_view/") diff --git a/tests/runtests.py b/tests/runtests.py index 8c3abe908e..9009bf6606 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -4,11 +4,17 @@ import os, sys, traceback import unittest import django.contrib as contrib + +try: + set +except NameError: + from sets import Set as set # For Python 2.3 + + CONTRIB_DIR_NAME = 'django.contrib' MODEL_TESTS_DIR_NAME = 'modeltests' REGRESSION_TESTS_DIR_NAME = 'regressiontests' -TEST_DATABASE_NAME = 'django_test_db' TEST_TEMPLATE_DIR = 'templates' CONTRIB_DIR = os.path.dirname(contrib.__file__) @@ -90,7 +96,6 @@ def django_tests(verbosity, interactive, test_labels): old_middleware_classes = settings.MIDDLEWARE_CLASSES # Redirect some settings for the duration of these tests. - settings.TEST_DATABASE_NAME = TEST_DATABASE_NAME settings.INSTALLED_APPS = ALWAYS_INSTALLED_APPS settings.ROOT_URLCONF = 'urls' settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), TEST_TEMPLATE_DIR),) @@ -144,7 +149,6 @@ def django_tests(verbosity, interactive, test_labels): # Restore the old settings. settings.INSTALLED_APPS = old_installed_apps - settings.TESTS_DATABASE_NAME = old_test_database_name settings.ROOT_URLCONF = old_root_urlconf settings.TEMPLATE_DIRS = old_template_dirs settings.USE_I18N = old_use_i18n
                                                {{ field.field.verbose_name|capfirst }} {% if field.urls %} @@ -29,7 +29,7 @@ {% if related_object.object_list %} {% else %} diff --git a/django/contrib/formtools/preview.py b/django/contrib/formtools/preview.py index dcb58e85d8..2e4fb92cda 100644 --- a/django/contrib/formtools/preview.py +++ b/django/contrib/formtools/preview.py @@ -1,47 +1,5 @@ """ Formtools Preview application. - -This is an abstraction of the following workflow: - - "Display an HTML form, force a preview, then do something with the submission." - -Given a django.newforms.Form object that you define, this takes care of the -following: - - * Displays the form as HTML on a Web page. - * Validates the form data once it's submitted via POST. - * If it's valid, displays a preview page. - * If it's not valid, redisplays the form with error messages. - * At the preview page, if the preview confirmation button is pressed, calls - a hook that you define -- a done() method. - -The framework enforces the required preview by passing a shared-secret hash to -the preview page. If somebody tweaks the form parameters on the preview page, -the form submission will fail the hash comparison test. - -Usage -===== - -Subclass FormPreview and define a done() method: - - def done(self, request, cleaned_data): - # ... - -This method takes an HttpRequest object and a dictionary of the form data after -it has been validated and cleaned. It should return an HttpResponseRedirect. - -Then, just instantiate your FormPreview subclass by passing it a Form class, -and pass that to your URLconf, like so: - - (r'^post/$', MyFormPreview(MyForm)), - -The FormPreview class has a few other hooks. See the docstrings in the source -code below. - -The framework also uses two templates: 'formtools/preview.html' and -'formtools/form.html'. You can override these by setting 'preview_template' and -'form_template' attributes on your FormPreview subclass. See -django/contrib/formtools/templates for the default templates. """ from django.conf import settings diff --git a/django/contrib/localflavor/ar/__init__.py b/django/contrib/localflavor/ar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/ar/ar_provinces.py b/django/contrib/localflavor/ar/ar_provinces.py new file mode 100644 index 0000000000..a0efd4ba33 --- /dev/null +++ b/django/contrib/localflavor/ar/ar_provinces.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +""" +A list of Argentinean provinces and autonomous cities as `choices` in a +formfield. From +http://www.argentina.gov.ar/argentina/portal/paginas.dhtml?pagina=425 + +This exists in this standalone file so that it's only imported into memory +when explicitly needed. +""" + +PROVINCE_CHOICES = ( + ('B', u'Buenos Aires'), + ('K', u'Catamarca'), + ('H', u'Chaco'), + ('U', u'Chubut'), + ('C', u'Ciudad Autónoma de Buenos Aires'), + ('X', u'Córdoba'), + ('W', u'Corrientes'), + ('E', u'Entre Ríos'), + ('P', u'Formosa'), + ('Y', u'Jujuy'), + ('L', u'La Pampa'), + ('F', u'La Rioja'), + ('M', u'Mendoza'), + ('N', u'Misiones'), + ('Q', u'Neuquén'), + ('R', u'Río Negro'), + ('A', u'Salta'), + ('J', u'San Juan'), + ('D', u'San Luis'), + ('Z', u'Santa Cruz'), + ('S', u'Santa Fe'), + ('G', u'Santiago del Estero'), + ('V', u'Tierra del Fuego, Antártida e Islas del Atlántico Sur'), + ('T', u'Tucumán'), +) diff --git a/django/contrib/localflavor/ar/forms.py b/django/contrib/localflavor/ar/forms.py new file mode 100644 index 0000000000..6d86e4e676 --- /dev/null +++ b/django/contrib/localflavor/ar/forms.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +""" +AR-specific Form helpers. +""" + +from django.newforms import ValidationError +from django.newforms.fields import RegexField, CharField, Select, EMPTY_VALUES +from django.utils.encoding import smart_unicode +from django.utils.translation import ugettext +import re + +class ARProvinceSelect(Select): + """ + A Select widget that uses a list of Argentinean provinces/autonomous cities + as its choices. + """ + def __init__(self, attrs=None): + from ar_provinces import PROVINCE_CHOICES + super(ARProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES) + +class ARPostalCodeField(RegexField): + """ + A field that accepts a `classic NNNN Postal Code or a CPA. + + See http://www.correoargentino.com.ar/consulta_cpa/home.php + """ + def __init__(self, *args, **kwargs): + super(ARPostalCodeField, self).__init__(r'^\d{4}$|^[A-HJ-NP-Za-hj-np-z]\d{4}\D{3}$', + min_length=4, max_length=8, + error_message=ugettext("Enter a postal code in the format NNNN or ANNNNAAA."), + *args, **kwargs) + + def clean(self, value): + value = super(ARPostalCodeField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + if len(value) not in (4, 8): + raise ValidationError(ugettext("Enter a postal code in the format NNNN or ANNNNAAA.")) + if len(value) == 8: + return u'%s%s%s' % (value[0].upper(), value[1:5], value[5:].upper()) + return value + +class ARDNIField(CharField): + """ + A field that validates `Documento Nacional de Identidad (DNI) numbers. + """ + def __init__(self, *args, **kwargs): + super(ARDNIField, self).__init__(max_length=10, min_length=7, *args, + **kwargs) + + def clean(self, value): + """ + Value can be a string either in the [X]X.XXX.XXX or [X]XXXXXXX formats. + """ + value = super(ARDNIField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + if not value.isdigit(): + value = value.replace('.', '') + if not value.isdigit(): + raise ValidationError(ugettext("This field requires only numbers.")) + if len(value) not in (7, 8): + raise ValidationError( + ugettext("This field requires 7 or 8 digits.")) + + return value + +class ARCUITField(RegexField): + """ + This field validates a CUIT (Cdigo nico de Identificacin Tributaria). A + CUIT is of the form XX-XXXXXXXX-V. The last digit is a check digit. + """ + def __init__(self, *args, **kwargs): + super(ARCUITField, self).__init__(r'^\d{2}-?\d{8}-?\d$', + error_message=ugettext('Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'), + *args, **kwargs) + + def clean(self, value): + """ + Value can be either a string in the format XX-XXXXXXXX-X or an + 11-digit number. + """ + value = super(ARCUITField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + value, cd = self._canon(value) + if self._calc_cd(value) != cd: + raise ValidationError(ugettext("Invalid CUIT.")) + return self._format(value, cd) + + def _canon(self, cuit): + cuit = cuit.replace('-', '') + return cuit[:-1], cuit[-1] + + def _calc_cd(self, cuit): + mults = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2) + tmp = sum([m * int(cuit[idx]) for idx, m in enumerate(mults)]) + return str(11 - tmp % 11) + + def _format(self, cuit, check_digit=None): + if check_digit == None: + check_digit = cuit[-1] + cuit = cuit[:-1] + return u'%s-%s-%s' % (cuit[:2], cuit[2:], check_digit) + diff --git a/django/contrib/localflavor/br/forms.py b/django/contrib/localflavor/br/forms.py index c7082c0f9e..58bf795292 100644 --- a/django/contrib/localflavor/br/forms.py +++ b/django/contrib/localflavor/br/forms.py @@ -6,16 +6,21 @@ BR-specific Form helpers from django.newforms import ValidationError from django.newforms.fields import Field, RegexField, CharField, Select, EMPTY_VALUES from django.utils.encoding import smart_unicode -from django.utils.translation import ugettext +from django.utils.translation import ugettext as _ import re +try: + set +except NameError: + from sets import Set as set # For Python 2.3 + phone_digits_re = re.compile(r'^(\d{2})[-\.]?(\d{4})[-\.]?(\d{4})$') class BRZipCodeField(RegexField): def __init__(self, *args, **kwargs): super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$', max_length=None, min_length=None, - error_message=ugettext('Enter a zip code in the format XXXXX-XXX.'), + error_message=_('Enter a zip code in the format XXXXX-XXX.'), *args, **kwargs) class BRPhoneNumberField(Field): @@ -27,7 +32,7 @@ class BRPhoneNumberField(Field): m = phone_digits_re.search(value) if m: return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) - raise ValidationError(ugettext('Phone numbers must be in XX-XXXX-XXXX format.')) + raise ValidationError(_('Phone numbers must be in XX-XXXX-XXXX format.')) class BRStateSelect(Select): """ @@ -38,6 +43,32 @@ class BRStateSelect(Select): from br_states import STATE_CHOICES super(BRStateSelect, self).__init__(attrs, choices=STATE_CHOICES) +class BRStateChoiceField(Field): + """ + A choice field that uses a list of Brazilian states as its choices. + """ + widget = Select + + def __init__(self, required=True, widget=None, label=None, + initial=None, help_text=None): + super(BRStateChoiceField, self).__init__(required, widget, label, + initial, help_text) + from br_states import STATE_CHOICES + self.widget.choices = STATE_CHOICES + + def clean(self, value): + value = super(BRStateChoiceField, self).clean(value) + if value in EMPTY_VALUES: + value = u'' + value = smart_unicode(value) + if value == u'': + return value + valid_values = set([smart_unicode(k) for k, v in self.widget.choices]) + if value not in valid_values: + raise ValidationError(_(u'Select a valid brazilian state.' + u' That state is not one' + u' of the available states.')) + return value def DV_maker(v): if v >= 2: @@ -69,9 +100,9 @@ class BRCPFField(CharField): try: int(value) except ValueError: - raise ValidationError(ugettext("This field requires only numbers.")) + raise ValidationError(_("This field requires only numbers.")) if len(value) != 11: - raise ValidationError(ugettext("This field requires at most 11 digits or 14 characters.")) + raise ValidationError(_("This field requires at most 11 digits or 14 characters.")) orig_dv = value[-2:] new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(10, 1, -1))]) @@ -81,7 +112,7 @@ class BRCPFField(CharField): new_2dv = DV_maker(new_2dv % 11) value = value[:-1] + str(new_2dv) if value[-2:] != orig_dv: - raise ValidationError(ugettext("Invalid CPF number.")) + raise ValidationError(_("Invalid CPF number.")) return orig_value @@ -103,7 +134,7 @@ class BRCNPJField(Field): raise ValidationError("This field requires only numbers.") if len(value) != 14: raise ValidationError( - ugettext("This field requires at least 14 digits")) + _("This field requires at least 14 digits")) orig_dv = value[-2:] new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(5, 1, -1) + range(9, 1, -1))]) @@ -113,7 +144,7 @@ class BRCNPJField(Field): new_2dv = DV_maker(new_2dv % 11) value = value[:-1] + str(new_2dv) if value[-2:] != orig_dv: - raise ValidationError(ugettext("Invalid CNPJ number.")) + raise ValidationError(_("Invalid CNPJ number.")) return orig_value diff --git a/django/contrib/localflavor/ca/__init__.py b/django/contrib/localflavor/ca/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/ca/ca_provinces.py b/django/contrib/localflavor/ca/ca_provinces.py new file mode 100644 index 0000000000..072159ad57 --- /dev/null +++ b/django/contrib/localflavor/ca/ca_provinces.py @@ -0,0 +1,57 @@ +""" +An alphabetical list of provinces and territories for use as `choices` +in a formfield., and a mapping of province misspellings/abbreviations to +normalized abbreviations + +Source: http://www.canada.gc.ca/othergov/prov_e.html + +This exists in this standalone file so that it's only imported into memory +when explicitly needed. +""" + +PROVINCE_CHOICES = ( + ('AB', 'Alberta'), + ('BC', 'British Columbia'), + ('MB', 'Manitoba'), + ('NB', 'New Brunswick'), + ('NF', 'Newfoundland and Labrador'), + ('NT', 'Northwest Territories'), + ('NS', 'Nova Scotia'), + ('NU', 'Nunavut'), + ('ON', 'Ontario'), + ('PE', 'Prince Edward Island'), + ('QC', 'Quebec'), + ('SK', 'Saskatchewan'), + ('YK', 'Yukon') +) + +PROVINCES_NORMALIZED = { + 'ab': 'AB', + 'alberta': 'AB', + 'bc': 'BC', + 'b.c.': 'BC', + 'british columbia': 'BC', + 'mb': 'MB', + 'manitoba': 'MB', + 'nf': 'NF', + 'newfoundland': 'NF', + 'newfoundland and labrador': 'NF', + 'nt': 'NT', + 'northwest territories': 'NT', + 'ns': 'NS', + 'nova scotia': 'NS', + 'nu': 'NU', + 'nunavut': 'NU', + 'on': 'ON', + 'ontario': 'ON', + 'pe': 'PE', + 'pei': 'PE', + 'p.e.i.': 'PE', + 'prince edward island': 'PE', + 'qc': 'QC', + 'quebec': 'QC', + 'sk': 'SK', + 'saskatchewan': 'SK', + 'yk': 'YK', + 'yukon': 'YK', +} \ No newline at end of file diff --git a/django/contrib/localflavor/ca/forms.py b/django/contrib/localflavor/ca/forms.py new file mode 100644 index 0000000000..98f65a5c6c --- /dev/null +++ b/django/contrib/localflavor/ca/forms.py @@ -0,0 +1,112 @@ +""" +Canada-specific Form helpers +""" + +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.newforms.util import smart_unicode +from django.utils.translation import gettext, ugettext +import re + +phone_digits_re = re.compile(r'^(?:1-?)?(\d{3})[-\.]?(\d{3})[-\.]?(\d{4})$') +sin_re = re.compile(r"^(\d{3})-(\d{3})-(\d{3})$") + +class CAPostalCodeField(RegexField): + """Canadian postal code field.""" + def __init__(self, *args, **kwargs): + super(CAPostalCodeField, self).__init__(r'^[ABCEGHJKLMNPRSTVXYZ]\d[A-Z] \d[A-Z]\d$', + max_length=None, min_length=None, + error_message=gettext(u'Enter a postal code in the format XXX XXX.'), + *args, **kwargs) + +class CAPhoneNumberField(Field): + """Canadian phone number field.""" + def clean(self, value): + """Validate a phone number. + """ + super(CAPhoneNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + value = re.sub('(\(|\)|\s+)', '', smart_unicode(value)) + m = phone_digits_re.search(value) + if m: + return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) + raise ValidationError(u'Phone numbers must be in XXX-XXX-XXXX format.') + +class CAProvinceField(Field): + """ + A form field that validates its input is a Canadian province name or abbreviation. + It normalizes the input to the standard two-leter postal service + abbreviation for the given province. + """ + def clean(self, value): + from ca_provinces import PROVINCES_NORMALIZED + super(CAProvinceField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + try: + value = value.strip().lower() + except AttributeError: + pass + else: + try: + return PROVINCES_NORMALIZED[value.strip().lower()].decode('ascii') + except KeyError: + pass + raise ValidationError(u'Enter a Canadian province or territory.') + +class CAProvinceSelect(Select): + """ + A Select widget that uses a list of Canadian provinces and + territories as its choices. + """ + def __init__(self, attrs=None): + from ca_provinces import PROVINCE_CHOICES # relative import + super(CAProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES) + +class CASocialInsuranceNumberField(Field): + """ + A Canadian Social Insurance Number (SIN). + + Checks the following rules to determine whether the number is valid: + + * Conforms to the XXX-XXX-XXXX format. + * Passes the check digit process "Luhn Algorithm" + See: http://en.wikipedia.org/wiki/Social_Insurance_Number + """ + def clean(self, value): + super(CASocialInsuranceNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + msg = ugettext('Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format.') + match = re.match(sin_re, value) + if not match: + raise ValidationError(msg) + + number = u'%s-%s-%s' % (match.group(1), match.group(2), match.group(3)) + check_number = u'%s%s%s' % (match.group(1), match.group(2), match.group(3)) + if not self.luhn_checksum_is_valid(check_number): + raise ValidationError(msg) + return number + + def luhn_checksum_is_valid(self, number): + """ + Checks to make sure that the SIN passes a luhn mod-10 checksum + See: http://en.wikipedia.org/wiki/Luhn_algorithm + """ + + sum = 0 + num_digits = len(number) + oddeven = num_digits & 1 + + for count in range(0, num_digits): + digit = int(number[count]) + + if not (( count & 1 ) ^ oddeven ): + digit = digit * 2 + if digit > 9: + digit = digit - 9 + + sum = sum + digit + + return ( (sum % 10) == 0 ) \ No newline at end of file diff --git a/django/contrib/localflavor/generic/__init__.py b/django/contrib/localflavor/generic/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/generic/forms.py b/django/contrib/localflavor/generic/forms.py new file mode 100644 index 0000000000..a6d813723c --- /dev/null +++ b/django/contrib/localflavor/generic/forms.py @@ -0,0 +1,38 @@ +from django import newforms as forms + +DEFAULT_DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06' + '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' +) + +DEFAULT_DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' + '%d/%m/%Y %H:%M', # '25/10/2006 14:30' + '%d/%m/%Y', # '25/10/2006' + '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' + '%d/%m/%y %H:%M', # '25/10/06 14:30' + '%d/%m/%y', # '25/10/06' +) + +class DateField(forms.DateField): + """ + A date input field which uses non-US date input formats by default. + """ + def __init__(self, input_formats=None, *args, **kwargs): + input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS + super(DateField, self).__init__(input_formats=input_formats, *args, **kwargs) + +class DateTimeField(forms.DateTimeField): + """ + A date and time input field which uses non-US date and time input formats + by default. + """ + def __init__(self, input_formats=None, *args, **kwargs): + input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS + super(DateTimeField, self).__init__(input_formats=input_formats, *args, **kwargs) diff --git a/django/contrib/localflavor/nl/__init__.py b/django/contrib/localflavor/nl/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/nl/forms.py b/django/contrib/localflavor/nl/forms.py new file mode 100644 index 0000000000..e202ab0595 --- /dev/null +++ b/django/contrib/localflavor/nl/forms.py @@ -0,0 +1,92 @@ +""" +NL-specific Form helpers +""" + +import re + +from django.newforms import ValidationError +from django.newforms.fields import Field, Select, EMPTY_VALUES +from django.utils.translation import ugettext as _ +from django.utils.encoding import smart_unicode + +pc_re = re.compile('^\d{4}[A-Z]{2}$') +sofi_re = re.compile('^\d{9}$') +numeric_re = re.compile('^\d+$') + +class NLZipCodeField(Field): + """ + A Dutch postal code field. + """ + def clean(self, value): + super(NLZipCodeField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + + msg = _('Enter a valid postal code') + value = value.strip().upper().replace(' ', '') + if not pc_re.search(value): + raise ValidationError(msg) + + if int(value[:4]) < 1000: + raise ValidationError(msg) + + return u'%s %s' % (value[:4], value[4:]) + +class NLProvinceSelect(Select): + """ + A Select widget that uses a list of provinces of the Netherlands as its + choices. + """ + def __init__(self, attrs=None): + from nl_provinces import PROVINCE_CHOICES + super(NLProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES) + +class NLPhoneNumberField(Field): + """ + A Dutch telephone number field. + """ + def clean(self, value): + super(NLPhoneNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + + msg = _('Enter a valid phone number') + phone_nr = re.sub('[\-\s\(\)]', '', smart_unicode(value)) + + if len(phone_nr) == 10 and numeric_re.search(phone_nr): + return value + + if phone_nr[:3] == '+31' and len(phone_nr) == 12 and \ + numeric_re.search(phone_nr[3:]): + return value + + raise ValidationError(msg) + +class NLSoFiNumberField(Field): + """ + A Dutch social security number (SoFi/BSN) field. + + http://nl.wikipedia.org/wiki/Sofinummer + """ + def clean(self, value): + super(NLSoFiNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + + msg = _('Enter a valid SoFi number') + + if not sofi_re.search(value): + raise ValidationError(msg) + + if int(value) == 0: + raise ValidationError(msg) + + checksum = 0 + for i in range(9, 1, -1): + checksum += int(value[9-i]) * i + checksum -= int(value[-1]) + + if checksum % 11 != 0: + raise ValidationError(msg) + + return value diff --git a/django/contrib/localflavor/nl/nl_provinces.py b/django/contrib/localflavor/nl/nl_provinces.py new file mode 100644 index 0000000000..8964adfac0 --- /dev/null +++ b/django/contrib/localflavor/nl/nl_provinces.py @@ -0,0 +1,16 @@ +from django.utils.translation import ugettext_lazy as _ + +PROVINCE_CHOICES = ( + ('DR', _('Drente')), + ('FL', _('Flevoland')), + ('FR', _('Friesland')), + ('GL', _('Gelderland')), + ('GR', _('Groningen')), + ('LB', _('Limburg')), + ('NB', _('Noord-Brabant')), + ('NH', _('Noord-Holland')), + ('OV', _('Overijssel')), + ('UT', _('Utrecht')), + ('ZE', _('Zeeland')), + ('ZH', _('Zuid-Holland')), +) diff --git a/django/contrib/localflavor/pe/__init__.py b/django/contrib/localflavor/pe/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/pe/forms.py b/django/contrib/localflavor/pe/forms.py new file mode 100644 index 0000000000..b1ae215417 --- /dev/null +++ b/django/contrib/localflavor/pe/forms.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +""" +PE-specific Form helpers. +""" + +from django.newforms import ValidationError +from django.newforms.fields import RegexField, CharField, Select, EMPTY_VALUES +from django.utils.translation import ugettext + +class PEDepartmentSelect(Select): + """ + A Select widget that uses a list of Peruvian Departments as its choices. + """ + def __init__(self, attrs=None): + from pe_department import DEPARTMENT_CHOICES + super(PEDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES) + +class PEDNIField(CharField): + """ + A field that validates `Documento Nacional de IdentidadŽ (DNI) numbers. + """ + def __init__(self, *args, **kwargs): + super(PEDNIField, self).__init__(max_length=8, min_length=8, *args, + **kwargs) + + def clean(self, value): + """ + Value must be a string in the XXXXXXXX formats. + """ + value = super(PEDNIField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + if not value.isdigit(): + raise ValidationError(ugettext("This field requires only numbers.")) + if len(value) != 8: + raise ValidationError(ugettext("This field requires 8 digits.")) + + return value + +class PERUCField(RegexField): + """ + This field validates a RUC (Registro Unico de Contribuyentes). A RUC is of + the form XXXXXXXXXXX. + """ + def __init__(self, *args, **kwargs): + super(PERUCField, self).__init__(max_length=11, min_length=11, *args, + **kwargs) + + def clean(self, value): + """ + Value must be an 11-digit number. + """ + value = super(PERUCField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + if not value.isdigit(): + raise ValidationError(ugettext("This field requires only numbers.")) + if len(value) != 11: + raise ValidationError(ugettext("This field requires 11 digits.")) + return value + diff --git a/django/contrib/localflavor/pe/pe_department.py b/django/contrib/localflavor/pe/pe_department.py new file mode 100644 index 0000000000..d7fa65f9cb --- /dev/null +++ b/django/contrib/localflavor/pe/pe_department.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +""" +A list of Peru departaments as `choices` in a +formfield. + +This exists in this standalone file so that it's only imported into memory +when explicitly needed. +""" + +DEPARTMENT_CHOICES = ( + ('AMA', u'Amazonas'), + ('ANC', u'Ancash'), + ('APU', u'Apurímac'), + ('ARE', u'Arequipa'), + ('AYA', u'Ayacucho'), + ('CAJ', u'Cajamarca'), + ('CUS', u'Cusco'), + ('HUV', u'Huancavelica'), + ('HUC', u'Huánuco'), + ('ICA', u'Ica'), + ('JUN', u'Junín'), + ('LAL', u'La Libertad'), + ('LAM', u'Lambayeque'), + ('LIM', u'Lima'), + ('LOR', u'Loreto'), + ('MDD', u'Madre de Dios'), + ('MOQ', u'Moquegua'), + ('PAS', u'Pasco'), + ('PIU', u'Piura'), + ('PUN', u'Puno'), + ('SAM', u'San Martín'), + ('TAC', u'Tacna'), + ('TUM', u'Tumbes'), + ('UCA', u'Ucayali'), +) diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py index 29adc6e30c..fda10c9743 100644 --- a/django/contrib/sessions/models.py +++ b/django/contrib/sessions/models.py @@ -15,8 +15,13 @@ class SessionManager(models.Manager): "Returns session key that isn't being used." # The random module is seeded when this Apache child is created. # Use SECRET_KEY as added salt. + try: + pid = os.getpid() + except AttributeError: + # No getpid() in Jython, for example + pid = 1 while 1: - session_key = md5.new("%s%s%s%s" % (random.randint(0, sys.maxint - 1), os.getpid(), time.time(), settings.SECRET_KEY)).hexdigest() + session_key = md5.new("%s%s%s%s" % (random.randint(0, sys.maxint - 1), pid, time.time(), settings.SECRET_KEY)).hexdigest() try: self.get(session_key=session_key) except self.model.DoesNotExist: diff --git a/django/contrib/sites/models.py b/django/contrib/sites/models.py index 75fba4e6dd..d6c76d9f21 100644 --- a/django/contrib/sites/models.py +++ b/django/contrib/sites/models.py @@ -1,15 +1,32 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ +SITE_CACHE = {} + class SiteManager(models.Manager): def get_current(self): + """ + Returns the current ``Site`` based on the SITE_ID in the + project's settings. The ``Site`` object is cached the first + time it's retrieved from the database. + """ from django.conf import settings try: sid = settings.SITE_ID except AttributeError: from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured("You're using the Django \"sites framework\" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.") - return self.get(pk=sid) + try: + current_site = SITE_CACHE[sid] + except KeyError: + current_site = self.get(pk=sid) + SITE_CACHE[sid] = current_site + return current_site + + def clear_cache(self): + """Clears the ``Site`` object cache.""" + global SITE_CACHE + SITE_CACHE = {} class Site(models.Model): domain = models.CharField(_('domain name'), max_length=100) @@ -46,7 +63,10 @@ class RequestSite(object): The save() and delete() methods raise NotImplementedError. """ def __init__(self, request): - self.domain = self.name = request.META['SERVER_NAME'] + self.domain = self.name = request.get_host() + + def __unicode__(self): + return self.domain def save(self): raise NotImplementedError('RequestSite cannot be saved.') diff --git a/django/contrib/webdesign/templatetags/webdesign.py b/django/contrib/webdesign/templatetags/webdesign.py index 2370659f1d..1eb1790132 100644 --- a/django/contrib/webdesign/templatetags/webdesign.py +++ b/django/contrib/webdesign/templatetags/webdesign.py @@ -62,6 +62,6 @@ def lorem(parser, token): count = '1' count = parser.compile_filter(count) if len(bits) != 1: - raise TemplateSyntaxError("Incorrect format for %r tag" % tagname) + raise template.TemplateSyntaxError("Incorrect format for %r tag" % tagname) return LoremNode(count, method, common) lorem = register.tag(lorem) diff --git a/django/contrib/webdesign/tests.py b/django/contrib/webdesign/tests.py index eeb1956a01..da9237a43b 100644 --- a/django/contrib/webdesign/tests.py +++ b/django/contrib/webdesign/tests.py @@ -7,6 +7,10 @@ u'lorem ipsum dolor sit amet consectetur adipisicing' >>> paragraphs(1) ['Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'] +>>> from django.template import loader, Context +>>> t = loader.get_template_from_string("{% load webdesign %}{% lorem 3 w %}") +>>> t.render(Context({})) +u'lorem ipsum dolor' """ from django.contrib.webdesign.lorem_ipsum import * diff --git a/django/core/handler.py b/django/core/handler.py deleted file mode 100644 index 039406722b..0000000000 --- a/django/core/handler.py +++ /dev/null @@ -1,11 +0,0 @@ -# This module is DEPRECATED! -# -# You should no longer be pointing your mod_python configuration -# at "django.core.handler". -# -# Use "django.core.handlers.modpython" instead. - -from django.core.handlers.modpython import ModPythonHandler - -def handler(req): - return ModPythonHandler()(req) diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index ca48b301d4..13c7f4193f 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -50,6 +50,10 @@ class BaseHandler(object): def get_response(self, request): "Returns an HttpResponse object for the given HttpRequest" + response = self._real_get_response(request) + return fix_location_header(request, response) + + def _real_get_response(self, request): from django.core import exceptions, urlresolvers from django.core.mail import mail_admins from django.conf import settings @@ -112,7 +116,7 @@ class BaseHandler(object): else: # Get the exception info now, in case another exception is thrown later. exc_info = sys.exc_info() - receivers = dispatcher.send(signal=signals.got_request_exception) + receivers = dispatcher.send(signal=signals.got_request_exception, request=request) # When DEBUG is False, send an error message to the admins. subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path) try: @@ -129,3 +133,16 @@ class BaseHandler(object): "Helper function to return the traceback as a string" import traceback return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info()))) + +def fix_location_header(request, response): + """ + Ensure that we always use an absolute URI in any location header in the + response. This is required by RFC 2616, section 14.30. + + Code constructing response objects is free to insert relative paths and + this function converts them to absolute paths. + """ + if 'Location' in response and request.get_host(): + response['Location'] = request.build_absolute_uri(response['Location']) + return response + diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py index 7c4bbb3082..f98566be96 100644 --- a/django/core/handlers/modpython.py +++ b/django/core/handlers/modpython.py @@ -159,8 +159,8 @@ class ModPythonHandler(BaseHandler): # Convert our custom HttpResponse object back into the mod_python req. req.content_type = response['Content-Type'] - for key, value in response.headers.items(): - if key != 'Content-Type': + for key, value in response.items(): + if key != 'content-type': req.headers_out[str(key)] = str(value) for c in response.cookies.values(): req.headers_out.add('Set-Cookie', c.output(header='')) diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py index 99d400d1bb..6fe24f5d13 100644 --- a/django/core/handlers/wsgi.py +++ b/django/core/handlers/wsgi.py @@ -208,7 +208,7 @@ class WSGIHandler(BaseHandler): except KeyError: status_text = 'UNKNOWN STATUS CODE' status = '%s %s' % (response.status_code, status_text) - response_headers = [(str(k), str(v)) for k, v in response.headers.items()] + response_headers = [(str(k), str(v)) for k, v in response.items()] for c in response.cookies.values(): response_headers.append(('Set-Cookie', str(c.output(header='')))) start_response(status, response_headers) diff --git a/django/core/mail.py b/django/core/mail.py index ff653400f9..b90752e649 100644 --- a/django/core/mail.py +++ b/django/core/mail.py @@ -50,7 +50,11 @@ def make_msgid(idstring=None): """ timeval = time.time() utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval)) - pid = os.getpid() + try: + pid = os.getpid() + except AttributeError: + # Not getpid() in Jython, for example. + pid = 1 randint = random.randrange(100000) if idstring is None: idstring = '' diff --git a/django/core/management/base.py b/django/core/management/base.py index 83b0ed05cd..d883fe23dc 100644 --- a/django/core/management/base.py +++ b/django/core/management/base.py @@ -206,7 +206,11 @@ def copy_helper(style, app_or_project, name, directory, other_name=''): def _make_writeable(filename): "Makes sure that the file is writeable. Useful if our source is read-only." import stat + if sys.platform.startswith('java'): + # On Jython there is no os.access() + return if not os.access(filename, os.W_OK): - st = os.stat(filename) - new_permissions = stat.S_IMODE(st.st_mode) | stat.S_IWUSR - os.chmod(filename, new_permissions) + st = os.stat(filename) + new_permissions = stat.S_IMODE(st.st_mode) | stat.S_IWUSR + os.chmod(filename, new_permissions) + diff --git a/django/core/management/commands/adminindex.py b/django/core/management/commands/adminindex.py index e3dd493fd3..4f389136ca 100644 --- a/django/core/management/commands/adminindex.py +++ b/django/core/management/commands/adminindex.py @@ -1,4 +1,5 @@ from django.core.management.base import AppCommand +from django.utils.encoding import force_unicode from django.utils.text import capfirst MODULE_TEMPLATE = ''' {%% if perms.%(app)s.%(addperm)s or perms.%(app)s.%(changeperm)s %%} @@ -24,7 +25,7 @@ class Command(AppCommand): output.append(MODULE_TEMPLATE % { 'app': app_label, 'mod': model._meta.module_name, - 'name': capfirst(model._meta.verbose_name_plural), + 'name': force_unicode(capfirst(model._meta.verbose_name_plural)), 'addperm': model._meta.get_add_permission(), 'changeperm': model._meta.get_change_permission(), }) diff --git a/django/core/management/commands/shell.py b/django/core/management/commands/shell.py index 3baf75c104..96169020e5 100644 --- a/django/core/management/commands/shell.py +++ b/django/core/management/commands/shell.py @@ -1,3 +1,4 @@ +import os from django.core.management.base import NoArgsCommand from optparse import make_option @@ -43,4 +44,16 @@ class Command(NoArgsCommand): import rlcompleter readline.set_completer(rlcompleter.Completer(imported_objects).complete) readline.parse_and_bind("tab:complete") + + # We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system + # conventions and get $PYTHONSTARTUP first then import user. + if not use_plain: + pythonrc = os.environ.get("PYTHONSTARTUP") + if pythonrc and os.path.isfile(pythonrc): + try: + execfile(pythonrc) + except NameError: + pass + # This will import .pythonrc.py as a side-effect + import user code.interact(local=imported_objects) diff --git a/django/core/management/commands/syncdb.py b/django/core/management/commands/syncdb.py index c1f360a985..81938c777c 100644 --- a/django/core/management/commands/syncdb.py +++ b/django/core/management/commands/syncdb.py @@ -38,16 +38,16 @@ class Command(NoArgsCommand): cursor = connection.cursor() - # Get a list of all existing database tables, - # so we know what needs to be added. - table_list = table_list() if connection.features.uses_case_insensitive_names: - table_name_converter = str.upper + table_name_converter = lambda x: x.upper() else: table_name_converter = lambda x: x + # Get a list of all existing database tables, so we know what needs to + # be added. + tables = [table_name_converter(name) for name in table_list()] # Get a list of already installed *models* so that references work right. - seen_models = installed_models(table_list) + seen_models = installed_models(tables) created_models = set() pending_references = {} @@ -59,7 +59,7 @@ class Command(NoArgsCommand): # Create the model's database table, if it doesn't already exist. if verbosity >= 2: print "Processing %s.%s model" % (app_name, model._meta.object_name) - if table_name_converter(model._meta.db_table) in table_list: + if table_name_converter(model._meta.db_table) in tables: continue sql, references = sql_model_create(model, self.style, seen_models) seen_models.add(model) @@ -71,7 +71,7 @@ class Command(NoArgsCommand): print "Creating table %s" % model._meta.db_table for statement in sql: cursor.execute(statement) - table_list.append(table_name_converter(model._meta.db_table)) + tables.append(table_name_converter(model._meta.db_table)) # Create the m2m tables. This must be done after all tables have been created # to ensure that all referred tables will exist. diff --git a/django/core/management/commands/testserver.py b/django/core/management/commands/testserver.py index 50a10a12bc..9b169d3d9b 100644 --- a/django/core/management/commands/testserver.py +++ b/django/core/management/commands/testserver.py @@ -7,6 +7,9 @@ class Command(BaseCommand): make_option('--verbosity', action='store', dest='verbosity', default='1', type='choice', choices=['0', '1', '2'], help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'), + make_option('--addrport', action='store', dest='addrport', + type='string', default='', + help='port number or ipaddr:port to run the server on'), ) help = 'Runs a development server with data from the given fixture(s).' args = '[fixture ...]' @@ -19,6 +22,7 @@ class Command(BaseCommand): from django.test.utils import create_test_db verbosity = int(options.get('verbosity', 1)) + addrport = options.get('addrport') # Create a test database. db_name = create_test_db(verbosity=verbosity) @@ -30,4 +34,4 @@ class Command(BaseCommand): # a strange error -- it causes this handle() method to be called # multiple times. shutdown_message = '\nServer stopped.\nNote that the test database, %r, has not been deleted. You can explore it on your own.' % db_name - call_command('runserver', shutdown_message=shutdown_message, use_reloader=False) + call_command('runserver', addrport=addrport, shutdown_message=shutdown_message, use_reloader=False) diff --git a/django/core/management/sql.py b/django/core/management/sql.py index 8f7f6a023a..d7a46f0cd6 100644 --- a/django/core/management/sql.py +++ b/django/core/management/sql.py @@ -130,7 +130,7 @@ def sql_delete(app, style): else: table_names = [] if connection.features.uses_case_insensitive_names: - table_name_converter = str.upper + table_name_converter = lambda x: x.upper() else: table_name_converter = lambda x: x @@ -302,7 +302,8 @@ def sql_model_create(model, style, known_models=set()): if opts.has_auto_field: # Add any extra SQL needed to support auto-incrementing primary keys. - autoinc_sql = connection.ops.autoinc_sql(opts.db_table) + auto_column = opts.auto_field.db_column or opts.auto_field.name + autoinc_sql = connection.ops.autoinc_sql(opts.db_table, auto_column) if autoinc_sql: for stmt in autoinc_sql: final_output.append(stmt) @@ -385,7 +386,7 @@ def many_to_many_sql_for_model(model, style): final_output.append('\n'.join(table_output)) # Add any extra SQL needed to support auto-incrementing PKs - autoinc_sql = connection.ops.autoinc_sql(f.m2m_db_table()) + autoinc_sql = connection.ops.autoinc_sql(f.m2m_db_table(), 'id') if autoinc_sql: for stmt in autoinc_sql: final_output.append(stmt) diff --git a/django/core/management/validation.py b/django/core/management/validation.py index fbe4982a39..abf8d2fbd5 100644 --- a/django/core/management/validation.py +++ b/django/core/management/validation.py @@ -1,5 +1,6 @@ import sys from django.core.management.color import color_style +from django.utils.itercompat import is_iterable class ModelErrorCollection: def __init__(self, outfile=sys.stdout): @@ -49,7 +50,7 @@ def get_validation_errors(outfile, app=None): except ImportError: e.add(opts, '"%s": To use ImageFields, you need to install the Python Imaging Library. Get it at http://www.pythonware.com/products/pil/ .' % f.name) if f.choices: - if not hasattr(f.choices, '__iter__'): + if isinstance(f.choices, basestring) or not is_iterable(f.choices): e.add(opts, '"%s": "choices" should be iterable (e.g., a tuple or list).' % f.name) else: for c in f.choices: diff --git a/django/core/paginator.py b/django/core/paginator.py index 380808a3dd..b50ca826c4 100644 --- a/django/core/paginator.py +++ b/django/core/paginator.py @@ -20,6 +20,7 @@ class ObjectPaginator(object): self.num_per_page = num_per_page self.orphans = orphans self._hits = self._pages = None + self._page_range = None def validate_page_number(self, page_number): try: @@ -83,6 +84,16 @@ class ObjectPaginator(object): hits = 0 self._pages = hits // self.num_per_page + 1 return self._pages + + def _get_page_range(self): + """ + Returns a 1-based range of pages for iterating through within + a template for loop. + """ + if self._page_range is None: + self._page_range = range(1, self._pages + 1) + return self._page_range hits = property(_get_hits) pages = property(_get_pages) + page_range = property(_get_page_range) diff --git a/django/core/serializers/__init__.py b/django/core/serializers/__init__.py index 049edf7521..1e24e2bd22 100644 --- a/django/core/serializers/__init__.py +++ b/django/core/serializers/__init__.py @@ -3,9 +3,9 @@ Interfaces for serializing Django objects. Usage:: - >>> from django.core import serializers - >>> json = serializers.serialize("json", some_query_set) - >>> objects = list(serializers.deserialize("json", json)) + from django.core import serializers + json = serializers.serialize("json", some_query_set) + objects = list(serializers.deserialize("json", json)) To add your own serializers, use the SERIALIZATION_MODULES setting:: diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index f61a2fa4a2..6fc13d76b5 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -27,13 +27,13 @@ class Serializer(base.Serializer): def end_object(self, obj): self.objects.append({ "model" : smart_unicode(obj._meta), - "pk" : smart_unicode(obj._get_pk_val()), + "pk" : smart_unicode(obj._get_pk_val(), strings_only=True), "fields" : self._current }) self._current = None def handle_field(self, obj, field): - self._current[field.name] = getattr(obj, field.name) + self._current[field.name] = smart_unicode(getattr(obj, field.name), strings_only=True) def handle_fk_field(self, obj, field): related = getattr(obj, field.name) @@ -44,10 +44,11 @@ class Serializer(base.Serializer): else: # Related to remote object via other field related = getattr(related, field.rel.field_name) - self._current[field.name] = related + self._current[field.name] = smart_unicode(related, strings_only=True) def handle_m2m_field(self, obj, field): - self._current[field.name] = [related._get_pk_val() for related in getattr(obj, field.name).iterator()] + self._current[field.name] = [smart_unicode(related._get_pk_val(), strings_only=True) + for related in getattr(obj, field.name).iterator()] def getvalue(self): return self.objects diff --git a/django/core/validators.py b/django/core/validators.py index bdcf39e3aa..874edaefdd 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -181,8 +181,15 @@ def isValidImage(field_data, all_data): except TypeError: raise ValidationError, _("No file was submitted. Check the encoding type on the form.") try: - Image.open(StringIO(content)) - except IOError: # Python Imaging Library doesn't recognize it as an image + # load() is the only method that can spot a truncated JPEG, + # but it cannot be called sanely after verify() + trial_image = Image.open(StringIO(content)) + trial_image.load() + # verify() is the only method that can spot a corrupt PNG, + # but it must be called immediately after the constructor + trial_image = Image.open(StringIO(content)) + trial_image.verify() + except Exception: # Python Imaging Library doesn't recognize it as an image raise ValidationError, _("Upload a valid image. The file you uploaded was either not an image or a corrupted image.") def isValidImageURL(field_data, all_data): @@ -398,12 +405,17 @@ class NumberIsInRange(object): class IsAPowerOf(object): """ - >>> v = IsAPowerOf(2) - >>> v(4, None) - >>> v(8, None) - >>> v(16, None) - >>> v(17, None) - django.core.validators.ValidationError: ['This value must be a power of 2.'] + Usage: If you create an instance of the IsPowerOf validator: + v = IsAPowerOf(2) + + The following calls will succeed: + v(4, None) + v(8, None) + v(16, None) + + But this call: + v(17, None) + will raise "django.core.validators.ValidationError: ['This value must be a power of 2.']" """ def __init__(self, power_of): self.power_of = power_of diff --git a/django/db/__init__.py b/django/db/__init__.py index 33223d200a..d4ea1403bd 100644 --- a/django/db/__init__.py +++ b/django/db/__init__.py @@ -1,6 +1,9 @@ +import os from django.conf import settings from django.core import signals +from django.core.exceptions import ImproperlyConfigured from django.dispatch import dispatcher +from django.utils.functional import curry __all__ = ('backend', 'connection', 'DatabaseError', 'IntegrityError') @@ -8,25 +11,43 @@ if not settings.DATABASE_ENGINE: settings.DATABASE_ENGINE = 'dummy' try: - backend = __import__('django.db.backends.%s.base' % settings.DATABASE_ENGINE, {}, {}, ['']) + # Most of the time, the database backend will be one of the official + # backends that ships with Django, so look there first. + _import_path = 'django.db.backends.' + backend = __import__('%s%s.base' % (_import_path, settings.DATABASE_ENGINE), {}, {}, ['']) except ImportError, e: - # The database backend wasn't found. Display a helpful error message - # listing all possible database backends. - from django.core.exceptions import ImproperlyConfigured - import os - backend_dir = os.path.join(__path__[0], 'backends') - available_backends = [f for f in os.listdir(backend_dir) if not f.startswith('_') and not f.startswith('.') and not f.endswith('.py') and not f.endswith('.pyc')] - available_backends.sort() - if settings.DATABASE_ENGINE not in available_backends: - raise ImproperlyConfigured, "%r isn't an available database backend. Available options are: %s" % \ - (settings.DATABASE_ENGINE, ", ".join(map(repr, available_backends))) - else: - raise # If there's some other error, this must be an error in Django itself. + # If the import failed, we might be looking for a database backend + # distributed external to Django. So we'll try that next. + try: + _import_path = '' + backend = __import__('%s.base' % settings.DATABASE_ENGINE, {}, {}, ['']) + except ImportError, e_user: + # The database backend wasn't found. Display a helpful error message + # listing all possible (built-in) database backends. + backend_dir = os.path.join(__path__[0], 'backends') + available_backends = [f for f in os.listdir(backend_dir) if not f.startswith('_') and not f.startswith('.') and not f.endswith('.py') and not f.endswith('.pyc')] + available_backends.sort() + if settings.DATABASE_ENGINE not in available_backends: + raise ImproperlyConfigured, "%r isn't an available database backend. Available options are: %s" % \ + (settings.DATABASE_ENGINE, ", ".join(map(repr, available_backends))) + else: + raise # If there's some other error, this must be an error in Django itself. -get_introspection_module = lambda: __import__('django.db.backends.%s.introspection' % settings.DATABASE_ENGINE, {}, {}, ['']) -get_creation_module = lambda: __import__('django.db.backends.%s.creation' % settings.DATABASE_ENGINE, {}, {}, ['']) -runshell = lambda: __import__('django.db.backends.%s.client' % settings.DATABASE_ENGINE, {}, {}, ['']).runshell() +def _import_database_module(import_path='', module_name=''): + """Lazyily import a database module when requested.""" + return __import__('%s%s.%s' % (_import_path, settings.DATABASE_ENGINE, module_name), {}, {}, ['']) +# We don't want to import the introspect/creation modules unless +# someone asks for 'em, so lazily load them on demmand. +get_introspection_module = curry(_import_database_module, _import_path, 'introspection') +get_creation_module = curry(_import_database_module, _import_path, 'creation') + +# We want runshell() to work the same way, but we have to treat it a +# little differently (since it just runs instead of returning a module like +# the above) and wrap the lazily-loaded runshell() method. +runshell = lambda: _import_database_module(_import_path, "client").runshell() + +# Convenient aliases for backend bits. connection = backend.DatabaseWrapper(**settings.DATABASE_OPTIONS) DatabaseError = backend.DatabaseError IntegrityError = backend.IntegrityError diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index f3c6f59258..1b6ba07f24 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -56,7 +56,7 @@ class BaseDatabaseOperations(object): a backend performs ordering or calculates the ID of a recently-inserted row. """ - def autoinc_sql(self, table): + def autoinc_sql(self, table, column): """ Returns any SQL needed to support auto-incrementing primary keys, or None if no SQL is necessary. diff --git a/django/db/backends/creation.py b/django/db/backends/creation.py new file mode 100644 index 0000000000..4071cef6aa --- /dev/null +++ b/django/db/backends/creation.py @@ -0,0 +1,7 @@ +class BaseCreation(object): + """ + This class encapsulates all backend-specific differences that pertain to + database *creation*, such as the column types to use for particular Django + Fields. + """ + pass diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index f913b88709..f729629751 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -24,6 +24,12 @@ from MySQLdb.constants import FIELD_TYPE import types import re +# Raise exceptions for database warnings if DEBUG is on +from django.conf import settings +if settings.DEBUG: + from warnings import filterwarnings + filterwarnings("error", category=Database.Warning) + DatabaseError = Database.DatabaseError IntegrityError = Database.IntegrityError @@ -153,7 +159,6 @@ class DatabaseWrapper(BaseDatabaseWrapper): return False def _cursor(self, settings): - from warnings import filterwarnings if not self._valid_connection(): kwargs = { 'conv': django_conversions, @@ -175,8 +180,6 @@ class DatabaseWrapper(BaseDatabaseWrapper): kwargs.update(self.options) self.connection = Database.connect(**kwargs) cursor = self.connection.cursor() - if settings.DEBUG: - filterwarnings("error", category=Database.Warning) return cursor def _rollback(self): diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 23ce30f37e..496fc26306 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -31,20 +31,23 @@ class DatabaseFeatures(BaseDatabaseFeatures): uses_custom_queryset = True class DatabaseOperations(BaseDatabaseOperations): - def autoinc_sql(self, table): + def autoinc_sql(self, table, column): # To simulate auto-incrementing primary keys in Oracle, we have to # create a sequence and a trigger. sq_name = get_sequence_name(table) tr_name = get_trigger_name(table) + tbl_name = self.quote_name(table) + col_name = self.quote_name(column) sequence_sql = 'CREATE SEQUENCE %s;' % sq_name trigger_sql = """ - CREATE OR REPLACE TRIGGER %s - BEFORE INSERT ON %s + CREATE OR REPLACE TRIGGER %(tr_name)s + BEFORE INSERT ON %(tbl_name)s FOR EACH ROW - WHEN (new.id IS NULL) + WHEN (new.%(col_name)s IS NULL) BEGIN - SELECT %s.nextval INTO :new.id FROM dual; - END;/""" % (tr_name, self.quote_name(table), sq_name) + SELECT %(sq_name)s.nextval + INTO :new.%(col_name)s FROM dual; + END;/""" % locals() return sequence_sql, trigger_sql def date_extract_sql(self, lookup_type, field_name): @@ -287,7 +290,7 @@ class DatabaseOperations(BaseDatabaseOperations): # string instead of null, but only if the field accepts the # empty string. if value is None and isinstance(field, Field) and field.empty_strings_allowed: - value = '' + value = u'' # Convert 1 or 0 to True or False elif value in (1, 0) and isinstance(field, (BooleanField, NullBooleanField)): value = bool(value) @@ -351,7 +354,10 @@ class DatabaseOperations(BaseDatabaseOperations): for sequence_info in sequences: table_name = sequence_info['table'] seq_name = get_sequence_name(table_name) - query = _get_sequence_reset_sql() % {'sequence': seq_name, 'table': self.quote_name(table_name)} + column_name = self.quote_name(sequence_info['column'] or 'id') + query = _get_sequence_reset_sql() % {'sequence': seq_name, + 'table': self.quote_name(table_name), + 'column': column_name} sql.append(query) return sql else: @@ -365,13 +371,16 @@ class DatabaseOperations(BaseDatabaseOperations): for f in model._meta.fields: if isinstance(f, models.AutoField): sequence_name = get_sequence_name(model._meta.db_table) - output.append(query % {'sequence':sequence_name, - 'table':model._meta.db_table}) + column_name = self.quote_name(f.db_column or f.name) + output.append(query % {'sequence': sequence_name, + 'table': model._meta.db_table, + 'column': column_name}) break # Only one AutoField is allowed per model, so don't bother continuing. for f in model._meta.many_to_many: sequence_name = get_sequence_name(f.m2m_db_table()) - output.append(query % {'sequence':sequence_name, - 'table':f.m2m_db_table()}) + output.append(query % {'sequence': sequence_name, + 'table': f.m2m_db_table(), + 'column': self.quote_name('id')}) return output def start_transaction_sql(self): @@ -397,6 +406,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): 'istartswith': "LIKE UPPER(%s) ESCAPE '\\'", 'iendswith': "LIKE UPPER(%s) ESCAPE '\\'", } + oracle_version = None def _valid_connection(self): return self.connection is not None @@ -411,6 +421,10 @@ class DatabaseWrapper(BaseDatabaseWrapper): else: conn_string = "%s/%s@%s" % (settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME) self.connection = Database.connect(conn_string, **self.options) + try: + self.oracle_version = int(self.connection.version.split('.')[0]) + except ValueError: + pass cursor = FormatStylePlaceholderCursor(self.connection) # Default arraysize of 1 is highly sub-optimal. cursor.arraysize = 100 @@ -430,21 +444,6 @@ class FormatStylePlaceholderCursor(Database.Cursor): """ charset = 'utf-8' - def _rewrite_args(self, query, params=None): - if params is None: - params = [] - else: - params = self._format_params(params) - args = [(':arg%d' % i) for i in range(len(params))] - query = smart_str(query, self.charset) % tuple(args) - # cx_Oracle wants no trailing ';' for SQL statements. For PL/SQL, it - # it does want a trailing ';' but not a trailing '/'. However, these - # characters must be included in the original query in case the query - # is being passed to SQL*Plus. - if query.endswith(';') or query.endswith('/'): - query = query[:-1] - return query, params - def _format_params(self, params): if isinstance(params, dict): result = {} @@ -456,12 +455,35 @@ class FormatStylePlaceholderCursor(Database.Cursor): return tuple([smart_str(p, self.charset, True) for p in params]) def execute(self, query, params=None): - query, params = self._rewrite_args(query, params) + if params is None: + params = [] + else: + params = self._format_params(params) + args = [(':arg%d' % i) for i in range(len(params))] + # cx_Oracle wants no trailing ';' for SQL statements. For PL/SQL, it + # it does want a trailing ';' but not a trailing '/'. However, these + # characters must be included in the original query in case the query + # is being passed to SQL*Plus. + if query.endswith(';') or query.endswith('/'): + query = query[:-1] + query = smart_str(query, self.charset) % tuple(args) return Database.Cursor.execute(self, query, params) def executemany(self, query, params=None): - query, params = self._rewrite_args(query, params) - return Database.Cursor.executemany(self, query, params) + try: + args = [(':arg%d' % i) for i in range(len(params[0]))] + except (IndexError, TypeError): + # No params given, nothing to do + return None + # cx_Oracle wants no trailing ';' for SQL statements. For PL/SQL, it + # it does want a trailing ';' but not a trailing '/'. However, these + # characters must be included in the original query in case the query + # is being passed to SQL*Plus. + if query.endswith(';') or query.endswith('/'): + query = query[:-1] + query = smart_str(query, self.charset) % tuple(args) + new_param_list = [self._format_params(i) for i in params] + return Database.Cursor.executemany(self, query, new_param_list) def fetchone(self): return to_unicode(Database.Cursor.fetchone(self)) @@ -491,7 +513,7 @@ def _get_sequence_reset_sql(): cval integer; BEGIN LOCK TABLE %(table)s IN SHARE MODE; - SELECT NVL(MAX(id), 0) INTO startvalue FROM %(table)s; + SELECT NVL(MAX(%(column)s), 0) INTO startvalue FROM %(table)s; SELECT %(sequence)s.nextval INTO cval FROM dual; cval := startvalue - cval; IF cval != 0 THEN diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index a482a240cf..b4b445cd16 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -133,8 +133,12 @@ class SQLiteCursorWrapper(Database.Cursor): return Database.Cursor.execute(self, query, params) def executemany(self, query, param_list): - query = self.convert_query(query, len(param_list[0])) - return Database.Cursor.executemany(self, query, param_list) + try: + query = self.convert_query(query, len(param_list[0])) + return Database.Cursor.executemany(self, query, param_list) + except (IndexError,TypeError): + # No parameter list provided + return None def convert_query(self, query, num_params): return query % tuple("?" * num_params) diff --git a/django/db/models/base.py b/django/db/models/base.py index 832aa9950a..e56c82266b 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -12,7 +12,7 @@ from django.db.models.loading import register_models, get_model from django.dispatch import dispatcher from django.utils.datastructures import SortedDict from django.utils.functional import curry -from django.utils.encoding import smart_str, force_unicode +from django.utils.encoding import smart_str, force_unicode, smart_unicode from django.conf import settings from itertools import izip import types @@ -210,7 +210,7 @@ class Model(object): pk_val = self._get_pk_val() # Note: the comparison with '' is required for compatibility with # oldforms-style model creation. - pk_set = pk_val is not None and pk_val != u'' + pk_set = pk_val is not None and smart_unicode(pk_val) != u'' record_exists = True if pk_set: # Determine whether a record with the primary key already exists. @@ -238,10 +238,13 @@ class Model(object): placeholders = ['%s'] * len(field_names) if self._meta.order_with_respect_to: field_names.append(qn('_order')) - # TODO: This assumes the database supports subqueries. - placeholders.append('(SELECT COUNT(*) FROM %s WHERE %s = %%s)' % \ - (qn(self._meta.db_table), qn(self._meta.order_with_respect_to.column))) - db_values.append(getattr(self, self._meta.order_with_respect_to.attname)) + placeholders.append('%s') + subsel = 'SELECT COUNT(*) FROM %s WHERE %s = %%s' % ( + qn(self._meta.db_table), + qn(self._meta.order_with_respect_to.column)) + cursor.execute(subsel, (getattr(self, self._meta.order_with_respect_to.attname),)) + db_values.append(cursor.fetchone()[0]) + record_exists = False if db_values: cursor.execute("INSERT INTO %s (%s) VALUES (%s)" % \ (qn(self._meta.db_table), ','.join(field_names), @@ -256,7 +259,8 @@ class Model(object): transaction.commit_unless_managed() # Run any post-save hooks. - dispatcher.send(signal=signals.post_save, sender=self.__class__, instance=self) + dispatcher.send(signal=signals.post_save, sender=self.__class__, + instance=self, created=(not record_exists)) save.alters_data = True diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 9cff51b7a8..c14f8c3fe3 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -431,6 +431,7 @@ class AutoField(Field): assert not cls._meta.has_auto_field, "A model can't have more than one AutoField." super(AutoField, self).contribute_to_class(cls, name) cls._meta.has_auto_field = True + cls._meta.auto_field = self def formfield(self, **kwargs): return None @@ -536,7 +537,12 @@ class DateField(Field): def get_db_prep_save(self, value): # Casts dates into string format for entry into database. if value is not None: - value = value.strftime('%Y-%m-%d') + try: + value = value.strftime('%Y-%m-%d') + except AttributeError: + # If value is already a string it won't have a strftime method, + # so we'll just let it pass through. + pass return Field.get_db_prep_save(self, value) def get_manipulator_field_objs(self): @@ -678,7 +684,8 @@ class DecimalField(Field): class EmailField(CharField): def __init__(self, *args, **kwargs): - kwargs['max_length'] = 75 + if 'max_length' not in kwargs: + kwargs['max_length'] = 75 CharField.__init__(self, *args, **kwargs) def get_internal_type(self): @@ -846,6 +853,7 @@ class ImageField(FileField): def formfield(self, **kwargs): defaults = {'form_class': forms.ImageField} + defaults.update(kwargs) return super(ImageField, self).formfield(**defaults) class IntegerField(Field): @@ -907,11 +915,21 @@ class PhoneNumberField(IntegerField): class PositiveIntegerField(IntegerField): def get_manipulator_field_objs(self): return [oldforms.PositiveIntegerField] + + def formfield(self, **kwargs): + defaults = {'min_value': 0} + defaults.update(kwargs) + return super(PositiveIntegerField, self).formfield(**defaults) class PositiveSmallIntegerField(IntegerField): def get_manipulator_field_objs(self): return [oldforms.PositiveSmallIntegerField] + def formfield(self, **kwargs): + defaults = {'min_value': 0} + defaults.update(kwargs) + return super(PositiveSmallIntegerField, self).formfield(**defaults) + class SlugField(CharField): def __init__(self, *args, **kwargs): kwargs['max_length'] = kwargs.get('max_length', 50) diff --git a/django/db/models/manager.py b/django/db/models/manager.py index 040b86656a..7b2e916738 100644 --- a/django/db/models/manager.py +++ b/django/db/models/manager.py @@ -111,3 +111,7 @@ class ManagerDescriptor(object): if instance != None: raise AttributeError, "Manager isn't accessible via %s instances" % type.__name__ return self.manager + +class EmptyManager(Manager): + def get_query_set(self): + return self.get_empty_query_set() diff --git a/django/db/models/manipulators.py b/django/db/models/manipulators.py index 4044e9b7e3..1b2587940e 100644 --- a/django/db/models/manipulators.py +++ b/django/db/models/manipulators.py @@ -9,7 +9,6 @@ from django.utils.datastructures import DotExpandedDict from django.utils.text import capfirst from django.utils.encoding import smart_str from django.utils.translation import ugettext as _ -import types def add_manipulators(sender): cls = sender @@ -38,7 +37,7 @@ class ManipulatorDescriptor(object): bases = [self.base] if hasattr(model, 'Manipulator'): bases = [model.Manipulator] + bases - self.man = types.ClassType(self.name, tuple(bases), {}) + self.man = type(self.name, tuple(bases), {}) self.man._prepare(model) return self.man diff --git a/django/db/models/options.py b/django/db/models/options.py index 7a10829b1c..71cb216cab 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -32,7 +32,7 @@ class Options(object): self.admin = None self.meta = meta self.pk = None - self.has_auto_field = False + self.has_auto_field, self.auto_field = False, None self.one_to_one_field = None self.parents = [] @@ -51,9 +51,19 @@ class Options(object): del meta_attrs['__doc__'] for attr_name in DEFAULT_NAMES: setattr(self, attr_name, meta_attrs.pop(attr_name, getattr(self, attr_name))) + + # unique_together can be either a tuple of tuples, or a single + # tuple of two strings. Normalize it to a tuple of tuples, so that + # calling code can uniformly expect that. + ut = meta_attrs.pop('unique_together', getattr(self, 'unique_together')) + if ut and not isinstance(ut[0], (tuple, list)): + ut = (ut,) + setattr(self, 'unique_together', ut) + # verbose_name_plural is a special case because it uses a 's' # by default. setattr(self, 'verbose_name_plural', meta_attrs.pop('verbose_name_plural', string_concat(self.verbose_name, 's'))) + # Any leftover attributes must be invalid. if meta_attrs != {}: raise TypeError, "'class Meta' got invalid attribute(s): %s" % ','.join(meta_attrs.keys()) diff --git a/django/db/models/query.py b/django/db/models/query.py index a750ef5550..23d0bac6c8 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -816,6 +816,9 @@ def get_where_clause(lookup_type, table_prefix, field_name, value, db_type): return connection.ops.fulltext_search_sql(field_sql) elif lookup_type in ('regex', 'iregex'): if settings.DATABASE_ENGINE == 'oracle': + if connection.oracle_version and connection.oracle_version <= 9: + msg = "Regexes are not supported in Oracle before version 10g." + raise NotImplementedError(msg) if lookup_type == 'regex': match_option = 'c' else: diff --git a/django/http/__init__.py b/django/http/__init__.py index 7cd47481dc..9a47e70592 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -2,6 +2,7 @@ import os from Cookie import SimpleCookie from pprint import pformat from urllib import urlencode +from urlparse import urljoin from django.utils.datastructures import MultiValueDict, FileDict from django.utils.encoding import smart_str, iri_to_uri, force_unicode @@ -41,9 +42,39 @@ class HttpRequest(object): def has_key(self, key): return key in self.GET or key in self.POST + __contains__ = has_key + + def get_host(self): + "Returns the HTTP host using the environment or request headers." + # We try three options, in order of decreasing preference. + host = self.META.get('HTTP_X_FORWARDED_HOST', '') + if 'HTTP_HOST' in self.META: + host = self.META['HTTP_HOST'] + else: + # Reconstruct the host using the algorithm from PEP 333. + host = self.META['SERVER_NAME'] + server_port = self.META['SERVER_PORT'] + if server_port != (self.is_secure() and 443 or 80): + host = '%s:%s' % (host, server_port) + return host + def get_full_path(self): return '' + def build_absolute_uri(self, location=None): + """ + Builds an absolute URI from the location and the variables available in + this request. If no location is specified, the absolute URI is built on + ``request.get_full_path()``. + """ + if not location: + location = self.get_full_path() + if not ':' in location: + current_uri = '%s://%s%s' % (self.is_secure() and 'https' or 'http', + self.get_host(), self.path) + location = urljoin(current_uri, location) + return location + def is_secure(self): return os.environ.get("HTTPS") == "on" @@ -229,7 +260,7 @@ class HttpResponse(object): else: self._container = [content] self._is_string = True - self.headers = {'Content-Type': content_type} + self._headers = {'content-type': content_type} self.cookies = SimpleCookie() if status: self.status_code = status @@ -237,28 +268,32 @@ class HttpResponse(object): def __str__(self): "Full HTTP message, including headers" return '\n'.join(['%s: %s' % (key, value) - for key, value in self.headers.items()]) \ + for key, value in self._headers.items()]) \ + '\n\n' + self.content def __setitem__(self, header, value): - self.headers[header] = value + self._headers[header.lower()] = value def __delitem__(self, header): try: - del self.headers[header] + del self._headers[header.lower()] except KeyError: pass def __getitem__(self, header): - return self.headers[header] + return self._headers[header.lower()] def has_header(self, header): "Case-insensitive check for a header" - header = header.lower() - for key in self.headers.keys(): - if key.lower() == header: - return True - return False + return self._headers.has_key(header.lower()) + + __contains__ = has_header + + def items(self): + return self._headers.items() + + def get(self, header, alternate): + return self._headers.get(header, alternate) def set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=None): self.cookies[key] = value @@ -287,7 +322,7 @@ class HttpResponse(object): content = property(_get_content, _set_content) def __iter__(self): - self._iterator = self._container.__iter__() + self._iterator = iter(self._container) return self def next(self): @@ -360,12 +395,9 @@ class HttpResponseServerError(HttpResponse): def __init__(self, *args, **kwargs): HttpResponse.__init__(self, *args, **kwargs) +# A backwards compatible alias for HttpRequest.get_host. def get_host(request): - "Gets the HTTP host from the environment or request headers." - host = request.META.get('HTTP_X_FORWARDED_HOST', '') - if not host: - host = request.META.get('HTTP_HOST', '') - return host + return request.get_host() # It's neither necessary nor appropriate to use # django.utils.encoding.smart_unicode for parsing URLs and form inputs. Thus, diff --git a/django/middleware/common.py b/django/middleware/common.py index e18ec079af..57af4eb481 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -32,7 +32,7 @@ class CommonMiddleware(object): return http.HttpResponseForbidden('

                                                Forbidden

                                                ') # Check for a redirect based on settings.APPEND_SLASH and settings.PREPEND_WWW - host = http.get_host(request) + host = request.get_host() old_url = [host, request.path] new_url = old_url[:] if settings.PREPEND_WWW and old_url[0] and not old_url[0].startswith('www.'): @@ -61,7 +61,7 @@ class CommonMiddleware(object): if settings.SEND_BROKEN_LINK_EMAILS: # If the referrer was from an internal link or a non-search-engine site, # send a note to the managers. - domain = http.get_host(request) + domain = request.get_host() referer = request.META.get('HTTP_REFERER', None) is_internal = _is_internal_request(domain, referer) path = request.get_full_path() diff --git a/django/middleware/gzip.py b/django/middleware/gzip.py index 9b2a5f3d22..7fd0d82419 100644 --- a/django/middleware/gzip.py +++ b/django/middleware/gzip.py @@ -20,7 +20,7 @@ class GZipMiddleware(object): # Avoid gzipping if we've already got a content-encoding or if the # content-type is Javascript (silly IE...) - is_js = "javascript" in response.headers.get('Content-Type', '').lower() + is_js = "javascript" in response.get('Content-Type', '').lower() if response.has_header('Content-Encoding') or is_js: return response diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 658eea6fba..8fb1d4f392 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -2,6 +2,7 @@ Field classes """ +import copy import datetime import re import time @@ -100,6 +101,12 @@ class Field(object): """ return {} + def __deepcopy__(self, memo): + result = copy.copy(self) + memo[id(self)] = result + result.widget = copy.deepcopy(self.widget, memo) + return result + class CharField(Field): def __init__(self, max_length=None, min_length=None, *args, **kwargs): self.max_length, self.min_length = max_length, min_length @@ -137,7 +144,7 @@ class IntegerField(Field): if value in EMPTY_VALUES: return None try: - value = int(value) + value = int(str(value)) except (ValueError, TypeError): raise ValidationError(ugettext(u'Enter a whole number.')) if self.max_value is not None and value > self.max_value: @@ -185,7 +192,7 @@ class DecimalField(Field): super(DecimalField, self).clean(value) if not self.required and value in EMPTY_VALUES: return None - value = value.strip() + value = str(value).strip() try: value = Decimal(value) except DecimalException: @@ -335,12 +342,6 @@ class EmailField(RegexField): RegexField.__init__(self, email_re, max_length, min_length, ugettext(u'Enter a valid e-mail address.'), *args, **kwargs) -url_re = re.compile( - r'^https?://' # http:// or https:// - r'(?:[A-Z0-9-]+\.)+[A-Z]{2,6}' # domain - r'(?::\d+)?' # optional port - r'(?:/?|/\S+)$', re.IGNORECASE) - try: from django.conf import settings URL_VALIDATOR_USER_AGENT = settings.URL_VALIDATOR_USER_AGENT @@ -392,11 +393,26 @@ class ImageField(FileField): from PIL import Image from cStringIO import StringIO try: - Image.open(StringIO(f.content)) - except IOError: # Python Imaging Library doesn't recognize it as an image + # load() is the only method that can spot a truncated JPEG, + # but it cannot be called sanely after verify() + trial_image = Image.open(StringIO(f.content)) + trial_image.load() + # verify() is the only method that can spot a corrupt PNG, + # but it must be called immediately after the constructor + trial_image = Image.open(StringIO(f.content)) + trial_image.verify() + except Exception: # Python Imaging Library doesn't recognize it as an image raise ValidationError(ugettext(u"Upload a valid image. The file you uploaded was either not an image or a corrupted image.")) return f +url_re = re.compile( + r'^https?://' # http:// or https:// + r'(?:(?:[A-Z0-9-]+\.)+[A-Z]{2,6}|' #domain... + r'localhost|' #localhost... + r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip + r'(?::\d+)?' # optional port + r'(?:/?|/\S+)$', re.IGNORECASE) + class URLField(RegexField): def __init__(self, max_length=None, min_length=None, verify_exists=False, validator_user_agent=URL_VALIDATOR_USER_AGENT, *args, **kwargs): @@ -405,6 +421,9 @@ class URLField(RegexField): self.user_agent = validator_user_agent def clean(self, value): + # If no URL scheme given, assume http:// + if value and '://' not in value: + value = u'http://%s' % value value = super(URLField, self).clean(value) if value == u'': return value @@ -433,6 +452,10 @@ class BooleanField(Field): def clean(self, value): "Returns a Python boolean object." super(BooleanField, self).clean(value) + # Explicitly check for the string '0', which is what as hidden field + # will submit for False. + if value == '0': + return False return bool(value) class NullBooleanField(BooleanField): diff --git a/django/newforms/forms.py b/django/newforms/forms.py index 0e803d2613..0699e3a5c7 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -31,7 +31,7 @@ class SortedDictFromList(SortedDict): dict.__init__(self, dict(data)) def copy(self): - return SortedDictFromList([(k, copy.copy(v)) for k, v in self.items()]) + return SortedDictFromList([(k, copy.deepcopy(v)) for k, v in self.items()]) class DeclarativeFieldsMetaclass(type): """ @@ -62,13 +62,15 @@ class BaseForm(StrAndUnicode): # class is different than Form. See the comments by the Form class for more # information. Any improvements to the form API should be made to *this* # class, not to the Form class. - def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None): + def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, + initial=None, error_class=ErrorList): self.is_bound = data is not None or files is not None self.data = data or {} self.files = files or {} self.auto_id = auto_id self.prefix = prefix self.initial = initial or {} + self.error_class = error_class self._errors = None # Stores the errors after clean() has been called. # The base_fields class attribute is the *class-wide* definition of @@ -122,7 +124,7 @@ class BaseForm(StrAndUnicode): output, hidden_fields = [], [] for name, field in self.fields.items(): bf = BoundField(self, field, name) - bf_errors = ErrorList([escape(error) for error in bf.errors]) # Escape and cache in local variable. + bf_errors = self.error_class([escape(error) for error in bf.errors]) # Escape and cache in local variable. if bf.is_hidden: if bf_errors: top_errors.extend(['(Hidden field %s) %s' % (name, force_unicode(e)) for e in bf_errors]) @@ -173,7 +175,7 @@ class BaseForm(StrAndUnicode): field -- i.e., from Form.clean(). Returns an empty ErrorList if there are none. """ - return self.errors.get(NON_FIELD_ERRORS, ErrorList()) + return self.errors.get(NON_FIELD_ERRORS, self.error_class()) def is_empty(self, exceptions=None): """ @@ -249,7 +251,17 @@ class BaseForm(StrAndUnicode): media = media + field.widget.media return media media = property(_get_media) - + + def is_multipart(self): + """ + Returns True if the form needs to be multipart-encrypted, i.e. it has + FileInput. Otherwise, False. + """ + for field in self.fields.values(): + if field.widget.needs_multipart_form: + return True + return False + class Form(BaseForm): "A collection of Fields, plus their associated data." # This is a separate class from BaseForm in order to abstract the way @@ -281,7 +293,7 @@ class BoundField(StrAndUnicode): Returns an ErrorList for this field. Returns an empty ErrorList if there are none. """ - return self.form.errors.get(self.name, ErrorList()) + return self.form.errors.get(self.name, self.form.error_class()) errors = property(_errors) def as_widget(self, widget=None, attrs=None): diff --git a/django/newforms/util.py b/django/newforms/util.py index 2bafc8d9c7..e19d894397 100644 --- a/django/newforms/util.py +++ b/django/newforms/util.py @@ -1,5 +1,6 @@ from django.utils.html import escape -from django.utils.encoding import smart_unicode, StrAndUnicode +from django.utils.encoding import smart_unicode, StrAndUnicode, force_unicode +from django.utils.functional import Promise def flatatt(attrs): """ @@ -21,10 +22,10 @@ class ErrorDict(dict, StrAndUnicode): def as_ul(self): if not self: return u'' - return u'
                                                  %s
                                                ' % ''.join([u'
                                              • %s%s
                                              • ' % (k, smart_unicode(v)) for k, v in self.items()]) + return u'
                                                  %s
                                                ' % ''.join([u'
                                              • %s%s
                                              • ' % (k, force_unicode(v)) for k, v in self.items()]) def as_text(self): - return u'\n'.join([u'* %s\n%s' % (k, u'\n'.join([u' * %s' % smart_unicode(i) for i in v])) for k, v in self.items()]) + return u'\n'.join([u'* %s\n%s' % (k, u'\n'.join([u' * %s' % force_unicode(i) for i in v])) for k, v in self.items()]) class ErrorList(list, StrAndUnicode): """ @@ -35,11 +36,11 @@ class ErrorList(list, StrAndUnicode): def as_ul(self): if not self: return u'' - return u'
                                                  %s
                                                ' % ''.join([u'
                                              • %s
                                              • ' % smart_unicode(e) for e in self]) + return u'
                                                  %s
                                                ' % ''.join([u'
                                              • %s
                                              • ' % force_unicode(e) for e in self]) def as_text(self): if not self: return u'' - return u'\n'.join([u'* %s' % smart_unicode(e) for e in self]) + return u'\n'.join([u'* %s' % force_unicode(e) for e in self]) class ValidationError(Exception): def __init__(self, message): @@ -47,7 +48,7 @@ class ValidationError(Exception): if isinstance(message, list): self.messages = ErrorList([smart_unicode(msg) for msg in message]) else: - assert isinstance(message, basestring), ("%s should be a basestring" % repr(message)) + assert isinstance(message, (basestring, Promise)), ("%s should be a basestring or lazy translation" % repr(message)) message = smart_unicode(message) self.messages = ErrorList([message]) @@ -57,3 +58,4 @@ class ValidationError(Exception): # AttributeError: ValidationError instance has no attribute 'args' # See http://www.python.org/doc/current/tut/node10.html#handling return repr(self.messages) + diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 8aa375abf0..eb67385e53 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -127,6 +127,7 @@ class MediaDefiningClass(type): class Widget(object): __metaclass__ = MediaDefiningClass is_hidden = False # Determines whether this corresponds to an . + needs_multipart_form = False # Determines does this widget need multipart-encrypted form def __init__(self, attrs=None): if attrs is not None: @@ -223,6 +224,7 @@ class MultipleHiddenInput(HiddenInput): class FileInput(Input): input_type = 'file' + needs_multipart_form = True def render(self, name, value, attrs=None): return super(FileInput, self).render(name, None, attrs=attrs) diff --git a/django/shortcuts/__init__.py b/django/shortcuts/__init__.py index dfb0c28abd..611b997736 100644 --- a/django/shortcuts/__init__.py +++ b/django/shortcuts/__init__.py @@ -14,8 +14,8 @@ def render_to_response(*args, **kwargs): Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. """ - return HttpResponse(loader.render_to_string(*args, **kwargs)) -load_and_render = render_to_response # For backwards compatibility. + httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)} + return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) def _get_queryset(klass): """ diff --git a/django/template/__init__.py b/django/template/__init__.py index 6880fd5997..449e0d0c28 100644 --- a/django/template/__init__.py +++ b/django/template/__init__.py @@ -34,14 +34,8 @@ will be raised if the template doesn't have proper syntax. Sample code: ->>> import template ->>> s = ''' -... -... {% if test %} -...

                                                {{ varvalue }}

                                                -... {% endif %} -... -... ''' +>>> from django import template +>>> s = u'{% if test %}

                                                {{ varvalue }}

                                                {% endif %}' >>> t = template.Template(s) (t is now a compiled template, and its render() method can be called multiple @@ -49,15 +43,16 @@ times with multiple contexts) >>> c = template.Context({'test':True, 'varvalue': 'Hello'}) >>> t.render(c) -'\n\n\n

                                                Hello

                                                \n\n\n' +u'

                                                Hello

                                                ' >>> c = template.Context({'test':False, 'varvalue': 'Hello'}) >>> t.render(c) -'\n\n\n\n' +u'' """ import re from inspect import getargspec from django.conf import settings from django.template.context import Context, RequestContext, ContextPopException +from django.utils.itercompat import is_iterable from django.utils.functional import curry, Promise from django.utils.text import smart_split from django.utils.encoding import smart_unicode, force_unicode @@ -528,10 +523,11 @@ class FilterExpression(object): and return a list of tuples of the filter name and arguments. Sample: >>> token = 'variable|default:"Default value"|date:"Y-m-d"' - >>> p = FilterParser(token) - >>> p.filters - [('default', 'Default value'), ('date', 'Y-m-d')] - >>> p.var + >>> p = Parser('') + >>> fe = FilterExpression(token, p) + >>> len(fe.filters) + 2 + >>> fe.var 'variable' This class should never be instantiated outside of the @@ -646,7 +642,7 @@ def resolve_variable(path, context): >>> c = {'article': {'section':'News'}} >>> resolve_variable('article.section', c) - 'News' + u'News' >>> resolve_variable('article', c) {'section': 'News'} >>> class AClass: pass @@ -654,7 +650,7 @@ def resolve_variable(path, context): >>> c.article = AClass() >>> c.article.section = 'News' >>> resolve_variable('article.section', c) - 'News' + u'News' (The example assumes VARIABLE_ATTRIBUTE_SEPARATOR is '.') """ @@ -900,7 +896,7 @@ class Library(object): if not getattr(self, 'nodelist', False): from django.template.loader import get_template, select_template - if hasattr(file_name, '__iter__'): + if not isinstance(file_name, basestring) and is_iterable(file_name): t = select_template(file_name) else: t = get_template(file_name) diff --git a/django/template/context.py b/django/template/context.py index 59650b05fe..51cd88b7e9 100644 --- a/django/template/context.py +++ b/django/template/context.py @@ -49,8 +49,7 @@ class Context(object): return True return False - def __contains__(self, key): - return self.has_key(key) + __contains__ = has_key def get(self, key, otherwise=None): for d in self.dicts: diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index 22babfd6c0..1fd6d02c70 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -254,13 +254,20 @@ def escape(value): escape = stringfilter(escape) def linebreaks(value): - "Converts newlines into

                                                and
                                                s" + """ + Replaces line breaks in plain text with appropriate HTML; a single + newline becomes an HTML line break (``
                                                ``) and a new line + followed by a blank line becomes a paragraph break (``

                                                ``). + """ from django.utils.html import linebreaks return linebreaks(value) linebreaks = stringfilter(linebreaks) def linebreaksbr(value): - "Converts newlines into
                                                s" + """ + Converts all newlines in a piece of plain text to HTML line breaks + (``
                                                ``). + """ return value.replace('\n', '
                                                ') linebreaksbr = stringfilter(linebreaksbr) diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 11cd04653f..e23295f732 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -30,6 +30,7 @@ class CycleNode(Node): def render(self, context): self.counter += 1 value = self.cyclevars[self.counter % self.cyclevars_len] + value = resolve_variable(value, context) if self.variable_name: context[self.variable_name] = value return value @@ -403,7 +404,7 @@ def cycle(parser, token): the loop:: {% for o in some_list %} -