1
0
mirror of https://github.com/django/django.git synced 2025-06-06 20:19:13 +00:00

multi-auth: Merged to [2890]

git-svn-id: http://code.djangoproject.com/svn/django/branches/multi-auth@2891 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Joseph Kocherhans 2006-05-10 04:39:34 +00:00
parent 4aeb7b0210
commit b15b11f5b7
33 changed files with 3998 additions and 3653 deletions

View File

@ -8,14 +8,13 @@ msgstr ""
"Project-Id-Version: Django Czech translation\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-02-02 11:25+0100\n"
"PO-Revision-Date: 2005-12-18 18:36+0100\n"
"Last-Translator: Radek Švarz <tranlate@svarz.cz>\n"
"PO-Revision-Date: 2006-05-03 12:00+0100\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Poedit-Language: Czech\n"
"X-Poedit-Country: CZECH REPUBLIC\n"
@ -79,7 +78,8 @@ msgstr "datum/čas byl zaslán"
msgid "is public"
msgstr "je veřejné"
#: contrib/comments/models/comments.py:26 contrib/admin/views/doc.py:256
#: contrib/comments/models/comments.py:26
#: contrib/admin/views/doc.py:256
msgid "IP address"
msgstr "IP adresa"
@ -88,12 +88,8 @@ msgid "is removed"
msgstr "je odstraněno"
#: contrib/comments/models/comments.py:27
msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
msgstr ""
"Zaškrtněte tento box, pokud komentář není vhodný. Místo něj bude zobrazena "
"zpráva \"Tento komentář byl smazán\"."
msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
msgstr "Zaškrtněte tento box, pokud komentář není vhodný. Místo něj bude zobrazena zpráva \"Tento komentář byl smazán\"."
#: contrib/comments/models/comments.py:31
msgid "Comment"
@ -222,37 +218,29 @@ msgid "No voting for yourself"
msgstr "Nelze hlasovat pro sebe"
#: contrib/comments/views/comments.py:25
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr ""
"Toto hodnocení je povinné, protože jste zadal(a) alespoň jedno jiné "
"hodnocení."
msgid "This rating is required because you've entered at least one other rating."
msgstr "Toto hodnocení je povinné, protože jste zadal(a) alespoň jedno jiné hodnocení."
#: contrib/comments/views/comments.py:109
#, 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] ""
"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %"
"(count)s komentář:\n"
"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %(count)s komentář:\n"
"\n"
"%(text)s"
msgstr[1] ""
"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %"
"(count)s komentáře:\n"
"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %(count)s komentáře:\n"
"\n"
"%(text)s"
msgstr[2] ""
"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %"
"(count)s komentářů:\n"
"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %(count)s komentářů:\n"
"\n"
"%(text)s"
@ -284,11 +272,8 @@ msgstr "Někdo falšoval formulář komentáře (bezpečnostní narušení)"
#: contrib/comments/views/comments.py:204
#: contrib/comments/views/comments.py:289
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
msgstr ""
"Formulář komentáře měl neplatný parametr 'target' -- ID objektu nebylo platné"
msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
msgstr "Formulář komentáře měl neplatný parametr 'target' -- ID objektu nebylo platné"
#: contrib/comments/views/comments.py:254
#: contrib/comments/views/comments.py:318
@ -307,9 +292,8 @@ msgid "Password:"
msgstr "Heslo:"
#: contrib/comments/templates/comments/form.html:6
#, fuzzy
msgid "Forgotten your password?"
msgstr "Změnit mé heslo"
msgstr "Zapomenuté heslo?"
#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
@ -332,40 +316,36 @@ msgid "Log out"
msgstr "Odhlásit se"
#: contrib/comments/templates/comments/form.html:12
#, fuzzy
msgid "Ratings"
msgstr "hodnocení #1"
msgstr "Hodnocení"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
msgstr ""
msgstr "Povinné"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Optional"
msgstr ""
msgstr "Volitelné"
#: contrib/comments/templates/comments/form.html:23
msgid "Post a photo"
msgstr ""
msgstr "Zařadit fotografii"
#: contrib/comments/templates/comments/form.html:27
#: contrib/comments/templates/comments/freeform.html:5
#, fuzzy
msgid "Comment:"
msgstr "Komentář"
msgstr "Komentář:"
#: contrib/comments/templates/comments/form.html:32
#: contrib/comments/templates/comments/freeform.html:9
#, fuzzy
msgid "Preview comment"
msgstr "volný komentář"
msgstr "Náhled komentáře"
#: contrib/comments/templates/comments/freeform.html:4
#, fuzzy
msgid "Your name:"
msgstr "uživatelské jméno"
msgstr "Vaše jméno:"
#: contrib/admin/filterspecs.py:40
#, python-format
@ -376,7 +356,8 @@ msgstr ""
"<h3>%s:</h3>\n"
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
#: contrib/admin/filterspecs.py:70
#: contrib/admin/filterspecs.py:88
#: contrib/admin/filterspecs.py:143
msgid "All"
msgstr "Vše"
@ -445,12 +426,11 @@ msgstr "log záznamy"
msgid "All dates"
msgstr "Všechna data"
#: contrib/admin/views/decorators.py:9 parts/auth/formfields.py:33
#: contrib/admin/views/decorators.py:9
#: parts/auth/formfields.py:33
#: parts/auth/formfields.py:38
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
msgstr ""
msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
msgstr "Prosíme, vložte správné uživatelské jméno a heslo. Poznámka - u obou položek se rozlišuje velikost písmen."
#: contrib/admin/views/decorators.py:23
#: contrib/admin/templates/admin/login.html:24
@ -458,20 +438,12 @@ msgid "Log in"
msgstr "Přihlášení"
#: 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 ""
"Prosíme, znovu se přihlašte, Vaše sezení vypršelo. Nemusíte se obávat, Vaše "
"podání je uloženo."
msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
msgstr "Prosíme, znovu se přihlašte, Vaše sezení vypršelo. Nemusíte se obávat, Vaše podání je uloženo."
#: 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 ""
"Vypadá to, že Váš prohlížeč není nastaven, aby akceptoval cookies. Prosíme, "
"zapněte cookies, obnovte tuto stránku a zkuste znovu."
msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
msgstr "Vypadá to, že Váš prohlížeč není nastaven, aby akceptoval cookies. Prosíme, zapněte cookies, obnovte tuto stránku a zkuste znovu."
#: contrib/admin/views/decorators.py:82
msgid "Usernames cannot contain the '@' character."
@ -480,8 +452,7 @@ msgstr "Uživatelská jména nemohou obsahovat znak '@'."
#: contrib/admin/views/decorators.py:84
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
"Vaše e-mailová adresa není Vaše uživatelské jméno. Zkuste místo toho '%s'."
msgstr "Vaše e-mailová adresa není Vaše uživatelské jméno. Zkuste místo toho '%s'."
#: contrib/admin/views/main.py:52
msgid "Site administration"
@ -502,11 +473,13 @@ msgstr "Vyberte %s pro změnu"
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "Záznam %(name)s \"%(obj)s\" byl úspěšně přidán."
#: contrib/admin/views/main.py:415 contrib/admin/views/main.py:492
#: contrib/admin/views/main.py:415
#: contrib/admin/views/main.py:492
msgid "You may edit it again below."
msgstr "Můžete to opět upravit níže."
#: contrib/admin/views/main.py:423 contrib/admin/views/main.py:501
#: contrib/admin/views/main.py:423
#: contrib/admin/views/main.py:501
#, python-format
msgid "You may add another %s below."
msgstr "Můžete přidat další %s níže."
@ -521,7 +494,8 @@ msgstr "%s: přidat"
msgid "Added %s."
msgstr "Záznam %s byl přidán."
#: contrib/admin/views/main.py:457 contrib/admin/views/main.py:459
#: contrib/admin/views/main.py:457
#: contrib/admin/views/main.py:459
#: contrib/admin/views/main.py:461
msgid "and"
msgstr "a"
@ -547,10 +521,8 @@ msgstr "%(name)s \"%(obj)s\" byl úspěšně změněn."
#: contrib/admin/views/main.py:498
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
"The %(name)s \"%(obj)s\" byl úspěšně přidán. Můžete to opět upravit níže."
msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "The %(name)s \"%(obj)s\" byl úspěšně přidán. Můžete to opět upravit níže."
#: contrib/admin/views/main.py:536
#, python-format
@ -581,9 +553,12 @@ msgstr "Jste si jist(á)?"
msgid "Change history: %s"
msgstr "Historie změn: %s"
#: contrib/admin/views/doc.py:244 contrib/admin/views/doc.py:253
#: contrib/admin/views/doc.py:255 contrib/admin/views/doc.py:261
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:264
#: contrib/admin/views/doc.py:244
#: contrib/admin/views/doc.py:253
#: contrib/admin/views/doc.py:255
#: contrib/admin/views/doc.py:261
#: contrib/admin/views/doc.py:262
#: contrib/admin/views/doc.py:264
msgid "Integer"
msgstr "Celé číslo"
@ -612,7 +587,8 @@ msgstr "Datum (s časem)"
msgid "E-mail address"
msgstr "E-mailová adresa"
#: contrib/admin/views/doc.py:251 contrib/admin/views/doc.py:254
#: contrib/admin/views/doc.py:251
#: contrib/admin/views/doc.py:254
msgid "File path"
msgstr "Cesta k souboru"
@ -644,7 +620,8 @@ msgstr "Text"
msgid "Time"
msgstr "Čas"
#: contrib/admin/views/doc.py:267 contrib/flatpages/models/flatpages.py:6
#: contrib/admin/views/doc.py:267
#: contrib/flatpages/models/flatpages.py:6
msgid "URL"
msgstr "URL"
@ -708,7 +685,8 @@ msgstr "Historie"
msgid "Date/time"
msgstr "Datum/čas"
#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47
#: contrib/admin/templates/admin/object_history.html:19
#: models/auth.py:47
msgid "User"
msgstr "Uživatel"
@ -721,12 +699,8 @@ msgid "DATE_WITH_TIME_FULL"
msgstr "j. N 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 ""
"Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes "
"administrátorské rozhraní."
msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
msgstr "Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes administrátorské rozhraní."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
@ -749,12 +723,8 @@ msgid "Server Error <em>(500)</em>"
msgstr "Chyba serveru <em>(500)</em>"
#: 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 ""
"Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a "
"měla by být brzy odstraněna. Děkujeme za trpělivost."
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 "Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a měla by být brzy odstraněna. Děkujeme za trpělivost."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@ -805,22 +775,13 @@ msgstr "Vítejte,"
#: contrib/admin/templates/admin/delete_confirmation.html:6
#, 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 ""
"Mazání %(object_name)s '%(object)s' by vyústilo ve vymazání souvisejících "
"objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:"
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 "Mazání %(object_name)s '%(object)s' by vyústilo ve vymazání souvisejících objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:"
#: contrib/admin/templates/admin/delete_confirmation.html:13
#, 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 ""
"Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny "
"následující související položky budou smazány:"
msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
msgstr "Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny následující související položky budou smazány:"
#: contrib/admin/templates/admin/delete_confirmation.html:17
msgid "Yes, I'm sure"
@ -898,12 +859,8 @@ msgid "Password reset"
msgstr "Obnovení hesla"
#: 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 ""
"Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo "
"obnovíme a zašleme Vám e-mailem nové."
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 "Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo obnovíme a zašleme Vám e-mailem nové."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@ -927,20 +884,12 @@ msgid "Password reset successful"
msgstr "Obnovení hesla bylo úspěšné"
#: 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 ""
"Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) "
"byste ji dostat během okamžiku."
msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
msgstr "Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) byste ji dostat během okamžiku."
#: 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 ""
"Vložte svoje staré heslo a poté vložte dvakrát nové heslo. Tak můžeme "
"ověřit, že jste ho napsal(a) správně."
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 "Vložte svoje staré heslo a poté vložte dvakrát nové heslo. Tak můžeme ověřit, že jste ho napsal(a) správně."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
@ -1008,13 +957,10 @@ msgid ""
"your computer is \"internal\").</p>\n"
msgstr ""
"\n"
"<p class=\"help\">Pro nainstalování bookmarkletů, přetáhněte odkaz na Vaše "
"záložky (oblíbené),\n"
"nebo klikněte pravým tlačítkem na odkaz a přidejte ho k Vašim záložkám "
"(oblíbeným). Nyní můžete\n"
"<p class=\"help\">Pro nainstalování bookmarkletů, přetáhněte odkaz na Vaše záložky (oblíbené),\n"
"nebo klikněte pravým tlačítkem na odkaz a přidejte ho k Vašim záložkám (oblíbeným). Nyní můžete\n"
"zvolit bookmarklet z libovolné stránky. Poznámka: Některé tyto\n"
"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je "
"nastaven jako\n"
"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je nastaven jako\n"
"\"interní\" (promluvte si s Vaším administrátorem, jestli si nejste jisti,\n"
"zda je Váš počítač \"interní\").</p>\n"
@ -1023,24 +969,16 @@ msgid "Documentation for this page"
msgstr "Dokumentace pro tuto stránku"
#: 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 ""
"Z libovolné stránky otevře dokumentaci pro pohled, který vygeneroval tuto "
"stránku."
msgid "Jumps you from any page to the documentation for the view that generates that page."
msgstr "Z libovolné stránky otevře dokumentaci pro pohled, který vygeneroval tuto stránku."
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
msgstr "Ukázat id objektu"
#: contrib/admin/templates/admin_doc/bookmarklets.html:23
msgid ""
"Shows the content-type and unique ID for pages that represent a single "
"object."
msgstr ""
"Ukáže content-type a unikátní ID pro stránky, které reprezentují jeden "
"objekt."
msgid "Shows the content-type and unique ID for pages that represent a single object."
msgstr "Ukáže content-type a unikátní ID pro stránky, které reprezentují jeden objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
@ -1079,23 +1017,16 @@ msgid "redirect from"
msgstr "přesměrovat z"
#: contrib/redirects/models/redirects.py:8
msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
"Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'."
msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
msgstr "Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'."
#: contrib/redirects/models/redirects.py:9
msgid "redirect to"
msgstr "přesměrovat na"
#: contrib/redirects/models/redirects.py:10
msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na "
"'http://'."
msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
msgstr "Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na 'http://'."
#: contrib/redirects/models/redirects.py:12
msgid "redirect"
@ -1106,10 +1037,8 @@ msgid "redirects"
msgstr "přesměrování"
#: contrib/flatpages/models/flatpages.py:7
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka."
msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr "Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka."
#: contrib/flatpages/models/flatpages.py:8
msgid "title"
@ -1128,12 +1057,8 @@ msgid "template name"
msgstr "jméno šablony"
#: contrib/flatpages/models/flatpages.py:12
msgid ""
"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
"use 'flatpages/default'."
msgstr ""
"Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém "
"použije 'flatfiles/default'."
msgid "Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'."
msgstr "Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém použije 'flatfiles/default'."
#: contrib/flatpages/models/flatpages.py:13
msgid "registration required"
@ -1141,9 +1066,7 @@ msgstr "nutná registrace"
#: contrib/flatpages/models/flatpages.py:13
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto "
"stránku."
msgstr "Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto stránku."
#: contrib/flatpages/models/flatpages.py:17
msgid "flat page"
@ -1201,23 +1124,28 @@ msgstr "Leden"
msgid "February"
msgstr "Únor"
#: utils/dates.py:14 utils/dates.py:27
#: utils/dates.py:14
#: utils/dates.py:27
msgid "March"
msgstr "Březen"
#: utils/dates.py:14 utils/dates.py:27
#: utils/dates.py:14
#: utils/dates.py:27
msgid "April"
msgstr "Duben"
#: utils/dates.py:14 utils/dates.py:27
#: utils/dates.py:14
#: utils/dates.py:27
msgid "May"
msgstr "Květen"
#: utils/dates.py:14 utils/dates.py:27
#: utils/dates.py:14
#: utils/dates.py:27
msgid "June"
msgstr "Červen"
#: utils/dates.py:15 utils/dates.py:27
#: utils/dates.py:15
#: utils/dates.py:27
msgid "July"
msgstr "Červenec"
@ -1324,7 +1252,10 @@ msgstr "weby"
msgid "label"
msgstr "nadpis"
#: models/core.py:29 models/core.py:40 models/auth.py:6 models/auth.py:19
#: models/core.py:29
#: models/core.py:40
#: models/auth.py:6
#: models/auth.py:19
msgid "name"
msgstr "jméno"
@ -1376,7 +1307,8 @@ msgstr "codename"
msgid "Permission"
msgstr "Oprávnění"
#: models/auth.py:11 models/auth.py:58
#: models/auth.py:11
#: models/auth.py:58
msgid "Permissions"
msgstr "Oprávnění"
@ -1384,7 +1316,8 @@ msgstr "Oprávnění"
msgid "Group"
msgstr "Skupina"
#: models/auth.py:23 models/auth.py:60
#: models/auth.py:23
#: models/auth.py:60
msgid "Groups"
msgstr "Skupiny"
@ -1437,12 +1370,8 @@ msgid "date joined"
msgstr "datum zaregistrování"
#: models/auth.py:44
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
"Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro "
"každou skupinu, ve které je."
msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
msgstr "Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro každou skupinu, ve které je."
#: models/auth.py:48
msgid "Users"
@ -1506,11 +1435,11 @@ msgstr "Italsky"
#: conf/global_settings.py:48
msgid "Japanese"
msgstr ""
msgstr "Japonština"
#: conf/global_settings.py:49
msgid "Dutch"
msgstr ""
msgstr "Holandština"
#: conf/global_settings.py:50
msgid "Norwegian"
@ -1546,9 +1475,11 @@ msgstr "Jednoduchá čínština"
#: conf/global_settings.py:58
msgid "Traditional Chinese"
msgstr ""
msgstr "Tradiční čínština"
#: core/formfields.py:59 core/meta/fields.py:285 core/meta/fields.py:488
#: core/formfields.py:59
#: core/meta/fields.py:285
#: core/meta/fields.py:488
#: core/meta/fields.py:499
msgid "This field is required."
msgstr "Toto pole je povinné."
@ -1565,7 +1496,9 @@ msgstr[2] "Ujistěte se, že Váš text má méně než %s znaků."
msgid "Line breaks are not allowed here."
msgstr "Zalomení řádky zde nenjsou povolená."
#: core/formfields.py:438 core/formfields.py:509 core/formfields.py:547
#: core/formfields.py:438
#: core/formfields.py:509
#: core/formfields.py:547
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Vyberte platnou volbu. '%(data)s' není mezi %(choices)s."
@ -1592,8 +1525,7 @@ msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka."
#: core/validators.py:66
msgid "This value must contain only letters, numbers, underscores and slashes."
msgstr ""
"Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka."
msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka."
#: core/validators.py:74
msgid "Uppercase letters are not allowed here."
@ -1652,12 +1584,8 @@ msgid "Enter a valid e-mail address."
msgstr "Vložte platnou e-mailovou adresu."
#: core/validators.py:150
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
"Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl "
"obrázek, nebo byl porušen."
msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
msgstr "Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl obrázek, nebo byl porušen."
#: core/validators.py:157
#, python-format
@ -1697,7 +1625,8 @@ msgstr "Špatně formované XML: %s"
msgid "Invalid URL: %s"
msgstr "Neplatné URL: %s"
#: core/validators.py:208 core/validators.py:210
#: core/validators.py:208
#: core/validators.py:210
#, python-format
msgid "The URL %s is a broken link."
msgstr "Odkaz na URL %s je rozbitý."
@ -1723,7 +1652,8 @@ msgstr "Toto pole se musí shodovat s polem '%s'."
msgid "Please enter something for at least one field."
msgstr "Prosíme, vložte něco alespoň pro jedno pole."
#: core/validators.py:266 core/validators.py:277
#: core/validators.py:266
#: core/validators.py:277
msgid "Please enter both fields or leave them both empty."
msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná."
@ -1753,8 +1683,7 @@ msgstr "Prosíme, vložte platné číslo."
#: core/validators.py:351
#, 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."
msgid_plural "Please enter a valid decimal number with at most %s total digits."
msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem."
msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
@ -1762,16 +1691,10 @@ msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
#: core/validators.py:354
#, 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] ""
"Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem."
msgstr[1] ""
"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou "
"celkem."
msgstr[2] ""
"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou "
"celkem."
msgid_plural "Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem."
msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem."
msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem."
#: core/validators.py:364
#, python-format
@ -1798,63 +1721,38 @@ msgstr "Nemohl jsem získat nic z %s."
#: core/validators.py:431
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "URL %(url)s vrátilo neplatnou hlavičku Content-Type '%(contenttype)s'."
#: core/validators.py:464
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
"Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s "
"\"%(start)s\".)"
msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
msgstr "Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s \"%(start)s\".)"
#: core/validators.py:468
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. "
"(Řádka začíná s \"%(start)s\".)"
msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
msgstr "Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. (Řádka začíná s \"%(start)s\".)"
#: core/validators.py:473
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%"
"(start)s\".)"
msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
msgstr "\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%(start)s\".)"
#: core/validators.py:478
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
"\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%"
"(start)s\".)"
msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
msgstr "\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%(start)s\".)"
#: core/validators.py:482
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. "
"(Řádka začíná s \"%(start)s\".)"
msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
msgstr "Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. (Řádka začíná s \"%(start)s\".)"
#: core/validators.py:487
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
"Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s "
"\"%(start)s\".)"
msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
msgstr "Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s \"%(start)s\".)"
#: core/meta/__init__.py:1944
#, python-format
@ -1876,11 +1774,8 @@ msgid " Separate multiple IDs with commas."
msgstr "Oddělte více identifikátorů čárkami."
#: core/meta/fields.py:132
msgid ""
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné "
"položky."
msgid " Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr "Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné položky."
#: core/meta/fields.py:508
msgid "Enter a valid filename."
@ -1889,27 +1784,21 @@ msgstr "Vložte platný název souboru."
#: core/meta/fields.py:782
#, 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."
msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
msgstr[0] "Prosíme, vložte platná %(self)s ID. Hodnota %(value)r není platná."
msgstr[1] ""
"Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné."
msgstr[2] ""
"Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné."
msgstr[1] "Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné."
msgstr[2] "Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné."
#: core/template/defaultfilters.py:379
msgid "yes,no,maybe"
msgstr "ano, ne, možná"
#: parts/auth/formfields.py:27
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
msgstr ""
msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
msgstr "Váš prohlížeč pravděpodobně nemá zapnuté cookies. Cookies jsou potřeba pro zalogování."
#~ msgid "Error in Template"
#~ msgstr "Chyba v šabloně"
#~ msgid ""
#~ "\n"
#~ "In template %(name)s, error at line %(line)s:\n"
@ -1920,3 +1809,4 @@ msgstr ""
#, fuzzy
#~ msgid "count"
#~ msgstr "počet"

