1
0
mirror of https://github.com/django/django.git synced 2025-07-05 02:09:13 +00:00

magic-removal: Merged to [2548]

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2549 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-03-22 22:35:14 +00:00
parent e134da8a1a
commit 17a4401f4c
11 changed files with 3759 additions and 123 deletions

View File

@ -56,7 +56,6 @@ answer newbie questions, and generally made Django that much better:
gandalf@owca.info gandalf@owca.info
Baishampayan Ghose Baishampayan Ghose
Espen Grindhaug <http://grindhaug.org/> Espen Grindhaug <http://grindhaug.org/>
Gustavo Picon
Brant Harris Brant Harris
hipertracker@gmail.com hipertracker@gmail.com
Ian Holsman <http://feh.holsman.net/> Ian Holsman <http://feh.holsman.net/>
@ -68,6 +67,7 @@ answer newbie questions, and generally made Django that much better:
Russell Keith-Magee <freakboy@iinet.net.au> Russell Keith-Magee <freakboy@iinet.net.au>
Garth Kidd <http://www.deadlybloodyserious.com/> Garth Kidd <http://www.deadlybloodyserious.com/>
Sune Kirkeby <http://ibofobi.dk/> Sune Kirkeby <http://ibofobi.dk/>
Bruce Kroeze <http://coderseye.com/>
lakin.wecker@gmail.com lakin.wecker@gmail.com
Stuart Langridge <http://www.kryogenix.org/> Stuart Langridge <http://www.kryogenix.org/>
Eugene Lazutkin <http://lazutkin.com/blog/> Eugene Lazutkin <http://lazutkin.com/blog/>
@ -89,6 +89,7 @@ answer newbie questions, and generally made Django that much better:
oggie rob <oz.robharvey@gmail.com> oggie rob <oz.robharvey@gmail.com>
pgross@thoughtworks.com pgross@thoughtworks.com
phaedo <http://phaedo.cx/> phaedo <http://phaedo.cx/>
Gustavo Picon
Luke Plant <http://lukeplant.me.uk/> Luke Plant <http://lukeplant.me.uk/>
plisk plisk
Daniel Poelzleithner <http://poelzi.org/> Daniel Poelzleithner <http://poelzi.org/>

View File

