diff options
| author | Jeremy Dunck <jdunck@gmail.com> | 2007-03-23 16:35:57 +0000 |
|---|---|---|
| committer | Jeremy Dunck <jdunck@gmail.com> | 2007-03-23 16:35:57 +0000 |
| commit | fa3ed6e1341f7c8b468e2267b3fafddeb58cdac2 (patch) | |
| tree | 6d8bf65854f8431355e2d91cbc61a37ab6f23d9a | |
| parent | 8b279b63bef5c1348cc27c50633fc2d5ef09d7c1 (diff) | |
gis: Merged revisions 4669-4785 via svnmerge from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@4786 bcc190cf-cafb-0310-a4f2-bffc1f526a37
99 files changed, 9437 insertions, 2305 deletions
@@ -42,7 +42,6 @@ people who have submitted patches, reported bugs, added translations, helped answer newbie questions, and generally made Django that much better: adurdin@gmail.com - akaihola Andreas andy@jadedplanet.net ant9000@netwise.it @@ -86,10 +85,12 @@ answer newbie questions, and generally made Django that much better: Marc Fargas <telenieko@telenieko.com> favo@exoweb.net Eric Floehr <eric@intellovations.com> + Jorge Gajon <gajon@gajon.org> gandalf@owca.info Baishampayan Ghose martin.glueck@gmail.com Simon Greenhill <dev@simon.net.nz> + Owen Griffiths Espen Grindhaug <http://grindhaug.org/> Brian Harring <ferringb@gmail.com> Brant Harris @@ -107,10 +108,12 @@ answer newbie questions, and generally made Django that much better: Michael Josephson <http://www.sdjournal.com/> jpellerin@gmail.com junzhang.jn@gmail.com + Antti Kaihola <http://akaihola.blogspot.com/> Ben Dean Kawamura <ben.dean.kawamura@gmail.com> Garth Kidd <http://www.deadlybloodyserious.com/> kilian <kilian.cavalotti@lip6.fr> Sune Kirkeby <http://ibofobi.dk/> + Bastian Kleineidam <calvin@debian.org> Cameron Knight (ckknight) Meir Kriheli <http://mksoft.co.il/> Bruce Kroeze <http://coderseye.com/> @@ -130,6 +133,7 @@ answer newbie questions, and generally made Django that much better: masonsimon+django@gmail.com Manuzhai Petar Marić <http://www.petarmaric.com/> + Nuno Mariz <nmariz@gmail.com> mark@junklight.com Yasushi Masuda <whosaysni@gmail.com> mattycakes@gmail.com @@ -148,6 +152,7 @@ answer newbie questions, and generally made Django that much better: Neal Norwitz <nnorwitz@google.com> oggie rob <oz.robharvey@gmail.com> Jay Parlar <parlar@gmail.com> + pavithran s <pavithran.s@gmail.com> pgross@thoughtworks.com phaedo <http://phaedo.cx/> phil@produxion.net diff --git a/django/bin/compile-messages.py b/django/bin/compile-messages.py index 0137ec8dd4..f2193d3122 100755 --- a/django/bin/compile-messages.py +++ b/django/bin/compile-messages.py @@ -1,9 +1,10 @@ #!/usr/bin/env python +import optparse import os import sys -def compile_messages(): +def compile_messages(locale=None): basedir = None if os.path.isdir(os.path.join('conf', 'locale')): @@ -14,6 +15,9 @@ def compile_messages(): print "This script should be run from the Django SVN tree or your project or app tree." sys.exit(1) + if locale is not None: + basedir = os.path.join(basedir, locale, 'LC_MESSAGES') + for dirpath, dirnames, filenames in os.walk(basedir): for f in filenames: if f.endswith('.po'): @@ -32,5 +36,14 @@ def compile_messages(): cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"' os.system(cmd) +def main(): + parser = optparse.OptionParser() + parser.add_option('-l', '--locale', dest='locale', + help="The locale to process. Default is to process all.") + options, args = parser.parse_args() + if len(args): + parser.error("This program takes no arguments") + compile_messages(options.locale) + if __name__ == "__main__": - compile_messages() + main() diff --git a/django/bin/make-messages.py b/django/bin/make-messages.py index 557cb5eeec..34fb68dcfe 100755 --- a/django/bin/make-messages.py +++ b/django/bin/make-messages.py @@ -81,7 +81,7 @@ def make_messages(): src = pythonize_re.sub('\n#', src) open(os.path.join(dirpath, '%s.py' % file), "wb").write(src) thefile = '%s.py' % file - cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy --from-code UTF-8 -o - "%s"' % ( os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) (stdin, stdout, stderr) = os.popen3(cmd, 'b') msgs = stdout.read() @@ -103,7 +103,7 @@ def make_messages(): open(os.path.join(dirpath, '%s.py' % file), "wb").write(templatize(src)) thefile = '%s.py' % file if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) - cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy --from-code UTF-8 -o - "%s"' % ( os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) (stdin, stdout, stderr) = os.popen3(cmd, 'b') msgs = stdout.read() diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 5ce856c37b..f26911d7f9 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -61,6 +61,7 @@ LANGUAGES = ( ('nl', gettext_noop('Dutch')), ('no', gettext_noop('Norwegian')), ('pl', gettext_noop('Polish')), + ('pt', gettext_noop('Portugese')), ('pt-br', gettext_noop('Brazilian')), ('ro', gettext_noop('Romanian')), ('ru', gettext_noop('Russian')), @@ -69,6 +70,7 @@ LANGUAGES = ( ('sr', gettext_noop('Serbian')), ('sv', gettext_noop('Swedish')), ('ta', gettext_noop('Tamil')), + ('te', gettext_noop('Telugu')), ('tr', gettext_noop('Turkish')), ('uk', gettext_noop('Ukrainian')), ('zh-cn', gettext_noop('Simplified Chinese')), diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo Binary files differindex 7b2b1f6e9e..14b8a935a1 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.mo +++ b/django/conf/locale/fr/LC_MESSAGES/django.mo diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index 104e9a2aa1..62f3b46c37 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -7,14 +7,775 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:11+0200\n" +"POT-Creation-Date: 2007-03-11 11:46+0100\n" "PO-Revision-Date: 2006-05-08 15:12+0200\n" -"Last-Translator: Gaël Chardon <gael.dev_at_nospam_4now.net>\n" +"Last-Translator: Baptiste Goupil <baptiste.goupil_at_google_email.com>\n" "Language-Team: français <fr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +#: oldforms/__init__.py:357 db/models/fields/__init__.py:116 +#: db/models/fields/__init__.py:273 db/models/fields/__init__.py:609 +#: db/models/fields/__init__.py:620 newforms/models.py:177 +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 +msgid "This field is required." +msgstr "Ce champ est obligatoire." + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Assurez-vous que votre texte fait moins de %s caractère." +msgstr[1] "Assurez-vous que votre texte fait moins de %s caractères." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Les retours à la ligne ne sont pas autorisés ici." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Sélectionnez un choix valide ; '%(data)s' n'est pas dans %(choices)s." + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Inconnu" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Oui" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Non" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Le fichier soumis est vide." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Entrez un nombre entier entre -32 768 et 32 767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Entrez un nombre entier positif." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Entrez un nombre entier entre 0 et 32 767." + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "et" + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s avec le champ %(fieldname)s existe déjà." + +#: db/models/fields/__init__.py:366 +msgid "This value must be an integer." +msgstr "Cette valeur doit être un entier." + +#: db/models/fields/__init__.py:401 +msgid "This value must be either True or False." +msgstr "Cette valeur doit être soit Vraie soit Fausse." + +#: db/models/fields/__init__.py:422 +msgid "This field cannot be null." +msgstr "Ce champ ne peut pas être vide." + +#: db/models/fields/__init__.py:456 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Entrez une date valide au format AAAA-MM-JJ." + +#: db/models/fields/__init__.py:525 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM." + +#: db/models/fields/__init__.py:629 +msgid "Enter a valid filename." +msgstr "Entrez un nom de fichier valide." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Entrez un %s valide." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Séparez les ID par des virgules." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Maintenez \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un Mac, " +"pour en sélectionner plusieurs." + +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Entrez un ID %(self)s valide. La valeur %(value)r est invalide." +msgstr[1] "" +"Entrez des ID %(self)s valides. Les valeurs %(value)r sont invalides." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arabe" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Indien" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Catalan" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "Tchèque" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "Gallois" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "Dannois" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "Allemand" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "Grec" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "Anglais" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "Espagnol" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "Espagnol Argentin" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "Dannois" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "Français" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "Galicien" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Hongrois" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "Israélien" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "Islandais" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "Italien" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "Japonais" + +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "Letton" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "Macédonien" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "Néerlandais" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "Norvégien" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "Polonais" + +#: conf/global_settings.py:64 +msgid "Brazilian" +msgstr "Brésilien" + +#: conf/global_settings.py:65 +msgid "Romanian" +msgstr "Roumain" + +#: conf/global_settings.py:66 +msgid "Russian" +msgstr "Russe" + +#: conf/global_settings.py:67 +msgid "Slovak" +msgstr "Slovaque" + +#: conf/global_settings.py:68 +msgid "Slovenian" +msgstr "Slovaque" + +#: conf/global_settings.py:69 +msgid "Serbian" +msgstr "Serbe" + +#: conf/global_settings.py:70 +msgid "Swedish" +msgstr "Suédois" + +#: conf/global_settings.py:71 +msgid "Tamil" +msgstr "Tamoul" + +#: conf/global_settings.py:72 +msgid "Telugu" +msgstr "Télougou" + +#: conf/global_settings.py:73 +msgid "Turkish" +msgstr "Turc" + +#: conf/global_settings.py:74 +msgid "Ukrainian" +msgstr "Ukrainien" + +#: conf/global_settings.py:75 +msgid "Simplified Chinese" +msgstr "Chinois simplifié" + +#: conf/global_settings.py:76 +msgid "Traditional Chinese" +msgstr "Chinois traditionnel" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres et des tirets bas " +"('_')." + +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas ('_') " +"et des '/'." + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas ('_') " +"et des '-'." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Les lettres majuscules ne sont pas autorisées ici." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Les lettres minuscules ne sont pas autorisées ici." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Saisissez uniquement des chiffres séparés par des virgules." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Entrez des adresses de courriel valides séparées par des virgules." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Entrez une adresse IP valide." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Vous ne pouvez pas laisser ce champ vide." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Les caractères non numériques ne sont pas autorisés ici." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Cette valeur ne peut pas être composé uniquement de chiffres." + +#: core/validators.py:120 newforms/fields.py:126 +msgid "Enter a whole number." +msgstr "Entrez un nombre entier." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Seules les lettres de l'alphabet sont autorisées ici." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "L'année doit être supérieure à 1900." + +#: core/validators.py:143 +#, fuzzy, python-format +msgid "Invalid date: %s" +msgstr "URL invalide : %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Entrez une heure valide au format HH:MM." + +#: core/validators.py:162 newforms/fields.py:269 +msgid "Enter a valid e-mail address." +msgstr "Entrez une adresse de courriel valide." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une " +"image ou bien est une image corrompue." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "L'URL %s ne pointe pas vers une image valide." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Les numéros de téléphone doivent être au format XXX-XXX-XXXX. \"%s\" est " +"incorrect." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Une URL valide est requise." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Du HTML valide est requis. Les erreurs sont les suivantes :\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML mal formé : %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL invalide : %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "L'URL %s est un lien cassé." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Entrez une abréviation d'état américain valide." + +#: core/validators.py:266 +#, 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] "Attention à votre langage ! Le mot %s n'est pas autorisé ici." +msgstr[1] "Attention à votre langage ! Les mots %s ne sont pas autorisés ici." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Ce champ doit correspondre au champ '%s'." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Saisissez au moins une valeur dans un des champs s'il vous plaît." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "" +"Renseignez chacun des champs ou laissez les deux vides s'il vous plaît." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Des valeurs identiques ne sont pas autorisées." + +#: core/validators.py:367 +#, fuzzy, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Cette valeur doit être entre %(lower)s et %(upper)s." + +#: core/validators.py:369 +#, fuzzy, python-format +msgid "This value must be at least %s." +msgstr "Cette valeur doit être au moins %s." + +#: core/validators.py:371 +#, fuzzy, python-format +msgid "This value must be no more than %s." +msgstr "Cette valeur ne doit pas dépasser %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Cette valeur doit être une puissance de %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Saisissez un nombre décimal valide s'il vous plaît." + +#: core/validators.py:422 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +"Saisissez un nombre décimal valide avec au plus %s chiffre s'il vous plaît." +msgstr[1] "" +"Saisissez un nombre décimal valide avec au plus %s chiffres s'il vous plaît." + +#: core/validators.py:425 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Veuillez saisir un nombre décimal valide avec au plus %s chiffre." +msgstr[1] "Veuillez saisir un nombre décimal valide avec au plus %s chiffres." + +#: core/validators.py:428 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Veuillez saisir un nombre décimal valide avec au plus %s décimale." +msgstr[1] "Veuillez saisir un nombre décimal valide avec au plus %s décimales." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "" +"Vérifiez que le fichier transféré fait au moins une taille de %s octets." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "" +"Vérifiez que le fichier transféré fait au plus une taille de %s octets." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Le format de ce champ est mauvais." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Ce champ est invalide." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Impossible de récupérer quoi que ce soit depuis %s." + +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est " +"pas valide." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Veuillez fermer le tag %(tag)s de la ligne %(line)s. (La ligne débutant par " +"\"%(start)s\".)" + +#: core/validators.py:547 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. " +"(Ligne débutant par \"%(start)s\".)" + +#: core/validators.py:552 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant " +"par \"%(start)s\".)" + +#: core/validators.py:557 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%" +"(start)s\".)" + +#: core/validators.py:561 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. " +"(Ligne débutant par \"%(start)s\".)" + +#: core/validators.py:566 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. " +"(Ligne débutant par \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "L'objet %(verbose_name)s a été créé avec succès." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "L'objet %(verbose_name)s a été mis à jour avec succès." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "L'objet %(verbose_name)s a été supprimé." + +#: newforms/models.py:164 newforms/fields.py:360 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux " +"disponibles." + +#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454 +msgid "Enter a list of values." +msgstr "Entrez une liste de valeur." + +#: newforms/models.py:187 newforms/fields.py:387 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Sélectionnez un choix valide ; %s n'en fait pas partie." + +#: newforms/fields.py:101 newforms/fields.py:254 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Assurez-vous que cette valeur fait moins de %d caractère." + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Assurez-vous que cette valeur fait au moins %d caractère." + +#: newforms/fields.py:128 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Assurez-vous que cette valeur soit plus petite ou égale à %s." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Assurez-vous que cette valeur soit plus grande ou égale à %s." + +#: newforms/fields.py:163 +msgid "Enter a valid date." +msgstr "Entrez une date valide." + +#: newforms/fields.py:190 +msgid "Enter a valid time." +msgstr "Entrez une heure valide." + +#: newforms/fields.py:226 +msgid "Enter a valid date/time." +msgstr "Entrez une date et une heure valides." + +#: newforms/fields.py:240 +msgid "Enter a valid value." +msgstr "Entrez une valeur valide." + +#: newforms/fields.py:287 newforms/fields.py:309 +msgid "Enter a valid URL." +msgstr "Entrez une URL valide." + +#: newforms/fields.py:311 +msgid "This URL appears to be a broken link." +msgstr "L'URL est un lien cassé." + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "th" +msgstr "e" + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "st" +msgstr "er" + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "nd" +msgstr "d" + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "rd" +msgstr "e" + +#: contrib/humanize/templatetags/humanize.py:48 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f million" +msgstr[1] "%(value).1f millions" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f milliard" +msgstr[1] "%(value).1f milliards" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f billion" +msgstr[1] "%(value).1f billions" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "one" +msgstr "un" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "two" +msgstr "deux" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "three" +msgstr "trois" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "four" +msgstr "quatre" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "five" +msgstr "cinq" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "six" +msgstr "six" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "seven" +msgstr "sept" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "eight" +msgstr "huit" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "nine" +msgstr "neuf" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redirigé depuis" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/events/" +"search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redirigé vers" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète " +"débutant par 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redirige" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redirige" + #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "ID de l'objet" @@ -72,7 +833,7 @@ msgstr "date et heure soumises" msgid "is public" msgstr "est public" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" msgstr "adresse IP" @@ -209,13 +970,13 @@ msgstr "ID de commentaire invalide" msgid "No voting for yourself" msgstr "Impossible de voter pour soi-même" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/views/comments.py:27 msgid "" "This rating is required because you've entered at least one other rating." msgstr "" "Ce votre est nécéssaire parceque vous avez saisi au moins un autre vote." -#: contrib/comments/views/comments.py:112 +#: contrib/comments/views/comments.py:111 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -238,7 +999,7 @@ msgstr[1] "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:117 +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -249,24 +1010,24 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" msgstr "Seuls les POSTs sont autorisés" -#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "Un ou plusieurs champs requis n'ont pas été remplis" -#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" msgstr "" "Quelqu'un a trafiqué le formulaire de commentaire (violation des règles de " "sécurité)" -#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " @@ -282,6 +1043,20 @@ msgstr "" "Le formulaire de commentaire ne proposait ni les options de prévisualisation " "ni d'envoi" +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Votre nom :" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "Commentaire :" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +msgstr "Prévisualisation du commentaire" + #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 @@ -289,20 +1064,12 @@ msgid "Username:" msgstr "Nom d'utilisateur" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Mot de passe" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Mot de passe oublié?" - -#: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 @@ -318,6 +1085,15 @@ msgstr "Mot de passe oublié?" msgid "Log out" msgstr "Déconnexion" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Mot de passe" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Mot de passe oublié?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Votes" @@ -336,19 +1112,21 @@ msgstr "Optionel" msgid "Post a photo" msgstr "Poster une photo" -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Commentaire :" +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nom de domaine" -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -msgid "Preview comment" -msgstr "Prévisualisation du commentaire" +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "nom à afficher" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Votre nom :" +#: contrib/sites/models.py:15 +msgid "site" +msgstr "site" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "sites" #: contrib/admin/filterspecs.py:40 #, python-format @@ -360,7 +1138,7 @@ msgstr "" "<ul>\n" #: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 msgid "All" msgstr "Tout" @@ -384,18 +1162,6 @@ msgstr "Ce mois-ci" msgid "This year" msgstr "Cette année" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Oui" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Non" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Inconnu" - #: contrib/admin/models.py:16 msgid "action time" msgstr "heure de l'action" @@ -424,12 +1190,11 @@ msgstr "entrée d'historique" msgid "log entries" msgstr "entrées d'historique" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Toutes les dates" -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -438,12 +1203,12 @@ msgstr "" "Remarquez que chacun de ces champs est sensible à la casse (différenciation " "des majuscules/minuscules)." -#: contrib/admin/views/decorators.py:23 +#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" msgstr "Connectez-vous" -#: contrib/admin/views/decorators.py:61 +#: contrib/admin/views/decorators.py:62 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." @@ -451,7 +1216,7 @@ msgstr "" "Votre session a expiré, connectez-vous de nouveau s'il vous plaît. Ne vous " "inquiétez pas, votre travail précédement éffectué a été sauvé." -#: contrib/admin/views/decorators.py:68 +#: contrib/admin/views/decorators.py:69 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." @@ -459,69 +1224,80 @@ msgstr "" "Il semblerait que votre navigateur n'accepte pas les cookies. Activez-les, " "rechargez cette page et rééssayez s'il vous plaît." -#: contrib/admin/views/decorators.py:82 +#: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "Les noms d'utilisateur ne peuvent contenir le caractère '@'" -#: contrib/admin/views/decorators.py:84 +#: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Votre courriel n'est pas votre nom d'utilisateur. Essayez '%s' à la place." -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "Gestion du site" - -#: contrib/admin/views/main.py:260 +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès." -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 +#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261 +#: contrib/admin/views/main.py:347 msgid "You may edit it again below." msgstr "Vous pouvez continuez de l'éditez ci-dessous." -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: contrib/admin/views/auth.py:30 +#, fuzzy +msgid "Add user" +msgstr "Ajouter %s" + +#: contrib/admin/views/auth.py:57 +#, fuzzy +msgid "Password changed successfully." +msgstr "Mot de passe modifié avec succés" + +#: contrib/admin/views/auth.py:64 +#, fuzzy, python-format +msgid "Change password: %s" +msgstr "Modifier votre mot de passe" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Gestion du site" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." msgstr "Vous pouvez ajouter un autre %s ci-dessous." -#: contrib/admin/views/main.py:290 +#: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" msgstr "Ajouter %s" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:335 #, python-format msgid "Added %s." msgstr "Ajouté %s." -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 -msgid "and" -msgstr "et" - -#: contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." msgstr "Modifié %s." -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:339 #, python-format msgid "Deleted %s." msgstr "Supprimé %s." -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:342 msgid "No fields changed." msgstr "Aucun champ modifié." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "L'objet %(name)s \"%(obj)s\" a été modifié avec succès." -#: contrib/admin/views/main.py:354 +#: contrib/admin/views/main.py:353 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." @@ -529,121 +1305,203 @@ msgstr "" "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès.Vous pouvez continuez " "de l'éditez ci-dessous." -#: contrib/admin/views/main.py:392 +#: contrib/admin/views/main.py:391 #, python-format msgid "Change %s" msgstr "Changement %s" -#: contrib/admin/views/main.py:470 +#: contrib/admin/views/main.py:476 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Un ou plusieurs %(fieldname)s dans %(name)s: %(obj)s" -#: contrib/admin/views/main.py:475 +#: contrib/admin/views/main.py:481 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "Un ou plusieurs %(fieldname)s dans %(name)s:" -#: contrib/admin/views/main.py:508 +#: contrib/admin/views/main.py:514 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "L'objet %(name)s \"%(obj)s\" a été supprimé avec succès." -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" msgstr "Êtes-vous sûr ?" -#: contrib/admin/views/main.py:533 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" msgstr "Historique des changements : %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "Sélectionnez %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "Sélectionnez %s pour changer" -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "" + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "mot-clé :" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "filtre :" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "vue :" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "L'application %r n'a pas été trouvée." + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Le modèle %(name)r n'a pas été trouvé dans l'application %(label)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "l'objet `%(label)s.%(type)s en relation " + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "modèle :" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "les objets `%(label)s.%(type)s en relation" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "nombre de %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 msgid "Integer" msgstr "Entier" -#: contrib/admin/views/doc.py:278 +#: contrib/admin/views/doc.py:292 msgid "Boolean (Either True or False)" msgstr "Booléen (Vrai ou Faux)" -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 #, python-format msgid "String (up to %(maxlength)s)" msgstr "Chaîne de caractère (jusqu'à %(maxlength)s)" -#: contrib/admin/views/doc.py:280 +#: contrib/admin/views/doc.py:294 msgid "Comma-separated integers" msgstr "Des entiers séparés par une virgule" -#: contrib/admin/views/doc.py:281 +#: contrib/admin/views/doc.py:295 msgid "Date (without time)" msgstr "Date (sans l'heure)" -#: contrib/admin/views/doc.py:282 +#: contrib/admin/views/doc.py:296 msgid "Date (with time)" msgstr "Date (avec l'heure)" -#: contrib/admin/views/doc.py:283 +#: contrib/admin/views/doc.py:297 msgid "E-mail address" msgstr "Courriel :" -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 msgid "File path" msgstr "Chemin vers le fichier" -#: contrib/admin/views/doc.py:285 +#: contrib/admin/views/doc.py:300 msgid "Decimal number" msgstr "Nombre décimal" -#: contrib/admin/views/doc.py:291 +#: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" msgstr "Booléen (Vrai, Faux ou None)" -#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:307 msgid "Relation to parent model" msgstr "Relation au modèle parent" -#: contrib/admin/views/doc.py:293 +#: contrib/admin/views/doc.py:308 msgid "Phone number" msgstr "Numéro de téléphone" -#: contrib/admin/views/doc.py:298 +#: contrib/admin/views/doc.py:313 msgid "Text" msgstr "Texte" -#: contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:314 msgid "Time" msgstr "Heure" -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" msgstr "État U.S. (deux lettres majuscules)" -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:317 msgid "XML text" msgstr "Texte XML" +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ne semble pas être un objet urlpattern" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Actuellement :" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modification :" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Date :" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Heure :" + #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 @@ -652,9 +1510,12 @@ msgstr "Documentation" #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 @@ -671,11 +1532,13 @@ msgid "Change password" msgstr "Modifier votre mot de passe" #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/logged_out.html:4 @@ -686,7 +1549,7 @@ msgid "Home" msgstr "Accueil" #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 msgid "History" msgstr "Historique" @@ -714,13 +1577,15 @@ msgstr "" "Cet objet n'a pas d'historique de modification. Il n'a probablement pas été " "ajouté au moyen de ce site d'administration." -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Site d'administration de Django" +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Ajouter %(name)s" -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Administration de Django" +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Par %(filter_title)s " #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -743,6 +1608,45 @@ msgstr "" "administrateurs du site et sera corrigée dans les meilleurs délais. Merci " "pour votre patience." +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Envoyer" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 résultat" +msgstr[1] "%(counter)s résultats" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s résultats" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Tout montrer" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Site d'administration de Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administration de Django" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtre" + #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 msgid "Page not found" @@ -757,6 +1661,11 @@ msgstr "Nous sommes désolés, mais la page demandée est introuvable." msgid "Models available in the %(name)s application." msgstr "Modèles disponibles dans l'application %(name)s." +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" @@ -782,16 +1691,26 @@ msgstr "Mes actions" msgid "None available" msgstr "Aucun(e) disponible" -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Ajouter %(name)s" +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Voir sur le site" -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" -msgstr "Avez vous <a href=\"/password_reset/\">perdu votre mot de passe</a>?" +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Veuillez corriger l'erreur ci-dessous." +msgstr[1] "Veuillez corriger les erreurs ci-dessous." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Tri" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Ordre :" -#: contrib/admin/templates/admin/base.html:23 +#: contrib/admin/templates/admin/base.html:25 msgid "Welcome," msgstr "Bienvenue," @@ -803,54 +1722,28 @@ msgstr "Supprimer" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" msgstr "" -"Supprimer l'objet %(object_name)s '%(object)s' provoquerait la suppression " -"des objets qui lui sont liés mais votre compte ne possède pas la permission " -"de supprimer les types d'objets suivants :" +"Supprimer l'objet %(object_name)s '%(escaped_object)s' provoquerait la " +"suppression des objets qui lui sont liés mais votre compte ne possède pas la " +"permission de supprimer les types d'objets suivants :" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" msgstr "" -"Êtes vous certain de vouloir supprimer l'objet %(object_name)s \"%(object)s" -"\" ? Les éléments suivant sont liés à celui-ci et seront aussi supprimés :" +"Êtes vous certain de vouloir supprimer l'objet %(object_name)s \"%" +"(escaped_object)s\" ? Les éléments suivant sont liés à celui-ci et seront " +"aussi supprimés :" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Oui, j'en suis certain" -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(title)s " -msgstr " Par %(title)s " - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Envoyer" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Voir sur le site" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Veuillez corriger l'erreur ci-dessous." -msgstr[1] "Veuillez corriger les erreurs ci-dessous." - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Tri" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Ordre :" - #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Sauver en tant que nouveau" @@ -867,6 +1760,40 @@ msgstr "Sauver et continuer les modifications" msgid "Save" msgstr "Sauver" +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user <strong>%(username)s</strong>." +msgstr "" +"Entrez un nouveau mot de passe pour l'utilisateur <strong>%(username)s</" +"strong>." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Mot de passe" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Mot de passe (à nouveau)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "Entrez le même mot de passe que précedemment, par sécurité." + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Entrez tout d'abord un nom d'utilisateur et un mot de passe.Vous pourrez " +"ensuite modifier plus d'options." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Nom d'utilisateur" + #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 @@ -1046,176 +1973,123 @@ msgstr "" "Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle " "fenêtre." -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Date :" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Heure :" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Actuellement :" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modification :" - -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "redirigé depuis" - -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/events/" -"search/'." - -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "redirigé vers" - -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète " -"débutant par 'http://'." - -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "redirige" - -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "redirige" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Par exemple : '/about/contact/'. Vérifiez la présence du caractère '/' en " -"début et en fin de chaine." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "titre" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "contenu" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "autoriser les commentaires" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nom du template" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." -msgstr "" -"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera " -"'flatfiles/default'." +#: contrib/contenttypes/models.py:26 +msgid "python model class name" +msgstr "nom du module python" -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "enregistrement requis" +#: contrib/contenttypes/models.py:29 +msgid "content type" +msgstr "type de contenu" -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Si coché, seuls les utilisateurs connectés auront la possibilité de voir " -"cette page." +#: contrib/contenttypes/models.py:30 +msgid "content types" +msgstr "types de contenu" -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "page à plat" +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Déconnecté" -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "pages à plat" - -#: contrib/auth/models.py:13 contrib/auth/models.py:26 +#: contrib/auth/models.py:38 contrib/auth/models.py:57 msgid "name" msgstr "nom" -#: contrib/auth/models.py:15 +#: contrib/auth/models.py:40 msgid "codename" msgstr "nom de code" -#: contrib/auth/models.py:17 +#: contrib/auth/models.py:42 msgid "permission" msgstr "permission" -#: contrib/auth/models.py:18 contrib/auth/models.py:27 +#: contrib/auth/models.py:43 contrib/auth/models.py:58 msgid "permissions" msgstr "permissions" -#: contrib/auth/models.py:29 +#: contrib/auth/models.py:60 msgid "group" msgstr "groupe" -#: contrib/auth/models.py:30 contrib/auth/models.py:65 +#: contrib/auth/models.py:61 contrib/auth/models.py:100 msgid "groups" msgstr "groupes" -#: contrib/auth/models.py:55 +#: contrib/auth/models.py:90 msgid "username" msgstr "nom d'utilisateur" -#: contrib/auth/models.py:56 +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Requis. 30 caractères maximum, alphanumériques uniquement (lettres, " +"chiffres, et tirets bas '_')." + +#: contrib/auth/models.py:91 msgid "first name" msgstr "prénom" -#: contrib/auth/models.py:57 +#: contrib/auth/models.py:92 msgid "last name" msgstr "nom" -#: contrib/auth/models.py:58 +#: contrib/auth/models.py:93 msgid "e-mail address" msgstr "courriel" -#: contrib/auth/models.py:59 +#: contrib/auth/models.py:94 msgid "password" msgstr "mot de passe" -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Utilisez '[algo]$[salt]$[hexdigest]'" +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change " +"password form</a>." +msgstr "" +"Utilisez [algo]$[salt]$[hexdigest]' ou le <a href=\"password/\">formulaire " +"de changement de mot de passe</a>." -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:95 msgid "staff status" msgstr "statut équipe" -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:95 msgid "Designates whether the user can log into this admin site." msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration." -#: contrib/auth/models.py:61 +#: contrib/auth/models.py:96 msgid "active" msgstr "actif" -#: contrib/auth/models.py:62 +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Précise si l'utilisateur peut se connecter à l'administration. " +"Déselectionnezceci plutôt que supprimer le compte." + +#: contrib/auth/models.py:97 msgid "superuser status" msgstr "statut super-utilisateur" -#: contrib/auth/models.py:63 +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Précise que l'utilisateur possède toutes les permissions sans les assigner " +"explicitement." + +#: contrib/auth/models.py:98 msgid "last login" msgstr "dernière connexion" -#: contrib/auth/models.py:64 +#: contrib/auth/models.py:99 msgid "date joined" msgstr "date d'inscription" -#: contrib/auth/models.py:66 +#: contrib/auth/models.py:101 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1224,39 +2098,47 @@ msgstr "" "recevra aussi toutes les permissions de tous les groupes auquels il " "appartient. " -#: contrib/auth/models.py:67 +#: contrib/auth/models.py:102 msgid "user permissions" msgstr "permissions de l'utilisateur" -#: contrib/auth/models.py:70 +#: contrib/auth/models.py:105 msgid "user" msgstr "utilisateur" -#: contrib/auth/models.py:71 +#: contrib/auth/models.py:106 msgid "users" msgstr "utilisateurs" -#: contrib/auth/models.py:76 +#: contrib/auth/models.py:111 msgid "Personal info" msgstr "Information personnelle" -#: contrib/auth/models.py:77 +#: contrib/auth/models.py:112 msgid "Permissions" msgstr "Permissions" -#: contrib/auth/models.py:78 +#: contrib/auth/models.py:113 msgid "Important dates" msgstr "Dates importantes" -#: contrib/auth/models.py:79 +#: contrib/auth/models.py:114 msgid "Groups" msgstr "Groupes" -#: contrib/auth/models.py:219 +#: contrib/auth/models.py:258 msgid "message" msgstr "message" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Les deux mots de passe ne correspondent pas." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Un utilisateur avec ce nom existe déjà." + +#: contrib/auth/forms.py:53 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -1264,65 +2146,102 @@ msgstr "" "Votre navigateur ne semble pas avoir activé les cookies. Les cookies sont " "nécessaire pour se connecter" -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "nom du module python" +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Ce compte est inactif." -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "type de contenu" +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Cette adresse e-mail ne correspond à aucun compte utilisateur. Êtes-vous sûr " +"de vous être enregistré ?" -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "types de contenu" +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Les deux nouveaux mots de passe ne correspondent pas." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" + +#: contrib/localflavor/usa/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" -#: contrib/sessions/models.py:35 +#: contrib/sessions/models.py:51 msgid "session key" msgstr "clé de session" -#: contrib/sessions/models.py:36 +#: contrib/sessions/models.py:52 msgid "session data" msgstr "donnée de session" -#: contrib/sessions/models.py:37 +#: contrib/sessions/models.py:53 msgid "expire date" msgstr "date d'expiration" -#: contrib/sessions/models.py:41 +#: contrib/sessions/models.py:57 msgid "session" msgstr "session" -#: contrib/sessions/models.py:42 +#: contrib/sessions/models.py:58 msgid "sessions" msgstr "sessions" -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nom de domaine" +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Par exemple : '/about/contact/'. Vérifiez la présence du caractère '/' en " +"début et en fin de chaine." -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "nom à afficher" +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "titre" -#: contrib/sites/models.py:15 -msgid "site" -msgstr "site" +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contenu" -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "sites" +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "autoriser les commentaires" -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "j F Y" +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nom du template" -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "j F Y, G:i" +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera " +"'flatfiles/default'." -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "G:i:s" +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "enregistrement requis" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Si coché, seuls les utilisateurs connectés auront la possibilité de voir " +"cette page." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "page à plat" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "pages à plat" #: utils/dates.py:6 msgid "Monday" @@ -1491,8 +2410,8 @@ msgstr[1] "mois" #: utils/timesince.py:14 msgid "week" msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "semaine" +msgstr[1] "semaines" #: utils/timesince.py:15 msgid "day" @@ -1512,484 +2431,65 @@ msgid_plural "minutes" msgstr[0] "minute" msgstr[1] "minutes" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "Indien" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "Tchèque" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "Gallois" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "Dannois" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "Allemand" +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "après-midi" -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "Grec" +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "matin" -#: conf/global_settings.py:43 -msgid "English" -msgstr "Anglais" +#: utils/dateformat.py:46 +msgid "PM" +msgstr "Matin" -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "Espagnol" +#: utils/dateformat.py:47 +msgid "AM" +msgstr "Après-midi" -#: conf/global_settings.py:45 -msgid "French" -msgstr "Français" +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "minuit" -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "Galicien" +#: utils/dateformat.py:97 +msgid "noon" +msgstr "midi" -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "Hongrois" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "Israélien" - -#: conf/global_settings.py:49 -msgid "Icelandic" -msgstr "Islandais" - -#: conf/global_settings.py:50 -msgid "Italian" -msgstr "Italien" - -#: conf/global_settings.py:51 -msgid "Japanese" -msgstr "Japonais" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "Néerlandais" - -#: conf/global_settings.py:53 -msgid "Norwegian" -msgstr "Norvégien" - -#: conf/global_settings.py:54 -msgid "Brazilian" -msgstr "Brésilien" - -#: conf/global_settings.py:55 -msgid "Romanian" -msgstr "Roumain" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "Russe" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "Slovaque" - -#: conf/global_settings.py:58 -msgid "Slovenian" -msgstr "Slovaque" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "Serbe" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "Suédois" - -#: conf/global_settings.py:61 -msgid "Ukrainian" -msgstr "Ukrainien" - -#: conf/global_settings.py:62 -msgid "Simplified Chinese" -msgstr "Chinois simplifié" - -#: conf/global_settings.py:63 -msgid "Traditional Chinese" -msgstr "Chinois traditionnel" - -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." -msgstr "" -"Ce champ ne doit contenir que des lettres, des nombres et des tirets bas " -"('_')." - -#: core/validators.py:64 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas ('_') " -"et des '/'." - -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Les lettres majuscules ne sont pas autorisées ici." - -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Les lettres minuscules ne sont pas autorisées ici." - -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Saisissez uniquement des chiffres séparés par des virgules." - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Entrez des adresses de courriel valides séparées par des virgules." - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Entrez une adresse IP valide." - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Vous ne pouvez pas laisser ce champ vide." - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Les caractères non numériques ne sont pas autorisés ici." - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "Cette valeur ne peut pas être composé uniquement de chiffres." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Entrez un nombre entier." - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Seules les lettres de l'alphabet sont autorisées ici." - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Entrez une date valide au format AAAA-MM-JJ." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Entrez une heure valide au format HH:MM." - -#: core/validators.py:132 db/models/fields/__init__.py:468 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM." - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Entrez une adresse de courriel valide." - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une " -"image ou bien est une image corrompue." - -#: core/validators.py:155 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "L'URL %s ne pointe pas vers une image valide." - -#: core/validators.py:159 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Les numéros de téléphone doivent être au format XXX-XXX-XXXX. \"%s\" est " -"incorrect." - -#: core/validators.py:167 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide." - -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "Une URL valide est requise." - -#: core/validators.py:185 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Du HTML valide est requis. Les erreurs sont les suivantes :\n" -"%s" - -#: core/validators.py:192 -#, python-format -msgid "Badly formed XML: %s" -msgstr "XML mal formé : %s" - -#: core/validators.py:202 -#, python-format -msgid "Invalid URL: %s" -msgstr "URL invalide : %s" - -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "L'URL %s est un lien cassé." - -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Entrez une abréviation d'état américain valide." - -#: core/validators.py:229 -#, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "Attention à votre langage ! Le mot %s n'est pas autorisé ici." -msgstr[1] "Attention à votre langage ! Les mots %s ne sont pas autorisés ici." - -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Ce champ doit correspondre au champ '%s'." - -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Saisissez au moins une valeur dans un des champs s'il vous plaît." - -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "" -"Renseignez chacun des champs ou laissez les deux vides s'il vous plaît." - -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s" - -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s" - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Des valeurs identiques ne sont pas autorisées." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "Cette valeur doit être une puissance de %s." - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Saisissez un nombre décimal valide s'il vous plaît." - -#: core/validators.py:349 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." -msgstr[0] "" -"Saisissez un nombre décimal valide avec au plus %s chiffre s'il vous plaît." -msgstr[1] "" -"Saisissez un nombre décimal valide avec au plus %s chiffres s'il vous plaît." - -#: core/validators.py:352 -#, python-format -msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "" -"Saisissez un nombre décimal valide avec au plus %s décimale s'il vous plaît" -msgstr[1] "" -"Saisissez un nombre décimal valide avec au plus %s décimales s'il vous plaît" - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" -"Vérifiez que le fichier transféré fait au moins une taille de %s octets." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" -"Vérifiez que le fichier transféré fait au plus une taille de %s octets." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "Le format de ce champ est mauvais." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "Ce champ est invalide." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Impossible de récupérer quoi que ce soit depuis %s." - -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est " -"pas valide." - -#: core/validators.py:462 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Veuillez fermer le tag %(tag)s de la ligne %(line)s. (La ligne débutant par " -"\"%(start)s\".)" - -#: core/validators.py:466 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. " -"(Ligne débutant par \"%(start)s\".)" - -#: core/validators.py:471 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant " -"par \"%(start)s\".)" - -#: core/validators.py:476 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%" -"(start)s\".)" - -#: core/validators.py:480 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. " -"(Ligne débutant par \"%(start)s\".)" - -#: core/validators.py:485 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. " -"(Ligne débutant par \"%(start)s\".)" - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s avec le champ %(fieldname)s existe déjà." - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "Ce champ est obligatoire." - -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "Cette valeur doit être un entier." - -#: db/models/fields/__init__.py:369 -msgid "This value must be either True or False." -msgstr "Cette valeur doit être soit Vraie soit Fausse." - -#: db/models/fields/__init__.py:385 -msgid "This field cannot be null." -msgstr "Ce champ ne peut pas être vide." - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Entrez un nom de fichier valide." - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Entrez un %s valide." - -#: db/models/fields/related.py:579 -msgid "Separate multiple IDs with commas." -msgstr "Séparez les ID par des virgules." - -#: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Maintenez \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un Mac, " -"pour en sélectionner plusieurs." - -#: db/models/fields/related.py:625 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Entrez un ID %(self)s valide. La valeur %(value)r est invalide." -msgstr[1] "" -"Entrez des ID %(self)s valides. Les valeurs %(value)r sont invalides." +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "j F Y" -#: forms/__init__.py:380 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Assurez-vous que votre texte fais moins de %s caractère." -msgstr[1] "Assurez-vous que votre texte fais moins de %s caractères." +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "j F Y, G:i" -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "Les retours à la ligne ne sont pas autorisés ici." +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "G:i:s" -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Sélectionnez un choix valide ; '%(data)s' n'est pas dans %(choices)s." +#: utils/translation/trans_real.py:380 +#, fuzzy +msgid "YEAR_MONTH_FORMAT" +msgstr "j F Y" -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "Le fichier soumis est vide." +#: utils/translation/trans_real.py:381 +#, fuzzy +msgid "MONTH_DAY_FORMAT" +msgstr "j F Y" -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Entrez un nombre entier entre -32 768 et 32 767." +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "oui,non,peut-être" -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "Entrez un nombre entier positif." +#~ msgid "%dth" +#~ msgstr "%de" -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Entrez un nombre entier entre 0 et 32 767." +#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" +#~ msgstr "" +#~ "Avez vous <a href=\"/password_reset/\">perdu votre mot de passe</a>?" -#: template/defaultfilters.py:379 -msgid "yes,no,maybe" -msgstr "oui,non,peut-être" +#~ msgid "Use '[algo]$[salt]$[hexdigest]'" +#~ msgstr "Utilisez '[algo]$[salt]$[hexdigest]'" #~ msgid "Comment" #~ msgstr "Commentaire" diff --git a/django/conf/locale/it/LC_MESSAGES/django.mo b/django/conf/locale/it/LC_MESSAGES/django.mo Binary files differindex 584531c9b2..821828383e 100644 --- a/django/conf/locale/it/LC_MESSAGES/django.mo +++ b/django/conf/locale/it/LC_MESSAGES/django.mo diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po index 94a83048be..66a4e09f88 100644 --- a/django/conf/locale/it/LC_MESSAGES/django.po +++ b/django/conf/locale/it/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-02-26 20:44+0100\n" -"PO-Revision-Date: 2007-02-27 20:06+0100\n" +"PO-Revision-Date: 2007-03-14 19:29+0100\n" "Last-Translator: Nicola Larosa <nico@tekNico.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -523,7 +523,7 @@ msgstr "" #: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." -msgstr "I due campi parola chiave non corrispondono." +msgstr "I due campi password non corrispondono." #: contrib/auth/forms.py:25 msgid "A user with that username already exists." @@ -555,7 +555,7 @@ msgstr "Questo indirizzo email non è associato ad alcun account utente. Sei sic #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." -msgstr "I due campi 'nuova parola chiave' non corrispondono." +msgstr "I due campi 'nuova password' non corrispondono." #: contrib/auth/forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." @@ -609,13 +609,13 @@ msgstr "indirizzo e-mail" #: contrib/auth/models.py:94 msgid "password" -msgstr "parola chiave" +msgstr "password" #: contrib/auth/models.py:94 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change " "password form</a>." -msgstr "Usare '[algo]$[salt]$[hexdigest]' oppure la maschera di <a href=\"password/\">cambio parola chiave</a>." +msgstr "Usare '[algo]$[salt]$[hexdigest]' oppure la maschera di <a href=\"password/\">cambio password</a>." #: contrib/auth/models.py:95 msgid "staff status" @@ -1040,12 +1040,12 @@ msgstr "Aggiungi utente" #: contrib/admin/views/auth.py:57 msgid "Password changed successfully." -msgstr "La parola chiave è stata cambiata correttamente." +msgstr "La password è stata cambiata correttamente." #: contrib/admin/views/auth.py:64 #, python-format msgid "Change password: %s" -msgstr "Cambia la parola chiave: %s" +msgstr "Cambia la password: %s" #: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" @@ -1088,7 +1088,7 @@ msgstr "Documentazione" #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/registration/password_change_done.html:3 msgid "Change password" -msgstr "Cambia la parola chiave" +msgstr "Cambia la password" #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 @@ -1335,11 +1335,11 @@ msgstr "Nome utente:" #: contrib/admin/templates/admin/login.html:20 #: contrib/comments/templates/comments/form.html:8 msgid "Password:" -msgstr "Parola chiave:" +msgstr "Password:" #: contrib/admin/templates/admin/login.html:22 msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" -msgstr "Hai <a href=\"/password_reset/\">dimenticato la parola chiave</a>?" +msgstr "Hai <a href=\"/password_reset/\">dimenticato la password</a>?" #: contrib/admin/templates/admin/base.html:25 msgid "Welcome," @@ -1349,7 +1349,7 @@ msgstr "Benvenuto," msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." -msgstr "Inserire innanzitutto nome utente e parola chiave. Si potrà quindi modificare le altre impostazioni dell'utente." +msgstr "Inserire innanzitutto nome utente e password. Si potrà quindi modificare le altre impostazioni dell'utente." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -1358,22 +1358,22 @@ msgstr "Nome utente" #: contrib/admin/templates/admin/auth/user/add_form.html:18 #: contrib/admin/templates/admin/auth/user/change_password.html:34 msgid "Password" -msgstr "Parola chiave" +msgstr "Password" #: contrib/admin/templates/admin/auth/user/add_form.html:23 #: contrib/admin/templates/admin/auth/user/change_password.html:39 msgid "Password (again)" -msgstr "Parola chiave (di nuovo)" +msgstr "Password (di nuovo)" #: contrib/admin/templates/admin/auth/user/add_form.html:24 #: contrib/admin/templates/admin/auth/user/change_password.html:40 msgid "Enter the same password as above, for verification." -msgstr "Inserire la stessa parola chiave inserita sopra, come verifica." +msgstr "Inserire la stessa password inserita sopra, come verifica." #: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user <strong>%(username)s</strong>." -msgstr "Inserire una nuova parola chiave per l'utente <strong>%(username)s</strong>." +msgstr "Inserire una nuova password per l'utente <strong>%(username)s</strong>." #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -1460,13 +1460,13 @@ msgstr "Modifica:" #: contrib/admin/templates/registration/password_reset_form.html:10 #: contrib/admin/templates/registration/password_reset_done.html:4 msgid "Password reset" -msgstr "Reimposta la parola chiave" +msgstr "Reimposta la password" #: 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 "Dimenticata la parola chiave? Inserire il proprio indirizzo e-mail qui sotto: la parola chiave sarà reimpostata, e la nuova ti verrà inviata per e-mail." +msgstr "Dimenticata la password? Inserire il proprio indirizzo e-mail qui sotto: la password sarà reimpostata, e la nuova ti verrà inviata per e-mail." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -1474,11 +1474,11 @@ msgstr "Indirizzo e-mail:" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" -msgstr "Reimposta la mia parola chiave" +msgstr "Reimposta la mia password" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Hai ricevuto questa e-mail perché hai chiesto di reimpostare la parola chiave" +msgstr "Hai ricevuto questa e-mail perché hai chiesto di reimpostare la password" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -1488,11 +1488,11 @@ msgstr "per il tuo account utente su %(site_name)s" #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" -msgstr "La tua nuova parola chiave è: %(new_password)s" +msgstr "La tua nuova password è: %(new_password)s" #: contrib/admin/templates/registration/password_reset_email.html:7 msgid "Feel free to change this password by going to this page:" -msgstr "Puoi liberamente cambiare la tua parola chiave tramite questa pagina:" +msgstr "Puoi liberamente cambiare la tua password tramite questa pagina:" #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" @@ -1518,51 +1518,51 @@ msgstr "Accedi di nuovo" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "Parola chiave reimpostata correttamente" +msgstr "Password reimpostata correttamente" #: 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 "La nuova parola chiave è stata inviata all'indirizzo e-mail inserito. Arriverà a breve." +msgstr "La nuova password è stata inviata all'indirizzo e-mail inserito. Arriverà a breve." #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 #: contrib/admin/templates/registration/password_change_form.html:10 #: contrib/admin/templates/registration/password_change_done.html:4 msgid "Password change" -msgstr "Cambio di parola chiave" +msgstr "Cambio password" #: 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 "Inserire l'attuale parola chiave, per ragioni di sicurezza, e poi la nuova parola chiave due volte, per verificare di averla scritta correttamente." +msgstr "Inserire l'attuale password, per ragioni di sicurezza, e poi la nuova password due volte, per verificare di averla scritta correttamente." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" -msgstr "Parola chiave attuale:" +msgstr "Password attuale:" #: contrib/admin/templates/registration/password_change_form.html:19 msgid "New password:" -msgstr "Nuova parola chiave:" +msgstr "Nuova password:" #: contrib/admin/templates/registration/password_change_form.html:21 msgid "Confirm password:" -msgstr "Confermare la parola chiave:" +msgstr "Confermare la password:" #: contrib/admin/templates/registration/password_change_form.html:23 msgid "Change my password" -msgstr "Modifica la mia parola chiave" +msgstr "Modifica la mia password" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" -msgstr "Cambio di parola chiave avvenuto correttamente" +msgstr "Cambio di password avvenuto correttamente" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." -msgstr "La parola chiave è stata cambiata." +msgstr "La password è stata cambiata." #: contrib/sites/models.py:10 msgid "domain name" @@ -1905,7 +1905,7 @@ msgstr "Il modulo di commento non fornisce né 'anteprima' né 'invia'" #: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" -msgstr "Hai dimenticato la parola chiave?" +msgstr "Hai dimenticato la password?" #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" diff --git a/django/conf/locale/pl/LC_MESSAGES/djangojs.mo b/django/conf/locale/pl/LC_MESSAGES/djangojs.mo Binary files differnew file mode 100644 index 0000000000..752211a454 --- /dev/null +++ b/django/conf/locale/pl/LC_MESSAGES/djangojs.mo diff --git a/django/conf/locale/pl/LC_MESSAGES/djangojs.po b/django/conf/locale/pl/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..8b929f309d --- /dev/null +++ b/django/conf/locale/pl/LC_MESSAGES/djangojs.po @@ -0,0 +1,112 @@ +# translation of djangojs.po to Polish +# Copyright (C) 2007 Michal Chruszcz +# This file is distributed under the same license as the django package. +# +# Michal Chruszcz <troll@pld-linux.org>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-09 11:51+0100\n" +"PO-Revision-Date: 2007-03-12 11:42+0100\n" +"Last-Translator: Michal Chruszcz <troll@pld-linux.org>\n" +"Language-Team: Polish <pl@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "Dostępne %s" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "Wybierz wszystko" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "Dodaj" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "Usuń" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "Wybrano %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +#, fuzzy +msgid "Select your choice(s) and click " +msgstr "Zaznacz swój wybór i kliknij " + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "Wyczyść wszystko" + +#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień Październik Listopad Grudzień" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Niedziela Poniedziałek Wtorek Środa Czwartek Piątek Sobota" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "N Pn Wt Śr Cz Pt So" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "Teraz" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "Zegar" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "Wybierz czas" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "Północ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "6 rano" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "Południe" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "Anuluj" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "Dzisiaj" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "Kalendarz" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "Wczoraj" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "Jutro" + diff --git a/django/conf/locale/pt/LC_MESSAGES/django.mo b/django/conf/locale/pt/LC_MESSAGES/django.mo Binary files differnew file mode 100644 index 0000000000..7adc41be5b --- /dev/null +++ b/django/conf/locale/pt/LC_MESSAGES/django.mo diff --git a/django/conf/locale/pt/LC_MESSAGES/django.po b/django/conf/locale/pt/LC_MESSAGES/django.po new file mode 100644 index 0000000000..d99f51d78b --- /dev/null +++ b/django/conf/locale/pt/LC_MESSAGES/django.po @@ -0,0 +1,2125 @@ +# Portuguese translation of Django. +# Copyright (C) 2007 the Lawrence Journal-World +# This file is distributed under the same license as the PACKAGE package. +# Nuno Mariz <nmariz@gmail.com>, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: Django 0.96pre\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-03-15 15:43+0200\n" +"PO-Revision-Date: 2007-03-16 10:00+0000\n" +"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n" +"Language-Team: pt_PT <nmariz@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "ID do objecto" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "título" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "comentário" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "avaliação #1" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "avaliação #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "avaliação #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "avaliação #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "avaliação #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "avaliação #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "avaliação #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "avaliação #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "é uma avaliação válida" + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "data/hora de submissão" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "é público" + +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +msgid "IP address" +msgstr "Endereço IP" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "foi removido" + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "Seleccione esta opção se o comentário não é apropriado. Uma mensagem \"Este comentário foi removido\" será mostrada no seu lugar." + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "comentários" + +#: contrib/comments/models.py:131 contrib/comments/models.py:207 +msgid "Content object" +msgstr "Objecto de conteúdo" + +#: contrib/comments/models.py:159 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Colocado pelo utilizador %(user)s em %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "nome da pessoa" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "endereço ip" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "aprovado pela equipa" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "comentário livre" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "comentários livres" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "pontuação" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "data da pontuação" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "pontuação do karma" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "pontuações do karma" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "Avaliação %(score)d por %(user)s" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"O utilizador %(user)s colocou uma flag neste comentário\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "data da flag" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "flag do utilizador" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "flags do utilizador" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "Flag por %r" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "data de remoção" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "remoção pelo moderador" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "remoções pelo moderador" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Remoção de moderador %r" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Utilizadores anónimos não podem votar" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "ID de comentário inválido" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Não pode votar em si" + +#: contrib/comments/views/comments.py:27 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "Esta avaliação é obrigatória porque introduziu pelo menos uma outra avaliação." + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Este comentário foi colocado por um utilizador que efectuou menos de %(count)s comentário:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Este comentário foi colocado por um utilizador que efectuou menos de %(count)s comentários:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Este comentário foi colocado por um utilizador incompleto:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Apenas POSTs são autorizados" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Um ou mais campos obrigatórios não foram submetidos" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Alguém modificou o formulário de comentário (violação de segurança)" + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "O formulário de comentário teve um parâmetro 'target' inválido -- o ID do objecto foi inválido" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "O formulário de comentário não forneceu nem 'preview' ou 'post'" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "Utilizador:" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Log out" +msgstr "Sair" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Palavra-passe:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Esqueceu-se da palavra-passe?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Avaliações" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Obrigatório" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Opcional" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Colocar uma foto" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Comentário:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Pré-visualizar comentário" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "O seu nome:" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"<h3>By %s:</h3>\n" +"<ul>\n" +msgstr "" +"<h3>Por %s:</h3>\n" +"<ul>\n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "Todos" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "Qualquer data" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "Hoje" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "Últimos 7 dias" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "Este mês" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "Este ano" + +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Sim" + +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Não" + +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Desconhecido" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "hora da acção" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "id do objecto" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "repr do objecto" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "flag de acção" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "modificar mensagem" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "entrada de log" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "entradas de log" + +#: contrib/admin/templatetags/admin_list.py:230 +msgid "All dates" +msgstr "Todas as datas" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "Por favor introduza o utilizador e palavra-passe correctos. Note que ambos os casos diferenciam maiúsculas e minúsculas." + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Entrar" + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "Por favor autentique-se novamente, porque a sua sessão expirou. Não se preocupe: Os dados submetidos foram gravados." + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "Aparentemente o seu browser não está configurado para aceitar cookies. Por favor active os cookies, carrege novamente a página e volte a tentar." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Nomes de utilizador não podem conter o caracter '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "O seu endereço de e-mail não é o seu nome de utilizador. Tente usar '%s'." + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Administração do site" + +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso." + +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:22 +msgid "You may edit it again below." +msgstr "Pode editá-lo(a) outra vez abaixo." + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "Pode adicionar outro %s abaixo." + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "Adicionar %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "Foi adicionado %s" + +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 +msgid "and" +msgstr "e" + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "Foi modificado %s." + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "Foi removido %s." + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "Nenhum campo foi modificado." + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "O(A) %(name)s \"%(obj)s\" foi modificado(a) com sucesso." + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso. Pode voltar a editar novamente abaixo." + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "Modificar %s" + +#: contrib/admin/views/main.py:473 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Um ou mais %(fieldname)s em %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:478 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Um ou mais %(fieldname)s em %(name)s:" + +#: contrib/admin/views/main.py:511 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "O(A) %(name)s \"%(obj)s\" foi removido(a) com sucesso." + +#: contrib/admin/views/main.py:514 +msgid "Are you sure?" +msgstr "Tem a certeza?" + +#: contrib/admin/views/main.py:536 +#, python-format +msgid "Change history: %s" +msgstr "Histórico de modificações: %s" + +#: contrib/admin/views/main.py:570 +#, python-format +msgid "Select %s" +msgstr "Seleccionar %s" + +#: contrib/admin/views/main.py:570 +#, python-format +msgid "Select %s to change" +msgstr "Seleccione %s para modificar" + +#: contrib/admin/views/main.py:758 +msgid "Database error" +msgstr "Erro de base de dados" + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "tag:" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "filtro:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "ver:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "A aplicação %r não encontrada" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %r not found in app %r" +msgstr "O Model %r não foi encontrado na aplicação %r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%s.%s` object" +msgstr "o objecto `%s.%s` relacionado" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "model:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%s.%s` objects" +msgstr "os objectos `%s.%s` relacionados" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "todos %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "número de %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Campos nos objectos %s" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +msgid "Integer" +msgstr "Inteiro" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Boolean (Pode ser True ou False)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "String (até %(maxlength)s)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Inteiros separados por virgula" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Data (sem hora)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Data (com hora)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "Endereço de e-mail" + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "Caminho do ficheiro" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "Número décimal" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "Boolean (Pode ser True, False ou None)" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "Relação para o pai do model" + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "Número de telefone" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "Texto" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "Hora" + +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "Estado dos E.U.A (duas letras em maiúsculas)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "Texto XML" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s não parece ser um objecto urlpattern" + +#: contrib/admin/views/auth.py:28 +msgid "Add user" +msgstr "Adicionar utilizador" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Documentação" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Change password" +msgstr "Modificar palavra-passe" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Início" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:20 +msgid "History" +msgstr "História" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Data/hora" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Utilizador" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Acção" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "Este objecto não tem histórico de modificações. Provavelmente não foi modificado via site de administração." + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Site de administração do Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administração do Django" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Erro do servidor" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Erro do servidor (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error <em>(500)</em>" +msgstr "Erro do servidor <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 "Ocorreu um erro. Foi reportado aos administradores do site via e-mail e deverá ser corrigido brevemente. Obrigado pela sua paciência." + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Página não encontrada" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Pedimos desculpa, mas a página solicitada não foi encontrada." + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Models disponíveis na aplicação %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:28 +#: contrib/admin/templates/admin/change_form.html:15 +msgid "Add" +msgstr "Adicionar" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Modificar" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Não tem permissão para modificar nada." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Acções Recentes" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "As minhas Acções" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Nenhum disponível" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "Adicionar %(name)s" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" +msgstr "<a href=\"/password_reset/\">Esqueceu-se a sua palavra-passe?</a>" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Bem-vindo," + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Remover" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "A remoção de %(object_name)s '%(escaped_objects)s' resultará na remoção dos objectos relacionados, mas a sua conta não tem permissão de remoção dos seguintes tipos de objectos:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "Tem a certeza que deseja remover %(object_name)s \"%(escaped_object)s\"? Todos os items relacionados seguintes irão ser removidos:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Sim, tenho a certeza" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Por %(filter_title)s " + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Ir" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 resultado" +msgstr[1] "%(counter)s resultados" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s no total" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Mostrar todos" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtro" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "Ver no site" + +#: contrib/admin/templates/admin/change_form.html:30 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor corrija o erro abaixo." +msgstr[1] "Por favor corrija os erros abaixo." + +#: contrib/admin/templates/admin/change_form.html:48 +msgid "Ordering" +msgstr "Ordenação" + +#: contrib/admin/templates/admin/change_form.html:51 +msgid "Order:" +msgstr "Ordem:" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Gravar como novo" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Gravar e adicionar outro" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Gravar e continuar a editar" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Gravar" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "Passa-se algo de errado com a instalação da sua base de dados. Verifique se as tabelas da base de dados foram criadas apropriadamente e verifique se a base de dados pode ser lida pelo utilizador definido." + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "Primeiro introduza o nome do utilizador e palavra-passe. Depois poderá editar mais opções do utilizador." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Utilizador" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Palavra-passe" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Palavra-passe (novamente)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "Introduza a palavra-passe como acima, para verificação." + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "Modificação de palavra-passe" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Palavra-passe modificada com sucesso" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "A sua palavra-passe foi modificada." + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Reinicializar palavra-passe" + +#: 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 "Esqueceu-se da palavra-passe? Introduza o seu email abaixo, e enviaremos a sua palavra-passe reinicializada para o seu e-mail." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Endereço de e-mail:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Reinicializar a minha palavra-passe" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Obrigado por ter gasto tempo de qualidade no Web site hoje." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Entrar novamente" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Palavra-passe reinicializada com sucesso" + +#: 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 "Foi enviada uma nova palavra-passe nova para o e-mail que submeteu. Deverá estar a recebê-la brevemente." + +#: contrib/admin/templates/registration/password_change_form.html:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "Por razões de segurança, por favor introduza a sua palavra-passe antiga e depois introduza a nova duas vezes para que possamos verificar se introduziu correctamente." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Palavra-passe antiga:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Nova password:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Confirmação da palavra-passe:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Modificar a minha palavra-passe" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Está a receber este e-mail porque requisitou a reinicialização da sua palavra-passe" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "para a sua conta de utilizador em %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "A sua nova palavra-chave é: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Tenha a liberdade de modificar esta palavra-passe através desta página:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "O seu nome de utilizador, no caso de se ter esquecido:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Obrigado pela sua visita ao nosso site!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "A equipa do %(site_name)s" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Itens do bookmark" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Documentação dos itens do bookmark" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").</p>\n" +msgstr "" +"\n" +"<p class=\"help\">Para instalar itens no bookmark, arraste o link para sua barra \n" +"de bookmarks, ou clique com o lado direito do rato no link e adicione ao seus bookmarks. Agora pode \n" +"seleccionar o link do bookmark de qualquer página no site. Note que alguns destes \n" +"itens do bookmark requerem que visualize o site de um computador designado \n" +"por \"internal\" (entre em contacto com o seu administrador de sistema se \n" +"não tiver a certeza se o seu computador é \"internal\".</p>\n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Documentação desta página" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "Vai de qualquer página para a documentação da view que gera essa página." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Mostrar o ID do objecto" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "Mostra o tipo de conteúdo e o ID único para as páginas que representam um único objecto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Editar este objecto (janela actual)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Vai para a página de admin para as páginas que representam um único objecto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Editar este objecto (nova janela)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Tal como acima, mas abre a página de admin numa nova janela." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Data:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Hora:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Actualmente:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modificar:" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redireccionar de" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "Isto deverá ser um caminho absoluto, excluindo o domínio. Exemplo: '/events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redireccionar para" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "Isto poderá ser um caminho absoluto (como acima) ou um URL completo começado por 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redireccionar" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redirecciona" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Exemplo: '/about/contact/'. Verifique se possui as barras no inicio e no fim." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "titulo" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "conteúdo" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "permitir comentários" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nome da template" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "Exemplo: 'flatpages/contact_page.html'. Se não for fornecido, o sistema usará: 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "é necessário registo" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Se estiver seleccionado, apenas utilizadores autenticados poderão ver esta página." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "página plana" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "páginas planas" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Saiu" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "nome" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "nome de código" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "permissão" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "permissões" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "grupo" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "grupos" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "utilizador" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanúmericos (letras, números ou underscores)." + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "primeiro nome" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "último nome" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "endereço de e-mail" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "palavra-passe" + +#: contrib/auth/models.py:94 +msgid "Use '[algo]$[salt]$[hexdigest]'" +msgstr "Use '[algo]$[salt]$[hexdigest]'" + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "status de equipa" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Define se o utilizador pode usar a administração do site." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "activo" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Define se este utiliador pode usar a adminstração do site. Não seleccione em vez de remover as contas." + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "Status de superuser" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Define se este utilizador tem todas as permissões sem explicitamente as atribuir." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "última entrada" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "data de registo" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "Em adição às permissões definidas manualmente, este utilizador também terá todas as permissões atribuídas a cada grupo a que partence." + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "permissões do utilizador" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "utilizador" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "utilizadores" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Informação pessoal" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Permissões" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Datas importantes" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Grupos" + +#: contrib/auth/models.py:256 +msgid "message" +msgstr "mensagem" + +#: contrib/auth/forms.py:52 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "Aparentemente que o seu browser não está configurado para aceitar cookies. Os cookies são necessários para poder entrar." + +#: contrib/auth/forms.py:61 +msgid "This account is inactive." +msgstr "Esta conta não está activa." + +#: contrib/contenttypes/models.py:20 +msgid "python model class name" +msgstr "python model class name" + +#: contrib/contenttypes/models.py:23 +msgid "content type" +msgstr "tipo de conteúdo" + +#: contrib/contenttypes/models.py:24 +msgid "content types" +msgstr "tipos de conteúdos" + +#: contrib/sessions/models.py:51 +msgid "session key" +msgstr "chave da sessão" + +#: contrib/sessions/models.py:52 +msgid "session data" +msgstr "dados da sessão" + +#: contrib/sessions/models.py:53 +msgid "expire date" +msgstr "data de expiração" + +#: contrib/sessions/models.py:57 +msgid "session" +msgstr "sessão" + +#: contrib/sessions/models.py:58 +msgid "sessions" +msgstr "sessões" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nome do domínio" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "mostrar nome" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "site" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "sites" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Segunda-feira" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Terça-feira" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Quinta-feira" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Sexta-feira" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Sábado" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Domingo" + +#: utils/dates.py:14 +msgid "January" +msgstr "Janeiro" + +#: utils/dates.py:14 +msgid "February" +msgstr "Fevereiro" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "Março" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "Abril" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "Maio" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "Junho" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "Julho" + +#: utils/dates.py:15 +msgid "August" +msgstr "Agosto" + +#: utils/dates.py:15 +msgid "September" +msgstr "Setembro" + +#: utils/dates.py:15 +msgid "October" +msgstr "Outubro" + +#: utils/dates.py:15 +msgid "November" +msgstr "Novembro" + +#: utils/dates.py:16 +msgid "December" +msgstr "Dezembro" + +#: utils/dates.py:19 +msgid "jan" +msgstr "jan" + +#: utils/dates.py:19 +msgid "feb" +msgstr "fev" + +#: utils/dates.py:19 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:19 +msgid "apr" +msgstr "abr" + +#: utils/dates.py:19 +msgid "may" +msgstr "mai" + +#: utils/dates.py:19 +msgid "jun" +msgstr "jun" + +#: utils/dates.py:20 +msgid "jul" +msgstr "jul" + +#: utils/dates.py:20 +msgid "aug" +msgstr "ago" + +#: utils/dates.py:20 +msgid "sep" +msgstr "set" + +#: utils/dates.py:20 +msgid "oct" +msgstr "out" + +#: utils/dates.py:20 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:20 +msgid "dec" +msgstr "dez" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "Jan." + +#: utils/dates.py:27 +msgid "Feb." +msgstr "Fev." + +#: utils/dates.py:28 +msgid "Aug." +msgstr "Ago." + +#: utils/dates.py:28 +msgid "Sept." +msgstr "Set." + +#: utils/dates.py:28 +msgid "Oct." +msgstr "Out." + +#: utils/dates.py:28 +msgid "Nov." +msgstr "Nov." + +#: utils/dates.py:28 +msgid "Dec." +msgstr "Dez." + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "ano" +msgstr[1] "anos" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "mês" +msgstr[1] "meses" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "semana" +msgstr[1] "semanas" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "dia" +msgstr[1] "dias" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuto" +msgstr[1] "minutos" + +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Árabe" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengalês" + +#: conf/global_settings.py:41 +msgid "Czech" +msgstr "Checo" + +#: conf/global_settings.py:42 +msgid "Welsh" +msgstr "Galês" + +#: conf/global_settings.py:43 +msgid "Danish" +msgstr "Dinamarquês" + +#: conf/global_settings.py:44 +msgid "German" +msgstr "Alemão" + +#: conf/global_settings.py:45 +msgid "Greek" +msgstr "Grego" + +#: conf/global_settings.py:46 +msgid "English" +msgstr "Inglês" + +#: conf/global_settings.py:47 +msgid "Spanish" +msgstr "Espanhol" + +#: conf/global_settings.py:48 +msgid "Argentinean Spanish" +msgstr "Espanhol Argentino" + +#: conf/global_settings.py:49 +msgid "Finnish" +msgstr "Filandês" + +#: conf/global_settings.py:50 +msgid "French" +msgstr "Francês" + +#: conf/global_settings.py:51 +msgid "Galician" +msgstr "Galaciano" + +#: conf/global_settings.py:52 +msgid "Hungarian" +msgstr "Húngaro" + +#: conf/global_settings.py:53 +msgid "Hebrew" +msgstr "Hebraico" + +#: conf/global_settings.py:54 +msgid "Icelandic" +msgstr "Islandês" + +#: conf/global_settings.py:55 +msgid "Italian" +msgstr "Italiano" + +#: conf/global_settings.py:56 +msgid "Japanese" +msgstr "Japonês" + +#: conf/global_settings.py:57 +msgid "Dutch" +msgstr "Holandês" + +#: conf/global_settings.py:58 +msgid "Norwegian" +msgstr "Norueguês" + +#: conf/global_settings.py:59 +msgid "Brazilian" +msgstr "Brasileiro" + +#: conf/global_settings.py:60 +msgid "Romanian" +msgstr "Romeno" + +#: conf/global_settings.py:61 +msgid "Russian" +msgstr "Russo" + +#: conf/global_settings.py:62 +msgid "Slovak" +msgstr "Eslovaco" + +#: conf/global_settings.py:63 +msgid "Slovenian" +msgstr "Esloveno" + +#: conf/global_settings.py:64 +msgid "Serbian" +msgstr "Sérvio" + +#: conf/global_settings.py:65 +msgid "Swedish" +msgstr "Sueco" + +#: conf/global_settings.py:66 +msgid "Tamil" +msgstr "Tamil" + +#: conf/global_settings.py:67 +msgid "Turkish" +msgstr "Turco" + +#: conf/global_settings.py:68 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: conf/global_settings.py:69 +msgid "Simplified Chinese" +msgstr "Chinês Simplificado" + +#: conf/global_settings.py:70 +msgid "Traditional Chinese" +msgstr "Chinês Tradicional" + +#: core/validators.py:63 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Este valor apenas poderá conter letras, números ou underscores." + +#: core/validators.py:67 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Este valor apenas poderá conter letras, números, underscores ou traços." + +#: core/validators.py:71 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Este valor apenas poderá conter letras, números, undercores ou hífenes." + +#: core/validators.py:75 +msgid "Uppercase letters are not allowed here." +msgstr "Letras em maiúsculas não são permitidas aqui." + +#: core/validators.py:79 +msgid "Lowercase letters are not allowed here." +msgstr "Letras em minúsculas não são permitidas aqui." + +#: core/validators.py:86 +msgid "Enter only digits separated by commas." +msgstr "Introduza apenas números separados por vírgulas." + +#: core/validators.py:98 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Introduza endereços de e-mail válidos separados por vírgulas." + +#: core/validators.py:102 +msgid "Please enter a valid IP address." +msgstr "Por favor introduza um endereço IP válido." + +#: core/validators.py:106 +msgid "Empty values are not allowed here." +msgstr "Valores em branco não são permitidos aqui." + +#: core/validators.py:110 +msgid "Non-numeric characters aren't allowed here." +msgstr "Caracteres não númericos não são permitidos aqui." + +#: core/validators.py:114 +msgid "This value can't be comprised solely of digits." +msgstr "Este valor não pode ser constituido apenas por números." + +#: core/validators.py:119 +msgid "Enter a whole number." +msgstr "Introduza um número inteiro." + +#: core/validators.py:123 +msgid "Only alphabetical characters are allowed here." +msgstr "Apenas letras são válidas aqui." + +#: core/validators.py:138 +msgid "Year must be 1900 or later." +msgstr "O ano deve ser 1900 ou superior." + +#: core/validators.py:142 +#, python-format +msgid "Invalid date: %s." +msgstr "Data inválida: %s." + +#: core/validators.py:146 db/models/fields/__init__.py:415 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Introduza uma data válida no formato AAAA-MM-DD." + +#: core/validators.py:151 +msgid "Enter a valid time in HH:MM format." +msgstr "Introduza uma hora válida no formato HH:MM." + +#: core/validators.py:155 db/models/fields/__init__.py:477 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Introduza uma data/hora válida no formato AAAA-MM-DD HH:MM." + +#: core/validators.py:160 +msgid "Enter a valid e-mail address." +msgstr "Introduza um endereço de e-mail válido." + +#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Nenhum ficheiro foi submetido. Verifique o tipo de codificação do formulário." + +#: core/validators.py:176 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "Introduza uma imagem válida. O ficheiro que introduziu ou não é uma imagem ou está corrompido." + +#: core/validators.py:183 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "O URL %s não aponta para uma imagem válida." + +#: core/validators.py:187 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Os números de telefone deverão ser no formato XXX-XXX-XXXX. \"%s\" é inválido." + +#: core/validators.py:195 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "O URL %s não aponta para um QuickTime video válido." + +#: core/validators.py:199 +msgid "A valid URL is required." +msgstr "É obrigatório um URL válido" + +#: core/validators.py:213 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"É obrigatório um HTML válido. Os erros específicos são:\n" +"%s" + +#: core/validators.py:220 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML mal formatado: %s" + +#: core/validators.py:230 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL inválido: %s" + +#: core/validators.py:234 core/validators.py:236 +#, python-format +msgid "The URL %s is a broken link." +msgstr "O URL %s é um link quebrado." + +#: core/validators.py:242 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Introduza uma abreviação de um estado dos E.U.A. válido." + +#: core/validators.py:256 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Atenção à linguagem! A palavra %s não é permitida aqui." +msgstr[1] "Atenção à linguagem! As palavras %s não são permitidas aqui." + +#: core/validators.py:263 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Este campo deve ser igual ao campo '%s'." + +#: core/validators.py:282 +msgid "Please enter something for at least one field." +msgstr "Por favor preencha pelo menos um campo." + +#: core/validators.py:291 core/validators.py:302 +msgid "Please enter both fields or leave them both empty." +msgstr "Por favor preencha ambos os campos ou deixe ambos vazios." + +#: core/validators.py:309 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Este campo deve ser preenchido se %(field)s for %(value)s" + +#: core/validators.py:321 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Este campo deve ser preenchido se %(field)s não é %(value)s" + +#: core/validators.py:340 +msgid "Duplicate values are not allowed." +msgstr "Valores duplicados não são permitidos." + +#: core/validators.py:363 +#, python-format +msgid "This value must be a power of %s." +msgstr "Este valor deverá ser uma potência de %s." + +#: core/validators.py:374 +msgid "Please enter a valid decimal number." +msgstr "Por favor introduza um número décimal válido." + +#: core/validators.py:378 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Por favor introduza um número décimal com um máximo de %s digito." +msgstr[1] "Por favor introduza um número décimal com um máximo de %s digitos." + +#: core/validators.py:381 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Por favor introduza um número décimal com o máximo de % digito na parte inteira." +msgstr[1] "Por favor introduza um número décimal com o máximo de % digitos na parte inteira." + +#: core/validators.py:384 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Por favor introduza um número décimal com o máximo de %s digito na parte décimal." +msgstr[1] "Por favor introduza um número décimal com o máximo de %s digitos na parte décimal." + +#: core/validators.py:394 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Verifique que o ficheiro introduzido tem pelo menos %s bytes." + +#: core/validators.py:395 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Verifique se o ficheiro introduzido tem no máximo %s bytes." + +#: core/validators.py:412 +msgid "The format for this field is wrong." +msgstr "O formato deste campo é errado." + +#: core/validators.py:427 +msgid "This field is invalid." +msgstr "Este campo é inválido." + +#: core/validators.py:463 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Não foi possível extrair nada de %s." + +#: core/validators.py:466 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "O URL %(url)s devolveu um tipo de conteúdo inválido no header: '%s(contenttype)s'." + +#: core/validators.py:499 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "Por favor feche a tag %(tag)s na linha %(line)s. (A linha começa por \"%(start)s\".)" + +#: core/validators.py:503 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "Algum texto começado na linha %(line)s não é permitido nesse contexto. (A linha começa por \"%(start)s\".)" + +#: core/validators.py:508 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "\"%(attr)s\" na linha %(line)s é um atributo inválido. (A linha começa por \"%(start)s\".)" + +#: core/validators.py:513 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "\"<%(tag)s>\" na linha %(line)s é um tag inválida. (A linha começa por \"%(start)s\".)" + +#: core/validators.py:517 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "Uma tag na linha %(line)s não tem um o mais atributos obrigatórios. (A linha começa por \"%(start)s\".)" + +#: core/validators.py:522 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (A linha começa por \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "O(A) %(verbose_name)s foi criado(a) com sucesso." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "O(A) %(verbose_name)s foi actualizado(a) com sucesso." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "O(A) %(verbose_name)s foi removido(a)." + +#: db/models/manipulators.py:302 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "O(A) %(object)s com este %(type)s já existe para o(a) %(field)s fornecido." + +#: db/models/fields/__init__.py:40 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s com %(fieldname)s já existe." + +#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 +#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 +#: forms/__init__.py:346 +msgid "This field is required." +msgstr "Este campo é obrigatório." + +#: db/models/fields/__init__.py:340 +msgid "This value must be an integer." +msgstr "Este campo deverá ser inteiro." + +#: db/models/fields/__init__.py:372 +msgid "This value must be either True or False." +msgstr "Este valor deverá ser True ou False." + +#: db/models/fields/__init__.py:388 +msgid "This field cannot be null." +msgstr "Este campo não pode ser nulo." + +#: db/models/fields/__init__.py:571 +msgid "Enter a valid filename." +msgstr "Introduza um nome de ficheiro válido." + +#: db/models/fields/related.py:51 +#, python-format +msgid "Please enter a valid %s." +msgstr "Por favor introduza um %s válido." + +#: db/models/fields/related.py:618 +msgid "Separate multiple IDs with commas." +msgstr "Separe múltiplos IDs através de vírgulas." + +#: db/models/fields/related.py:620 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Mantenha pressionado o \"Control\", or \"Command\" no Mac, para seleccionar mais do que um." + +#: db/models/fields/related.py:664 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Por favor introduza IDs de %(self)s válidos. O valor %(value)r é inválido." +msgstr[1] "Por favor introduza IDs de %(self)s válidos. Os valores %(value)r são inválidos." + +#: forms/__init__.py:381 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Verifique se o seu texto tem menos de %s caracter." +msgstr[1] "Verifique se o seu texto tem menos de %s caracteres." + +#: forms/__init__.py:386 +msgid "Line breaks are not allowed here." +msgstr "Quebras de linha não são permitas aqui." + +#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Seleccione uma opção válida; '%(data)s' não se encontra em %(choices)s." + +#: forms/__init__.py:663 +msgid "The submitted file is empty." +msgstr "O ficheiro submetido encontra-se vazio." + +#: forms/__init__.py:719 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Introduza um número entre -32,768 e 32,767." + +#: forms/__init__.py:729 +msgid "Enter a positive number." +msgstr "Introduza um número positivo." + +#: forms/__init__.py:739 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Introduza um número entre 0 e 32,767." + +#: template/defaultfilters.py:401 +msgid "yes,no,maybe" +msgstr "sim,não,talvez" diff --git a/django/conf/locale/pt/LC_MESSAGES/djangojs.mo b/django/conf/locale/pt/LC_MESSAGES/djangojs.mo Binary files differnew file mode 100644 index 0000000000..669dd9d119 --- /dev/null +++ b/django/conf/locale/pt/LC_MESSAGES/djangojs.mo diff --git a/django/conf/locale/pt/LC_MESSAGES/djangojs.po b/django/conf/locale/pt/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..90f4b9de86 --- /dev/null +++ b/django/conf/locale/pt/LC_MESSAGES/djangojs.po @@ -0,0 +1,108 @@ +# Portuguese translation of Django. +# Copyright (C) 2007 the Lawrence Journal-World +# This file is distributed under the same license as the PACKAGE package. +# Nuno Mariz <nmariz@gmail.com>, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: Django 0.96pre\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-03-15 11:51+0100\n" +"PO-Revision-Date: 2007-03-16 10:01+0000\n" +"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n" +"Language-Team: pt_PT <nmariz@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "Disponível %s" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "Escolher todos" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "Adicionar" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "Remover" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "Escolhido %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "Seleccione a(s) sua(s) escolha(s) e clique " + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "Limpar tudo" + +#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Domingo Segunda Terça Quarta Quinta Sexta Sábado" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "D S T Q Q S S" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "Agora" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "Relógio" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "Escolha a hora" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "Meia-noite" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "6 a.m." + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "Meio-dia" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "Cancelar" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "Hoje" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "Calendário" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "Ontem" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "Amanhã" diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo Binary files differindex 06272d9843..cd91c18cb7 100644 --- a/django/conf/locale/sv/LC_MESSAGES/django.mo +++ b/django/conf/locale/sv/LC_MESSAGES/django.mo diff --git a/django/conf/locale/sv/LC_MESSAGES/django.po b/django/conf/locale/sv/LC_MESSAGES/django.po index 994e5f3d8d..befde10e77 100644 --- a/django/conf/locale/sv/LC_MESSAGES/django.po +++ b/django/conf/locale/sv/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-06 00:17+0100\n" -"PO-Revision-Date: 2007-03-06 01:46+0100\n" +"PO-Revision-Date: 2007-03-06 10:30+0100\n" "Last-Translator: Mikko Hellsing <mikko@sorl.net>\n" -"Language-Team: Django translators <djangoi18n@googlegroups.com>\n" +"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,7 +27,7 @@ msgstr "" #: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 #: newforms/fields.py:461 msgid "This field is required." -msgstr "Det här fältet är obligatoriskt." +msgstr "Detta fältet är obligatoriskt." #: oldforms/__init__.py:387 #, python-format @@ -122,7 +122,7 @@ msgstr "Fyll i ett giltigt filnamn." #: db/models/fields/related.py:53 #, python-format msgid "Please enter a valid %s." -msgstr "Var god fyll i ett giltigt %s." +msgstr "Var god fyll i giltigt %s." #: db/models/fields/related.py:642 msgid "Separate multiple IDs with commas." @@ -317,7 +317,7 @@ msgstr "Fyll enbart i siffror avskilda med kommatecken." #: core/validators.py:99 msgid "Enter valid e-mail addresses separated by commas." -msgstr "Fyll i giltiga e-postadresser avskilda med kommatecken." +msgstr "Fyll i giltiga e-mailadresser avskilda med kommatecken." #: core/validators.py:103 msgid "Please enter a valid IP address." @@ -358,7 +358,7 @@ msgstr "Fyll i en giltig tid i formatet HH:MM" #: core/validators.py:161 newforms/fields.py:269 msgid "Enter a valid e-mail address." -msgstr "Fyll i en giltig e-postadress." +msgstr "Fyll i en giltig e-mailadress." #: core/validators.py:177 msgid "" @@ -652,7 +652,7 @@ msgstr "Detta URL verkar vara en trasig länk." #: contrib/contenttypes/models.py:26 msgid "python model class name" -msgstr "python model class namn" +msgstr "python modell klass namn" #: contrib/contenttypes/models.py:29 msgid "content type" @@ -710,7 +710,7 @@ msgstr "efternamn" #: contrib/auth/models.py:93 msgid "e-mail address" -msgstr "e-postadress" +msgstr "e-mailadress" #: contrib/auth/models.py:94 msgid "password" @@ -728,7 +728,7 @@ msgstr "personalstatus" #: contrib/auth/models.py:95 msgid "Designates whether the user can log into this admin site." -msgstr "Avgör om användaren kan logga in till den här administrationssidan." +msgstr "Avgör om användaren kan logga in på den här admin-siten." #: contrib/auth/models.py:96 msgid "active" @@ -823,8 +823,8 @@ msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." msgstr "" -"V.G. ange ett korrekt användarnamn och lösenord. Notera att båda fält är " -"skiftlägeskänsliga." +"V.G. ange ett korrekt användarnamn och lösenord. Observera att båda fälten gör " +"skillnad på versaler och gemener." #: contrib/auth/forms.py:62 msgid "This account is inactive." @@ -835,7 +835,7 @@ msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" msgstr "" -"Den e-postadressen har inte något konto associerat med sig. Är du säker på " +"Den e-mailadressen har inte något konto associerat med sig. Är du säker på " "att du har registrerat dig?" #: contrib/auth/forms.py:117 @@ -848,7 +848,7 @@ msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen" #: contrib/redirects/models.py:7 msgid "redirect from" -msgstr "vidarebefordra från" +msgstr "omdirigera från" #: contrib/redirects/models.py:8 msgid "" @@ -860,7 +860,7 @@ msgstr "" #: contrib/redirects/models.py:9 msgid "redirect to" -msgstr "vidarebefordra till" +msgstr "omdirigera till" #: contrib/redirects/models.py:10 msgid "" @@ -872,11 +872,11 @@ msgstr "" #: contrib/redirects/models.py:13 msgid "redirect" -msgstr "vidarebefordra" +msgstr "omdirigera" #: contrib/redirects/models.py:14 msgid "redirects" -msgstr "vidarebefordringar" +msgstr "omdirigeringar" #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" @@ -1113,7 +1113,7 @@ msgstr "" #: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" -msgstr "Endast POSTningar är tillåtna" +msgstr "Endast POST tillåtet" #: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 @@ -1131,7 +1131,7 @@ msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" msgstr "" -"Kommentars-formuläret har en ogiltig 'target'-parameter -- objektets ID är " +"Kommentars-formuläret hade en ogiltig 'mål'-parameter -- objektets ID var " "ogiltigt" #: contrib/comments/views/comments.py:257 @@ -1286,11 +1286,11 @@ msgstr "visat namn" #: contrib/sites/models.py:15 msgid "site" -msgstr "sida" +msgstr "site" #: contrib/sites/models.py:16 msgid "sites" -msgstr "sidor" +msgstr "siter" #: contrib/admin/filterspecs.py:40 #, python-format @@ -1386,7 +1386,7 @@ msgstr "Användarnamn kan inte innehålla tecknet '@'." #: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället." +msgstr "Din e-mailadress är inte ditt användarnamn. Försök med '%s' istället." #: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 #, python-format @@ -1594,11 +1594,11 @@ msgstr "Decimaltal" #: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" -msgstr "Boolesk (antingen Sann, Falsk eller Inget)" +msgstr "Boolesk (antingen True, False eller None)" #: contrib/admin/views/doc.py:307 msgid "Relation to parent model" -msgstr "Relation till förälder modell" +msgstr "Relation till förälder-modell" #: contrib/admin/views/doc.py:308 msgid "Phone number" @@ -1614,7 +1614,7 @@ msgstr "Tid" #: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" -msgstr "Stat i USA (två stora bokstäver)" +msgstr "Stat i USA (två versaler)" #: contrib/admin/views/doc.py:317 msgid "XML text" @@ -1720,7 +1720,7 @@ msgid "" "admin site." msgstr "" "Det här objektet har ingen ändringshistorik. Det lades antagligen inte till " -"i den här admin-sidan" +"i den här admin-siten" #: contrib/admin/templates/admin/change_list.html:12 #, python-format @@ -1749,7 +1749,7 @@ 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 "" -"Ett fel har uppstått. Administratören har meddelats via e-post och " +"Ett fel har uppstått. Administratören har meddelats via e-mail och " "felet bör åtgärdas snart. Tack för ditt tålamod." #: contrib/admin/templates/admin/invalid_setup.html:8 @@ -1783,7 +1783,7 @@ msgstr "Visa alla" #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" -msgstr "Django sidadministration" +msgstr "Django site-administration" #: contrib/admin/templates/admin/base_site.html:7 msgid "Django administration" @@ -1827,11 +1827,11 @@ msgstr "Du har inte rättigheter att ändra något." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" -msgstr "Senaste händelserna" +msgstr "Senaste Händelserna" #: contrib/admin/templates/admin/index.html:53 msgid "My Actions" -msgstr "Mina händelser" +msgstr "Mina Händelser" #: contrib/admin/templates/admin/index.html:57 msgid "None available" @@ -1839,7 +1839,7 @@ msgstr "Inga tillgängliga" #: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" -msgstr "Visa på hemsidan" +msgstr "Visa på siten" #: contrib/admin/templates/admin/change_form.html:32 #: contrib/admin/templates/admin/auth/user/change_password.html:24 @@ -1918,7 +1918,7 @@ msgstr "Lösenord" #: contrib/admin/templates/admin/auth/user/change_password.html:39 #: contrib/admin/templates/admin/auth/user/add_form.html:23 msgid "Password (again)" -msgstr "lösenord (igen)" +msgstr "Lösenord (igen)" #: contrib/admin/templates/admin/auth/user/change_password.html:40 #: contrib/admin/templates/admin/auth/user/add_form.html:24 @@ -1930,8 +1930,8 @@ msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." msgstr "" -"Ange först ett användarnamn och ett lösenord sedan kommer du att kunna " -"ändra fler användaralternativ." +"Ange först ett användarnamn och ett lösenord. Sedan kommer du att kunna ändra " +"fler användaralternativ." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -1965,7 +1965,7 @@ msgid "" "Forgotten your password? Enter your e-mail address below, and we'll reset " "your password and e-mail the new one to you." msgstr "" -"Har du glömt ditt lösenord? Fyll i din e-postadress nedan, så nollställer vi " +"Har du glömt ditt lösenord? Fyll i din e-mailadress nedan, så nollställer vi " "ditt lösenord och mailar det nya till dig." #: contrib/admin/templates/registration/password_reset_form.html:16 @@ -1978,7 +1978,7 @@ msgstr "Nollställ mitt lösenord" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Tack för att du spenderade kvalitetstid med websidan idag." +msgstr "Tack för att du spenderade kvalitetstid med web-siten idag." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" @@ -1994,7 +1994,7 @@ msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." msgstr "" -"Vi har skickat ett nytt lösenord till e-postadressen du fyllde i. Det bör " +"Vi har skickat ett nytt lösenord till e-mailadressen du fyllde i. Det bör " "anlända snarast." #: contrib/admin/templates/registration/password_change_form.html:12 @@ -2047,7 +2047,7 @@ msgstr "Ditt användarnamn, om du har glömt:" #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" -msgstr "Tack för att du använder vår sida!" +msgstr "Tack för att du använder vår site!" #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format @@ -2076,7 +2076,7 @@ msgstr "" "<p class=\"help\">För att installera smarta bokmärken, dra länken till din\n" "verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\n" "till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\n" -"på hemsidan. Observera att några av dessa smarta bokmärken kräver att du besöker\n" +"på siten. Observera att några av dessa smarta bokmärken kräver att du besöker\n" "sidan från en dator som är \"intern\" (tala med din systemadministratör\n" "om du inte är säker på om din dator är \"intern\").</p>\n" diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo Binary files differindex 90e643a3c8..5daac63424 100644 --- a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo +++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.po b/django/conf/locale/sv/LC_MESSAGES/djangojs.po index f856d7fce5..5abc8780d5 100644 --- a/django/conf/locale/sv/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.po @@ -10,9 +10,9 @@ msgstr "" "Project-Id-Version: djangojs\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-03-06 02:29+0100\n" -"PO-Revision-Date: 2007-03-06 02:30+0100\n" +"PO-Revision-Date: 2007-03-06 10:30+0100\n" "Last-Translator: Mikko Hellsing <mikko@sorl.net>\n" -"Language-Team: Django translators <djangoi18n@googlegroups.com>\n" +"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,7 +27,7 @@ msgstr "Tillgänglig %s" #: contrib/admin/media/js/SelectFilter2.js:41 msgid "Choose all" -msgstr "Visa alla" +msgstr "Välj alla" #: contrib/admin/media/js/SelectFilter2.js:46 msgid "Add" @@ -35,20 +35,20 @@ msgstr "Lägg till" #: contrib/admin/media/js/SelectFilter2.js:48 msgid "Remove" -msgstr "Tag bort" +msgstr "Ta bort" #: contrib/admin/media/js/SelectFilter2.js:53 #, perl-format msgid "Chosen %s" -msgstr "Valde %s" +msgstr "Vald %s" #: contrib/admin/media/js/SelectFilter2.js:54 msgid "Select your choice(s) and click " -msgstr "Välj ditt/dina val och klicka " +msgstr "Gör dina val och klicka på " #: contrib/admin/media/js/SelectFilter2.js:59 msgid "Clear all" -msgstr "Avmarkera alla" +msgstr "Ta bort alla" #: contrib/admin/media/js/dateparse.js:32 #: contrib/admin/media/js/calendar.js:24 diff --git a/django/conf/locale/ta/LC_MESSAGES/django.mo b/django/conf/locale/ta/LC_MESSAGES/django.mo Binary files differindex c85327d06b..c1d3cf26f5 100644 --- a/django/conf/locale/ta/LC_MESSAGES/django.mo +++ b/django/conf/locale/ta/LC_MESSAGES/django.mo diff --git a/django/conf/locale/ta/LC_MESSAGES/django.po b/django/conf/locale/ta/LC_MESSAGES/django.po index 7637bb9cdb..e3c539a8a1 100644 --- a/django/conf/locale/ta/LC_MESSAGES/django.po +++ b/django/conf/locale/ta/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ -# translation of django.po to -# translation of django_aa.po to -# translation of django_aa.po to tamil -# Parthan <parthan@au-kbc.org>, 2006. -# R Hariram Aatreya <rha@localhost.localdomain>, 2006. +# translation of django-new.po to tamil +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# PONNUSAMY.A <ponnusamy.simpleman@gmail.com>, 2007. +# msgid "" msgstr "" -"Project-Id-Version: django\n" +"Project-Id-Version: django-new\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:14+0200\n" -"PO-Revision-Date: 2006-07-18 16:47+0530\n" -"Last-Translator: R Hariram Aatreya <rha@localhost.localdomain>\n" -"Language-Team: <en@li.org>\n" +"POT-Creation-Date: 2006-09-25 15:43+0200\n" +"PO-Revision-Date: 2007-03-15 16:48+0530\n" +"Last-Translator: PONNUSAMY <ponnusamy.simpleman@gmail.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9\n" +"Language-Team: tamil <tamilinix@yahoogroups.com>\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n>1;" #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" @@ -67,15 +68,15 @@ msgstr "அங்கீகரிக்கப்பட்ட தரவரிச #: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" -msgstr "தேதிநேரம் சமர்ப்பிக்கப்பட்டுள்ளது" +msgstr "தேதி/நேரம் சமர்ப்பிக்கப்பட்டுள்ளது" #: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" msgstr "பொதுவானது" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" -msgstr "ip விலாசம்" +msgstr "IP விலாசம்" #: contrib/comments/models.py:86 msgid "is removed" @@ -85,7 +86,7 @@ msgstr "நீக்கபட்டது" msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." -msgstr "குறிப்பு செரியாக இல்லையென்றால் இந்த் பெட்டியில் குறியிடவும். இதற்கு பதிலாக \"இந்த குறிப்பு நீக்கபட்டது\" காண்பிக்கபடும்." +msgstr "குறிப்பு சரியாக இல்லையென்றால் இந்த பெட்டியில் குறியிடவும். இதற்கு பதிலாக \"இந்த குறிப்பு நீக்கபட்டது\" காண்பிக்கபடும்." #: contrib/comments/models.py:91 msgid "comments" @@ -128,15 +129,15 @@ msgstr "சுதந்தரமான குறிப்பு" #: contrib/comments/models.py:177 msgid "free comments" -msgstr "சுதந்தரமான குறிப்பு" +msgstr "சுதந்தரமான குறிப்புகள்" #: contrib/comments/models.py:233 msgid "score" -msgstr "மதிப்பீடு" +msgstr "மதிப்பீடு " #: contrib/comments/models.py:234 msgid "score date" -msgstr "மதிப்பீடு தேதி" +msgstr "மதிப்பீட்டு தேதி" #: contrib/comments/models.py:237 msgid "karma score" @@ -189,7 +190,7 @@ msgstr "மட்டொறுத்தால் நீக்கப்பட் #: contrib/comments/models.py:281 msgid "moderator deletions" -msgstr "மட்டொறுத்தால் நீக்கப்பட்டது" +msgstr "மட்டொறுத்தர்களால் நீக்கப்பட்டது" #: contrib/comments/models.py:285 #, python-format @@ -198,7 +199,7 @@ msgstr "மட்டொறுத்தால் நீக்கப்பட் #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" -msgstr "அடயாள்ம் இல்லாத பயனாளறால் வாக்களிக்க முடியாது" +msgstr "அடையாளம் இல்லாத பயனாளறால் வாக்களிக்க முடியாது" #: contrib/comments/views/karma.py:23 msgid "Invalid comment ID" @@ -208,85 +209,82 @@ msgstr "செல்லாத குறிப்பு ID" msgid "No voting for yourself" msgstr "உங்களை நீங்களே தேர்வு செய்து கொள்ள முடியாது" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/views/comments.py:27 msgid "This rating is required because you've entered at least one other rating." -msgstr "மற்றொரு தரவரிசை அளிக்க்பட்டதால் இந்த தரவரிசை தேவைப்படுகிறது." +msgstr "இந்த தரவரிசை தேவைப்படுகிறது ஏனெனில் மற்றொரு தரவரிசை அளிக்கப்பட்டு விட்டதால்" -#: contrib/comments/views/comments.py:112 +#: contrib/comments/views/comments.py:111 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " "comment:\n" "\n" "%(text)s" +msgid_plural "" "This comment was posted by a user who has posted fewer than %(count)s " "comments:\n" "\n" "%(text)s" -msgstr "" -"%(count)s குறைவாக அளித்த பயனாளரால் இந்த குரிப்பை அள்த்தபடது:\n" +msgstr[0] "" +"இந்த குறிப்பானது குறைவாக அளித்த பயனாளரால் %(count)s " +"அளிக்கப்பட்டது:\n" "\n" "%(text)s" -"%(count)s குறைவாக அளித்த பயனாளரால் இந்த குரிப்பை அள்த்தபடது:\n" +msgstr[1] "" +"இந்த குறிப்பானது குறைவாக அளித்த பயனாளர்களால் %(count)s" +" அளிக்கப்பட்டது:\n" "\n" "%(text)s" -#: contrib/comments/views/comments.py:117 + +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" "\n" "%(text)s" msgstr "" -"முழுமையான விவரஙகளை அளிக்காத பயனாளறால் கொடுக்கப்பட்டது:\n" +"முழுமையான விவரங்களை அளிக்காத பயனாளரால் கொடுக்கப்பட்டது:\n" +"\n" "%(text)s" -#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" msgstr "POSTகளுக்கு மட்டும் அனுமதி உண்டு" -#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "ஒன்று அல்லது ஒன்றிற்கு மேற்ப்பட்ட புலங்கள் சமற்பிக்கப்படவில்லை" -#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "எவறோ குரிப்புறையை செதப்படுத்திவிட்டாற்கள் (பாதுகாப்பு மீறல்)" +msgstr "எவறோ குறிப்புறையைச் சேதப்படுத்திவிட்டர்கள் (பாதுகாப்பு மீறல்)" -#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" -msgstr "குறிப்புறை படிவத்தில் முறையான இலக்கு அளவுருக்க இல்லை -- object ID முறையானதாக இல்லை" +msgstr "குறிப்புறை படிவத்தில் முறையான இலக்கு அளவுருக்கவில்லை -- object ID முறையானதாக இல்லை" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "குறிப்பு படிவம் முன்னோட்டம் அல்லது பிற்பட்டதை வழங்கவில்லை." +msgstr "குறிப்பு படிவம் முன்னோட்டம் அல்லது பிற்பட்டதை வழங்குவது இல்லை" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 msgid "Username:" -msgstr "பயணர் பெயர்:" +msgstr "பயனர் பெயர்:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "கடவுச்சொல்:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "கடவுச்சொல்லை மறந்துவிட்டீரா?" - -#: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/registration/password_change_done.html:3 @@ -304,6 +302,15 @@ msgstr "கடவுச்சொல்லை மறந்துவிட்ட msgid "Log out" msgstr "வெளியேறு" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "கடவுச்சொல்:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "கடவுச்சொல்லை மறந்துவிட்டீரா?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "விகிதம்" @@ -311,7 +318,7 @@ msgstr "விகிதம்" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Required" -msgstr "தேவைப்படுகிறது " +msgstr "தேவைப்படுகிறது" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 @@ -320,88 +327,21 @@ msgstr "விருப்பத்தேர்வு" #: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" -msgstr "புகைப்படத்தை அணுப்பு" +msgstr "புகைப்படத்தை அனுப்பு" -#: contrib/comments/templates/comments/form.html:27 +#: contrib/comments/templates/comments/form.html:28 #: contrib/comments/templates/comments/freeform.html:5 msgid "Comment:" msgstr "விவரம்:" -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# translation of django_ab.po to -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# R Hariram Aatreya <rha@localhost.localdomain>, 2006. -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 msgid "Preview comment" msgstr "குறிப்பை முன்னேற்றமிடு" #: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" -msgstr "உங்கள்பெயர்:" +msgstr "உங்கள் பெயர்:" #: contrib/admin/filterspecs.py:40 #, python-format @@ -413,9 +353,9 @@ msgstr "" "<ul>\n" #: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 msgid "All" -msgstr "அணைத்தும்" +msgstr "அனைத்தும்" #: contrib/admin/filterspecs.py:109 msgid "Any date" @@ -423,7 +363,7 @@ msgstr "எந்த தேதியும்" #: contrib/admin/filterspecs.py:110 msgid "Today" -msgstr "இண்று" +msgstr "இன்று" #: contrib/admin/filterspecs.py:113 msgid "Past 7 days" @@ -475,230 +415,295 @@ msgstr "புகுபதிவு உள்ளீடு" #: contrib/admin/models.py:26 msgid "log entries" -msgstr "புகுபதிவு உள்ளீடு" +msgstr "புகுபதிவு உள்ளீடுகள்" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:230 msgid "All dates" msgstr "அனைத்து தேதியும்" -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." -msgstr "தயவுசெய்து சரியான பயனர்பபெயர் மற்றும் கடவுச்சொல்லை உள்ள்ளிடவும். இரண்டும் எழுத்துவகையை சார்ந்தது." +msgstr "தயவுசெய்து சரியான பயனர்ப்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடவும். இரண்டும் எழுத்துவகையைச் சார்ந்தது." -#: contrib/admin/views/decorators.py:23 +#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" msgstr "உள்ளே போ" -#: contrib/admin/views/decorators.py:61 +#: contrib/admin/views/decorators.py:62 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." -msgstr "தயவுசெய்து மறுபடியும் புகுபதிவு செய். ஏனென்றாள் காலம் முடிவடைந்தவு. கவலை படவேண்டாம்: உங்களுடைய அணுப்புதல் சேமிக்கப்பட்டுள்ளது. " +msgstr "தயவுசெய்து மறுபடியும் புகுபதிவு செய்க. ஏனென்றால் காலம் முடிவடைந்தது. கவலை படவேண்டாம்: உங்களுடைய அனுப்புதல் சேமிக்கப்பட்டுள்ளது." -#: contrib/admin/views/decorators.py:68 +#: contrib/admin/views/decorators.py:69 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." -msgstr "உங்களுடைய உலாவி தற்கால நிரல்களை அணுமதிக்காதவாறு உள்ளமைக்கப் பட்டவாறு தெரிகிறது. தயவுசெய்து தற்காலிக நிரலை செயல்பட செய்து, பக்கத்தை மறுபடி உள்ள்வாங்கவும்." +msgstr "உங்களுடைய உலாவி தற்கால நிரல்களை அமதிக்காதவாறு உள்ளமைக்கப் பட்டவாறு தெரிகிறது. தயவுசெய்து தற்காலிக நிரலை செயல்பட செய்து, பக்கத்தை மறுபடி உள் வாங்கவும். " -#: contrib/admin/views/decorators.py:82 +#: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "பயனர் பெயர் '@' குறியீட்டை கொண்டிருக்க முடியாது." -#: contrib/admin/views/decorators.py:84 +#: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "உன்கள் மிண்அஞ்சள் முகவரிஉங்கள் பயனர் பெயர் இல்லை. '%s' யை முயற்ச்சி செய்யவும். " +msgstr "உங்கள் மின் அஞ்சல் முகவரி உங்கள் பயனர் பெயராக இல்லை. '%s'யை முயற்சி செய்யவும்." -#: contrib/admin/views/main.py:226 +#: contrib/admin/views/main.py:223 msgid "Site administration" -msgstr "இணைய மேளான்மை" +msgstr "இணைய மேலான்மை" -#: contrib/admin/views/main.py:260 +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக சேர்க்கப்பட்டது." +msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாகச் சேர்க்கப்பட்டது." -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:22 msgid "You may edit it again below." msgstr "நீங்கள் மறுபடியும் தொகுக்க முடியும். " -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." msgstr "நீங்கள் மற்ற %s யை கீழே சேர்க்க முடியும்." -#: contrib/admin/views/main.py:290 +#: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" -msgstr "%s யை சேர்" +msgstr "%s யை சேர்க்க" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:335 #, python-format msgid "Added %s." msgstr "%s சேர்க்கப்பட்டுள்ளது." -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 msgid "and" msgstr "மற்றும்" -#: contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." -msgstr "%s மாற்றப்பட்டுள்ளது." +msgstr "%s மாற்றபட்டுள்ளது." -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:339 #, python-format msgid "Deleted %s." msgstr "%s அழிக்கப்பட்டது." -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:342 msgid "No fields changed." msgstr "எந்த புலமும் மாறவில்லை." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr " %(name)s \"%(obj)s\" வெற்றிகரமாக மாற்றப்பட்டது." +msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக மாற்றப்பட்டது." -#: contrib/admin/views/main.py:354 +#: contrib/admin/views/main.py:353 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக சேர்க்கப்பட்டுள்ளது. நீங்கள் கீழே தொகுக்க முடியும்." -#: contrib/admin/views/main.py:392 +#: contrib/admin/views/main.py:391 #, python-format msgid "Change %s" msgstr "%s யை மாற்று" -#: contrib/admin/views/main.py:470 +#: contrib/admin/views/main.py:473 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "%(name)s ல் உள்ள %(fieldname)s: %(obj)s" -#: contrib/admin/views/main.py:475 +#: contrib/admin/views/main.py:478 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "%(name)s ல் உள்ள %(fieldname)s:" -#: contrib/admin/views/main.py:508 +#: contrib/admin/views/main.py:511 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக அழிக்கப்பட்டுள்ளது." -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:514 msgid "Are you sure?" -msgstr "உறுதியாக சொகிறீர்களா?" +msgstr "உறுதியாக சொல்கிறீர்களா?" -#: contrib/admin/views/main.py:533 +#: contrib/admin/views/main.py:536 #, python-format msgid "Change history: %s" msgstr "வரலாற்றை மாற்று: %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:570 #, python-format msgid "Select %s" msgstr "%s யை தேர்ந்தெடு" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:570 #, python-format msgid "Select %s to change" msgstr "%s யை மாற்ற தேர்ந்தெடு" -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 +#: contrib/admin/views/main.py:758 +msgid "Database error" +msgstr "தகவல்சேமிப்பு பிழை" + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "ஒட்டு:" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "வடிகட்டி:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "நோற்றமிடு:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "பக்கம் %r இல்லை" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %r not found in app %r" +msgstr "மாதரி %r பக்கம் %rல் இல்லை " + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%s.%s` object" +msgstr "சம்மந்தப்பட்ட '%s.%s' பொருள்" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "மாதிரி:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%s.%s` objects" +msgstr "மாதரி %s பக்கம் %s ல் இல்லை" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "அனைத்து %s " + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "எண்ணிக்கை %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "புலத்தின் %s பொருள்" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 msgid "Integer" msgstr "முழு எண்" -#: contrib/admin/views/doc.py:278 +#: contrib/admin/views/doc.py:292 msgid "Boolean (Either True or False)" msgstr "பூலியன் (சரி அல்லது தவறு)" -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 #, python-format msgid "String (up to %(maxlength)s)" msgstr "உரை (%(maxlength)s வரைக்கும்)" -#: contrib/admin/views/doc.py:280 +#: contrib/admin/views/doc.py:294 msgid "Comma-separated integers" msgstr "கமாவாள் பிரிக்கப்பட்ட முழு எண்" -#: contrib/admin/views/doc.py:281 +#: contrib/admin/views/doc.py:295 msgid "Date (without time)" msgstr "தேதி (நேரமில்லாமல்)" -#: contrib/admin/views/doc.py:282 +#: contrib/admin/views/doc.py:296 msgid "Date (with time)" msgstr "தேதி (நேரமுடன்)" -#: contrib/admin/views/doc.py:283 +#: contrib/admin/views/doc.py:297 msgid "E-mail address" msgstr "மின் அஞ்சல்" -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 msgid "File path" -msgstr "கோப்ப்பு பாதை" +msgstr "கோப்புப் பாதை" -#: contrib/admin/views/doc.py:285 +#: contrib/admin/views/doc.py:300 msgid "Decimal number" -msgstr "புள்ளி எண்கள்" +msgstr "தசம எண்கள்" -#: contrib/admin/views/doc.py:291 +#: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" msgstr "இலக்கு முறை (சரி, தவறு அல்லது ஒன்றும் இல்லை)" -#: contrib/admin/views/doc.py:292 +#: contrib/admin/views/doc.py:307 msgid "Relation to parent model" msgstr "ஆதி மாதிரிக்கு தொடர்புடையது" -#: contrib/admin/views/doc.py:293 +#: contrib/admin/views/doc.py:308 msgid "Phone number" msgstr "தொலைபேசி எண்" -#: contrib/admin/views/doc.py:298 +#: contrib/admin/views/doc.py:313 msgid "Text" msgstr "உரை" -#: contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:314 msgid "Time" msgstr "நேரம்" -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" -msgstr "U.S. மாநிலம் (இரண்டு மேல் எழுத்துவகை எழுத்து)" +msgstr "U.S. மாநிலம் (இரண்டு மேல் எழுத்துவகை எழுத்து" -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:317 msgid "XML text" msgstr "XML உரை" +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s -ல் urlpattern தோன்றுவதில்லை" + +#: contrib/admin/views/auth.py:28 +msgid "Add user" +msgstr "புதிய பயனர்" + #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" -msgstr "ஆவணமாக்கம்" +msgstr "ஆவனமாக்கம்" -# translation of django_ac.po to -# translation of django_ac.po to tamil -# Ashwin <ashwin@au-kbc.org>, 2006. -# R Hariram Aatreya <rha@localhost.localdomain>, 2006. #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/registration/password_change_done.html:3 @@ -714,14 +719,15 @@ msgstr "ஆவணமாக்கம்" #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 msgid "Change password" -msgstr "கடவுச்சொல்லை மாற்று " +msgstr "கடவுச்சொல்லை மாற்று" #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/base.html:30 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/logged_out.html:4 @@ -757,7 +763,7 @@ msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"இந்த பொருள் மாற்ற வரலாற்றில் இல்லை" +"இந்த பொருள் மாற்று வரலாற்றில் இல்லை" "ஒரு வேளை நிர்வாகத்தளத்தின் மூலம் சேர்க்கப்படாமலிருக்கலாம்" #: contrib/admin/templates/admin/base_site.html:4 @@ -786,36 +792,39 @@ msgid "" "mail and should be fixed shortly. Thanks for your patience." msgstr "" "தவறு ஏற்பட்டுள்ளது" -"வலைத்தள நிர்வாகிக்கு மின்னஞ்சல் அனுப்பப்பட்டுள்ளது. விரைவில் சரி செய்யப்படும். உங்க்ளது பொறுமைக்கு நன்றி" +"வலைத்தள நிர்வாகிக்கு மின்னஞ்சல் அனுப்பப்பட்டுள்ளது. விரைவில் சரி செய்யப்படும். உங்களது பொறுமைக்கு நன்றி" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 msgid "Page not found" -msgstr "பக்கத்தை காணவில்லை" +msgstr "பக்கத்தைக் காணவில்லை" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "" -"நீங்கள் விரும்பிய பக்கத்தை காண இயலவில்லை. " -"அதற்காக வருந்துகிறோம்." +msgstr "நீங்கள் விரும்பிய பக்கத்தை காண இயலவில்லை,அதற்காக நாங்கள் வருந்துகிறோம்." #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." msgstr "செயலியில் கிடைக்கக் கூடிய %(name)s மாதிரிகள்" +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" -msgstr "சேர்" +msgstr "சேர்க்க" #: contrib/admin/templates/admin/index.html:34 msgid "Change" -msgstr "மாற்று" +msgstr "மாற்றுக" #: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." -msgstr "உங்களுக்கு மாற்றுவதற்கு உரிமையில்லை" +msgstr "உங்களுக்கு மாற்றுவதற்குரிய உரிமையில்லை" #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" @@ -832,58 +841,80 @@ msgstr "எதுவும் கிடைக்கவில்லை" #: contrib/admin/templates/admin/change_list.html:11 #, python-format msgid "Add %(name)s" -msgstr "%(name)s சேர்" +msgstr "%(name)s சேர்க்க" #: contrib/admin/templates/admin/login.html:22 msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" msgstr "நீங்கள் தங்களது கடவுச்சொல்லை <a href=\"/password_reset/\"> மறந்து விட்டீர்களா?" -#: contrib/admin/templates/admin/base.html:23 +#: contrib/admin/templates/admin/base.html:25 msgid "Welcome," msgstr "நல்வரவு," #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" -msgstr "நீக்கு" +msgstr "நீக்குக" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" -msgstr "இந்த '%(object)s' இல் %(object_name)s நீக்குவது தொடர்புடைய மற்றவற்றையும் நீக்கும். ஆனால் அதற்கு உங்களுக்கு உரிமையில்லை" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "நீக்கும் '%(escaped_object)s' ஆனது %(object_name)s தொடர்புடைய மற்றவற்றையும் நீக்கும். ஆனால் அதை நீக்குவதற்குரிய உரிமை உங்களுக்கு இல்லை" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" msgstr "" -"நீங்கள் இந்த \"%(object)s\" %(object_name)s நீக்குவதில் நிச்சயமா?" +"நீங்கள் இந்த \"%(escaped_object)s\" %(object_name)s நீக்குவதில் நிச்சயமா?" "தொடர்புடைய மற்றவையும் நீக்கப்படும். " #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" -msgstr "ஆம் எனக்கு உறுதி " +msgstr "ஆம், எனக்கு உறுதி" #: contrib/admin/templates/admin/filter.html:2 #, python-format -msgid " By %(title)s " -msgstr "%(title)s ஆல் " +msgid " By %(filter_title)s " +msgstr "%(filter_title)s ஆல்" #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" msgstr "செல்" +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 விடை" +msgstr[1] "%(counter)s விடைகள்" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s மொத்தம்" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "எல்லாவற்றையும் காட்டு" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "வடிகட்டி" + #: contrib/admin/templates/admin/change_form.html:21 msgid "View on site" -msgstr "தள்த்தில் பார் " +msgstr "தளத்தில் பார்" #: contrib/admin/templates/admin/change_form.html:30 msgid "Please correct the error below." -msgstr "கீழே உள்ள தவறுகளைத்திருத்து" +msgid_plural "Please correct the errors below." +msgstr[0] "கீழே உள்ள தவறுயைத் திருத்துக" +msgstr[1] "கீழே உள்ள தவறுகளைத் திருத்துக" #: contrib/admin/templates/admin/change_form.html:48 msgid "Ordering" @@ -891,7 +922,7 @@ msgstr "வரிசைப்படுத்துதல்" #: contrib/admin/templates/admin/change_form.html:51 msgid "Order:" -msgstr "வரிசைப்படுத்து" +msgstr "வரிசைப்படுத்து:" #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" @@ -907,23 +938,52 @@ msgstr "சேமித்து மாற்றத்தை தொடருக" #: contrib/admin/templates/admin/submit_line.html:7 msgid "Save" -msgstr "சேமி" +msgstr "சேமிக்க" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "உங்களுடைய தகவல்சேமிப்பகத்தை நிறுவுவதில் சில தவறுகள் உள்ளது. அதற்கு இணையான தகவல்சேமிப்பு அட்டவணையை" "தயாரிக்கவும். மேலும் பயனர் படிக்கும் படியான தகவல்சேமிப்பகத்தை உருவாக்கவும்." + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "முதலில்,பயனர்ப்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடவும்.அதன் பிறகு தான் நீங்கள் உங்கள் பெயரின் விவரங்களை திருத்த முடியும்" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "பயனர்ப்பெயர்" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "கடவுச்சொல்" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "கடவுச்சொல்(மறுபடியும்)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "மேலே அதே கடவுச்சொல்லை உள்ளிடவும், சரிபார்ப்பதற்காக ." #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 #: contrib/admin/templates/registration/password_change_form.html:10 msgid "Password change" -msgstr "கடவுச்சொல் மாற்றம்" +msgstr "கடவுச்சொல் மாற்று" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" -msgstr "கடவுச்சொல் மாற்றம் வெற்றி " +msgstr "வெற்றிகரமாக கடவுச்சொல் மாற்றபட்டது" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." -msgstr "உங்கள் கடவுச்சொல் மாற்றப் பட்டுள்ளது" +msgstr "உங்களுடைய கடவுச்சொல் மாற்றபட்டது" #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/password_reset_form.html:6 @@ -937,10 +997,8 @@ 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:" @@ -952,9 +1010,7 @@ msgstr "எனது கடவுச்சொல்லை மாற்றிய #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "" -"வலைத்தளத்தில் உங்களது பொன்னான நேரத்தை " -"செலவழித்தமைக்கு மிகுந்த நன்றி" +msgstr "வலைத்தளத்தில் உங்களது பொன்னான நேரத்தை செலவழித்தமைக்கு மிகுந்த நன்றி" #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" @@ -970,9 +1026,7 @@ 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 @@ -991,7 +1045,7 @@ msgstr "புதிய கடவுச்சொல்:" #: contrib/admin/templates/registration/password_change_form.html:21 msgid "Confirm password:" -msgstr "கடவுச்சொல் மாற்றத்தை உறுதிப்படுத்து:" +msgstr "கடவுச்சொலின் மாற்றத்தை உறுதிப்படுத்து:" #: contrib/admin/templates/registration/password_change_form.html:23 msgid "Change my password" @@ -1009,7 +1063,7 @@ msgstr "%(site_name)s -இல் உள்ள உங்களது பயனா #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" -msgstr "உங்களது புதிய கடவுச்சொல் : %(new_password)s " +msgstr "உங்களது புதிய கடவுச்சொல் : %(new_password)s" #: contrib/admin/templates/registration/password_reset_email.html:7 msgid "Feel free to change this password by going to this page:" @@ -1017,7 +1071,7 @@ msgstr "கடவுச்சொல்லை மாற்றியமைக் #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" -msgstr "உங்களது பயனாளர் பெயர், (நீங்கள் மறந்திருந்தால் ): " +msgstr "உங்களது பயனாளர் பெயர், நீங்கள் மறந்திருந்தால்:" #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" @@ -1026,78 +1080,15 @@ msgstr "எங்களது வலைத்தளத்தை பயன் ப #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" -msgstr "இந்த %(site_name)s -இன் குழு " +msgstr "இந்த %(site_name)s -இன் குழு" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" msgstr "புத்தகக்குறிகள்" -# translation of django_ad.po to -# translation of django_ad.po to -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# aukbc-guest, 2006. -# R Hariram Aatreya <rha@localhost.localdomain>, 2006. #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" -msgstr "ஆவணமாக்கக் குறியீடு" +msgstr "ஆவணமாக்கக் குறியீடுகள்" #: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" @@ -1111,9 +1102,9 @@ msgid "" msgstr "" "\n" "<p class=\"help\"> புத்தக குறியீடுகளை நிறுவ இந்த இணைப்பினை புத்தகக்குறியீட்டுப் \n" -"பட்டைக்கு இழுக்கவும். அல்லது வலது கிிளிக செய்து புத்தகக்குறியீடுகளில் சேர்க்கவும். \n" +"பட்டைக்கு இழுக்கவும். அல்லது வலது கிளிக் செய்து புத்தகக்குறியீடுகளில் சேர்க்கவும். \n" " இனி தளத்தில் எந்தப் பக்கத்தில் இருந்தும் புத்தகக்குறியீட்டினை தேர்வுசெய்ய முடியும். \n" -" நீங்கள் இந்த தளத்தை \"internal\" என குுறிக்கப்பட்ட கணிணியில் இருந்து மட்டுமே \n" +" நீங்கள் இந்த தளத்தை \"internal\" என குறிக்கப்பட்ட கணிணியில் இருந்து மட்டுமே \n" " ஒருசில புத்தகக்குறிகளை செயல்படுத்தமுடியும்\n " " உங்களுக்கு, கணிணி \"internal\" என உறுதி செய்ய கணிணிமேளாலரை அணுகவும்.</p>\n" @@ -1192,17 +1183,17 @@ msgid "" "'http://'." msgstr "இது முழுமையான பாதையாக (மேலே உள்ளது போல) அல்லது \"http\"//\" என தொடங்கும் வலை முகவரியாக இருக்கலாம்." -#: contrib/redirects/models.py:12 +#: contrib/redirects/models.py:13 msgid "redirect" msgstr "திரும்ப அனுப்பு" -#: contrib/redirects/models.py:13 +#: contrib/redirects/models.py:14 msgid "redirects" msgstr "திரும்ப அனுப்புகிறது. " #: contrib/flatpages/models.py:8 msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "உதாரணம்: '/about/contact/'. முன்னும் பின்னும் '/' உள்ளதை உறுதி செய்க. " +msgstr "உதாரணம்: '/about/contact/'. முன்னும் பின்னும் '/' உள்ளதை உறுதி செய்க." #: contrib/flatpages/models.py:9 msgid "title" @@ -1222,8 +1213,8 @@ msgstr "வார்ப்புரு பெயர்" #: contrib/flatpages/models.py:13 msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." msgstr "உதாரணம் 'flatpages/contact_page'. இது இல்லையெனில் 'flatpages/default' என்பதே பயன்படுத்தப்படும்.ப்படும்." #: contrib/flatpages/models.py:14 @@ -1242,151 +1233,179 @@ msgstr "எளிய பக்கம்" msgid "flat pages" msgstr "எளிய பக்கங்கள்" -#: contrib/auth/models.py:13 contrib/auth/models.py:26 +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "வெளியே வந்துவீட்டீர்" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 msgid "name" msgstr "பெயர்" -#: contrib/auth/models.py:15 +#: contrib/auth/models.py:40 msgid "codename" msgstr "குறிமுறை பெயர்" -#: contrib/auth/models.py:17 +#: contrib/auth/models.py:42 msgid "permission" msgstr "அனுமதி" -#: contrib/auth/models.py:18 contrib/auth/models.py:27 +#: contrib/auth/models.py:43 contrib/auth/models.py:58 msgid "permissions" msgstr "அனுமதிகள்" -#: contrib/auth/models.py:29 +#: contrib/auth/models.py:60 msgid "group" msgstr "குழு" -#: contrib/auth/models.py:30 contrib/auth/models.py:65 +#: contrib/auth/models.py:61 contrib/auth/models.py:100 msgid "groups" msgstr "குழுக்கள்" -#: contrib/auth/models.py:55 +#: contrib/auth/models.py:90 msgid "username" msgstr "பயனர் பெயர்" -#: contrib/auth/models.py:56 +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "தேவை. 30 எழுத்துகள் அல்லது கொஞ்சம். அகர வரிசை எழுத்துக்கள் மட்டுமே ( எழுத்துகள்,எண்கள்,அன்டர்ஸ்கோர்). " + +#: contrib/auth/models.py:91 msgid "first name" msgstr "முதல் பெயர்" -#: contrib/auth/models.py:57 +#: contrib/auth/models.py:92 msgid "last name" msgstr "கடைசி பெயர்" -#: contrib/auth/models.py:58 +#: contrib/auth/models.py:93 msgid "e-mail address" msgstr "மின்னஞ்சல் முகவரி" -#: contrib/auth/models.py:59 +#: contrib/auth/models.py:94 msgid "password" msgstr "கடவுச்சொல்" -#: contrib/auth/models.py:59 +#: contrib/auth/models.py:94 msgid "Use '[algo]$[salt]$[hexdigest]'" msgstr "பயன்படுத்து '[algo]$[salt]$[hexdigest]'" -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:95 msgid "staff status" msgstr "பணியாளர் நிலை" -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:95 msgid "Designates whether the user can log into this admin site." -msgstr "பயனர், 'மேலாளலர்' பக்கத்தில் நுழை்ழைவதை முடிவு செய்கிறது " +msgstr "பயனர், 'மேலாளலர்' பக்கத்தில் நுழைவதை முடிவு செய்கிறது" -#: contrib/auth/models.py:61 +#: contrib/auth/models.py:96 msgid "active" msgstr "செயல்படும்" -#: contrib/auth/models.py:62 +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"பயனர்,டிஜாங்ஙோ 'மேலாளலர்' பக்கத்தில் நுழைவதை முடிவு செய்கிறது . இதை தேர்வு செய்யப்படாத கணக்கு உடனடியாக" +"அழிக்கப்படும்" + +#: contrib/auth/models.py:97 msgid "superuser status" msgstr "மேலாளர் இருப்பு நிலை" -#: contrib/auth/models.py:63 +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "இந்த பயனருக்கு எல்லா அங்கீகாரங்களும் வழங்கப்படவில்லை." + +#: contrib/auth/models.py:98 msgid "last login" msgstr "கடைசி உள்நுழைவு" -#: contrib/auth/models.py:64 +#: contrib/auth/models.py:99 msgid "date joined" msgstr "சேர்ந்த தேதி" -#: contrib/auth/models.py:66 +#: contrib/auth/models.py:101 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." -msgstr "பயனர் தனது அனுமதிகளோடு ,தான் உள்ள குழுவினது அனுமதிகளைையும் பெறுவார்." +msgstr "பயனர் தனது அனுமதிகளோடு ,தான் உள்ள குழுவினது அனுமதிகளையும் பெறுவார்." -#: contrib/auth/models.py:67 +#: contrib/auth/models.py:102 msgid "user permissions" msgstr "பயனர் அனுமதிகள்" -#: contrib/auth/models.py:70 +#: contrib/auth/models.py:105 msgid "user" msgstr "பயனர்" -#: contrib/auth/models.py:71 +#: contrib/auth/models.py:106 msgid "users" msgstr "பயனர்கள்" -#: contrib/auth/models.py:76 +#: contrib/auth/models.py:111 msgid "Personal info" msgstr "தனிப்பட்ட விவரம்" -#: contrib/auth/models.py:77 +#: contrib/auth/models.py:112 msgid "Permissions" msgstr "அனுமதிகள்" -#: contrib/auth/models.py:78 +#: contrib/auth/models.py:113 msgid "Important dates" msgstr "முக்கியமான தேதிகள்" -#: contrib/auth/models.py:79 +#: contrib/auth/models.py:114 msgid "Groups" msgstr "குழுக்கள்" -#: contrib/auth/models.py:219 +#: contrib/auth/models.py:256 msgid "message" msgstr "செய்தி" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:52 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." -msgstr " உங்கள் இணைய உலாவியில் குக்கிகள் செயலாக்கம் பெறவில்லை. உள்நுழைவதற்க்கு குக்கிகள் அவசியம்." +msgstr " உங்கள் இணைய உலாவியில் குக்கிகள் செயலாக்கம் பெறவில்லை. உள்நுழைவதற்கு குக்கிகள் அவசியம்." -#: contrib/contenttypes/models.py:25 +#: contrib/auth/forms.py:61 +msgid "This account is inactive." +msgstr "இந்த கணக்கு செயல்பட துவங்கவில்லை" + +#: contrib/contenttypes/models.py:20 msgid "python model class name" msgstr "python model class name" -#: contrib/contenttypes/models.py:28 +#: contrib/contenttypes/models.py:23 msgid "content type" -msgstr "பொருளடக்க வகை " +msgstr "பொருளடக்க வகை" -#: contrib/contenttypes/models.py:29 +#: contrib/contenttypes/models.py:24 msgid "content types" msgstr "பொருளடக்க வகைகள்" -#: contrib/sessions/models.py:35 +#: contrib/sessions/models.py:51 msgid "session key" msgstr "அமர்வு குறியீ" -#: contrib/sessions/models.py:36 +#: contrib/sessions/models.py:52 msgid "session data" msgstr "அமர்வு தகவல்" -#: contrib/sessions/models.py:37 +#: contrib/sessions/models.py:53 msgid "expire date" msgstr "காலாவதியாகும் தேதி" -#: contrib/sessions/models.py:41 +#: contrib/sessions/models.py:57 msgid "session" msgstr "அமர்வு" -#: contrib/sessions/models.py:42 +#: contrib/sessions/models.py:58 msgid "sessions" msgstr "அமர்வுகள்" @@ -1406,21 +1425,6 @@ msgstr "வலைத்தளம்" msgid "sites" msgstr "வலைத்தளங்கள்" -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "தேதி வடிவம்" - -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "தேதிநேர வடிவம்" - -# translation of django_ae.po to -# translation of django_ae.po to -# R Hariram Aatreya <rha@localhost.localdomain>, 2006. -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "நேரத்தின் அமைப்பும்" - #: utils/dates.py:6 msgid "Monday" msgstr "திங்கள்" @@ -1575,537 +1579,558 @@ msgstr "டிச." #: utils/timesince.py:12 msgid "year" -msgstr "வருடம்" +msgid_plural "years" +msgstr[0] "வருடம்" +msgstr[1] "வருடங்கள்" #: utils/timesince.py:13 msgid "month" -msgstr "மாதம்" +msgid_plural "months" +msgstr[0] "மாதம்" +msgstr[1] "மாதங்கள்" #: utils/timesince.py:14 msgid "week" -msgstr "வாரம்" +msgid_plural "weeks" +msgstr[0] "வாரம்" +msgstr[1] "வாரங்கள்" #: utils/timesince.py:15 msgid "day" -msgstr "நாள்" +msgid_plural "days" +msgstr[0] "நாள்" +msgstr[1] "நாட்கள்" #: utils/timesince.py:16 msgid "hour" -msgstr "மணி" +msgid_plural "hours" +msgstr[0] "மணி" +msgstr[1] "மணி" #: utils/timesince.py:17 msgid "minute" -msgstr "நிமிடம்" +msgid_plural "minutes" +msgstr[0] "நிமிடம்" +msgstr[1] "நிமிடங்கள்" + +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "தேதி_முறை" + +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "தேதிநேரம்_முறை" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "நேரம்_முறை" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "வருடம்_மாதம்_முறை" + +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" +msgstr "மாதம்_நாள்_முறை" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "அரபிக்" -#: conf/global_settings.py:37 +#: conf/global_settings.py:40 msgid "Bengali" msgstr "பெங்காலி" -#: conf/global_settings.py:38 +#: conf/global_settings.py:41 msgid "Czech" msgstr "செக்" -#: conf/global_settings.py:39 +#: conf/global_settings.py:42 msgid "Welsh" msgstr "வெல்ஸ்" -#: conf/global_settings.py:40 +#: conf/global_settings.py:43 msgid "Danish" msgstr "டேனிஷ்" -#: conf/global_settings.py:41 +#: conf/global_settings.py:44 msgid "German" msgstr "ஜெர்மன்" -#: conf/global_settings.py:42 +#: conf/global_settings.py:45 msgid "Greek" msgstr "கிரேக்கம்" -#: conf/global_settings.py:43 +#: conf/global_settings.py:46 msgid "English" msgstr "ஆங்கிலம்" -#: conf/global_settings.py:44 +#: conf/global_settings.py:47 msgid "Spanish" msgstr "ஸ்பானிஷ்" -#: conf/global_settings.py:45 +#: conf/global_settings.py:48 +msgid "Argentinean Spanish" +msgstr "அர்ஜெண்டியன் ஸ்பானிஷ் " + +#: conf/global_settings.py:49 +msgid "Finnish" +msgstr "பீனீஷ்" + +#: conf/global_settings.py:50 msgid "French" msgstr "ப்ரென்சு" -#: conf/global_settings.py:46 +#: conf/global_settings.py:51 msgid "Galician" msgstr "கலீஷீயன்" -#: conf/global_settings.py:47 +#: conf/global_settings.py:52 msgid "Hungarian" msgstr "ஹங்கேரியன்" -#: conf/global_settings.py:48 +#: conf/global_settings.py:53 msgid "Hebrew" msgstr "ஹீப்ரு" -#: conf/global_settings.py:49 +#: conf/global_settings.py:54 msgid "Icelandic" msgstr "ஐஸ்லான்டிக்" -#: conf/global_settings.py:50 +#: conf/global_settings.py:55 msgid "Italian" msgstr "இத்தாலியன்" -#: conf/global_settings.py:51 +#: conf/global_settings.py:56 msgid "Japanese" msgstr "ஜப்பானிய" -#: conf/global_settings.py:52 +#: conf/global_settings.py:57 msgid "Dutch" msgstr "டச்சு" -#: conf/global_settings.py:53 +#: conf/global_settings.py:58 msgid "Norwegian" msgstr "நார்வீசியன்" -#: conf/global_settings.py:54 +#: conf/global_settings.py:59 msgid "Brazilian" msgstr "பிரேசிலியன்" -#: conf/global_settings.py:55 +#: conf/global_settings.py:60 msgid "Romanian" msgstr "ரோமானியன்" -#: conf/global_settings.py:56 +#: conf/global_settings.py:61 msgid "Russian" msgstr "ரஷ்யன்" -#: conf/global_settings.py:57 +#: conf/global_settings.py:62 msgid "Slovak" msgstr "சுலோவாக்" -#: conf/global_settings.py:58 +#: conf/global_settings.py:63 msgid "Slovenian" msgstr "ஸ்லோவேனியன்" -#: conf/global_settings.py:59 +#: conf/global_settings.py:64 msgid "Serbian" msgstr "செர்பியன்" -#: conf/global_settings.py:60 +#: conf/global_settings.py:65 msgid "Swedish" msgstr "சுவிடிஷ்" -#: conf/global_settings.py:61 +#: conf/global_settings.py:66 +msgid "Tamil" +msgstr "தமிழ்" + +#: conf/global_settings.py:67 +msgid "Turkish" +msgstr "துருக்கிஷ்" + +#: conf/global_settings.py:68 msgid "Ukrainian" msgstr "உக்ரேனியன்" -#: conf/global_settings.py:62 +#: conf/global_settings.py:69 msgid "Simplified Chinese" msgstr "எளிய சீன மொழி" -#: conf/global_settings.py:63 +#: conf/global_settings.py:70 msgid "Traditional Chinese" msgstr "மரபு சீன மொழி" -#: core/validators.py:60 +#: core/validators.py:63 msgid "This value must contain only letters, numbers and underscores." -msgstr "இந்த மதிப்பு எழுத்துகள் எண்கள் அன்டர்ஸ்கோர் மற்றும் உள்ளடக்க வேண்டும் " +msgstr "இந்த மதிப்பு எழுத்துகள், எண்கள் மேலும் அன்டர்ஸ்கோர் உள்ளடக்க வேண்டும். " -#: core/validators.py:64 +#: core/validators.py:67 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." -msgstr "இந்த மதிப்பு எழுத்துகள் எண்கள் அன்டர்ஸ்கோர் டஷ் அல்லது சலஷ் மற்றும் உள்ளடக்க வேண்டும்" +msgstr "இந்த மதிப்பு எழுத்துகள், எண்கள், அன்டர்ஸ்கோர், டஷ் அல்லது சலஷ் மற்றும் உள்ளடக்க வேண்டும்" + +#: core/validators.py:71 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "இந்த மதிப்பு எழுத்துகள், எண்கள், அன்டர்ஸ்கோர் டஷ் அல்லது கைப்பன் மற்றும் உள்ளடக்க வேண்டும்" -#: core/validators.py:72 +#: core/validators.py:75 msgid "Uppercase letters are not allowed here." -msgstr "பெரிய எழுத்துகளுக்கு இங்கு அனுமதி இல்லை இல்லை." +msgstr "பெரிய எழுத்துகளுக்கு இங்கு அனுமதி இல்லை" -#: core/validators.py:76 +#: core/validators.py:79 msgid "Lowercase letters are not allowed here." -msgstr "சிறிய ய எழுத்துகளுக்கு இங்கு அனுமதி இல்லை" +msgstr "சிறிய எழுத்துகளுக்கு இங்கு அனுமதி இல்லை" -# translation of django_af.po to -# translation of django_af.po to -# translation of django_af.po to -# translation of django_af.po to -# translation of django_af.po to -# translation of django_af.po to -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# , 2006. -# R Hariram Aatreya <rha@localhost.localdomain>, 2006. -#: core/validators.py:83 +#: core/validators.py:86 msgid "Enter only digits separated by commas." -msgstr "காற்புள்ளிகளால் தனிமைப்படுத்திய இலக்கஙகள மட்டும் எழுதவும்" +msgstr "இங்கு எண்களை மட்டுமே எழுதவும் காமவாள் தனிமைபடுத்தவும் " -#: core/validators.py:95 +#: core/validators.py:98 msgid "Enter valid e-mail addresses separated by commas." -msgstr "காற்புள்ளிகளால் தனிமைப்படுத்திய முறையான e முகவரிகள்் மட்டும் எழுதவும்" +msgstr "காற்புள்ளிகளால் தனிமைப்படுத்திய முறையான e முகவரிகள் மட்டும் எழுதவும்" -#: core/validators.py:99 +#: core/validators.py:102 msgid "Please enter a valid IP address." -msgstr "தயவு செய்து முறையான ஐ.பி முகவறி மட்டும் எழுதவும்" +msgstr "தயவு செய்து முறையான ஐ.பி முகவரி மட்டும் எழுதவும்" -#: core/validators.py:103 +#: core/validators.py:106 msgid "Empty values are not allowed here." -msgstr "காலியான மதிப்புக்கள் அனுமதி இல்லை" +msgstr "காலியான மதிப்புக்கள் அனுமதி இல்லை" -#: core/validators.py:107 +#: core/validators.py:110 msgid "Non-numeric characters aren't allowed here." -msgstr "எண் வடிவமில்லாத எழுத்துக்கள் அனுமதி இல்லை" +msgstr "எண் வடிவமில்லாத எழுத்துக்கள் அனுமதி இல்லை" -#: core/validators.py:111 +#: core/validators.py:114 msgid "This value can't be comprised solely of digits." msgstr "இந்த மதிப்பு இலக்கங்கள் மட்டுமே கொண்டதாக இருக்க கூடாது" -#: core/validators.py:116 +#: core/validators.py:119 msgid "Enter a whole number." msgstr "முழு எண் மட்டுமே எழுதவும்" -#: core/validators.py:120 +#: core/validators.py:123 msgid "Only alphabetical characters are allowed here." msgstr "அகர வரிசை எழுத்துக்கள் மட்டுமே அனுமதி உன்டு" -#: core/validators.py:124 +#: core/validators.py:138 +msgid "Year must be 1900 or later." +msgstr "வருடம் கண்டிப்பாக 1900 அல்லது அதற்கு மேல்" + +#: core/validators.py:142 +#, python-format +msgid "Invalid date: %s." +msgstr "முறையல்லாத தேதி: %s" + +#: core/validators.py:146 db/models/fields/__init__.py:415 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "வவவவ-மாமா-நாநா என்ற அமைப்பில் உள்ள முறையான தேதி மட்டுமே எழுதவும்" -#: core/validators.py:128 +#: core/validators.py:151 msgid "Enter a valid time in HH:MM format." msgstr "மம-நிநி என்ற அமைப்பில் உள்ள முறையான நேரம் மட்டுமே எழுதவும்" -#: core/validators.py:132 db/models/fields/__init__.py:468 +#: core/validators.py:155 db/models/fields/__init__.py:477 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "வவவவ-மாமா-நாநா மம-நிநி என்ற அமைப்பில் உள்ள முறையான தேதி/நேரம் மட்டுமே எழுதவும்" -#: core/validators.py:136 +#: core/validators.py:160 msgid "Enter a valid e-mail address." -msgstr "முறையான e முகவரிகள்் மட்டும் எழுதவும்" +msgstr "முறையான e முகவரிகள் மட்டும் எழுதவும்" + +#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "அந்த பக்கத்தின் encoding வகையைப் பரிசோதிக்க.கோப்பு சமர்பிக்கப் பட்டவில்லை " -#: core/validators.py:148 +#: core/validators.py:176 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "முறையான படம் மட்டுமே பதிவேற்றம் செய்யவும். நீங்கள் பதிவேற்றம் செய்த கோப்பு படம் அள்ளாத அள்ளது கெட்டுப்போன கோப்பாகும்" +msgstr "முறையான படம் மட்டுமே பதிவேற்றம் செய்யவும். நீங்கள் பதிவேற்றம் செய்த கோப்பு படம் அள்ளாத அல்லது கெட்டுப்போன கோப்பாகும்" -#: core/validators.py:155 +#: core/validators.py:183 #, python-format msgid "The URL %s does not point to a valid image." -msgstr "%s என்ற இணையதள முகவறி சறியான படத்தைச் சுட்டவில்லை" +msgstr "%s என்ற இணையதள முகவரி சரியான படத்தைச் சுட்டவில்லை" -#: core/validators.py:159 +#: core/validators.py:187 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "தொலைபேசி எண்கள் XXX-XXX-XXXX என்ற அமைப்பில் இருக்க வேண்டும். \"%s\" என்பது முறையள்ள" -#: core/validators.py:167 +#: core/validators.py:195 #, python-format msgid "The URL %s does not point to a valid QuickTime video." -msgstr "%s என்ற இணையதள முகவறி முறையான குயிக் டைம் படக்காட்சியைச் சுட்டவில்லை" +msgstr "%s என்ற இணையதள முகவரி முறையான குயிக் டைம் படக்காட்சியைச் சுட்டவில்லை" -#: core/validators.py:171 +#: core/validators.py:199 msgid "A valid URL is required." -msgstr "முறையான இணையதள முகவறி தேவை" +msgstr "முறையான இணையதள முகவரி தேவை" -#: core/validators.py:185 +#: core/validators.py:213 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -"முறையான இணையதள முகவறி தேவை. குறிப்பிடத்தக்கத் தவறுகளாவன:\n" +"முறையான இணையதள முகவரி தேவை. குறிப்பிடத்தக்கத் தவறுகளாவன:\n" "%s" -#: core/validators.py:192 +#: core/validators.py:220 #, python-format msgid "Badly formed XML: %s" msgstr "முறைப்படுத்தப்படாத XML: %s" -#: core/validators.py:202 +#: core/validators.py:230 #, python-format msgid "Invalid URL: %s" msgstr "முறைப்படுத்தப்படாத இணையதள முகவறி: %s" -#: core/validators.py:206 core/validators.py:208 +#: core/validators.py:234 core/validators.py:236 #, python-format msgid "The URL %s is a broken link." -msgstr "%s என்ற இணையதள முகவறி உடைந்துள்ளது" +msgstr "%s என்ற இணையதள முகவரி உடைந்துள்ளது" -#: core/validators.py:214 +#: core/validators.py:242 msgid "Enter a valid U.S. state abbreviation." -msgstr "முறையான U.S மாநில பெயர் சுருக்கம் எழுதவும்ழுதவும்" +msgstr "முறையான U.S மாநில பெயர் சுருக்கம் எழுதவும்" -#: core/validators.py:229 +#: core/validators.py:256 #, python-format msgid "Watch your mouth! The word %s is not allowed here." -msgstr "வார்த்தைகளை அளன்து பேசுங்கள். %s என்ற வார்த்தை இங்கு அனுமதி இல்லை" +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "வார்த்தைகளை அளன்து பேசுங்கள்! %s என்ற வார்த்தை இங்கு அனுமதி இல்லை" +msgstr[1] "வார்த்தைகளை அளந்து பேசுங்கள்! %s என்ற வார்த்தைகள் இங்கு அனுமதி இல்லை" -#: core/validators.py:236 +#: core/validators.py:263 #, python-format msgid "This field must match the '%s' field." msgstr "இந்த புலம் %s என்ற புலத்துடன் ஒத்திறுக்க வேண்டும்" -#: core/validators.py:255 +#: core/validators.py:282 msgid "Please enter something for at least one field." msgstr "தயவு செய்து ஒரு புலத்திலாவது ஏதாவது எழுதவும்" -#: core/validators.py:264 core/validators.py:275 +#: core/validators.py:291 core/validators.py:302 msgid "Please enter both fields or leave them both empty." -msgstr "தயவு செய்து இரு்புலங்கலையும்ும் நிரப்பவும்; அல்லது இரண்டையும் காலியாக விடவும்" +msgstr "தயவு செய்து இரு புலங்கலையும் நிரப்பவும் அல்லது இரண்டையும் காலியாக விடவும்" -#: core/validators.py:282 +#: core/validators.py:309 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "%(field)s, %(value)s ஆக இருந்தால் இன்த புலம் இருக்க வேண்டும்" +msgstr "%(field)s, %(value)s ஆக இருந்தால் இந்த புலம் இருக்க வேண்டும்" -#: core/validators.py:294 +#: core/validators.py:321 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "%(field)s, %(value)s ஆக இல்லை என்றால் இன்த புலம் இருக்க வேண்டும்" +msgstr "%(field)s, %(value)s ஆக இல்லை என்றால் இந்த புலம் இருக்க வேண்டும்" -#: core/validators.py:313 +#: core/validators.py:340 msgid "Duplicate values are not allowed." msgstr "போலியான மதிப்புகள் அனுமதி இல்லை" -#: core/validators.py:336 +#: core/validators.py:363 #, python-format msgid "This value must be a power of %s." msgstr "இந்த மதிப்பு %s இன் அடுக்காக இருக்க வேன்டும்" -#: core/validators.py:347 +#: core/validators.py:374 msgid "Please enter a valid decimal number." -msgstr "தயவுசெய்து முறையான பதின்ம எண்ணை நழைக்கcவும்" +msgstr "தயவுசெய்து முறையான பதின்ம எண்ணை நுழைக்கவும்" -#: core/validators.py:349 +#: core/validators.py:378 #, python-format -msgid "" -"Please enter a valid decimal number with at most %s total digit." -"Please enter a valid decimal number with at most %s total digits." -msgstr "" -"அதிகபட்சம் %s எண்ணை உள்ள பதின்ம எண்ணை நுழை." -"அதிகபட்சம் %s எண்கள் உள்ள பதின்ம எண்ணை நுழை." +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "தயவுசெய்து முறையான பதின்ம எண்களுடன் %s மொத்த இலக்கத்தை நுழைக்கவும்" +msgstr[1] "தயவுசெய்து முறையான பதின்ம எண்களுடன் %s மொத்த இலக்கங்களையும் நுழைக்கவும்" -#: core/validators.py:352 +#: core/validators.py:381 #, python-format -msgid "" -"Please enter a valid decimal number with at most %s decimal place." -"Please enter a valid decimal number with at most %s decimal places." -msgstr "" -"அதிகபட்சம் %s புள்ளி இடம் ள் உள்ள பதின்ம எண்ை நுழை" -"அதிகபட்சம் %s புள்ளி இடங்கள் உள்ள பதின்ம எண்ை நுழை" +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "அதிகபட்சம் %s எண்ணை உள்ள பதின்ம எண்ணை நுழை." +msgstr[1] "அதிகபட்சம் %s எண்கள் உள்ள பதின்ம எண்ணை நுழை." + +#: core/validators.py:384 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "அதிகபட்சம் %s புள்ளி இடம் உள்ள பதின்ம எண்ணை நுழை" +msgstr[1] "அதிகபட்சம் %s புள்ளி இடங்கள் உள்ள பதின்ம எண்ணை நுழை" -#: core/validators.py:362 +#: core/validators.py:394 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "மேல்ஏற்று செய்யப்பட்ட கோப்பு குறைந்தபட்சம் %s பைட்டுகள் உள்ளனவா என சரி பார்க்கவும்" -#: core/validators.py:363 +#: core/validators.py:395 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "மேல்ஏற்று செய்யப்பட்ட கோப்பு அதிகபட்சம் %s பைட்டுகள் உள்ளனவா என சரி பார்க்கவும்." -#: core/validators.py:376 +#: core/validators.py:412 msgid "The format for this field is wrong." msgstr "புலனுடைய அமைப்பு தவறு" -#: core/validators.py:391 +#: core/validators.py:427 msgid "This field is invalid." -msgstr "இந்த புலம் செல்லாது." +msgstr "இந்த புலம் செல்லாது.ள" -#: core/validators.py:426 +#: core/validators.py:463 #, python-format msgid "Could not retrieve anything from %s." msgstr "%s இருந்து எதுவும் எடுக்க முடியவில்லை" -#: core/validators.py:429 +#: core/validators.py:466 #, python-format msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "வலைமனை %(url)s என்பது செல்லாத உள்ளடக்க-வகை தலைப்பான '%(contenttype)s' ஐ திருப்பி தந்துள்ளது." -#: core/validators.py:462 +#: core/validators.py:499 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" -msgstr " %(line)s கோடு லிருந்து மூடாத %(tag)s டாகை மூடு. ( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)" +msgstr "%(line)s கோடு லிருந்து மூடாத %(tag)s டாகை மூடு. ( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)" -#: core/validators.py:466 +#: core/validators.py:503 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "வரி %(line)s இல் உள்ள சில உரைகள் இருப்பதற்கு அனுமதி இல்லை.( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)" -#: core/validators.py:471 +#: core/validators.py:508 #, 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\"வுடன் துவங்குகின்றது)" -#: core/validators.py:476 +#: core/validators.py:513 #, 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\"வுடன் துவங்குகின்றது)" -#: core/validators.py:480 +#: core/validators.py:517 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "வரி %(line)s இல் உள்ள ஒட்டு இன பண்புகள் தேவைப்படுகின்றன.(வரி,\"%(start)s\" வுடன் துவங்குகின்றது)" -#: core/validators.py:485 +#: core/validators.py:522 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" msgstr "வரி %(line)s இல் உள்ள \"%(attr)s\" பண்பின் மதிப்பு தவறானது.(வரி \"%(start)s\" இருந்து ஆரம்பம்)" +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s வெற்றிகரமாக சேர்க்கப்பட்டு விட்டது" + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s வெற்றிகரமாக மாற்றபட்டு விட்டது" + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s நீக்கப்பட்டுள்ளது" + #: db/models/manipulators.py:302 #, python-format -#, fuzzy msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(type)s உடன் உள்ள %(object)s உள்ளது" +msgstr "%(type)s உடன் உள்ள %(object)s ஏற்கனவே %(field)s கொடுக்கப்பட்டு உள்ளது" #: db/models/fields/__init__.py:40 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(fieldname)s உடன் உள்ள %(optname)s உயிருடன உள்ளது" +msgstr "%(fieldname)s உடன் உள்ள %(optname)s ஏற்கனவே உள்ளது" #: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 +#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 #: forms/__init__.py:346 msgid "This field is required." msgstr "இந்த புலத்தில் மதிப்பு தேவை" -#: db/models/fields/__init__.py:337 +#: db/models/fields/__init__.py:340 msgid "This value must be an integer." msgstr "இந்த மதிப்பு முழுவெண்ணாக இருக்க வேண்டும" -#: db/models/fields/__init__.py:369 +#: db/models/fields/__init__.py:372 msgid "This value must be either True or False." msgstr "இந்த மதிப்பு சரி அல்லது தவறாக இருக்க வேண்டும்" -#: db/models/fields/__init__.py:385 +#: db/models/fields/__init__.py:388 msgid "This field cannot be null." msgstr "இந்த புலம் காலியாக இருக்கக் கூடாது" -#: db/models/fields/__init__.py:562 +#: db/models/fields/__init__.py:571 msgid "Enter a valid filename." msgstr "முறையான கோப்புப் பெயரை எழுதவும்" -#: db/models/fields/related.py:43 +#: db/models/fields/related.py:51 #, python-format msgid "Please enter a valid %s." msgstr "தயவு செய்து முறையான %s எழுதவும்" -#: db/models/fields/related.py:579 +#: db/models/fields/related.py:618 msgid "Separate multiple IDs with commas." msgstr "பன்மையிலுள்ள அடையாளங்களை காற்புள்ளிகளால் பிரிக்கவும்" -#: db/models/fields/related.py:581 +#: db/models/fields/related.py:620 msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "Mac இல், ஒன்றுக்கு மேற்பட்டவற்றை தேர்வு செய்ய \"Control\" அல்லது \"Command\" ஐ அழுத்தவும்" -#: db/models/fields/related.py:625 +#: db/models/fields/related.py:664 #, python-format -msgid "" -"Please enter valid %(self)s IDs. The value %(value)r is invalid." -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr "" -"தயவு செய்து முறையான %(self)s அடையாளங்களை எழுதவும். %(value)r என்ற மதிப்பு முறையானதல்ல. " -"தயவு செய்து முறையான %(self)s அடையாளங்களை எழுதவும். %(value)r என்ற மதிப்புகள் முறையானதல்ல. " +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "தயவு செய்து முறையான %(self)s அடையாளங்களை எழுதவும். %(value)r என்ற மதிப்பு முறையானதல்ல." +msgstr[1] "தயவு செய்து முறையான %(self)s அடையாளங்களை எழுதவும். %(value)r என்ற மதிப்புகள் முறையானதல்ல." -#: forms/__init__.py:380 +#: forms/__init__.py:381 #, python-format msgid "Ensure your text is less than %s character." -msgstr "உங்கள் உரை %s ஐ விட குறைவான எழுத்துக்களை உடையதென உறுதி செய்து கொள்ளுங்கள்" +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "உங்கள் உரை %s ஐ விட குறைவான எழுத்து உடையது என்று உறுதி செய்து கொள்ளுங்கள்" +msgstr[1] "உங்கள் உரை %s ஐ விட குறைவான எழுத்துகள் உடையது என்று உறுதி செய்து கொள்ளுங்கள்" -#: forms/__init__.py:385 +#: forms/__init__.py:386 msgid "Line breaks are not allowed here." -msgstr "வரி உடைவுகள் அனுமதி இல்லை" +msgstr "வரி உடைவுகள் அனுமதி இல்லை" -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 +#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "முறையான விருப்பத்தை தேர்வு செய்யவும்; '%(data)s என்பது %(choices)s இல் இல்லை" +msgstr "முறையான விருப்பத்தைத் தேர்வு செய்யவும்; '%(data)s என்பது %(choices)s இல் இல்லை" -#: forms/__init__.py:645 +#: forms/__init__.py:663 msgid "The submitted file is empty." -msgstr "சமர்பிக்கப் பட்ட கோப்பு காலியாக உள்ளது" +msgstr "சமர்பிக்கப் பட்ட கோப்புக் காலியாக உள்ளது" -#: forms/__init__.py:699 +#: forms/__init__.py:719 msgid "Enter a whole number between -32,768 and 32,767." -msgstr "-32,768 மற்றும் 32,767 கு நடுவில் ஒரு முழு எண்ணை எழுதவும்" +msgstr "-32,768 மற்றும் 32,767 க்கு நடுவில் ஒரு முழு எண்ணை எழுதவும்" -#: forms/__init__.py:708 +#: forms/__init__.py:729 msgid "Enter a positive number." -msgstr "ஒரு நேர்க்குறி எண்ணை எழுதவும்" +msgstr "ஒரு நேர்க்குறி எண்ணை எழுதவும்" -#: forms/__init__.py:717 +#: forms/__init__.py:739 msgid "Enter a whole number between 0 and 32,767." -msgstr "0 மற்றும் 32,767 கு நடுவில் ஒரு முழு எண்ணை எழுதவும்" +msgstr "0 மற்றும் 32,767 க்கு நடுவில் ஒரு முழு எண்ணை எழுதவும்" -#: template/defaultfilters.py:379 +#: template/defaultfilters.py:401 msgid "yes,no,maybe" msgstr "ஆம், இல்லை, இருக்கலாம்" diff --git a/django/conf/locale/ta/LC_MESSAGES/djangojs.mo b/django/conf/locale/ta/LC_MESSAGES/djangojs.mo Binary files differnew file mode 100644 index 0000000000..2565a6dda0 --- /dev/null +++ b/django/conf/locale/ta/LC_MESSAGES/djangojs.mo diff --git a/django/conf/locale/ta/LC_MESSAGES/djangojs.po b/django/conf/locale/ta/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..03fbece314 --- /dev/null +++ b/django/conf/locale/ta/LC_MESSAGES/djangojs.po @@ -0,0 +1,112 @@ +# translation of djangojs.po to tamil +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# PONNUSAMY.A <ponnusamy.simpleman@gmail.com>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: djangojs\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-12-09 11:51+0100\n" +"PO-Revision-Date: 2007-03-14 16:40+0530\n" +"Last-Translator: PONNUSAMY <ponnusamy.simpleman@gmail.com>\n" +"Language-Team: tamil <tamilinix@yahoogroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "%s இருக்கிறதா " + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "எல்லாவற்றையும் தேர்ந்த்தெடுக்க" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "சேர்க்க" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "அழிக்க" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "%s தேர்ந்த்தெடுக்கப்பட்ட" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "தேவையானவற்றை தேர்ந்த்தெடுத்து கிளிக் செய்க" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "எல்லாவற்றையும் அழிக்க " + +#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"ஜனவரி பிப்ரவரி மார்ச் ஏப்ரல் மே ஜூன் ஜூலை ஆகஸ்டு செப்டம்பர் அக்டோபர் நவம்பர் " +"டிசம்பர்" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "ஞாயிறு திங்கள் செவ்வாய் புதன் வியாழன் வெள்ளி சனி " + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "ஞா தி செ பு வி வெ ச" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "இப்பொழுது " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "கடிகாரம் " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "ஒரு நேரத்தை தேர்ந்த்தெடுக்க " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "நடு இரவு " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "காலை 6 மணி " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "மதியம் " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "வேண்டாம் " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "இன்று " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "நாள்காட்டி " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "நேற்று " + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "நாளை" + diff --git a/django/conf/locale/te/LC_MESSAGES/django.mo b/django/conf/locale/te/LC_MESSAGES/django.mo Binary files differnew file mode 100644 index 0000000000..29360bb660 --- /dev/null +++ b/django/conf/locale/te/LC_MESSAGES/django.mo diff --git a/django/conf/locale/te/LC_MESSAGES/django.po b/django/conf/locale/te/LC_MESSAGES/django.po new file mode 100644 index 0000000000..0057bf97de --- /dev/null +++ b/django/conf/locale/te/LC_MESSAGES/django.po @@ -0,0 +1,2106 @@ +# translation of django.po to Telugu +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# pavithran <pavithran.s@gmail.com>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-09-25 15:43+0200\n" +"PO-Revision-Date: 2007-02-28 18:35+0530\n" +"Last-Translator: pavithran <pavithran.s@gmail.com>\n" +"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "వస్తువు ఐడి" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "ముఖ్య అంశం" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "వ్యాఖ్యానము" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "రేటింగ్ #1" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "రేటింగ్ #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "రేటింగ్ #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "రేటింగ్ #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "రేటింగ్ #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "రేటింగ్ #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "రేటింగ్ #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "రేటింగ్ #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "సరైన రేటింగ్" + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "తేది /వేళ సమర్పించినది" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "బహిరంగమయినది" + +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +msgid "IP address" +msgstr "ఐపి అడ్రస్" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "తీసివేయబడినది" + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr " ఈ వ్యాఖ్యానము సరిగ్గా లేదని తోచినచో ఈ డబ్బా ని చెక్ చేయండి " + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "వ్యాఖ్యానములు" + +#: contrib/comments/models.py:131 contrib/comments/models.py:207 +msgid "Content object" +msgstr "వస్తువు లోనిది" + +#: contrib/comments/models.py:159 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "వ్యక్తి పేరు" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "ఐపి అడ్రస్" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr " అధికారుల చేత ఆమోదించబడినది" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "నిరాటంకమైన వ్యాఖ్యానము" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "నిరాటంకము గావ్యాఖ్యానములు" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "స్కొర్" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "స్కొర్ తేది" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "కర్మ స్కొర్" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "కర్మ స్కొరులు" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(user) రేటింగ్" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"%(user)s చేత చేయబడ్డ వ్యాఖ్యానములు" +"\n" +"%(text)లు" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "ఫ్లాగ్ తేది " + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "యూఙర్ ఫ్లాగ్" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "యూఙర్ ఫ్లాగులు" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "%r యొక్క ఫ్లాగ్" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "తీసివేసిన తారీఖు" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "మొదరేటర్ చేత తీసివేయబడినది " + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "మొదరేటర్ చేత తీసివేయబడినవి" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "మొదరేటర్ తీసివేసిన %r" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "అపరిచిత యూఙరులు వోటు వేయలేరు" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "సరికాని వ్యాఖ్యానము ఐడి" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "మీకు వోటు హక్కు లేదు" + +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "ఈ రేటింగ్ అవసరం ఎం దుకంటే మీరు ఒక్కసారైన రేటింగ్ ఇచ్చారు" + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"ఈ వ్యాఖ్యానము చేసిన యూఙర్ %(count)లు కన్న తక్కువ సమర్పించాడు " +"వ్యాఖ్యానము:\n" +"\n" +"%(text)s" +msgstr[1] "" +"ఈ వ్యాఖ్యానము చేసిన యూఙర్ %(count)లు కన్న తక్కువ సమర్పించాడు" +"వ్యాఖ్యానములు:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"ఈ వ్యాఖ్యానము స్కెచి యూఙర్ చేసాడు :\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "ఇక్కడ సమర్పణలు మాత్రమే అంగీకరిస్తాము" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ ఫీల్డస్ సమర్పించలేదు" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "ఎవరో వ్యాఖ్యానము ఫార్మ్ ని గెలికారు (భద్రత కి భంగం) " + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"వ్యాఖ్యానము ఫార్మ్ లో చెల్లని 'టార్గెట్ ' పారామీటర్ , ఆ వస్తువు ఐడి " +"చెల్లదు" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "వ్యాఖ్యానము ఫార్మ్ లో 'ప్రివ్యీవ్' కాని 'పోస్ట్' ఇవ్వలేదు " + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "యూఙర్ పేరు" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Log out" +msgstr "లాగ్ ఔట్" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "పాస్ వర్డ్" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "పాస్ వర్డ్ మర్చిపోయారా?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "రేటింగులు" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "అవసరము" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "మీ ఇష్టం" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "ఫొటొ పెట్టండి" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "వ్యాఖ్యానము" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "వ్యాఖ్యానము ని ప్రివ్యీవ్ చేయండి" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "మీ పేరు" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"<h3>By %s:</h3>\n" +"<ul>\n" +msgstr "<h3> %s తో:</h3>\n" +"<ul>\n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "అన్నీ" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "ఏ రోఙైన" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "ఈ రోఙు" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "గత 7 రోఙుల గా" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "ఈ నెల" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "ఈ సంవత్సరము" + +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "అవును" + +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "కాదు" + +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "తెలియనది" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "పని సమయము " + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "వస్తువు" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "వస్తువు" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "పని ఫ్లాగ్" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "సందేశము ని మార్చంది" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "లాగ్ ఎంట్రీ" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "లాగ్ ఎంట్రీలు" + +#: contrib/admin/templatetags/admin_list.py:230 +msgid "All dates" +msgstr "అన్నీ రోఙులు" + +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "దయచేసి సరైన యూఙర్ పేరు పాస్ వర్డ్ ఇవ్వండి" + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "లాగ్ ఇన్" + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "దయచేసి మళీ లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ సేస్సన్ ముగిసింది . బాధపడకండి మీ సమర్పన దాచిపెట్టాము" + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "మీ బ్రౌఙర్ పై కుకీస్ అంగీకరించబడేటట్లు చేయలేదు . దయ చేసి కుకీస్ ఎనేబల్ చేసి ,మళ్ళీ ట్రై చేయండి" + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "యూఙర్ పేరు లో '@' అక్షరము ఉందకూడడు" + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "మీ ఈ మెయిల్ అడ్రస్ మీ యూఙర్ పేరు కాదు . '%s' ఇచ్చి చూడండి " + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "సైట్ నిర్వాహన" + +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\"ఙయప్రదంగా కలపబడ్డడి" + +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:22 +msgid "You may edit it again below." +msgstr "మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "మీరు ఇంకొక %s ని క్రింద ఙత చేయొచ్చు" + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "%s ని ఙత చేయండి " + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "%s కలపబడ్డడి" + +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 +msgid "and" +msgstr "ఇంకా" + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr " %s మార్చబడిండి" + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "%s తీసివేయబడ్డడి" + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "మార్చబడలేదు" + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" ఙయప్రదంగా మార్చబడిండి" + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" ఙయప్రదంగా కలపబడ్డడి .మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు" + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "%s ని మార్చంది" + +#: contrib/admin/views/main.py:473 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు : %(obj)లు " + +#: contrib/admin/views/main.py:478 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు" + +#: contrib/admin/views/main.py:511 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)లు \"%(obj)s\"ఙయప్రదంగా తీసివేయబడ్డడి" + +#: contrib/admin/views/main.py:514 +msgid "Are you sure?" +msgstr "మీరు కచ్చితంగా ఉన్నారా?" + +#: contrib/admin/views/main.py:536 +#, python-format +msgid "Change history: %s" +msgstr "మార్చబడిన పురాణము" + +#: contrib/admin/views/main.py:570 +#, python-format +msgid "Select %s" +msgstr "%s ని ఎన్నుకోండి" + +#: contrib/admin/views/main.py:570 +#, python-format +msgid "Select %s to change" +msgstr "%s ని మార్చటానికి ఎన్నుకోండి" + +#: contrib/admin/views/main.py:758 +msgid "Database error" +msgstr "డాటాబేస్ ఎర్రర్ " + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "టాగ్" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "ఫిల్టర్" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "చూడు:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "%rఎప్ప్ దొరకలేడు" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %r not found in app %r" +msgstr "%r ఎప్ప్ లో %r మొడల్ దొరకలేడు" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%s.%s` object" +msgstr "సంబంధించిన `%s.%s` వస్తువు " + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "మొడల్:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%s.%s` objects" +msgstr "సంబంధించిన `%s.%s` వస్తువులు" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "ఆన్నీ %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "వస్తువు" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +msgid "Integer" +msgstr "అంకె" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "కామా తో విడడీసిన సంఖ్య" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "తేది (సమయం లేకుండా)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "తేది (సమయం తో)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "ఈ మెయిల్ అడ్రస్ " + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "ఫైల్ పాత్" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "పేరంట్ మొడల్ యొక్క రిలేషన్ " + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "ఫోన్ నంబరు" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "టెక్స్ట" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "వేళ" + +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "అమెరికా రాజ్యము" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "ఎక్స్ ఎమ్ ఎల్" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: contrib/admin/views/auth.py:28 +msgid "Add user" +msgstr "యూఙర్" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Change password" +msgstr "పాస్ వర్డ్ మార్చుకోండి" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "ఇల్లు" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:20 +msgid "History" +msgstr "పురాణము" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "తేది/వేళ" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "యూఙర్" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "పని" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "డ్ఙాంగొ యొక్క నిర్వాహనదారులు" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "డ్ఙాంగొ నిర్వాహన" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "సర్వర్ తప్పు" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "సర్వర్ తప్పు (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error <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 "తప్పు ఙరిగిండి . దానిని నిర్వాహనాధికారులు కి ఈ మెయిల్ చేయబడ్డడి,మీ ఓపిక కి ధన్యవాదములు" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "పేఙి దొరకలేదు" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "క్షమించండి మీరు కోరిన పేఙి దొరకలేడు" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "మొడల్ లు %(name)లో దొరికే అప్ప్లికేషన్" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/index.html:28 +#: contrib/admin/templates/admin/change_form.html:15 +msgid "Add" +msgstr "ఙత చేయి" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "మార్చు" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "మీకు ఏది మార్చటానికి అధికారము లేదు" + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "ఈ మధ్య చేసిన పనులు" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "నా పనులు" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "ఏమి దొరకలేదు" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "%(name)లు ఙత చేయు" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" +msgstr "మీరు<a href=\"/password_reset/\">పాస్ వర్డ మర్చిపోయారా? " + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "సుస్వాగతం" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "తీసివేయి" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "అవును " + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "వెళ్లు" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "అన్నీ చూడండి" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "సైట్ లో చూడండి" + +#: contrib/admin/templates/admin/change_form.html:30 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "క్రింద ఉన్న తప్పు సరిదిద్దుకోండి" +msgstr[1] "క్రింద ఉన్న తప్పులు సరిదిద్దుకోండి" + +#: contrib/admin/templates/admin/change_form.html:48 +msgid "Ordering" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:51 +msgid "Order:" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "కొత్త దాని లా దాచు" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "దాచి కొత్త దానిని కలపండి" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "దాచి మార్చుటా ఉందండి" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "దాచు" + +#: contrib/admin/templates/admin/invalid_setup.html:8 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "యూఙర్ పేరు" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "పాస్ వర్డ్" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "పాస్ వర్డ్ (మళ్ళీ)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "ఇందాక పాస్ వర్డ్ మళ్ళీ ఇవ్వండి పరిశీలన కోసము" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "పాస్ వర్డ్ మార్పు" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "పాస్ వర్డ్ మార్పు ఙయప్రదమైండి " + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "మీ పాస్ వర్డ్ మార్చబడిండి" + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "పాస్ వర్డ్ రీసెట్" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "పాస్ వర్డ్ మర్చిపోయారా? మీ ఈ మెయిల్ అడ్రస్ ఇవ్వండి , మీ పాస్ వర్డ్ రీసెట్ చేసి మీకు కొత్తది ఈ మెయిల్ చేస్తాము " + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "ఈ మెయిల్ అడ్రస్" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "నా పాస్ వర్డ్ రీసెట్ చేయండి" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "మళ్ళీ లాగ్ ఇన్ అవ్వండి" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "పాస్ వర్డ్ రీసెట్ ఙయప్రదమైండి" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "మీరు ఇచ్చిన ఈ మెయిల్ అడ్రస్ కి కొత్త పాస్ వర్డ్ ఈ మెయిల్ చేసాము.మీరు తొందర లో దానిని అందుకుంటారు ." + +#: contrib/admin/templates/registration/password_change_form.html:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "దయచేసి రక్షన కోసము, మీ పాత పాస్ వర్డ్ ఇవ్వండి , కొత్త పాస్ వర్డ్ రెండు సార్లు ఇవ్వండి , ఎం దుకంటే మీరు తప్పు ఇస్తే సరిచేయటానికి " + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "పాత పాస్ వర్డ్ " + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "కొత్త పాస్ వర్డ్" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "పాస్ వర్డ్ పక్కా చేయండి" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "నా పాస్ వర్డ్ మార్చండి" + +#: contrib/admin/templates/registration/password_reset_.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "మీరు ఈ ఈ మెయిల్ అందుకున్నారు, ఎందుకంటే పాస్ వర్డ్ రీసెట్ కోసము కోరారు" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "మీ కొత్త పాస్ వర్డ్ : %(new_password)s " + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "నిస్సందేహము గా ఈ పేఙి క్ కి వెళ్ళి పాస్ వర్డ్ మార్చుకోండి " + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "మీ యూఙర్ పేరు, ఒక వేళ మర్చిపోయి ఉంటే " + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "మా సైట్ వాడినందుకు ధన్యవాదములు!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").</p>\n" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "వస్తువు ఇడి చూడండి" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "వస్తువు" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "వస్తువు" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "వస్తువు" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "వస్తువు" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "తారీఖు" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "వేళ:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "ఇప్పుడు" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "మార్చు" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "పట్టము" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "Example: 'flatpages/contact_page.html'.ఇది ఇవ్వకపోతే సిస్టం " " 'flatpages/default.html' ని వాడుకుంటడి" + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "నమొదు చేయటము అవసరం" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూఙర్లు పేఙి చూడలేస్తారు" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "లాగ్గడ్ ఔట్" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "పేరు" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "అనుమతి" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "అనుమతులు" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "గుంపు" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "గుంపులు" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "యూఙర్ పేరు" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "పేరు" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "ఇంటి పేరు" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "ఈ మెయిల్ అడ్రస్" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "పాస్ వర్డ్" + +#: contrib/auth/models.py:94 +msgid "Use '[algo]$[salt]$[hexdigest]'" +msgstr "" + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "ఉద్యోగస్తుల స్థితి" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "చురుకు గా" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "గత లాగిన్" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "చేరిన తారీఖు" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "యూఙర్ అనుమతులు" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "యూఙర్" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "యూఙర్లు" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "పర్సనల్ సమాచారం " + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "అనుమతులు" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "ముఖ్యమైన తారీఖులు" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "గుంపులు" + +#: contrib/auth/models.py:256 +msgid "message" +msgstr "సమాచారం" + +#: contrib/auth/forms.py:52 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/auth/forms.py:61 +msgid "This account is inactive." +msgstr "" + +#: contrib/contenttypes/models.py:20 +msgid "python model class name" +msgstr "పైతాన్ మొడల్ క్లాస్ పేరు" + +#: contrib/contenttypes/models.py:23 +msgid "content type" +msgstr "" + +#: contrib/contenttypes/models.py:24 +msgid "content types" +msgstr "" + +#: contrib/sessions/models.py:51 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:52 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:53 +msgid "expire date" +msgstr "" + +#: contrib/sessions/models.py:57 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:58 +msgid "sessions" +msgstr "" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "కనిపిచ్చే పేరు" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "సైట్" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "సైట్లు" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "సోమవారము" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "మంగళవారము" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "బుధవారము" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "గురువారము" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "శుక్రవారము" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "శనివారము" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "ఆదివారము" + +#: utils/dates.py:14 +msgid "January" +msgstr "ఙాన్వరి " + +#: utils/dates.py:14 +msgid "February" +msgstr "ఫిబ్రవరి" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "మార్చి" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "ఎప్రిల్" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "మే" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "ఙూను" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "ఙులై" + +#: utils/dates.py:15 +msgid "August" +msgstr "ఆగష్టు" + +#: utils/dates.py:15 +msgid "September" +msgstr "సెప్టెంబర్" + +#: utils/dates.py:15 +msgid "October" +msgstr "అక్టోబర్" + +#: utils/dates.py:15 +msgid "November" +msgstr "నవంబర్" + +#: utils/dates.py:16 +msgid "December" +msgstr "డిసెంబర్" + +#: utils/dates.py:19 +msgid "jan" +msgstr "ఙాన్" + +#: utils/dates.py:19 +msgid "feb" +msgstr "ఫిబ్" + +#: utils/dates.py:19 +msgid "mar" +msgstr "మార్" + +#: utils/dates.py:19 +msgid "apr" +msgstr "ఎప్ర్" + +#: utils/dates.py:19 +msgid "may" +msgstr "మే" + +#: utils/dates.py:19 +msgid "jun" +msgstr "ఙూన్" + +#: utils/dates.py:20 +msgid "jul" +msgstr "ఙుల్" + +#: utils/dates.py:20 +msgid "aug" +msgstr "ఆగ్" + +#: utils/dates.py:20 +msgid "sep" +msgstr "సెప్" + +#: utils/dates.py:20 +msgid "oct" +msgstr "అక్ట్" + +#: utils/dates.py:20 +msgid "nov" +msgstr "నవ్" + +#: utils/dates.py:20 +msgid "dec" +msgstr "డిస్" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "ఙాన్" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "ఫిబ్" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "ఆగ్" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "సెప్" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "అక్ట్" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "నవ్" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "డిస్" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "సంవత్సరం" +msgstr[1] "సంవత్సరాలు" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "నెల" +msgstr[1] "నెలలు" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "వారం" +msgstr[1] "వారాలు" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "రోఙు" +msgstr[1] "రోఙులు" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "గంటలు" +msgstr[1] "గంట" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "నిముషం" +msgstr[1] "నిముషాలు" + +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" +msgstr "" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "ఆరబిక్" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "బెంగాలి" + +#: conf/global_settings.py:41 +msgid "Czech" +msgstr "క్ఙెఖ్" + +#: conf/global_settings.py:42 +msgid "Welsh" +msgstr "వెల్శ్" + +#: conf/global_settings.py:43 +msgid "Danish" +msgstr "డానిశ్" + +#: conf/global_settings.py:44 +msgid "German" +msgstr "ఙెర్మన్" + +#: conf/global_settings.py:45 +msgid "Greek" +msgstr "గ్రీక్" + +#: conf/global_settings.py:46 +msgid "English" +msgstr "ఆంగ్లము" + +#: conf/global_settings.py:47 +msgid "Spanish" +msgstr "స్పానిష్" + +#: conf/global_settings.py:48 +msgid "Argentinean Spanish" +msgstr "అర్ఙంటీనా స్పానిష్" + +#: conf/global_settings.py:49 +msgid "Finnish" +msgstr "ఫీన్నిష్" + +#: conf/global_settings.py:50 +msgid "French" +msgstr "ఫ్రెంచ్" + +#: conf/global_settings.py:51 +msgid "Galician" +msgstr "గలిసియన్" + +#: conf/global_settings.py:52 +msgid "Hungarian" +msgstr "హంగారియన్" + +#: conf/global_settings.py:53 +msgid "Hebrew" +msgstr "హెబ్రివ్" + +#: conf/global_settings.py:54 +msgid "Icelandic" +msgstr "ఐస్ లాండిక్" + +#: conf/global_settings.py:55 +msgid "Italian" +msgstr "ఇటాలియవ్" + +#: conf/global_settings.py:56 +msgid "Japanese" +msgstr "ఙపనీస్" + +#: conf/global_settings.py:57 +msgid "Dutch" +msgstr "డట్చ్" + +#: conf/global_settings.py:58 +msgid "Norwegian" +msgstr "నార్వీఙియన్" + +#: conf/global_settings.py:59 +msgid "Brazilian" +msgstr "బ్రఙీలియన్" + +#: conf/global_settings.py:60 +msgid "Romanian" +msgstr "రొమానియన్" + +#: conf/global_settings.py:61 +msgid "Russian" +msgstr "రస్సెన్" + +#: conf/global_settings.py:62 +msgid "Slovak" +msgstr "స్లొవాక్" + +#: conf/global_settings.py:63 +msgid "Slovenian" +msgstr "స్లొవానియన్" + +#: conf/global_settings.py:64 +msgid "Serbian" +msgstr "సెర్బియన్" + +#: conf/global_settings.py:65 +msgid "Swedish" +msgstr "స్వీడిష్" + +#: conf/global_settings.py:66 +msgid "Tamil" +msgstr "తమిళ్" + +#: conf/global_settings.py:67 +msgid "Turkish" +msgstr "టర్కిశ్" + +#: conf/global_settings.py:68 +msgid "Ukrainian" +msgstr "యుక్రానియన్" + +#: conf/global_settings.py:69 +msgid "Simplified Chinese" +msgstr "వాడుక చైనీస్" + +#: conf/global_settings.py:70 +msgid "Traditional Chinese" +msgstr "గ్రాంధిక చైనీస్" + +#: core/validators.py:63 +msgid "This value must contain only letters, numbers and underscores." +msgstr "ఈ విలువ లో అక్షరాలు, అంకెలు ఇంకా అండర్ స్కోర్లు ఉందాలి" + +#: core/validators.py:67 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "ఈ విలువ లో అక్షరాలు, అంకెలు , అండర్ స్కోర్లు ,డాష్ లు లేక స్లాష్ లు ఉందాలి" + +#: core/validators.py:71 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "ఈ విలువ లో అక్షరాలు, అంకెలు , అండర్ స్కోర్లు లేక హైఫన్లు ఉందాలి" + +#: core/validators.py:75 +msgid "Uppercase letters are not allowed here." +msgstr "" + +#: core/validators.py:79 +msgid "Lowercase letters are not allowed here." +msgstr "" + +#: core/validators.py:86 +msgid "Enter only digits separated by commas." +msgstr "కామాల తో అంకెలు విడడీసి ఇవ్వండి " + +#: core/validators.py:98 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "కామాల తో విడతీసి సరైన ఈ మెయిల్ అడ్రస్ ఇవ్వండి" + +#: core/validators.py:102 +msgid "Please enter a valid IP address." +msgstr "దయచేసి సరైన ఐపి అడ్రస్ ఇవ్వండి " + +#: core/validators.py:106 +msgid "Empty values are not allowed here." +msgstr "ఇక్కడ కాళీ విలువలు అనుమతించబడవు " + +#: core/validators.py:110 +msgid "Non-numeric characters aren't allowed here." +msgstr "అంకెలు కాని చిహ్నాలు అనుమతించబడవు" + +#: core/validators.py:114 +msgid "This value can't be comprised solely of digits." +msgstr "ఈ విలువ లో ఉట్టి మాత్రమే ఉందకూడడు" + +#: core/validators.py:119 +msgid "Enter a whole number." +msgstr "పూర్ణ సంఖ్య ఇవ్వండి" + +#: core/validators.py:123 +msgid "Only alphabetical characters are allowed here." +msgstr "అక్షరాలు అయిన చిహ్నాలు మాత్రమే అనుమతించబడతాయి " + +#: core/validators.py:138 +msgid "Year must be 1900 or later." +msgstr "సంవత్సరము 1900 లేక దాని తరువాత అయ్యి ఉందాలి " + +#: core/validators.py:142 +#, python-format +msgid "Invalid date: %s." +msgstr "సరికాని తారీఖు" + +#: core/validators.py:146 db/models/fields/__init__.py:415 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "" + +#: core/validators.py:151 +msgid "Enter a valid time in HH:MM format." +msgstr "" + +#: core/validators.py:155 db/models/fields/__init__.py:477 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "" + +#: core/validators.py:160 +msgid "Enter a valid e-mail address." +msgstr "సరైన ఈ మెయిల్ అడ్రస్ ఇవ్వండి" + +#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: core/validators.py:176 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: core/validators.py:183 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "" + +#: core/validators.py:187 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" + +#: core/validators.py:195 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "" + +#: core/validators.py:199 +msgid "A valid URL is required." +msgstr "సరైన URL కావాలి" + +#: core/validators.py:213 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "సరైన HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n" +"%s" +#: core/validators.py:220 +#, python-format +msgid "Badly formed XML: %s" +msgstr "" + +#: core/validators.py:230 +#, python-format +msgid "Invalid URL: %s" +msgstr "" + +#: core/validators.py:234 core/validators.py:236 +#, python-format +msgid "The URL %s is a broken link." +msgstr "" + +#: core/validators.py:242 +msgid "Enter a valid U.S. state abbreviation." +msgstr "దయచేసి సరైన అగ్ర రాఙ్య సంక్షేపము చేసిన రాష్ట్రము పేరు ఇవ్వండి" + +#: core/validators.py:256 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:263 +#, python-format +msgid "This field must match the '%s' field." +msgstr "ఈ ఫీల్డ్ '%s' ఫీల్డ్ కి సరి తూగాలి" + +#: core/validators.py:282 +msgid "Please enter something for at least one field." +msgstr "దయచేసి ఏదో ఒకటి ఏదో ఒక ఫీల్డ్ కి ఇవ్వండి " + +#: core/validators.py:291 core/validators.py:302 +msgid "Please enter both fields or leave them both empty." +msgstr "దయచేసి రెండు ఫీల్డ్లలు ఇవ్వండి లేకపోతే రెండు కాళీ గా వదిలేయండి " + +#: core/validators.py:309 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "%(field)s %(value)s ఐతే ఈ ఫీల్డ్ ఇవ్వాలి " + +#: core/validators.py:321 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "%(field)s %(value)s అవ్వకపోతే ఈ ఫీల్డ్ ఇవ్వాలి " + +#: core/validators.py:340 +msgid "Duplicate values are not allowed." +msgstr "నకలీ విలువలు ఇక్కడ అనుమతించబడవు" + +#: core/validators.py:363 +#, python-format +msgid "This value must be a power of %s." +msgstr "" + +#: core/validators.py:374 +msgid "Please enter a valid decimal number." +msgstr "" + +#: core/validators.py:378 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:381 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:384 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +msgstr[1] "" + +#: core/validators.py:394 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "" + +#: core/validators.py:395 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "" + +#: core/validators.py:412 +msgid "The format for this field is wrong." +msgstr "ఈ ఫీల్డ్ ఫోర్మాట్ తప్పు" + +#: core/validators.py:427 +msgid "This field is invalid." +msgstr "ఈ ఫీల్డ్ సరి కానిది" + +#: core/validators.py:463 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "%s నించి ఏమి రాబట్టలేము" + +#: core/validators.py:466 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" + +#: core/validators.py:499 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" + +#: core/validators.py:503 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:508 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" + +#: core/validators.py:513 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" + +#: core/validators.py:517 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:522 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)లు ఙయప్రదంగా తయారయింది" + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)లు ఙయప్రదంగా @@" + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)లు తీసివేయబడినది" + +#: db/models/manipulators.py:302 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(field)ల లో %(object)తో %(type) ఉన్నాయి" + +#: db/models/fields/__init__.py:40 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)లు తో %(fieldname) ముందే ఉన్నాయి ." + +#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 +#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 +#: forms/__init__.py:346 +msgid "This field is required." +msgstr "ఈ ఫీల్డ్ అవసరము" + +#: db/models/fields/__init__.py:340 +msgid "This value must be an integer." +msgstr "ఈ విలువ లో ఉందాలి" + +#: db/models/fields/__init__.py:372 +msgid "This value must be either True or False." +msgstr "ఈ విలువ తప్పైన ఒప్పైన ఉందాలి" + +#: db/models/fields/__init__.py:388 +msgid "This field cannot be null." +msgstr "ఈ ఫీల్డ్ కాళీగా ఉందకూడడు " + +#: db/models/fields/__init__.py:571 +msgid "Enter a valid filename." +msgstr "దయచేసి సరైన దస్త్రం పేరు ఇవ్వండి." + +#: db/models/fields/related.py:51 +#, python-format +msgid "Please enter a valid %s." +msgstr "దయచేసి సరైన %sఇవ్వండి." + +#: db/models/fields/related.py:618 +msgid "Separate multiple IDs with commas." +msgstr "గుంపు గా ఉన్న ఐడిల ను కామా తో విడడీయంది" + +#: db/models/fields/related.py:620 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "\"Control\" కాని \"Command\" మాక్ లో నొక్కి ఉంచండి , ఒకటి కన్న ఎక్కువ ఎన్నుకోవటానికి" + +#: db/models/fields/related.py:664 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "దయచేసి సరైన %(self)s ఐడిలు ఇవ్వండి. " +msgstr[1] "" + +#: forms/__init__.py:381 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "మీరు ఇచ్చిన టెక్స్ట %s ఆక్షరము కన్న తక్కువ ఉందాలి" +msgstr[1] "మీరు ఇచ్చిన టెక్స్ట %s ఆక్షరములు కన్న తక్కువ ఉందాలి" + +#: forms/__init__.py:386 +msgid "Line breaks are not allowed here." +msgstr "లైన్ బ్రేక్స్ కి ఇక్కడ ఆనుమతి లేదు" + +#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "సరైనది ఎంచుకోండి; %(choices) ల లో '%(data)s' లేవు " + +#: forms/__init__.py:663 +msgid "The submitted file is empty." +msgstr "మీరు సమర్పించిన ఫైల్ కాళీగా ఉంది " + +#: forms/__init__.py:719 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr " -32,768 ఇంకా 32,767 మధ్యలో ఒక ఆంకె ఇవ్వండి" + +#: forms/__init__.py:729 +msgid "Enter a positive number." +msgstr "ఒక ధన సంఖ్య ఇవ్వండి" + +#: forms/__init__.py:739 +msgid "Enter a whole number between 0 and 32,767." +msgstr "0 ఇంకా 32,767 మధ్యలో ఒక పూర్ ఇవ్వండి" + +#: template/defaultfilters.py:401 +msgid "yes,no,maybe" +msgstr "అవును, కాదు , ఏమొ" + diff --git a/django/conf/locale/te/LC_MESSAGES/djangojs.mo b/django/conf/locale/te/LC_MESSAGES/djangojs.mo Binary files differnew file mode 100644 index 0000000000..c7c56427cb --- /dev/null +++ b/django/conf/locale/te/LC_MESSAGES/djangojs.mo diff --git a/django/conf/locale/te/LC_MESSAGES/djangojs.po b/django/conf/locale/te/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..7f392fde25 --- /dev/null +++ b/django/conf/locale/te/LC_MESSAGES/djangojs.po @@ -0,0 +1,110 @@ +# translation of djangojs.po to Telugu +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# pavithran <pavithran.s@gmail.com>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: djangojs\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-09 11:51+0100\n" +"PO-Revision-Date: 2007-03-06 16:08+0530\n" +"Last-Translator: pavithran <pavithran.s@gmail.com>\n" +"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "ఆందుబాతులోఉన్న %s " + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "అన్నీ ఎన్నుకోండి" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "ఙత చేయి" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "తీసివేయండి" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "ఎన్నుకున్న %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "మీ ఇష్టాలు ఎన్నుకోండి" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "అన్ని తీసివేయు" + +#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "ఙాన్వరి ఫిబ్రవరి మార్చి ఎప్రిల్ మే ఙూను ఙులై ఆగష్టు సెప్టెంబర్ అక్టోబర్ నవంబర్ డిసెంబర్" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "ఆదివారము సోమవారము మంగళవారము బుధవారము గురువారము శుక్రవారము శనివారము" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "ఆ సో మం భు గు శు శ" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "ఇప్పుడు" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "గడియారము" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "ఒక సమయము ఎన్నుకోండి" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "ఆర్ధరాత్రి" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "6" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "మధ్యాహ్నము" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "రద్దు చేయు" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "ఈనాడు" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "కాలెండర్" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "నిన్న" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "రేపు" + diff --git a/django/conf/locale/tr/LC_MESSAGES/django.mo b/django/conf/locale/tr/LC_MESSAGES/django.mo Binary files differindex 2415d26ee9..87ac4d05b1 100644 --- a/django/conf/locale/tr/LC_MESSAGES/django.mo +++ b/django/conf/locale/tr/LC_MESSAGES/django.mo diff --git a/django/conf/locale/tr/LC_MESSAGES/django.po b/django/conf/locale/tr/LC_MESSAGES/django.po index daa299ca66..a2c080d8f6 100644 --- a/django/conf/locale/tr/LC_MESSAGES/django.po +++ b/django/conf/locale/tr/LC_MESSAGES/django.po @@ -2,14 +2,15 @@ # Django 0.95 # Copyright (C) 2006 Django # This file is distributed under the same license as the Django package. -# +# +# Can Burak Çilingir <canburak@cs.bilgi.edu.tr>, 2007. (Slight modifications) # Bahadır Kandemir <bahadir@pardus.org.tr>, 2006. msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-10-01 21:09+0300\n" -"PO-Revision-Date: 2006-10-01 21:19+0300\n" +"POT-Creation-Date: 2007-03-14 01:38+0200\n" +"PO-Revision-Date: 2007-03-14 02:06+0200\n" "Last-Translator: Bahadır Kandemir <bahadir@pardus.org.tr>\n" "Language-Team: Turkish <bahadir@pardus.org.tr>\n" "MIME-Version: 1.0\n" @@ -17,74 +18,134 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: db/models/manipulators.py:305 +#: oldforms/__init__.py:357 db/models/fields/__init__.py:116 +#: db/models/fields/__init__.py:273 db/models/fields/__init__.py:609 +#: db/models/fields/__init__.py:620 newforms/models.py:177 +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 +msgid "This field is required." +msgstr "Bu alan gerekli." + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Metnin %s karakterden az olmasına dikkat edin." +msgstr[1] "Metnin %s karakterden az olmasına dikkat edin." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Burada birden fazla satır olamaz." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "" +"Geçerli bir seçimde bulunun; %(choices)s değerleri içinde '%(data)s' yok." + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Bilinmiyor" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Evet" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Hayır" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin." + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Gönderilen dosya boş." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "-32,768 ve 32,767 arası bir sayı girin." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Pozitif tamsayı girin." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "0 ve 32,767 arası bir sayı girin." + +#: db/models/manipulators.py:307 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(type)s ve %(field)s değerine sahip %(object)s kaydı zaten var." -#: db/models/manipulators.py:332 -#, python-format -msgid "" -"Please enter a different %s. The one you entered is already being used for %" -"s." -msgstr "Lütfen farklı bir %s girin. Girdiğiniz, %s tarihinde bir kez kullanılmış." +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "ve" -#: db/models/fields/__init__.py:41 +#: db/models/fields/__init__.py:42 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(fieldname)s için %(optname)s değeri zaten seçilmiş." -#: db/models/fields/__init__.py:115 db/models/fields/__init__.py:266 -#: db/models/fields/__init__.py:560 db/models/fields/__init__.py:571 -#: forms/__init__.py:347 -msgid "This field is required." -msgstr "Bu alan gerekli." - -#: db/models/fields/__init__.py:349 +#: db/models/fields/__init__.py:366 msgid "This value must be an integer." msgstr "Bu değer tamsayı olmalı." -#: db/models/fields/__init__.py:381 +#: db/models/fields/__init__.py:401 msgid "This value must be either True or False." msgstr "Bu değer True ya da False olabilir." -#: db/models/fields/__init__.py:397 +#: db/models/fields/__init__.py:422 msgid "This field cannot be null." msgstr "Bu alan boş bırakılamaz." -#: db/models/fields/__init__.py:424 core/validators.py:146 +#: db/models/fields/__init__.py:456 core/validators.py:148 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "YYYY-AA-GG formatında tarih girin." -#: db/models/fields/__init__.py:486 core/validators.py:155 +#: db/models/fields/__init__.py:525 core/validators.py:157 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "YYYY-AA-GG SS:DD formatında tarih girin." -#: db/models/fields/__init__.py:580 +#: db/models/fields/__init__.py:629 msgid "Enter a valid filename." msgstr "Geçerli bir dosya adı girin." -#: db/models/fields/related.py:51 +#: db/models/fields/__init__.py:750 +msgid "This value must be either None, True or False." +msgstr "Bu değer None, True ya da False olabilir." + +#: db/models/fields/related.py:53 #, python-format msgid "Please enter a valid %s." msgstr "Lütfen geçerli bir %s girin." -#: db/models/fields/related.py:618 +#: db/models/fields/related.py:642 msgid "Separate multiple IDs with commas." msgstr "Birden fazla numarayı virgül ile ayırın." -#: db/models/fields/related.py:620 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "\"Ctrl\" ve Mac'de \"Command\" tuşunu basılı tutarak birden fazla seçimde " "bulunabilirsiniz." -#: db/models/fields/related.py:664 +#: db/models/fields/related.py:691 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Lütfen geçerli bir %(self)s numarası girin. %(value)r değeri geçersiz." -msgstr[1] "Lütfen geçerli %(self)s numaraları girin. %(value)r değerleri geçersiz." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Lütfen geçerli bir %(self)s numarası girin. %(value)r değeri geçersiz." +msgstr[1] "" +"Lütfen geçerli %(self)s numaraları girin. %(value)r değerleri geçersiz." #: conf/global_settings.py:39 msgid "Arabic" @@ -95,233 +156,222 @@ msgid "Bengali" msgstr "Bengali Dili" #: conf/global_settings.py:41 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:42 msgid "Czech" msgstr "Çekçe" -#: conf/global_settings.py:42 +#: conf/global_settings.py:43 msgid "Welsh" msgstr "Galce" -#: conf/global_settings.py:43 +#: conf/global_settings.py:44 msgid "Danish" msgstr "Danca" -#: conf/global_settings.py:44 +#: conf/global_settings.py:45 msgid "German" msgstr "Almanca" -#: conf/global_settings.py:45 +#: conf/global_settings.py:46 msgid "Greek" msgstr "Yunanca" -#: conf/global_settings.py:46 +#: conf/global_settings.py:47 msgid "English" msgstr "İngilizce" -#: conf/global_settings.py:47 +#: conf/global_settings.py:48 msgid "Spanish" msgstr "İspanyolca" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Argentinean Spanish" msgstr "Arjantin İspanyolcası" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Finnish" msgstr "Fince" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "French" msgstr "Fransızca" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "Galician" msgstr "Galler Dili" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Hungarian" msgstr "Macarca" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "Hebrew" msgstr "İbranice" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Icelandic" msgstr "İzlanda dili" -#: conf/global_settings.py:55 +#: conf/global_settings.py:56 msgid "Italian" msgstr "İtalyanca" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Japanese" msgstr "Japonca" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "" + +#: conf/global_settings.py:61 msgid "Dutch" msgstr "Flamanca" -#: conf/global_settings.py:58 +#: conf/global_settings.py:62 msgid "Norwegian" msgstr "Norveç Dili" -#: conf/global_settings.py:59 +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "" + +#: conf/global_settings.py:64 msgid "Brazilian" msgstr "Brezilya Dili" -#: conf/global_settings.py:60 +#: conf/global_settings.py:65 msgid "Romanian" msgstr "Romence" -#: conf/global_settings.py:61 +#: conf/global_settings.py:66 msgid "Russian" msgstr "Rusça" -#: conf/global_settings.py:62 +#: conf/global_settings.py:67 msgid "Slovak" msgstr "Slovakça" -#: conf/global_settings.py:63 +#: conf/global_settings.py:68 msgid "Slovenian" msgstr "Slovence" -#: conf/global_settings.py:64 +#: conf/global_settings.py:69 msgid "Serbian" msgstr "Sırpça" -#: conf/global_settings.py:65 +#: conf/global_settings.py:70 msgid "Swedish" msgstr "İsveççe" -#: conf/global_settings.py:66 +#: conf/global_settings.py:71 msgid "Tamil" msgstr "Tamilce" -#: conf/global_settings.py:67 +#: conf/global_settings.py:72 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:73 msgid "Turkish" msgstr "Türkçe" -#: conf/global_settings.py:68 +#: conf/global_settings.py:74 msgid "Ukrainian" msgstr "Ukraynaca" -#: conf/global_settings.py:69 +#: conf/global_settings.py:75 msgid "Simplified Chinese" msgstr "Basiteştirilmiş Çince" -#: conf/global_settings.py:70 +#: conf/global_settings.py:76 msgid "Traditional Chinese" msgstr "Gelenelsek Çince" -#: forms/__init__.py:382 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Metnin %s karakterden az olmasına dikkat edin." -msgstr[1] "Metnin %s karakterden az olmasına dikkat edin." - -#: forms/__init__.py:387 -msgid "Line breaks are not allowed here." -msgstr "Burada birden fazla satır olamaz." - -#: forms/__init__.py:488 forms/__init__.py:561 forms/__init__.py:600 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Geçerli bir seçimde bulunun; %(choices)s değerleri içinde '%(data)s' yok." - -#: forms/__init__.py:662 core/validators.py:172 core/validators.py:401 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin." - -#: forms/__init__.py:664 -msgid "The submitted file is empty." -msgstr "Gönderilen dosya boş." - -#: forms/__init__.py:720 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "-32,768 ve 32,767 arası bir sayı girin." - -#: forms/__init__.py:730 -msgid "Enter a positive number." -msgstr "Pozitif tamsayı girin." - -#: forms/__init__.py:740 -msgid "Enter a whole number between 0 and 32,767." -msgstr "0 ve 32,767 arası bir sayı girin." - -#: core/validators.py:63 +#: core/validators.py:64 msgid "This value must contain only letters, numbers and underscores." msgstr "Bu değer sadece karakter, rakam ve altçizgiden oluşabilir." -#: core/validators.py:67 +#: core/validators.py:68 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." -msgstr "Bu değer sadece harf, rakam, altçizgi, bölü ve ters bölüden oluşabilir." +msgstr "" +"Bu değer sadece harf, rakam, altçizgi, bölü ve ters bölüden oluşabilir." -#: core/validators.py:71 +#: core/validators.py:72 msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "Bu değer sadece harf, rakam, altçizgi veya çizgiden oluşabilir." -#: core/validators.py:75 +#: core/validators.py:76 msgid "Uppercase letters are not allowed here." msgstr "Burada büyük harf kullanılamaz." -#: core/validators.py:79 +#: core/validators.py:80 msgid "Lowercase letters are not allowed here." msgstr "Burada küçük harf kullanılamaz." -#: core/validators.py:86 +#: core/validators.py:87 msgid "Enter only digits separated by commas." msgstr "Sadece virgülle ayrılmış sayılar girin." -#: core/validators.py:98 +#: core/validators.py:99 msgid "Enter valid e-mail addresses separated by commas." msgstr "Virgülle ayrılmış geçerli e-posta adresleri girin." -#: core/validators.py:102 +#: core/validators.py:103 msgid "Please enter a valid IP address." msgstr "Lütfen geçerli bir IP adresi girin." -#: core/validators.py:106 +#: core/validators.py:107 msgid "Empty values are not allowed here." msgstr "Burada boş değer kullanılamaz." -#: core/validators.py:110 +#: core/validators.py:111 msgid "Non-numeric characters aren't allowed here." msgstr "Burada numerik olmayan karakterler kullanılamaz." -#: core/validators.py:114 +#: core/validators.py:115 msgid "This value can't be comprised solely of digits." msgstr "Bu alanda sadece rakam kullanılamaz." -#: core/validators.py:119 +#: core/validators.py:120 newforms/fields.py:126 msgid "Enter a whole number." msgstr "Sayı girin." -#: core/validators.py:123 +#: core/validators.py:124 msgid "Only alphabetical characters are allowed here." msgstr "Burada sadece alfabetik karakterler kullanılabilir." -#: core/validators.py:138 +#: core/validators.py:139 msgid "Year must be 1900 or later." msgstr "Yıl 1900 ya da sonrası olabilir." -#: core/validators.py:142 +#: core/validators.py:143 #, python-format -msgid "Invalid date: %s." +msgid "Invalid date: %s" msgstr "Geçersiz tarih: %s" -#: core/validators.py:151 +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." msgstr "SS:DD formatında geçerli bir saat girin." -#: core/validators.py:160 +#: core/validators.py:162 newforms/fields.py:269 msgid "Enter a valid e-mail address." msgstr "Geçerli bir e-posta adresi girin." -#: core/validators.py:176 +#: core/validators.py:178 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -329,26 +379,26 @@ msgstr "" "Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir " "dosya." -#: core/validators.py:183 +#: core/validators.py:185 #, python-format msgid "The URL %s does not point to a valid image." msgstr "%s adresi geçerli bir resme işaret etmiyor." -#: core/validators.py:187 +#: core/validators.py:189 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "Telefon numarası XXX-XXX-XXXX formatında olmalı. \"%s\" geçersiz." -#: core/validators.py:195 +#: core/validators.py:197 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "%s adresi geçerli bir QuickTime dosyasına işaret etmiyor." -#: core/validators.py:199 +#: core/validators.py:201 msgid "A valid URL is required." msgstr "Geçerli bir URL gerekli." -#: core/validators.py:213 +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -357,118 +407,140 @@ msgstr "" "Metnin geçerli bir HTML kodu olması gerekir. Hatalar:\n" "%s" -#: core/validators.py:220 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" msgstr "Geçersiz XML kodu: %s" -#: core/validators.py:230 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" msgstr "Geçersiz adres: %s" -#: core/validators.py:234 core/validators.py:236 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." msgstr "%s kırık bir link." -#: core/validators.py:242 +#: core/validators.py:252 msgid "Enter a valid U.S. state abbreviation." msgstr "Geçerli bir şehir kodu girin." -#: core/validators.py:256 +#: core/validators.py:266 #, 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öylediğinize dikkat edin! %s kelimesi burada kullanılamaz." msgstr[1] "Söylediğinize dikkat edin! %s kelimeleri burada kullanılamaz." -#: core/validators.py:263 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." msgstr "Bu alan '%s' ile alanı ile uyuşmalı." -#: core/validators.py:282 +#: core/validators.py:292 msgid "Please enter something for at least one field." msgstr "Lütfen en az bir alana giriş yapın." -#: core/validators.py:291 core/validators.py:302 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." msgstr "Lütfen tüm alanları doldurun ya da hepsini boş bırakın." -#: core/validators.py:309 +#: core/validators.py:320 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Bu alan %(field)s alanı %(value)s değerine sahipse doldurulmalı." -#: core/validators.py:321 +#: core/validators.py:333 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Bu alan %(field)s alanı %(value)s değerine sahip değilse doldurulmalı." -#: core/validators.py:340 +#: core/validators.py:352 msgid "Duplicate values are not allowed." msgstr "Tekrarlanan değerler kabul edilmez." -#: core/validators.py:363 +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Bu değer %(lower)s ve %(upper)s arasında olabilir." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Bu değer en az %s olabilir." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "" + +#: core/validators.py:407 #, python-format msgid "This value must be a power of %s." msgstr "Bu değer %s ya da kuvvetleri olabilir." -#: core/validators.py:374 +#: core/validators.py:418 msgid "Please enter a valid decimal number." msgstr "Lütfen geçerli bir ondalık sayı girin." -#: core/validators.py:378 +#: core/validators.py:422 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." msgstr[0] "Lütfen en fazla %s basamaklı bir ondalık sayı girin." msgstr[1] "Lütfen en fazla %s basamaklı bir ondalık sayı girin." -#: core/validators.py:381 +#: core/validators.py:425 #, python-format -msgid "Please enter a valid decimal number with a whole part of at most %s digit." -msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." msgstr[0] "Lütfen tamsayı kısmı en fazla %s basamaklı bir ondalık sayı girin." msgstr[1] "Lütfen tamsayı kısmı en fazla %s basamaklı bir ondalık sayı girin." -#: core/validators.py:384 +#: core/validators.py:428 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin." -msgstr[1] "Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin." +msgstr[1] "" +"Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin." -#: core/validators.py:394 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Gönderdiğiniz dosyanın en az %s byte uzunlukta olduğundan emin olun." -#: core/validators.py:395 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Gönderdiğiniz dosyanın en fazl %s byte uzunlukta olduğundan emin olun." -#: core/validators.py:412 +#: core/validators.py:456 msgid "The format for this field is wrong." msgstr "Bu alandaki veri formatı hatalı." -#: core/validators.py:427 +#: core/validators.py:471 msgid "This field is invalid." msgstr "Alan geçersiz." -#: core/validators.py:463 +#: core/validators.py:507 #, python-format msgid "Could not retrieve anything from %s." msgstr "%s içinden hiçbirşey aktarılamıyor." -#: core/validators.py:466 +#: core/validators.py:510 #, 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)s adresi geçersiz içerik türü (%(contenttype)s) gönderdi." -#: core/validators.py:499 +#: core/validators.py:543 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -477,7 +549,7 @@ msgstr "" "Lütfen %(line)s. satırdaki kapatılmayan %(tag)s etiketini kapatın. (Satır, " "\"%(start)s\" ile başlıyor.)" -#: core/validators.py:503 +#: core/validators.py:547 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -486,7 +558,7 @@ msgstr "" "%(line)s. satırda başlayan bazı kelimeler içerik olarak kabul edilmiyor. " "(Satır, \"%(start)s\" ile başlıyor.)" -#: core/validators.py:508 +#: core/validators.py:552 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -495,7 +567,7 @@ msgstr "" "%(line)s. satırdaki \"%(attr)s\" özelliği geçersiz. (Satır, \"%(start)s\" " "ile başlıyor.)" -#: core/validators.py:513 +#: core/validators.py:557 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -504,7 +576,7 @@ msgstr "" "%(line)s. satırdaki \"<%(tag)s>\" etiketi geçersiz. (Satır, \"%(start)s\" " "ile başlıyor.)" -#: core/validators.py:517 +#: core/validators.py:561 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -513,7 +585,7 @@ msgstr "" "%(line)s. satırdaki bir etiket eksik ya da eklenmesi gereken özellikleri " "var. (Satır, \"%(start)s\" ile başlıyor.)" -#: core/validators.py:522 +#: core/validators.py:566 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " @@ -537,407 +609,135 @@ msgstr "%(verbose_name)s başarıyla güncellendi." msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s silindi." -#: utils/dates.py:6 -msgid "Monday" -msgstr "Pazartesi" - -#: utils/dates.py:6 -msgid "Tuesday" -msgstr "Salı" - -#: utils/dates.py:6 -msgid "Wednesday" -msgstr "Çarşamba" - -#: utils/dates.py:6 -msgid "Thursday" -msgstr "Perşembe" - -#: utils/dates.py:6 -msgid "Friday" -msgstr "Cuma" - -#: utils/dates.py:7 -msgid "Saturday" -msgstr "Cumartesi" - -#: utils/dates.py:7 -msgid "Sunday" -msgstr "Pazar" - -#: utils/dates.py:14 -msgid "January" -msgstr "Ocak" - -#: utils/dates.py:14 -msgid "February" -msgstr "Şubat" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "March" -msgstr "Mart" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "April" -msgstr "Nisan" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "May" -msgstr "Mayıs" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "June" -msgstr "Haziran" - -#: utils/dates.py:15 utils/dates.py:27 -msgid "July" -msgstr "Temmuz" - -#: utils/dates.py:15 -msgid "August" -msgstr "Ağustos" - -#: utils/dates.py:15 -msgid "September" -msgstr "Eylül" - -#: utils/dates.py:15 -msgid "October" -msgstr "Ekim" - -#: utils/dates.py:15 -msgid "November" -msgstr "Kasım" - -#: utils/dates.py:16 -msgid "December" -msgstr "Aralık" +#: newforms/models.py:164 newforms/fields.py:360 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Geçerli bir seçimde bulunun; seçiminiz mevcut değerlerden birisi değil." -#: utils/dates.py:19 -msgid "jan" -msgstr "oca" - -#: utils/dates.py:19 -msgid "feb" -msgstr "şub" - -#: utils/dates.py:19 -msgid "mar" -msgstr "mar" - -#: utils/dates.py:19 -msgid "apr" -msgstr "nis" - -#: utils/dates.py:19 -msgid "may" -msgstr "may" - -#: utils/dates.py:19 -msgid "jun" -msgstr "haz" - -#: utils/dates.py:20 -msgid "jul" -msgstr "tem" - -#: utils/dates.py:20 -msgid "aug" -msgstr "ağu" - -#: utils/dates.py:20 -msgid "sep" -msgstr "eyl" - -#: utils/dates.py:20 -msgid "oct" -msgstr "eki" - -#: utils/dates.py:20 -msgid "nov" -msgstr "kas" - -#: utils/dates.py:20 -msgid "dec" -msgstr "ara" - -#: utils/dates.py:27 -msgid "Jan." -msgstr "Oca." - -#: utils/dates.py:27 -msgid "Feb." -msgstr "Şub." - -#: utils/dates.py:28 -msgid "Aug." -msgstr "Ağu." - -#: utils/dates.py:28 -msgid "Sept." -msgstr "Eyl." - -#: utils/dates.py:28 -msgid "Oct." -msgstr "Eki." - -#: utils/dates.py:28 -msgid "Nov." -msgstr "Kas." - -#: utils/dates.py:28 -msgid "Dec." -msgstr "Ara." - -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "yıl" -msgstr[1] "yıl" - -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "ay" -msgstr[1] "ay" - -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "hafta" -msgstr[1] "hafta" - -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "gün" -msgstr[1] "gün" - -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "saat" -msgstr[1] "saat" - -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "dakika" -msgstr[1] "dakika" - -#: utils/translation/trans_real.py:362 -msgid "DATE_FORMAT" -msgstr "DATE_FORMAT" - -#: utils/translation/trans_real.py:363 -msgid "DATETIME_FORMAT" -msgstr "DATETIME_FORMAT" - -#: utils/translation/trans_real.py:364 -msgid "TIME_FORMAT" -msgstr "TIME_FORMAT" - -#: utils/translation/trans_real.py:380 -msgid "YEAR_MONTH_FORMAT" -msgstr "YEAR_MONTH_FORMAT" - -#: utils/translation/trans_real.py:381 -msgid "MONTH_DAY_FORMAT" -msgstr "MONTH_DAY_FORMAT" - -#: contrib/contenttypes/models.py:20 -msgid "python model class name" -msgstr "python model sınıfı" - -#: contrib/contenttypes/models.py:23 -msgid "content type" -msgstr "içerik türü" - -#: contrib/contenttypes/models.py:24 -msgid "content types" -msgstr "içerik türleri" - -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "Çıkış yapıldı" - -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "isim" - -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "takma ad" - -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "izin" - -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "izinler" +#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454 +msgid "Enter a list of values." +msgstr "" -#: contrib/auth/models.py:60 -msgid "group" -msgstr "grup" +#: newforms/models.py:187 newforms/fields.py:387 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Geçerli bir seçimde bulunun; %s mevcut değerlerden biri değil." -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "gruplar" +#: newforms/fields.py:101 newforms/fields.py:254 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Bu değer en fazla %d karakter olabilir." -#: contrib/auth/models.py:90 -msgid "username" -msgstr "kullanıcı adı" +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Bu değer en az %d arakter olabilir." -#: contrib/auth/models.py:90 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." +#: newforms/fields.py:128 +#, python-format +msgid "Ensure this value is less than or equal to %s." msgstr "" -"Gerekli. 30 karakter ya da da az olmalı. Alfanumerik (harf, rakam ve alt " -"çizgi) karakterler kullanılabilir." - -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "isim" -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "soyisim" +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "" -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "e-posta adresi" +#: newforms/fields.py:163 +msgid "Enter a valid date." +msgstr "Geçerli bir tarih girin." -#: contrib/auth/models.py:94 -msgid "password" -msgstr "parola" +#: newforms/fields.py:190 +msgid "Enter a valid time." +msgstr "" -#: contrib/auth/models.py:94 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "'[algo]$[salt]$[hexdigest]' formatında" +#: newforms/fields.py:226 +msgid "Enter a valid date/time." +msgstr "" -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "yönetici modu" +#: newforms/fields.py:240 +msgid "Enter a valid value." +msgstr "Geçerli bir değer girin." -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Kullanıcının yönetici sayfasına girip giremeyeceğini belirler." +#: newforms/fields.py:287 newforms/fields.py:309 +msgid "Enter a valid URL." +msgstr "Geçerli bir URL girin." -#: contrib/auth/models.py:96 -msgid "active" -msgstr "aktif" +#: newforms/fields.py:311 +msgid "This URL appears to be a broken link." +msgstr "Bu URL kırık bir link gibi duruyor." -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" msgstr "" -"Kullanıcının Django yönetim sayfasına girip giremeyeceğini belirler. " -"Kullanıcı hesabı silmek yerine işareti kaldırın." -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "süper kullanıcı modu" - -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" msgstr "" -"Kullanıcının tek tek hak atamasına gerek kalmadan tüm haklara sahip olup " -"olamayacağını belirler." - -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "son ziyaret" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "kayıt tarihi" -#: contrib/auth/models.py:101 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" msgstr "" -"Özel olarak atanmış hakların yanı sıra, kullanıcının üyesi olduğu grupların " -"hakları alır." -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "kullanıcı izinleri" - -#: contrib/auth/models.py:105 -msgid "user" -msgstr "kullanıcı" - -#: contrib/auth/models.py:106 -msgid "users" -msgstr "kullanıcılar" - -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Kişisel bilgiler" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "" -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "İzinler" +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Önemli tarihler" +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Gruplar" +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" -#: contrib/auth/models.py:258 -msgid "message" -msgstr "mesaj" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "bir" -#: contrib/auth/forms.py:16 -msgid "The two password fields didn't match." -msgstr "İki parola alanı uyuşmuyor." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "iki" -#: contrib/auth/forms.py:24 -msgid "A user with that username already exists." -msgstr "Bu isimde bir kullanıcı zaten var." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "üç" -#: contrib/auth/forms.py:52 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için " -"gerekli." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "dört" -#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Lütfen geçerli bir kullanıcı adı ve parola girin. Tüm alanlar büyük/küçük " -"harf duyarlıdır." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "beş" -#: contrib/auth/forms.py:61 -msgid "This account is inactive." -msgstr "Bu hesap aktif değil." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "altı" -#: contrib/auth/forms.py:84 -msgid "" -"That e-mail address doesn't have an associated user acount. Are you sure " -"you've registered?" -msgstr "Bu e-posta hesabıyla ilişkili kullanıcı bulunmuyor. Kayıtlı olduğunuzdan emin misiniz?" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "yedi" -#: contrib/auth/forms.py:116 -msgid "The two 'new password' fields didn't match." -msgstr "İki parola alanı uyuşmuyor." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "sekiz" -#: contrib/auth/forms.py:123 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "Eski parolanız hatalı. Lütfen tekrar girin." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "dokuz" #: contrib/redirects/models.py:7 msgid "redirect from" @@ -1166,7 +966,8 @@ msgid "No voting for yourself" msgstr "Kendinize oy veremezsiniz" #: contrib/comments/views/comments.py:27 -msgid "This rating is required because you've entered at least one other rating." +msgid "" +"This rating is required because you've entered at least one other rating." msgstr "Reyting gerekli, çünkü en az bir reyting tanımladınız." #: contrib/comments/views/comments.py:111 @@ -1216,14 +1017,16 @@ msgstr "Bir ya da daha fazla gerekli alan doldurulmadı" #: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Birisi yorum gönderme formunu kötüye kullanmaya çalıştı (güvenlik ihlali)" +msgstr "" +"Birisi yorum gönderme formunu kötüye kullanmaya çalıştı (güvenlik ihlali)" #: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" -msgstr "Bu yorumun geçersiz bir 'hedef' parametresi var -- nesne narası geçersiz" +msgstr "" +"Bu yorumun geçersiz bir 'hedef' parametresi var -- nesne narası geçersiz" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 @@ -1242,6 +1045,7 @@ msgstr "Kullanıcı:" #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/view_detail.html:4 @@ -1298,76 +1102,6 @@ msgstr "Yorumu görüntüle" msgid "Your name:" msgstr "İsminiz:" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 -msgid "URL" -msgstr "URL" - -#: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin " -"olun." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "başlık" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "içerik" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "yorumlara izin ver" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "şablon adı" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem " -"otomatik olarak 'flatpages/default.html' kullanacak." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "kayıt gerekli" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Bu seçili ise, sadece kayıtlı kullanıcılar sayfayı görüntüleyebilir." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "düz sayfa" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "düz sayfalar" - -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "oturum anahtarı" - -#: contrib/sessions/models.py:52 -msgid "session data" -msgstr "oturum bilgisi" - -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "bitiş tarihi" - -#: contrib/sessions/models.py:57 -msgid "session" -msgstr "oturum" - -#: contrib/sessions/models.py:58 -msgid "sessions" -msgstr "oturumlar" - #: contrib/sites/models.py:10 msgid "domain name" msgstr "alan adı" @@ -1418,18 +1152,6 @@ msgstr "Bu ay" msgid "This year" msgstr "Bu yıl" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Evet" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Hayır" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Bilinmiyor" - #: contrib/admin/models.py:16 msgid "action time" msgstr "işlem zamanı" @@ -1458,24 +1180,33 @@ msgstr "girişi kaydet" msgid "log entries" msgstr "girişleri kaydet" -#: contrib/admin/templatetags/admin_list.py:230 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Tüm tarihler" -#: contrib/admin/views/auth.py:17 contrib/admin/views/main.py:257 +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "\"%(obj)s\" isimli %(name)s eklendi." -#: contrib/admin/views/auth.py:22 contrib/admin/views/main.py:261 +#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261 #: contrib/admin/views/main.py:347 msgid "You may edit it again below." msgstr "Tekrar düzenleyebilirsiniz." -#: contrib/admin/views/auth.py:28 +#: contrib/admin/views/auth.py:30 msgid "Add user" msgstr "Kullanıcı ekle" +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Parola başarı ile değiştirildi." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Parola değiştir: %s" + #: contrib/admin/views/main.py:223 msgid "Site administration" msgstr "Site yönetimi" @@ -1495,11 +1226,6 @@ msgstr "%s ekle" msgid "Added %s." msgstr "%s eklendi." -#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 -#: contrib/admin/views/main.py:339 -msgid "and" -msgstr "ve" - #: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." @@ -1521,52 +1247,62 @@ msgstr "\"%(obj)s\" isimli %(name)s değiştirildi." #: contrib/admin/views/main.py:353 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz." #: contrib/admin/views/main.py:391 #, python-format msgid "Change %s" msgstr "%s değiştir" -#: contrib/admin/views/main.py:473 +#: contrib/admin/views/main.py:476 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s: %(obj)s" -#: contrib/admin/views/main.py:478 +#: contrib/admin/views/main.py:481 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s:" -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:514 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "\"%(obj)s\" isimli %(name)s silindi." -#: contrib/admin/views/main.py:514 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" msgstr "Emin misiniz?" -#: contrib/admin/views/main.py:536 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" msgstr "%s için değişiklik geçmişi:" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "%s seç" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "Değiştirilecek %s nesnesini seçin" -#: contrib/admin/views/main.py:758 +#: contrib/admin/views/main.py:768 msgid "Database error" msgstr "Veritabanı hatası" +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Lütfen geçerli bir kullanıcı adı ve parola girin. Tüm alanlar büyük/küçük " +"harf duyarlıdır." + #: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" @@ -1619,13 +1355,13 @@ msgstr "%r uygulaması bulunamadı" #: contrib/admin/views/doc.py:171 #, python-format -msgid "Model %r not found in app %r" -msgstr "%r modeli %r uygulamasında bulunamadı" +msgid "Model %(name)r not found in app %(label)r" +msgstr "%(name)r modeli %(label)r uygulamasında bulunamadı" #: contrib/admin/views/doc.py:183 #, python-format -msgid "the related `%s.%s` object" -msgstr "ilgili `%s.%s` nesnesi" +msgid "the related `%(label)s.%(type)s` object" +msgstr "ilgili `%(label)s.%(type)s` nesnesi" #: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 #: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 @@ -1634,8 +1370,8 @@ msgstr "model:" #: contrib/admin/views/doc.py:214 #, python-format -msgid "related `%s.%s` objects" -msgstr "ilgili `%s.%s` nesneleri" +msgid "related `%(label)s.%(name)s` objects" +msgstr "ilgili `%(label)s.%(name)s` nesneleri" #: contrib/admin/views/doc.py:219 #, python-format @@ -1712,6 +1448,10 @@ msgstr "Metin" msgid "Time" msgstr "Saat" +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + #: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" msgstr "Şehir Kodu (iki karakter)" @@ -1746,17 +1486,21 @@ msgstr "Saat:" #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" -msgstr "Dökümantasyon" +msgstr "Dokümantasyon" #: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/view_detail.html:4 @@ -1779,6 +1523,7 @@ msgstr "Parola değiştir" #: contrib/admin/templates/admin/change_form.html:13 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/logged_out.html:4 @@ -1788,7 +1533,7 @@ msgstr "Parola değiştir" msgid "Home" msgstr "Anasayfa" -#: contrib/admin/templates/admin/change_list.html:11 +#: contrib/admin/templates/admin/change_list.html:12 #, python-format msgid "Add %(name)s" msgstr "%(name)s Ekle" @@ -1799,7 +1544,7 @@ msgid " By %(filter_title)s " msgstr " %(filter_title)s nesnesine göre " #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/change_form.html:21 msgid "History" msgstr "Geçmiş" @@ -1933,28 +1678,25 @@ msgstr "Üzgünüm, aradığınız sayfa bulunamadı." msgid "Filter" msgstr "Filtrele" -#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" msgstr "Sitede görüntüle" -#: contrib/admin/templates/admin/change_form.html:30 +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Lütfen aşağıdaki hatayı düzeltin." msgstr[1] "Lütfen aşağıdaki hataları düzeltin." -#: contrib/admin/templates/admin/change_form.html:48 +#: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" msgstr "Sıralama:" -#: contrib/admin/templates/admin/change_form.html:51 +#: contrib/admin/templates/admin/change_form.html:53 msgid "Order:" msgstr "Sıra:" -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" -msgstr "<a href=\"/password_reset/\">Şifrenizi mi unuttunuz?</a>" - #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" @@ -2004,28 +1746,38 @@ msgstr "Kaydet ve düzenlemeye devam et" msgid "Save" msgstr "Kaydet" -#: contrib/admin/templates/admin/auth/user/add_form.html:6 -msgid "" -"First, enter a username and password. Then, you'll be able to edit more user " -"options." -msgstr "Önce bir kullanıcı adı ve parola girin. Daha sonra daha fazla bilgi girebilirsiniz." - -#: contrib/admin/templates/admin/auth/user/add_form.html:12 -msgid "Username" -msgstr "Kullanıcı" +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user <strong>%(username)s</strong>." +msgstr "<strong>%(username)s</strong> için yeni parola girin." +#: contrib/admin/templates/admin/auth/user/change_password.html:34 #: contrib/admin/templates/admin/auth/user/add_form.html:18 msgid "Password" msgstr "Parola" +#: contrib/admin/templates/admin/auth/user/change_password.html:39 #: contrib/admin/templates/admin/auth/user/add_form.html:23 msgid "Password (again)" msgstr "Parola (tekrar)" +#: contrib/admin/templates/admin/auth/user/change_password.html:40 #: contrib/admin/templates/admin/auth/user/add_form.html:24 msgid "Enter the same password as above, for verification." msgstr "Onaylamak için, yukarıdaki parolanın aynısını girin." +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Önce bir kullanıcı adı ve parola girin. Daha sonra daha fazla bilgi " +"girebilirsiniz." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Kullanıcı" + #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 @@ -2149,7 +1901,7 @@ msgstr "Kısayollar" #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" -msgstr "Döküman kısayolları" +msgstr "Doküman kısayolları" #: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" @@ -2169,13 +1921,13 @@ msgstr "" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" -msgstr "Bu sayfa için dökümantasyon" +msgstr "Bu sayfa için dokümantasyon" #: contrib/admin/templates/admin_doc/bookmarklets.html:20 msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." -msgstr "Sizi, bu sayfayı üreten betiğin dökümantasyonuna yönlendirir." +msgstr "Sizi, bu sayfayı üreten betiğin dokümantasyonuna yönlendirir." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" @@ -2185,7 +1937,8 @@ msgstr "Nesne numarasını göster" msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." -msgstr "Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir." +msgstr "" +"Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" @@ -2203,7 +1956,515 @@ msgstr "Nesneyi düzenle (yeni pencerede)" msgid "As above, but opens the admin page in a new window." msgstr "Yukarıdaki gibi, ancak yönetim sayfasını yeni bir pencerede açar." -#: template/defaultfilters.py:401 +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "python model sınıfı" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "içerik türü" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "içerik türleri" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Çıkış yapıldı" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "isim" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "takma ad" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "izin" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "izinler" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "grup" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "gruplar" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "kullanıcı adı" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Gerekli. 30 karakter ya da da az olmalı. Alfanumerik (harf, rakam ve alt " +"çizgi) karakterler kullanılabilir." + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "isim" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "soyisim" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "e-posta adresi" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "parola" + +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change " +"password form</a>." +msgstr "" + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "yönetici modu" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Kullanıcının yönetici sayfasına girip giremeyeceğini belirler." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "aktif" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Kullanıcının Django yönetim sayfasına girip giremeyeceğini belirler. " +"Kullanıcı hesabı silmek yerine işareti kaldırın." + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "süper kullanıcı modu" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Kullanıcının tek tek hak atamasına gerek kalmadan tüm haklara sahip olup " +"olamayacağını belirler." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "son ziyaret" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "kayıt tarihi" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Özel olarak atanmış hakların yanı sıra, kullanıcının üyesi olduğu grupların " +"hakları alır." + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "kullanıcı izinleri" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "kullanıcı" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "kullanıcılar" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Kişisel bilgiler" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "İzinler" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Önemli tarihler" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Gruplar" + +#: contrib/auth/models.py:258 +msgid "message" +msgstr "mesaj" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "İki parola alanı uyuşmuyor." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Bu isimde bir kullanıcı zaten var." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için " +"gerekli." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Bu hesap aktif değil." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Bu e-posta hesabıyla ilişkili kullanıcı bulunmuyor. Kayıtlı olduğunuzdan " +"emin misiniz?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "İki parola alanı uyuşmuyor." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Eski parolanız hatalı. Lütfen tekrar girin." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Posta kodu girin. Posta kodunun iki kısmı arasında bir boşluk bırakın." + +#: contrib/localflavor/usa/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/sessions/models.py:51 +msgid "session key" +msgstr "oturum anahtarı" + +#: contrib/sessions/models.py:52 +msgid "session data" +msgstr "oturum bilgisi" + +#: contrib/sessions/models.py:53 +msgid "expire date" +msgstr "bitiş tarihi" + +#: contrib/sessions/models.py:57 +msgid "session" +msgstr "oturum" + +#: contrib/sessions/models.py:58 +msgid "sessions" +msgstr "oturumlar" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin " +"olun." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "başlık" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "içerik" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "yorumlara izin ver" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "şablon adı" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem " +"otomatik olarak 'flatpages/default.html' kullanacak." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "kayıt gerekli" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Bu seçili ise, sadece kayıtlı kullanıcılar sayfayı görüntüleyebilir." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "düz sayfa" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "düz sayfalar" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Pazartesi" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Salı" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Çarşamba" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Perşembe" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Cuma" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Cumartesi" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Pazar" + +#: utils/dates.py:14 +msgid "January" +msgstr "Ocak" + +#: utils/dates.py:14 +msgid "February" +msgstr "Şubat" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "Mart" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "Nisan" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "Mayıs" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "Haziran" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "Temmuz" + +#: utils/dates.py:15 +msgid "August" +msgstr "Ağustos" + +#: utils/dates.py:15 +msgid "September" +msgstr "Eylül" + +#: utils/dates.py:15 +msgid "October" +msgstr "Ekim" + +#: utils/dates.py:15 +msgid "November" +msgstr "Kasım" + +#: utils/dates.py:16 +msgid "December" +msgstr "Aralık" + +#: utils/dates.py:19 +msgid "jan" +msgstr "oca" + +#: utils/dates.py:19 +msgid "feb" +msgstr "şub" + +#: utils/dates.py:19 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:19 +msgid "apr" +msgstr "nis" + +#: utils/dates.py:19 +msgid "may" +msgstr "may" + +#: utils/dates.py:19 +msgid "jun" +msgstr "haz" + +#: utils/dates.py:20 +msgid "jul" +msgstr "tem" + +#: utils/dates.py:20 +msgid "aug" +msgstr "ağu" + +#: utils/dates.py:20 +msgid "sep" +msgstr "eyl" + +#: utils/dates.py:20 +msgid "oct" +msgstr "eki" + +#: utils/dates.py:20 +msgid "nov" +msgstr "kas" + +#: utils/dates.py:20 +msgid "dec" +msgstr "ara" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "Oca." + +#: utils/dates.py:27 +msgid "Feb." +msgstr "Şub." + +#: utils/dates.py:28 +msgid "Aug." +msgstr "Ağu." + +#: utils/dates.py:28 +msgid "Sept." +msgstr "Eyl." + +#: utils/dates.py:28 +msgid "Oct." +msgstr "Eki." + +#: utils/dates.py:28 +msgid "Nov." +msgstr "Kas." + +#: utils/dates.py:28 +msgid "Dec." +msgstr "Ara." + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "yıl" +msgstr[1] "yıl" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "ay" +msgstr[1] "ay" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "hafta" +msgstr[1] "hafta" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "gün" +msgstr[1] "gün" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "saat" +msgstr[1] "saat" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "dakika" +msgstr[1] "dakika" + +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "" + +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "DATE_FORMAT" + +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "DATETIME_FORMAT" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "TIME_FORMAT" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "YEAR_MONTH_FORMAT" + +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" +msgstr "MONTH_DAY_FORMAT" + +#: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "evet,hayır,olabilir" +#~ msgid "" +#~ "Please enter a different %s. The one you entered is already being used " +#~ "for %s." +#~ msgstr "" +#~ "Lütfen farklı bir %s girin. Girdiğiniz, %s tarihinde bir kez kullanılmış." + +#~ msgid "Use '[algo]$[salt]$[hexdigest]'" +#~ msgstr "'[algo]$[salt]$[hexdigest]' formatında" + +#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" +#~ msgstr "<a href=\"/password_reset/\">Şifrenizi mi unuttunuz?</a>" diff --git a/django/conf/project_template/settings.py b/django/conf/project_template/settings.py index d36553b84d..cadb5146b7 100644 --- a/django/conf/project_template/settings.py +++ b/django/conf/project_template/settings.py @@ -16,8 +16,9 @@ DATABASE_PASSWORD = '' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. -# Local time zone for this installation. All choices can be found here: +# Local time zone for this installation. Choices can be found here: # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE +# although not all variations may be possible on all operating systems. # If running in a Windows environment this must be set to the same as your # system time zone. TIME_ZONE = 'America/Chicago' diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py index fcb5876b0c..e708b876bd 100644 --- a/django/contrib/admin/templatetags/admin_modify.py +++ b/django/contrib/admin/templatetags/admin_modify.py @@ -11,6 +11,7 @@ import re register = template.Library() word_re = re.compile('[A-Z][a-z]+') +absolute_url_re = re.compile(r'^(?:http(?:s)?:/)?/', re.IGNORECASE) def class_name_to_underscored(name): return '_'.join([s.lower() for s in word_re.findall(name)[:-1]]) @@ -18,18 +19,19 @@ def class_name_to_underscored(name): def include_admin_script(script_path): """ Returns an HTML script element for including a script from the admin - media url. + media url (or other location if an absolute url is given). Example usage:: - {% include_admin_script js/calendar.js %} + {% include_admin_script "js/calendar.js" %} could return:: <script type="text/javascript" src="/media/admin/js/calendar.js"> """ - - return '<script type="text/javascript" src="%s%s"></script>' % (settings.ADMIN_MEDIA_PREFIX, script_path) + if not absolute_url_re.match(script_path): + script_path = '%s%s' % (settings.ADMIN_MEDIA_PREFIX, script_path) + return '<script type="text/javascript" src="%s"></script>' % script_path include_admin_script = register.simple_tag(include_admin_script) def submit_row(context): diff --git a/django/contrib/admin/views/doc.py b/django/contrib/admin/views/doc.py index 4b592acebd..6adfb57c92 100644 --- a/django/contrib/admin/views/doc.py +++ b/django/contrib/admin/views/doc.py @@ -168,7 +168,7 @@ def model_detail(request, app_label, model_name): model = m break if model is None: - raise Http404, _("Model %r not found in app %r") % (model_name, app_label) + raise Http404, _("Model %(name)r not found in app %(label)r") % {'name': model_name, 'label': app_label} opts = model._meta @@ -180,7 +180,7 @@ def model_detail(request, app_label, model_name): if isinstance(field, models.ForeignKey): data_type = related_object_name = field.rel.to.__name__ app_label = field.rel.to._meta.app_label - verbose = utils.parse_rst((_("the related `%s.%s` object") % (app_label, data_type)), 'model', _('model:') + data_type) + verbose = utils.parse_rst((_("the related `%(label)s.%(type)s` object") % {'label': app_label, 'type': data_type}), 'model', _('model:') + data_type) else: data_type = get_readable_field_data_type(field) verbose = field.verbose_name @@ -211,7 +211,7 @@ def model_detail(request, app_label, model_name): # Gather related objects for rel in opts.get_all_related_objects(): - verbose = _("related `%s.%s` objects") % (rel.opts.app_label, rel.opts.object_name) + verbose = _("related `%(label)s.%(name)s` objects") % {'label': rel.opts.app_label, 'name': rel.opts.object_name} accessor = rel.get_accessor_name() fields.append({ 'name' : "%s.all" % accessor, diff --git a/django/contrib/contenttypes/management.py b/django/contrib/contenttypes/management.py index f492f54303..3572d93049 100644 --- a/django/contrib/contenttypes/management.py +++ b/django/contrib/contenttypes/management.py @@ -7,6 +7,7 @@ from django.db.models import get_apps, get_models, signals def create_contenttypes(app, created_models, verbosity=2): from django.contrib.contenttypes.models import ContentType + ContentType.objects.clear_cache() app_models = get_models(app) if not app_models: return diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py index 3384134cb2..0a5e68f37e 100644 --- a/django/contrib/contenttypes/models.py +++ b/django/contrib/contenttypes/models.py @@ -19,6 +19,16 @@ class ContentTypeManager(models.Manager): model=key[1], defaults={'name': str(opts.verbose_name)}) CONTENT_TYPE_CACHE[key] = ct return ct + + def clear_cache(self): + """ + Clear out the content-type cache. This needs to happen during database + flushes to prevent caching of "stale" content type IDs (see + django.contrib.contenttypes.management.create_contenttypes for where + this gets called). + """ + global CONTENT_TYPE_CACHE + CONTENT_TYPE_CACHE = {} class ContentType(models.Model): name = models.CharField(maxlength=100) diff --git a/django/contrib/formtools/templates/formtools/form.html b/django/contrib/formtools/templates/formtools/form.html index 90da8b2b2b..194bbdd675 100644 --- a/django/contrib/formtools/templates/formtools/form.html +++ b/django/contrib/formtools/templates/formtools/form.html @@ -9,7 +9,7 @@ {{ form }} </table> <input type="hidden" name="{{ stage_field }}" value="1" /> -<p><input type="submit" value="Submit" /></p> +<p><input type="submit" value="Preview" /></p> </form> {% endblock %} diff --git a/django/contrib/formtools/templates/formtools/preview.html b/django/contrib/formtools/templates/formtools/preview.html index c7955d46e1..983115758f 100644 --- a/django/contrib/formtools/templates/formtools/preview.html +++ b/django/contrib/formtools/templates/formtools/preview.html @@ -7,7 +7,7 @@ <table> {% for field in form %} <tr> -<th>{{ field.verbose_name }}:</th> +<th>{{ field.label }}:</th> <td>{{ field.data|escape }}</td> </tr> {% endfor %} @@ -30,7 +30,7 @@ {{ form }} </table> <input type="hidden" name="{{ stage_field }}" value="1" /> -<p><input type="submit" value="Submit changes" /></p> +<p><input type="submit" value="Preview" /></p> </form> {% endblock %} diff --git a/django/contrib/humanize/templatetags/humanize.py b/django/contrib/humanize/templatetags/humanize.py index b2d28a0ab4..a399e7eef1 100644 --- a/django/contrib/humanize/templatetags/humanize.py +++ b/django/contrib/humanize/templatetags/humanize.py @@ -1,3 +1,5 @@ +from django.utils.translation import ngettext +from django.utils.translation import gettext_lazy as _ from django import template import re @@ -12,9 +14,9 @@ def ordinal(value): value = int(value) except ValueError: return value - t = ('th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th') + t = (_('th'), _('st'), _('nd'), _('rd'), _('th'), _('th'), _('th'), _('th'), _('th'), _('th')) if value % 100 in (11, 12, 13): # special case - return '%dth' % value + return "%d%s" % (value, t[0]) return '%d%s' % (value, t[value % 10]) register.filter(ordinal) @@ -41,11 +43,14 @@ def intword(value): if value < 1000000: return value if value < 1000000000: - return '%.1f million' % (value / 1000000.0) + new_value = value / 1000000.0 + return ngettext('%(value).1f million', '%(value).1f million', new_value) % {'value': new_value} if value < 1000000000000: - return '%.1f billion' % (value / 1000000000.0) + new_value = value / 1000000000.0 + return ngettext('%(value).1f billion', '%(value).1f billion', new_value) % {'value': new_value} if value < 1000000000000000: - return '%.1f trillion' % (value / 1000000000000.0) + new_value = value / 1000000000000.0 + return ngettext('%(value).1f trillion', '%(value).1f trillion', new_value) % {'value': new_value} return value register.filter(intword) @@ -60,5 +65,5 @@ def apnumber(value): return value if not 0 < value < 10: return value - return ('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine')[value-1] + return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value-1] register.filter(apnumber) diff --git a/django/contrib/sessions/middleware.py b/django/contrib/sessions/middleware.py index 728caa7e19..1498f3c8ba 100644 --- a/django/contrib/sessions/middleware.py +++ b/django/contrib/sessions/middleware.py @@ -10,6 +10,7 @@ TEST_COOKIE_VALUE = 'worked' class SessionWrapper(object): def __init__(self, session_key): self.session_key = session_key + self.accessed = False self.modified = False def __contains__(self, key): @@ -46,6 +47,7 @@ class SessionWrapper(object): def _get_session(self): # Lazily loads session from storage. + self.accessed = True try: return self._session_cache except AttributeError: @@ -72,14 +74,21 @@ class SessionMiddleware(object): def process_response(self, request, response): # If request.session was modified, or if response.session was set, save # those changes and set a session cookie. - patch_vary_headers(response, ('Cookie',)) try: + accessed = request.session.accessed modified = request.session.modified except AttributeError: pass else: + if accessed: + patch_vary_headers(response, ('Cookie',)) if modified or settings.SESSION_SAVE_EVERY_REQUEST: - session_key = request.session.session_key or Session.objects.get_new_session_key() + if request.session.session_key: + session_key = request.session.session_key + else: + obj = Session.objects.get_new_session_object() + session_key = obj.session_key + if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE: max_age = None expires = None diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py index f684cd381e..77718407e1 100644 --- a/django/contrib/sessions/models.py +++ b/django/contrib/sessions/models.py @@ -1,4 +1,4 @@ -import base64, md5, random, sys +import base64, md5, random, sys, datetime import cPickle as pickle from django.db import models from django.utils.translation import gettext_lazy as _ @@ -23,6 +23,23 @@ class SessionManager(models.Manager): break return session_key + def get_new_session_object(self): + """ + Returns a new session object. + """ + # FIXME: There is a *small* chance of collision here, meaning we will + # return an existing object. That can be fixed when we add a way to + # validate (and guarantee) that non-auto primary keys are unique. For + # now, we save immediately in order to reduce the "window of + # misfortune" as much as possible. + created = False + while not created: + obj, created = self.get_or_create(session_key=self.get_new_session_key(), + expire_date = datetime.datetime.now()) + # Collision in key generation, so re-seed the generator + random.seed() + return obj + def save(self, session_key, session_dict, expire_date): s = self.model(session_key, self.encode(session_dict), expire_date) if session_dict: diff --git a/django/core/management.py b/django/core/management.py index a78c9f91d4..485165613c 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -280,7 +280,7 @@ def get_sql_delete(app): from django.db import backend, connection, models, get_introspection_module introspection = get_introspection_module() - # This should work even if a connecton isn't available + # This should work even if a connection isn't available try: cursor = connection.cursor() except: @@ -516,6 +516,7 @@ def syncdb(verbosity=1, interactive=True): created_models = set() pending_references = {} + # Create the tables for each model for app in models.get_apps(): app_name = app.__name__.split('.')[-2] model_list = models.get_models(app) @@ -537,6 +538,11 @@ def syncdb(verbosity=1, interactive=True): cursor.execute(statement) table_list.append(model._meta.db_table) + # Create the m2m tables. This must be done after all tables have been created + # to ensure that all referred tables will exist. + for app in models.get_apps(): + app_name = app.__name__.split('.')[-2] + model_list = models.get_models(app) for model in model_list: if model in created_models: sql = _get_many_to_many_sql_for_model(model) @@ -546,7 +552,7 @@ def syncdb(verbosity=1, interactive=True): for statement in sql: cursor.execute(statement) - transaction.commit_unless_managed() + transaction.commit_unless_managed() # Send the post_syncdb signal, so individual apps can do whatever they need # to do at this point. @@ -1358,13 +1364,14 @@ def load_data(fixture_labels, verbosity=1): for fixture_dir in app_fixtures + list(settings.FIXTURE_DIRS) + ['']: if verbosity > 1: print "Checking %s for fixtures..." % humanize(fixture_dir) - try: - fixture_name, format = fixture_label.rsplit('.', 1) - formats = [format] - except ValueError: + parts = fixture_label.split('.') + if len(parts) == 1: fixture_name = fixture_label formats = serializers.get_serializer_formats() - + else: + fixture_name, format = '.'.join(parts[:-1]), parts[-1] + formats = [format] + label_found = False for format in formats: serializer = serializers.get_serializer(format) @@ -1439,7 +1446,7 @@ def dump_data(app_labels, format='json', indent=None): for model in get_models(app): objects.extend(model.objects.all()) try: - print serializers.serialize(format, objects, indent=indent) + return serializers.serialize(format, objects, indent=indent) except Exception, e: sys.stderr.write(style.ERROR("Unable to serialize database: %s\n" % e)) dump_data.help_doc = 'Output the contents of the database as a fixture of the given format' @@ -1585,7 +1592,7 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None): parser.print_usage_and_exit() elif action == 'dumpdata': try: - action_mapping[action](args[1:], options.format, options.indent) + print action_mapping[action](args[1:], options.format, options.indent) except IndexError: parser.print_usage_and_exit() elif action in ('startapp', 'startproject'): diff --git a/django/core/serializers/__init__.py b/django/core/serializers/__init__.py index f20258c416..494393f3cf 100644 --- a/django/core/serializers/__init__.py +++ b/django/core/serializers/__init__.py @@ -25,6 +25,13 @@ BUILTIN_SERIALIZERS = { "json" : "django.core.serializers.json", } +# Check for PyYaml and register the serializer if it's available. +try: + import yaml + BUILTIN_SERIALIZERS["yaml"] = "django.core.serializers.pyyaml" +except ImportError: + pass + _serializers = {} def register_serializer(format, serializer_module): diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py index 0ec05d1cf3..8e610ad240 100644 --- a/django/core/serializers/base.py +++ b/django/core/serializers/base.py @@ -34,17 +34,17 @@ class Serializer(object): for obj in queryset: self.start_object(obj) for field in obj._meta.fields: - if field is obj._meta.pk: - continue - elif field.rel is None: - if self.selected_fields is None or field.attname in self.selected_fields: - self.handle_field(obj, field) - else: - if self.selected_fields is None or field.attname[:-3] in self.selected_fields: - self.handle_fk_field(obj, field) + if field.serialize: + if field.rel is None: + if self.selected_fields is None or field.attname in self.selected_fields: + self.handle_field(obj, field) + else: + if self.selected_fields is None or field.attname[:-3] in self.selected_fields: + self.handle_fk_field(obj, field) for field in obj._meta.many_to_many: - if self.selected_fields is None or field.attname in self.selected_fields: - self.handle_m2m_field(obj, field) + if field.serialize: + if self.selected_fields is None or field.attname in self.selected_fields: + self.handle_m2m_field(obj, field) self.end_object(obj) self.end_serialization() return self.getvalue() @@ -54,11 +54,7 @@ class Serializer(object): Convert a field's value to a string. """ if isinstance(field, models.DateTimeField): - value = getattr(obj, field.name) - if value is None: - value = '' - else: - value = value.strftime("%Y-%m-%d %H:%M:%S") + value = getattr(obj, field.name).strftime("%Y-%m-%d %H:%M:%S") elif isinstance(field, models.FileField): value = getattr(obj, "get_%s_url" % field.name, lambda: None)() else: diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index a9baa01d5a..29ce6bf9bd 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -57,7 +57,7 @@ def Deserializer(object_list, **options): for d in object_list: # Look up the model and starting build a dict of data for it. Model = _get_model(d["model"]) - data = {Model._meta.pk.attname : d["pk"]} + data = {Model._meta.pk.attname : Model._meta.pk.to_python(d["pk"])} m2m_data = {} # Handle each field @@ -70,16 +70,17 @@ def Deserializer(object_list, **options): # Handle M2M relations if field.rel and isinstance(field.rel, models.ManyToManyRel): pks = [] + m2m_convert = field.rel.to._meta.pk.to_python for pk in field_value: if isinstance(pk, unicode): - pks.append(pk.encode(options.get("encoding", settings.DEFAULT_CHARSET))) + pks.append(m2m_convert(pk.encode(options.get("encoding", settings.DEFAULT_CHARSET)))) else: - pks.append(pk) + pks.append(m2m_convert(pk)) m2m_data[field.name] = pks # Handle FK fields elif field.rel and isinstance(field.rel, models.ManyToOneRel): - data[field.attname] = field_value + data[field.attname] = field.rel.to._meta.pk.to_python(field_value) # Handle all other fields else: diff --git a/django/core/serializers/pyyaml.py b/django/core/serializers/pyyaml.py new file mode 100644 index 0000000000..fa3dec984e --- /dev/null +++ b/django/core/serializers/pyyaml.py @@ -0,0 +1,36 @@ +""" +YAML serializer. + +Requires PyYaml (http://pyyaml.org/), but that's checked for in __init__. +""" + +import datetime +from django.core.serializers.python import Serializer as PythonSerializer +from django.core.serializers.python import Deserializer as PythonDeserializer +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO +import yaml + +class Serializer(PythonSerializer): + """ + Convert a queryset to YAML. + """ + def end_serialization(self): + yaml.dump(self.objects, self.stream, **self.options) + + def getvalue(self): + return self.stream.getvalue() + +def Deserializer(stream_or_string, **options): + """ + Deserialize a stream or string of YAML data. + """ + if isinstance(stream_or_string, basestring): + stream = StringIO(stream_or_string) + else: + stream = stream_or_string + for obj in PythonDeserializer(yaml.load(stream)): + yield obj + diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py index 8fa7bbfac9..3a0fdb5395 100644 --- a/django/core/serializers/xml_serializer.py +++ b/django/core/serializers/xml_serializer.py @@ -13,6 +13,10 @@ class Serializer(base.Serializer): Serializes a QuerySet to XML. """ + def indent(self, level): + if self.options.get('indent', None) is not None: + self.xml.ignorableWhitespace('\n' + ' ' * self.options.get('indent', None) * level) + def start_serialization(self): """ Start serialization -- open the XML document and the root element. @@ -25,6 +29,7 @@ class Serializer(base.Serializer): """ End serialization -- end the document. """ + self.indent(0) self.xml.endElement("django-objects") self.xml.endDocument() @@ -35,6 +40,7 @@ class Serializer(base.Serializer): if not hasattr(obj, "_meta"): raise base.SerializationError("Non-model object (%s) encountered during serialization" % type(obj)) + self.indent(1) self.xml.startElement("object", { "pk" : str(obj._get_pk_val()), "model" : str(obj._meta), @@ -44,6 +50,7 @@ class Serializer(base.Serializer): """ Called after handling all fields for an object. """ + self.indent(1) self.xml.endElement("object") def handle_field(self, obj, field): @@ -51,16 +58,19 @@ class Serializer(base.Serializer): Called to handle each field on an object (except for ForeignKeys and ManyToManyFields) """ + self.indent(2) self.xml.startElement("field", { "name" : field.name, "type" : field.get_internal_type() }) # Get a "string version" of the object's data (this is handled by the - # serializer base class). None is handled specially. - value = self.get_string_value(obj, field) - if value is not None: + # serializer base class). + if getattr(obj, field.name) is not None: + value = self.get_string_value(obj, field) self.xml.characters(str(value)) + else: + self.xml.addQuickElement("None") self.xml.endElement("field") @@ -92,6 +102,7 @@ class Serializer(base.Serializer): """ Helper to output the <field> element for relational fields """ + self.indent(2) self.xml.startElement("field", { "name" : field.name, "rel" : field.rel.__class__.__name__, @@ -127,7 +138,8 @@ class Deserializer(base.Deserializer): pk = node.getAttribute("pk") if not pk: raise base.DeserializationError("<object> node is missing the 'pk' attribute") - data = {Model._meta.pk.name : pk} + + data = {Model._meta.pk.attname : Model._meta.pk.to_python(pk)} # Also start building a dict of m2m data (this is saved as # {m2m_accessor_attribute : [list_of_related_objects]}) @@ -148,17 +160,20 @@ class Deserializer(base.Deserializer): # As is usually the case, relation fields get the special treatment. if field.rel and isinstance(field.rel, models.ManyToManyRel): - m2m_data[field.name] = self._handle_m2m_field_node(field_node) + m2m_data[field.name] = self._handle_m2m_field_node(field_node, field) elif field.rel and isinstance(field.rel, models.ManyToOneRel): - data[field.attname] = self._handle_fk_field_node(field_node) + data[field.attname] = self._handle_fk_field_node(field_node, field) else: - value = field.to_python(getInnerText(field_node).strip().encode(self.encoding)) + if len(field_node.childNodes) == 1 and field_node.childNodes[0].nodeName == 'None': + value = None + else: + value = field.to_python(getInnerText(field_node).strip().encode(self.encoding)) data[field.name] = value # Return a DeserializedObject so that the m2m data has a place to live. return base.DeserializedObject(Model(**data), m2m_data) - def _handle_fk_field_node(self, node): + def _handle_fk_field_node(self, node, field): """ Handle a <field> node for a ForeignKey """ @@ -166,13 +181,16 @@ class Deserializer(base.Deserializer): if len(node.childNodes) == 1 and node.childNodes[0].nodeName == 'None': return None else: - return getInnerText(node).strip().encode(self.encoding) + return field.rel.to._meta.pk.to_python( + getInnerText(node).strip().encode(self.encoding)) - def _handle_m2m_field_node(self, node): + def _handle_m2m_field_node(self, node, field): """ Handle a <field> node for a ManyToManyField """ - return [c.getAttribute("pk").encode(self.encoding) for c in node.getElementsByTagName("object")] + return [field.rel.to._meta.pk.to_python( + c.getAttribute("pk").encode(self.encoding)) + for c in node.getElementsByTagName("object")] def _get_model_from_node(self, node, attr): """ diff --git a/django/core/validators.py b/django/core/validators.py index ebfbd3961e..bd7d790e04 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -140,7 +140,8 @@ def _isValidDate(date_string): try: date(year, month, day) except ValueError, e: - raise ValidationError, gettext('Invalid date: %s.' % e) + msg = gettext('Invalid date: %s') % gettext(str(e)) + raise ValidationError, msg def isValidANSIDate(field_data, all_data): if not ansi_date_re.search(field_data): @@ -363,7 +364,7 @@ class NumberIsInRange(object): self.lower, self.upper = lower, upper if not error_message: if lower and upper: - self.error_message = gettext("This value must be between %s and %s.") % (lower, upper) + self.error_message = gettext("This value must be between %(lower)s and %(upper)s.") % {'lower': lower, 'upper': upper} elif lower: self.error_message = gettext("This value must be at least %s.") % lower elif upper: diff --git a/django/db/backends/ado_mssql/base.py b/django/db/backends/ado_mssql/base.py index 9eaa5625d9..8dcb98ce61 100644 --- a/django/db/backends/ado_mssql/base.py +++ b/django/db/backends/ado_mssql/base.py @@ -76,10 +76,11 @@ class DatabaseWrapper(local): return cursor def _commit(self): - return self.connection.commit() + if self.connection is not None: + return self.connection.commit() def _rollback(self): - if self.connection: + if self.connection is not None: return self.connection.rollback() def close(self): diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 4ccb1fe564..94718595cb 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -10,6 +10,15 @@ try: except ImportError, e: from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured, "Error loading MySQLdb module: %s" % e + +# We want version (1, 2, 1, 'final', 2) or later. We can't just use +# lexicographic ordering in this check because then (1, 2, 1, 'gamma') +# inadvertently passes the version test. +version = Database.version_info +if (version < (1,2,1) or (version[:3] == (1, 2, 1) and + (len(version) < 5 or version[3] != 'final' or version[4] < 2))): + raise ImportError, "MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__ + from MySQLdb.converters import conversions from MySQLdb.constants import FIELD_TYPE import types @@ -17,11 +26,14 @@ import re DatabaseError = Database.DatabaseError +# MySQLdb-1.2.1 supports the Python boolean type, and only uses datetime +# module for time-related columns; older versions could have used mx.DateTime +# or strings if there were no datetime module. However, MySQLdb still returns +# TIME columns as timedelta -- they are more like timedelta in terms of actual +# behavior as they are signed and include days -- and Django expects time, so +# we still need to override that. django_conversions = conversions.copy() django_conversions.update({ - types.BooleanType: util.rev_typecast_boolean, - FIELD_TYPE.DATETIME: util.typecast_timestamp, - FIELD_TYPE.DATE: util.typecast_date, FIELD_TYPE.TIME: util.typecast_time, }) @@ -31,31 +43,12 @@ django_conversions.update({ # http://dev.mysql.com/doc/refman/5.0/en/news.html . server_version_re = re.compile(r'(\d{1,2})\.(\d{1,2})\.(\d{1,2})') -# This is an extra debug layer over MySQL queries, to display warnings. -# It's only used when DEBUG=True. -class MysqlDebugWrapper: - def __init__(self, cursor): - self.cursor = cursor - - def execute(self, sql, params=()): - try: - return self.cursor.execute(sql, params) - except Database.Warning, w: - self.cursor.execute("SHOW WARNINGS") - raise Database.Warning, "%s: %s" % (w, self.cursor.fetchall()) - - def executemany(self, sql, param_list): - try: - return self.cursor.executemany(sql, param_list) - except Database.Warning, w: - self.cursor.execute("SHOW WARNINGS") - raise Database.Warning, "%s: %s" % (w, self.cursor.fetchall()) - - def __getattr__(self, attr): - if self.__dict__.has_key(attr): - return self.__dict__[attr] - else: - return getattr(self.cursor, attr) +# MySQLdb-1.2.1 and newer automatically makes use of SHOW WARNINGS on +# MySQL-4.1 and newer, so the MysqlDebugWrapper is unnecessary. Since the +# point is to raise Warnings as exceptions, this can be done with the Python +# warning module, and this is setup when the connection is created, and the +# standard util.CursorDebugWrapper can be used. Also, using sql_mode +# TRADITIONAL will automatically cause most warnings to be treated as errors. try: # Only exists in Python 2.4+ @@ -83,35 +76,41 @@ class DatabaseWrapper(local): def cursor(self): from django.conf import settings + from warnings import filterwarnings if not self._valid_connection(): kwargs = { - 'user': settings.DATABASE_USER, - 'db': settings.DATABASE_NAME, - 'passwd': settings.DATABASE_PASSWORD, 'conv': django_conversions, + 'charset': 'utf8', + 'use_unicode': False, } + if settings.DATABASE_USER: + kwargs['user'] = settings.DATABASE_USER + if settings.DATABASE_NAME: + kwargs['db'] = settings.DATABASE_NAME + if settings.DATABASE_PASSWORD: + kwargs['passwd'] = settings.DATABASE_PASSWORD if settings.DATABASE_HOST.startswith('/'): kwargs['unix_socket'] = settings.DATABASE_HOST - else: + elif settings.DATABASE_HOST: kwargs['host'] = settings.DATABASE_HOST if settings.DATABASE_PORT: kwargs['port'] = int(settings.DATABASE_PORT) kwargs.update(self.options) self.connection = Database.connect(**kwargs) cursor = self.connection.cursor() - if self.connection.get_server_info() >= '4.1': - cursor.execute("SET NAMES 'utf8'") else: cursor = self.connection.cursor() if settings.DEBUG: - return util.CursorDebugWrapper(MysqlDebugWrapper(cursor), self) + filterwarnings("error", category=Database.Warning) + return util.CursorDebugWrapper(cursor, self) return cursor def _commit(self): - self.connection.commit() + if self.connection is not None: + self.connection.commit() def _rollback(self): - if self.connection: + if self.connection is not None: try: self.connection.rollback() except Database.NotSupportedError: diff --git a/django/db/backends/mysql/client.py b/django/db/backends/mysql/client.py index f9d6297b8e..116074a9ce 100644 --- a/django/db/backends/mysql/client.py +++ b/django/db/backends/mysql/client.py @@ -3,12 +3,25 @@ import os def runshell(): args = [''] - args += ["--user=%s" % settings.DATABASE_USER] - if settings.DATABASE_PASSWORD: - args += ["--password=%s" % settings.DATABASE_PASSWORD] - if settings.DATABASE_HOST: - args += ["--host=%s" % settings.DATABASE_HOST] - if settings.DATABASE_PORT: - args += ["--port=%s" % settings.DATABASE_PORT] - args += [settings.DATABASE_NAME] + db = settings.DATABASE_OPTIONS.get('db', settings.DATABASE_NAME) + user = settings.DATABASE_OPTIONS.get('user', settings.DATABASE_USER) + passwd = settings.DATABASE_OPTIONS.get('passwd', settings.DATABASE_PASSWORD) + host = settings.DATABASE_OPTIONS.get('host', settings.DATABASE_HOST) + port = settings.DATABASE_OPTIONS.get('port', settings.DATABASE_PORT) + defaults_file = settings.DATABASE_OPTIONS.get('read_default_file') + # Seems to be no good way to set sql_mode with CLI + + if defaults_file: + args += ["--defaults-file=%s" % defaults_file] + if user: + args += ["--user=%s" % user] + if passwd: + args += ["--password=%s" % passwd] + if host: + args += ["--host=%s" % host] + if port: + args += ["--port=%s" % port] + if db: + args += [db] + os.execvp('mysql', args) diff --git a/django/db/backends/mysql_old/__init__.py b/django/db/backends/mysql_old/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/django/db/backends/mysql_old/__init__.py diff --git a/django/db/backends/mysql_old/base.py b/django/db/backends/mysql_old/base.py new file mode 100644 index 0000000000..4bd87518e8 --- /dev/null +++ b/django/db/backends/mysql_old/base.py @@ -0,0 +1,233 @@ +""" +MySQL database backend for Django. + +Requires MySQLdb: http://sourceforge.net/projects/mysql-python +""" + +from django.db.backends import util +try: + import MySQLdb as Database +except ImportError, e: + from django.core.exceptions import ImproperlyConfigured + raise ImproperlyConfigured, "Error loading MySQLdb module: %s" % e +from MySQLdb.converters import conversions +from MySQLdb.constants import FIELD_TYPE +import types +import re + +DatabaseError = Database.DatabaseError + +django_conversions = conversions.copy() +django_conversions.update({ + types.BooleanType: util.rev_typecast_boolean, + FIELD_TYPE.DATETIME: util.typecast_timestamp, + FIELD_TYPE.DATE: util.typecast_date, + FIELD_TYPE.TIME: util.typecast_time, +}) + +# This should match the numerical portion of the version numbers (we can treat +# versions like 5.0.24 and 5.0.24a as the same). Based on the list of version +# at http://dev.mysql.com/doc/refman/4.1/en/news.html and +# http://dev.mysql.com/doc/refman/5.0/en/news.html . +server_version_re = re.compile(r'(\d{1,2})\.(\d{1,2})\.(\d{1,2})') + +# This is an extra debug layer over MySQL queries, to display warnings. +# It's only used when DEBUG=True. +class MysqlDebugWrapper: + def __init__(self, cursor): + self.cursor = cursor + + def execute(self, sql, params=()): + try: + return self.cursor.execute(sql, params) + except Database.Warning, w: + self.cursor.execute("SHOW WARNINGS") + raise Database.Warning, "%s: %s" % (w, self.cursor.fetchall()) + + def executemany(self, sql, param_list): + try: + return self.cursor.executemany(sql, param_list) + except Database.Warning, w: + self.cursor.execute("SHOW WARNINGS") + raise Database.Warning, "%s: %s" % (w, self.cursor.fetchall()) + + def __getattr__(self, attr): + if self.__dict__.has_key(attr): + return self.__dict__[attr] + else: + return getattr(self.cursor, attr) + +try: + # Only exists in Python 2.4+ + from threading import local +except ImportError: + # Import copy of _thread_local.py from Python 2.4 + from django.utils._threading_local import local + +class DatabaseWrapper(local): + def __init__(self, **kwargs): + self.connection = None + self.queries = [] + self.server_version = None + self.options = kwargs + + def _valid_connection(self): + if self.connection is not None: + try: + self.connection.ping() + return True + except DatabaseError: + self.connection.close() + self.connection = None + return False + + def cursor(self): + from django.conf import settings + if not self._valid_connection(): + kwargs = { + 'user': settings.DATABASE_USER, + 'db': settings.DATABASE_NAME, + 'passwd': settings.DATABASE_PASSWORD, + 'conv': django_conversions, + } + if settings.DATABASE_HOST.startswith('/'): + kwargs['unix_socket'] = settings.DATABASE_HOST + else: + kwargs['host'] = settings.DATABASE_HOST + if settings.DATABASE_PORT: + kwargs['port'] = int(settings.DATABASE_PORT) + kwargs.update(self.options) + self.connection = Database.connect(**kwargs) + cursor = self.connection.cursor() + if self.connection.get_server_info() >= '4.1': + cursor.execute("SET NAMES 'utf8'") + else: + cursor = self.connection.cursor() + if settings.DEBUG: + return util.CursorDebugWrapper(MysqlDebugWrapper(cursor), self) + return cursor + + def _commit(self): + if self.connection is not None: + self.connection.commit() + + def _rollback(self): + if self.connection is not None: + try: + self.connection.rollback() + except Database.NotSupportedError: + pass + + def close(self): + if self.connection is not None: + self.connection.close() + self.connection = None + + def get_server_version(self): + if not self.server_version: + if not self._valid_connection(): + self.cursor() + m = server_version_re.match(self.connection.get_server_info()) + if not m: + raise Exception('Unable to determine MySQL version from version string %r' % self.connection.get_server_info()) + self.server_version = tuple([int(x) for x in m.groups()]) + return self.server_version + +supports_constraints = True + +def quote_name(name): + if name.startswith("`") and name.endswith("`"): + return name # Quoting once is enough. + return "`%s`" % name + +dictfetchone = util.dictfetchone +dictfetchmany = util.dictfetchmany +dictfetchall = util.dictfetchall + +def get_last_insert_id(cursor, table_name, pk_name): + return cursor.lastrowid + +def get_date_extract_sql(lookup_type, table_name): + # lookup_type is 'year', 'month', 'day' + # http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html + return "EXTRACT(%s FROM %s)" % (lookup_type.upper(), table_name) + +def get_date_trunc_sql(lookup_type, field_name): + # lookup_type is 'year', 'month', 'day' + fields = ['year', 'month', 'day', 'hour', 'minute', 'second'] + format = ('%%Y-', '%%m', '-%%d', ' %%H:', '%%i', ':%%s') # Use double percents to escape. + format_def = ('0000-', '01', '-01', ' 00:', '00', ':00') + try: + i = fields.index(lookup_type) + 1 + except ValueError: + sql = field_name + else: + format_str = ''.join([f for f in format[:i]] + [f for f in format_def[i:]]) + sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str) + return sql + +def get_limit_offset_sql(limit, offset=None): + sql = "LIMIT " + if offset and offset != 0: + sql += "%s," % offset + return sql + str(limit) + +def get_random_function_sql(): + return "RAND()" + +def get_deferrable_sql(): + return "" + +def get_fulltext_search_sql(field_name): + return 'MATCH (%s) AGAINST (%%s IN BOOLEAN MODE)' % field_name + +def get_drop_foreignkey_sql(): + return "DROP FOREIGN KEY" + +def get_pk_default_value(): + return "DEFAULT" + +def get_sql_flush(style, tables, sequences): + """Return a list of SQL statements required to remove all data from + all tables in the database (without actually removing the tables + themselves) and put the database in an empty 'initial' state + + """ + # NB: The generated SQL below is specific to MySQL + # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements + # to clear all tables of all data + if tables: + sql = ['SET FOREIGN_KEY_CHECKS = 0;'] + \ + ['%s %s;' % \ + (style.SQL_KEYWORD('TRUNCATE'), + style.SQL_FIELD(quote_name(table)) + ) for table in tables] + \ + ['SET FOREIGN_KEY_CHECKS = 1;'] + + # 'ALTER TABLE table AUTO_INCREMENT = 1;'... style SQL statements + # to reset sequence indices + sql.extend(["%s %s %s %s %s;" % \ + (style.SQL_KEYWORD('ALTER'), + style.SQL_KEYWORD('TABLE'), + style.SQL_TABLE(quote_name(sequence['table'])), + style.SQL_KEYWORD('AUTO_INCREMENT'), + style.SQL_FIELD('= 1'), + ) for sequence in sequences]) + return sql + else: + return [] + +OPERATOR_MAPPING = { + 'exact': '= %s', + 'iexact': 'LIKE %s', + 'contains': 'LIKE BINARY %s', + 'icontains': 'LIKE %s', + 'gt': '> %s', + 'gte': '>= %s', + 'lt': '< %s', + 'lte': '<= %s', + 'startswith': 'LIKE BINARY %s', + 'endswith': 'LIKE BINARY %s', + 'istartswith': 'LIKE %s', + 'iendswith': 'LIKE %s', +} diff --git a/django/db/backends/mysql_old/client.py b/django/db/backends/mysql_old/client.py new file mode 100644 index 0000000000..f9d6297b8e --- /dev/null +++ b/django/db/backends/mysql_old/client.py @@ -0,0 +1,14 @@ +from django.conf import settings +import os + +def runshell(): + args = [''] + args += ["--user=%s" % settings.DATABASE_USER] + if settings.DATABASE_PASSWORD: + args += ["--password=%s" % settings.DATABASE_PASSWORD] + if settings.DATABASE_HOST: + args += ["--host=%s" % settings.DATABASE_HOST] + if settings.DATABASE_PORT: + args += ["--port=%s" % settings.DATABASE_PORT] + args += [settings.DATABASE_NAME] + os.execvp('mysql', args) diff --git a/django/db/backends/mysql_old/creation.py b/django/db/backends/mysql_old/creation.py new file mode 100644 index 0000000000..22ed901653 --- /dev/null +++ b/django/db/backends/mysql_old/creation.py @@ -0,0 +1,29 @@ +# This dictionary maps Field objects to their associated MySQL column +# types, as strings. Column-type strings can contain format strings; they'll +# be interpolated against the values of Field.__dict__ before being output. +# If a column type is set to None, it won't be included in the output. +DATA_TYPES = { + 'AutoField': 'integer AUTO_INCREMENT', + 'BooleanField': 'bool', + 'CharField': 'varchar(%(maxlength)s)', + 'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', + 'DateField': 'date', + 'DateTimeField': 'datetime', + 'FileField': 'varchar(100)', + 'FilePathField': 'varchar(100)', + 'FloatField': 'numeric(%(max_digits)s, %(decimal_places)s)', + 'ImageField': 'varchar(100)', + 'IntegerField': 'integer', + 'IPAddressField': 'char(15)', + 'ManyToManyField': None, + 'NullBooleanField': 'bool', + 'OneToOneField': 'integer', + 'PhoneNumberField': 'varchar(20)', + 'PositiveIntegerField': 'integer UNSIGNED', + 'PositiveSmallIntegerField': 'smallint UNSIGNED', + 'SlugField': 'varchar(%(maxlength)s)', + 'SmallIntegerField': 'smallint', + 'TextField': 'longtext', + 'TimeField': 'time', + 'USStateField': 'varchar(2)', +} diff --git a/django/db/backends/mysql_old/introspection.py b/django/db/backends/mysql_old/introspection.py new file mode 100644 index 0000000000..5ea626a5a9 --- /dev/null +++ b/django/db/backends/mysql_old/introspection.py @@ -0,0 +1,95 @@ +from django.db.backends.mysql_old.base import quote_name +from MySQLdb import ProgrammingError, OperationalError +from MySQLdb.constants import FIELD_TYPE +import re + +foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)") + +def get_table_list(cursor): + "Returns a list of table names in the current database." + cursor.execute("SHOW TABLES") + return [row[0] for row in cursor.fetchall()] + +def get_table_description(cursor, table_name): + "Returns a description of the table, with the DB-API cursor.description interface." + cursor.execute("SELECT * FROM %s LIMIT 1" % quote_name(table_name)) + return cursor.description + +def _name_to_index(cursor, table_name): + """ + Returns a dictionary of {field_name: field_index} for the given table. + Indexes are 0-based. + """ + return dict([(d[0], i) for i, d in enumerate(get_table_description(cursor, table_name))]) + +def get_relations(cursor, table_name): + """ + Returns a dictionary of {field_index: (field_index_other_table, other_table)} + representing all relationships to the given table. Indexes are 0-based. + """ + my_field_dict = _name_to_index(cursor, table_name) + constraints = [] + relations = {} + try: + # This should work for MySQL 5.0. + cursor.execute(""" + SELECT column_name, referenced_table_name, referenced_column_name + FROM information_schema.key_column_usage + WHERE table_name = %s + AND table_schema = DATABASE() + AND referenced_table_name IS NOT NULL + AND referenced_column_name IS NOT NULL""", [table_name]) + constraints.extend(cursor.fetchall()) + except (ProgrammingError, OperationalError): + # Fall back to "SHOW CREATE TABLE", for previous MySQL versions. + # Go through all constraints and save the equal matches. + cursor.execute("SHOW CREATE TABLE %s" % quote_name(table_name)) + for row in cursor.fetchall(): + pos = 0 + while True: + match = foreign_key_re.search(row[1], pos) + if match == None: + break + pos = match.end() + constraints.append(match.groups()) + + for my_fieldname, other_table, other_field in constraints: + other_field_index = _name_to_index(cursor, other_table)[other_field] + my_field_index = my_field_dict[my_fieldname] + relations[my_field_index] = (other_field_index, other_table) + + return relations + +def get_indexes(cursor, table_name): + """ + Returns a dictionary of fieldname -> infodict for the given table, + where each infodict is in the format: + {'primary_key': boolean representing whether it's the primary key, + 'unique': boolean representing whether it's a unique index} + """ + cursor.execute("SHOW INDEX FROM %s" % quote_name(table_name)) + indexes = {} + for row in cursor.fetchall(): + indexes[row[4]] = {'primary_key': (row[2] == 'PRIMARY'), 'unique': not bool(row[1])} + return indexes + +DATA_TYPES_REVERSE = { + FIELD_TYPE.BLOB: 'TextField', + FIELD_TYPE.CHAR: 'CharField', + FIELD_TYPE.DECIMAL: 'FloatField', + FIELD_TYPE.DATE: 'DateField', + FIELD_TYPE.DATETIME: 'DateTimeField', + FIELD_TYPE.DOUBLE: 'FloatField', + FIELD_TYPE.FLOAT: 'FloatField', + FIELD_TYPE.INT24: 'IntegerField', + FIELD_TYPE.LONG: 'IntegerField', + FIELD_TYPE.LONGLONG: 'IntegerField', + FIELD_TYPE.SHORT: 'IntegerField', + FIELD_TYPE.STRING: 'TextField', + FIELD_TYPE.TIMESTAMP: 'DateTimeField', + FIELD_TYPE.TINY: 'IntegerField', + FIELD_TYPE.TINY_BLOB: 'TextField', + FIELD_TYPE.MEDIUM_BLOB: 'TextField', + FIELD_TYPE.LONG_BLOB: 'TextField', + FIELD_TYPE.VAR_STRING: 'CharField', +} diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 229e203ca1..d52ae33c2e 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -43,10 +43,11 @@ class DatabaseWrapper(local): return FormatStylePlaceholderCursor(self.connection) def _commit(self): - self.connection.commit() + if self.connection is not None: + self.connection.commit() def _rollback(self): - if self.connection: + if self.connection is not None: try: self.connection.rollback() except Database.NotSupportedError: diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py index 89695b0c4b..54be422ae2 100644 --- a/django/db/backends/postgresql/base.py +++ b/django/db/backends/postgresql/base.py @@ -92,10 +92,11 @@ class DatabaseWrapper(local): return cursor def _commit(self): - return self.connection.commit() + if self.connection is not None: + return self.connection.commit() def _rollback(self): - if self.connection: + if self.connection is not None: return self.connection.rollback() def close(self): diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index 9b319ad3c7..e4724e46fb 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -60,10 +60,11 @@ class DatabaseWrapper(local): return cursor def _commit(self): - return self.connection.commit() + if self.connection is not None: + return self.connection.commit() def _rollback(self): - if self.connection: + if self.connection is not None: return self.connection.rollback() def close(self): diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index ce343e189e..4b8a1c64a8 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -67,10 +67,11 @@ class DatabaseWrapper(local): return cursor def _commit(self): - self.connection.commit() + if self.connection is not None: + self.connection.commit() def _rollback(self): - if self.connection: + if self.connection is not None: self.connection.rollback() def close(self): diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index e8a2c231c5..3972de7d4a 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -67,7 +67,7 @@ class Field(object): def __init__(self, verbose_name=None, name=None, primary_key=False, maxlength=None, unique=False, blank=False, null=False, db_index=False, - core=False, rel=None, default=NOT_PROVIDED, editable=True, + core=False, rel=None, default=NOT_PROVIDED, editable=True, serialize=True, prepopulate_from=None, unique_for_date=None, unique_for_month=None, unique_for_year=None, validator_list=None, choices=None, radio_admin=None, help_text='', db_column=None): @@ -78,6 +78,7 @@ class Field(object): self.blank, self.null = blank, null self.core, self.rel, self.default = core, rel, default self.editable = editable + self.serialize = serialize self.validator_list = validator_list or [] self.prepopulate_from = prepopulate_from self.unique_for_date, self.unique_for_month = unique_for_date, unique_for_month @@ -742,6 +743,13 @@ class NullBooleanField(Field): kwargs['null'] = True Field.__init__(self, *args, **kwargs) + def to_python(self, value): + if value in (None, True, False): return value + if value in ('None'): return None + if value in ('t', 'True', '1'): return True + if value in ('f', 'False', '0'): return False + raise validators.ValidationError, gettext("This value must be either None, True or False.") + def get_manipulator_field_objs(self): return [oldforms.NullBooleanField] @@ -819,7 +827,7 @@ class TimeField(Field): if value is not None: # MySQL will throw a warning if microseconds are given, because it # doesn't support microseconds. - if settings.DATABASE_ENGINE == 'mysql': + if settings.DATABASE_ENGINE == 'mysql' and hasattr(value, 'microsecond'): value = value.replace(microsecond=0) value = str(value) return Field.get_db_prep_save(self, value) diff --git a/django/db/models/fields/generic.py b/django/db/models/fields/generic.py index 1ad8346e42..480ee689c9 100644 --- a/django/db/models/fields/generic.py +++ b/django/db/models/fields/generic.py @@ -94,6 +94,7 @@ class GenericRelation(RelatedField, Field): kwargs['blank'] = True kwargs['editable'] = False + kwargs['serialize'] = False Field.__init__(self, **kwargs) def get_manipulator_field_objs(self): diff --git a/django/db/models/options.py b/django/db/models/options.py index ff0d112d16..51cf0a019b 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -84,6 +84,7 @@ class Options(object): self.fields.insert(bisect(self.fields, field), field) if not self.pk and field.primary_key: self.pk = field + field.serialize = False def __repr__(self): return '<Options for %s>' % self.object_name diff --git a/django/db/models/query.py b/django/db/models/query.py index a03f4ecc1f..e01905551e 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -109,6 +109,8 @@ class QuerySet(object): def __getitem__(self, k): "Retrieve an item or slice from the set of results." + if not isinstance(k, (slice, int)): + raise TypeError assert (not isinstance(k, slice) and (k >= 0)) \ or (isinstance(k, slice) and (k.start is None or k.start >= 0) and (k.stop is None or k.stop >= 0)), \ "Negative indexing is not supported." @@ -780,7 +782,7 @@ def fill_table_cache(opts, select, tables, where, old_prefix, cache_tables_seen, def parse_lookup(kwarg_items, opts): # Helper function that handles converting API kwargs # (e.g. "name__exact": "tom") to SQL. - # Returns a tuple of (tables, joins, where, params). + # Returns a tuple of (joins, where, params). # 'joins' is a sorted dictionary describing the tables that must be joined # to complete the query. The dictionary is sorted because creation order diff --git a/django/db/models/related.py b/django/db/models/related.py index a63f09b745..2c1dc5c516 100644 --- a/django/db/models/related.py +++ b/django/db/models/related.py @@ -1,7 +1,7 @@ class BoundRelatedObject(object): def __init__(self, related_object, field_mapping, original): self.relation = related_object - self.field_mappings = field_mapping[related_object.opts.module_name] + self.field_mappings = field_mapping[related_object.name] def template_name(self): raise NotImplementedError @@ -16,7 +16,7 @@ class RelatedObject(object): self.opts = model._meta self.field = field self.edit_inline = field.rel.edit_inline - self.name = self.opts.module_name + self.name = '%s:%s' % (self.opts.app_label, self.opts.module_name) self.var_name = self.opts.object_name.lower() def flatten_data(self, follow, obj=None): diff --git a/django/oldforms/__init__.py b/django/oldforms/__init__.py index decf0f7064..56101984f5 100644 --- a/django/oldforms/__init__.py +++ b/django/oldforms/__init__.py @@ -130,7 +130,9 @@ class FormWrapper(object): if self.edit_inline: self.fill_inline_collections() for inline_collection in self._inline_collections: - if inline_collection.name == key: + # The 'orig_name' comparison is for backwards compatibility + # with hand-crafted forms. + if inline_collection.name == key or (':' not in key and inline_collection.orig_name == key): return inline_collection raise KeyError, "Could not find Formfield or InlineObjectCollection named %r" % key @@ -226,6 +228,9 @@ class InlineObjectCollection(object): self.errors = errors self._collections = None self.name = rel_obj.name + # This is the name used prior to fixing #1839. Needs for backwards + # compatibility. + self.orig_name = rel_obj.opts.module_name def __len__(self): self.fill() diff --git a/django/shortcuts/__init__.py b/django/shortcuts/__init__.py index be2155bb09..81381d08c1 100644 --- a/django/shortcuts/__init__.py +++ b/django/shortcuts/__init__.py @@ -19,7 +19,7 @@ def get_object_or_404(klass, *args, **kwargs): try: return manager.get(*args, **kwargs) except klass.DoesNotExist: - raise Http404 + raise Http404('No %s matches the given query.' % klass._meta.object_name) def get_list_or_404(klass, *args, **kwargs): if isinstance(klass, Manager): @@ -28,5 +28,5 @@ def get_list_or_404(klass, *args, **kwargs): manager = klass._default_manager obj_list = list(manager.filter(*args, **kwargs)) if not obj_list: - raise Http404 + raise Http404('No %s matches the given query.' % manager.model._meta.object_name) return obj_list diff --git a/django/template/__init__.py b/django/template/__init__.py index 678d19293c..0d8990a42b 100644 --- a/django/template/__init__.py +++ b/django/template/__init__.py @@ -91,6 +91,8 @@ UNKNOWN_SOURCE="<unknown source>" tag_re = re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' % (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END), re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END), re.escape(COMMENT_TAG_START), re.escape(COMMENT_TAG_END))) +# matches if the string is valid number +number_re = re.compile(r'[-+]?(\d+|\d*\.\d+)$') # global dictionary of libraries that have been loaded using get_library libraries = {} @@ -632,12 +634,9 @@ def resolve_variable(path, context): (The example assumes VARIABLE_ATTRIBUTE_SEPARATOR is '.') """ - if path[0].isdigit(): + if number_re.match(path): number_type = '.' in path and float or int - try: - current = number_type(path) - except ValueError: - current = settings.TEMPLATE_STRING_IF_INVALID + current = number_type(path) elif path[0] in ('"', "'") and path[0] == path[-1]: current = path[1:-1] else: diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index b53375b42d..a025365c90 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -70,14 +70,15 @@ def floatformat(text, arg=-1): With a negative numeric argument, it will display that many decimal places -- but only if there's places to be displayed. Examples: - num1 = 34.23234 - num2 = 34.00000 - num1|floatformat results in 34.2 - num2|floatformat is 34 - num1|floatformat:3 is 34.232 - num2|floatformat:3 is 34.000 - num1|floatformat:-3 is 34.232 - num2|floatformat:-3 is 34 + + * num1 = 34.23234 + * num2 = 34.00000 + * num1|floatformat results in 34.2 + * num2|floatformat is 34 + * num1|floatformat:3 is 34.232 + * num2|floatformat:3 is 34.000 + * num1|floatformat:-3 is 34.232 + * num2|floatformat:-3 is 34 """ try: f = float(text) diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 6aa53cfd8b..b18fa1dce7 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -435,6 +435,15 @@ def cycle(parser, token): cycle = register.tag(cycle) def debug(parser, token): + """ + Output a whole load of debugging information, including the current context and imported modules. + + Sample usage:: + + <pre> + {% debug %} + </pre> + """ return DebugNode() debug = register.tag(debug) @@ -538,21 +547,6 @@ def do_for(parser, token): do_for = register.tag("for", do_for) def do_ifequal(parser, token, negate): - """ - Output the contents of the block if the two arguments equal/don't equal each other. - - Examples:: - - {% ifequal user.id comment.user_id %} - ... - {% endifequal %} - - {% ifnotequal user.id comment.user_id %} - ... - {% else %} - ... - {% endifnotequal %} - """ bits = list(token.split_contents()) if len(bits) != 3: raise TemplateSyntaxError, "%r takes two arguments" % bits[0] @@ -568,11 +562,27 @@ def do_ifequal(parser, token, negate): #@register.tag def ifequal(parser, token): + """ + Output the contents of the block if the two arguments equal each other. + + Examples:: + + {% ifequal user.id comment.user_id %} + ... + {% endifequal %} + + {% ifnotequal user.id comment.user_id %} + ... + {% else %} + ... + {% endifnotequal %} + """ return do_ifequal(parser, token, False) ifequal = register.tag(ifequal) #@register.tag def ifnotequal(parser, token): + """Output the contents of the block if the two arguments are not equal. See ifequal.""" return do_ifequal(parser, token, True) ifnotequal = register.tag(ifnotequal) @@ -889,8 +899,9 @@ templatetag = register.tag(templatetag) def url(parser, token): """ - Returns an absolute URL matching given view with its parameters. This is a - way to define links that aren't tied to a particular url configuration: + Returns an absolute URL matching given view with its parameters. + + This is a way to define links that aren't tied to a particular URL configuration:: {% url path.to.some_view arg1,arg2,name1=value1 %} @@ -901,16 +912,16 @@ def url(parser, token): URL. All arguments for the URL should be present. For example if you have a view ``app_name.client`` taking client's id and - the corresponding line in a urlconf looks like this: + the corresponding line in a URLconf looks like this:: ('^client/(\d+)/$', 'app_name.client') - and this app's urlconf is included into the project's urlconf under some - path: + and this app's URLconf is included into the project's URLconf under some + path:: ('^clients/', include('project_name.app_name.urls')) - then in a template you can create a link for a certain client like this: + then in a template you can create a link for a certain client like this:: {% url app_name.client client.id %} diff --git a/django/test/client.py b/django/test/client.py index 682dd01261..95d3b85922 100644 --- a/django/test/client.py +++ b/django/test/client.py @@ -69,6 +69,14 @@ def encode_multipart(boundary, data): '', value.read() ]) + elif hasattr(value, '__iter__'): + for item in value: + lines.extend([ + '--' + boundary, + 'Content-Disposition: form-data; name="%s"' % key, + '', + str(item) + ]) else: lines.extend([ '--' + boundary, diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index 94ab76c483..7b7fa2b0f0 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -92,6 +92,13 @@ class SortedDict(dict): "Returns the value of the item at the given zero-based index." return self[self.keyOrder[index]] + def copy(self): + "Returns a copy of this object." + # This way of initializing the copy means it works for subclasses, too. + obj = self.__class__(self) + obj.keyOrder = self.keyOrder + return obj + class MultiValueDictKeyError(KeyError): pass diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py index e3712175af..a558e3a69f 100644 --- a/django/utils/dateformat.py +++ b/django/utils/dateformat.py @@ -13,6 +13,7 @@ Usage: from django.utils.dates import MONTHS, MONTHS_3, MONTHS_AP, WEEKDAYS from django.utils.tzinfo import LocalTimezone +from django.utils.translation import gettext as _ from calendar import isleap, monthrange import re, time @@ -36,14 +37,14 @@ class TimeFormat(Formatter): def a(self): "'a.m.' or 'p.m.'" if self.data.hour > 11: - return 'p.m.' - return 'a.m.' + return _('p.m.') + return _('a.m.') def A(self): "'AM' or 'PM'" if self.data.hour > 11: - return 'PM' - return 'AM' + return _('PM') + return _('AM') def B(self): "Swatch Internet time" @@ -91,9 +92,9 @@ class TimeFormat(Formatter): Proprietary extension. """ if self.data.minute == 0 and self.data.hour == 0: - return 'midnight' + return _('midnight') if self.data.minute == 0 and self.data.hour == 12: - return 'noon' + return _('noon') return '%s %s' % (self.f(), self.a()) def s(self): diff --git a/django/utils/text.py b/django/utils/text.py index 1c1c456e2d..faf8705fa9 100644 --- a/django/utils/text.py +++ b/django/utils/text.py @@ -17,7 +17,7 @@ def wrap(text, width): pos = len(word) - word.rfind('\n') - 1 for word in it: if "\n" in word: - lines = word.splitlines() + lines = word.split('\n') else: lines = (word,) pos += len(lines[0]) + 1 diff --git a/django/views/i18n.py b/django/views/i18n.py index b5eb32bda3..0a19cfe986 100644 --- a/django/views/i18n.py +++ b/django/views/i18n.py @@ -9,16 +9,16 @@ def set_language(request): """ Redirect to a given url while setting the chosen language in the session or cookie. The url and the language code need to be - specified in the GET paramters. + specified in the GET parameters. """ - lang_code = request.GET['language'] + lang_code = request.GET.get('language', None) next = request.GET.get('next', None) if not next: next = request.META.get('HTTP_REFERER', None) if not next: next = '/' response = http.HttpResponseRedirect(next) - if check_for_language(lang_code): + if lang_code and check_for_language(lang_code): if hasattr(request, 'session'): request.session['django_language'] = lang_code else: diff --git a/docs/add_ons.txt b/docs/add_ons.txt index 1756fe5720..8f47847e3e 100644 --- a/docs/add_ons.txt +++ b/docs/add_ons.txt @@ -1,6 +1,6 @@ -===================== -The "contrib" add-ons -===================== +============================ +The "django.contrib" add-ons +============================ Django aims to follow Python's `"batteries included" philosophy`_. It ships with a variety of extra, optional tools that solve common Web-development @@ -153,12 +153,16 @@ markup A collection of template filters that implement these common markup languages: - * Textile - * Markdown - * ReST (ReStructured Text) + * `Textile`_ + * `Markdown`_ + * `ReST (ReStructured Text)`_ For documentation, read the source code in django/contrib/markup/templatetags/markup.py. +.. _Textile: http://en.wikipedia.org/wiki/Textile_%28markup_language%29 +.. _Markdown: http://en.wikipedia.org/wiki/Markdown +.. _ReST (ReStructured Text): http://en.wikipedia.org/wiki/ReStructuredText + redirects ========= diff --git a/docs/contributing.txt b/docs/contributing.txt index 6b2b64f672..1d2b635b76 100644 --- a/docs/contributing.txt +++ b/docs/contributing.txt @@ -195,7 +195,7 @@ The second part of this workflow involves a set of flags the describe what the ticket has or needs in order to be "ready for checkin": "Has patch" - The means the ticket has an associated patch_. These will be + This means the ticket has an associated patch_. These will be reviewed to see if the patch is "good". "Needs documentation" @@ -212,6 +212,33 @@ ticket has or needs in order to be "ready for checkin": ready for checkin. This could mean the patch no longer applies cleanly, or that the code doesn't live up to our standards. +A ticket can be resolved in a number of ways: + + "fixed" + Used by one of the core developers once a patch has been rolled into + Django and the issue is fixed. + + "invalid" + Used if the ticket is found to be incorrect or a user error. + + "wontfix" + Used when a core developer decides that this request is not + appropriate for consideration in Django. This is usually chosen after + discussion in the ``django-developers`` mailing list, and you should + feel free to join in when it's something you care about. + + "duplicate" + Used when another ticket covers the same issue. By closing duplicate + tickets, we keep all the discussion in one place, which helps everyone. + + "worksforme" + Used when the triage team is unable to replicate the original bug. + +If you believe that the ticket was closed in error -- because you're +still having the issue, or it's popped up somewhere else, or the triagers have +-- made a mistake, please reopen the ticket and tell us why. Please do not +reopen tickets that have been marked as "wontfix" by core developers. + .. _required details: `Reporting bugs`_ .. _good patch: `Patch style`_ .. _patch: `Submitting patches`_ @@ -276,9 +303,11 @@ Please follow these coding standards when writing code for inclusion in Django: def my_view(req, foo): # ... - * Please don't put your name in the code. While we appreciate all - contributions to Django, our policy is not to publish individual - developer names in code -- for instance, at the top of Python modules. + * Please don't put your name in the code you contribute. Our policy is to + keep contributors' names in the ``AUTHORS`` file distributed with Django + -- not scattered throughout the codebase itself. Feel free to include a + change to the ``AUTHORS`` file in your patch if you make more than a + single trivial change. Committing code =============== @@ -498,12 +527,12 @@ sure all other lines are commented:: # http://code.djangoproject.com/svn/django/trunk/ # /path/to/trunk - + # <branch> is a svn checkout of: # http://code.djangoproject.com/svn/django/branches/<branch>/ # #/path/to/<branch> - + # On windows a path may look like this: # C:/path/to/<branch> diff --git a/docs/databases.txt b/docs/databases.txt new file mode 100644 index 0000000000..3545b58d47 --- /dev/null +++ b/docs/databases.txt @@ -0,0 +1,162 @@ +=============================== +Notes about supported databases +=============================== + +Django attempts to support as many features as possible on all database +backends. However, not all database backends are alike, and we've had to make +design decisions on which features to support and which assumptions we can make +safely. + +This file describes some of the features that might be relevant to Django +usage. Of course, it is not intended as a replacement for server-specific +documentation or reference manuals. + +MySQL notes +=========== + +Django expects the database to support transactions, referential integrity, +and Unicode support (UTF-8 encoding). Fortunately, MySQL_ has all these +features as available as far back as 3.23. While it may be possible to use +3.23 or 4.0, you'll probably have less trouble if you use 4.1 or 5.0. + +MySQL 4.1 +--------- + +`MySQL 4.1`_ has greatly improved support for character sets. It is possible to +set different default character sets on the database, table, and column. +Previous versions have only a server-wide character set setting. It's also the +first version where the character set can be changed on the fly. 4.1 also has +support for views, but Django currently doesn't use views. + +MySQL 5.0 +--------- + +`MySQL 5.0`_ adds the ``information_schema`` database, which contains detailed +data on all database schema. Django's ``inspectdb`` feature uses this +``information_schema`` if it's available. 5.0 also has support for stored +procedures, but Django currently doesn't use stored procedures. + +.. _MySQL: http://www.mysql.com/ +.. _MySQL 4.1: http://dev.mysql.com/doc/refman/4.1/en/index.html +.. _MySQL 5.0: http://dev.mysql.com/doc/refman/5.0/en/index.html + +Storage engines +--------------- + +MySQL has several `storage engines`_ (previously called table types). You can +change the default storage engine in the server configuration. + +The default engine is MyISAM_. The main drawback of MyISAM is that it doesn't +currently support transactions or foreign keys. On the plus side, it's +currently the only engine that supports full-text indexing and searching. + +The InnoDB_ engine is fully transactional and supports foreign key references. + +The BDB_ engine, like InnoDB, is also fully transactional and supports foreign +key references. However, its use seems to be deprecated. + +`Other storage engines`_, including SolidDB_ and Falcon_, are on the horizon. +For now, InnoDB is probably your best choice. + +.. _storage engines: http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html +.. _MyISAM: http://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html +.. _BDB: http://dev.mysql.com/doc/refman/5.0/en/bdb-storage-engine.html +.. _InnoDB: http://dev.mysql.com/doc/refman/5.0/en/innodb.html +.. _Other storage engines: http://dev.mysql.com/doc/refman/5.1/en/storage-engines-other.html +.. _SolidDB: http://forge.mysql.com/projects/view.php?id=139 +.. _Falcon: http://dev.mysql.com/doc/falcon/en/index.html + +MySQLdb +------- + +`MySQLdb`_ is the Python interface to MySQL. 1.2.1 is the first version that +has support for MySQL 4.1 and newer. If you are trying to use an older version +of MySQL, then 1.2.0 *might* work for you. + +.. _MySQLdb: http://sourceforge.net/projects/mysql-python + +Creating your database +---------------------- + +You can `create your database`_ using the command-line tools and this SQL:: + + CREATE DATABASE <dbname> CHARACTER SET utf8; + +This ensures all tables and columns will use UTF-8 by default. + +.. _create your database: http://dev.mysql.com/doc/refman/5.0/en/create-database.html + +Connecting to the database +-------------------------- + +Refer to the `settings documentation`_. + +Connection settings are used in this order: + + 1. ``DATABASE_OPTIONS`` + 2. ``DATABASE_NAME``, ``DATABASE_USER``, ``DATABASE_PASSWORD``, ``DATABASE_HOST``, + ``DATABASE_PORT`` + 3. MySQL option files. + +In other words, if you set the name of the database in ``DATABASE_OPTIONS``, +this will take precedence over ``DATABASE_NAME``, which would override +anything in a `MySQL option file`_. + +Here's a sample configuration which uses a MySQL option file:: + + # settings.py + DATABASE_ENGINE = "mysql" + DATABASE_OPTIONS = { + 'read_default_file': '/path/to/my.cnf', + } + + # my.cnf + [client] + database = DATABASE_NAME + user = DATABASE_USER + passwd = DATABASE_PASSWORD + default-character-set = utf8 + +Several other MySQLdb connection options may be useful, such as ``ssl``, +``use_unicode``, ``init_command``, and ``sql_mode``. Consult the +`MySQLdb documentation`_ for more details. + +.. _settings documentation: http://www.djangoproject.com/documentation/settings/#database-engine +.. _MySQL option file: http://dev.mysql.com/doc/refman/5.0/en/option-files.html +.. _MySQLdb documentation: http://mysql-python.sourceforge.net/ + +Creating your tables +-------------------- + +When Django generates the schema, it doesn't specify a storage engine, so +tables will be created with whatever default storage engine your database +server is configured for. The easiest solution is to set your database server's +default storage engine to the desired engine. + +If you're using a hosting service and can't change your server's default +storage engine, you have a couple of options. + + * After the tables are created, execute an ``ALTER TABLE`` statement to + convert a table to a new storage engine (such as InnoDB):: + + ALTER TABLE <tablename> ENGINE=INNODB; + + This can be tedious if you have a lot of tables. + + * Another option is to use the ``init_command`` option for MySQLdb prior to + creating your tables:: + + DATABASE_OPTIONS = { + # ... + "init_command": "SET storage_engine=INNODB", + # ... + } + + This sets the default storage engine upon connecting to the database. + After your tables have been created, you should remove this option. + + * Another method for changing the storage engine is described in + AlterModelOnSyncDB_. + +.. _AlterModelOnSyncDB: http://code.djangoproject.com/wiki/AlterModelOnSyncDB + diff --git a/docs/db-api.txt b/docs/db-api.txt index 20a319740e..64db3def96 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -6,7 +6,7 @@ Once you've created your `data models`_, Django automatically gives you a database-abstraction API that lets you create, retrieve, update and delete objects. This document explains that API. -.. _`data models`: http://www.djangoproject.com/documentation/model_api/ +.. _`data models`: ../model_api/ Throughout this reference, we'll refer to the following models, which comprise a weblog application:: @@ -85,7 +85,7 @@ There's no way to tell what the value of an ID will be before you call unless you explicitly specify ``primary_key=True`` on a field. See the `AutoField documentation`_.) -.. _AutoField documentation: http://www.djangoproject.com/documentation/model_api/#autofield +.. _AutoField documentation: ../model_api/#autofield Explicitly specifying auto-primary-key values ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1801,4 +1801,4 @@ interface to your database. You can access your database via other tools, programming languages or database frameworks; there's nothing Django-specific about your database. -.. _Executing custom SQL: http://www.djangoproject.com/documentation/model_api/#executing-custom-sql +.. _Executing custom SQL: ../model_api/#executing-custom-sql diff --git a/docs/distributions.txt b/docs/distributions.txt index a77d3a1959..63206c535e 100644 --- a/docs/distributions.txt +++ b/docs/distributions.txt @@ -57,7 +57,7 @@ Gentoo ------ A Django build is available for `Gentoo Linux`_, and is based on Django 0.95.1. -The `current Gentoo build`_ can be installed by typing ``emerge Django``. +The `current Gentoo build`_ can be installed by typing ``emerge django``. .. _Gentoo Linux: http://www.gentoo.org/ .. _current Gentoo build: http://packages.gentoo.org/packages/?category=dev-python;name=django diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 371c44e010..ef1d73cdbd 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -216,7 +216,7 @@ installation will be aborted, and any data installed in the call to ``loaddata`` will be removed from the database. The fixtures that are named can include directory components. These -directories will be inluded in the search path. For example:: +directories will be included in the search path. For example:: django-admin.py loaddata foo/bar/mydata.json diff --git a/docs/fastcgi.txt b/docs/fastcgi.txt index 1efeaf09cf..5ecaac8666 100644 --- a/docs/fastcgi.txt +++ b/docs/fastcgi.txt @@ -304,3 +304,14 @@ If you have access to a command shell on a Unix system, you can accomplish this easily by using the ``touch`` command:: touch mysite.fcgi + +Serving admin media files +========================= + +Regardless of the server and configuration you eventually decide to use, you will +also need to give some thought to how to serve the admin media files. The +advice given in the modpython_ documentation is also applicable in the setups +detailed above. + +.. _modpython: ../modpython/#serving-the-admin-files + diff --git a/docs/forms.txt b/docs/forms.txt index 8c40eeb997..f76f6d27ef 100644 --- a/docs/forms.txt +++ b/docs/forms.txt @@ -417,6 +417,27 @@ Here's a simple function that might drive the above form:: form = forms.FormWrapper(manipulator, new_data, errors) return render_to_response('contact_form.html', {'form': form}) +Implementing ``flatten_data`` for custom manipulators +------------------------------------------------------ + +It is possible (although rarely needed) to replace the default automatically +created manipulators on a model with your own custom manipulators. If you do +this and you are intending to use those models in generic views, you should +also define a ``flatten_data`` method in any ``ChangeManipulator`` replacement. +This should act like the default ``flatten_data`` and return a dictionary +mapping field names to their values, like so:: + + def flatten_data(self): + obj = self.original_object + return dict( + from = obj.from, + subject = obj.subject, + ... + ) + +In this way, your new change manipulator will act exactly like the default +version. + ``FileField`` and ``ImageField`` special cases ============================================== diff --git a/docs/i18n.txt b/docs/i18n.txt index d7f5db6861..4a05e53ddf 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -282,6 +282,17 @@ How to create language files Once you've tagged your strings for later translation, you need to write (or obtain) the language translations themselves. Here's how that works. +.. admonition:: Locale restrictions + + Django does not support localizing your application into a locale for + which Django itself has not been translated. In this case, it will ignore + your translation files. If you were to try this and Django supported it, + you would inevitably see a mixture of translated strings (from your + application) and English strings (from Django itself). If you want to + support a locale for your application that is not already part of + Django, you'll need to make at least a minimal translation of the Django + core. + Message files ------------- diff --git a/docs/model-api.txt b/docs/model-api.txt index 1e7f69903d..26686b02fe 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -1216,6 +1216,10 @@ screen via ``<script src="">`` tags. This can be used to tweak a given type of admin page in JavaScript or to provide "quick links" to fill in default values for certain fields. +If you use relative URLs -- URLs that don't start with ``http://`` or ``/`` -- +then the admin site will automatically prefix these links with +``settings.ADMIN_MEDIA_PREFIX``. + ``list_display`` ---------------- diff --git a/docs/release_notes_0.96.txt b/docs/release_notes_0.96.txt new file mode 100644 index 0000000000..37f4034aa5 --- /dev/null +++ b/docs/release_notes_0.96.txt @@ -0,0 +1,264 @@ +================================= +Django version 0.96 release notes +================================= + +Welcome to Django 0.96! + +The primary goal for 0.96 is a cleanup and stabilization of the features +introduced in 0.95. There have been a few small `backwards-incompatible +changes`_ since 0.95, but the upgrade process should be fairly simple +and should not require major changes to existing applications. + +However, we're also releasing 0.96 now because we have a set of +backwards-incompatible changes scheduled for the near future. Once +completed, they will involve some code changes for application +developers, so we recommend that you stick with Django 0.96 until the +next official release; then you'll be able to upgrade in one step +instead of needing to make incremental changes to keep up with the +development version of Django. + +What's new in 0.96? +=================== + +This revision represents over a thousand source commits and over four hundred +bug fixes, so we can't possibly catalog all the changes. Here, we describe the +most notable changes in this release. + +New forms library +----------------- + +``django.newforms`` is Django's new form-handling library. It's a +replacement for ``django.forms``, the old form/manipulator/validation +framework. Both APIs are available in 0.96, but over the next two +releases we plan to switch completely to the new forms system, and +deprecate and remove the old system. + +There are three elements to this transition: + + * We've copied the current ``django.forms`` to + ``django.oldforms``. This allows you to upgrade your code *now* + rather than waiting for the backwards-incompatible change and + rushing to fix your code after the fact. Just change your + import statements like this:: + + from django import forms # 0.95-style + from django import oldforms as forms # 0.96-style + + * The next official release of Django will move the current + ``django.newforms`` to ``django.forms``. This will be a + backwards-incompatible change, and anyone still using the old + version of ``django.forms`` at that time will need to change + their import statements as described above. + + * The next release after that will completely remove + ``django.oldforms``. + +Although the ``newforms`` library will continue to evolve, it's ready for use +for most common cases. We recommend that anyone new to form handling skip the +old forms system and start with the new. + +For more information about ``django.newforms``, read the `newforms +documentation`_. + +.. _newforms documentation: ../newforms/ + +URLconf improvements +-------------------- + +You can now use any callable as the callback in URLconfs (previously, only +strings that referred to callables were allowed). This allows a much more +natural use of URLconfs. For example, this URLconf:: + + from django.conf.urls.defaults import * + + urlpatterns = patterns('', + ('^myview/$', 'mysite.myapp.views.myview') + ) + +can now be rewritten as:: + + from django.conf.urls.defaults import * + from mysite.myapp.views import myview + + urlpatterns = patterns('', + ('^myview/$', myview) + ) + +One useful application of this can be seen when using decorators; this +change allows you to apply decorators to views *in your +URLconf*. Thus, you can make a generic view require login very +easily:: + + from django.conf.urls.defaults import * + from django.contrib.auth.decorators import login_required + from django.views.generic.list_detail import object_list + from mysite.myapp.models import MyModel + + info = { + "queryset" : MyModel.objects.all(), + } + + urlpatterns = patterns('', + ('^myview/$', login_required(object_list), info) + ) + +Note that both syntaxes (strings and callables) are valid, and will continue to +be valid for the foreseeable future. + +The test framework +------------------ + +Django now includes a test framework so you can start transmuting fear into +boredom (with apologies to Kent Beck). You can write tests based on doctest_ +or unittest_ and test your views with a simple test client. + +There is also new support for "fixtures" -- initial data, stored in any of the +supported `serialization formats`_, that will be loaded into your database at the +start of your tests. This makes testing with real data much easier. + +See `the testing documentation`_ for the full details. + +.. _doctest: http://docs.python.org/lib/module-doctest.html +.. _unittest: http://docs.python.org/lib/module-unittest.html +.. _the testing documentation: ../testing/ +.. _serialization formats: ../serialization/ + +Improvements to the admin interface +----------------------------------- + +A small change, but a very nice one: dedicated views for adding and +updating users have been added to the admin interface, so you no +longer need to worry about working with hashed passwords in the admin. + +Backwards-incompatible changes +============================== + +The following changes may require you to update your code when you switch from +0.95 to 0.96: + +`MySQLdb` version requirement +----------------------------- + +Due to a bug in older versions of the `MySQLdb` Python module (which +Django uses to connect to MySQL databases), Django's MySQL backend now +requires version 1.2.1p2 or higher of `MySQLdb`, and will raise +exceptions if you attempt to use an older version. + +If you're currently unable to upgrade your copy of `MySQLdb` to meet +this requirement, a separate, backwards-compatible backend, called +"mysql_old", has been added to Django. To use this backend, change +the ``DATABASE_ENGINE`` setting in your Django settings file from +this:: + + DATABASE_ENGINE = "mysql" + +to this:: + + DATABASE_ENGINE = "mysql_old" + +However, we strongly encourage MySQL users to upgrade to a more recent +version of `MySQLdb` as soon as possible, The "mysql_old" backend is +provided only to ease this transition, and is considered deprecated; +aside from any necessary security fixes, it will not be actively +maintained, and it will be removed in a future release of Django. + +Also, note that some features, like the new ``DATABASE_OPTIONS`` +setting (see the `databases documentation`_ for details), are only +available on the "mysql" backend, and will not be made available for +"mysql_old". + +.. _databases: ../databases/ + +Database constraint names changed +--------------------------------- + +The format of the constraint names Django generates for foreign key +references have changed slightly. These names are generally only used +when it is not possible to put the reference directly on the affected +column, so they is not always visible. + +The effect of this change is that running ``manage.py reset`` and +similar commands against an existing database may generate SQL with +the new form of constraint name, while the database itself contains +constraints named in the old form; this will cause the database server +to raise an error message about modifying non-existent constraints. + +If you need to work around this, there are two methods available: + + 1. Redirect the output of ``manage.py`` to a file, and edit the + generated SQL to use the correct constraint names before + executing it. + + 2. Examine the output of ``manage.py sqlall`` to see the new-style + constraint names, and use that as a guide to rename existing + constraints in your database. + +Names changes in ``manage.py`` +------------------------------ + +A few of the options to ``manage.py`` have changed with the addition of fixture +support: + + * There are new ``dumpdata`` and ``loaddata`` commands which, as + you might expect, will dump and load data to/from the + database. These commands can operate against any of Django's + supported serialization formats. + + * The ``sqlinitialdata`` command has been renamed to ``sqlcustom`` to + emphasize that ``loaddata`` should be used for data (and ``sqlcustom`` for + other custom SQL -- views, stored procedures, etc.). + + * The vestigial ``install`` command has been removed. Use ``syncdb``. + +Backslash escaping changed +-------------------------- + +The Django database API now escapes backslashes given as query parameters. If +you have any database API code that matches backslashes, and it was working before +(despite the lack of escaping), you'll have to change your code to "unescape" the +slashes one level. + +For example, this used to work:: + + # Find text containing a single backslash + MyModel.objects.filter(text__contains='\\\\') + +The above is now incorrect, and should be rewritten as:: + + # Find text containing a single backslash + MyModel.objects.filter(text__contains='\\') + +Removed ENABLE_PSYCO setting +---------------------------- + +The ``ENABLE_PSYCO`` setting no longer exists. If your settings file includes +``ENABLE_PSYCO`` it will have no effect; to use Psyco, we recommend +writing a middleware class to activate it. + +.. _psyco: http://psyco.sourceforge.net/ + +Thanks +====== + +Since 0.95, a number of people have stepped forward and taken a major +new role in Django's development. We'd like to thank these people for +all their hard work: + + * Russell Keith-Magee and Malcolm Tredinnick for their major code + contributions. This release wouldn't have been possible without them. + + * Our new release manager, James Bennett, for his work in getting out + 0.95.1, 0.96, and (hopefully) future release. + + * Our ticket managers Chris Beaven (aka SmileyChris), Simon Greenhill, + Michael Radziej, and Gary Wilson. They agreed to take on the monumental + task of wrangling our tickets into nicely cataloged submission. Figuring + out what to work on is now about a million times easier; thanks again, + guys. + + * Everyone who submitted a bug report, patch or ticket comment. We can't + possibly thank everyone by name -- over 200 developers submitted patches + that went into 0.96 -- but everyone who's contributed to Django is listed + in AUTHORS_. + +.. _AUTHORS: http://code.djangoproject.com/browser/django/trunk/AUTHORS
\ No newline at end of file diff --git a/docs/serialization.txt b/docs/serialization.txt index aee1b9a3bb..48ab46f0f9 100644 --- a/docs/serialization.txt +++ b/docs/serialization.txt @@ -31,7 +31,8 @@ but it'll almost always be a QuerySet). You can also use a serializer object directly:: - xml_serializer = serializers.get_serializer("xml") + XMLSerializer = serializers.get_serializer("xml") + xml_serializer = XMLSerializer() xml_serializer.serialize(queryset) data = xml_serializer.getvalue() diff --git a/docs/settings.txt b/docs/settings.txt index b2ca11240a..6f85e312c0 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -162,10 +162,13 @@ a model object and return its URL. This is a way of overriding ``get_absolute_url()`` methods on a per-installation basis. Example:: ABSOLUTE_URL_OVERRIDES = { - 'blogs.Weblog': lambda o: "/blogs/%s/" % o.slug, - 'news.Story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug), + 'blogs.weblog': lambda o: "/blogs/%s/" % o.slug, + 'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug), } +Note that the model name used in this setting should be all lower-case, regardless +of the case of the actual model class name. + ADMIN_FOR --------- @@ -242,7 +245,8 @@ DATABASE_ENGINE Default: ``''`` (Empty string) Which database backend to use. Either ``'postgresql_psycopg2'``, -``'postgresql'``, ``'mysql'``, ``'sqlite3'`` or ``'ado_mssql'``. +``'postgresql'``, ``'mysql'``, ``'mysql_old'``, ``'sqlite3'`` or +``'ado_mssql'``. DATABASE_HOST ------------- diff --git a/docs/testing.txt b/docs/testing.txt index f7fd402502..a67c907f6b 100644 --- a/docs/testing.txt +++ b/docs/testing.txt @@ -227,6 +227,12 @@ can be invoked on the ``Client`` instance. The key-value pairs in the data dictionary will be encoded as a multipart message and used to create the POST data payload. + To submit multiple values for a given key (for example, to specify + the selections for a multiple selection list), provide the values as a + list or tuple for the required key. For example, a data dictionary of + ``{'choices': ('a','b','d')}`` would submit three selected rows for the + field named ``choices``. + Submitting files is a special case. To POST a file, you need only provide the file field name as a key, and a file handle to the file you wish to upload as a value. The Test Client will populate the two POST fields (i.e., diff --git a/extras/django_bash_completion b/extras/django_bash_completion index bd066ec08f..64d8961ca7 100644 --- a/extras/django_bash_completion +++ b/extras/django_bash_completion @@ -147,7 +147,7 @@ complete -F _django_completion django-admin.py manage.py # Support for multiple interpreters. unset pythons if command -v whereis &>/dev/null; then - python_interpreters=$(whereis -b python | cut -d " " -f 2-) + python_interpreters=$(whereis python | cut -d " " -f 2-) for python in $python_interpreters; do pythons="${pythons} $(basename $python)" done diff --git a/tests/modeltests/fixtures/models.py b/tests/modeltests/fixtures/models.py index d82886a6c4..afef6a7389 100644 --- a/tests/modeltests/fixtures/models.py +++ b/tests/modeltests/fixtures/models.py @@ -67,13 +67,13 @@ __test__ = {'API_TESTS': """ # Try to load fixture 2 using format discovery; this will fail # because there are two fixture2's in the fixtures directory >>> management.load_data(['fixture2'], verbosity=0) # doctest: +ELLIPSIS -Multiple fixtures named 'fixture2' in '.../fixtures'. Aborting. +Multiple fixtures named 'fixture2' in '...fixtures'. Aborting. >>> Article.objects.all() [<Article: Time to reform copyright>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>] # Dump the current contents of the database as a JSON fixture ->>> management.dump_data(['fixtures'], format='json') +>>> print management.dump_data(['fixtures'], format='json') [{"pk": "3", "model": "fixtures.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": "2", "model": "fixtures.article", "fields": {"headline": "Poker has no place on ESPN", "pub_date": "2006-06-16 12:00:00"}}, {"pk": "1", "model": "fixtures.article", "fields": {"headline": "Python program becomes self aware", "pub_date": "2006-06-16 11:00:00"}}] """} diff --git a/tests/modeltests/get_object_or_404/models.py b/tests/modeltests/get_object_or_404/models.py index 79bcc6f52c..0aefd40fdf 100644 --- a/tests/modeltests/get_object_or_404/models.py +++ b/tests/modeltests/get_object_or_404/models.py @@ -44,7 +44,7 @@ __test__ = {'API_TESTS':""" >>> get_object_or_404(Article, title="Foo") Traceback (most recent call last): ... -Http404 +Http404: No Article matches the given query. # Create an Article. >>> article = Article.objects.create(title="Run away!") @@ -63,7 +63,7 @@ Http404 >>> get_object_or_404(a.article_set, title__contains="Camelot") Traceback (most recent call last): ... -Http404 +Http404: No Article matches the given query. # Custom managers can be used too. >>> get_object_or_404(Article.by_a_sir, title="Run away!") @@ -77,7 +77,7 @@ Http404 >>> get_list_or_404(a.article_set, title__icontains='Shrubbery') Traceback (most recent call last): ... -Http404 +Http404: No Article matches the given query. # Custom managers can be used too. >>> get_list_or_404(Article.by_a_sir, title__icontains="Run") diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py index a3a9749162..75f3c49908 100644 --- a/tests/modeltests/test_client/models.py +++ b/tests/modeltests/test_client/models.py @@ -81,7 +81,43 @@ class ClientTest(TestCase): # Check that the response was a 302 (redirect) self.assertEqual(response.status_code, 302) - + + def test_valid_form(self): + "POST valid data to a form" + post_data = { + 'text': 'Hello World', + 'email': 'foo@example.com', + 'value': 37, + 'single': 'b', + 'multi': ('b','c','e') + } + response = self.client.post('/test_client/form_view/', post_data) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.template.name, "Valid POST Template") + + def test_incomplete_data_form(self): + "POST incomplete data to a form" + post_data = { + 'text': 'Hello World', + 'value': 37 + } + response = self.client.post('/test_client/form_view/', post_data) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.template.name, "Invalid POST Template") + + def test_form_error(self): + "POST erroneous data to a form" + post_data = { + 'text': 'Hello World', + 'email': 'not an email address', + 'value': 37, + 'single': 'b', + 'multi': ('b','c','e') + } + response = self.client.post('/test_client/form_view/', post_data) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.template.name, "Invalid POST Template") + def test_unknown_page(self): "GET an invalid URL" response = self.client.get('/test_client/unknown_view/') diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py index 0bef1e9b71..707ecc186d 100644 --- a/tests/modeltests/test_client/urls.py +++ b/tests/modeltests/test_client/urls.py @@ -6,6 +6,7 @@ urlpatterns = patterns('', (r'^post_view/$', views.post_view), (r'^raw_post_view/$', views.raw_post_view), (r'^redirect_view/$', views.redirect_view), + (r'^form_view/$', views.form_view), (r'^login_protected_view/$', views.login_protected_view), (r'^session_view/$', views.session_view), (r'^broken_view/$', views.broken_view) diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py index 653e9a10e9..36ec144cf6 100644 --- a/tests/modeltests/test_client/views.py +++ b/tests/modeltests/test_client/views.py @@ -2,6 +2,8 @@ from xml.dom.minidom import parseString from django.template import Context, Template from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.decorators import login_required +from django.newforms.forms import Form +from django.newforms import fields def get_view(request): "A simple view that expects a GET request, and returns a rendered template" @@ -45,7 +47,39 @@ def raw_post_view(request): def redirect_view(request): "A view that redirects all requests to the GET view" return HttpResponseRedirect('/test_client/get_view/') + +TestChoices = ( + ('a', 'First Choice'), + ('b', 'Second Choice'), + ('c', 'Third Choice'), + ('d', 'Fourth Choice'), + ('e', 'Fifth Choice') +) + +class TestForm(Form): + text = fields.CharField() + email = fields.EmailField() + value = fields.IntegerField() + single = fields.ChoiceField(choices=TestChoices) + multi = fields.MultipleChoiceField(choices=TestChoices) + +def form_view(request): + "A view that tests a simple form" + if request.method == 'POST': + form = TestForm(request.POST) + if form.is_valid(): + t = Template('Valid POST data.', name='Valid POST Template') + c = Context() + else: + t = Template('Invalid POST data. {{ form.errors }}', name='Invalid POST Template') + c = Context({'form': form}) + else: + form = TestForm() + t = Template('Viewing base form. {{ form }}.', name='Form GET Template') + c = Context({'form': form}) + return HttpResponse(t.render(c)) + def login_protected_view(request): "A simple view that is login protected." t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template') diff --git a/tests/regressiontests/datastructures/tests.py b/tests/regressiontests/datastructures/tests.py index 624e7a50bf..e008c255f1 100644 --- a/tests/regressiontests/datastructures/tests.py +++ b/tests/regressiontests/datastructures/tests.py @@ -31,4 +31,35 @@ 'nonexistent' >>> d.setlist('lastname', ['Holovaty', 'Willison']) -"""
\ No newline at end of file +### SortedDict ################################################################# + +>>> d = SortedDict() +>>> d['one'] = 'one' +>>> d['two'] = 'two' +>>> d['three'] = 'three' +>>> d['one'] +'one' +>>> d['two'] +'two' +>>> d['three'] +'three' +>>> d.keys() +['one', 'two', 'three'] +>>> d.values() +['one', 'two', 'three'] +>>> d['one'] = 'not one' +>>> d['one'] +'not one' +>>> d.keys() == d.copy().keys() +True + +### DotExpandedDict ############################################################ + +>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']}) +>>> d['person']['1']['lastname'] +['Willison'] +>>> d['person']['2']['lastname'] +['Holovaty'] +>>> d['person']['2']['firstname'] +['Adrian'] +""" diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py index c850806052..db3f7fab2a 100644 --- a/tests/regressiontests/defaultfilters/tests.py +++ b/tests/regressiontests/defaultfilters/tests.py @@ -133,6 +133,12 @@ u'\xcb' >>> wordwrap('this is a long paragraph of text that really needs to be wrapped I\'m afraid', 14) "this is a long\nparagraph of\ntext that\nreally needs\nto be wrapped\nI'm afraid" +>>> wordwrap('this is a short paragraph of text.\n But this line should be indented',14) +'this is a\nshort\nparagraph of\ntext.\n But this\nline should be\nindented' + +>>> wordwrap('this is a short paragraph of text.\n But this line should be indented',15) +'this is a short\nparagraph of\ntext.\n But this line\nshould be\nindented' + >>> ljust('test', 10) 'test ' diff --git a/tests/regressiontests/many_to_one_regress/models.py b/tests/regressiontests/many_to_one_regress/models.py index 6c067446b1..8ddec98da4 100644 --- a/tests/regressiontests/many_to_one_regress/models.py +++ b/tests/regressiontests/many_to_one_regress/models.py @@ -1,13 +1,34 @@ from django.db import models +# If ticket #1578 ever slips back in, these models will not be able to be +# created (the field names being lower-cased versions of their opposite +# classes is important here). + class First(models.Model): second = models.IntegerField() class Second(models.Model): first = models.ForeignKey(First, related_name = 'the_first') -# If ticket #1578 ever slips back in, these models will not be able to be -# created (the field names being lower-cased versions of their opposite -# classes is important here). +# Protect against repetition of #1839, #2415 and #2536. +class Third(models.Model): + name = models.CharField(maxlength=20) + third = models.ForeignKey('self', null=True, related_name='child_set') + +class Parent(models.Model): + name = models.CharField(maxlength=20) + bestchild = models.ForeignKey('Child', null=True, related_name='favored_by') + +class Child(models.Model): + name = models.CharField(maxlength=20) + parent = models.ForeignKey(Parent) + -__test__ = {'API_TESTS':""} +__test__ = {'API_TESTS':""" +>>> Third.AddManipulator().save(dict(id='3', name='An example', another=None)) +<Third: Third object> +>>> parent = Parent(name = 'fred') +>>> parent.save() +>>> Child.AddManipulator().save(dict(name='bam-bam', parent=parent.id)) +<Child: Child object> +"""} diff --git a/tests/regressiontests/serializers_regress/__init__.py b/tests/regressiontests/serializers_regress/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/regressiontests/serializers_regress/__init__.py diff --git a/tests/regressiontests/serializers_regress/models.py b/tests/regressiontests/serializers_regress/models.py new file mode 100644 index 0000000000..d3415ac1b9 --- /dev/null +++ b/tests/regressiontests/serializers_regress/models.py @@ -0,0 +1,187 @@ +""" +A test spanning all the capabilities of all the serializers. + +This class sets up a model for each model field type +(except for image types, because of the PIL dependency). +""" + +from django.db import models +from django.contrib.contenttypes.models import ContentType + +# The following classes are for testing basic data +# marshalling, including NULL values. + +class BooleanData(models.Model): + data = models.BooleanField(null=True) + +class CharData(models.Model): + data = models.CharField(maxlength=30, null=True) + +class DateData(models.Model): + data = models.DateField(null=True) + +class DateTimeData(models.Model): + data = models.DateTimeField(null=True) + +class EmailData(models.Model): + data = models.EmailField(null=True) + +class FileData(models.Model): + data = models.FileField(null=True, upload_to='/foo/bar') + +class FilePathData(models.Model): + data = models.FilePathField(null=True) + +class FloatData(models.Model): + data = models.FloatField(null=True, decimal_places=3, max_digits=5) + +class IntegerData(models.Model): + data = models.IntegerField(null=True) + +# class ImageData(models.Model): +# data = models.ImageField(null=True) + +class IPAddressData(models.Model): + data = models.IPAddressField(null=True) + +class NullBooleanData(models.Model): + data = models.NullBooleanField(null=True) + +class PhoneData(models.Model): + data = models.PhoneNumberField(null=True) + +class PositiveIntegerData(models.Model): + data = models.PositiveIntegerField(null=True) + +class PositiveSmallIntegerData(models.Model): + data = models.PositiveSmallIntegerField(null=True) + +class SlugData(models.Model): + data = models.SlugField(null=True) + +class SmallData(models.Model): + data = models.SmallIntegerField(null=True) + +class TextData(models.Model): + data = models.TextField(null=True) + +class TimeData(models.Model): + data = models.TimeField(null=True) + +class USStateData(models.Model): + data = models.USStateField(null=True) + +class XMLData(models.Model): + data = models.XMLField(null=True) + +class Tag(models.Model): + """A tag on an item.""" + data = models.SlugField() + content_type = models.ForeignKey(ContentType) + object_id = models.PositiveIntegerField() + + content_object = models.GenericForeignKey() + + class Meta: + ordering = ["data"] + +class GenericData(models.Model): + data = models.CharField(maxlength=30) + + tags = models.GenericRelation(Tag) + +# The following test classes are all for validation +# of related objects; in particular, forward, backward, +# and self references. + +class Anchor(models.Model): + """This is a model that can be used as + something for other models to point at""" + + data = models.CharField(maxlength=30) + +class FKData(models.Model): + data = models.ForeignKey(Anchor, null=True) + +class M2MData(models.Model): + data = models.ManyToManyField(Anchor, null=True) + +class O2OData(models.Model): + data = models.OneToOneField(Anchor, null=True) + +class FKSelfData(models.Model): + data = models.ForeignKey('self', null=True) + +class M2MSelfData(models.Model): + data = models.ManyToManyField('self', null=True, symmetrical=False) + +# The following test classes are for validating the +# deserialization of objects that use a user-defined +# field as the primary key. +# Some of these data types have been commented out +# because they can't be used as a primary key on one +# or all database backends. + +class BooleanPKData(models.Model): + data = models.BooleanField(primary_key=True) + +class CharPKData(models.Model): + data = models.CharField(maxlength=30, primary_key=True) + +# class DatePKData(models.Model): +# data = models.DateField(primary_key=True) + +# class DateTimePKData(models.Model): +# data = models.DateTimeField(primary_key=True) + +class EmailPKData(models.Model): + data = models.EmailField(primary_key=True) + +class FilePKData(models.Model): + data = models.FileField(primary_key=True, upload_to='/foo/bar') + +class FilePathPKData(models.Model): + data = models.FilePathField(primary_key=True) + +class FloatPKData(models.Model): + data = models.FloatField(primary_key=True, decimal_places=3, max_digits=5) + +class IntegerPKData(models.Model): + data = models.IntegerField(primary_key=True) + +# class ImagePKData(models.Model): +# data = models.ImageField(primary_key=True) + +class IPAddressPKData(models.Model): + data = models.IPAddressField(primary_key=True) + +class NullBooleanPKData(models.Model): + data = models.NullBooleanField(primary_key=True) + +class PhonePKData(models.Model): + data = models.PhoneNumberField(primary_key=True) + +class PositiveIntegerPKData(models.Model): + data = models.PositiveIntegerField(primary_key=True) + +class PositiveSmallIntegerPKData(models.Model): + data = models.PositiveSmallIntegerField(primary_key=True) + +class SlugPKData(models.Model): + data = models.SlugField(primary_key=True) + +class SmallPKData(models.Model): + data = models.SmallIntegerField(primary_key=True) + +# class TextPKData(models.Model): +# data = models.TextField(primary_key=True) + +# class TimePKData(models.Model): +# data = models.TimeField(primary_key=True) + +class USStatePKData(models.Model): + data = models.USStateField(primary_key=True) + +# class XMLPKData(models.Model): +# data = models.XMLField(primary_key=True) + diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py new file mode 100644 index 0000000000..97b3fbacbe --- /dev/null +++ b/tests/regressiontests/serializers_regress/tests.py @@ -0,0 +1,263 @@ +""" +A test spanning all the capabilities of all the serializers. + +This class defines sample data and a dynamically generated +test case that is capable of testing the capabilities of +the serializers. This includes all valid data values, plus +forward, backwards and self references. +""" + + +import unittest, datetime + +from django.utils.functional import curry +from django.core import serializers +from django.db import transaction +from django.core import management + +from models import * + +# A set of functions that can be used to recreate +# test data objects of various kinds +def data_create(pk, klass, data): + instance = klass(id=pk) + instance.data = data + instance.save() + return instance + +def generic_create(pk, klass, data): + instance = klass(id=pk) + instance.data = data[0] + instance.save() + for tag in data[1:]: + instance.tags.create(data=tag) + return instance + +def fk_create(pk, klass, data): + instance = klass(id=pk) + setattr(instance, 'data_id', data) + instance.save() + return instance + +def m2m_create(pk, klass, data): + instance = klass(id=pk) + instance.save() + instance.data = data + return instance + +def o2o_create(pk, klass, data): + instance = klass() + instance.data_id = data + instance.save() + return instance + +def pk_create(pk, klass, data): + instance = klass() + instance.data = data + instance.save() + return instance + +# A set of functions that can be used to compare +# test data objects of various kinds +def data_compare(testcase, pk, klass, data): + instance = klass.objects.get(id=pk) + testcase.assertEqual(data, instance.data, + "Objects with PK=%d not equal; expected '%s' (%s), got '%s' (%s)" % (pk,data, type(data), instance.data, type(instance.data))) + +def generic_compare(testcase, pk, klass, data): + instance = klass.objects.get(id=pk) + testcase.assertEqual(data[0], instance.data) + testcase.assertEqual(data[1:], [t.data for t in instance.tags.all()]) + +def fk_compare(testcase, pk, klass, data): + instance = klass.objects.get(id=pk) + testcase.assertEqual(data, instance.data_id) + +def m2m_compare(testcase, pk, klass, data): + instance = klass.objects.get(id=pk) + testcase.assertEqual(data, [obj.id for obj in instance.data.all()]) + +def o2o_compare(testcase, pk, klass, data): + instance = klass.objects.get(data=data) + testcase.assertEqual(data, instance.data_id) + +def pk_compare(testcase, pk, klass, data): + instance = klass.objects.get(data=data) + testcase.assertEqual(data, instance.data) + +# Define some data types. Each data type is +# actually a pair of functions; one to create +# and one to compare objects of that type +data_obj = (data_create, data_compare) +generic_obj = (generic_create, generic_compare) +fk_obj = (fk_create, fk_compare) +m2m_obj = (m2m_create, m2m_compare) +o2o_obj = (o2o_create, o2o_compare) +pk_obj = (pk_create, pk_compare) + +test_data = [ + # Format: (data type, PK value, Model Class, data) + (data_obj, 1, BooleanData, True), + (data_obj, 2, BooleanData, False), + (data_obj, 10, CharData, "Test Char Data"), + (data_obj, 11, CharData, ""), + (data_obj, 12, CharData, "None"), + (data_obj, 13, CharData, "null"), + (data_obj, 14, CharData, "NULL"), + (data_obj, 15, CharData, None), + (data_obj, 20, DateData, datetime.date(2006,6,16)), + (data_obj, 21, DateData, None), + (data_obj, 30, DateTimeData, datetime.datetime(2006,6,16,10,42,37)), + (data_obj, 31, DateTimeData, None), + (data_obj, 40, EmailData, "hovercraft@example.com"), + (data_obj, 41, EmailData, None), + (data_obj, 50, FileData, 'file:///foo/bar/whiz.txt'), + (data_obj, 51, FileData, None), + (data_obj, 60, FilePathData, "/foo/bar/whiz.txt"), + (data_obj, 61, FilePathData, None), + (data_obj, 70, FloatData, 12.345), + (data_obj, 71, FloatData, -12.345), + (data_obj, 72, FloatData, 0.0), + (data_obj, 73, FloatData, None), + (data_obj, 80, IntegerData, 123456789), + (data_obj, 81, IntegerData, -123456789), + (data_obj, 82, IntegerData, 0), + (data_obj, 83, IntegerData, None), + #(XX, ImageData + (data_obj, 90, IPAddressData, "127.0.0.1"), + (data_obj, 91, IPAddressData, None), + (data_obj, 100, NullBooleanData, True), + (data_obj, 101, NullBooleanData, False), + (data_obj, 102, NullBooleanData, None), + (data_obj, 110, PhoneData, "212-634-5789"), + (data_obj, 111, PhoneData, None), + (data_obj, 120, PositiveIntegerData, 123456789), + (data_obj, 121, PositiveIntegerData, None), + (data_obj, 130, PositiveSmallIntegerData, 12), + (data_obj, 131, PositiveSmallIntegerData, None), + (data_obj, 140, SlugData, "this-is-a-slug"), + (data_obj, 141, SlugData, None), + (data_obj, 150, SmallData, 12), + (data_obj, 151, SmallData, -12), + (data_obj, 152, SmallData, 0), + (data_obj, 153, SmallData, None), + (data_obj, 160, TextData, """This is a long piece of text. +It contains line breaks. +Several of them. +The end."""), + (data_obj, 161, TextData, ""), + (data_obj, 162, TextData, None), + (data_obj, 170, TimeData, datetime.time(10,42,37)), + (data_obj, 171, TimeData, None), + (data_obj, 180, USStateData, "MA"), + (data_obj, 181, USStateData, None), + (data_obj, 190, XMLData, "<foo></foo>"), + (data_obj, 191, XMLData, None), + + (generic_obj, 200, GenericData, ['Generic Object 1', 'tag1', 'tag2']), + (generic_obj, 201, GenericData, ['Generic Object 2', 'tag2', 'tag3']), + + (data_obj, 300, Anchor, "Anchor 1"), + (data_obj, 301, Anchor, "Anchor 2"), + + (fk_obj, 400, FKData, 300), # Post reference + (fk_obj, 401, FKData, 500), # Pre reference + (fk_obj, 402, FKData, None), # Empty reference + + (m2m_obj, 410, M2MData, []), # Empty set + (m2m_obj, 411, M2MData, [300,301]), # Post reference + (m2m_obj, 412, M2MData, [500,501]), # Pre reference + (m2m_obj, 413, M2MData, [300,301,500,501]), # Pre and Post reference + + (o2o_obj, None, O2OData, 300), # Post reference + (o2o_obj, None, O2OData, 500), # Pre reference + + (fk_obj, 430, FKSelfData, 431), # Pre reference + (fk_obj, 431, FKSelfData, 430), # Post reference + (fk_obj, 432, FKSelfData, None), # Empty reference + + (m2m_obj, 440, M2MSelfData, []), + (m2m_obj, 441, M2MSelfData, []), + (m2m_obj, 442, M2MSelfData, [440, 441]), + (m2m_obj, 443, M2MSelfData, [445, 446]), + (m2m_obj, 444, M2MSelfData, [440, 441, 445, 446]), + (m2m_obj, 445, M2MSelfData, []), + (m2m_obj, 446, M2MSelfData, []), + + (data_obj, 500, Anchor, "Anchor 3"), + (data_obj, 501, Anchor, "Anchor 4"), + + (pk_obj, 601, BooleanPKData, True), + (pk_obj, 602, BooleanPKData, False), + (pk_obj, 610, CharPKData, "Test Char PKData"), +# (pk_obj, 620, DatePKData, datetime.date(2006,6,16)), +# (pk_obj, 630, DateTimePKData, datetime.datetime(2006,6,16,10,42,37)), + (pk_obj, 640, EmailPKData, "hovercraft@example.com"), + (pk_obj, 650, FilePKData, 'file:///foo/bar/whiz.txt'), + (pk_obj, 660, FilePathPKData, "/foo/bar/whiz.txt"), + (pk_obj, 670, FloatPKData, 12.345), + (pk_obj, 671, FloatPKData, -12.345), + (pk_obj, 672, FloatPKData, 0.0), + (pk_obj, 680, IntegerPKData, 123456789), + (pk_obj, 681, IntegerPKData, -123456789), + (pk_obj, 682, IntegerPKData, 0), +# (XX, ImagePKData + (pk_obj, 690, IPAddressPKData, "127.0.0.1"), + (pk_obj, 700, NullBooleanPKData, True), + (pk_obj, 701, NullBooleanPKData, False), + (pk_obj, 710, PhonePKData, "212-634-5789"), + (pk_obj, 720, PositiveIntegerPKData, 123456789), + (pk_obj, 730, PositiveSmallIntegerPKData, 12), + (pk_obj, 740, SlugPKData, "this-is-a-slug"), + (pk_obj, 750, SmallPKData, 12), + (pk_obj, 751, SmallPKData, -12), + (pk_obj, 752, SmallPKData, 0), +# (pk_obj, 760, TextPKData, """This is a long piece of text. +# It contains line breaks. +# Several of them. +# The end."""), +# (pk_obj, 770, TimePKData, datetime.time(10,42,37)), + (pk_obj, 780, USStatePKData, "MA"), +# (pk_obj, 790, XMLPKData, "<foo></foo>"), +] + +# Dynamically create serializer tests to ensure that all +# registered serializers are automatically tested. +class SerializerTests(unittest.TestCase): + pass + +def serializerTest(format, self): + # Clear the database first + management.flush(verbosity=0, interactive=False) + + # Create all the objects defined in the test data + objects = [] + transaction.enter_transaction_management() + transaction.managed(True) + for (func, pk, klass, datum) in test_data: + objects.append(func[0](pk, klass, datum)) + transaction.commit() + transaction.leave_transaction_management() + + # Add the generic tagged objects to the object list + objects.extend(Tag.objects.all()) + + # Serialize the test database + serialized_data = serializers.serialize(format, objects, indent=2) + + # Flush the database and recreate from the serialized data + management.flush(verbosity=0, interactive=False) + transaction.enter_transaction_management() + transaction.managed(True) + for obj in serializers.deserialize(format, serialized_data): + obj.save() + transaction.commit() + transaction.leave_transaction_management() + + # Assert that the deserialized data is the same + # as the original source + for (func, pk, klass, datum) in test_data: + func[1](self, pk, klass, datum) + +for format in serializers.get_serializer_formats(): + setattr(SerializerTests, 'test_'+format+'_serializer', curry(serializerTest, format)) diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index 0165824951..375fd36196 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -401,6 +401,20 @@ class Templates(unittest.TestCase): 'ifequal-split09': (r"{% ifequal a 'slash\man' %}yes{% else %}no{% endifequal %}", {'a': r"slash\man"}, "yes"), 'ifequal-split10': (r"{% ifequal a 'slash\man' %}yes{% else %}no{% endifequal %}", {'a': r"slashman"}, "no"), + # NUMERIC RESOLUTION + 'ifequal-numeric01': ('{% ifequal x 5 %}yes{% endifequal %}', {'x': '5'}, ''), + 'ifequal-numeric02': ('{% ifequal x 5 %}yes{% endifequal %}', {'x': 5}, 'yes'), + 'ifequal-numeric03': ('{% ifequal x 5.2 %}yes{% endifequal %}', {'x': 5}, ''), + 'ifequal-numeric04': ('{% ifequal x 5.2 %}yes{% endifequal %}', {'x': 5.2}, 'yes'), + 'ifequal-numeric05': ('{% ifequal x 0.2 %}yes{% endifequal %}', {'x': .2}, 'yes'), + 'ifequal-numeric06': ('{% ifequal x .2 %}yes{% endifequal %}', {'x': .2}, 'yes'), + 'ifequal-numeric07': ('{% ifequal x 2. %}yes{% endifequal %}', {'x': 2}, ''), + 'ifequal-numeric08': ('{% ifequal x "5" %}yes{% endifequal %}', {'x': 5}, ''), + 'ifequal-numeric09': ('{% ifequal x "5" %}yes{% endifequal %}', {'x': '5'}, 'yes'), + 'ifequal-numeric10': ('{% ifequal x -5 %}yes{% endifequal %}', {'x': -5}, 'yes'), + 'ifequal-numeric11': ('{% ifequal x -5.2 %}yes{% endifequal %}', {'x': -5.2}, 'yes'), + 'ifequal-numeric12': ('{% ifequal x +5 %}yes{% endifequal %}', {'x': 5}, 'yes'), + ### IFNOTEQUAL TAG ######################################################## 'ifnotequal01': ("{% ifnotequal a b %}yes{% endifnotequal %}", {"a": 1, "b": 2}, "yes"), 'ifnotequal02': ("{% ifnotequal a b %}yes{% endifnotequal %}", {"a": 1, "b": 1}, ""), |