View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: Django JavaScript Czech translation\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-17 22:26+0100\n"
"PO-Revision-Date: 2005-12-21 14:03+0100\n"
"Last-Translator: Radek Švarz <tranlate@svarz.cz>\n"
"PO-Revision-Date: 2006-05-03 12:04+0100\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@ -56,7 +56,7 @@ msgstr "Leden Únor Březen Duben Květen Červen Červenec Srpen Září Říje
#: contrib/admin/media/js/dateparse.js:27
#, fuzzy
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota Neděle"
msgstr "Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota"
#: contrib/admin/media/js/calendar.js:25
#, fuzzy

View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-02-02 11:25+0100\n"
"PO-Revision-Date: 2005-10-18 12:27+0200\n"
"Last-Translator: Mikaël Barbero <mikael.barbero nospam at nospam free.fr>\n"
"PO-Revision-Date: 2006-05-08 15:12+0200\n"
"Last-Translator: Gaël Chardon <gael.dev_at_nospam_4now.net>\n"
"Language-Team: français <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
@ -127,7 +127,7 @@ msgstr ""
#: contrib/comments/models/comments.py:163
#, fuzzy
msgid "person's name"
msgstr "prénom"
msgstr "nom"
#: contrib/comments/models/comments.py:166
#, fuzzy
@ -319,7 +319,7 @@ msgstr "Mot de passe"
#: contrib/comments/templates/comments/form.html:6
#, fuzzy
msgid "Forgotten your password?"
msgstr "Modifier mon mot de passe"
msgstr "Mot de passe oublié?"
#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
@ -339,7 +339,7 @@ msgstr "Modifier mon mot de passe"
#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
msgid "Log out"
msgstr "Déconnection"
msgstr "Déconnexion"
#: contrib/comments/templates/comments/form.html:12
#, fuzzy
@ -370,7 +370,7 @@ msgstr "Commentaire"
#: contrib/comments/templates/comments/freeform.html:9
#, fuzzy
msgid "Preview comment"
msgstr "Commentaire libre"
msgstr "Prévisualisation du commentaire"
#: contrib/comments/templates/comments/freeform.html:4
#, fuzzy
@ -463,7 +463,7 @@ msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
msgstr ""
"Saisissez s'il vous plaut un nom d'utilisateur et un mot de passe valide. "
"Saisissez s'il vous plaît un nom d'utilisateur et un mot de passe valide. "
"Remarquez que chacun de ces champs est sensible à la casse (différenciation "
"des majuscules/minuscules)."
@ -656,7 +656,7 @@ msgstr "Num
#: contrib/admin/views/doc.py:263
msgid "String (up to 50)"
msgstr "Chaîne de caractère (jusqu'à 50)"
msgstr "Chaîne de caractères (jusqu'à 50)"
#: contrib/admin/views/doc.py:265
msgid "Text"
@ -1063,7 +1063,7 @@ msgstr ""
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
msgstr "Editer cette objet (fenêtre courante)"
msgstr "Editer cet objet (fenêtre courante)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
@ -1071,7 +1071,7 @@ msgstr "Renvoie
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)"
msgstr "Editer cette objet (nouvelle fenêtre)"
msgstr "Editer cet objet (nouvelle fenêtre)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:29
msgid "As above, but opens the admin page in a new window."
@ -1437,7 +1437,7 @@ msgstr "Utilisez '[algo]$[salt]$[hexdigest]'"
#: models/auth.py:38
msgid "staff status"
msgstr "statut staff"
msgstr "statut équipe"
#: models/auth.py:38
msgid "Designates whether the user can log into this admin site."
@ -1453,7 +1453,7 @@ msgstr "statut super-utilisateur"
#: models/auth.py:41
msgid "last login"
msgstr "dernière connection"
msgstr "dernière connexion"
#: models/auth.py:42
msgid "date joined"