@ -39,6 +39,7 @@ LANGUAGES = (
('cy', _('Welsh')), ('cy', _('Welsh')),
('da', _('Danish')), ('da', _('Danish')),
('de', _('German')), ('de', _('German')),
('el', _('Greek')),
('en', _('English')), ('en', _('English')),
('es', _('Spanish')), ('es', _('Spanish')),
('fr', _('French')), ('fr', _('French')),
@ -52,6 +53,7 @@ LANGUAGES = (
('ro', _('Romanian')), ('ro', _('Romanian')),
('ru', _('Russian')), ('ru', _('Russian')),
('sk', _('Slovak')), ('sk', _('Slovak')),
('sl', _('Slovenian')),
('sr', _('Serbian')), ('sr', _('Serbian')),
('sv', _('Swedish')), ('sv', _('Swedish')),
('zh-cn', _('Simplified Chinese')), ('zh-cn', _('Simplified Chinese')),
@ -85,6 +87,10 @@ DATABASE_PORT = '' # Set to empty string for default. Not used with
# Host for sending e-mail. # Host for sending e-mail.
EMAIL_HOST = 'localhost' EMAIL_HOST = 'localhost'
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
# List of strings representing installed apps. # List of strings representing installed apps.
INSTALLED_APPS = () INSTALLED_APPS = ()

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Django 1.0\n" "Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-02-02 11:26+0100\n" "POT-Creation-Date: 2006-03-20 11:44+0100\n"
"PO-Revision-Date: 2005-10-08 00:03+0200\n" "PO-Revision-Date: 2005-10-08 00:03+0200\n"
"Last-Translator: Georg Bauer <gb@bofh.ms>\n" "Last-Translator: Georg Bauer <gb@bofh.ms>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -74,7 +74,7 @@ msgstr "Datum/Zeit Erstellung"
msgid "is public" msgid "is public"
msgstr "ist öffentlich" msgstr "ist öffentlich"
#: contrib/comments/models/comments.py:26 contrib/admin/views/doc.py:256 #: contrib/comments/models/comments.py:26 contrib/admin/views/doc.py:257
msgid "IP address" msgid "IP address"
msgstr "IP-Adresse" msgstr "IP-Adresse"
@ -429,7 +429,7 @@ msgstr "Logeintrag"
msgid "log entries" msgid "log entries"
msgstr "Logeinträge" msgstr "Logeinträge"
#: contrib/admin/templatetags/admin_list.py:241 #: contrib/admin/templatetags/admin_list.py:240
msgid "All dates" msgid "All dates"
msgstr "Alle Tage" msgstr "Alle Tage"
@ -573,78 +573,74 @@ msgstr "Sicher? Ganz sicher?"
msgid "Change history: %s" msgid "Change history: %s"
msgstr "Änderungsgeschichte: %s" msgstr "Änderungsgeschichte: %s"
#: contrib/admin/views/doc.py:244 contrib/admin/views/doc.py:253 #: contrib/admin/views/doc.py:245 contrib/admin/views/doc.py:254
#: contrib/admin/views/doc.py:255 contrib/admin/views/doc.py:261 #: contrib/admin/views/doc.py:256 contrib/admin/views/doc.py:262
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:264 #: contrib/admin/views/doc.py:263 contrib/admin/views/doc.py:265
msgid "Integer" msgid "Integer"
msgstr "Ganzzahl" msgstr "Ganzzahl"
#: contrib/admin/views/doc.py:245 #: contrib/admin/views/doc.py:246
msgid "Boolean (Either True or False)" msgid "Boolean (Either True or False)"
msgstr "Wahrheitswert (Wahr oder Falsch)" msgstr "Wahrheitswert (Wahr oder Falsch)"
#: contrib/admin/views/doc.py:246 #: contrib/admin/views/doc.py:247 contrib/admin/views/doc.py:264
#, python-format #, python-format
msgid "String (up to %(maxlength)s)" msgid "String (up to %(maxlength)s)"
msgstr "Zeichenkette (bis zu %(maxlength)s Zeichen)" msgstr "Zeichenkette (bis zu %(maxlength)s Zeichen)"
#: contrib/admin/views/doc.py:247 #: contrib/admin/views/doc.py:248
msgid "Comma-separated integers" msgid "Comma-separated integers"
msgstr "Kommaseparierte Liste von Zahlen" msgstr "Kommaseparierte Liste von Zahlen"
#: contrib/admin/views/doc.py:248 #: contrib/admin/views/doc.py:249
msgid "Date (without time)" msgid "Date (without time)"
msgstr "Datum (ohne Zeit)" msgstr "Datum (ohne Zeit)"
#: contrib/admin/views/doc.py:249 #: contrib/admin/views/doc.py:250
msgid "Date (with time)" msgid "Date (with time)"
msgstr "Datum (mit Zeit)" msgstr "Datum (mit Zeit)"
#: contrib/admin/views/doc.py:250 #: contrib/admin/views/doc.py:251
msgid "E-mail address" msgid "E-mail address"
msgstr "E-mail-Adresse" msgstr "E-mail-Adresse"
#: contrib/admin/views/doc.py:251 contrib/admin/views/doc.py:254 #: contrib/admin/views/doc.py:252 contrib/admin/views/doc.py:255
msgid "File path" msgid "File path"
msgstr "Dateipfad" msgstr "Dateipfad"
#: contrib/admin/views/doc.py:252 #: contrib/admin/views/doc.py:253
msgid "Decimal number" msgid "Decimal number"
msgstr "Dezimalzahl" msgstr "Dezimalzahl"
#: contrib/admin/views/doc.py:258 #: contrib/admin/views/doc.py:259
msgid "Boolean (Either True, False or None)" msgid "Boolean (Either True, False or None)"
msgstr "Wahrheitswert (Wahr, Falsch oder Nichts)" msgstr "Wahrheitswert (Wahr, Falsch oder Nichts)"
#: contrib/admin/views/doc.py:259 #: contrib/admin/views/doc.py:260
msgid "Relation to parent model" msgid "Relation to parent model"
msgstr "Beziehung zum Übermodell" msgstr "Beziehung zum Übermodell"
#: contrib/admin/views/doc.py:260 #: contrib/admin/views/doc.py:261
msgid "Phone number" msgid "Phone number"
msgstr "Telefonnummer" msgstr "Telefonnummer"
#: contrib/admin/views/doc.py:263 #: contrib/admin/views/doc.py:266
msgid "String (up to 50)"
msgstr "Zeichenkette (bis zu 50 Zeichen)"
#: contrib/admin/views/doc.py:265
msgid "Text" msgid "Text"
msgstr "Text" msgstr "Text"
#: contrib/admin/views/doc.py:266 #: contrib/admin/views/doc.py:267
msgid "Time" msgid "Time"
msgstr "Zeit" msgstr "Zeit"
#: contrib/admin/views/doc.py:267 contrib/flatpages/models/flatpages.py:6 #: contrib/admin/views/doc.py:268 contrib/flatpages/models/flatpages.py:6
msgid "URL" msgid "URL"
msgstr "URL" msgstr "URL"
#: contrib/admin/views/doc.py:268 #: contrib/admin/views/doc.py:269
msgid "U.S. state (two uppercase letters)" msgid "U.S. state (two uppercase letters)"
msgstr "U.S. Bundesstaat (zwei Grossbuchstaben)" msgstr "U.S. Bundesstaat (zwei Grossbuchstaben)"
#: contrib/admin/views/doc.py:269 #: contrib/admin/views/doc.py:270
msgid "XML text" msgid "XML text"
msgstr "XML Text" msgstr "XML Text"
@ -1474,75 +1470,83 @@ msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
#: conf/global_settings.py:42 #: conf/global_settings.py:42
msgid "Greek"
msgstr "Griechisch"
#: conf/global_settings.py:43
msgid "English" msgid "English"
msgstr "Englisch" msgstr "Englisch"
#: conf/global_settings.py:43 #: conf/global_settings.py:44
msgid "Spanish" msgid "Spanish"
msgstr "Spanisch" msgstr "Spanisch"
#: conf/global_settings.py:44 #: conf/global_settings.py:45
msgid "French" msgid "French"
msgstr "Französisch" msgstr "Französisch"
#: conf/global_settings.py:45 #: conf/global_settings.py:46
msgid "Galician" msgid "Galician"
msgstr "Galicisch" msgstr "Galicisch"
#: conf/global_settings.py:46 #: conf/global_settings.py:47
msgid "Icelandic" msgid "Icelandic"
msgstr "Isländisch" msgstr "Isländisch"
#: conf/global_settings.py:47 #: conf/global_settings.py:48
msgid "Italian" msgid "Italian"
msgstr "Italienisch" msgstr "Italienisch"
#: conf/global_settings.py:48 #: conf/global_settings.py:49
msgid "Japanese" msgid "Japanese"
msgstr "Japanisch" msgstr "Japanisch"
#: conf/global_settings.py:49 #: conf/global_settings.py:50
msgid "Dutch" msgid "Dutch"
msgstr "Holländisch" msgstr "Holländisch"
#: conf/global_settings.py:50 #: conf/global_settings.py:51
msgid "Norwegian" msgid "Norwegian"
msgstr "Norwegisch" msgstr "Norwegisch"
#: conf/global_settings.py:51 #: conf/global_settings.py:52
msgid "Brazilian" msgid "Brazilian"
msgstr "Brasilianisch" msgstr "Brasilianisch"
#: conf/global_settings.py:52 #: conf/global_settings.py:53
msgid "Romanian" msgid "Romanian"
msgstr "Rumänisch" msgstr "Rumänisch"
#: conf/global_settings.py:53 #: conf/global_settings.py:54
msgid "Russian" msgid "Russian"
msgstr "Russisch" msgstr "Russisch"
#: conf/global_settings.py:54 #: conf/global_settings.py:55
msgid "Slovak" msgid "Slovak"
msgstr "Slowakisch" msgstr "Slowakisch"
#: conf/global_settings.py:55 #: conf/global_settings.py:56
msgid "Slovenian"
msgstr "Slowenisch"
#: conf/global_settings.py:57
msgid "Serbian" msgid "Serbian"
msgstr "Serbisch" msgstr "Serbisch"
#: conf/global_settings.py:56 #: conf/global_settings.py:58
msgid "Swedish" msgid "Swedish"
msgstr "Schwedisch" msgstr "Schwedisch"
#: conf/global_settings.py:57 #: conf/global_settings.py:59
msgid "Simplified Chinese" msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch" msgstr "Vereinfachtes Chinesisch"
#: conf/global_settings.py:58 #: conf/global_settings.py:60
msgid "Traditional Chinese" msgid "Traditional Chinese"
msgstr "Traditionelles Chinesisch" msgstr "Traditionelles Chinesisch"
#: core/formfields.py:59 core/meta/fields.py:285 core/meta/fields.py:488 #: core/formfields.py:59 core/meta/fields.py:283 core/meta/fields.py:486
#: core/meta/fields.py:499 #: core/meta/fields.py:497
msgid "This field is required." msgid "This field is required."
msgstr "Dieses Feld ist zwingend." msgstr "Dieses Feld ist zwingend."
@ -1579,75 +1583,77 @@ msgstr "Bitte eine ganze, positive Zahl eingeben."
msgid "Enter a whole number between 0 and 32,767." msgid "Enter a whole number between 0 and 32,767."
msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben." msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben."
#: core/validators.py:62 #: core/validators.py:61
msgid "This value must contain only letters, numbers and underscores." msgid "This value must contain only letters, numbers and underscores."
msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
#: core/validators.py:66 #: core/validators.py:65
msgid "This value must contain only letters, numbers, underscores and slashes." msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
msgstr "" msgstr ""
"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche " "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche "
"enthalten." "enthalten."
#: core/validators.py:74 #: core/validators.py:73
msgid "Uppercase letters are not allowed here." msgid "Uppercase letters are not allowed here."
msgstr "Großbuchstaben sind hier nicht erlaubt." msgstr "Großbuchstaben sind hier nicht erlaubt."
#: core/validators.py:78 #: core/validators.py:77
msgid "Lowercase letters are not allowed here." msgid "Lowercase letters are not allowed here."
msgstr "Kleinbuchstaben sind hier nicht erlaubt." msgstr "Kleinbuchstaben sind hier nicht erlaubt."
#: core/validators.py:85 #: core/validators.py:84
msgid "Enter only digits separated by commas." msgid "Enter only digits separated by commas."
msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt." msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt."
#: core/validators.py:97 #: core/validators.py:96
msgid "Enter valid e-mail addresses separated by commas." msgid "Enter valid e-mail addresses separated by commas."
msgstr "Bitte mit Komma getrennte, gültige eMail-Adressen eingeben." msgstr "Bitte mit Komma getrennte, gültige eMail-Adressen eingeben."
#: core/validators.py:101 #: core/validators.py:100
msgid "Please enter a valid IP address." msgid "Please enter a valid IP address."
msgstr "Bitte eine gültige IP-Adresse eingeben." msgstr "Bitte eine gültige IP-Adresse eingeben."
#: core/validators.py:105 #: core/validators.py:104
msgid "Empty values are not allowed here." msgid "Empty values are not allowed here."
msgstr "Dieses Feld darf nicht leer sein." msgstr "Dieses Feld darf nicht leer sein."
#: core/validators.py:109 #: core/validators.py:108
msgid "Non-numeric characters aren't allowed here." msgid "Non-numeric characters aren't allowed here."
msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt." msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt."
#: core/validators.py:113 #: core/validators.py:112
msgid "This value can't be comprised solely of digits." msgid "This value can't be comprised solely of digits."
msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen." msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen."
#: core/validators.py:118 #: core/validators.py:117
msgid "Enter a whole number." msgid "Enter a whole number."
msgstr "Bitte eine ganze Zahl eingeben." msgstr "Bitte eine ganze Zahl eingeben."
#: core/validators.py:122 #: core/validators.py:121
msgid "Only alphabetical characters are allowed here." msgid "Only alphabetical characters are allowed here."
msgstr "Nur alphabetische Zeichen sind hier erlaubt." msgstr "Nur alphabetische Zeichen sind hier erlaubt."
#: core/validators.py:126 #: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format." msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben." msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben."
#: core/validators.py:130 #: core/validators.py:129
msgid "Enter a valid time in HH:MM format." msgid "Enter a valid time in HH:MM format."
msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben." msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben."
#: core/validators.py:134 #: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "" msgstr ""
"Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM " "Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM "
"eingeben." "eingeben."
#: core/validators.py:138 #: core/validators.py:137
msgid "Enter a valid e-mail address." msgid "Enter a valid e-mail address."
msgstr "Bitte eine gültige eMail-Adresse eingeben" msgstr "Bitte eine gültige eMail-Adresse eingeben"
#: core/validators.py:150 #: core/validators.py:149
msgid "" msgid ""
"Upload a valid image. The file you uploaded was either not an image or a " "Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image." "corrupted image."
@ -1655,27 +1661,27 @@ msgstr ""
"Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild " "Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild "
"oder ist defekt." "oder ist defekt."
#: core/validators.py:157 #: core/validators.py:156
#, python-format #, python-format
msgid "The URL %s does not point to a valid image." msgid "The URL %s does not point to a valid image."
msgstr "Die URL %s zeigt nicht auf ein gültiges Bild." msgstr "Die URL %s zeigt nicht auf ein gültiges Bild."
#: core/validators.py:161 #: core/validators.py:160
#, python-format #, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "" msgstr ""
"Telefonnummern müssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungültig." "Telefonnummern müssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungültig."
#: core/validators.py:169 #: core/validators.py:168
#, python-format #, python-format
msgid "The URL %s does not point to a valid QuickTime video." msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime video." msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime video."
#: core/validators.py:173 #: core/validators.py:172
msgid "A valid URL is required." msgid "A valid URL is required."
msgstr "Eine gültige URL ist hier verlangt." msgstr "Eine gültige URL ist hier verlangt."
#: core/validators.py:187 #: core/validators.py:186
#, python-format #, python-format
msgid "" msgid ""
"Valid HTML is required. Specific errors are:\n" "Valid HTML is required. Specific errors are:\n"
@ -1684,71 +1690,71 @@ msgstr ""
"Bitte gültiges HTML eingeben. Fehler sind:\n" "Bitte gültiges HTML eingeben. Fehler sind:\n"
"%s" "%s"
#: core/validators.py:194 #: core/validators.py:193
#, python-format #, python-format
msgid "Badly formed XML: %s" msgid "Badly formed XML: %s"
msgstr "Ungültiges XML: %s" msgstr "Ungültiges XML: %s"
#: core/validators.py:204 #: core/validators.py:203
#, python-format #, python-format
msgid "Invalid URL: %s" msgid "Invalid URL: %s"
msgstr "Ungültige URL: %s" msgstr "Ungültige URL: %s"
#: core/validators.py:208 core/validators.py:210 #: core/validators.py:207 core/validators.py:209
#, python-format #, python-format
msgid "The URL %s is a broken link." msgid "The URL %s is a broken link."
msgstr "Die URL %s funktioniert nicht." msgstr "Die URL %s funktioniert nicht."
#: core/validators.py:216 #: core/validators.py:215
msgid "Enter a valid U.S. state abbreviation." msgid "Enter a valid U.S. state abbreviation."
msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben." msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben."
#: core/validators.py:231 #: core/validators.py:230
#, python-format #, python-format
msgid "Watch your mouth! The word %s is not allowed here." msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!" msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!" msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!"
#: core/validators.py:238 #: core/validators.py:237
#, python-format #, python-format
msgid "This field must match the '%s' field." msgid "This field must match the '%s' field."
msgstr "Dieses Feld muss zum Feld '%s' passen." msgstr "Dieses Feld muss zum Feld '%s' passen."
#: core/validators.py:257 #: core/validators.py:256
msgid "Please enter something for at least one field." msgid "Please enter something for at least one field."
msgstr "Bitte mindestens eines der Felder ausfüllen." msgstr "Bitte mindestens eines der Felder ausfüllen."
#: core/validators.py:266 core/validators.py:277 #: core/validators.py:265 core/validators.py:276
msgid "Please enter both fields or leave them both empty." msgid "Please enter both fields or leave them both empty."
msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen." msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen."
#: core/validators.py:284 #: core/validators.py:283
#, python-format #, python-format
msgid "This field must be given if %(field)s is %(value)s" msgid "This field must be given if %(field)s is %(value)s"
msgstr "" msgstr ""
"Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat." "Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat."
#: core/validators.py:296 #: core/validators.py:295
#, python-format #, python-format
msgid "This field must be given if %(field)s is not %(value)s" msgid "This field must be given if %(field)s is not %(value)s"
msgstr "" msgstr ""
"Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist." "Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist."
#: core/validators.py:315 #: core/validators.py:314
msgid "Duplicate values are not allowed." msgid "Duplicate values are not allowed."
msgstr "Doppelte Werte sind hier nicht erlaubt." msgstr "Doppelte Werte sind hier nicht erlaubt."
#: core/validators.py:338 #: core/validators.py:337
#, python-format #, python-format
msgid "This value must be a power of %s." msgid "This value must be a power of %s."
msgstr "Dieser Wert muss eine Potenz von %s sein." msgstr "Dieser Wert muss eine Potenz von %s sein."
#: core/validators.py:349 #: core/validators.py:348
msgid "Please enter a valid decimal number." msgid "Please enter a valid decimal number."
msgstr "Bitte eine gültige Dezimalzahl eingeben." msgstr "Bitte eine gültige Dezimalzahl eingeben."
#: core/validators.py:351 #: core/validators.py:350
#, python-format #, python-format
msgid "Please enter a valid decimal number with at most %s total digit." msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural "" msgid_plural ""
@ -1756,7 +1762,7 @@ msgid_plural ""
msgstr[0] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben." msgstr[0] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben."
msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben." msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben."
#: core/validators.py:354 #: core/validators.py:353
#, python-format #, python-format
msgid "Please enter a valid decimal number with at most %s decimal place." msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural "" msgid_plural ""
@ -1766,39 +1772,39 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben." "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben."
#: core/validators.py:364 #: core/validators.py:363
#, python-format #, python-format
msgid "Make sure your uploaded file is at least %s bytes big." msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "" msgstr ""
"Bitte sicherstellen, daß die hochgeladene Datei mindestens %s Bytes gross " "Bitte sicherstellen, daß die hochgeladene Datei mindestens %s Bytes gross "
"ist." "ist."
#: core/validators.py:365 #: core/validators.py:364
#, python-format #, python-format
msgid "Make sure your uploaded file is at most %s bytes big." msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "" msgstr ""
"Bitte sicherstellen, daß die hochgeladene Datei maximal %s Bytes gross ist." "Bitte sicherstellen, daß die hochgeladene Datei maximal %s Bytes gross ist."
#: core/validators.py:378 #: core/validators.py:377
msgid "The format for this field is wrong." msgid "The format for this field is wrong."
msgstr "Das Format für dieses Feld ist falsch." msgstr "Das Format für dieses Feld ist falsch."
#: core/validators.py:393 #: core/validators.py:392
msgid "This field is invalid." msgid "This field is invalid."
msgstr "Dieses Feld ist ungültig." msgstr "Dieses Feld ist ungültig."
#: core/validators.py:428 #: core/validators.py:427
#, python-format #, python-format
msgid "Could not retrieve anything from %s." msgid "Could not retrieve anything from %s."
msgstr "Konnte nichts von %s empfangen." msgstr "Konnte nichts von %s empfangen."
#: core/validators.py:431 #: core/validators.py:430
#, python-format #, python-format
msgid "" msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'." msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'."
#: core/validators.py:464 #: core/validators.py:463
#, python-format #, python-format
msgid "" msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1807,7 +1813,7 @@ msgstr ""
"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile " "Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile "
"beginnt mit \"%(start)s\"." "beginnt mit \"%(start)s\"."
#: core/validators.py:468 #: core/validators.py:467
#, python-format #, python-format
msgid "" msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line " "Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1816,7 +1822,7 @@ msgstr ""
"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile " "In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile "
"beginnt mit \"%(start)s\"." "beginnt mit \"%(start)s\"."
#: core/validators.py:473 #: core/validators.py:472
#, python-format #, python-format
msgid "" msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1825,7 +1831,7 @@ msgstr ""
"Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit " "Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit "
"\"%(start)s\"." "\"%(start)s\"."
#: core/validators.py:478 #: core/validators.py:477
#, python-format #, python-format
msgid "" msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1834,7 +1840,7 @@ msgstr ""
"<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s" "<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s"
"\"." "\"."
#: core/validators.py:482 #: core/validators.py:481
#, python-format #, python-format
msgid "" msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line " "A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1843,7 +1849,7 @@ msgstr ""
"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die " "Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die "
"Zeile beginnt mit \"%(start)s\"." "Zeile beginnt mit \"%(start)s\"."
#: core/validators.py:487 #: core/validators.py:486
#, python-format #, python-format
msgid "" msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@ -1880,11 +1886,11 @@ msgstr ""
" Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command" " Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command"
"\", beim Klicken gedrückt halten." "\", beim Klicken gedrückt halten."
#: core/meta/fields.py:508 #: core/meta/fields.py:506
msgid "Enter a valid filename." msgid "Enter a valid filename."
msgstr "Bitte einen gültigen Dateinamen eingeben" msgstr "Bitte einen gültigen Dateinamen eingeben"
#: core/meta/fields.py:782 #: core/meta/fields.py:780
#, python-format #, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural "" msgid_plural ""

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -14,22 +14,25 @@ class SafeMIMEText(MIMEText):
raise BadHeaderError, "Header values can't contain newlines (got %r for header %r)" % (val, name) raise BadHeaderError, "Header values can't contain newlines (got %r for header %r)" % (val, name)
MIMEText.__setitem__(self, name, val) MIMEText.__setitem__(self, name, val)
def send_mail(subject, message, from_email, recipient_list, fail_silently=False): def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASSWORD):
""" """
Easy wrapper for sending a single message to a recipient list. All members Easy wrapper for sending a single message to a recipient list. All members
of the recipient list will see the other recipients in the 'To' field. of the recipient list will see the other recipients in the 'To' field.
""" """
return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently) return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently, auth_user, auth_password)
def send_mass_mail(datatuple, fail_silently=False): def send_mass_mail(datatuple, fail_silently=False, auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASSWORD):
""" """
Given a datatuple of (subject, message, from_email, recipient_list), sends Given a datatuple of (subject, message, from_email, recipient_list), sends
each message to each recipient list. Returns the number of e-mails sent. each message to each recipient list. Returns the number of e-mails sent.
If from_email is None, the DEFAULT_FROM_EMAIL setting is used. If from_email is None, the DEFAULT_FROM_EMAIL setting is used.
If auth_user and auth_password are set, they're used to log in.
""" """
try: try:
server = smtplib.SMTP(settings.EMAIL_HOST) server = smtplib.SMTP(settings.EMAIL_HOST)
if auth_user and auth_password:
server.login(auth_user, auth_password)
except: except:
if fail_silently: if fail_silently:
return return
@ -58,9 +61,9 @@ def send_mass_mail(datatuple, fail_silently=False):
return num_sent return num_sent
def mail_admins(subject, message, fail_silently=False): def mail_admins(subject, message, fail_silently=False):
"Sends a message to the admins, as defined by the ADMINS constant in settings.py." "Sends a message to the admins, as defined by the ADMINS setting."
send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS], fail_silently) send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS], fail_silently)
def mail_managers(subject, message, fail_silently=False): def mail_managers(subject, message, fail_silently=False):
"Sends a message to the managers, as defined by the MANAGERS constant in settings.py" "Sends a message to the managers, as defined by the MANAGERS setting."
send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS], fail_silently) send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS], fail_silently)

