mirror of
https://github.com/django/django.git
synced 2025-07-04 17:59:13 +00:00
Merged to trunk r1168
git-svn-id: http://code.djangoproject.com/svn/django/branches/new-admin@1169 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
commit
3f24ff1f87
@ -136,9 +136,6 @@ ALLOWED_INCLUDE_ROOTS = ()
|
||||
# is an admin.
|
||||
ADMIN_FOR = ()
|
||||
|
||||
# Whether to check the flat-pages table as a last resort for all 404 errors.
|
||||
USE_FLAT_PAGES = True
|
||||
|
||||
# 404s that may be ignored.
|
||||
IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf')
|
||||
IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')
|
||||
|
Binary file not shown.
@ -14,8 +14,7 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
@ -265,12 +264,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
|
||||
@ -361,13 +356,8 @@ msgstr "Odhlásit se"
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:7
|
||||
#, fuzzy, 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/500.html:6
|
||||
msgid "Server error (500)"
|
||||
@ -445,12 +435,8 @@ msgstr ""
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:14
|
||||
#, 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:18
|
||||
msgid "Yes, I'm sure"
|
||||
@ -479,12 +465,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:"
|
||||
@ -508,20 +490,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 ""
|
||||
"Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové "
|
||||
"heslo, takže 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 "Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové heslo, takže můžeme ověřit, že jste ho napsal(a) správně."
|
||||
|
||||
#: contrib/admin/templates/registration/password_change_form.html:17
|
||||
msgid "Old password:"
|
||||
@ -638,23 +612,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"
|
||||
|
||||
@ -726,7 +705,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"
|
||||
|
||||
@ -755,23 +737,16 @@ msgid "redirect from"
|
||||
msgstr "přesměrovat z"
|
||||
|
||||
#: models/core.py:69
|
||||
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/'."
|
||||
|
||||
#: models/core.py:70
|
||||
msgid "redirect to"
|
||||
msgstr "přesměrovat na"
|
||||
|
||||
#: models/core.py:71
|
||||
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://'."
|
||||
|
||||
#: models/core.py:73
|
||||
msgid "redirect"
|
||||
@ -782,10 +757,8 @@ msgid "redirects"
|
||||
msgstr "přesměrování"
|
||||
|
||||
#: models/core.py:88
|
||||
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."
|
||||
|
||||
#: models/core.py:89
|
||||
msgid "title"
|
||||
@ -804,12 +777,8 @@ msgid "template name"
|
||||
msgstr "jméno šablony"
|
||||
|
||||
#: models/core.py:93
|
||||
msgid ""
|
||||
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
|
||||
"use 'flatfiles/default'."
|
||||
msgstr ""
|
||||
"Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém "
|
||||
"použije 'flatfiles/default'."
|
||||
msgid "Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'."
|
||||
msgstr "Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém použije 'flatfiles/default'."
|
||||
|
||||
#: models/core.py:94
|
||||
msgid "registration required"
|
||||
@ -817,9 +786,7 @@ msgstr "nutná registrace"
|
||||
|
||||
#: models/core.py:94
|
||||
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."
|
||||
|
||||
#: models/core.py:98
|
||||
msgid "flat page"
|
||||
@ -857,7 +824,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í"
|
||||
|
||||
@ -865,7 +833,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"
|
||||
|
||||
@ -919,12 +888,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"
|
||||
@ -944,7 +909,7 @@ msgstr "Zpráva"
|
||||
|
||||
#: conf/global_settings.py:37
|
||||
msgid "Bengali"
|
||||
msgstr ""
|
||||
msgstr "Bengálsky"
|
||||
|
||||
#: conf/global_settings.py:37
|
||||
msgid "Czech"
|
||||
@ -952,7 +917,7 @@ msgstr "Česky"
|
||||
|
||||
#: conf/global_settings.py:38
|
||||
msgid "Welsh"
|
||||
msgstr ""
|
||||
msgstr "Welšsky"
|
||||
|
||||
#: conf/global_settings.py:39
|
||||
msgid "German"
|
||||
@ -971,9 +936,8 @@ msgid "French"
|
||||
msgstr "Francouzsky"
|
||||
|
||||
#: conf/global_settings.py:43
|
||||
#, fuzzy
|
||||
msgid "Galician"
|
||||
msgstr "Galicijský"
|
||||
msgstr "Galicijsky"
|
||||
|
||||
#: conf/global_settings.py:44
|
||||
msgid "Italian"
|
||||
@ -1009,8 +973,7 @@ msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka."
|
||||
|
||||
#: core/validators.py:63
|
||||
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:71
|
||||
msgid "Uppercase letters are not allowed here."
|
||||
@ -1069,12 +1032,8 @@ msgid "Enter a valid e-mail address."
|
||||
msgstr "Vložte platnou e-mailovou adresu."
|
||||
|
||||
#: core/validators.py:147
|
||||
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:154
|
||||
#, python-format
|
||||
@ -1140,7 +1099,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:259 core/validators.py:270
|
||||
#: core/validators.py:259
|
||||
#: core/validators.py:270
|
||||
msgid "Please enter both fields or leave them both empty."
|
||||
msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná."
|
||||
|
||||
@ -1170,8 +1130,7 @@ msgstr "Prosíme, vložte platné číslo."
|
||||
#: core/validators.py:344
|
||||
#, 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."
|
||||
@ -1179,16 +1138,10 @@ msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
|
||||
#: core/validators.py:347
|
||||
#, 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:357
|
||||
#, python-format
|
||||
@ -1215,71 +1168,44 @@ msgstr "Nemohl jsem získat nic z %s."
|
||||
|
||||
#: core/validators.py:424
|
||||
#, 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:457
|
||||
#, 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:461
|
||||
#, 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:466
|
||||
#, 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:471
|
||||
#, 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:475
|
||||
#, 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:480
|
||||
#, 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/fields.py:114
|
||||
msgid " Separate multiple IDs with commas."
|
||||
msgstr "Oddělte více identifikátorů čárkami."
|
||||
|
||||
#: core/meta/fields.py:117
|
||||
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."
|
||||
|
||||
|
Binary file not shown.
@ -11,7 +11,7 @@ msgstr ""
|
||||
"POT-Creation-Date: 2005-11-08 09:05-0600\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Vladimir Labath <vlado@labath.org>\n"
|
||||
"Language-Team: Slovak <LL@li.org>\n"
|
||||
"Language-Team: Slovak <info@labath.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@ -272,11 +272,11 @@ msgstr ""
|
||||
#: contrib/admin/templates/admin/404.html:4
|
||||
#: contrib/admin/templates/admin/404.html:8
|
||||
msgid "Page not found"
|
||||
msgstr "Stránka sa nenašla"
|
||||
msgstr "Stránka nebola nájdená"
|
||||
|
||||
#: contrib/admin/templates/admin/404.html:10
|
||||
msgid "We're sorry, but the requested page could not be found."
|
||||
msgstr "Ľutujeme, ale požadovaná stránka sa nenašla."
|
||||
msgstr "Ľutujeme, ale požadovaná stránka nebola nájdená."
|
||||
|
||||
#: contrib/admin/templates/admin/index.html:27
|
||||
#: contrib/admin/templates/admin/change_form.html:14
|
||||
@ -1276,3 +1276,41 @@ msgid ""
|
||||
msgstr ""
|
||||
" Podržte \"Control\", alebo \"Command\" na Mac_u, na výber viac ako jednej "
|
||||
"položky."
|
||||
#:commit
|
||||
msgid "Post a comment"
|
||||
msgstr "Pošli komentár"
|
||||
|
||||
|
||||
msgid "Comments"
|
||||
msgstr "Komentáre"
|
||||
|
||||
msgid "Comment"
|
||||
msgstr "Komentár"
|
||||
|
||||
msgid "Your name"
|
||||
msgstr "Vaše meno"
|
||||
|
||||
msgid "Preview revised comment"
|
||||
msgstr "Ukázať upravený komentár"
|
||||
|
||||
msgid "Post public comment"
|
||||
msgstr "Zveréjniť komentár"
|
||||
|
||||
msgid "Preview comment"
|
||||
msgstr "Ukázať komentár"
|
||||
|
||||
msgid "Posted by"
|
||||
msgstr "Poslané"
|
||||
|
||||
msgid "Or edit it again"
|
||||
msgstr "Alebo ho vytvorte znova"
|
||||
|
||||
msgid "Please correct the following errors."
|
||||
msgstr "Odstráňte nasledujúce chyby, prosím."
|
||||
|
||||
msgid "Looks like you followed a bad link. If you think it is our fault, please <a href=\"http://doma.myvtoronte.com/staznost/\">let us know</a>"
|
||||
msgstr "Pozrite si linku , kde vzikla chyba. Ak si myslíte, že je to naša chyba, <a href=\"http://doma.myvtoronte.com/staznost/\">dajte nám to vedieť</a>, prosím"
|
||||
|
||||
msgid "Here is a link to the <a href=\"/\">homepage</a>. You know, just in case"
|
||||
msgstr "Tu je adresa <a href=\"/\">úvodnej stránky</a>. Ak by ste ju potrebovali"
|
||||
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: django v1.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-11-08 15:05+0000\n"
|
||||
"PO-Revision-Date: 2005-10-30 15:46+0800\n"
|
||||
"PO-Revision-Date: 2005-11-11 13:55+0800\n"
|
||||
"Last-Translator: limodou <limodou@gmail.com>\n"
|
||||
"Language-Team: Simplified Chinese <limodou@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -17,6 +17,7 @@ msgstr ""
|
||||
"X-Poedit-Language: Chinese\n"
|
||||
"X-Poedit-Country: CHINA\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: contrib/admin/views/main.py:78 contrib/admin/views/main.py:106
|
||||
#, python-format
|
||||
@ -252,9 +253,8 @@ msgid "Home"
|
||||
msgstr "首页"
|
||||
|
||||
#: contrib/admin/templates/admin/500.html:4
|
||||
#, fuzzy
|
||||
msgid "Server error"
|
||||
msgstr "服务器错误(500)"
|
||||
msgstr "服务器错误"
|
||||
|
||||
#: contrib/admin/templates/admin/500.html:6
|
||||
msgid "Server error (500)"
|
||||
@ -265,12 +265,8 @@ msgid "Server Error <em>(500)</em>"
|
||||
msgstr "服务器错误 <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 ""
|
||||
"存在一个错误。它已经通过电子邮件被报告给站点管理员了,并且应该很快被改正。谢"
|
||||
"谢你的关心。"
|
||||
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
|
||||
@ -358,14 +354,9 @@ msgid "Log out"
|
||||
msgstr "注销"
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:7
|
||||
#, fuzzy, 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 ""
|
||||
"删除 %(object_name)s '%(object)s' 会导致删除相关的对象,但你的帐号无权删除下"
|
||||
"列类型的对象:"
|
||||
#, 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 "删除 %(object_name)s '%(object)s' 会导致删除相关的对象,但你的帐号无权删除下列类型的对象:"
|
||||
|
||||
#: contrib/admin/templates/admin/500.html:6
|
||||
msgid "Server error (500)"
|
||||
@ -443,11 +434,8 @@ msgstr ""
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:14
|
||||
#, 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 ""
|
||||
"你确信相要删除 %(object_name)s \"%(object)s\"?所有相关的项目都将被删除:"
|
||||
msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
|
||||
msgstr "你确信相要删除 %(object_name)s \"%(object)s\"?所有相关的项目都将被删除:"
|
||||
|
||||
#: contrib/admin/templates/admin/delete_confirmation.html:18
|
||||
msgid "Yes, I'm sure"
|
||||
@ -476,12 +464,8 @@ 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 ""
|
||||
"忘记你的口令?在下面输入你的邮箱地址,我们将重设你的口令并且将新的口令通过邮"
|
||||
"件发送给你。"
|
||||
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:"
|
||||
@ -505,19 +489,12 @@ 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 ""
|
||||
"我们已经按你所提交的邮箱地址发送了一个新的口令给你。你应该很会收到这封邮件。"
|
||||
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 ""
|
||||
"请输入你的旧口令,为了安全起见,接着要输入你的新口令两遍,这样我们可以校验你"
|
||||
"输入的是否正确。"
|
||||
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:"
|
||||
@ -634,23 +611,28 @@ msgstr "一月"
|
||||
msgid "February"
|
||||
msgstr "二月"
|
||||
|
||||
#: utils/dates.py:14 utils/dates.py:27
|
||||
#: utils/dates.py:14
|
||||
#: utils/dates.py:27
|
||||
msgid "March"
|
||||
msgstr "三月"
|
||||
|
||||
#: utils/dates.py:14 utils/dates.py:27
|
||||
#: utils/dates.py:14
|
||||
#: utils/dates.py:27
|
||||
msgid "April"
|
||||
msgstr "四月"
|
||||
|
||||
#: utils/dates.py:14 utils/dates.py:27
|
||||
#: utils/dates.py:14
|
||||
#: utils/dates.py:27
|
||||
msgid "May"
|
||||
msgstr "五月"
|
||||
|
||||
#: utils/dates.py:14 utils/dates.py:27
|
||||
#: utils/dates.py:14
|
||||
#: utils/dates.py:27
|
||||
msgid "June"
|
||||
msgstr "六月"
|
||||
|
||||
#: utils/dates.py:15 utils/dates.py:27
|
||||
#: utils/dates.py:15
|
||||
#: utils/dates.py:27
|
||||
msgid "July"
|
||||
msgstr "七月"
|
||||
|
||||
@ -722,7 +704,10 @@ msgstr "站点"
|
||||
msgid "label"
|
||||
msgstr "标签"
|
||||
|
||||
#: 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 "名称"
|
||||
|
||||
@ -751,9 +736,7 @@ msgid "redirect from"
|
||||
msgstr "重定向自"
|
||||
|
||||
#: models/core.py:69
|
||||
msgid ""
|
||||
"This should be an absolute path, excluding the domain name. Example: '/"
|
||||
"events/search/'."
|
||||
msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
|
||||
msgstr "应该是一个绝对路径,不包括域名。例如:'/events/search/'。"
|
||||
|
||||
#: models/core.py:70
|
||||
@ -761,9 +744,7 @@ msgid "redirect to"
|
||||
msgstr "重定向到"
|
||||
|
||||
#: models/core.py:71
|
||||
msgid ""
|
||||
"This can be either an absolute path (as above) or a full URL starting with "
|
||||
"'http://'."
|
||||
msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
|
||||
msgstr "可以是绝对路径(同上)或以'http://'开始的全URL。"
|
||||
|
||||
#: models/core.py:73
|
||||
@ -775,8 +756,7 @@ msgid "redirects"
|
||||
msgstr "重定向"
|
||||
|
||||
#: models/core.py:88
|
||||
msgid ""
|
||||
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
|
||||
msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
|
||||
msgstr "例如:'/about/contact/'。请确保前导和结尾的除号。"
|
||||
|
||||
#: models/core.py:89
|
||||
@ -796,11 +776,8 @@ msgid "template name"
|
||||
msgstr "模板名称"
|
||||
|
||||
#: models/core.py:93
|
||||
msgid ""
|
||||
"Example: 'flatfiles/contact_page'. If this isn't provided, the system will "
|
||||
"use 'flatfiles/default'."
|
||||
msgstr ""
|
||||
"例如:'flatfiles/contact_page'。如果未提供,系统将使用'flatfiles/default'。"
|
||||
msgid "Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'."
|
||||
msgstr "例如:'flatfiles/contact_page'。如果未提供,系统将使用'flatfiles/default'。"
|
||||
|
||||
#: models/core.py:94
|
||||
msgid "registration required"
|
||||
@ -846,7 +823,8 @@ msgstr "代码名称"
|
||||
msgid "Permission"
|
||||
msgstr "许可"
|
||||
|
||||
#: models/auth.py:11 models/auth.py:58
|
||||
#: models/auth.py:11
|
||||
#: models/auth.py:58
|
||||
msgid "Permissions"
|
||||
msgstr "许可"
|
||||
|
||||
@ -854,7 +832,8 @@ msgstr "许可"
|
||||
msgid "Group"
|
||||
msgstr "组"
|
||||
|
||||
#: models/auth.py:23 models/auth.py:60
|
||||
#: models/auth.py:23
|
||||
#: models/auth.py:60
|
||||
msgid "Groups"
|
||||
msgstr "组"
|
||||
|
||||
@ -907,11 +886,8 @@ msgid "date joined"
|
||||
msgstr "加入日期"
|
||||
|
||||
#: 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 ""
|
||||
"除了手动设置权限以外,用户也会从他(她)所在的小组获得所赋组小组的所有权限。"
|
||||
msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
|
||||
msgstr "除了手动设置权限以外,用户也会从他(她)所在的小组获得所赋组小组的所有权限。"
|
||||
|
||||
#: models/auth.py:48
|
||||
msgid "Users"
|
||||
@ -931,7 +907,7 @@ msgstr "消息"
|
||||
|
||||
#: conf/global_settings.py:37
|
||||
msgid "Bengali"
|
||||
msgstr ""
|
||||
msgstr "孟加拉语"
|
||||
|
||||
#: conf/global_settings.py:37
|
||||
msgid "Czech"
|
||||
@ -939,7 +915,7 @@ msgstr "捷克语"
|
||||
|
||||
#: conf/global_settings.py:38
|
||||
msgid "Welsh"
|
||||
msgstr ""
|
||||
msgstr "威尔士语"
|
||||
|
||||
#: conf/global_settings.py:39
|
||||
msgid "German"
|
||||
@ -967,7 +943,7 @@ msgstr "意大利语"
|
||||
|
||||
#: conf/global_settings.py:45
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
msgstr "挪威语"
|
||||
|
||||
#: conf/global_settings.py:46
|
||||
msgid "Brazilian"
|
||||
@ -978,13 +954,12 @@ msgid "Russian"
|
||||
msgstr "俄语"
|
||||
|
||||
#: conf/global_settings.py:47
|
||||
#, fuzzy
|
||||
msgid "Serbian"
|
||||
msgstr "塞尔维亚语"
|
||||
|
||||
#: conf/global_settings.py:48
|
||||
msgid "Simplified Chinese"
|
||||
msgstr ""
|
||||
msgstr "简体中文"
|
||||
|
||||
#: conf/global_settings.py:49
|
||||
msgid "Slovak"
|
||||
@ -1055,9 +1030,7 @@ msgid "Enter a valid e-mail address."
|
||||
msgstr "输入一个有效的邮件地址。"
|
||||
|
||||
#: core/validators.py:147
|
||||
msgid ""
|
||||
"Upload a valid image. The file you uploaded was either not an image or a "
|
||||
"corrupted image."
|
||||
msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
|
||||
msgstr "上传一个有效的图片。您所上传的文件或者不是图片或是一个破坏的图片。"
|
||||
|
||||
#: core/validators.py:154
|
||||
@ -1108,11 +1081,10 @@ msgid "Enter a valid U.S. state abbreviation."
|
||||
msgstr "输入一个有效的 U.S. 州缩写。"
|
||||
|
||||
#: core/validators.py:224
|
||||
#, fuzzy, python-format
|
||||
#, 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 不允许在这里出现。"
|
||||
msgstr[0] "看住你的嘴!%s 不允许在这里出现。"
|
||||
|
||||
#: core/validators.py:231
|
||||
#, python-format
|
||||
@ -1123,7 +1095,8 @@ msgstr "这个字段必须与 '%s' 字段相匹配。"
|
||||
msgid "Please enter something for at least one field."
|
||||
msgstr "请至少在一个字段上输入些什么。"
|
||||
|
||||
#: core/validators.py:259 core/validators.py:270
|
||||
#: core/validators.py:259
|
||||
#: core/validators.py:270
|
||||
msgid "Please enter both fields or leave them both empty."
|
||||
msgstr "请要么两个字段都输入或者两个字段都空着。"
|
||||
|
||||
@ -1151,20 +1124,16 @@ msgid "Please enter a valid decimal number."
|
||||
msgstr "请输入一个有效的小数。"
|
||||
|
||||
#: core/validators.py:344
|
||||
#, fuzzy, python-format
|
||||
#, 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 个数字。"
|
||||
msgid_plural "Please enter a valid decimal number with at most %s total digits."
|
||||
msgstr[0] "请输入一个有效的小数,最多 %s 个数字。 "
|
||||
|
||||
#: core/validators.py:347
|
||||
#, fuzzy, python-format
|
||||
#, 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 个小数位。"
|
||||
msgid_plural "Please enter a valid decimal number with at most %s decimal places."
|
||||
msgstr[0] "请输入一个有效的小数,最多 %s 个小数位。 "
|
||||
|
||||
#: core/validators.py:357
|
||||
#, python-format
|
||||
@ -1191,63 +1160,44 @@ msgstr "不能从 %s 得到任何东西。"
|
||||
|
||||
#: core/validators.py:424
|
||||
#, 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 返回了无效的 Content-Type 头 '%(contenttype)s'。"
|
||||
|
||||
#: core/validators.py:457
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
|
||||
"\"%(start)s\".)"
|
||||
msgstr ""
|
||||
"请关闭未关闭的 %(tag)s 标签从第 %(line)s 行。(行开始于 \"%(start)s\"。)"
|
||||
msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
|
||||
msgstr "请关闭未关闭的 %(tag)s 标签从第 %(line)s 行。(行开始于 \"%(start)s\"。)"
|
||||
|
||||
#: core/validators.py:461
|
||||
#, 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\"。)"
|
||||
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:466
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
|
||||
"(start)s\".)"
|
||||
msgstr ""
|
||||
"在 %(line)s 行的\"%(attr)s\"不是一个有效的属性。(行开始于 \"%(start)s\"。)"
|
||||
msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
|
||||
msgstr "在 %(line)s 行的\"%(attr)s\"不是一个有效的属性。(行开始于 \"%(start)s\"。)"
|
||||
|
||||
#: core/validators.py:471
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
|
||||
"(start)s\".)"
|
||||
msgstr ""
|
||||
"在 %(line)s 行的\"<%(tag)s>\"不是一个有效的标签。(行开始于 \"%(start)s\"。)"
|
||||
msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
|
||||
msgstr "在 %(line)s 行的\"<%(tag)s>\"不是一个有效的标签。(行开始于 \"%(start)s\"。)"
|
||||
|
||||
#: core/validators.py:475
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A tag on line %(line)s is missing one or more required attributes. (Line "
|
||||
"starts with \"%(start)s\".)"
|
||||
msgstr ""
|
||||
"在行 %(line)s 的标签少了一个或多个必须的属性。(行开始于 \"%(start)s\"。)"
|
||||
msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
|
||||
msgstr "在行 %(line)s 的标签少了一个或多个必须的属性。(行开始于 \"%(start)s\"。)"
|
||||
|
||||
#: core/validators.py:480
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
|
||||
"starts with \"%(start)s\".)"
|
||||
msgstr ""
|
||||
"在行 %(line)s 的\"%(attr)s\"属性有一个无效的值。(行开始于 \"%(start)s\"。)"
|
||||
msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
|
||||
msgstr "在行 %(line)s 的\"%(attr)s\"属性有一个无效的值。(行开始于 \"%(start)s\"。)"
|
||||
|
||||
#: core/meta/fields.py:114
|
||||
msgid " Separate multiple IDs with commas."
|
||||
msgstr " 用逗号分隔多个ID。"
|
||||
|
||||
#: core/meta/fields.py:117
|
||||
msgid ""
|
||||
" Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
|
||||
msgid " Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
|
||||
msgstr " 按下 \"Control\",或者在Mac上按 \"Command\" 来选择一个或多个值。"
|
||||
|
||||
|
@ -44,6 +44,19 @@ for setting in dir(mod):
|
||||
setting_value = (setting_value,) # In case the user forgot the comma.
|
||||
setattr(me, setting, setting_value)
|
||||
|
||||
# Expand entries in INSTALLED_APPS like "django.contrib.*" to a list
|
||||
# of all those apps.
|
||||
new_installed_apps = []
|
||||
for app in me.INSTALLED_APPS:
|
||||
if app.endswith('.*'):
|
||||
appdir = os.path.dirname(__import__(app[:-2], '', '', ['']).__file__)
|
||||
for d in os.listdir(appdir):
|
||||
if d.isalpha() and os.path.isdir(os.path.join(appdir, d)):
|
||||
new_installed_apps.append('%s.%s' % (app[:-2], d))
|
||||
else:
|
||||
new_installed_apps.append(app)
|
||||
me.INSTALLED_APPS = new_installed_apps
|
||||
|
||||
# save DJANGO_SETTINGS_MODULE in case anyone in the future cares
|
||||
me.SETTINGS_MODULE = os.environ.get(ENVIRONMENT_VARIABLE, '')
|
||||
|
||||
|
@ -1,5 +0,0 @@
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
urlpatterns = patterns('django.views',
|
||||
(r'^(?P<url>.*)$', 'core.flatfiles.flat_file'),
|
||||
)
|
@ -49,7 +49,6 @@
|
||||
</div></fieldset>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% for related_object in bound_manipulator.inline_related_objects %}{% edit_inline related_object %}{% endfor %}
|
||||
{% block after_related_objects%}{%endblock%}
|
||||
{% submit_row bound_manipulator %}
|
||||
|
@ -4,10 +4,10 @@
|
||||
{% block content %}
|
||||
<div>
|
||||
<h2>{%trans "Error in Template" %}</h2>
|
||||
<pre>
|
||||
{%blocktrans %}
|
||||
In template {{name}}, error at line {{line}}:
|
||||
{%endblocktrans %}
|
||||
<pre>
|
||||
{{message|escape}}
|
||||
{{traceback|escape}}
|
||||
</pre>
|
||||
|
@ -30,7 +30,7 @@ def submit_row(context, bound_manipulator):
|
||||
show_delete = context['show_delete']
|
||||
has_delete_permission = context['has_delete_permission']
|
||||
is_popup = context['is_popup']
|
||||
|
||||
print is_popup.something
|
||||
return {
|
||||
'onclick_attrib' : (bound_manipulator.ordered_objects and change
|
||||
and 'onclick="submitOrderForm();"' or ''),
|
||||
|
0
django/contrib/flatpages/__init__.py
Normal file
0
django/contrib/flatpages/__init__.py
Normal file
15
django/contrib/flatpages/middleware.py
Normal file
15
django/contrib/flatpages/middleware.py
Normal file
@ -0,0 +1,15 @@
|
||||
from django.contrib.flatpages.views import flatpage
|
||||
from django.conf.settings import DEBUG
|
||||
|
||||
class FlatpageFallbackMiddleware:
|
||||
def process_response(self, request, response):
|
||||
if response.status_code != 404:
|
||||
return response # No need to check for a flatpage for non-404 responses.
|
||||
try:
|
||||
return flatpage(request, request.path)
|
||||
# Return the original response if any errors happened. Because this
|
||||
# is a middleware, we can't assume the errors will be caught elsewhere.
|
||||
except:
|
||||
if DEBUG:
|
||||
raise
|
||||
return response
|
1
django/contrib/flatpages/models/__init__.py
Normal file
1
django/contrib/flatpages/models/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
__all__ = ['flatpages']
|
33
django/contrib/flatpages/models/flatpages.py
Normal file
33
django/contrib/flatpages/models/flatpages.py
Normal file
@ -0,0 +1,33 @@
|
||||
from django.core import meta, validators
|
||||
from django.models.core import Site
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
class FlatPage(meta.Model):
|
||||
url = meta.CharField(_('URL'), maxlength=100, validator_list=[validators.isAlphaNumericURL],
|
||||
help_text=_("Example: '/about/contact/'. Make sure to have leading and trailing slashes."))
|
||||
title = meta.CharField(_('title'), maxlength=200)
|
||||
content = meta.TextField(_('content'))
|
||||
enable_comments = meta.BooleanField(_('enable comments'))
|
||||
template_name = meta.CharField(_('template name'), maxlength=70, blank=True,
|
||||
help_text=_("Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'."))
|
||||
registration_required = meta.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
|
||||
sites = meta.ManyToManyField(Site)
|
||||
class META:
|
||||
db_table = 'django_flatpages'
|
||||
verbose_name = _('flat page')
|
||||
verbose_name_plural = _('flat pages')
|
||||
ordering = ('url',)
|
||||
admin = meta.Admin(
|
||||
fields = (
|
||||
(None, {'fields': ('url', 'title', 'content', 'sites')}),
|
||||
('Advanced options', {'classes': 'collapse', 'fields': ('enable_comments', 'registration_required', 'template_name')}),
|
||||
),
|
||||
list_filter = ('sites',),
|
||||
search_fields = ('url', 'title'),
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return "%s -- %s" % (self.url, self.title)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return self.url
|
5
django/contrib/flatpages/urls.py
Normal file
5
django/contrib/flatpages/urls.py
Normal file
@ -0,0 +1,5 @@
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
urlpatterns = patterns('django.contrib.flatpages.views',
|
||||
(r'^(?P<url>.*)$', 'flatpage'),
|
||||
)
|
@ -1,28 +1,28 @@
|
||||
from django.core import template_loader
|
||||
from django.core.extensions import get_object_or_404, DjangoContext
|
||||
from django.models.core import flatfiles
|
||||
from django.models.flatpages import flatpages
|
||||
from django.utils.httpwrappers import HttpResponse
|
||||
from django.conf.settings import SITE_ID
|
||||
|
||||
DEFAULT_TEMPLATE = 'flatfiles/default'
|
||||
DEFAULT_TEMPLATE = 'flatpages/default'
|
||||
|
||||
def flat_file(request, url):
|
||||
def flatpage(request, url):
|
||||
"""
|
||||
Flat file view
|
||||
Flat page view.
|
||||
|
||||
Models: `core.flatfiles`
|
||||
Models: `flatpages.flatpages`
|
||||
Templates: Uses the template defined by the ``template_name`` field,
|
||||
or `flatfiles/default` if template_name is not defined.
|
||||
or `flatpages/default` if template_name is not defined.
|
||||
Context:
|
||||
flatfile
|
||||
`flatfiles.flatfiles` object
|
||||
flatpage
|
||||
`flatpages.flatpages` object
|
||||
"""
|
||||
if not url.startswith('/'):
|
||||
url = "/" + url
|
||||
f = get_object_or_404(flatfiles, url__exact=url, sites__id__exact=SITE_ID)
|
||||
f = get_object_or_404(flatpages, url__exact=url, sites__id__exact=SITE_ID)
|
||||
# If registration is required for accessing this page, and the user isn't
|
||||
# logged in, redirect to the login page.
|
||||
if request.user.is_anonymous() and f.registration_required:
|
||||
if f.registration_required and request.user.is_anonymous():
|
||||
from django.views.auth.login import redirect_to_login
|
||||
return redirect_to_login(request.path)
|
||||
if f.template_name:
|
||||
@ -30,6 +30,6 @@ def flat_file(request, url):
|
||||
else:
|
||||
t = template_loader.get_template(DEFAULT_TEMPLATE)
|
||||
c = DjangoContext(request, {
|
||||
'flatfile': f,
|
||||
'flatpage': f,
|
||||
})
|
||||
return HttpResponse(t.render(c))
|
0
django/contrib/redirects/__init__.py
Normal file
0
django/contrib/redirects/__init__.py
Normal file
27
django/contrib/redirects/middleware.py
Normal file
27
django/contrib/redirects/middleware.py
Normal file
@ -0,0 +1,27 @@
|
||||
from django.models.redirects import redirects
|
||||
from django.utils import httpwrappers
|
||||
from django.conf.settings import APPEND_SLASH, SITE_ID
|
||||
|
||||
class RedirectFallbackMiddleware:
|
||||
def process_response(self, request, response):
|
||||
if response.status_code != 404:
|
||||
return response # No need to check for a redirect for non-404 responses.
|
||||
path = request.get_full_path()
|
||||
try:
|
||||
r = redirects.get_object(site__id__exact=SITE_ID, old_path__exact=path)
|
||||
except redirects.RedirectDoesNotExist:
|
||||
r = None
|
||||
if r is None and APPEND_SLASH:
|
||||
# Try removing the trailing slash.
|
||||
try:
|
||||
r = redirects.get_object(site__id__exact=SITE_ID,
|
||||
old_path__exact=path[:path.rfind('/')]+path[path.rfind('/')+1:])
|
||||
except redirects.RedirectDoesNotExist:
|
||||
pass
|
||||
if r is not None:
|
||||
if r == '':
|
||||
return httpwrappers.HttpResponseGone()
|
||||
return httpwrappers.HttpResponseRedirect(r.new_path)
|
||||
|
||||
# No redirect was found. Return the response.
|
||||
return response
|
1
django/contrib/redirects/models/__init__.py
Normal file
1
django/contrib/redirects/models/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
__all__ = ['redirects']
|
23
django/contrib/redirects/models/redirects.py
Normal file
23
django/contrib/redirects/models/redirects.py
Normal file
@ -0,0 +1,23 @@
|
||||
from django.core import meta
|
||||
from django.models.core import Site
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
class Redirect(meta.Model):
|
||||
site = meta.ForeignKey(Site, radio_admin=meta.VERTICAL)
|
||||
old_path = meta.CharField(_('redirect from'), maxlength=200, db_index=True,
|
||||
help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
|
||||
new_path = meta.CharField(_('redirect to'), maxlength=200, blank=True,
|
||||
help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
|
||||
class META:
|
||||
verbose_name = _('redirect')
|
||||
verbose_name_plural = _('redirects')
|
||||
db_table = 'django_redirects'
|
||||
unique_together=(('site', 'old_path'),)
|
||||
ordering = ('old_path',)
|
||||
admin = meta.Admin(
|
||||
list_filter = ('site',),
|
||||
search_fields = ('old_path', 'new_path'),
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return "%s ---> %s" % (self.old_path, self.new_path)
|
@ -1,8 +1,6 @@
|
||||
from django.conf import settings
|
||||
from django.core import exceptions
|
||||
from django.utils import httpwrappers
|
||||
from django.core.mail import mail_managers
|
||||
from django.views.core.flatfiles import flat_file
|
||||
import md5, os
|
||||
|
||||
class CommonMiddleware:
|
||||
@ -17,9 +15,6 @@ class CommonMiddleware:
|
||||
- ETags: If the USE_ETAGS setting is set, ETags will be calculated from
|
||||
the entire page content and Not Modified responses will be returned
|
||||
appropriately.
|
||||
|
||||
- Flat files: For 404 responses, a flat file matching the given path
|
||||
will be looked up and used if found.
|
||||
"""
|
||||
|
||||
def process_request(self, request):
|
||||
@ -55,12 +50,6 @@ class CommonMiddleware:
|
||||
def process_response(self, request, response):
|
||||
"Check for a flat page (for 404s) and calculate the Etag, if needed."
|
||||
if response.status_code == 404:
|
||||
if settings.USE_FLAT_PAGES:
|
||||
try:
|
||||
return flat_file(request, request.path)
|
||||
except exceptions.Http404:
|
||||
pass
|
||||
|
||||
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.
|
||||
|
@ -1,6 +1,6 @@
|
||||
import base64, md5, random, sys
|
||||
import cPickle as pickle
|
||||
from django.core import meta, validators
|
||||
from django.core import meta
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
class Site(meta.Model):
|
||||
@ -63,56 +63,6 @@ class ContentType(meta.Model):
|
||||
"""
|
||||
return self.get_model_module().get_object(**kwargs)
|
||||
|
||||
class Redirect(meta.Model):
|
||||
site = meta.ForeignKey(Site, radio_admin=meta.VERTICAL)
|
||||
old_path = meta.CharField(_('redirect from'), maxlength=200, db_index=True,
|
||||
help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
|
||||
new_path = meta.CharField(_('redirect to'), maxlength=200, blank=True,
|
||||
help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
|
||||
class META:
|
||||
verbose_name = _('redirect')
|
||||
verbose_name_plural = _('redirects')
|
||||
db_table = 'redirects'
|
||||
unique_together=(('site', 'old_path'),)
|
||||
ordering = ('old_path',)
|
||||
admin = meta.Admin(
|
||||
list_filter = ('site',),
|
||||
search_fields = ('old_path', 'new_path'),
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return "%s ---> %s" % (self.old_path, self.new_path)
|
||||
|
||||
class FlatFile(meta.Model):
|
||||
url = meta.CharField(_('URL'), maxlength=100, validator_list=[validators.isAlphaNumericURL],
|
||||
help_text=_("Example: '/about/contact/'. Make sure to have leading and trailing slashes."))
|
||||
title = meta.CharField(_('title'), maxlength=200)
|
||||
content = meta.TextField(_('content'))
|
||||
enable_comments = meta.BooleanField(_('enable comments'))
|
||||
template_name = meta.CharField(_('template name'), maxlength=70, blank=True,
|
||||
help_text=_("Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'."))
|
||||
registration_required = meta.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
|
||||
sites = meta.ManyToManyField(Site)
|
||||
class META:
|
||||
db_table = 'flatfiles'
|
||||
verbose_name = _('flat page')
|
||||
verbose_name_plural = _('flat pages')
|
||||
ordering = ('url',)
|
||||
admin = meta.Admin(
|
||||
fields = (
|
||||
(None, {'fields': ('url', 'title', 'content', 'sites')}),
|
||||
('Advanced options', {'classes': 'collapse', 'fields': ('enable_comments', 'registration_required', 'template_name')}),
|
||||
),
|
||||
list_filter = ('sites',),
|
||||
search_fields = ('url', 'title'),
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return "%s -- %s" % (self.url, self.title)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return self.url
|
||||
|
||||
class Session(meta.Model):
|
||||
session_key = meta.CharField(_('session key'), maxlength=40, primary_key=True)
|
||||
session_data = meta.TextField(_('session data'))
|
||||
|
@ -4,7 +4,7 @@ from django.models.core import sites, contenttypes
|
||||
from django.utils import httpwrappers
|
||||
|
||||
def shortcut(request, content_type_id, object_id):
|
||||
"""Redirect to an object's page based on a content-type ID and an object ID"""
|
||||
"Redirect to an object's page based on a content-type ID and an object ID."
|
||||
# Look up the object, making sure it's got a get_absolute_url() function.
|
||||
try:
|
||||
content_type = contenttypes.get_object(pk=content_type_id)
|
||||
@ -15,23 +15,23 @@ def shortcut(request, content_type_id, object_id):
|
||||
absurl = obj.get_absolute_url()
|
||||
except AttributeError:
|
||||
raise Http404, "%s objects don't have get_absolute_url() methods" % content_type.name
|
||||
|
||||
# Try to figure out the object's domain so we can do a cross-site redirect
|
||||
# if necessary
|
||||
|
||||
# Try to figure out the object's domain, so we can do a cross-site redirect
|
||||
# if necessary.
|
||||
|
||||
# If the object actually defines a domain, we're done.
|
||||
if absurl.startswith('http://'):
|
||||
return httpwrappers.HttpResponseRedirect(absurl)
|
||||
|
||||
object_domain = None
|
||||
|
||||
|
||||
# Next, look for an many-to-many relationship to sites
|
||||
if hasattr(obj, 'get_site_list'):
|
||||
site_list = obj.get_site_list()
|
||||
if site_list:
|
||||
object_domain = site_list[0].domain
|
||||
|
||||
# Next, look for a many-to-one relationship to sites
|
||||
|
||||
# Next, look for a many-to-one relationship to sites
|
||||
elif hasattr(obj, 'get_site'):
|
||||
try:
|
||||
object_domain = obj.get_site().domain
|
||||
@ -55,34 +55,15 @@ def page_not_found(request):
|
||||
Templates: `404`
|
||||
Context: None
|
||||
"""
|
||||
from django.models.core import redirects
|
||||
from django.conf.settings import APPEND_SLASH, SITE_ID
|
||||
path = request.get_full_path()
|
||||
try:
|
||||
r = redirects.get_object(site__id__exact=SITE_ID, old_path__exact=path)
|
||||
except redirects.RedirectDoesNotExist:
|
||||
r = None
|
||||
if r is None and APPEND_SLASH:
|
||||
# Try removing the trailing slash.
|
||||
try:
|
||||
r = redirects.get_object(site__id__exact=SITE_ID, old_path__exact=path[:path.rfind('/')]+path[path.rfind('/')+1:])
|
||||
except redirects.RedirectDoesNotExist:
|
||||
pass
|
||||
if r is not None:
|
||||
if r == '':
|
||||
return httpwrappers.HttpResponseGone()
|
||||
return httpwrappers.HttpResponseRedirect(r.new_path)
|
||||
t = loader.get_template('404')
|
||||
c = Context()
|
||||
return httpwrappers.HttpResponseNotFound(t.render(c))
|
||||
return httpwrappers.HttpResponseNotFound(t.render(Context()))
|
||||
|
||||
def server_error(request):
|
||||
"""
|
||||
500 Error handler
|
||||
500 error handler.
|
||||
|
||||
Templates: `500`
|
||||
Context: None
|
||||
"""
|
||||
t = loader.get_template('500')
|
||||
c = Context()
|
||||
return httpwrappers.HttpResponseServerError(t.render(c))
|
||||
return httpwrappers.HttpResponseServerError(t.render(Context()))
|
||||
|
114
docs/flatpages.txt
Normal file
114
docs/flatpages.txt
Normal file
@ -0,0 +1,114 @@
|
||||
=================
|
||||
The flatpages app
|
||||
=================
|
||||
|
||||
Django comes with an optional "flatpages" application. It lets you store simple
|
||||
"flat" HTML content in a database and handles the management for you.
|
||||
|
||||
A flatpage is a simple object with a URL, title and content. Use it for
|
||||
one-off, special-case pages, such as "About" or "Privacy Policy" pages, that
|
||||
you want to store in a database but for which you don't want to develop a
|
||||
custom Django application.
|
||||
|
||||
A flatpage can use a custom template or a default, systemwide flatpage
|
||||
template. It can be associated with one, or multiple, sites.
|
||||
|
||||
Here are some examples of flatpages on Django-powered sites:
|
||||
|
||||
* http://www.chicagocrime.org/about/
|
||||
* http://www.lawrence.com/about/contact/
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install the flatpages app, follow these two steps:
|
||||
|
||||
1. Add ``"django.contrib.flatpages"`` to your INSTALLED_APPS_ setting.
|
||||
2. Add ``"django.contrib.flatpages.middleware.FlatpageFallbackMiddleware"``
|
||||
to your MIDDLEWARE_CLASSES_ setting.
|
||||
3. Run the command ``django-admin.py install flatpages``.
|
||||
|
||||
.. _INSTALLED_APPS: http://www.djangoproject.com/documentation/settings/#installed-apps
|
||||
.. _MIDDLEWARE_CLASSES: http://www.djangoproject.com/documentation/settings/#middleware-classes
|
||||
|
||||
How it works
|
||||
============
|
||||
|
||||
``django-admin.py install flatpages`` creates two tables in your database:
|
||||
``django_flatpages`` and ``django_flatpages_sites``. ``django_flatpages`` is a
|
||||
simple lookup table that essentially maps a URL to a title and bunch of text
|
||||
content. ``django_flatpages_sites`` associates a flatpage with a site.
|
||||
|
||||
The ``FlatpageFallbackMiddleware`` does all of the work. Each time any Django
|
||||
application raises a 404 error, this middleware checks the flatpages database
|
||||
for the requested URL as a last resort. Specifically, it checks for a flatpage
|
||||
with the given URL with a site ID that corresponds to the SITE_ID_ setting.
|
||||
|
||||
If it finds a match, it follows this algorithm:
|
||||
|
||||
* If the flatpage has a custom template, it loads that template. Otherwise,
|
||||
it loads the template ``flatpages/default``.
|
||||
* It passes that template a single context variable, ``flatpage``, which is
|
||||
the flatpage object. It uses DjangoContext_ in rendering the template.
|
||||
|
||||
If it doesn't find a match, the request continues to be processed as usual.
|
||||
|
||||
The middleware only gets activated for 404s -- not for 500s or responses of any
|
||||
other status code.
|
||||
|
||||
Note that the order of ``MIDDLEWARE_CLASSES`` matters. Generally, you can put
|
||||
``FlatpageFallbackMiddleware`` at the end of the list, because it's a last
|
||||
resort.
|
||||
|
||||
For more on middleware, read the `middleware docs`_.
|
||||
|
||||
.. _SITE_ID: http://www.djangoproject.com/documentation/settings/#site-id
|
||||
.. _DjangoContext: http://www.djangoproject.com/documentation/templates_python/#subclassing-context-djangocontext
|
||||
.. _middleware docs: http://www.djangoproject.com/documentation/middleware/
|
||||
|
||||
How to add, change and delete flatpages
|
||||
=======================================
|
||||
|
||||
Via the admin interface
|
||||
-----------------------
|
||||
|
||||
If you've activated the automatic Django admin interface, you should see a
|
||||
"Flatpages" section on the admin index page. Edit flatpages as you edit any
|
||||
other object in the system.
|
||||
|
||||
Via the Python API
|
||||
------------------
|
||||
|
||||
Flatpages are represented by a standard `Django model`_, which lives in
|
||||
`django/contrib/flatpages/models/flatpages.py`_. You can access flatpage
|
||||
objects via the `Django database API`_.
|
||||
|
||||
.. _Django model: http://www.djangoproject.com/documentation/model_api/
|
||||
.. _django/contrib/flatpages/models/flatpages.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/models/flatpages.py
|
||||
.. _Django database API: http://www.djangoproject.com/documentation/db_api/
|
||||
|
||||
Flatpage templates
|
||||
==================
|
||||
|
||||
By default, flatpages are rendered via the template ``flatpages/default``, but
|
||||
you can override that for a particular flatpage.
|
||||
|
||||
Creating the ``flatpages/default`` template is your responsibility; in your
|
||||
template directory, just create a ``flatpages`` directory containing a file
|
||||
``default.html``.
|
||||
|
||||
Flatpage templates are passed a single context variable, ``flatpage``, which is
|
||||
the flatpage object.
|
||||
|
||||
Here's a sample ``flatpages/default`` template::
|
||||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ flatpage.title }}</title>
|
||||
</head>
|
||||
<body>
|
||||
{{ flatpage.content }}
|
||||
</body>
|
||||
</html>
|
@ -69,10 +69,7 @@ following names:
|
||||
* ``sites``
|
||||
* ``packages``
|
||||
* ``content_types``
|
||||
* ``redirects``
|
||||
* ``flatfiles``
|
||||
* ``core_sessions``
|
||||
* ``flatfiles_sites``
|
||||
* ``auth_permissions``
|
||||
* ``auth_groups``
|
||||
* ``auth_users``
|
||||
|
@ -27,7 +27,9 @@ name. For example, here's the default ``MIDDLEWARE_CLASSES`` created by
|
||||
"django.middleware.doc.XViewMiddleware",
|
||||
)
|
||||
|
||||
Django applies middleware in the order it's defined in ``MIDDLEWARE_CLASSES``.
|
||||
Django applies middleware in the order it's defined in ``MIDDLEWARE_CLASSES``,
|
||||
except in the case of response and exception middleware, which is applied in
|
||||
reverse order.
|
||||
|
||||
A Django installation doesn't require any middleware -- e.g.,
|
||||
``MIDDLEWARE_CLASSES`` can be empty, if you'd like -- but it's strongly
|
||||
@ -70,10 +72,6 @@ Adds a few conveniences for perfectionists:
|
||||
MD5-hashing the page content, and it'll take care of sending
|
||||
``Not Modified`` responses, if appropriate.
|
||||
|
||||
* Handles flat pages. Every time Django encounters a 404 -- either within
|
||||
a view or as a result of no URLconfs matching -- it will check the
|
||||
database of flat pages based on the current URL.
|
||||
|
||||
django.middleware.doc.XViewMiddleware
|
||||
-------------------------------------
|
||||
|
||||
|
@ -831,7 +831,7 @@ object, which takes the following parameters. All are optional.
|
||||
"click to expand" link. Fieldsets with the ``wide`` style will be
|
||||
given extra horizontal space.
|
||||
|
||||
For example (taken from the ``core.flatfiles`` model)::
|
||||
For example (taken from the ``django.contrib.flatpages`` model)::
|
||||
|
||||
fields = (
|
||||
(None, {
|
||||
|
72
docs/redirects.txt
Normal file
72
docs/redirects.txt
Normal file
@ -0,0 +1,72 @@
|
||||
=================
|
||||
The redirects app
|
||||
=================
|
||||
|
||||
Django comes with an optional redirects application. It lets you store simple
|
||||
redirects in a database and handles the redirecting for you.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install the redirects app, follow these two steps:
|
||||
|
||||
1. Add ``"django.contrib.redirects"`` to your INSTALLED_APPS_ setting.
|
||||
2. Add ``"django.contrib.redirects.middleware.RedirectFallbackMiddleware"``
|
||||
to your MIDDLEWARE_CLASSES_ setting.
|
||||
3. Run the command ``django-admin.py install redirects``.
|
||||
|
||||
.. _INSTALLED_APPS: http://www.djangoproject.com/documentation/settings/#installed-apps
|
||||
.. _MIDDLEWARE_CLASSES: http://www.djangoproject.com/documentation/settings/#middleware-classes
|
||||
|
||||
How it works
|
||||
============
|
||||
|
||||
``django-admin.py install redirects`` creates a ``django_redirects`` table in
|
||||
your database. This is a simple lookup table with ``site_id``, ``old_path`` and
|
||||
``new_path`` fields.
|
||||
|
||||
The ``RedirectFallbackMiddleware`` does all of the work. Each time any Django
|
||||
application raises a 404 error, this middleware checks the redirects database
|
||||
for the requested URL as a last resort. Specifically, it checks for a redirect
|
||||
with the given ``old_path`` with a site ID that corresponds to the SITE_ID_
|
||||
setting.
|
||||
|
||||
* If it finds a match, and ``new_path`` is not empty, it redirects to
|
||||
``new_path``.
|
||||
* If it finds a match, and ``new_path`` is empty, it sends a 410 ("Gone")
|
||||
HTTP header and empty (content-less) response.
|
||||
* If it doesn't find a match, the request continues to be processed as
|
||||
usual.
|
||||
|
||||
The middleware only gets activated for 404s -- not for 500s or responses of any
|
||||
other status code.
|
||||
|
||||
Note that the order of ``MIDDLEWARE_CLASSES`` matters. Generally, you can put
|
||||
``RedirectFallbackMiddleware`` at the end of the list, because it's a last
|
||||
resort.
|
||||
|
||||
For more on middleware, read the `middleware docs`_.
|
||||
|
||||
.. _SITE_ID: http://www.djangoproject.com/documentation/settings/#site-id
|
||||
.. _middleware docs: http://www.djangoproject.com/documentation/middleware/
|
||||
|
||||
How to add, change and delete redirects
|
||||
=======================================
|
||||
|
||||
Via the admin interface
|
||||
-----------------------
|
||||
|
||||
If you've activated the automatic Django admin interface, you should see a
|
||||
"Redirects" section on the admin index page. Edit redirects as you edit any
|
||||
other object in the system.
|
||||
|
||||
Via the Python API
|
||||
------------------
|
||||
|
||||
Redirects are represented by a standard `Django model`_, which lives in
|
||||
`django/contrib/redirects/models/redirects.py`_. You can access redirect
|
||||
objects via the `Django database API`_.
|
||||
|
||||
.. _Django model: http://www.djangoproject.com/documentation/model_api/
|
||||
.. _django/contrib/redirects/models/redirects.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/redirects/models/redirects.py
|
||||
.. _Django database API: http://www.djangoproject.com/documentation/db_api/
|
@ -358,6 +358,17 @@ Default: ``('/cgi-bin/', '/_vti_bin', '/_vti_inf')``
|
||||
A tuple of strings that specify beginnings of URLs that should be ignored by
|
||||
the 404 e-mailer. See ``SEND_BROKEN_LINK_EMAILS`` and ``IGNORABLE_404_ENDS``.
|
||||
|
||||
INSTALLED_APPS
|
||||
--------------
|
||||
|
||||
Default: Not defined
|
||||
|
||||
A tuple of strings designating all applications that are enabled in this Django
|
||||
installation. Each string should be a full Python path to a Python package that
|
||||
contains a Django application, as created by `django-admin.py startapp`_.
|
||||
|
||||
.. _django-admin.py startapp: http://www.djangoproject.com/documentation/django_admin/#startapp-appname
|
||||
|
||||
INTERNAL_IPS
|
||||
------------
|
||||
|
||||
@ -488,6 +499,15 @@ See the `session docs`_.
|
||||
``'hotclub'`` is a reference to the Hot Club of France, the band Django
|
||||
Reinhardt played in.
|
||||
|
||||
SITE_ID
|
||||
-------
|
||||
|
||||
Default: Not defined
|
||||
|
||||
The ID, as an integer, of the current site in the ``sites`` database. This is
|
||||
used so that application data can hook into specific site(s) and a single
|
||||
database can manage content for multiple sites.
|
||||
|
||||
TEMPLATE_DIRS
|
||||
-------------
|
||||
|
||||
@ -542,14 +562,6 @@ A boolean that specifies whether to output the "Etag" header. This saves
|
||||
bandwidth but slows down performance. This is only used if ``CommonMiddleware``
|
||||
is installed (see the `middleware docs`_).
|
||||
|
||||
USE_FLAT_PAGES
|
||||
--------------
|
||||
|
||||
Default: ``True``
|
||||
|
||||
Whether to check the flat-pages table as a last resort for all 404 errors. This
|
||||
is only used if ``CommonMiddleware`` is installed (see the `middleware docs`_).
|
||||
|
||||
.. _cache docs: http://www.djangoproject.com/documentation/cache/
|
||||
.. _middleware docs: http://www.djangoproject.com/documentation/middleware/
|
||||
.. _session docs: http://www.djangoproject.com/documentation/sessions/
|
||||
|
@ -56,7 +56,6 @@ module that will be used for the entire site. Here's the URLconf for the
|
||||
(r'^documentation/', include('django_website.apps.docs.urls.docs')),
|
||||
(r'^comments/', include('django.contrib.comments.urls.comments')),
|
||||
(r'^rss/', include('django.conf.urls.rss')),
|
||||
(r'', include('django.conf.urls.flatfiles')),
|
||||
)
|
||||
|
||||
Note that an included URLconf receives any captured parameters from parent
|
||||
|
Loading…
x
Reference in New Issue
Block a user