File diff suppressed because it is too large Load Diff

View File

@ -6,28 +6,28 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-27 23:26+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: Django-users Japan <django-ja@googlegroups.com>\n"
"POT-Creation-Date: 2006-05-02 23:06+0900\n"
"PO-Revision-Date: 2006-05-08 13:39+0900\n"
"Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n"
"Language-Team: Japanese <django-ja@googlegroups.com>\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:26
#: contrib/admin/media/js/dateparse.js:32
msgid ""
"January February March April May June July August September October November "
"December"
msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
msgstr "1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
msgstr "日 月 火 水 木 金 土"
#: contrib/admin/media/js/dateparse.js:27
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "日曜 月曜 火曜 水曜 木曜 金曜 土曜"
@ -80,11 +80,11 @@ msgstr "夜中"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "6 a.m."
msgstr "朝6時"
msgstr "午前 6 時"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "Noon"
msgstr ""
msgstr "正午"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
@ -107,3 +107,4 @@ msgstr "昨日"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
msgid "Tomorrow"
msgstr "明日"

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,110 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Rudolph Froger <rfroger@estrate.nl>, 2006.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-02 16:52+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""
"januari februari maart april mei juni juli augustus september oktober "
"november december"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
msgstr "Z M D W D V Z"
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "Zondag Maandag Dinsdag Woensdag Donderdag Vrijdag Zaterdag"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
msgid "Available %s"
msgstr "Beschikbaar"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
msgstr "Kies allemaal"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
msgstr "Toevoegen"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
msgstr "Verwijderen"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
msgstr "Gekozen %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
msgstr "Selecteer uw keuze(s) en klik "
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
msgstr "Allemaal verwijderen"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
msgid "Now"
msgstr "Nu"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
msgid "Clock"
msgstr "Klok"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
msgid "Choose a time"
msgstr "Kies een tijd"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Midnight"
msgstr "Middernacht"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "6 a.m."
msgstr "6 uur"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "Noon"
msgstr "12 uur"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
msgid "Cancel"
msgstr "Annuleren"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
msgid "Today"
msgstr "Vandaag"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
msgid "Calendar"
msgstr "Kalender"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
msgid "Yesterday"
msgstr "Gisteren"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
msgid "Tomorrow"
msgstr "Morgen"