View File

@ -26,10 +26,12 @@ The send_mail function
The simplest way to send e-mail is using the function The simplest way to send e-mail is using the function
``django.core.mail.send_mail``. Here's its definition:: ``django.core.mail.send_mail``. Here's its definition::
send_mail(subject, message, from_email, recipient_list, fail_silently=False) send_mail(subject, message, from_email, recipient_list,
fail_silently=False, auth_user=EMAIL_HOST_USER,
auth_password=EMAIL_HOST_PASSWORD)
All parameters are required except for ``fail_silently``, which is ``False`` by The ``subject``, ``message``, ``from_email`` and ``recipient_list`` parameters
default. are required.
* ``subject``: A string. * ``subject``: A string.
* ``message``: A string. * ``message``: A string.
@ -40,6 +42,13 @@ default.
* ``fail_silently``: A boolean. If it's ``False``, ``send_mail`` will raise * ``fail_silently``: A boolean. If it's ``False``, ``send_mail`` will raise
an ``smtplib.SMTPException``. See the `smtplib docs`_ for a list of an ``smtplib.SMTPException``. See the `smtplib docs`_ for a list of
possible exceptions, all of which are subclasses of ``SMTPException``. possible exceptions, all of which are subclasses of ``SMTPException``.
* ``auth_user``: **New in Django development version.** The optional
username to use to authenticate to the SMTP server. If this isn't
provided, Django will use the value of the ``EMAIL_HOST_USER`` setting.
* ``auth_password``: **New in Django development version.** The optional
password to use to authenticate to the SMTP server. If this isn't
provided, Django will use the value of the ``EMAIL_HOST_PASSWORD``
setting.
.. _smtplib docs: http://www.python.org/doc/current/lib/module-smtplib.html .. _smtplib docs: http://www.python.org/doc/current/lib/module-smtplib.html
@ -49,13 +58,16 @@ The send_mass_mail function
``django.core.mail.send_mass_mail`` is intended to handle mass e-mailing. ``django.core.mail.send_mass_mail`` is intended to handle mass e-mailing.
Here's the definition:: Here's the definition::
send_mass_mail(datatuple, fail_silently=False): send_mass_mail(datatuple, fail_silently=False,
auth_user=EMAIL_HOST_USER, auth_password=EMAIL_HOST_PASSWORD):
``datatuple`` is a tuple in which each element is in this format:: ``datatuple`` is a tuple in which each element is in this format::
(subject, message, from_email, recipient_list) (subject, message, from_email, recipient_list)
``fail_silently`` has the same function as in ``send_mail()``. ``fail_silently``, ``auth_user`` and ``auth_password`` have the same functions
as in ``send_mail()``. Note that ``auth_user`` and ``auth_password`` are only
available in the Django development version.
Each separate element of ``datatuple`` results in a separate e-mail message. Each separate element of ``datatuple`` results in a separate e-mail message.
As in ``send_mail()``, recipients in the same ``recipient_list`` will all see As in ``send_mail()``, recipients in the same ``recipient_list`` will all see