View File

@ -1,7 +1,7 @@
# 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 <EMAIL@ADDRESS>, YEAR.
# Espen Grindhaug <espen.grindhaug@mail.com>, 2006.
#
msgid ""
msgstr ""
@ -9,8 +9,8 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-09 11:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Last-Translator: Espen Grindhaug <espen.grindhaug@gmail.com>\n"
"Language-Team: no\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -18,48 +18,48 @@ msgstr ""
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
msgid "Available %s"
msgstr ""
msgstr "%s er tilgjengelige"
#: contrib/admin/media/js/SelectFilter2.js:41
#, fuzzy
msgid "Choose all"
msgstr "Velg et klokkeslett"
msgstr "Velg alle"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
msgstr ""
msgstr "Ny"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
msgstr ""
msgstr "Slett"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
msgstr ""
msgstr "%s er valgt"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
msgstr ""
msgstr "Velg ditt svaralternativ(er) og klikk"
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
msgstr ""
msgstr "Tøm"
#: 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 ""
msgstr "Januar Februar Mars April Mai Juni Juli August September Oktober November Desember"
#: contrib/admin/media/js/dateparse.js:27
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr ""
msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
msgstr ""
msgstr "S M T O T F L"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80

View File

@ -1,5 +1,5 @@
/* PAGE STRUCTURE */
#container { position:relative; width:100%; min-width:760px; }
#container { position:relative; width:100%; min-width:760px; padding:0; }
#content { margin:10px 15px; }
#header { width:100%; }
#content-main { float:left; width:100%; }

View File

View File

@ -0,0 +1,84 @@
"""
Cross Site Request Forgery Middleware.
This module provides a middleware that implements protection
against request forgeries from other sites.
"""
from django.conf import settings
from django.http import HttpResponseForbidden
import md5
import re
_ERROR_MSG = "<h1>403 Forbidden</h1><p>Cross Site Request Forgery detected. Request aborted.</p>"
_POST_FORM_RE = \
re.compile(r'(<form\W[^>]*\bmethod=(\'|"|)POST(\'|"|)\b[^>]*>)', re.IGNORECASE)
_HTML_TYPES = ('text/html', 'application/xhtml+xml')
def _make_token(session_id):
return md5.new(settings.SECRET_KEY + session_id).hexdigest()
class CsrfMiddleware(object):
"""Django middleware that adds protection against Cross Site
Request Forgeries by adding hidden form fields to POST forms and
checking requests for the correct value.
In the list of middlewares, SessionMiddleware is required, and must come
after this middleware. CsrfMiddleWare must come after compression
middleware.
If a session ID cookie is present, it is hashed with the SECRET_KEY
setting to create an authentication token. This token is added to all
outgoing POST forms and is expected on all incoming POST requests that
have a session ID cookie.
If you are setting cookies directly, instead of using Django's session
framework, this middleware will not work.
"""
def process_request(self, request):
if request.POST:
try:
session_id = request.COOKIES[settings.SESSION_COOKIE_NAME]
except KeyError:
# No session, no check required
return None
csrf_token = _make_token(session_id)
# check incoming token
try:
request_csrf_token = request.POST['csrfmiddlewaretoken']
except KeyError:
return HttpResponseForbidden(_ERROR_MSG)
if request_csrf_token != csrf_token:
return HttpResponseForbidden(_ERROR_MSG)
return None
def process_response(self, request, response):
csrf_token = None
try:
cookie = response.cookies[settings.SESSION_COOKIE_NAME]
csrf_token = _make_token(cookie.value)
except KeyError:
# No outgoing cookie to set session, but
# a session might already exist.
try:
session_id = request.COOKIES[settings.SESSION_COOKIE_NAME]
csrf_token = _make_token(session_id)
except KeyError:
# no incoming or outgoing cookie
pass
if csrf_token is not None and \
response['Content-Type'].split(';')[0] in _HTML_TYPES:
# Modify any POST forms
extra_field = "<div style='display:none;'>" + \
"<input type='hidden' name='csrfmiddlewaretoken' value='" + \
csrf_token + "' /></div>"
response.content = _POST_FORM_RE.sub('\\1' + extra_field, response.content)
return response