View File

@ -257,7 +257,7 @@ The date-based generic functions are:
your URLconf, and you'll need to pass a ``slug_field`` key in your info your URLconf, and you'll need to pass a ``slug_field`` key in your info
dictionary to indicate the name of the slug field. dictionary to indicate the name of the slug field.
If your using the object_id-style URLs, you'll just need to give the URL If you're using the object_id-style URLs, you'll just need to give the URL
pattern an ``object_id`` field. pattern an ``object_id`` field.
You can also pass the ``template_name_field`` argument to indicate that the You can also pass the ``template_name_field`` argument to indicate that the
@ -290,23 +290,24 @@ Individual views are:
Takes the following optional arguments: Takes the following optional arguments:
======================= ================================================= ======================== =================================================
Argument Description Argument Description
======================= ================================================= ======================== =================================================
``paginate_by`` If set to an integer, the view will paginate ``paginate_by`` If set to an integer, the view will paginate
objects with ``paginate_by`` objects per page. objects with ``paginate_by`` objects per page.
The view will expect a ``page`` GET param with The view will expect a ``page`` GET param with
the (zero-indexed) page number. the (zero-indexed) page number.
``allow_empty`` If ``False`` and there are no objects to display, ``allow_empty`` If ``False`` and there are no objects to display,
the view will raise a 404 instead of displaying the view will raise a 404 instead of displaying
an empty index page. ``False`` is default. an empty index page. ``False`` is default.
``template_object_name`` **New in Django development version.** Designates
the name of the object template variable. Default
is ``'object'``.
======================= =================================================
Uses the template ``<app_label>/<model_name>_list`` by default. ``template_object_name`` **New in Django development version.** Designates
the name of the object template variable. Default
is ``'object'``.
======================== =================================================
Uses the template ``<app_label>/<module_name_list>`` by default.
Has the following template context: Has the following template context:

View File

@ -334,6 +334,30 @@ Default: ``'localhost'``
The host to use for sending e-mail. The host to use for sending e-mail.
EMAIL_HOST_PASSWORD
-------------------
Default: ``''`` (Empty string)
**New in Django development version.**
Username to use for the SMTP server defined in ``EMAIL_HOST``. If empty,
Django won't attempt authentication.
See also ``EMAIL_HOST_USER``.
EMAIL_HOST_USER
---------------
Default: ``''`` (Empty string)
**New in Django development version.**
Username to use for the SMTP server defined in ``EMAIL_HOST``. If empty,
Django won't attempt authentication.
See also ``EMAIL_HOST_PASSWORD``.
EMAIL_SUBJECT_PREFIX EMAIL_SUBJECT_PREFIX
-------------------- --------------------