View File

@ -760,7 +760,7 @@ def inspectdb():
# table description.
if row[6]: # If it's NULL...
extra_params['blank'] = True
if not field_type in ('TextField', 'CharField'):
if not field_type in ('TextField(', 'CharField('):
extra_params['null'] = True
field_desc = '%s = models.%s' % (att_name, field_type)

View File

@ -68,7 +68,7 @@ class DatabaseWrapper(local):
self.connection = Database.connect(conn_string)
cursor = self.connection.cursor()
if settings.DEBUG:
return base.CursorDebugWrapper(cursor, self)
return util.CursorDebugWrapper(cursor, self)
return cursor
def _commit(self):

View File

@ -94,7 +94,7 @@ class Options:
for f in to_search:
if f.name == name:
return f
raise FieldDoesNotExist, "name=%s" % name
raise FieldDoesNotExist, '%s has no field named %r' % (self.object_name, name)
def get_order_sql(self, table_prefix=''):
"Returns the full 'ORDER BY' clause for this object, according to self.ordering."

View File

@ -836,9 +836,9 @@ class EmailField(TextField):
class URLField(TextField):
"A convenience FormField for validating URLs"
def __init__(self, field_name, length=50, is_required=False, validator_list=[]):
def __init__(self, field_name, length=50, maxlength=200, is_required=False, validator_list=[]):
validator_list = [self.isValidURL] + validator_list
TextField.__init__(self, field_name, length=length, maxlength=200,
TextField.__init__(self, field_name, length=length, maxlength=maxlength,
is_required=is_required, validator_list=validator_list)
def isValidURL(self, field_data, all_data):

View File

@ -57,6 +57,16 @@ See the `syndication documentation`_.
.. _syndication documentation: http://www.djangoproject.com/documentation/syndication/
csrf
====
A middleware for preventing Cross Site Request Forgeries
See the `csrf documentation`_.
.. _csrf documentation: http://www.djangoproject.com/documentation/csrf/
Other add-ons
=============

View File

@ -267,17 +267,25 @@ previous section). You can tell them apart with ``is_anonymous()``, like so::
How to log a user in
--------------------
To log a user in, do the following within a view::
Depending on your task, you'll probably want to make sure to validate the
user's username and password before you log them in. The easiest way to do so
is to use the built-in ``authenticate`` and ``login`` functions from within a
view::
from django.contrib.auth.models import SESSION_KEY
request.session[SESSION_KEY] = some_user.id
from django.contrib.auth import authenticate, login
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
Because this uses sessions, you'll need to make sure you have
``SessionMiddleware`` enabled. See the `session documentation`_ for more
information.
``authenticate`` checks the username and password. If they are valid it
returns a user object, otherwise it returns ``None``. ``login`` makes it so
your users don't have send a username and password for every request. Because
the ``login`` function uses sessions, you'll need to make sure you have
``SessionMiddleware`` enabled. See the `session documentation`_ for
more information.
This assumes ``some_user`` is your ``User`` instance. Depending on your task,
you'll probably want to make sure to validate the user's username and password.
Limiting access to logged-in users
----------------------------------
@ -611,3 +619,53 @@ Finally, note that this messages framework only works with users in the user
database. To send messages to anonymous users, use the `session framework`_.
.. _session framework: http://www.djangoproject.com/documentation/sessions/
Other Authentication Sources
============================
Django supports other authentication sources as well. You can even use
multiple sources at the same time.
Using multiple backends
-----------------------
The list of backends to use is controlled by the ``AUTHENTICATION_BACKENDS``
setting. This should be a tuple of python path names. It defaults to
``('django.contrib.auth.backends.ModelBackend',)``. To add additional backends
just add them to your settings.py file. Ordering matters, so if the same
username and password is valid in multiple backends, the first one in the
list will return a user object, and the remaining ones won't even get a chance.
Writing an authentication backend
---------------------------------
An authentication backend is a class that implements 2 methods: ``get_user(id)``
and ``authenticate(**credentials)``. The ``get_user`` method takes an id, which
could be a username, and database id, whatever, and returns a user object. The
``authenticate`` method takes credentials as keyword arguments. Many times it
will just look like this::
class MyBackend:
def authenticate(username=None, password=None):
# check the username/password and return a user
but it could also authenticate a token like so::
class MyBackend:
def authenticate(token=None):
# check the token and return a user
Regardless, ``authenticate`` should check the credentials it gets, and if they
are valid, it should return a user object that matches those credentials.
The Django admin system is tightly coupled to the Django User object described
at the beginning of this document. For now, the best way to deal with this is to
create a Django User object for each user that exists for your backend (i.e.
in your ldap directory, your external sql database, etc.) You can either
write a script to do this in advance, or your ``authenticate`` method can do
it the first time a user logs in. `django.contrib.auth.backends.SettingsBackend`_
is an example of the latter approach. Note that you don't have to save a user's
password in the Django User object. Your backend can still check the password
against an external source, and return a Django User object.
.. _django.contrib.auth.backends.SettingsBackend: http://code.djangoproject.com/browser/django/branches/magic-removal/django/contrib/auth/backends.py

68
docs/csrf.txt Normal file
View File

@ -0,0 +1,68 @@
=====================================
Cross Site Request Forgery Protection
=====================================
The CsrfMiddleware class provides easy-to-use protection against
`Cross Site Request Forgeries`_. This type of attack occurs when a malicious
web site creates a link or form button that is intended to perform some action
on your web site, using the credentials of a logged-in user who is tricked
into clicking on the link in their browser.
The first defense against CSRF attacks is to ensure that GET requests
are side-effect free. POST requests can then be protected by adding this
middleware into your list of installed middleware.
.. _Cross Site Request Forgeries: http://www.squarefree.com/securitytips/web-developers.html#CSRF
How to use it
=============
Add the middleware ``"django.contrib.csrf.middleware.CsrfMiddleware"`` to
your list of middleware classes, ``MIDDLEWARE_CLASSES``. It needs to process
the response after the SessionMiddleware, so must come before it in the
list. It also must process the response before things like compression
happen to the response, so it must come after GZipMiddleware in the list.
How it works
============
CsrfMiddleware does two things:
1. It modifies outgoing requests by adding a hidden form field to all
'POST' forms, with the name 'csrfmiddlewaretoken' and a value which is
a hash of the session ID plus a secret. If there is no session ID set,
this modification of the response isn't done, so there is very little
performance penalty for those requests that don't have a session.
2. On all incoming POST requests that have the session cookie set, it
checks that the 'csrfmiddlewaretoken' is present and correct. If it
isn't, the user will get a 403 error.
This ensures that only forms that have originated from your web site
can be used to POST data back.
It deliberately only targets HTTP POST requests (and the corresponding
POST forms). GET requests ought never to have side effects (if you are
using HTTP GET and POST correctly), and so a CSRF attack with a GET
request will always be harmless.
POST requests that are not accompanied by a session cookie are not protected,
but they do not need to be protected, since the 'attacking' web site
could make these kind of requests anyway.
The Content-Type is checked before modifying the response, and only
pages that are served as 'text/html' or 'application/xml+xhtml'
are modified.
Limitations
===========
CsrfMiddleware requires Django's session framework to work. If you have
a custom authentication system that manually sets cookies and the like,
it won't help you.
If your app creates HTML pages and forms in some unusual way, (e.g.
it sends fragments of HTML in javascript document.write statements)
you might bypass the filter that adds the hidden field to the form,
in which case form submission will always fail. It may still be possible
to use the middleware, provided you can find some way to get the
CSRF token and ensure that is included when your form is submitted.

View File

@ -1070,7 +1070,7 @@ Lookups that span relationships
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Django offers a powerful and intuitive way to "follow" relationships in
lookups, taking care of the SQL ``JOIN``s for you automatically, behind the
lookups, taking care of the SQL ``JOIN``\s for you automatically, behind the
scenes. To span a relationship, just use the field name of related fields
across models, separated by double underscores, until you get to the field you
want.

View File

@ -62,6 +62,8 @@ Most generic views require the ``queryset`` key, which is a ``QuerySet``
instance; see the `database API docs`_ for more information about ``Queryset``
objects.
.. _database API docs: http://www.djangoproject.com/documentation/db_api/
"Simple" generic views
======================

View File

@ -52,7 +52,7 @@ Some technical notes:
* The name of the table, ``myapp_person``, is automatically derived from
some model metadata but can be overridden. See _`Table names` below.
* An ``id`` field is added automatically, but this behavior can be
overriden. See _`Automatic primary key fields` below.
overriden. See `Automatic primary key fields`_ below.
* The ``CREATE TABLE`` SQL in this example is formatted using PostgreSQL
syntax, but it's worth noting Django uses SQL tailored to the database
backend specified in your `settings file`_.
@ -124,7 +124,7 @@ Here are all available field types:
An ``IntegerField`` that automatically increments according to available IDs.
You usually won't need to use this directly; a primary key field will
automatically be added to your model if you don't specify otherwise. See
_`Automatic primary key fields`.
`Automatic primary key fields`_.
``BooleanField``
~~~~~~~~~~~~~~~~
@ -1111,7 +1111,7 @@ If ``fields`` isn't given, Django will default to displaying each field that
isn't an ``AutoField`` and has ``editable=True``, in a single fieldset, in
the same order as the fields are defined in the model.
The ``field_options`` dictionary can have the following keys::
The ``field_options`` dictionary can have the following keys:
``fields``
~~~~~~~~~~
@ -1312,6 +1312,8 @@ The way ``Manager`` classes work is documented in the `Retrieving objects`_
section of the database API docs, but this section specifically touches on
model options that customize ``Manager`` behavior.
.. _Retrieving objects: http://www.djangoproject.com/documentation/db_api/#retrieving-objects
Manager names
-------------
@ -1401,17 +1403,17 @@ example, using this model::
...the statement ``Book.objects.all()`` will return all books in the database.
You can override a ``Manager``'s base ``QuerySet`` by overriding the
You can override a ``Manager``\'s base ``QuerySet`` by overriding the
``Manager.get_query_set()`` method. ``get_query_set()`` should return a
``QuerySet`` with the properties you require.
For example, the following model has *two* ``Manager``s -- one that returns
For example, the following model has *two* ``Manager``\s -- one that returns
all objects, and one that returns only the books by Roald Dahl::
# First, define the Manager subclass.
class DahlBookManager(models.Manager):
def get_query_set(self):
return super(Manager, self).get_query_set().filter(author='Roald Dahl')
return super(DahlBookManager, self).get_query_set().filter(author='Roald Dahl')
# Then hook it into the Book model explicitly.
class Book(models.Model):
@ -1442,11 +1444,11 @@ For example::
class MaleManager(models.Manager):
def get_query_set(self):
return super(Manager, self).get_query_set().filter(sex='M')
return super(MaleManager, self).get_query_set().filter(sex='M')
class FemaleManager(models.Manager):
def get_query_set(self):
return super(Manager, self).get_query_set().filter(sex='F')
return super(FemaleManager, self).get_query_set().filter(sex='F')
class Person(models.Model):
first_name = models.CharField(maxlength=50)

View File

@ -187,8 +187,8 @@ Here are two recommended approaches:
**and** templates -- stay in one place, and you'll still be able to
``svn update`` your code to get the latest admin templates, if they
change.
2. Or, copy the admin media files so that they live within your document
root.
2. Or, copy the admin media files so that they live within your Apache
document root.
Error handling
==============

View File

@ -183,7 +183,7 @@ is a simple Python function. Each view gets passed a request object --
which contains request metadata -- and the values captured in the regex.
For example, if a user requested the URL "/articles/2005/05/39323/", Django
would call the function ``myproject.news.views.article_detail(request,
would call the function ``mysite.views.article_detail(request,
'2005', '05', '39323')``.
Write your views
@ -199,7 +199,7 @@ and renders the template with the retrieved data. Here's an example view for
def year_archive(request, year):
a_list = Article.objects.filter(pub_date__year=year)
return render_to_response('news/year_archive.html', {'article_list': a_list})
return render_to_response('news/year_archive.html', {'year': year, 'article_list': a_list})
This example uses Django's template system, which has several powerful
features but strives to stay simple enough for non-programmers to use.
@ -219,19 +219,22 @@ might look like::
{% extends "base.html" %}
{% block title %}{{ article.headline }}{% endblock %}
{% block title %}Articles for {{ year }}{% endblock %}
{% block content %}
<h1>{{ article.headline }}</h1>
<p>By {{ article.get_reporter.full_name }}</p>
<h1>Articles for {{ year }}</h1>
{% for article in article_list %}
<p>{{ article.headline }}</p>
<p>By {{ article.reporter.full_name }}</p>
<p>Published {{ article.pub_date|date:"F j, Y" }}</p>
{{ article.article }}
{% endfor %}
{% endblock %}
Variables are surrounded by double-curly braces. ``{{ article.headline }}``
means "Output the value of the article's headline attribute." But dots aren't
used only for attribute lookup: They also can do dictionary-key lookup, index
lookup and function calls (as is the case with ``article.get_reporter``).
lookup and function calls.
Note ``{{ article.pub_date|date:"F j, Y" }}`` uses a Unix-style "pipe" (the "|"
character). This is called a template filter, and it's a way to filter the value

View File

@ -102,7 +102,7 @@ All attributes except ``session`` should be considered read-only.
``AuthenticationMiddleware`` activated. For more, see
`Authentication in Web requests`_.
.. Authentication in Web requests: http://www.djangoproject.com/documentation/authentication/#authentication-in-web-requests
.. _Authentication in Web requests: http://www.djangoproject.com/documentation/authentication/#authentication-in-web-requests
``session``
A readable-and-writable, dictionary-like object that represents the current

View File

@ -69,7 +69,7 @@ These files are:
* ``urls.py``: The URL declarations for this Django project; a "table of
contents" of your Django-powered site.
.. _more on packages: http://docs.python.org/tut/node8.html#packages
.. _more about packages: http://docs.python.org/tut/node8.html#packages
The development server
----------------------